区块链中以太坊的初步研究
imToken 是一款全球领先的区块链数字资产管理工具[ZB],帮助你安全管理BTC, ETH, ATOM, EOS, TRX, CKB, BCH, LTC, DOT, KSM, FIL, XTZ 资产,同时支持去中心化币币兑换功能 ...
这几年区块链技术非常火爆,我也看过一些资料,但大多都是理论知识,到最后还是一头雾水以太坊和比特币区块链钱包,区块链技术到底是什么,能干什么?只知道它的代表项目是比特币,但它的运行原理到底是什么?带着这些疑惑,我对区块链中的以太坊项目有了初步的了解。
以太坊
看完这些理论知识,你可能还是会感到很困惑,但首先我们要明确的是,不管是比特币还是以太坊等区块链项目,中心思想都是去中心化的。
点对点模型:
传统集中式模型:
接下来我们来搭建一条以太坊私链,并进一步了解它的工作原理。
进入go--1.8.11目录,执行make命令开始编译。
注意:版本必须和以太坊原代码版本对应,不然会提示编译版本过低
目前网上很多例子都是用go--1.4.12的,但如果使用高版本的go,编译
该过程会产生“make: *[geth] Error 1”的错误。
编译完成如下:
编译成功后,在go--1.8.11目录下会出现一个名为build/bin的子目录,并且在这个子目录中会出现一个名为geth的可执行文件。
这样我们的以太坊安装就完成了
4)准备创世区块文件
创建一个目录和一个 .json 文件,内容如下:
“随机数”:“”,
":"",
"": "",
“分配”:{},
":"",
"": "0x00",
":"",
"": "",
“”:””
如图所示:
5)创世区块初始化
进入go--1.8.11/build/bin,执行以下命令,完成创世块的创建
./geth – “/app/yum/lw/chain” 初始化 .json
自定义相应目录
执行完成后会出现如下语句:写入块和/或链规则集:26
注意:如果出现类似错误:Fatal: file: json: hex of odd into Go field . of type
这是因为我们没有定义初始账户并删除了创世区块的内容。
6)以太坊发布
./geth –rpc – “*” – “/app/yum/lw/chain” –port “30303” – “db,eth,net,web3” –
启动:
如果出现“to the Geth!”这句话,并且自动输入geth命令行,则表示以太坊私链安装成功。
。
[]
意思是目前没有账户,我们使用.()命令创建一个账户,输入两次密码,生成一个默认账户。
2)挖矿
第一步创建的第一个账户是默认账户,这里是b6,
我们使用web3.(eth.(eth.),“ether”)来查询这个默认账户的余额:
web3.(eth.(eth.),“以太”)
当前默认账户余额为0imToken下载,使用miner.start(1)命令开始挖矿:
矿工启动(1)
INFO [06-18|23:33:40] 新工作 =1 txs=0 =0 =1.211ms
INFO [06-18|23:33:42] 纪元中的 DAG=0 =0 =827.896ms
INFO [06-18|23:33:43] 纪元中的 DAG=0 =1 =1.649s
INFO [06-18|23:33:43] 纪元中的 DAG=0 =2 =2.524s
INFO [06-18|23:33:44] 纪元中的 DAG=0 =3 =3.353s
当出现“Mined block”字样时,代表挖矿成功,此时我们可以用miner.stop()命令来停止挖矿。
再次使用web3.(eth.(eth.), "ether")查询这个默认账户的余额:
web3.(eth.(eth.),“以太”)
15
3)转让
在本地创建另一个帐户作为转账的收款人。
.(“wei.lu”)
“23”
执行转账命令 eth.({from: 'b6', to: '23', value: web3.toWei(1, "ether")})
查看这两个账户的余额,发现金额没有变化。那是因为我们的交易还没有成功写入区块。写入区块的方式就是挖矿。
我们再次开始挖矿,挖矿成功后,停止挖矿,查看对应账户,发现金额发生了变化。
目前的的环境搭建就到此结束了,我会根据自己的学习尽快进行补充。