中华街zhshops

教你发布“币安智能链”和“火币生态链”

教你快速发布自己的智能链和生态链

我们可以在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()
a.png

在这里插入图片描述
四. 查询账户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交替挖矿。

加入普通节点,先生成一个新账户,再初始化私有链,然后启动该节点,在该节点与其他节点建立连线即可。
在这里插入图片描述

以上,就是创建属于你自己的“币安智能链”,或者“火币生态链”的具体教程。感兴趣的朋友可以进行实际操作。
————————————————





分享至 : QQ空间
收藏

4 个回复

倒序浏览
您需要登录后才可以回帖 登录 | 立即注册