以太坊系列之九: 从零一步一步搭建以太坊私有链

简介: 从零一步一步搭建以太坊私有链我会说明一步一步怎么做,同时说明可能的注意事项。1.下载geth这一步网上很多,就不细说了,windows的,linux的,mac都有。2. 创建genesis.json关于genesis文件的介绍,在此处:http://blog.csdn.net/sportshark/article/details/51855007有详细说明,自行查阅。

从零一步一步搭建以太坊私有链

我会说明一步一步怎么做,同时说明可能的注意事项。

1.下载geth

这一步网上很多,就不细说了,windows的,linux的,mac都有。

2. 创建genesis.json

关于genesis文件的介绍,在此处:http://blog.csdn.net/sportshark/article/details/51855007有详细说明,自行查阅。

我的genesis.json如下
{ "config": { "chainId": 89120348581, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "difficulty": "20", "gasLimit": "2100000", "alloc": { "0x1a9ec3b0b807464e6d3398a59d6b0a369bf422fa": { "balance": "30000000000000000000000" }, "0x33df901abc22dcb7f33c2a77ad43cc98fbfa0790": { "balance": "40000000000000000000000" } } }
我这里预先给自己的测试账号分配了一些以太币,这样就不用挖矿了。

3.初始化区块链

这里需要注意的是,如果你要有多台电脑,那么每台电脑都要执行一遍下面的操作,也不能图省事,复制geth目录。
geth --datadir ~/eth/privnet/ init genesis.json,我设定的私有链主目录是~/eth/privnet,你可以根据自己的情况修改

4.节点运行

节点之间能够联通,首先要保证网络是通的,测试网络是否畅通,可以通过telnet ip 30303来测试,有时候由于防火墙或者nat等原因,有些节点之间是没法直接通信的.

在各个节点上运行下面命令
geth --datadir ~/eth/privnet --networkid 89120348581
这时候各个几点已经独立运行起来了,但是他们是没有连通的,因为他们的networkid,和创世块和以太坊网络上的都不一样,所以导致在p2p网络认证过程中会失败.

5.连接节点

在各自节点上运行geth attach来添加节点
各自节点信息可以通过admin.nodeInfo来获取,获取以后再其他节点通过
admin.addPeer('enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@xx.xx.xx.xx:30303')
来添加,

还有一种方式可以通过在运行参数中直接指定
如下:
geth.exe --datadir=d:/privnet --networkid 89120348581 --bootnodes enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@xx.xx.xx.xx:30303
如果有多个node,用逗号分隔即可.

6.注意事项

  • 1) init genesis.json必须每个节点都运行一遍,否则添加节点的时候因为创世块不匹配,会失败,我就是在这里耽误了很久.
  • 2) 节点之间单向网络通就可以,也就是在nat环境下A可以直接访问B,那就用A添加B
  • 3) 后续转账等操作,必须启动挖矿,怎么挖矿,很简单,就是在启动的时候加上--mine参数就可以了.

7 加入我的私有链

  • 1) 将上面的genesis.json内容保存为c:\privnet\genesis.json
  • 2) 运行命令
    geth --datadir c:\privnet init genesis.json
  • 3) 启动节点
    geth.exe --datadir=c:/privnet --networkid 89120348581 --bootnodes enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@123.206.176.142:30303
  • 4) 特别注意,genesis.json要一字不差,否则无法加入我的私有网络.
    在私有链上挖矿很容易,方便自己测试开发.
目录
相关文章
|
关系型数据库 MySQL 数据库
MySQL Innodb Purge简介
前言 为什么MySQL InnoDB需要Purge操作?明确这个问题的答案,首先还得从InnoDB的并发机制开始。为了更好的支持并发,InnoDB的多版本一致性读是采用了基于回滚段的的方式。另外,对于更新和删除操作,InnoDB并不是真正的删除原来的记录,而是设置记录的delete mark为1。
8995 1
|
11月前
|
存储 JSON API
如何创建自己的数据集!!!
本文介绍了如何创建和使用自定义数据集,特别是针对GitHub Issues的语料库。内容涵盖了从获取数据、清理数据到扩充数据集的全过程,最终将数据集上传到Hugging Face Hub并与社区分享。具体步骤包括使用GitHub REST API下载Issues,通过Python脚本进行数据处理,以及添加评论信息。此外,还介绍了如何创建数据集卡片,以提供详细的背景信息和使用指南。
337 0
|
安全 Ubuntu 搜索推荐
如何使用 Nginx 创建临时和永久重定向
如何使用 Nginx 创建临时和永久重定向
239 2
|
人工智能 测试技术 人机交互
深入浅出智能工作流(Agentic Workflow)|技术干货
著名AI学者、斯坦福大学教授吴恩达提出AI Agent的四种设计方式后,Agentic Workflow(智能体工作流)在全球范围内迅速走红,多个行业纷纷实践其应用,并推动了新的Agentic AI探索热潮。吴恩达总结了Agent设计的四种模式:自我反思、工具调用、规划设计及多智能体协作。前两者较普及,后两者则为智能体使用模式从单一大模型向多智能体协同配合完成业务流程的转变奠定了基础。
5488 3
|
存储 缓存 算法
【Conan 入门教程 】了解 Conan2.1 中默认生成器的作用
【Conan 入门教程 】了解 Conan2.1 中默认生成器的作用
298 1
|
运维 Kubernetes Cloud Native
云原生|kubernetes|minikube的部署安装完全手册(修订版)(一)
云原生|kubernetes|minikube的部署安装完全手册(修订版)
4512 0
云原生|kubernetes|minikube的部署安装完全手册(修订版)(一)
|
安全 区块链 数据安全/隐私保护
链游开发正式版丨链游系统开发指南教程丨链游系统源码程序
链游系统开发规则指的是在构建基于区块链技术的游戏系统时需要遵循的一系列规定和准则。这些规则旨在确保链游系统的安全性、可靠性、透明性和用户体验,
|
监控 安全 持续交付
Docker与容器化安全:漏洞扫描和安全策略
容器化技术,特别是Docker,已经成为现代应用程序开发和部署的关键工具。然而,容器化环境也面临着安全挑战。为了保障容器环境的安全性,本文将介绍如何进行漏洞扫描、制定安全策略以及采取措施来保护Docker容器。我们将提供丰富的示例代码,以帮助大家更好地理解和应对容器安全的问题。
|
网络协议 网络安全 虚拟化
虚拟机ping不通外网的原因
如果您在虚拟机中无法 ping 通外网,可能会有以下几个常见的原因: 1. 网络连接问题:确保虚拟机的网络连接正常。检查虚拟机的网络适配器设置,确保它已正确配置并连接到主机上的物理网络。 2. 网络设置问题:检查虚拟机的网络设置,确保网络设置正确。如果您使用的是桥接模式或 NAT 模式,请确保网络配置正确,并分配了正确的 IP 地址和网关。 3. 防火墙阻止:检查虚拟机内部和宿主机上的防火墙设置。确保防火墙允许 ICMP(ping)请求通过。 4. DNS 设置问题:检查虚拟机的 DNS 设置。尝试通过在虚拟机中执行 `ping 8.8.8.8` 来诊断,如果可以 ping 通 IP
6539 0