zoukankan      html  css  js  c++  java
  • 以太坊合约简单部署和使用

    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)

  • 相关阅读:
    每日口语(6.12)
    The usage of thumb
    Chart相关网站
    每日口语(6.14)
    我为世界杯狂
    一个很简单的javascript问题,看你能否答对
    【转】理解伪元素:Before和:After
    JS BOM之location.hash详解
    JS BOM之location对象
    JS BOM之location.hash的用法
  • 原文地址:https://www.cnblogs.com/lxcmyf/p/8489273.html
Copyright © 2011-2022 走看看