Mist
按照 ethereum.org 上的代幣教程,收到錯誤消息“合約地址上沒有部署數據”
我只是複製本教程中找到的完整代幣程式碼,以使用霧在測試網上部署合約,但我收到錯誤消息“合約地址上沒有部署數據”。然後,該合約在我的錢包中顯示為一筆交易,但並未列在合約下。我正在使用盡可能高的費用,並將我自己的錢包地址作為中央鑄幣機地址輸入參數。這是有效的嗎?這個論點似乎只在該行中使用
if(centralMinter != 0) 所有者 = msg.sender;
這對我來說似乎相當多餘,因此無論與錯誤消息相關的任何解釋都值得讚賞!
這不是你的錯,
MyAdvancedToken
契約是錯的。當您擴展另一個合約並且該合約的建構子需要參數時,您必須在創建階段傳遞這些參數。MyAdvancedToken
繼承token
但它不會將參數傳遞給其父級,因此它不能按預期工作。我修復了這個例子,我已經向官方頁面發送了一個拉取請求。同時,您可以按照這些說明自行修復。在
token
合約內部,從建構子中刪除第一行:balanceOf[msg.sender] = initialSupply; // Give the creator all initial tokens
在
MyAdvancedToken
合約內部,替換錯誤的建構子:/* Initializes contract with initial supply tokens to the creator of the contract */ function MyAdvancedToken( uint256 initialSupply, string tokenName, uint8 decimalUnits, string tokenSymbol, address centralMinter ) { if(centralMinter != 0 ) owner = msg.sender; // Sets the minter balanceOf[msg.sender] = initialSupply; // Give the creator all initial tokens name = tokenName; // Set the name for display purposes symbol = tokenSymbol; // Set the symbol for display purposes decimals = decimalUnits; // Amount of decimals for display purposes totalSupply = initialSupply; }
有了這個:
/* Initializes contract with initial supply tokens to the creator of the contract */ function MyAdvancedToken( uint256 initialSupply, string tokenName, uint8 decimalUnits, string tokenSymbol, address centralMinter ) token (initialSupply, tokenName, decimalUnits, tokenSymbol) { if(centralMinter != 0 ) owner = centralMinter; // Sets the owner as specified (or msg.sender if centralMinter is not specified) balanceOf[owner] = initialSupply; // Give the owner all initial tokens }