创建和编译智能合约
参考博客:https://stackoverflow.com/questions/tagged/solidity 以Solidity编写的智能合约为例,为了将合约代码编译为EVM二进制,需要安装Solidity的编译器solc:
apt-get install solc
查看solc是否安装成功:
solc --help
查看solc的版本:
solc --version
新建一个智能合约:
vim helloword.sol
代码内容如下:
pragma solidity ^0.5.0是solc的版本, 编写一个简单的智能合约,返回helloworld。
pragma solidity ^0.5.0;
contract helloWorld {
function renderHelloWorld () public returns (string memory) {
return 'helloWorld';
}
}
之前借鉴了很多博客,但他们都是Solidity0.4的版本,导致一个简单的helloworld的智能合约都会报错
合约内容如下
pragma solidity ^0.5.0;
contract helloWorld {
function renderHelloWorld () returns (string) {
return 'helloWorld';
}
}
报错信息如下:
Solidity0.4版本和0.5版本差别有点大啊,然后借鉴了接下来的这篇博客才好了
https://stackoverflow.com/questions/tagged/solidity 用solc获得合约编译后的EVM编码:
语句如下
solc --bin helloword.sol
再用solc获得合约的JSON ABI,其中规定了合约的接口,包括可调用的合约方法、变量、事件等:
solc --abi helloword.sol
回到Geth的JavaScript环境命令行界面,用变量记录上述两个值,要在code前加0x前缀
可以通过
txpool.status
查看是否未确认的交易
接下来解锁自己的账户,用于方便部署合约
我在此解锁我区块链中的第一个账户
personal.unlockAccount("0xb0eda7494d2515d907368d3515c9559a1d91cc09")
用上述定义的abi变量生成合约信息
myHelloWorld=eth.contract(abi)
注入code信息,激活合约
contract=myHelloWorld.new({from:"0xb0eda7494d2515d907368d3515c9559a1d91cc09",data:code,gas:1000000})
通过txpool来查看未确认的交易
接下来只要等待出块就能成为正常运行的合约了,等挖矿完成就okk了