本文根据汪晓明的视频资料整理,ubuntu16.04测试正确。
1.打开geth控制台
~$ geth --datadir ~/pengfan/eth --dev
在另一个终端输入
~$ geth --dev console 2>>file_to_log_output
2.查看、设置编译器
> eth.getCompilers()
[]
设置solc为编译器
> admin.setSolc("/usr/local/bin/solc")
Error: exit status 1
at web3.js:3119:20
at web3.js:6023:15
at web3.js:4995:36
at <anonymous>:1:1
提示错误,更改路径成“/usr/bin/solc”
~$ whereis solc
solc: /usr/bin/solc /usr/local/bin/solc
> admin.setSolc("/usr/bin/solc")
"solc, the solidity compiler commandline interface\nVersion: 0.4.7+commit.822622cf.Linux.g++\n"
再次查看
>eth.getCompilers()
["Solidity"]
3.编写智能合约
>source="contract test { function multiply(uint a) returns(uint d) { return a * 7; }}"
4.编译智能合约
> contract = eth.compile.solidity(source).test
code——编译后的EVM字节码
info——编译器返回的原数据
abiDefinition——应用程序二进制接口定义
compilerOptions——编译参数
5.准备工作:创建账户并激活
在以太坊上创建智能合约就是使用一个外部账户(EOA)向区块链中发送一个交易。
> personal.newAccount("123456")
"0x733bf98c0e218b430db0fe1d4c9ef04341444a82"
> personal.listAccounts
["0x733bf98c0e218b430db0fe1d4c9ef04341444a82"]
> eth.getBalance(personal.listAccounts[0])
0
> miner.start()
true
> eth.blockNumber
2
> eth.getBalance(personal.listAccounts[0])
15000000000000000000
> address=eth.accounts[0]
"0x733bf98c0e218b430db0fe1d4c9ef04341444a82"
> personal.unlockAccount(address,"123456",10000)
true