以太坊合约简单部署和使用

1.准备一个已编写的合约:

 

——该合约是用solidity语言编写

 

pragma solidity ^0.4.0;

contract test {

    function multiply(uint a) returns(uint d) { 

        return a * 7;

    }

}    

 

  1. 编译合约

 

想要部署合约需要得到合约代码的ABIEVM code

 

一个编译合约的在线编译网站:

http://chriseth.github.io/browser-solidity/#version=soljson-latest.js

 

图中Bytecodeinterface就是我们需要的结果。

 

  1. 部署合约

 

在部署合约前,我们要明确需要以下几项条件:

一个有的账户;

该账户已解锁;

编译合约得到的abi(interface)code(bytecode)

 

//定义abi

>abi=[{constant:false,inputs:[{name:'a',type:'uint256'}],name:'multiply',outputs:[{name:'d',type:'uint256'}],type:'function'}]

 

//创建合约 

>multiplyContract = web3.eth.contract(abi)

 

//解锁账户

>personal.unlockAccount(eth.coinbase, '123', 10000)

 

第一个参数是账户地址.

        第二个参数:账户密码.

        第三个参数:账户解锁持续的时间, 以毫秒为单位

 

//部署合约。data为上述编译得到的Bytecode

>multiply=multiplyContract.new({from:eth.coinbase,data:"0x60606040523415600b57fe5b5b60788061001a6000396000f300606060405263ffffffff60e060020a600035041663c6888fa181146020575bfe5b3415602757fe5b60306004356042565b60408051918252519081900360200190f35b600781025b9190505600a165627a7a7230582007a6259ba3d57941abda2e261e9a67958a3eda78b779d9dd8d42518791fddd590029"})

 

//我们知道部署合约的过程实际也是由创建合约的账户发送的一笔交易(即eth.coinbase账户)。需要挖矿进行确认。

>miner.start(4);admin.sleepBlocks(2);miner.stop();

 

  1. 与合约交互

 

//获取合约对象

>MyContract = eth.contract(abi)

 

//实例化合约

>myContract = MyContract.at(multiply.address)

 

//调用合约

>myContract.multiply.call(5)

 

posted @ 2018-03-01 16:51  如果屈原会编程  阅读(2653)  评论(1编辑  收藏  举报