最近开始研究区块链,因为种种原因,最终选择在win10下去安装基于golang的以太坊客户端Geth。并且搭建了一条属于自己的私有链,在私有链的环境下实现转账交易。
一、安装Geth
先保证自己配置了golang的语言环境,然后下载geth,进入官网https://geth.ethereum.org/downloads/,选择windows版本。但是有些地方因为网络vpn的问题,无法通过官网下载可以去https://ethfans.org/wikis/Ethereum-Geth-Mirror下载,这是国内网站但是相对于官网geth版本更新较慢,如果使用Google Chrome下载的可能会提示文件危险,不用理会,选择保留即可。从官网进直接选择windows版本的geth下载如下图: 下载完成之后,双击下载软件,首先选择 I agree,然后next,安装路径选择按照默认路径安装即可,点击install(所有信息都会放置在这个路径下,若C盘空间过小,建议更改路径到其他空间较大的磁盘) 等待安装完成,然后点击close,进入安装目录,发现两个文件: 安装完成后在命令提示符输入geth version 查看是否安装成功和查看配置信息 可以看到geth的版本。
二、搭建私有链
1.创建genesis.json
在geth的安装目录下创建genesis.json文件
这时候你们应该只有genesis.json 、 geth.exe 和uninstall.exe三个文件,在gennesis.json里面输入下面代码
{
"config": {
"chainId": 123,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0
},
"alloc": {
"0xCdbf93cd8D70D02eeB3BDB5049ce424b9AB8c25B": { "balance": "300000" },
},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x2000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
2.初始化创世块
在geth的安装目录下启动cmd,然后输入
geth --datadir . init genesis.json
显示Successful wrote genesis state就是成功了!!
3.启动控制台
输入下面命令
geth --datadir . --networkid 123 console --nodiscover 2>output.log
–networkid 123 就是在genesis.json文件中配置的chainId –nodiscover是让控制台启动以后不去同步节点(不加的话界面会显得比较繁琐复杂,一直在Looking for peers) 2>output.log就是将日志信息输出到当前目录下的output.log的文件里
当界面显示Welcome to the geth JavaScript console!是就是成功进入了!
三、交易操作
1.创建账户
输入下面命令先在客户端创建一个以太坊的账户
personal.newAccount()
输入两次密码就创建成功了,这里目前只需要记住你的密码即可!
2.开始挖矿
在geth的控制台输入下面命令
miner.start()
然后就可以在日志中去查看挖矿日志信息了!查看一下 发现不停的在挖矿… 在geth的控制台输入下面命令停止挖矿
miner.stop()
停掉以后发现output.log就不会有输入了
3.查看挖到的区块和奖励
输入下面命令
eth.blockNumber
eth.getBalance(eth.accounts[0])
可以看到已经挖出了269个区块和获取了538000000000000000wei的以太 (wei是单位)
4.实现转账交易
现在的账户已经挖矿获得了很多的以太,现在可以开始进行转账了,在转账之前可定要再去获取一个账户,那获取账户的方式上面已经讲过了。 那下面正式开始转账操作,先解锁转出账户,输入下面的命令
eth.sendTransaction({from: eth.accounts[0],to:"0xCdbf93cd8D70D02eeB3BDB5049ce424b9AB8c25B",value:web3.toWei(10,'ether')})
返回一个交易的哈希值。这个操作相当于转了10个以太 上面我的收入地址是我另外一个账户,你们在创建账户时也会有这样一串公钥,保存好就可以用。 现在去查询收款账户,查询结果会是没有变化,要先启动挖矿打包同步一下数据以后才能有eth.getBalance()去查看!!!!
总结
本人觉得对以太坊学习刚开始的就是需要去真正理解很多的概念,并且去搜集额解决各种小问题的,这样一个搭建私有链的过程也是我解决掉了很多问题才成功搭建出来的!!希望对大家有用。谢谢!!!!
|