Grundlegender Crowdsale-Vertrag

Ich lerne, Smart Contracts mit Solidity zu entwickeln. Derzeit arbeite und teste ich die Funktion zum Verfolgen eines Crowdsale-Vertrags.

https://github.com/OpenZeppelin/openzeppelin-solidity/blob/v1.8.0/contracts/crowdsale/Crowdsale.sol

Dieser Vertragskonstruktor hat drei verschiedene Werte.

  1. Rate
  2. Wallet-Adresse
  3. Token-Adresse

Ich bin verwirrt über die erste, die "Rate" ist. Welchen Wert muss ich hier übergeben?

Zum Beispiel möchte ich 1 Token zum Preis von 1 Ether verkaufen, was soll ich dann hier weitergeben?

Antworten (3)

Wie Sie die Funktion sehen können

function _getTokenAmount(uint256 _weiAmount) internal view returns (uint256) {
    return _weiAmount.mul(rate);
  }

Es besagt, dass für 1 Wei die Anzahl der Token 1*Rate beträgt .

Zum Beispiel möchte ich 1 Token zum Preis von 1 Ether verkaufen, was soll ich dann hier weitergeben?

Dies hängt von der Anzahl der Dezimalstellen in Ihrem Toke-Vertrag ab. Zum Beispiel, wenn Sie 18 Dezimalstellen haben, dann

Token = wei * Rate

1 Token = 1 ether * rate

10 ^18 token = 10 ^18 wei * rate

=> rate = 1
Ich habe den Crowdsale-Vertrag mit meinem festen Versorgungstoken bereitgestellt, aber es gibt eine Ausnahme.
mein festes Angebot hat 18 Dezimalstellen
Ausnahme ist, dass der Konstruktor zahlbar sein sollte, wenn Sie den Wert senden
Sie müssen jede Funktion, die Ether akzeptiert, zahlbar machen
Sie können in meinem Crowdsale-Vertrag sehen, dass es einen Funktionsnamen buyTokens() gibt, der zahlbar ist.
Ich stelle auch fest, dass es funktioniert, wenn ich den Funktionsaufruf von transfer () aus dem Crowdsale-Vertrag kommentiert habe. Ich denke, es gibt zu diesem Zeitpunkt ein Problem beim Senden des Tokens an den Begünstigten.

http://eth-converter.com/

Wei zu Äther

Wei sind die 18 Ziffern, die in einen Äther gehen

Die Rate wird in der Crowdsale-Dokumentation von OpenZeppelin Contracts erläutert: https://docs.openzeppelin.com/contracts/2.x/crowdsales#crowdsale-rate

Sie können im Community-Forum auch Fragen zur Verwendung von OpenZeppelin Contracts stellen

Offenlegung: Ich bin der Community Manager bei OpenZeppelin