以太坊也可以用于构建私有区块链网络吗?
Can Ethereum also be used for building private blockchain networks?
我想建立一个私有区块链网络,我在某处读到 Hyperledger 最适合私有区块链网络。但我已经了解 Solidity,因此我想使用以太坊。如果我可以在 Ehtereum 上构建一个完全成熟的私有区块链网络,或者我必须进入 Hyperledger,谁能回答我吗?
如果涉及一些步骤,请也说明。提前致谢。
是的,您可以构建私有以太坊网络。下面我展示了 2 节点以太坊专用网络的步骤。
以下是步骤
第 0 步:
安装和设置 geth(即确保将其添加到路径环境变量中)
第 1 步:
您需要创建包含难度、gas 限制等信息的创世文件,下面给出了创世文件 (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 非常重要,这样节点就不会为 public 打开。
**第 4 步:**
如果你想知道你的节点详细信息(现在使用 步骤 3 命令你应该已经进入以太坊节点 shell)给出这个命令然后你将获取您刚刚设置的节点的所有详细信息。
$ admin.nodeInfo
第 5 步:
$ personal.newAccount() // 这将创建一个新的以太坊帐户,但默认情况下将被锁定。从该帐户发送 t运行saction 时,请确保您提供的密码是必需的。
让我们设置另一个节点(节点 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的详细信息运行ning。
> admin.nodeInfo
第 9 步:
让我们使用以下命令在节点 2 中创建一个新帐户
> personal.newAccount()
第 10 步:
现在让我们连接两个节点。
当我们之前在 node1 和 node2 中 运行 命令 admin.nodeInfo 时,我们看到一个名为 enode 的键,其格式如下。
enode://ENODE@IP:PORT
如果你想知道 enode 是如何创建的,请查看这个很棒的 response by benjamin
分别在节点 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)
上面的命令会很冗长,你应该注意的一个重要字段是区块高度(或区块编号)。
现在,转到节点 2 并运行以下命令以查看已开采的块现在显示在节点 2 中。
eth.getBlockNumber
您现在应该看到在节点 1 中开采的区块已成功传播到节点 2。
所以,我们暂时到此为止。
有什么问题随时问我。
PS 1:对于您使用的不同版本的 web3,一些命令可能会有所不同,但在高层次上,事情应该保持基本相同。
PS 2:如果你想在机器1中连接一个节点1运行ning,在机器2中连接一个节点2运行ning,你只需要运行 相同。但也许您需要正确验证节点 1 的 enode。此外,您可能需要调整防火墙以允许双向 t运行sactional 流。
当然可以。如果您正在寻找一种简单快捷的方法来 bootstrap 私有以太坊网络,我建议您查看云模板解决方案,例如 Microsoft Azure 的 Ethereum Proof of Authority Consortium.
我想建立一个私有区块链网络,我在某处读到 Hyperledger 最适合私有区块链网络。但我已经了解 Solidity,因此我想使用以太坊。如果我可以在 Ehtereum 上构建一个完全成熟的私有区块链网络,或者我必须进入 Hyperledger,谁能回答我吗? 如果涉及一些步骤,请也说明。提前致谢。
是的,您可以构建私有以太坊网络。下面我展示了 2 节点以太坊专用网络的步骤。
以下是步骤
第 0 步:
安装和设置 geth(即确保将其添加到路径环境变量中)
第 1 步:
您需要创建包含难度、gas 限制等信息的创世文件,下面给出了创世文件 (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 非常重要,这样节点就不会为 public 打开。
**第 4 步:**
如果你想知道你的节点详细信息(现在使用 步骤 3 命令你应该已经进入以太坊节点 shell)给出这个命令然后你将获取您刚刚设置的节点的所有详细信息。
$ admin.nodeInfo
第 5 步:
$ personal.newAccount() // 这将创建一个新的以太坊帐户,但默认情况下将被锁定。从该帐户发送 t运行saction 时,请确保您提供的密码是必需的。
让我们设置另一个节点(节点 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的详细信息运行ning。
> admin.nodeInfo
第 9 步:
让我们使用以下命令在节点 2 中创建一个新帐户
> personal.newAccount()
第 10 步:
现在让我们连接两个节点。
当我们之前在 node1 和 node2 中 运行 命令 admin.nodeInfo 时,我们看到一个名为 enode 的键,其格式如下。
enode://ENODE@IP:PORT
如果你想知道 enode 是如何创建的,请查看这个很棒的 response by benjamin
分别在节点 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)
上面的命令会很冗长,你应该注意的一个重要字段是区块高度(或区块编号)。
现在,转到节点 2 并运行以下命令以查看已开采的块现在显示在节点 2 中。
eth.getBlockNumber
您现在应该看到在节点 1 中开采的区块已成功传播到节点 2。
所以,我们暂时到此为止。
有什么问题随时问我。
PS 1:对于您使用的不同版本的 web3,一些命令可能会有所不同,但在高层次上,事情应该保持基本相同。
PS 2:如果你想在机器1中连接一个节点1运行ning,在机器2中连接一个节点2运行ning,你只需要运行 相同。但也许您需要正确验证节点 1 的 enode。此外,您可能需要调整防火墙以允许双向 t运行sactional 流。
当然可以。如果您正在寻找一种简单快捷的方法来 bootstrap 私有以太坊网络,我建议您查看云模板解决方案,例如 Microsoft Azure 的 Ethereum Proof of Authority Consortium.