我想建立一个私有的区块链网络,我在某个地方读到,Hyperledger最适合于私有区块链网络。但我已经知道了稳固的东西,所以我想用以太。所以,如果我能在Ehtereum上建立一个成熟的私有区块链网络,或者我必须进入Hyperledger,任何人都能回答我吗?如果其中涉及到一些步骤,请也告诉我。提前谢谢。
发布于 2018-12-18 07:11:08
是的,你可以建立私人的ethereum网络。下面我已经给出了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
非常重要的是,您要有标志-- not,这样节点就不对公众开放了。
**第4步:**
如果您想知道您的节点详细信息(现在使用步骤3命令,您应该已经输入了entered ),给出这个命令,您将得到您刚刚设置的节点的所有细节。
$ admin.nodeInfo
步骤5:
$ personal.newAccount() //这将创建一个新的ethereum帐户,但默认情况下将被锁定。请确保您在从此帐户发送事务处理时所提供的密码。
让我们设置另一个节点(节点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,,您应该在ethereum节点控制台中。运行以下命令以了解刚刚开始运行的节点2的详细信息。
> admin.nodeInfo
步骤9:
让我们使用以下命令在Node 2中创建一个新帐户
> personal.newAccount()
步骤10:
现在让我们把两个节点连接起来。
当我们在前面的admin.nodeInfo和node2中运行命令时,我们会看到一个名为enode的键,它的格式如下。
enode://ENODE@IP:PORT
如果您想知道enode是如何创建的,请检查这个非常棒的本杰明的答复
分别在节点1和节点2控制台上复制这些enode地址并运行以下命令。
> 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)
上面的命令会给出很多详细的内容,在应该注意的一个重要字段中是块高度(或块号)。
现在,转到Node 2并运行以下命令,以确保已开采的块现在显示在Node 2中。
eth.getBlockNumber
现在您应该看到,在节点1中挖掘的块已经成功地传播到节点2。
所以,我们现在结束了。
任何问题都可以随便问我。
PS 1:对于您正在使用的不同版本的web3,有些命令可能会有所不同,但在较高级别上,情况应该大致相同。
PS 2:如果您想连接机器1中运行的节点1和机器2中运行的Node 2,只需运行相同的节点即可。但是,您可能需要正确地验证节点1的enode,也可能需要调整防火墙以允许双向事务流。
发布于 2018-12-20 05:54:11
你当然可以。如果您正在寻找一种简单而快捷的方法来引导私有Ethereum网络,我建议您考虑一种云模板解决方案,比如Microsoft的管理局联营集团的证明。
https://stackoverflow.com/questions/53827202
复制相似问题