你确定可以。如果您正在寻找一种简单快捷的方法来引导私有的以太坊网络,我建议您查看一个云模板解决方案,例如Microsoft Azure的 以太坊权威联盟的证明 。
是的,你可以建立私人以太坊网络。下面我展示了2 Node ethereum专用网络的步骤。
以下是以下步骤
的 第0步: 强>
安装并设置geth(即确保将其添加到路径环境变量中)
的 步骤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.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,请检查这个真棒 本杰明的回应
复制这两个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的节点。此外,您可能需要调整防火墙以允许双向事务流。