- 使用solidity编写智能合约
- 编译智能合约生成ABI和BIN
- 部署智能合约
- 运行智能合约
安装solidity编译器
sudo npm install -g solc
# 使用
solcjs --bin --abi token.sol
给vscode安装solidity开发插件
安装go-ethereum, 将编译生成的build/bin
加入到环境变量PATH
git clone https://github.com/ethereum/go-ethereum
cd go-ethereum
make all
# 使用abigen生成go文件
abigen --abi token.abi --pkg main --type Token --out token.go --bin token.bin
启动geth时,由于智能合约的event需要wsrpc,所以启动参数中需要加入--ws
和--wsport
geth --datadir "./chain" --nodiscover --ipcdisable --port 30301 --ws --wsport 8101 console 2>>eth_output.log
BIN等同lib库,BIN内容会被部署到区块链上,是智能合约的内容
ABI等同lib库的头文件
- itype 方法类型,包括function, constructor, fallback(缺省方法)可以缺省,默认为function
- name 方法名
- inputs 方法参数,它是一个对应数组,数组里的每个对象都是一个参数说明
- name 参数名
- type 参数类型
- outputs 方法返回值,格式和inputs类型,如果没有返回值可以缺省
- constant 布尔值,如果为true指明方法不会修改合约的状态变量
- payable 布尔值,标明方法是否可以接收ether
部署完成后,会生成一个智能合约地址,后续运行或查看时,需要使用到智能合约地址
样例代码参见dapp