Solidity

使用 Open Zeppelin RefundVault 合約的 ICO 或 Crowdsale 範例是什麼?

  • February 22, 2018

我正在嘗試了解 Open Zeppelin 的RefundVault.sol契約,以實施軟上限,如果未達到上限,將退還投資者。我正在努力解決它,特別是 State 的列舉如何工作以及眾籌如何與合約互動以影響存款映射。

我認為看到這個實現的工作範例會有所幫助,但我找不到任何東西。有沒有人有任何連結到使用這個或其他方法來實現軟上限退款功能的程式碼?

謝謝你的幫助。

例如,當您在眾籌中創建一個新的 RefundVault 時,您會在建構子中傳遞一個地址。這應該是什麼地址?

那是眾籌的wallet地址。

Crowdsale合約有一個狀態變數,wallet用於儲存募集資金將發送到的地址。RefundVault作品用作儲存資金的RefundableCrowdsale保險庫,直到眾籌結束,並根據是否達到目標決定是否將資金發送到眾籌wallet地址或退還買家。

我應該創建一個乙太坊錢包地址作為 RefundVault 的錢包嗎?

您需要在您的控制下生成一個乙太坊地址(也就是說,您必須擁有相關的私鑰)並將其傳遞給建構時的眾籌。

如果我創建了錢包,這如何保持資金鎖定?

因為RefundableCrowdsale不會將資金發送到錢包,而是發送到錢包RefundVault。眾籌後,只有成功,RefundVault才會將資金發送到您擁有的錢包。在眾籌不成功的情況下,這是一種有意的間接保護買家。

close() 函式也有一行:wallet.transfer(this.balance); 這是轉移到哪裡,從哪裡轉移?

該類型的transfer方法address接受一個uint256參數,並將該數量的 wei 從呼叫者發送到呼叫該方法的地址。在這種情況下,呼叫者 ( RefundVault) 將合約 ( ) 中的所有 wei 發送this.balance到該wallet地址。

引用自:https://ethereum.stackexchange.com/questions/40568