首先搭建开发环境
下载geth并安装,这里使用的是安装版的
windows安装geth说明:https://github.com/ethereum/go-ethereum/wiki/Installation-instructions-for-Windows
启动环境,geth是一个以太坊的客户端
go版本
安装nodejs https://nodejs.org/en/download/
使用最高权限运行
npm install -g truffle
npm install -g solc
npm install -g --production windows-build-tools 这个可能安装时间非常长
npm install -g ethereumjs-tx
npm install -g web3 //这个可以安装 也可以不安装
或者安装
npm install -g truffle
npm install -g ethereumjs-testrpc
应该也可以使用
运行testrpc这个命令是给你创建10个钱包和钱包密码
创建一个私链 参考地址:https://github.com/ethereum/go-ethereum/wiki/Private-network
首先,创建一个名字为genesis.json的文件,放在一个自定义个路径下
使用命令 geth --datadir D:/vs_Code genesis.json 表示创建创世块
// D:/vs_Code表示自定义的路径,贴过来路径的话记得修改这个斜线
上图就是genesis.json里面的内容,这个是拷过来的
使用 geth --datadir D:/vs_Code --networkid 15 来启动,(后面加上console表示启动后) 初始化只需要做一次就好,以后的话就是用这个命令来运行
可以参考这个资料 https://github.com/ethereum/go-ethereum/wiki
私链就创建好了
使用软件VS code 免费版的 / 使用Solidity / 使用Atom
利用geth创建一个以太坊(开发者)网络节点(这是测试的)
geth --datadir testNet --dev console 2>> test.log
运行了这个命令后会出现这样的一个效果
命令参数说明:
--dev 启用开发者网络(模式),开发者网络会使用POA共识,默认预分配一个开发者账户并且会自动开启挖矿。
--datadir 后面的参数是区块数据及秘钥存放目录。
第一次输入命令后,它会放在当前目录下新建一个testNet目录来存放数据。
console 进入控制台
2>> test.log 表示把控制台日志输出到test.log文件
为了能更好的理解这个,我们再开一个命令行终端,实时的显示日志
tail -f test.log
接下来准备一个账户(开发者账户)
在刚刚运行的geth --datadir testNet --dev console 2>> test.log这个命令的提示框里面进行操作
> eth.accounts
由于我之前已经创建过两个账户了,所以这里会显示2个账户
//注:我们每个电脑只能拥有一个具有大量gas的账户,但是可以拥有多个带有密码的账户
也可以使用personal.listAccounts查看账户
我们看一下账户里面的余额
使用命令 > eth.getBalance(eth.accounts[0])
由于我有两个账户,我觉得这个中括号里面的就是账户的下标,所以我试了一下,可以看到显示为0,那我们再来试试eth.getBalance(eth.accounts[3])
我们每个电脑只能创建一个有免费gas的账户
创建账户
由于这个账户给的gas太多,我们在执行我们代码的时候很难看到这个gas的改变,所以我们要自己创建一个账户
使用命令 > personal.newAccount("RenBowen") //下标为1
personal.newAccount("RenBowen123") //下标为2
//这里我使用的是我自己的名字作为密码,系统默认给你账号
我们可以使用刚刚那个eth.getBalance(eth.accounts[下标从0开始]
有了账户以后呢 ,我们从那个测试账户上转一些以太币给我们创建的用户(没有gas就无法部署我们的合约,就比如不给你工资你会干活吗?)
使用eth.sendTransaction({from: '0xd9d1d93b326539d4b86cc90b10b75a195b845cda', to: '0x5b7776f0f0c9a0441af16798e8db00c964a5fbb0', value: web3.toWei(1, "ether")})
使用 eth.getBalance(eth.accounts[1]) 查看我们当前用户的余额
使用tail -f test.log可以查看我们的挖矿记录
解锁账户
在部署合约前我们首先需要解锁我们的账户(就像银行转账需要输入密码一样)
使用命令: personal.unlockAccount(eth.accounts[1],"RenBowen");
执行完后会返回一个true
miner.start() 开始挖矿
miner.stop() 停止挖矿
这样我们就成功解锁了我们的账户,接下来进行编码
创建项目 VS code
新建一个文件夹,然后确保自己安装了那个node 以及 npm的那几个
在刚刚创建的文件夹里打开命令窗口, 使用truffle init初始化项目
这样就创建成功了,然后用VS code 打开就行了
如果需要创建基于web项目的智能合约 使用truffle init webpack
编译项目 : truffle compile
truffle默认只会编译最后一次编译成功之后被修改过的合约文件, 这是为了减少比必要的编译.设置"--all"选项,可以强制编译所有文件
部署/迁移 : truffle migrate
这条命令将会执行在项目migrations目录中的所有"migrations".最简单的情况是所有的"migrations"只是一个被管理的部署脚本集合.如果执行过"migrations", "truffle migrate"只会启动那些在先前没有执行过的,新创建的"migrations".加入没有新的"migrations"存在,"truffle migrate"不会执行任何任务.可以使用"--reset"选项强制所有"migrations"重新执行.当用于本地测试时,请确保TestRPC已经安装并在执行"migrate"之前运行起来.
编码我们使用VS code这个编码器
编码学习地址 :
http://wiki.jikexueyuan.com/project/solidity-zh/introduction-smart-contracts.html solidity中文网址
http://truffleframework.com/docs/getting_started/installation truffle官方网址
资料:
centos参照 https://www.cnblogs.com/liujitao79/p/8431639.html
Atom创建项目
首先桌面上创建一个文件夹 (装一波,我也使用黑窗口)
cd Desktop 到桌面
mkdir ContractDemo 创建文件夹
cd ContractDemo 进入这个文件夹
还是执行truffle init 这个命令
atom ./ 将刚才创建的项目用atom打开
操作效果图不能上传,第一篇博客,见谅。。