如何建立自己的私有以太坊网络?
本文重点讨论建立私有以太坊网络的步骤。在进入详细的分步指南之前,让我们看一下基本术语的定义。
什么是区块链?
- 区块链是一个区块链,其中包含使用公钥和私钥以加密形式在网络中发生的所有交易的所有信息。
- 区块链技术可以加强贸易融资中必不可少的基础服务。区块链模型适用于去中心化、数字化和分布式账本模型。由于这些属性,这比目前在交易系统中使用的专有的、集中的更强大和安全。
- 用最简单的术语来说,区块链只是去中心化数据库的一种新形式。
什么是以太坊?
以太坊是一个分散的开源区块链系统,具有自己的加密货币,称为以太(ETH)。它是一个可用于各种 Dapps 的平台,可以使用智能合约进行部署。
为什么要建立私有区块链网络?
- 在以太坊网络中,如果节点未连接到主网络,则称为私有以太坊网络。
- 只有具有正确权限的节点才能访问此区块链。
- 隐私——不想在公共网络上加密数据,这就是企业构建专用网络的原因。
- 测试智能合约并开发智能合约。
建立私有以太坊网络的步骤
以下是设置私有以太坊网络的分步指南。
第 1 步:在您的系统上安装 Geth
- 单击此处转到 Geth 官方下载页面并根据您的操作系统下载设置。
- 在安装 Geth 时,请确保选中两个复选框,如下所示。
- 在系统上安装 Geth 后,打开 PowerShell 或命令提示符并键入 geth 并按 enter,将显示以下输出。
第 2 步:为私有以太坊创建一个文件夹
- 为此项目创建一个单独的文件夹。在这种情况下,文件夹是MyNetwork。
- 在 MyNetwork 文件夹中为私有以太坊网络创建一个新文件夹,因为它使您的以太坊私有网络文件与公共文件分开。在此示例中,文件夹是MyPrivateChain。
第 3 步:创建创世块
区块链是一个分布式数字寄存器,其中所有交易以块的形式按顺序记录。有无限数量的块,但总有一个单独的块产生了整个链,即 创世区块。
如上图所示,我们可以看到区块链是用创世块初始化的。
要创建私有区块链,需要一个创世块。为此,请创建一个 genesis 文件,这是一个 JSON 文件,其中包含以下命令 -
{
“config”:{
“chainId”:987,
“homesteadBlock”:0,
“eip150Block”:0,
“eip155Block”:0,
“eip158Block”:0
},
“difficulty”:”0x400″,
“gasLimit”:”0x8000000″,
“alloc”:{}
}
解释:
- config:它定义区块链配置并确定网络将如何工作。
- chainId:这是多个区块链使用的链号。以太坊主链号为“1”。可以使用任何随机数,前提是它与另一个区块链编号不匹配。
- homesteadBlock:是以太坊协议的第一个官方稳定版本,属性值为“0”。
- 可以连接其他协议,例如拜占庭、eip155B 和 eip158。为此,在 homesteadBlock 下添加带有 Block 前缀的协议名称(例如,eip158Block)并将参数设置为“0”。
- 难度:它决定了生成块的难度。将其设置为低以保持较低的复杂性并避免在测试期间等待。
- gasLimit: Gas 是用于在以太坊网络上支付交易费用的“燃料”。用户愿意花费的gas越多,他的交易在队列中的优先级就越高。建议将此值设置为足够高的水平以避免测试期间的限制。
- alloc:它用于为我们的私有区块链创建一个加密货币钱包,并用假以太币填充它。在这种情况下,此选项将不会用于展示如何在私有区块链上启动挖掘。
可以使用任何文本编辑器创建此文件,并将带有JSON 扩展名的文件保存在 MyNetwork 文件夹中。
第四步:执行创世文件
在管理员模式下打开 cmd 或 PowerShell 输入以下命令 -
geth –identity “yourIdentity” init \path_to_folder\CustomGenesis.json –datadir \path_to_data_directory\MyPrivateChain
Parameters-
path_to_folder- Location of Genesis file.
path_to_data_directory- Location of the folder in which the data of our private chain will be stored.
上述命令指示 Geth 使用 CustomGenesis.json 文件。
执行上述命令后,Geth 连接到 Genesis 文件,看起来像这样:
第五步:初始化私网
启动专用网络,各个节点可以在其中添加新块,为此我们必须运行命令-
geth –datadir \path_to_your_data_directory\MyPrivateChain –networkid 8080
该命令还具有标识符8080 。它应该替换为不等于已创建网络标识符的任意数字,例如,主网络以太坊的标识符(“networkid = 1”)。成功执行命令后我们可以看到这样的——
笔记:
The highlighted text is the address of geth.ipc file finds it in your console and copy it for use in the next step.
每次需要访问私有网络链时,都需要在控制台中运行命令来启动与 Genesis 文件和私有网络的连接。
现在个人区块链和私有以太坊网络已经准备就绪。
第 6 步:创建一个外部拥有的帐户 (EOA)
外部拥有的帐户(EOA)具有以下功能 -
- 由外部方或个人控制。
- 通过私钥访问。
- 包含以太余额。
- 可以发送交易以及“触发”合约账户。
创建 EOA 的步骤如下:
要管理区块链网络,需要 EOA。要创建它,请在两个窗口中运行 Geth。在第二个窗口控制台中输入以下命令 -
geth attach \path_to_your_data_directory\YOUR_FOLDER\geth.ipc
or
geth attach \\.\pipe\geth.ipc
这会将第二个窗口连接到第一个窗口的终端。终端将显示以下内容 -
使用命令创建一个帐户 -
personal.newAccount()
执行此命令后,输入密码短语,您将获得您的帐号并保存此号码以备将来使用。
要检查帐户的余额状态,请执行以下命令 -
从上面的截图可以看出,它显示了零余额。这是因为在 genesis 文件中启动私有网络时,我们没有在 alloc 属性中指定任何内容。
第 7 步:挖掘我们的以太坊私有链
如果我们在以太坊的主链上挖矿,它将需要配备强大图形处理器的昂贵设备。通常,ASIC 用于此目的,但在我们的链中不需要高性能,我们可以使用以下命令开始挖掘 -
miner.start()
如果在几秒钟后检查余额状态,则该帐户会用假以太币补充。之后,可以使用以下命令停止挖矿 -
miner.stop()