Was ist ein Beispiel für ein ICO oder Crowdsale, das den Open Zeppelin RefundVault-Vertrag verwendet hat?

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.

Hallo John, könnten Sie näher darauf eingehen, welcher Teil von RefundVault Sie verwirrt?
Wenn Sie beispielsweise einen neuen RefundVault innerhalb des Crowdsale erstellen, übergeben Sie eine Adresse im Konstruktor. Welche Adresse soll das sein? Soll ich eine Ethereum-Wallet-Adresse erstellen, die als Wallet für RefundVault dient? Wie hält dies dann die Gelder gesperrt, wenn ich die Brieftasche erstellt habe? Vielen Dank für Ihre Hilfe.
Auch die Funktion close() hat die Zeile: wallet.transfer(this.balance);Wohin und von wo wird übertragen? Nochmals vielen Dank, die Konzepte in diesem Vertrag sind neu für mich.

Antworten (1)

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- walletAdresse.

Der CrowdsaleVertrag hat eine walletZustandsvariable, die die Adresse speichert, an die die gesammelten Gelder gesendet werden. Der RefundVaultVertrag, der von den RefundableCrowdsaleWerken als Tresor für die Aufbewahrung der Gelder bis zum Ende des Crowdsales verwendet wird, entscheidet, ob die Gelder an die walletAdresse 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 RefundableCrowdsaleschickt das Geld nicht an die Wallet, sondern an die RefundVault. Nach dem Crowdsale wird das Geld nur bei Erfolg RefundVaultan 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 transferMethode des addressTyps nimmt einen uint256Parameter und sendet diese Menge an Wei vom Aufrufer an die Adresse, an der die Methode aufgerufen wird. In diesem Fall RefundVaultsendet der Anrufer ( ) alle Wei im Vertrag ( this.balance) an die walletAdresse.