教你快速发布自己的智能链和生态链
我们可以在Ubuntu 16.04上实作,并在本机上架设两个以太坊私有链节点:
首先,我们先以 A 节点的角色操作,建立第一个区块链节点。
一. 创建私有链文件夹
A节点的私有链的数据都会储存到该文件夹中。
mkdir private-chain-A
cd private-chain-A
二. 下载Geth
依据操作系统下载 geth tools 并解压缩至文件夹,链接如下:
https://geth.ethereum.org/downloads/
三. 新建账号
用下列指令新建账号,默认会账号存到 ~/.ethereum/keystore, --datadir 可将账号存在设定的文件夹。
#创建账号
geth account new --datadir ./
#读取账号
geth account list --datadir ./
四. 产生genesis.json
接着启动 puppeth 照着指示一步一步产生 genesis.json
Please specify a network name to administer (no spaces, hyphens or capital letters please)
请输入你的网络名称(不可用空白、连接号或大写)
What would you like to do?
2 设定新的genesis
What would you like to do?
1 新建新的genesis
Which consensus engine to use?
2 Clique - proof-of-authority
How many seconds should blocks take? (default = 15)
产生一个区块需要几秒,这里我们输入币安智能链的3s出块时间。
Which accounts are allowed to seal? (mandatory at least one)
指定那些账号可以授权封装。
Which accounts should be pre-funded?
那些账号可以得到Ether?
Should the precompile-addresses (0x1 … 0xff) be pre-funded with 1 wei?
precompile-addresses需要被分配到 1wei吗? (预设yes)
Specify your chain/network ID if you want an explicit one (default = random)
输入chain/network ID,预设随机
What would you like to do?
2 Manage existing genesis (管理现在的genesis)
2 Export genesis configurations (输出genesis)
Which folder to save the genesis specs into? (default = current)
将genesis存到哪个文件夹(预设当下)
puppeth会产生多个 genesis ,可以删除 -harmony.json的genesis
五. 初始化geth
geth init --datadir ./ .json
启动前准备
建议先了解 geth 的 Command-Line-Options
新建pwd.txt解锁你的账户。
echo > pwd.txt
为账号设定的密码
六. 启动geth
我们会启动web socket,需要rpc的话,自行加入参数,启动前有两个参数要先改。
: 刚刚输入的network id
: 新建的账号
nohup geth --networkid --datadir ./ --ws --wsapi eth,personal,web3,miner --wsport 8547 --wsorigins “*” --wsaddr 0.0.0.0 --unlock --password pwd.txt &>output &
随后,我们再来以B节点的角色操作,建立第二个区块链节点。产生B节点的enode,并启动节点B的Geth。启动后,我们要用A节点将B节点加入私有链的网络中。
这样,我们便可以操作私有链节点了,具体步骤如下:
一. 连入A节点
cd ~/private-chain-A
方法一
geth attach ./geth.ipc
方法二
geth attach ws://127.0.0.1:8547
二. 用A节点将B节点加入私有链
geth attach ./geth.ipc
可以看到现在节点是空的
admin.peers
[]
加入节点,请将上面的产生出来的 $enodeUrl贴上去,记得要加双引号。
admin.addPeer(“enode://105a34aa34dfc0eb1a5bb8ac79d647733857796345e6d3045e86f7b6aafb450cff81020c344990bfc8c4ad0052441a45a50ba0c930edb0da528e77330b7ef6ec@127.0.0.1:30304”)
true
联机成功,现在多了B节点信息
admin.peers
[{
caps: [“eth/63”],
enode: “enode://105a34aa34dfc0eb1a5bb8ac79d647733857796345e6d3045e86f7b6aafb450cff81020c344990bfc8c4ad0052441a45a50ba0c930edb0da528e77330b7ef6ec@127.0.0.1:30304”,
id: “5191c0e1f276805155070835216595c28aa50c1ea2a87d2224ab86e5c0cc73e1”,
name: “Geth/v1.8.27-stable-4bcc0a37/linux-amd64/go1.11.9”,
network: {
inbound: false,
localAddress: “127.0.0.1:52038”,
remoteAddress: “127.0.0.1:30304”,
static: true,
trusted: false
},
protocols: {
eth: {
difficulty: 1,
head: “0x863dd154027e417359f6b41ddf7cb073269fb78cf6a9c5b723e01bcc1a89841c”,
version: 63
}
}
}]
三. 挖矿
在连入A节点后,可以开启挖矿
miner.start()
miner.stop()
在这里插入图片描述
四. 查询账户Ether
web3.fromWei(web3.eth.getBalance(web3.eth.accounts[0]), ‘ether’).toFixed(2);
五. 配置21个节点轮流出块
现在来配置21个节点轮流出块,这里以三个节点A,B,C为例。启动节点后,首先跟其他节点建立连线:
admin.addPeer(enode://7267113574d0c7f9c2d0859e5f552f172d2add8e4d31c76861494b7815baea170058b01b35c97dcb638dc57f8b0395127e77f25469d75092eb5abcca497cb57c@172.31.33.187:3000)
然后在节点A,节点B上分别对新加入的节点C进行授权:
clique.propose(「0x3f9a3A33884FF903c0924EDD384A2AF1657f926B」,true)
重新启动节点C,并将节点C与节点A、节点B建立连线,然后在节点A,节点B上分别执行:
admin.addPeer(「enode://cd1226502cf4805b2bec5766290717db8ae941b7629aac08668014a32bc1996fd31801fb7f6ce4504593a5a505310379156b47689f33a77df9c5ac426db79e47@127.0.0.1:3004」)
最后在节点C执行miner.start()开始挖矿,此时节点A,B,C交替挖矿。
加入普通节点,先生成一个新账户,再初始化私有链,然后启动该节点,在该节点与其他节点建立连线即可。
在这里插入图片描述
以上,就是创建属于你自己的“币安智能链”,或者“火币生态链”的具体教程。感兴趣的朋友可以进行实际操作。
————————————————
|