Go-Ethereum

我在 truffle 遷移過程中遇到了這個錯誤。: ParserError: 預期的 ‘(’ 但得到了標識符

  • December 16, 2019

這是我的智能合約程式碼

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;    

}

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