首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ethereum也能用于建立私有的区块链网络吗?

Ethereum也能用于建立私有的区块链网络吗?
EN

Stack Overflow用户
提问于 2018-12-18 06:02:28
回答 2查看 220关注 0票数 0

我想建立一个私有的区块链网络,我在某个地方读到,Hyperledger最适合于私有区块链网络。但我已经知道了稳固的东西,所以我想用以太。所以,如果我能在Ehtereum上建立一个成熟的私有区块链网络,或者我必须进入Hyperledger,任何人都能回答我吗?如果其中涉及到一些步骤,请也告诉我。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-18 07:11:08

是的,你可以建立私人的ethereum网络。下面我已经给出了2节点专用网络的步骤。

以下是以下步骤:

步骤0:

安装和安装geth (即确保将其添加到path环境变量)

步骤1:

您需要创建包含困难、气体限制等信息的成因文件,下面给出了成因文件(genesis.json)的示例。

代码语言:javascript
运行
复制
{
  "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:

使用以下命令设置节点

代码语言:javascript
运行
复制
geth --datadir data1 (or ./path/to/data/directory give the location where you want to store the data) init genesis.json

步骤3:

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

代码语言:javascript
运行
复制
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

非常重要的是,您要有标志-- not,这样节点就不对公众开放了。

**第4步:**

如果您想知道您的节点详细信息(现在使用步骤3命令,您应该已经输入了entered ),给出这个命令,您将得到您刚刚设置的节点的所有细节。

代码语言:javascript
运行
复制
$ admin.nodeInfo

步骤5:

$ personal.newAccount() //这将创建一个新的ethereum帐户,但默认情况下将被锁定。请确保您在从此帐户发送事务处理时所提供的密码。

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

**第6步:**

注意:我们将对节点1和节点2使用相同的机器。

让我们用下面的命令启动节点2中的geth

代码语言:javascript
运行
复制
$ geth --datadir data2 init genesis.json

步骤7:

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

代码语言:javascript
运行
复制
$ geth --datadir blkchain2 --nodiscover --networkid 1234 --port 60606 console

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

步骤8:

对于步骤7,,您应该在ethereum节点控制台中。运行以下命令以了解刚刚开始运行的节点2的详细信息。

代码语言:javascript
运行
复制
> admin.nodeInfo

步骤9:

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

代码语言:javascript
运行
复制
> personal.newAccount()

步骤10:

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

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

代码语言:javascript
运行
复制
enode://ENODE@IP:PORT

如果您想知道enode是如何创建的,请检查这个非常棒的本杰明的答复

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

代码语言:javascript
运行
复制
> 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的控制台并运行以下命令

代码语言:javascript
运行
复制
> miner.start(1)

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

现在,转到Node 2并运行以下命令,以确保已开采的块现在显示在Node 2中。

eth.getBlockNumber

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

所以,我们现在结束了。

任何问题都可以随便问我。

PS 1:对于您正在使用的不同版本的web3,有些命令可能会有所不同,但在较高级别上,情况应该大致相同。

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

票数 2
EN

Stack Overflow用户

发布于 2018-12-20 05:54:11

你当然可以。如果您正在寻找一种简单而快捷的方法来引导私有Ethereum网络,我建议您考虑一种云模板解决方案,比如Microsoft的管理局联营集团的证明

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53827202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档