Ich versuche, den RefundVault.sol- Vertrag von Open Zeppelin für die Implementierung einer weichen Obergrenze zu verstehen, die Anleger zurückerstatten würde, wenn die Obergrenze nicht erreicht wird. Ich habe Mühe, mich damit auseinanderzusetzen, insbesondere wie das Enum für State funktioniert und wie der Crowdsale mit dem Vertrag interagieren kann, um die Zuordnung für die Einzahlung zu bewirken.
Ich dachte, dass es helfen würde, ein funktionierendes Beispiel für diese Implementierung zu sehen, aber ich kann keine finden. Hat jemand Links zu Code, der entweder diese oder eine andere Methode für eine Soft-Cap-Rückerstattungsfunktion verwendet?
Danke für jede Hilfe.
Wenn Sie beispielsweise einen neuen RefundVault innerhalb des Crowdsale erstellen, übergeben Sie eine Adresse im Konstruktor. Welche Adresse soll das sein?
Das ist die Crowdsale- wallet
Adresse.
Der Crowdsale
Vertrag hat eine wallet
Zustandsvariable, die die Adresse speichert, an die die gesammelten Gelder gesendet werden. Der RefundVault
Vertrag, der von den RefundableCrowdsale
Werken als Tresor für die Aufbewahrung der Gelder bis zum Ende des Crowdsales verwendet wird, entscheidet, ob die Gelder an die wallet
Adresse des Crowdsales gesendet oder den Käufern zurückerstattet werden, je nachdem, ob das Ziel erreicht wurde oder nicht.
Soll ich eine Ethereum-Wallet-Adresse erstellen, die als Wallet für RefundVault dient?
Sie müssen eine Ethereum-Adresse unter Ihrer Kontrolle generieren (d. h. Sie müssen den zugehörigen privaten Schlüssel besitzen) und diese beim Aufbau an den Crowdsale weitergeben.
Wie hält dies dann die Gelder gesperrt, wenn ich die Brieftasche erstellt habe?
Denn der RefundableCrowdsale
schickt das Geld nicht an die Wallet, sondern an die RefundVault
. Nach dem Crowdsale wird das Geld nur bei Erfolg RefundVault
an die Wallet gesendet, die Sie besitzen. Es ist ein absichtlicher Umweg, um Käufer im Falle eines erfolglosen Crowdsales zu schützen.
Auch die Funktion close() hat die Zeile: wallet.transfer(this.balance); Woher und wohin wird das übertragen?
Die transfer
Methode des address
Typs nimmt einen uint256
Parameter und sendet diese Menge an Wei vom Aufrufer an die Adresse, an der die Methode aufgerufen wird. In diesem Fall RefundVault
sendet der Anrufer ( ) alle Wei im Vertrag ( this.balance
) an die wallet
Adresse.
martriay
John Murphy
John Murphy
wallet.transfer(this.balance);
Wohin und von wo wird übertragen? Nochmals vielen Dank, die Konzepte in diesem Vertrag sind neu für mich.