网赚论坛

标题: 搭建本地以太坊网络 [打印本页]

作者: a15012631841    时间: 2017-11-20 14:19
标题: 搭建本地以太坊网络
环境准备
本测试环境在单机上完成,通过不同端口号来区分节点。使用go的客户端geth,版本是Version: 1.6.7-unstable。源码地址: https://github.com/ethereum/go-ethereum 。geth和bootnode的编译自行完成。工作目录结构如下:

启动bootnode
以太坊在启动时需要告之至少一个对等节点,这样才能接入整个以太坊网络,bootnode相当于一个第三方的中介,node在启动时会将自己的信息注册到bootnode的路由中,并且会从bootnode得到其它节点的路由信息,一旦有了对等节点信息后就可以不需要连接bootnode。公有链的节点硬编码了一些bootnode节点地址。

创建脚本 bootnode.sh

看下bootnode.log的内容:

启动geth节点时,需要从上面的内容中解析出bootnode的id。

启动节点
为了方便启动节点,我编写了下面的脚本 start.sh:

上面的脚本会先判断有没有启动bootnode,然后创建创世块配置,再用它来初始化节点,最后启动它,并开启RPC接口,这样可以使用一些图形化的浏览器插件调用接口,注意需要设置跨域头。

分别在三个终端中启动3个节点,参数格式是两个数字:

如果是参数是 00,则工作目录是 data/00,p2p端口是 61900,rpc端口是 8100。

创建帐户、挖矿
start.sh脚本在启动geth时开启了console,我们可以在它里面输入指命操作以太坊接口。首先我们创建一个帐号:

在 00节点终端创建帐户并查看余额:

因为是一个新用户,所以余额是0,没有问题。接下来我们挖矿,不过挖矿之前需要先解锁帐户

开始挖矿:

大概只需要几秒钟,就会出现 Successfully sealed new block,表明挖到矿了,然后我们再看帐户余额:

本例中总共挖到65个ether。

交易
现在我们在 01节点创建另外一个帐户:

回到 00节点,转10个以太币到这个新的帐户上:

再到 01节点查看 to的帐户余额,发现还是0,这是因为我们还没有挖矿,交易没有得到确认。 接下来我们在个节点 02上创建一个新帐户,解锁后开始挖矿,等待交易被确认。

我们再看下 00和 01节点里的帐户余额变化: 01节点里的余额是 10000000000000000000,也就是10个以太币。 00节点在交易前余额是65 ether,但现在只有 54999622000000000000,少的部分其实是矿工费用,由 02的矿工节点收取。

文章里的帐户地址和余额均为参考值,在不同环境下都会不一致。另外,geth是用CPU来挖矿的,用它在公有链上挖矿已完全没有可能了。

以太坊源码学习—RLP编码



转自公众号 DivingInto以太坊





欢迎光临 网赚论坛 (http://www.caifuba.net/) Powered by Discuz! X3.1