Contract-Development
合約不會使用 truffle 編譯,事件前麵包含“emit”關鍵字
我注意到solidity 已經發生了變化,
emit
現在這個詞將用於事件觸發器的前面(以區別於被呼叫的函式)。但是,當我使用 truffle 框架將這些包含在契約中進行編譯時,出現錯誤
PS D:\Programming\Solidity\ICO REDO> truffle compile Error parsing D:\Programming\Solidity\ICO REDO\contracts\Token.sol: ParsedContract.sol:75:22: ParserError: Expected token Semicolon got 'LParen' emit Transfer(msg.sender, _to, _value);
有誰知道這是為什麼,或者我如何讓這些契約與正在使用的發出字一起編譯,或者我應該忽略它並繼續前進(現在這是不好的做法嗎?)?
程式碼是:
function Token() public { Ownable(msg.sender); balances[msg.sender] = TOTALSUPPLY; emit Transfer(address(0), msg.sender, TOTALSUPPLY); }
恐怕松露仍在使用舊的 solc 編譯器,這就是您收到該錯誤的原因。確實
$松露版 Truffle v4.1.3 (core: 4.1.3) //這是最後一個松露版本 Solidity v0.4.19 (solc-js)
您可以嘗試手動更新 solc,問題將得到解決。
$ cd /usr/local/lib/node_modules/truffle $ npm install solc@0.4.21
這將更新您的 solc 版本,最終您能夠正確編譯您的程式碼。
**注意:**這適用於 Mac,在 Windows 中,您可能需要更新另一個文件夾中的編譯器 **注意 2:**如果您使用的是較舊的松露版本,我建議更新它