Py学习  »  区块链

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

user10754406 • 5 年前 • 604 次点击  

我想建立一个私有的区块链网络,我在某个地方读到Hyperledger最适合私有的区块链网络。但我已经知道坚固性,因此我想使用以太坊。那么,如果我可以在eTereum上建立一个成熟的私有区块链网络,或者我必须进入Hyperledger,有人能回答我吗? 如果涉及到一些步骤,也请说明。事先谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30547
 
604 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Ben Beck
Reply   •   1 楼
Ben Beck    5 年前

你当然可以。如果您正在寻找一种简单而快速的方法来引导一个私有的以太坊网络,我建议您寻找一个云模板解决方案,如Microsoft Azure Ethereum Proof of Authority Consortium .

Khaja Mohammed
Reply   •   2 楼
Khaja Mohammed    5 年前

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

以下是步骤

步骤0:

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

步骤1:

您需要创建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.new account()//这将创建一个新的以太坊帐户,但默认情况下将被锁定。从该帐户发送交易时,请确保您按此要求提供的密码。

让我们设置另一个节点(节点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地址,分别在node 1和node 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(或block number)。

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

eth.getBlockNumber号

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

所以,我们现在就到此为止。

任何问题都可以问我。

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

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