0
点赞
收藏
分享

微信扫一扫

创建和编译智能合约


创建和编译智能合约

参考博客:​​https://stackoverflow.com/questions/tagged/solidity​​ 以Solidity编写的智能合约为例,为了将合约代码编译为EVM二进制,需要安装Solidity的编译器solc:

apt-get install solc

创建和编译智能合约_智能合约


查看solc是否安装成功:

solc --help

创建和编译智能合约_d3_02


查看solc的版本:

solc --version

创建和编译智能合约_d3_03


新建一个智能合约:

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';
}
}

报错信息如下:

创建和编译智能合约_d3_04


Solidity0.4版本和0.5版本差别有点大啊,然后借鉴了接下来的这篇博客才好了

​​https://stackoverflow.com/questions/tagged/solidity​​ 用solc获得合约编译后的EVM编码:

语句如下

solc --bin helloword.sol

创建和编译智能合约_d3_05


再用solc获得合约的JSON ABI,其中规定了合约的接口,包括可调用的合约方法、变量、事件等:

solc --abi helloword.sol

创建和编译智能合约_智能合约_06


回到Geth的JavaScript环境命令行界面,用变量记录上述两个值,要在code前加0x前缀

创建和编译智能合约_javascript_07


创建和编译智能合约_javascript_08

可以通过

txpool.status

查看是否未确认的交易

创建和编译智能合约_javascript_09


接下来解锁自己的账户,用于方便部署合约

我在此解锁我区块链中的第一个账户

personal.unlockAccount("0xb0eda7494d2515d907368d3515c9559a1d91cc09")

创建和编译智能合约_d3_10


用上述定义的abi变量生成合约信息

myHelloWorld=eth.contract(abi)

创建和编译智能合约_智能合约_11


注入code信息,激活合约

contract=myHelloWorld.new({from:"0xb0eda7494d2515d907368d3515c9559a1d91cc09",data:code,gas:1000000})

创建和编译智能合约_d3_12


通过txpool来查看未确认的交易

创建和编译智能合约_智能合约_13


接下来只要等待出块就能成为正常运行的合约了,等挖矿完成就okk了

举报

相关推荐

0 条评论