1. 通过PPAs安装geth
$ sudo add-apt-repository -y ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum
2. 创建自己的私有链
2.1 创建创世文件
创建一个genesie.json
文件,内容为下。chainId
:链ID,一个整数,不要是1 2,这好像指定的是主网,比如设置成666,“alloc”可以为某个地址分配以太币。比如此处我为我的metamask账户地址分配10个ether(1ether=10^18wei)。
{
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0
},
"alloc": {
"0xF54cd4fEdA808A50f1237fEb276AC1E3D632dfeD":{
"balance": "10000000000000000000"
}
},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x2000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
2.2 初始化创建私链
创建mychain
文件夹,用来指定数据存储的位置,使用以下命令初始化该链
$ geth --datadir mychain/ init genesisi.json
启动此链,此处的networkid
要与之前的chainId
相同
$ geth --datadir mychain/ networkid 666
2.3 使用geth控制台
ctrl+c
结束上述的链,在使用控制台时,会时不时的出来info消息,我们可以将info重定向输出到一个log文件。创建geth.log
文件。使用以下命令重新启动链。
$ geth --datadir mychain/ --networkid 666 console 2>geth.log
查看刚才创世区块中alloc
分配的以太。
2.4 启用rpc打开端口供远程访问
ctrl+d
结束上述的链,使用以下命令重新启动。指定rpc默认端口是8545。rpcaddr "0.0.0.0"
,指定任何一个ip地址都可以访问。
$sudo geth --datadir mychain/ --networkid 666 console --rpc --rpcaddr "0.0.0.0" --rpcport "8545" 2> geth.log
2.5 metamask连接自己的私有链
ifconfig
查看虚拟机的ip地址,此处你的虚拟机要是桥接模式,不然不会有自己的ip。关于虚拟机桥接模式,nat,仅主机模式的介绍可以参考此篇博客。https://www.cnblogs.com/qianjinyan/p/8661668.html。
在metamask上自定义rpc。如果保存失败,说chain id返回的不是666,则将chainid设置成它返回的。
保存即可以连上虚拟机上的私有链。如下图所示。