sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
搭建准备
搭建以太坊私有链,第一步是创建创世区块。在创建创世区块的过程中,会生成与之对应的文件夹和文件,这些文件和文件夹是用于该创建步骤的。网络 ID 具有重要性,在连接其他节点时会被运用到。公链 ID 为 1。为避免发生冲突,在运行私有链节点时,需要明确指定属于自己的网络 ID。
geth version
sudo apt-get install -y nodejs
里程碑事件
sudo apt-get install npm
sudo snap install solc
2017 年 10 月 16 日,以太坊完成了拜占庭硬分叉。这次硬分叉引入了一些功能,其中包括简洁且非交互的零知识证明,即 zk - 。硬分叉带来了重大变化,使得以太坊的功能得以健全,并且还提供了新的能力。
EIP 规则
EIP 1283 对 EVM 的指令 gas 计算方式进行了修改,这样做预计可以降低合约的 gas 消耗。在我们的私链当中,eip 被设定为“0”。之所以这样设定,是因为我们的私链不会因为这些提议而出现分叉的情况。
sudo npm install -g truffle
关键参数
mkdir blockchain
cd blockchain
mkdir consortium_blockchain
cd consortium_blockchain
vim genesis.json
Nonce 是一个 64 位的随机数,其作用在于用于挖矿。它要与其他设置一同,符合以太坊 paper 4.3.4 中“Block, (44)”章节所设定的条件。在预置账号和币量方面,因为私有链挖矿相对较为容易,所以在有需要的时候能够自行创建。
vim genesis.json
重要设置
{
"config": {
"chainId": 8434,
"homesteadBlock": 1,
"eip150Block": 2,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 3,
"eip158Block": 3,
"byzantiumBlock": 4,
"alien": {
"period": 2,
"epoch": 300,
"maxSignersCount": 5,
"minVoterBalance": 100000000000000000000,
"genesisTimestamp": 1536136198,
"signers": [
"0x393faea80893ba357db03c03ee73ad3e31257469",
"0x30d342865deef24ac6b3ec2f3f8dba5109351571",
"0xd410f95ede1d2da66b1870ac671cc18b66a97778"
]
}
},
"nonce": "0x0",
"timestamp": "0x5b8f92c2",
"extraData": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x47b760",
"difficulty": "0x1",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"cbfc29c31a31c869f9eb59a084d9019965978a7e": {
"balance": "0x31d450f18af132720000000"
},
"393faea80893ba357db03c03ee73ad3e31257469": {
"balance": "0xd3c21bcecceda1000000"
},
"30d342865deef24ac6b3ec2f3f8dba5109351571": {
"balance": "0xd3c21bcecceda1000000"
},
"d410f95ede1d2da66b1870ac671cc18b66a97778": {
"balance": "0xd3c21bcecceda1000000"
},
"a25dc63609ea7ea999033e062f2ace42231c0b69": {
"balance": "0xd3c21bcecceda1000000"
}
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
限制 GAS 消耗的总量,在私有链中填入其最大的数值。可以连接 rpc 地址,在通常情况下能够使用本机的 IP 地址。倘若指定连接的 url 为“*”,那么任何 url 都能够连接到 rpc 实例。设置网络 ID 的目的是将不同的网络区分开。
实际操作
在控制台的使用方面,它拥有以太坊对象。利用 eth 对象能够对区块链实施操作。在 geth 终端中,能够启动挖矿操作,也能够创建账户。挖矿所得的奖励通常会进入本地的第一个账户,若要改变这种情况,可以使用 miner.setEtherbase 方法来进行设置。同时,还可以发送交易来转移以太币。
你在搭建以太坊私有链的过程中遇到过哪些困难?赶紧到评论区说一说,同时也不要忘记给这篇文章点赞以及进行分享!
geth --datadir "./myblockchain" init genesis.json
暂无评论
发表评论