动手做第一个智能合约

Words
189
Reading
1 min
Listen
Play
5y

下午的时候,研究了下智能合约的编程语言solidity,打算自己动手实践下。
我按照教程上的例子,自己也依葫芦画瓢写了个demo,类似如下,

image.png

这个例子是个很简单的智能合约,包括两个功能,
1、初始化;
2、转账;

原先教程里的例子是用的require,类似如下,

require(balanceOf[msg.sender] >= _value);
但我在编译的时候,一直提示这样的写法有问题。我仔细检查了下,编译器的版本跟教程是一致的,应该没问题呀。

为了能通过编译,我修改了这个require写法,改成最土的办法,如下,

if(balanceOf[msg.sender] < _value) { throw; }

然后编译就通过了。

开始部署,成功。

image.png

第一次初始化值,我设定为10000,如下,

image.png

提示成功,查询下,结果也是10000,如下图,

image.png

说明第一个功能是对的,接下来测试下第二个功能,
开始转账,如下图,

image.png
给另外一个账户转账了99

查询下结果,

image.png
发现转账人的金额没有变,还是原先10000

查看下接收人账户,发现金额是0

image.png

这是怎么回事呢?

更换了更新(0.5.1)的版本,代码稍作了下调整,见如下,

image.png

image.png
代码

发现问题依旧没有解决。

代码我反复看了几遍,应该没有问题。

编译器版本应该也没问题,那个只是语法检测而已。

那到底是怎么回事呢?哪位有研究过,请给些提示,提前先谢谢了!