区块链研究(三)搭建基于以太坊私有链的简单智能合约

1.账户钱包互转

打开Ethereum-Wallet.exe 


点击ACCOUNT 1


点击Copy address


提示你在测试网络,不要转入真正的以太币到这个账号

点击COPY ANYWAY 复制地址:0x102f3f760a9f34B0b6c917EE20F8Bc155e39e8D3

点击SEND,将复制来的地址填入TO输入框


在AMOUNT中输入要转账的金额,比如2018


点击SHOW MORE OPTIONS 可以添加与事务一起发送的额外数据。如果你不知道这是什么,那就不要碰它,否则坏事就会发生。


左右滑动SELECT FEE 这是用于处理此事务的最多金额。您的交易将在30秒之内被开采。手续费越高,速度越快,但只适用于公有链


点击最下方蓝色SEND发送,输入密码后等待矿工确认,确认完毕账户就会收到2018个以太币。




钱包最下方可以看到最近的交易,点击后还可以看到一些具体的交易信息


最下方的Send data只有当你在send时填入的SHOW MORE OPTIONS里的data框之后才会出现,但似乎只能输入十六进制的数


2.部署智能合约

点击主页面的CONTRACTS 进入智能合约管理页面


点击DEPLOY NEW CONTRACT 开始部署只能合约


FROM选择部署智能合约的账户,在SOLIDITY CONTRACT SOURCE CODE输入智能合约代码,在SELECT FEE选择手续费,由此可知部署合约是要钱的...


由于编写智能合约只能用Solidity语言,这里附上Solidity的官方中文文档

地址:http://wiki.jikexueyuan.com/project/solidity-zh/

输入合约,并在右边选择你建立的合约后,你可以填入一些参数


代码如下:

pragma solidity ^0.4.18;

contract MyTokenTest1 {
    
    /* This creates a map with all balances */
    mapping(address => uint256) balanceOf;
    /* This have some basic information about the contract */
    string public name;  //
    string public symbol;
    uint8 public decimals;
    /* This keep track of activities happening int the contract */
    event Transfer1(address indexed _from, address indexed _to, uint256 _value);
    
    /* Constructor 
    function MyTokenTest1() public {
        balanceOf[msg.sender] = 19940326;
    }*/
    
    /* supply it as a parameter for the function 
    function MyTokenTest1(uint256 initialSupply) public {
        balanceOf[msg.sender] = initialSupply;
    }*/
    
    /* Initializes contract with initial supply tokens to the creator of the contract */
    function MyTokenTest1(uint256 initialSupply, string tokenName, string tokenSymbol, uint8 decimalUnits) public{
        balanceOf[msg.sender] = initialSupply;
        name = tokenName;
        symbol = tokenSymbol;
        decimals = decimalUnits;
    }
    
    /* This transfer balance with in two account*/
    function transfer1(address _to, uint256 _value) public{
        /*to check for overflows and to avoid the acount becomes zero*/
        require(balanceOf[msg.sender] >= _value && balanceOf[_to] + _value >= balanceOf[_to]);
        
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;
        
        /* Notify anyone listening that this transfer took place */
        Transfer1(msg.sender, _to, _value);
    }

}

输入完成后点击最下面的蓝色DEPLOY按钮


输入密码,SEND TRANSACTION,这就部署成功了。

3.运行智能合约

点击CONTRACTS ,在CUSTOM CONTRACTS点击选择你刚刚建立的合同


在右边的WRITE TO CONTRACT 中select function为你刚刚建立的函数,并填入地址和值


点击EXECUTE执行,输入密码后SEND TRANSACTION


勾选下方LATEST EVENTS中的Watch contract events可以看到刚刚跟踪到的事件


花几分钟确认后,可以看到已经发送成功



阅读更多

更多精彩内容