自己动手部署以太坊联盟链

2023-11-20


一个区块链学习项目 GitHub:https://github.com/xianfeng92/Love-Ethereum


------------------------------------------------------

# 假设已经在Ubunbu 14.04 LTS上安装好了以太坊客户端Geth

------------------------------------------------------




## 使用Geth部署以太坊联盟链


* 以太坊Geth客户端提供了以太坊协议相关的许多功能,用户只需对创世区块、Geth参数等进行配置,就可以在自己搭建一个私有的以太坊联盟链网络。下面以同一台Ubuntu系统PC为例,使用Geth搭建一个以太坊联盟链网络。




## 创世区块文件genesis.json


 __创世区块文件genesis.json是区块链最重要的识别标志之一__,每一条区块链都有唯一识别的创世区块文件,如果两台机器启动Geth时所选用的创世区块文件不同,就无法被识别为同一条区块链的成员。因此,同一条联盟链中的所有节点必须使用同一份创世区块文件进行初始化配置。


下面是一个创世区块文件genesis.json的示例。




{


"config": {


"chainId": 110,


"homesteadBlock": 0,


"eip155Block": 0,


"eip158Block": 0


},


"alloc"      : {


"0x< # 某账户地址A # >": {"balance": "1000000000000000000"},


"0x< # 某账户地址B # >": {"balance": "2000000000000000000"},


"0x< # 某账户地址C # >": {"balance": "3000000000000000000"}


},


"coinbase"   : "0x0000000000000000000000000000000000000000",


"difficulty" : "0x400",


"extraData"  : "",


"gasLimit"   : "0x2fefd8",


"nonce"      : "0x0000000000000000",


"mixhash"    :


"0x0000000000000000000000000000000000000000000000000000000000000000",


"parentHash" :


"0x0000000000000000000000000000000000000000000000000000000000000000",


"timestamp"  : "0x00"


}


其中,config中的内容是区块链相关的基本配置参数,最重要的是链编号chainId,这是用于标识该区块链的编号,这里设为110。alloc中为以太坊账户信息,可以留空,等待部署完成后再启动以太坊创建账户,也可以预先配置好以太坊账户及其余额,这里的账户余额是以wei为单位。其下的coinbase是联盟链挖矿的收益账户,可以设置为零地址,留到运行以太坊挖矿之前再设置。difficulty是初始的挖矿难度,可以设置为较低数值,如0x400。gasLimit为每个区块所消耗的Gas限制。其余的如extraData、nonce、mixhash、parentHash以及timestamp等均可以设置为零或留空。




## 初始化配置


创建完创世区块文件之后,接下来需要创建以太坊联盟链账户。以太坊账户由一对公私钥组成,用户首先设置账户密码,然后使用Geth由账户密码生成一对公私钥,再由公钥生成账户地址,最后将账户地址添加到创世区块文件genesis.json中。


具体操作如下:


* 开启一个以太坊节点


> geth --datadir testNet console




* 查看网络中账户信息


> eth.accounts


[] 


账户为空




* 创建以太坊账户


> personal.newAccount()


输入密码即可创建以太坊账户


> eth.accounts


["0x15e504a51e91ee6250412e595a00b49b9d4cab1d"]


账户创建成功!




将该地址复制到genesis.json的alloc参数中。




## 创建联盟链节点


然后将genesis.json文件和testNet文件夹复制传输到另外虚拟机中,并将testNet重命名为testNet1。接下来使用以下命令创建联盟链节点。


> geth --datadir ./testNet1 init ./genesis.json






## 搭建联盟链网络


### 获取完整节点地址


在每台机器上完成联盟链节点初始化配置之后,接下来需要将各个节点连接起来。首先要确认网络连通并且各机器的防火墙已正确配置,Geth所使用的端口正常开放(Geth常用端口有8545、30303等),然后在每个节点上使用以下命令启动Geth并获取节点的地址。


> geth --datadir ./testNet1 --networdid 110 console


然后输入:


> admin.nodeInfo.enode


enode返回的节点信息格式如下,包含节点的公钥地址和Geth端口号(默认为30303)。


"enode://8f3333a83d31763a36ec9fbb0a402a5473a409b0b3fe43d32f65c7d6619e52842d4e1678306e670f74a03c1af914ab9ef0ef3d3fda207e4828f09b850398239b@[::]:30303"




将其中的“[::]”部分替换为该机器的公网IP地址,即可得到该节点的完整地址。


### 创建静态节点文件




在任一节点的.\testNet\geth 目录下创建静态节点文件static-nodes.json,并写入其他节点的完整地址信息,格式如下:




[


"enode://< node1 public key >@< node1 IP address >:< node1 port >",


"enode://< node2 public key >@< node2 IP address >:< node2 port >",


]


在每个节点的机器上使用以下命令启动Geth并查看已连接上的其他节点信息。其中,datadir参数为联盟链的数据存储目录,每次启动时必须指定,否则默认使用公有链数据存储目录,即连接到以太坊公有链上;networkid参数为所连接的网络编号,这一编号需与创世区块文件中的chainId参数一致。如果初始化过程正确且网络状况正常,各节点Geth客户端启动后会按照 __静态节点文件__中的节点地址自动搜索连接其他节点。


> admin.peers


如果其他节点仍未连接上,可以使用动态的方法添加节点。




> admin.addPeer("enode://< node public key >@< node IP address >:< node port >")




节点相互连接之后就完成了联盟链网络的搭建。




## 测试联盟链




首先使用以下命令开启一个节点进行挖矿,其中etherbase参数为指定挖矿所得的以太币收益账户,这里的以太币只能在该联盟链的账户中使用,与公有链上的以太币是完全分隔开的; miner.start的参数为指定的挖矿线程数,由于联盟链挖矿难度低,只需开启一条线程即可。


> eth.setEtherbase(eth.accounts[0])
> miner.start(2)




如果要停止挖矿可以使用以下命令:


> miner.stop()




由于在genesis.json中挖矿难度初始值设置很低,并且以太坊自身有自动调节挖矿难度的机制,因此在联盟链中挖矿的速度很快,消耗的算力也较低,挖矿收益账户很快就会收到很多以太币。不过需要注意的是,挖矿也需要初始化过程,在挖出第一个区块之前,节点需要用大约一分钟的时间生成一个DAG有向图,之后大约两三秒钟就能生成一个区块。




挖矿节点开启之后,在另外一个节点上输入密码解锁账户并在该账户上发送交易信息。以下示例为第二个预设账户向第三个预设账户转账 1 ether,返回该交易信息的散列值。


> personal.unlockAccount(eth.accounts[1])


> eth.sendTransaction({from:eth.accounts[1],to:eth.accounts[2],value:1*1e18})






------------------------------------------------------------------------------


本文参考<<以太坊技术详解与实战>>
-----------------------------------------------------------------------------











































本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自己动手部署以太坊联盟链 的相关文章

  • 为什么要使用零知识证明来开发跨链协议

    用户需要什么样的跨链服务 在过去的几年当中出现了各种各样的独立公链以及以太坊 Layer 2 由于在安全性 低成本 快速交易以及开发者和用户社区差异等方面 不同链都具有各自不同的优势 用户在不同链之间切换使用的行为是很常见的 比起以太坊链
  • Fisco Bcos 答疑

    问 测试8的结果 集群中有4个节点 其中宕机3个 发起一笔交易 交易失败 然后启动宕机的3个节点 还是交易失败 但如果有一笔新的交易执行 会激活上一笔交易 交易失败的那一笔 最后失败的那一笔会交易成功 这种情况下的交易原理是怎样的 答 不存
  • 以太坊系列之十五: 以太坊数据库

    以太坊数据库中都存了什么 以太坊使用的数据库是一个NOSQL数据库 是谷歌提供的开源数据leveldb 这里尝试通过分析以太坊数据库存储了什么来分析以太坊可能为我们提供哪些关于区块链的API 存储内容 NOSQL是一个key value数据
  • Gikee 大数据

    据Gikee数据显示 今日13 58分 地址 1MAhRt279uYmVC1dUxKR6dWwEULBJT34Nh 向地址 1Fc4QQu6nEc4snAe4HAb4Kryd8koH89pYk 转了34010个BTC 价值约2 17亿美元
  • 区块链应用开发(智能合约的开发和WeBASE合约IDE的使用)

    文章目录 四 智能合约的开发和WeBASE合约IDE的使用 一 实验概述 二 实验目标 三 实验环境及建议 四 实验步骤 4 1 启动Webase 4 2 智能合约开发 4 2 1 合约功能设计 4 2 2 存证合约开发 4 2 3 工厂合
  • FISCO BCOS 2.0新特性解读

    FISCO BCOS是完全开源的联盟区块链底层技术平台 由金融区块链合作联盟 深圳 简称金链盟 成立开源工作组通力打造 开源工作组成员包括博彦科技 华为 深证通 神州数码 四方精创 腾讯 微众银行 亦笔科技和越秀金科等金链盟成员机构 代码仓
  • 区块链数据的存储和更新

    目录 1 引言 2 主要流程 2 1数据库读取 2 1 1 从数据库加载块数据 2 1 2从数据库读取账户信息 2 2 区块链数据更新与回滚 2 2 1 交易数据 2 2 2 块数据 1 引言 在第一篇文章里我们从静态的角度讲解了以太坊的数
  • 区块链数字存证平台有哪些功能模块

    区块链数字存证平台通常包括以下功能模块 数字存证 将数字文件的哈希值存储到区块链上 确保文件的完整性和不可篡改性 时间戳 记录数字文件的创建时间和存证时间 确保存证的时效性和证据的可信度 鉴定证书 提供数字文件的鉴定证书 证明文件的真实性和
  • 区块链+物联网 BOT

    不可否认 我们的一只脚已经迈入万物智联时代 但另一只脚迈入还存在一定的阻碍 区块链技术的出现将会促进这一进程的发展 智能音响 主人你好 我是小Q 现在是早上08点29分 上班时间要到咯 智能门锁 主人你摔疼我了 你总是这样匆忙 下次赶紧麻溜
  • 圆石说│彭一鸣:运用区块链技术赋能实体旅游产业;微软开放6万项专利包括一个开源区块链项目……

    智联招聘 区块链岗位需求主要集中在一线和新一线城市 智联招聘报告显示 从目前区块链职位的城市分布来看 该领域的岗位需求主要集中在一线和新一线城市中 其中 北京 上海和深圳位于第一梯队 职位占比分别达到24 20 和10 杭州 广州和成都紧随
  • 自己动手部署以太坊联盟链

    一个区块链学习项目 GitHub https github com xianfeng92 Love Ethereum 假设已经在Ubunbu 14 04 LTS上安装好了以太坊客户端Geth 使用Geth部署以太坊联盟链 以太坊Geth客户
  • 近千万EOS被盗事件回顾,大家请保护好自己的EOS私钥

    最近有伙伴被盗了价值近千万的EOS 于是查看了这次被盗活动账号记录 这次分享出来 一是有可能大家有线索 二是也让大家意识到数字货币私钥安全的重要性 事件回顾 受害人在7 9号被偷盗人通过update auth更换了账号授权公私钥 紧接着被转
  • 区块链中的哈希算法

    区块链中的密码学 密码学在区块链中的应用主要有两个 哈希算法与非对称加密算法 这次主要对哈希算法进行详细的说明 哈希算法 哈希算法的特点有 1 输入可以为任意大小的字符串 2 产生固定大小的输出 3 可以在合理的时间内算出输出值 若要满足密
  • 波场TRON将致力于推动各方合作打击恐怖主义融资

    随着加密行业的蓬勃发展 新的挑战也接踵而至 近期 有外媒报道称 哈马斯等美国认定的国际恐怖组织涉通过波场TRON进行融资活动 在这场风波中 区块链项目波场TRON似乎成为了质疑的焦点 然而 当我们深入了解事实真相时 或许会发现事情并非传言中
  • 新加坡社区领袖卓顺发的荣誉与大爱精神

    2023年11月24日 善济医社义务执行主席卓顺发太平绅士JP BBM L PVPA受邀出席内政部主办的答谢活动2023 主宾为内政部长兼律政部长尚穆根先生 Mr K Shanmugam 2018年起 卓顺发受委为太平绅士后 应内政部邀请
  • 凌晨!比特币突破4万美元,本轮上涨分析与未来展望!

    比特币在上周五 1日 成功突破38000美元大关后 就持续震荡走高 在今晨06 30左右 更是一举突破4万大关 最高来到41750美元 再度刷下2023年新高 以太坊 ETH 在差不多同样时间 最高来到2265美元 刷新年内新高 近24小时
  • 工业互联网会是制造业数字化发展的未来吗?

    新工业革命正逐步形成 你认为工业互联网会是制造业数字化发展的未来吗 从这几年的工业互联网发展政策措施 就能看到答案 早在近三年前 工业互联网创新发展行动计划 2021 2023年 就提出了五方面 11项重点行动和10大重点工程 着力解决工业
  • 在区块链中看CHAT的独特见解

    问CHAT 谈谈对区块链以及区块链金融的理解 CHAT回复 区块链是一种去中心化的分布式数据库技术 这种技术通过加密算法 使数据在网络中传输和存储的过程变得更加安全可靠 区块链的出现引领了存储 交易等形式的革命 改变了诸多行业的运作模式 首
  • 申泰勇教练的独家人物化身系列即将登陆 The Sandbox

    申泰勇 Shin Tae yong 教练是足球界的传奇人物 他来到 The Sandbox 推出了自己的专属人物化身系列 作为前 K 联赛中场球员和印尼队取得历史性成就的幕后教练 他的传奇经历现在已经影响到了虚拟世界 向过去 现在和未来致敬
  • 你的服务器还安全吗?用户数据是否面临泄露风险?

    一系列严重的网络安全事件引起了广泛关注 多家知名公司的服务器遭到黑客挟持 用户的个人数据和敏感信息面临泄露的风险 这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性 提醒着企业和个人加强对网络安全的重视 一 入侵案例 1 1 蔚来数据泄露 1

随机推荐

  • 电路设计相关

    本人才疏学浅 孤陋寡闻 下文若有不当之处 还请赐教 1 一些概念 施密特触发器 施密特触发器采用电位触发方式 其状态由输入信号电位维持 对于负向递减和正向递增两种不同变化方向的输入信号 施密特触发器有不同的阈值电压 对于标准施密特触发器 当
  • 天眼使用指南--分析平台

    天眼分析平台 提供全面的溯源分析能力 涵盖图中模块 负责存储日志 分为三类 告警日志 告警日志 来自探针和沙箱的告警 探针的告警可以记录双向完整对话 如果网络流量中没有恶意信息 就会储存一些关键信息 如http请求部分状态码 tcp上下前一
  • 用python批量插入clickhouse

    用python批量插入clickhouse 以下是一个示例代码 演示了如何使用clickhouse driver模块实现批量插入和分布式查询 import clickhouse driver import random connect to
  • C语言函数调用过程

    文 读书笔记 C语言函数调用过程 c legendmohe 2015年07月12日发布 推荐 0 推荐 收藏 0 收藏 392 浏览 本文是 老码识途 第一章的读书笔记 函数调用 例子代码如下所示 int Add int x int y i
  • 什么是参数模型(LR)与非参数模型(SVM)

    什么是参数模型 LR 与非参数模型 SVM 在统计学中 参数模型通常假设总体 随机变量 服从某一个分布 该分布由一些参数确定 比如正太分布由均值和方差确定 在此基础上构建的模型称为参数模型 非参数模型对于总体的分布不做任何假设 只是知道总体
  • jQuery Validate验证框架详解

    jQuery校验官网地址 http bassistance de jquery plugins jquery plugin validation 一 导入js库 注 返回web项目的根路径 二 默认校验规则 1 required true
  • 测试大姐趁我下班点又提了个bug!前端你咋多个options请求?

    测试大姐提了个bug 为什么你多了个options请求 1 下班前的寂静 刚准备下班呢 测试大姐又给我提个bug 你看我这就操作了一次 network里咋有两个请求 我心一惊 不可能啊 我代码明明就调用一次后端接口 咋可能两个请求 打开她的
  • floor(),ceil()函数

    地板 天花板函数 均包含在math h中 意思分别为 返回不大于形参的最小整数和不小于形参的最大整数 include
  • Git冲突导致的Please commit your changes or stash them before you merge

    Git冲突导致的Please commit your changes or stash them before you merge 用git pull来更新代码的时候 遇到了下面的问题 error Your local changes to
  • js检查数据类型的方法

    1 typeof 这是最常用的基本数据类型检测的方法 console log typeof string console log typeof 1 number console log typeof true boolean console
  • spring boot最新教程(五):404错误500错误统一处理

    Spring Boot默认使用嵌入式Tomcat 默认没有页面来处理404等常见错误 因此 为了给用户最佳的使用体验 404 500等常见错误需要我们自定义页面来处理 我们需要用org springframework boot contex
  • 威动服务器如何添加文件夹,威动服务器如何设置

    威动服务器如何设置 内容精选 换一换 华为云提供两种连接方式通过SQL Server客户端连接实例 非SSL连接和SSL连接 其中 SSL连接实现了数据加密功能 具有更高的安全性 安装SQL Server客户端请参见如何安装SQL Serv
  • 如何使用 Docker 部署 Caddy Web 服务器

    Caddy是一种流行的现代 Web 服务器 专为高性能和内存安全而设计 它是用 Go 编写的 运行时没有依赖关系 内置支持使用 Markdown 进行静态站点渲染 并提供自动 HTTPS Caddy 专注于提供简单的服务器管理体验 默认情况
  • Vue + Element UI 前端篇(十一):第三方图标库

    Vue Element UI 实现权限管理系统 前端篇 十一 第三方图标库 使用第三方图标库 用过Elment的同鞋都知道 Element UI提供的字体图符少之又少 实在是不够用啊 幸好现在有不少丰富的第三方图标库可用 引入也不会很麻烦
  • HDFS常用命令

    1 hdfs dfs与hadoop fs 命令的形式 hdfs dfs linux命令 这与linux中命令操作是一样的 hadoop fs等同于hdfs dfs 2 Hadoop命令 hadoop classpath 打印当前hadoop
  • 程序员的自我修养(九)虚拟内存空间

    进程的虚拟地址 每个程序被运行起来以后 它将拥有自己独立的虚拟地址空间 这个虚拟地址空间的大小由计算机的硬件平台决定 具体的说是由CPU的位数决定 对于Linux系统来说 它的进程虚拟空间的划分 1GB 操作系统 3GB 进程 对于Wind
  • derby mysql 性能_derby的三大缺陷

    derby数据库的嵌入式特性让人很流口水 但是 我刚打算将其用进我的项目中 却发现它没有好的分页查询方式 每次都返回所有符合条件的记录 oracle有rownum mysql有limit sqlserver好歹也有个top 汗啊汗 看来不爽
  • 【ROS入门学习01

    ROS命令行工具的使用 可以配合古月居的ROS入门教程来学习实践 文章目录 ROS命令行工具的使用 一 roscore 二 rosrun 三 rqt graph 四 rosnode 五 rostopic 六 rosmsg 七 rosserv
  • 客观面试题--35.Mybatis和hibernate的优缺点?

    Hibernate Hibernate 是当前最流行的ORM框架 对数据库结构提供了较为完整的封装 Mybatis Mybatis同样也是非常流行的ORM框架 主要着力点在于POJO 与SQL之间的映射关系 其次具体从几个方面说一下两者的区
  • 自己动手部署以太坊联盟链

    一个区块链学习项目 GitHub https github com xianfeng92 Love Ethereum 假设已经在Ubunbu 14 04 LTS上安装好了以太坊客户端Geth 使用Geth部署以太坊联盟链 以太坊Geth客户