使用 Open Zeppelin RefundVault 合約的 ICO 或 Crowdsale 範例是什麼?
我正在嘗試了解 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
地址。