智能合约入门(一)发布第一个智能合约

暑期实习是在一家区块链安全公司 Armors,虽然只有四周,但是还是学习了不少相关知识,在这里记录一下。
开发智能合约有多种方法,这里介绍两种,使用geth客户端和truffle+ganache。

使用geth客户端

geth应该是使用的比较早的工具了,可以参考下面的链接进行实践。
主要参考:
1.https://www.cnblogs.com/huyouhengbc/p/5922093.html?utm_source=itdadao&utm_medium=referral
2.https://blog.csdn.net/koastal/article/details/78737543
3.http://remix2.ju3ban.net/
4.https://blog.csdn.net/HiBlock/article/details/80456047

以第一个为主。

注意事项

1.第一步连接

1
geth --testnet --fast --cache=512 console

这个代码可能会在后面第四步attach时出现问题,问题在于geth命令有很多参数,比如ipc等,各种各样的环境需要不同的配置
配置参考链接为第二条
我的配置是这样:
第一步

1
geth --networkid 14 --nodiscover --datadir /home/bao/blockChain/data/00 --rpc --rpcapi net,eth,web3,personal --rpcaddr 127.0.0.1 console

对应的第四步

1
geth attach ipc:/home/bao/blockChain/data/00/geth.ipc

2.Remix进行编译的问题:
Remix国内版网址参考3
Remix国内版使用教程参考4,里面详细讲了怎么获取编译得到的WEB3DEPLOY部分,这就是参考教程里的第七步我们得到的结果

truffle+ganache

1.安装truffle

2.安装ganache

官网国内不可上,可以直接去github上下(其实官网除了windows版也会跳到这),linux可以下载Appimage版本,然后chmod a+x ganache.Appimage,最后./ganache.Appimage就会提醒你是否安装了
https://github.com/trufflesuite/ganache/releases

3.创建truffle项目

3.1 mkdir myproject&& cd myproject
3.2 truffle init 初始化项目
3.3 truffle complie 编译项目
3.4 配置truffle.js,注意端口等要与你的ganache保持一致

1
2
3
4
5
6
7
8
module.exports = {
networks:{
development:{
host:"127.0.0.1",
port: 7545,
network_id: "*"
}
}

3.5 truffle migrate —reset(需要提前打开客户端gannche或者geth)
migrate的意思是迁移,这里可以理解为部署的意思。
3.6 truffle console 进入控制台,然后输入下列语句测试一下效果:

1
2
3
4
//a给b转账1以太币
a = web3.eth.accounts[0]
b = web3.eth.accounts[1]
web3.eth.sendTransaction({from:a,to:b,value:web3.toWei(1,"ether")})

如果没有错误的话,最后ganache里的第一个账户会少1以太币,第二个账户会多1以太币