首页 > 解决方案 > 以太坊也可以用于构建私有区块链网络吗?

问题描述

我想建立一个私有区块链网络,我在某处读到 Hyperledger 最适合私有区块链网络。但我已经了解 Solidity,因此我想使用以太坊。如果我可以在 Ehtereum 上建立一个完全成熟的私有区块链网络,或者我必须进入 Hyperledger,任何人都可以回答我吗?如果这涉及到一些步骤,请也告诉我们。提前致谢。

标签: hyperledgerblockchainethereum

解决方案


是的,您可以建立私有以太坊网络。下面我展示了 2 节点以太坊专用网络的步骤。

以下是以下步骤

步骤 0:

安装和设置geth(即,确保将其添加到路径环境变量中)

第1步:

您需要创建包含有关难度、gas 限制等信息的 genesis 文件,下面给出了 genesis 文件 (genesis.json) 的示例

{
  "config": {
    "chainId": 2018,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
  },

  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x400",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

第2步:

使用以下命令设置您的节点

geth --datadir data1 (or ./path/to/data/directory give the location where you want to store the data) init genesis.json

第 3 步:

现在我们已经从步骤 2设置了节点,让我们使用以下命令启动节点

geth --datadir data1 (path to the data directory you have given in **Step 2**) --nodiscover --networkid 123456 (give something that is unique and not either of 0,1, 2 or 3 as these are already predefined networks in ethereum) console

拥有标志 --nodiscover 非常重要,这样节点就不会对公众开放。

**第4步: **

如果您想了解您的节点详细信息(现在使用第 3 步命令,您应该已经进入以太坊节点 shell),请给出此命令,您将获得刚刚设置的节点的所有详细信息。

$ admin.nodeInfo

第 5 步:

$personal.newAccount() // 这将创建一个新的以太坊账户,但默认会被锁定。从该帐户发送交易时,请确保您提供的密码是必需的。

让我们设置另一个节点(节点 2)并连接到节点 1。

**第 6 步:**

注意:在我们的例子中,我们将为节点 1 和节点 2 使用同一台机器。

让我们使用以下命令在节点 2 中启动 geth

$ geth --datadir data2 init genesis.json

第 7 步:

让我们使用以下命令启动我们在步骤 6中设置的节点

$ geth --datadir blkchain2 --nodiscover --networkid 1234 --port 60606 console

注意:这里我们要指定端口,因为默认端口已经被节点1占用。

第 8 步:

通过第 7 步,您应该在以太坊节点控制台中。运行以下命令,了解刚刚开始运行的节点 2 详细信息。

> admin.nodeInfo

第 9 步:

让我们使用以下命令在节点 2 中创建一个新帐户

> personal.newAccount()

第 10 步:

现在让我们连接两个节点。

当我们之前在 node1 和 node2 中运行命令 admin.nodeInfo 时,我们会看到一个名为 enode 的键,其格式如下。

enode://ENODE@IP:PORT

如果您想知道 enode 是如何创建的,请查看benjamin 的这个很棒的回复

复制这两个 enode 地址并分别在节点 1 和节点 2 控制台上运行以下命令。

> admin.addPeer("enode of node1"); // run in console of node 1
> admin.addPeer("enode of node2"); // run in console of node 2

现在,这两个节点都是专用网络的一部分,您可以相互交互。

第 11 步:

作为验证,让我们在节点 1 上进行挖掘,并查看它在节点 2 上的反映。

转到节点1的控制台并运行以下命令

> miner.start(1)

上面的命令会给出很多详细信息,您应该注意的一个重要字段是块高度(或块编号)。

现在,转到节点 2 并运行以下命令,以查看已挖掘的块现在显示在节点 2 中。

eth.getBlockNumber

您现在应该看到在节点 1 中挖掘的块已成功传播到节点 2。

所以,我们到此结束。

任何问题随时问我。

PS 1:对于您使用的不同版本的 web3,某些命令可能会有所不同,但在高级别上,事情应该基本保持不变。

PS 2:如果你想连接运行在机器 1 上的节点 1 和运行在机器 2 上的节点 2,你只需要运行相同的。但也许您需要正确验证节点 1 的 enode。此外,您可能需要调整防火墙以允许双向事务流。


推荐阅读