用以太坊建立私有区块链(第1部分)

我认为不需要介绍有关区块链比特币以太坊和其他计划的最新炒作。 为了更好地了解它是什么以及它是如何工作的,我决定与以太坊一起尝试,因为它有望对许多不同的用例带来破坏性的解决方案。 在不涉及区块链以太坊理论背景 (已经有很多关于它的文档的撰写)的情况下,本文将重点介绍如何在MacBook上建立专用的以太坊网络 。 我将Docker容器用作以太坊节点,并在Mac上使用Mist浏览器``连接''到专用网络。

请注意,这只是一种可能适用于我的设置。 对于其他用例,可能会有更好/更容易的选择。

我执行以下步骤来创建一个私有的以太坊网络:

    • 建立基础架构
      • 创建目录以保留您的Dockerfile源和以太坊数据

我创建了一个名为“ myether”的目录。 在此目录中,我创建了两个子目录:“ datadir1”和“ datadir2”。

      • 创建'mygenesis.json'文件

为了建立一个新的以太坊网络,我使用文件'mygenesis.json'来启动一个新的区块链。 该文件将用于输入链中第一个块。 要了解更多信息,请参见此处
这是在上一步创建的新目录中创建的文件的内容:

{
  "alloc": {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x20000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00",
  "config":{
    "chainId": 13 
  }
}
      • 创建Dockerfile

同样在新目录中,我创建了一个“ Dockerfile”,它将启动Ubuntu映像并开始安装以太坊及其必需的依赖项。
该文件包含以下内容:

FROM ubuntu:16.04
RUN apt-get update && apt-get install -y software-properties-common net-tools
RUN add-apt-repository -y ppa:ethereum/ethereum && apt-get update
RUN apt-get -y install ethereum
ADD ./mygenesis.json /root/mygenesis.json
EXPOSE 8545 8546 30303 30303/udp
RUN mkdir -p /root/datadir
ENTRYPOINT "bash"

MacBook上的完整文件夹结构如下所示:

      • 创建Docker映像

有了Dockerfile和genesis文件后,我可以通过运行以下命令创建Docker映像:
docker build -t pascalalma/my-ether-node .
输出是这样的:

      • 开始第一个节点

创建图像后,我可以启动我的第一个节点。 我需要打开一些端口,并将对节点使用自定义数据目录(以在Docker容器运行之间保留数据)。 启动第一个节点的命令是:
docker run -it -p 8545:8545 -p 30303:30303 -v /Users/pascalalma/develop/myether/datadir1:/root/datadir pascalalma/my-ether-node /bin/bash

      • 开始第二个节点

在另一个终端中,我运行以下命令:
docker run -it -p 8546:8545 -p 30304:30303 -v /Users/pascalalma/develop/myether/datadir2:/root/datadir pascalalma/my-ether-node /bin/bash

      • note第一个节点的IP地址

我记下了node1的Docker容器的IP地址,以便以后可以使用它将node2与node1连接。 我像这样运行命令“ ifconfig eth0”:

因此,在此示例中,要注意的IP为“ 172.17.0.2”。

    • 发起私人网络

现在,我在MacBook上运行了两个Linux节点。 接下来,我用“ geth ”启动一个新的区块链。 在两个节点上,我运行以下命令:
geth --datadir=/root/datadir/ init /root/mygenesis.json
输出看起来像这样:

创建了初始块(建立了块链),我已准备好进行下一步。

    • 启动私人网络

创建初始块后,我可以通过在两个节点上运行“ geth”并将node2指向node1地址来启动块链。

      • 在node1上启动geth

我运行以下命令以在node1上启动“ geth”:
geth --datadir /root/datadir/ --networkid 1234 --port 30303 --rpcport 8545 --rpc --rpcapi eth,web3,personal,net --rpcaddr 0.0.0.0 console

      • 在node2上启动geth

我运行相同的命令以在节点2上启动“ geth”:
geth --datadir /root/datadir/ --networkid 1234 --port 30303 --rpcport 8545 -rpc --rpcapi eth,web3,personal,net --rpcaddr 0.0.0.0 console

      • 将node2连接到node1的专用网络

要获取node1的地址,请在geth控制台的node1上运行以下命令:
'admin.nodeInfo.enode'像这样:

> admin.nodeInfo.enode
"enode://8fd1e8b6941cd96030580082cabd0758cf274ac7a74493c942120191b4447e49489e3961eb55ce666db172e2fe177ef9bf03f1685d4d81afb364ab9b5ed4aec9@[::]:30303"

输出是enode-url-format格式的node1的地址。
现在,我在node2上运行以下命令:

admin.addPeer("enode://8fd1e8b6941cd96030580082cabd0758cf274ac7a74493c942120191b4f77e49489e3961eb55ce666db172e2fe177ef9bf03f1685d4d81afb364ab9b5ed4aec9@172.17.0.2:30303")

其中“ enode”字符串是上一条命令中返回的字符串,而IP地址是先前为node1记录的IP。
命令的结果应为“ true”。
要检查在node1和node2之间创建的连接,我运行:
net.peerCount
应该返回“ 1”
或者我可以运行admin.peers ,它应该返回如下内容:

>> admin.peers
[{
    caps: ["eth/63"],
    id: "8fd1e8b6941cd96030580082cabd0758cf274ac7a74493c942120191b4447e49489e3961eb55ce666db172e2fe177ef9bf03f1685d4d81afb364ab9b5ed4aec9",
    name: "Geth/v1.7.2-stable-1db4ecdc/linux-amd64/go1.9",
    network: {
      localAddress: "172.17.0.3:37666",
      remoteAddress: "172.17.0.2:30303"
    },
    protocols: {
      eth: {
        difficulty: 131072,
        head: "0x5e1fc79cb4ffa4739177b5408045cd5d51c6cf766133f23f7cd72ee1f8d790e0",
        version: 63
      }
    }
}]

摘要

所以现在我有一个由两个节点组成的专用以太坊网络。 在下一篇文章中,我将向您展示如何在其中一个节点上使用“ geth”控制台来创建帐户,以及如何进行挖掘以为该帐户创建以太币。 我还将展示如何将您的Mist浏览器连接到该专用网络。 敬请关注!

翻译自: https://www.javacodegeeks.com/2017/10/set-private-blockchain-ethereum-part-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值