区块链

0x02 智能合约开发之调试

2018-03-21  本文已影响20人  金牛茶馆

一、调试模式

目前browser-solidity有两种常用的调试方式,一个是采用本地虚拟机调试模式,一个是连接到本地的私有链进行调试。

1.本地虚拟机调试模式

本地虚拟机调试,就是不连接任何一个节点,在内存虚拟出一个以太坊节点进行调试,优点是速度快,配置简单,缺点是因为只是虚拟调试,可能最后放到真正的区块链节点上运行智能合约会和预想的结果不同。

2.连接到本地私有链调试

连接到本地私有链调试,就是通过RPC接口,连接本地的以太坊节点,实际部署并调试智能合约,缺点是速度较慢,配置复杂,优点是能够真实运行智能合约,最大程度的防止出错,关于私有链的配置,请参考我原先发表的文章《区块链开发(一)搭建基于以太坊的私有链环境》。

二、调试手段

1. 变量查看

2. 日志查看

3 使用remix的Debug功能

主要关心当前的调试步进,还有当前的变量值。

三、完整实例代码

pragma solidity ^0.4.14;

contract testFundContract {
    address owner;
    address public withDrawAddress = 0x0;

    event TransferWithDraw(uint balance);

    function testFundContract() {
        owner = msg.sender;
    }

    function withDrawAddress(address a) {
        require(msg.sender == owner);
        withDrawAddress = a;

    }

    function addFund() payable returns (uint) {
        return this.balance;
    }

    function withDraw() {
        require(this.balance > 0);

        if (0x0  == withDrawAddress ){
            revert();
        }

        uint withDraw = this.balance;
        withDrawAddress.transfer(withDraw);
        TransferWithDraw(withDraw);

    }

}

四、其他常见智能合约资源

下面一些例子网站去参考一些成熟的代码,方便快速迭代学习,常见的例子网站如下:

开发框架常用的有3个:

以太坊目前很流行的开发框架Truffle的说明书,这个框架比较流行。(主要推荐)

这个开发框架是在gitter chart上看到的,感觉用的人不多,先观察

这个开发框架是以太坊官方推荐的,写进了以太坊的官方wiki,值得学习,当然,以太坊官方经常转换方向,以后换别的也没准

上一篇下一篇

猜你喜欢

热点阅读