Testnets

交易錯誤。合約程式碼中拋出異常。將 ETH 發送到眾籌時還原操作碼

  • March 4, 2018

我想按照教程 - https://blog.zeppelin.solutions/how-to-create-token-and-initial-coin-offering-contracts-using-truffle-openzeppelin-1b7a5dae99b6 - 但有一個新版本 - https://github.com/OpenZeppelin/zeppelin-solidity/releases/tag/v1.7.0 - 所以我試圖弄清楚……

實際程式碼在 Etherscan 上進行驗證。

眾籌: https ://ropsten.etherscan.io/address/0x018ea8f3fef7bd14c7bff98e898842925f05e6ea#code

硬幣:https ://ropsten.etherscan.io/address/0x37ca578d3d847d27741b2ffc033419a7d11b7bef#code

我的賬戶發送 ETH 到眾籌:https ://ropsten.etherscan.io/address/0x85a363699c6864248a6ffca66e4a1a5ccf9f5567

交易雜湊:https ://ropsten.etherscan.io/tx/0x7f99bca20b767073eb48ed2e6d01186c55bcc97ee8316523977e15c4286f6c5a

在此處輸入圖像描述

這是我解釋我在做什麼的簡短影片:https ://youtu.be/oKP9ea5PNho


查看程式碼:https ://github.com/OpenZeppelin/zeppelin-solidity/blob/3c489127306d09dc08c6a22263134fb5413d2f80/contracts/crowdsale/Crowdsale.sol#L48

function Crowdsale(uint256 _rate, address _wallet, ERC20 _token) public

我通過以下方式實例化代幣和眾籌:

contract MailHustleCrowdsale is Crowdsale {

 uint256 _rate = 1000; 
 address _wallet = 0x315f80c7caacbe7fb1c14e65a634db89a33a9637;
 ERC20 _token = new MailHustleCoin();

 function MailHustleCrowdsale() Crowdsale(_rate, _wallet, _token) {          
 }
}

我的猜測是錯誤在這裡的某個地方,但無法弄清楚工作語法……


替代方法:

如何引用已經在鏈上的硬幣合約?

如果包含原始原始碼不切實際,一個簡單的解決方法是在您自己的合約之上創建一個存根合約,其中包含您要呼叫的函式的函式簽名。

為簡單起見,我決定將所有內容都包含在一個文件中。

歸功於 Vidor:

也許您可以贏得一些 Stack Overflow 聲譽並將這些指針放入原始問題中?

太麻煩太少樂趣

我明白了,我會這樣做的

我意識到我知道的太少了,我不應該接觸程式碼。


function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool)

只有所有者才能鑄幣。硬幣創造應該在眾籌合約中。

function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal { require(MintableToken(token).mint(_beneficiary, _tokenAmount)); }

代替

function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal { token.transfer(_beneficiary, _tokenAmount); }

目前,您正在從具有 0 的發件人地址轉移代幣。您想採用更好的鑄幣策略

這是有效的 TX:https ://ropsten.etherscan.io/tx/0x1b4c11eee16e06bc53a273a9a805ea11def461c9f81847edb2d8f95daa273ae5

(您可以導航到契約以查看工作源)


這是一個更好的例子:https ://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/examples/SampleCrowdsale.sol

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