Ubuntu搭建联盟链,实现节点之间数据同步

  • 安装go环境

  • 从参考链接选择Linux版本的go的安装包 

  • 使用命令  mv go(Tab补全)/usr/local  移动go安装包到/usr/local目录下
  • 使用命令解压  sudo tar -xvzf go(Tab补全) 
  • 配置环境 
    • sudo gedit ~/.profile  
    • export PATH=$PATH:/usr/local/go/bin
    • 激活生效  source ~/.profile
  • 验证 go version 如果输出结果类似 go version go1.14.2 linux/amd64 表示安装成功

参考链接

  • 如何在 Ubuntu 20.04 上安装 Go - 云+社区 - 腾讯云
  • Downloads - go.dev  官网下载安装包

安装以太坊Geth

  • 安装之前需要确保已经安装了git
    • sudo apt-get update
    • sudo apt-get install git
    • 查看安装是否成功
      • git --version
  • 安装Geth
    • sudo apt-get install software-properties-common
    • sudo add-apt-repository -y ppa:ethereum/ethereum
    • sudo apt-get update
    • sudo apt-get install ethereum
    • 查看安装是否成功
      • geth --help

参考链接

  • Ubuntu18.04下安装geth_KaryDean的博客-CSDN博客

搭建联盟链

  • 联盟链使用私有化部署,只有使用同一个创世区块才可以加入到同一个组织内部,创世区块信息写在一个json格式的配置文件中
  • 使用genesis.json 对其进行命名
  • 前提操作
  • genesis.json文件内容如下,直接拷贝复制即可
{"config": {"chainId": 666999, "homesteadBlock": 0,"eip150Block": 0,"eip155Block": 0,"eip158Block": 0},"alloc"      : {},"coinbase"   : "0x0000000000000000000000000000000000000000","difficulty" : "0x20000","extraData"  : "","gasLimit"   : "0x2fefd8","nonce"      : "0x0000000000000042","mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000","parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000","timestamp"  : "0x00"
}
  • 参数解释

  • 注意事项,我参考好多文章都缺失eip150Block:0这一句,这会出现错误。
  • 报错情况为Failed to wirte genesis block:unsupported ordering

新的方案

  • 在/home/chy-cpabe/Test_chain_ipfs/文件夹下面创建chain-first和chain-second两个文件夹
  • 将这两个节点组合在一起构成联盟链
  • 在chain-first和chain-second文件夹下面各自创建chaindata文件夹用于数据存储,和存储同一份genesis.json文件,将chainid设置为一样的
  • 分别进行初始化操作
  • –datadir:指定区块链数据的存储位置;这个需要大家根据实际的情况进行调整,进行自己路径的替换
  • --networkid:指定创世脚本中的chainId
  •  启动运行  初始化的命令
geth --datadir "/home/chy-cpabe/Test_chain_ipfs/chain-first/chaindata" init "/home/chy-cpabe/Test_chain_ipfs/chain-first/genesis.json"
geth --datadir "/home/chy-cpabe/Test_chain_ipfs/chain-second/chaindata" --networkid 666999 --port 30306 console 2>output.log

  • 启动节点
geth --datadir "/home/chy-cpabe/Test_chain_ipfs/chain-first/chaindata" --networkid 666999 --port 30303 console 2>output.log
geth --datadir "/home/chy-cpabe/Test_chain_ipfs/chain-second/chaindata" --networkid 666999 --port 30306 console 2>output.log

  • 查看进程
  • 使用命令 ps aux | grep "geth"  查看当前的geth进程
  • 使用命令 sudo kill -9 进程ID即可杀死进程

 为两个节点都进行用户的创建

  • personal.newAccount():创建账户
  • eth.accounts:枚举系统中的账户;

  • admin.peers  查看节点的peers的情况 
  • 通过分享enode地址的方式来让两个节点建立链接  使用命令 admin.nodeInfo.enode
  • 通过上面命令,我们获得了节点的encode信息。encode信息主要用于连接到不同节点,在这些不同的节点它们能够分享交易和成功挖掘信息。

 联盟链互通

  • 使用命令admin.addPeer添加分享enode地址的方式来让两个节点建立链接 
  •  admin.addPeer("enode://5dac7e1cbe892387f5ff403b5b79f4235789ba322fbc69f128ff5e5ef78c1475440e48444a6a39582d3742124647877dd7c4b75eceb746917b3cb0de433e5c97@127.0.0.1:30306")
  • 返回true表示链接成功
  • 在两个节点的终端输入 admin.peers 查看互联的节点信息,具体输入内容如下

交互式执行环境

  • 这是一个交互式的 JavaScript 执行环境,在这里面可以执行 JavaScript 代码,其中 > 是命令提示符。在这个环境里也内置了一些用来操作以太坊的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:
  • eth:包含一些跟操作区块链相关的方法;
  • net:包含一些查看p2p网络状态的方法;
  • admin:包含一些与管理节点相关的方法;
  • miner:包含启动和停止挖矿的一些方法;
  • personal:主要包含一些管理账户的方法;
  • txpool:包含一些查看交易内存池的方法;
  • web3:包含了以上对象,还包含一些单位换算的方法。

 常用命令:

  • personal.newAccount():创建账户;
  • personal.unlockAccount():解锁账户;
  • eth.accounts:枚举系统中的账户;
  • eth.getBalance():查看账户余额,返回值的单位是 Wei(Wei 是以太坊中最小货币面额单位,类似比特币中的聪,1 ether = 10^18 Wei);
  • eth.blockNumber:列出区块总数;
  • eth.getTransaction():获取交易;
  • eth.getBlock():获取区块;
  • miner.start():开始挖矿;
  • miner.stop():停止挖矿;
  • web3.fromWei():Wei 换算成以太币;
  • web3.toWei():以太币换算成 Wei;
  • txpool.status:交易池中的状态;
  • admin.addPeer():连接到其他节点;

获取完整节点地址

  • 但是执行这个命令之后, 无法进入JavaScript console终端,使用其余命令进入终端

 

参考链接

  • 区块链以太坊学习笔记_xpj55975的博客-CSDN博客
  • https://www.i4k.xyz/article/qq_42532598/109333344
  • 以太坊之Metamask钱包(Metamask简介,安装,使用,导入账户,挖矿,转账)_Rose J 的博客-程序员宅基地_metamask - 程序员宅基地

参考链接

  • 以太坊如何搭建私有连联盟链_程序新视界-CSDN博客_以太坊搭建联盟链教程
  • 以太坊搭建联盟链详细教程_weixin_34183910的博客-CSDN博客
  • 以太坊联盟链-多节点私链搭建手册【附源码】_暗黑魔君_51CTO博客
  • 自己动手部署以太坊联盟链 - 掘金
  • https://www.i4k.xyz/article/qq_42532598/109333344
  • 以太坊私有链 使用dev模式_CHYabc123456hh的博客-CSDN博客
  • 基于Mac环境搭建以太坊私有区块链进行挖矿模拟_CHYabc123456hh的博客-CSDN博客_mac挖矿eth
  • https://github.com/xianfeng92/Love-Ethereum/blob/master/notes/%E8%87%AA%E5%B7%B1%E5%8A%A8%E6%89%8B%E9%83%A8%E7%BD%B2%E4%BB%A5%E5%A4%AA%E5%9D%8A%E8%81%94%E7%9B%9F%E9%93%BE.md
请使用手机"扫一扫"x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火狐浏览器添加MetaMask钱包和本地开启私有链开发

火狐浏览器添加MetaMask钱包 因为对其配置了代理工具,所以直接使用谷歌引擎搜索MetaMask钱包即可第一次使用,立即开始设置 点击我同意,进行密码的创建 牢记助记词,助记词及其关键,将其存储在安全的地方 区块链-开发 M…

CLion导入用户自己的lib和头文件

文件的层级结构如上面所示对应的CMakeLists.txt配置文件如下面所示 cmake_minimum_required(VERSION 3.15) project(smart_shap)set(CMAKE_CXX_STANDARD 14)add_executable(${PROJECT_NAME} main.cpp )#target_link_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}…

东芝移动硬盘驱动_传输数据不用等,高速移动硬盘数据线畅享快传体验

不管你是设计师,摄影师亦或是办公一族,几乎都能用到电脑,而电脑里的文件如果很多的话,为了安全起见都会备份一份数据,以免电脑储存容量过大导致电脑卡顿。另一方面,为了保护数据防止丢失造成不必要的麻烦&a…

使用国密浏览器和使用Wireshark进行国密抓包

使用的软件 信密浏览器 密信浏览器发布Windows正式版 - 密信技术国密Wireshark GMSSL - 国密SSL实验室支持国密算法的网站 https://www.wotrus.com/ 流程操作 打开windows终端,使用命令ping沃通网站,找到这个网站的ip地址 ping www.wotrus.com打…

django框架学习文档_Python四大主流网络编程框架,你知道么?

高并发处理框架—— TornadoTornado 是使用 Python 编写的一个强大的可扩展的 Web 服务器。它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。Tornado 作为 FriendFeed 网站的基础框架&#xff0c…

VS Studio报错无法解析的外部符号 _imp_XXXXXXXXX

出现字符_imp,说明不是真正的静态库,而是某个动态库的导入库,导入函数和自己不同名,所以加了字符_imp。比如说_imp_GetUserNameA就是GetUserNameA函数。会报这种错误的原因: 1、说明注册表函数没有相关的lib库&#xf…

hashmap put过程_阿里十年技术大咖,教你如何分析1.7中HashMap死循环

在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,HashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry…

Socket代码实现服务端 和 客户端之间通信

服务端代码 // Socket_connection.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #ifndef UNICODE #define UNICODE #endif#define WIN32_LEAN_AND_MEAN#include <winsock2.h> #include <Ws2tcpip.h> #include <stdio.h> #incl…

python综合管理系统_Python-20 (信息系统-框架/循环/增删/综合应用)

# 1. 目标 这里我们通过简单案例的综合应用&#xff0c;了解框架的概念&#xff0c;感受循环、字符字典数据处理等基础点的应用场景 # 2. 框架 搭建一个人员信息管理系统的简单框架&#xff0c;初步感受框架的概念。 1> 主程序 -- cards_mian.py程序的主功能代码&…

本地搭建server和客户端使用端口进行数据通信,使用Wireshark抓取127.0.0.1环回地址并分析通信数据

本地搭建服务端和客户端 参考网址 Socket代码实现服务端 和 客户端之间通信_CHYabc123456hh的博客-CSDN博客server指定通信的端口是 5099client 使用的端口是动态变化的&#xff0c;因此在wireshark里面需要设定的抓取端口是 5099 使用wireshark开启抓包 参考链接 [tcp] Wir…

double operator[](int i)_java中double类型精度丢失问题及解决方法

原文链接&#xff1a;https://blog.csdn.net/yacolspace/article/details/78287394double类型数据加减操作精度丢失问题今天在项目中用到double类型数据加减运算时&#xff0c;遇到了一个奇怪的问题&#xff0c;比如120.2300.03&#xff0c;理论上结果应该是321.23&#xff0c;…

验证客户端和服务端可以传输经SM4加密的密文数据,从而验证发送数据已使用服务器密码机进行SM4加密,而不是随便的字符串乱码

前提操作 搭建客户端和服务端 Socket代码实现服务端 和 客户端之间通信_CHYabc123456hh的博客-CSDN博客使用wireshark进行数据的监听和测试https://blog.csdn.net/CHYabc123456hh/article/details/121929288 结论验证 使用在线SM4加密&#xff0c;输入明文 和 选择模式,生成…

Socket编程 涵盖代码和函数参数介绍

Socket是针对端系统&#xff0c;也就是用户主机上开发程序&#xff0c;不涉及网络设备(交换机、路由器)独立于网卡驱动层之上&#xff0c;不涉及硬件&#xff0c;即基于Packet Driver编程端&#xff1a;是指通信双方两台电脑 应用编程接口API 也就是两端 应用层内部的应用进程之…

springcloud阿里巴巴五大组件_如何无缝迁移 SpringCloud/Dubbo 应用到 Serverless 架构

简介&#xff1a; 本文分为三部分来介绍&#xff0c;分别介绍微服务应用迁移到 SAE 的优势&#xff0c;如何迁移 SpringCloud/Dubbo 应用到 SAE 上&#xff0c;以及针对 SpringCloud 应用迁移的实践演示。背景通过前面几节课程的学习&#xff0c;相信大家对于 SAE 平台已经有了…

frame中src怎么设置成一个变量_Go 语言设计哲学之七:变量声明须一致

Go 语言&#xff0c;使用变量之前需要先进行变量的声明。var s string “Golang"n : 666Go 语言有两类变量包级别(package varible)&#xff1a;在 package 级别可见的变量。如果是导出变量&#xff0c;该变量也可以被视为全局变量&#xff1b;局部变量(local varible)&a…

getdevicecaps在哪个头文件里_一招定胜负,while (true) 和 for (;;) 到底哪个更快

在JDK8u的jdk项目下做个很粗略的搜索&#xff1a;mymbp:/Users/me/workspace/jdk8u/jdk/src$ egrep -nr "for (s?;s?;" . | wc -l 369mymbp:/Users/me/workspace/jdk8u/jdk/src$ egrep -nr "while (true" . | wc -l 323并没有差多少。其次&#…

SM4 ECB加密模式 数据对比试验论证

程序如下 开启服务器密码机&#xff0c;调用SM4加密函数&#xff0c;需要注意的是程序输入的数据全部使用Hex 十六进制的格式 Key IV Data IV 00000000000000000000000000000000Source(加密数据) char input_date[] {a,a,a,a,.......} Ascll编码 需要转16进制input_data …

二分法查找c语言程序_C语言的那些经典程序 第十四期

戳“在看”一起来充电吧!C语言的那些经典程序 第十四期本期小C给大家带来三个用C语言解决实际问题的典例。如果全都理解&#xff0c;相信肯定能给大家带来收获&#xff01;接下来让我们看看是哪些程序吧&#xff01;1字符查找源程序&#xff1a;运行结果&#xff1a;程序分析:该…

centos网络隔一段时间就断_计算机网络总结

POST跟GET的区别作用GET用于获取资源&#xff0c;而POST用于传输实体参数GET的参数以字符串的格式出现在URL中&#xff0c;而POST的参数存储在请求实体中。因为URL只支持ASCII码&#xff0c;故GET的参数如果存在中文等字符就需要先进行编码&#xff0c;POST参考支持标准字符集。…