Go-Ethereum
我在 truffle 遷移過程中遇到了這個錯誤。: ParserError: 預期的 ‘(’ 但得到了標識符
這是我的智能合約程式碼
pragma solidity ^0.5.0; contract DappToken{ uint256 public totalSupply; constructor DappToken() public{ totalSupply = 10000; } }
這是松露遷移的程式碼。
const Dapptoken = artifacts.require("DappToken.sol"); module.exports = function(deployer) { deployer.deploy(Dapptoken);
塊引用
};
在 Solidity v0.4.21 之前:
contract ContractName { function ContractName(...) public { ... } ... }
Solidity v0.4.21 以後:
contract ContractName { constructor(...) public { ... } ... }
原因:
在舊版本中,如果您重命名了合約但忘記重命名建構子,後者將變成任何人都可以隨意執行的公共函式。隨後,契約的狀態(資金和變數)可能會發生可怕的事情。順便說一句,這是基於一個真實的故事。
建構子不應有名稱。只是這將作為一個建構子做得很好:
constructor() public { totalSupply = 10000; }