上次我们聊了在 ubuntu 上安装 Geth 钱包、搭建私链和创世区块。主要内容为:
- 介绍文章的流程,有个初始的了解;
- ubuntu的虚拟机可以采用Virtual Box,或者Vmware;
- 安装go-ethereum客户端geth,轻节点模式与主网进行同步;
- 配置创世区块,根据创世区块初始化私链;
- 运行私链;
今天我们将学习 在Raspberry Pi上安装 Geth 钱包、加入私链并开始同步区块。其关键步骤为:
- 介绍文章的流程,有个初始的了解;
- 树莓派的初始化配置;
- 升级golang、编译安装go-ethereum客户端geth,轻节点模式与主网同步;
- 根据创世区块初始化私链;
- 运行私链;
- 将节点配对起来,成为真正的“链”。
首先将树莓派连接好,然后将其初始化,即安装这个节点。先进行钱包编译,在需要更新的地方进行更新,执行以下命令:
sudo apt-get update
再执下面这个命令,这个过程会花费比较长的时间:
sudo apt-get dist-upgrade
然后进行配置:
$ sudo raspi-config
首先,第一次进行配置的时候,内存不够,因为 CPU 的一些内存会分配一些给 GPU,所以要把 CPU 上的128G内存拿回来。
直接让系统启动到命令行模式,不要启动到GPU图形界面,避免浪费很多时间。
$ sudo raspi-config
具体参数设置为:
- 3 → Boot
- B1 → Desktop / CLI
- B1 → Console
- 7 → Advanced
- A3 → Memory Split
- 16 (MB)
- Reboot
安装插件:
$ sudo apt-get install git golang libgmp3-dev
将钱包拷贝下来,并进行编译,编译过程中将会用到 golang,它对版本要求比较高,1.7的版本其实已经比较旧了,至少1.8以上的版本才可以。本实验将采用1.8.12来做实验,安装包可以从:https://github.com/ethereum/go-ethereum/releases 下载。命令行为:
wget https://github.com/ethereum/go-ethereum/archive/v1.8.12.tar.gz
然后进行解压缩,得到它的源码。
tar -zxvf v1.8.12.tar.gz
得到源码之后进行编译:
make
视频中,此操作失败,是因为 golang 至少需要1.9的版本才能执行,而此安装包为1.7.4版本,故还需升级版本。升级的方法已经在前面的文章讲的很清楚了。按照文章中的方法,把程序升级一遍。
可以看到编译时树莓派的内存占用率不高,但是CPU的占用率是满的。
升级完 golang 并编译完成后,把可执行文件拷贝到 usr/local/bin/中。
$ sudo cp build/bin/geth /usr/local/bin/
然后进行“根据创世区块初始化私链”这步。
第一步:初始化私链就是使用一个json文件,将其拷贝到树莓派中。
创建一个新账户。但文件夹的名字需要与ubuntu中的文件类似。
$ geth --datadir .ETHStateGrid account new
设置账户钱包的密码,并记录下账户钱包的地址。
第二步:用json文件初始化 ETHStateGrid 文件夹。
$ geth --datadir .ETHStateGrid init ETHStateGrid.json
然后进行节点的运行。
$ geth --identity pi --rpc --rpcport 8080 --rpccorsdomain "*" --datadir .ETHStateGrid --port 30303 --nodiscover --rpcapi "db,eth,net,web3" --networkid 555 console
查看账户的地址:
> eth.accounts
> primary = eth.accounts[0]
> balance = web3.fromWei(eth.getBalance(primary), “ether”);
但是该地址的余额为0,因为我们预先没有给这个账户分配以太坊。
第三步:将两个节点连接起来,这是比较容易失败的地方。因为我们不希望节点被发现,所以用nodiscover选项开启节点的运行,所以我们用其他的方式将这两个节点配置好连接起来。我们将刚刚初始化的文件夹配置一个 static-node.json文件,将双方节点的url文件拷贝进去。
查看树莓派的节点信息可通过:
> admin.nodeInfo.enode
可以看到这个节点是由双方的信息构造。
配好后,双方都能看到对方的信息。
到目前为止,我们创建了私链,配置好了一个连接的节点,下一节课将讲如何在两个节点之间进行转账,通过挖矿来讲转账实施成功。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课