以太坊还可以用于构建私有区块链网络吗?

时间:2018-12-18 06:02:29

标签: hyperledger blockchain ethereum

我想建立一个私有区块链网络,我在某处读到Hyperledger最适合私有区块链网络。但是我已经了解Solidity,因此我想使用以太坊。因此,如果我可以在Ehtereum上构建成熟的私有区块链网络,或者我必须进入Hyperledger,有人可以回答我吗? 如果涉及到某些步骤,请也告知。预先感谢。

2 个答案:

答案 0 :(得分:1)

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

以下是步骤

步骤0:

安装并设置geth(即确保将其添加到path环境变量中)

第1步:

您需要创建一个创世纪文件,其中包含有关难度,气体限制等的信息。创世文件(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步命令,您应该已经进入以太坊节点外壳),请输入此命令,您将获得节点的所有详细信息刚刚设置。

$ 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的创建方式,请检查此response by 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)

上面的命令会很冗长,因为您应该观察到的一个重要字段是blockheight(或块编号)。

现在,转到节点2并运行以下命令,以查看所开采的区块现在显示在节点2中。

  

eth.getBlockNumber

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

所以,我们现在就此结束。

任何问题都可以问我。

PS 1:对于不同版本的Web3,您使用的某些命令可能会有所不同,但在高层情况下,它们应该基本保持不变。

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

答案 1 :(得分:0)

您肯定可以。如果您正在寻找一种简单快速的方法来引导私有以太坊网络,建议您使用云模板解决方案,例如Microsoft Azure的Ethereum Proof of Authority Consortium

相关问题