以太坊合約簡單部署和使用


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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM