添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
开心的刺猬  ·  Android ...·  4 天前    · 
月球上的镜子  ·  State ...·  4 天前    · 
闷骚的山羊  ·  path - How to fix ...·  1 年前    · 
小眼睛的电梯  ·  FragmentPagerAdapter(a ...·  1 年前    · 
备案 控制台
学习
实践
活动
专区
工具
TVP
写文章
专栏首页 oracle3技术大杂烩 2018-06-25 solidity版本导致的错误
3 0

海报分享

2018-06-25 solidity版本导致的错误

问题:

今天调试一个以太坊的合约:

pragma solidity ^0.4.18;

contract MyToken {

address creator;

uint256 public balanceOf = 0;

// Initializes contract with initial supply tokens to the creator of the

//contract

constructor () public {

// Give the creator all initial tokens

creator = msg.sender;

}

// Send coins

function transfer(address _to) public payable {

require(msg.sender == creator);

// Check if the sender has enough

require(balanceOf >= msg.value);

// Subtract from the sender

balanceOf -= msg.value;

// Add the same to the recipient

_to.transfer(msg.value);

}

// fallback function

function pay() public payable {

balanceOf += msg.value;

}

}

解决过程

在http://remix.ethereum.org上是正确的,但是在https://ethfiddle.com/出现两个错误,一个是

:10:16: ParserError: Expected identifier, got 'LParen'

constructor () public {

我在constructor函数前面增加function ,看起来解决了

调用transfer,又出现一个调用错误,

VM Exception while processing transaction: invalid opcode

后来各种百度,google发现问题是编译器版本的问题,因此在https://ethfiddle.com/里面选择版本0.4.24,问题全部解决,并且不需要在constructor函数前面增加function

truffle的问题

后来使用truffle的时候,truffle compile也出现上面两个错误,检查版本信息:

truffle version

Truffle v4.1.0 (core: 4.1.0)

Solidity v0.4.19 (solc-js)

原来也是Solidity版本问题,卸载truffle重新安装

sudo npm uninstall -g truffle

sudo npm install -g truffle

这次查看版本

truffle version

Truffle v4.1.12 (core: 4.1.12)

Solidity v0.4.24 (solc-js)

重新truffle compile就没有问题了

其他

虽然我们可以安装指定版本的truffle,但是考虑到新版本功能更多,也就算了

npm install -g truffle@X

For example, to get solc 0.4.11 support, install truffle 3.2.2 or above.

npm install -g truffle@3.2.2

or

npm update -g truffle@3.2.2

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客: https://www.jianshu.com/u/e52d1bdb76a6 复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。