Token kann nicht mit Openzeppelin-Nachlieferung zurückgezogen werden

Ich setze entweder Token und Crowdsale ohne Probleme ein, der Crowdsale-Vertrag basiert auf dem openzeppelin PostDeliveryCrowdsale.

Crowdsale:

contract PorrolhoTokenCrowdsale is PostDeliveryCrowdsale {

    constructor(uint256 _openingTime, uint256 _closingTime, uint256 _rate, address _wallet, uint256 _goal, ERC20 _token) public
    Crowdsale(_rate, _wallet, _token)
    TimedCrowdsale(_openingTime, _closingTime)
    {

    }

}

NachlieferungCrowdsale:

contract PostDeliveryCrowdsale is TimedCrowdsale {
  using SafeMath for uint256;

  mapping(address => uint256) public balances;

  /**
   * @dev Withdraw tokens only after crowdsale ends.
   */
  function withdrawTokens() public {
    require(hasClosed());
    uint256 amount = balances[msg.sender];
    require(amount > 0);
    balances[msg.sender] = 0;
    _deliverTokens(msg.sender, amount);
  }

  /**
   * @dev Overrides parent by storing balances instead of issuing tokens right away.
   * @param _beneficiary Token purchaser
   * @param _tokenAmount Amount of tokens purchased
   */
  function _processPurchase(
    address _beneficiary,
    uint256 _tokenAmount
  )
    internal
  {
    balances[_beneficiary] = balances[_beneficiary].add(_tokenAmount);
  }

}

Ich kann Token kaufen, aber wenn ich die FunktiondrawTokens() aufrufe , wird ein Fehler ausgegeben. Die Saldenzuordnung des Crowdsale-Vertrags gibt den Token-Betrag zurück, den ich bereits gekauft habe.

Jede Idee wird geschätzt!

Nur eine Vermutung, aber was hasClosed()tut es, und ist es möglich, dass es zurückkehrt false?
leider nein, crowdsale.hasClosed.call() = true
Okay, der nächste Kandidat ist require(amount > 0). Vielleicht amount == 0. Wenn das nicht der Fall ist, _deliverTokens(msg.sender, amount)schlägt es vermutlich fehl, aber ich sehe den Code für diese Funktion nicht, also wissen nur Sie, wie das fehlschlagen könnte.

Antworten (1)

Ich habe das Problem gefunden! Ich musste das Guthaben (Token) des Token-Vertrags auf den Crowdsale-Vertrag übertragen. Okay, ich erkenne einen Noob-Fehler.