合约入门
本文作为基础,供读者初步理解智能合约的编写、部署和调用。若需要开发应用,请使用高级的智能合约开发框架web3sdk。
准备
查看需要部署智能合约的链,对应的节点RPC端口
- cd /mydata/FISCO-BCOS/tools/scripts/
- #sh node_info.sh -d 要查看信息的节点目录
- sh node_info.sh -d /mydata/node0/
得到端口
- RPC address: 127.0.0.1:8545
设置需要操作的链的RPC端口,输入y回车确认。
- cd /mydata/FISCO-BCOS/tools/script/
- #sh set_proxy_address.sh -o 节点的RPC address
- sh set_proxy_address.sh -o 127.0.0.1:8545
此后,所有的操作都会发送到127.0.0.1:8545
端口上,即node0上。
编写合约
- cd /mydata/FISCO-BCOS/tools/contract/
- vim HelloWorld.sol
HelloWorld.sol的实现如下
- pragma solidity ^0.4.2;
- contract HelloWorld{
- string name;
- function HelloWorld(){
- name="Hi,Welcome!";
- }
- function get()constant returns(string){
- return name;
- }
- function set(string n){
- name=n;
- }
- }
编译、部署合约
直接使用deploy.js,自动编译和部署合约。
- # 进入合约所在目录
- cd /mydata/FISCO-BCOS/tools/contract
- babel-node deploy.js HelloWorld #注意后面HelloWorld后面没有".sol"
输出,可看到合约地址,部署成功。
- deploy.js ........................Start........................
- Soc File :HelloWorld
- HelloWorldcomplie success!
- send transaction success: 0xa8c1aeed8e85cc0308341081925d3dab80da394f6b22c76dc0e855c8735da481
- HelloWorldcontract address 0xa807685dd3cf6374ee56963d3d95065f6f056372
- HelloWorld deploy success!
调用合约
编写合约调用程序
用nodejs实现,具体实现方法请直接看demoHelloWorld.js源码。
- # 进入合约所在目录
- cd /mydata/FISCO-BCOS/FISCO-BCOS/tools/contract
- vim demoHelloWorld.js
调用合约
执行合约调用程序
- # 进入合约所在目录
- cd /mydata/FISCO-BCOS/FISCO-BCOS/tools/contract
- babel-node demoHelloWorld.js
可看到合约调用成功
- { HttpProvider: 'http://127.0.0.1:8545',
- Ouputpath: './output/',
- privKey: 'bcec428d5205abe0f0cc8a734083908d9eb8563e31f943d760786edf42ad67dd',
- account: '0x64fa644d2a694681bd6addd6c5e36cccd8dcdde3' }
- HelloWorldcontract address:0xa807685dd3cf6374ee56963d3d95065f6f056372
- HelloWorld contract get function call first :Hi,Welcome!
- send transaction success: 0x6463e0ea9db6c4aff1e3fc14d9bdb86b29306def73e6d951913a522347526435
- HelloWorld contract set function call , (transaction hash :0x6463e0ea9db6c4aff1e3fc14d9bdb86b29306def73e6d951913a522347526435)
- HelloWorld contract get function call again :HelloWorld!
当前内容版权归 FISCO BCOS 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 FISCO BCOS .