部署CITA和区块链浏览器以及智能合约

docker pull cita/cita-run:ubuntu-18.04-20180813
或者直接进入容器里面
docker exec -it 29f /bin/bash
然后查看Solidity 版本
solc --version


下载 CITA 源码
从 Github 仓库下载 CITA 的源代码,然后切换到 CITA 的源代码目录
git clone https://github.com/citahub/cita.git
cd cita
git submodule init
git submodule update
./env.sh
然后新建文件
touch SimpleStorage.sol
内容:
pragma solidity ^0.4.24;

contract SimpleStorage {
uint storedData;
event Init(address, uint);
event Set(address, uint);
event Stored(uint);

constructor() public {
    storedData = 100;
    emit Init(msg.sender, 100);
}

function set(uint x) public {
    emit Stored(x);
    storedData = x;
    emit Set(msg.sender, x);
}

function get() public constant returns (uint) {
    return storedData;
}

}
然后
获得合约的相关信息
使用 solc 命令得到一些部署和调用需要的信息:

字节码

部署合约需要字节码信息。

$ solc SimpleStorage.sol --bin
输出:

======= SimpleStorage.sol:SimpleStorage =======
Binary:
608060405234801561001057600080fd5b5060df8061001f6000396000f3006080604052600436106049576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360fe47b114604e5780636d4ce63c146078575b600080fd5b348015605957600080fd5b5060766004803603810190808035906020019092919050505060a0565b005b348015608357600080fd5b50608a60aa565b6040518082815260200191505060405180910390f35b8060008190555050565b600080549050905600a165627a7a723058205aed214856a5c433292a354261c9eb88eed1396c83dabbe105bde142e49838ac0029
函数签名

调用合约需要函数签名信息。

$ solc SimpleStorage.sol --hashes
输出:

======= SimpleStorage.sol:SimpleStorage =======
Function signatures:
6d4ce63c: get()
60fe47b1: set(uint256)
合约
由测试用户进行操作:

$ cita-cli rpc sendRawTransaction
–code 0x608060405234801561001057600080fd5b5060df8061001f6000396000f3006080604052600436106049576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360fe47b114604e5780636d4ce63c146078575b600080fd5b348015605957600080fd5b5060766004803603810190808035906020019092919050505060a0565b005b348015608357600080fd5b50608a60aa565b6040518082815260200191505060405180910390f35b8060008190555050565b600080549050905600a165627a7a723058205aed214856a5c433292a354261c9eb88eed1396c83dabbe105bde142e49838ac0029
–private-key 0x3ef2627393529fed043c7dbfd9358a4ae47a88a59949b07e7631722fd6959002
–url http://127.0.0.1:1337
输出:

{
“id”: 3,
“jsonrpc”: “2.0”,
“result”: {
“hash”: “0x8bca970a8836f291ca86d33beccb147c3d7b04b361589d41bd928db683d731aa”,
“status”: “OK”
}
}
获取 receipt 信息:

$ cita-cli rpc getTransactionReceipt
–hash 0x8bca970a8836f291ca86d33beccb147c3d7b04b361589d41bd928db683d731aa
–url http://127.0.0.1:1337
输出:

{
“id”: 1,
“jsonrpc”: “2.0”,
“result”: {
“blockHash”: “0x8cf225903eb7c49b0494f991941dcb4d401b2c51c321defa931914fb8f0aa87b”,
“blockNumber”: “0xf2”,
“contractAddress”: “0x5839153e0efe76efe0c974b728c4f49ca7ed75cc”,
“cumulativeQuotaUsed”: “0xaef9”,
“errorMessage”: null,
“quotaUsed”: “0xaef9”,
“logs”: [
],
“logsBloom”: “0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”,
“root”: null,
“transactionHash”: “0x8bca970a8836f291ca86d33beccb147c3d7b04b361589d41bd928db683d731aa”,
“transactionIndex”: “0x0”
}
}
得到合约地址为 0x5839153e0efe76efe0c974b728c4f49ca7ed75cc

猜你喜欢

转载自blog.csdn.net/weixin_43285931/article/details/108621122
今日推荐