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.pswp.cn/news/446166.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446166.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446166.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于python語言的編程模式、哪個說法正確_測驗1: Python基本語法元素 (第1周) 單選題+程序題...

第1章測驗,共10道單選題和2道編程題,限答1次 單選題 1.Guido van Rossum正式對外發布Python版本的年份是: A.2002 B.1998 C.2008 D.1991 正確答案: D Python成功了,所以早年的開發歷史也受到關注,以下是Gui…

火狐瀏覽器添加MetaMask錢包和本地開啟私有鏈開發

火狐瀏覽器添加MetaMask錢包 因為對其配置了代理工具,所以直接使用谷歌引擎搜索MetaMask錢包即可第一次使用,立即開始設置 點擊我同意,進行密碼的創建 牢記助記詞,助記詞及其關鍵,將其存儲在安全的地方 區塊鏈-開發 M…

python賦值01_python學習筆記1-賦值與字符串 | 學步園

閱讀本學習筆記需有一定語言基礎,閑話少說,我們開始 一、賦值與數字 【簡介】 python的賦值很簡單: number 1 # 數值 number 2 2 # 支持加減乘除運算 number (1 2j) * (1 - 1j) # 支持復數的運算 二、字符串 【簡介】 str "Hello,…

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 平臺已經有了…

pythonnone用法_python中None返回值如何使用?

None是python中的特殊存在。作為函數&#xff0c;在用到返回值的經常使用。今天小編就來講講None作為函數返回值時&#xff0c;會出現的三種情況。 一、作為操作類函數的默認返回值 當某個操作類函數不需要任何返回值時&#xff0c;通常就會返回 None。同時&#xff0c;None 也…

C++ Byte轉十六進制字符串輸出

代碼 例子一 typedef std::vector<unsigned char> bytes; std::string BytesToStr(const bytes& in) {bytes::const_iterator from in.cbegin();bytes::const_iterator to in.cend();std::ostringstream oss;for (; from ! to; from)oss << std::hex <&…

frame中src怎么設置成一個變量_Go 語言設計哲學之七:變量聲明須一致

Go 語言&#xff0c;使用變量之前需要先進行變量的聲明。var s string “Golang"n : 666Go 語言有兩類變量包級別(package varible)&#xff1a;在 package 級別可見的變量。如果是導出變量&#xff0c;該變量也可以被視為全局變量&#xff1b;局部變量(local varible)&a…