创建和编译智能合约

创建和编译智能合约

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

apt-get install solc

创建和编译智能合约_第1张图片
查看solc是否安装成功:

solc --help

创建和编译智能合约_第2张图片
查看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

创建和编译智能合约_第3张图片
再用solc获得合约的JSON ABI,其中规定了合约的接口,包括可调用的合约方法、变量、事件等:

solc --abi helloword.sol

在这里插入图片描述
回到Geth的JavaScript环境命令行界面,用变量记录上述两个值,要在code前加0x前缀
创建和编译智能合约_第4张图片
创建和编译智能合约_第5张图片

可以通过

txpool.status

查看是否未确认的交易
在这里插入图片描述
接下来解锁自己的账户,用于方便部署合约
我在此解锁我区块链中的第一个账户

personal.unlockAccount("0xb0eda7494d2515d907368d3515c9559a1d91cc09")

在这里插入图片描述
用上述定义的abi变量生成合约信息

myHelloWorld=eth.contract(abi)

创建和编译智能合约_第6张图片
注入code信息,激活合约

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

创建和编译智能合约_第7张图片
通过txpool来查看未确认的交易
在这里插入图片描述
接下来只要等待出块就能成为正常运行的合约了,等挖矿完成就okk了
至于想查看输出结果需要使用一些IDE来查看、或者我的一篇博客以太坊浏览器来查看
参考链接:http://www.ethdocs.org/en/latest/ethereum-clients/go-ethereum/index.html
https://github.com/ethereum/go-ethereum/wiki/Private-network
https://theethereum.wiki/w/index.php/ERC20_Token_Standard

你可能感兴趣的:(区块链)