【区块链2.0实战学习笔记】————15、链上部署智能合约

版权声明:严禁将博客中涉及到的技术用于恶意破坏,如果造成法律责任,博主概不负责! https://blog.csdn.net/Fly_hps/article/details/90045992

1、编写智能合约

pragma solidity ^0.4.4;
 
contract test { 
 
    function multiply(uint a) returns(uint d){
 
        return a * 7;
    }
 
}

2、获取智能合约字节码和abi

将上面的合约代码拷贝到https://remix.ethereum.org,编译,然后拷贝字节码

Bytecode:

{
    "object": "606060405260788060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa1146039576035565b6002565b34600257605160048080359060200190919050506067565b6040518082815260200191505060405180910390f35b60006007820290506073565b91905056",
    "opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE PUSH1 0x78 DUP1 PUSH1 0x10 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN PUSH1 0x60 PUSH1 0x40 MSTORE PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0xC6888FA1 EQ PUSH1 0x39 JUMPI PUSH1 0x35 JUMP JUMPDEST PUSH1 0x2 JUMP JUMPDEST CALLVALUE PUSH1 0x2 JUMPI PUSH1 0x51 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH1 0x67 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP3 MUL SWAP1 POP PUSH1 0x73 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP ",
    "sourceMap": "28:106:0:-;;;;;;;;;",
    "linkReferences": {}
}

ABI:

[
    {
        "constant": false,
        "inputs": [
            {
                "name": "a",
                "type": "uint256"
            }
        ],
        "name": "multiply",
        "outputs": [
            {
                "name": "d",
                "type": "uint256"
            }
        ],
        "payable": false,
        "type": "function",
        "stateMutability": "nonpayable"
    }
]

3、在bejson中转义成字符串

http://www.bejson.com/jsonviewernew/

[{\"constant\":false,\"inputs\":[{\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"multiply\",\"outputs\":[{\"name\":\"d\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\",\"stateMutability\":\"nonpayable\"}]

4、通过abi创建合约对象

5、检查coinbase账户余额

注:如果这里的余额大于0,则继续,否则,开始挖矿,等你觉得差不多的时候再停止就OK1

6、解锁coinbase账户,并使用coinbase账户来部署合约

7、预估手续费

注:字节码前面需要添加0x。手续费大概为84251gas

8、部署合约(这里增加一个回调函数为了看效果)

9、现在开始挖矿

从上面的截图中可以看到矿工成功挖到矿,而我们的合约也已经部署了,现在我们停止挖矿,之后查看合约是否真的部署成功!

9、验证合约部署成功与否

10、调用合约方法

既然我们通过上面的方法成功部署了合约,那么下面我们看看合约是否可以被成功的调用与执行:

至此,实验效果完成!

写作不易,请作者喝杯奶茶吧!

猜你喜欢

转载自blog.csdn.net/Fly_hps/article/details/90045992