下午的时候,研究了下智能合约的编程语言solidity,打算自己动手实践下。
我按照教程上的例子,自己也依葫芦画瓢写了个demo,类似如下,
这个例子是个很简单的智能合约,包括两个功能,
1、初始化;
2、转账;
原先教程里的例子是用的require,类似如下,
require(balanceOf[msg.sender] >= _value);
但我在编译的时候,一直提示这样的写法有问题。我仔细检查了下,编译器的版本跟教程是一致的,应该没问题呀。
为了能通过编译,我修改了这个require写法,改成最土的办法,如下,
if(balanceOf[msg.sender] < _value) { throw; }
然后编译就通过了。
开始部署,成功。
第一次初始化值,我设定为10000,如下,
提示成功,查询下,结果也是10000,如下图,
说明第一个功能是对的,接下来测试下第二个功能,
开始转账,如下图,
给另外一个账户转账了99
查询下结果,
发现转账人的金额没有变,还是原先10000
查看下接收人账户,发现金额是0
这是怎么回事呢?
更换了更新(0.5.1)的版本,代码稍作了下调整,见如下,
代码
发现问题依旧没有解决。
代码我反复看了几遍,应该没有问题。
编译器版本应该也没问题,那个只是语法检测而已。
那到底是怎么回事呢?哪位有研究过,请给些提示,提前先谢谢了!