安裝區塊鏈相關Geth(基于CentOS7)

注:由于版本沖突問題,請嚴格按如下介紹版本進行安裝

安裝所需資料:通過網盤分享的文件:區塊鏈_CSDN
鏈接: https://pan.baidu.com/s/1dn5xcLtwwFy90xhOWKiWyA?pwd=zgzs 提取碼: zgzs?
--來自百度網盤超級會員v6的分享

一、安裝運行Geth所需要的工具

下載并安裝Git、vim、gcc-c++、ntp組件、nodejs以及添加epel第三方安裝源。這些工具的說明如下:

git:安裝相關的組件,下載安裝各類開源代碼與工具的利器;
vim:文本編輯工具,取代vi;
gcc-c++:c/c++編譯工具,用于golang下部分c庫的編譯以及truffle組件的編譯
ntp:網絡時鐘同步組件;Ethereum的rpc網絡需要時間同步;
nodejs:ethereum前端開發JavaScript包管理軟件
epel:網絡第三方的linux安裝包源

yum update -y && yum install vim git gcc-c++ ntp epel-release nodejs -y

安裝編譯C/C++項目所需要的庫:

sudo yum install gcc gcc-gcc++ glibc-devel libstdc++-devel

二、安裝cmake3.15.2

# 下載
wget https://cmake.org/files/v3.15/cmake-3.15.2.tar.gz# 解壓
tar zxvf cmake-3.15.2.tar.gz# 移動文件夾
mv cmake-3.15.2 /usr/local/# 跳轉
cd /usr/local/cmake-3.15.2# 運行配置腳本
./bootstrap# 編譯cmake
gmake# 安裝cmake
gmake install# 配置環境變量
echo "export PATH=/usr/local/cmake-3.15.2/bin:$PATH" >> /etc/profile# 使環境變量生效
source /etc/profile# 驗證安裝
cmake --version

下載由于源問題或者網絡問題失效直接從文章開頭網盤資料中獲取Cmake3.15.2。

三、安裝Golang1.21.0

Geth使用Golang編譯的,所以需要安裝Golang。

安裝Golang,執行如下命令:

# 下載go1.21.0
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz# 解壓
tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz# 環境變量配置方法①
echo "export GOROOT=/usr/local/go" >> /etc/profile    
echo "export PATH=/usr/local/go/bin:$PATH" >> /etc/profile
## 使配置生效
source /etc/profile# 環境變量全局配置方法②
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
## 使全局配置生效
source ~/.bashrc# 驗證
go version

四、安裝geth1.9.10

由于安裝過程中存在多種關于版本沖突問題,這里不推薦通過源碼編譯go-ethereum項目進行geth的安裝。如下使用二進制文件安裝(推薦)

下載鏈接地址:Downloads | go-ethereum

或者從文章開頭網盤資料中下載geth1.9.10壓縮包。

tar -zxvf geth-linux-amd64-1.9.10-58cf5686.tar

創建軟連接,移動文件內容到 /usr/local/bin/ 目錄下(這里環境變量默認已經確定,如未指定,請自行修改 /etc/profile 文件)

# 進入geth目錄
cd geth-linux-amd64-1.9.10-58cf5686# 使用root權限創建軟鏈接
sudo ln -s $(pwd)/geth /usr/local/bin/geth# 驗證命令是否可用
geth version

五、關閉防護墻

# 查詢防火墻狀態
systemctl status firewalld

顯示正在running,關閉防護墻

# 關閉防火墻
systemctl stop firewalld# 再次查詢防火墻狀態
systemctl status firewalld

六、Geth初始化

編輯創世塊 genesis.json

# 創建文件夾
mkdir privatechain# 編輯創世塊文件 genesis.json
vim genesis.json# 文件內容:下方本地測試的chainId填寫1337
{"config": {"chainId": 1337,"homesteadBlock": 0,"eip150Block": 0,"eip155Block": 0,"eip158Block": 0,"ByzantiumBlock": 0,"constantinopleBlock": 0, "petersburgBlock": 0},"alloc": {"0xbdda794a097b41309700fdc5bdba880a7763c738": {"balance": "100"}},"coinbase": "0x0000000000000000000000000000000000000000","difficulty": "0x2","extraData": "","gasLimit": "0xffffffff","nonce": "0x0000000000000042","mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000","parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000","timestamp": "0x00"
}# init初始化,--datadir指定數據存儲目錄
geth init genesis.json --datadir ./data

啟動私鏈

geth --datadir ./data \--networkid 1337 \--port 30303 \--rpc \--rpcaddr "0.0.0.0" \--rpcport 8545 \--rpcapi 'db,net,eth,web3,personal' \--rpccorsdomain '*' \--ws \--wsaddr "0.0.0.0" \--wsport 8546 \--allow-insecure-unlock \console 2>>1.log

為啟動私鏈單獨設置腳本文件

# 編輯腳本文件
vim startPrivateChain.sh# 添加如下16行全部內容
#!/bin/bash# 啟動 Geth 私有鏈節點
geth --datadir ./data \--networkid 1337 \--port 30303 \--rpc \--rpcaddr "0.0.0.0" \--rpcport 8545 \--rpcapi 'db,net,eth,web3,personal' \--rpccorsdomain '*' \--ws \--wsaddr "0.0.0.0" \--wsport 8546 \--allow-insecure-unlock \console 2>>1.log# 給文件賦權
chmod 777 startPrivateChain.sh#啟動
./startPrivateChain.sh

初始化完成后進入data文件夾目錄,可以查詢到生成了geth與keystore文件,其中keystore為之后挖礦礦工的密碼,即私鑰,如下5c993678d3358462619906c9d5fbc93e98f1490a為某賬戶的賬戶id,需要通過解密該文件得到用戶的私鑰。

這里展示獲取私鑰的 t.py 文件代碼塊,我在挖礦前給用戶5c993678d3358462619906c9d5fbc93e98f1490a設置了密碼為123,執行如下代碼,生成用戶私鑰。

from eth_account import Account
import json# 替換為你的 keystore 文件路徑
with open("UTC--2025-06-17T03-05-18.222102348Z--5c993678d3358462619906c9d5fbc93e98f1490a") as keyfile:encrypted_key = keyfile.read()password = "123"  # 你設置的密碼private_key = Account.decrypt(encrypted_key, password)print("Private key (hex):", private_key.hex())

七、使用錢包metaMask鏈接賬戶

geth基本指令操作

#新增用戶,后面的為密碼
personal.newAccount("123")#可以查看到所有的用戶
eth.accounts#單獨查看某個用戶
eth.accounts[0]#查看錢
eth.getBalance(eth.accounts[0])#挖礦可以使coinbase對應的賬戶增加資產,可以將pending狀態的交易打包完成
#開始挖礦,轉賬交易和truffle部署合約的時候都需要挖礦才能實現
miner.start()#停止挖礦
miner.stop()##轉賬之前需要進行解鎖賬戶,from需要解鎖
personal.unlockAccount(eth.accounts[0], "123")## 執行完轉賬操作后需要進行挖礦,將交易打包進區塊中
## value后面的是轉賬金額,1表示數量,wei表示單位,表示轉了1個wei
eth.sendTransaction({from:eth.accounts[0], to: "xxxx", value: web3.toWei(1)})

通過創建的賬戶,通過步驟六中python代碼獲取到私鑰。

在MetaMask中新建網絡連接

添加自定義網絡,ip自行修改,鏈id為1337,如果之前鏈id不為1337,需要刪除初始化后生成目錄文件,重新修改創世塊genesis.json文件中chainId。

創建成功后,通過私鑰引入賬戶

導入即可

八、補充:挖礦+交易

# 開始挖礦
# start的參數表示挖礦使用的線程數,若不寫表示使用最大線程數。返回true或null表示執行成功
miner.start()# 停止挖礦
miner.stop()

首次啟動挖礦會先生成挖礦所需的 DAG 文件,這個過程有點慢,等進度達到 100% 后,就會開始挖礦。

注:進行合約交易過程中,要使私鏈處于挖礦狀態下

其他交易處理請參考之前關于區塊鏈的相關博客(該博文使用私鏈替換測試鏈Ganache)

區塊鏈使用連接工具demo測試MetaMask、Remix和Ganache-CSDN博客

如下為本博文參考相關內容鏈接(以下內容較老,未介紹現如今的版本沖突問題,僅供參考)

區塊鏈geth的創建,通過truffle把合約部署到geth上,多個節點的同步----ubuntu_geth怎么輕節點同步 國內能用的enode-CSDN博客

CentOS7下安裝Geth,搭建以太坊私有鏈_centos7安裝geth,搭建以太坊私有鏈-CSDN博客

在Ubuntu下使用Geth搭建自己的以太坊私有鏈_ubantu geth miner.start-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84670.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84670.shtml

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

相關文章

系統分析師——計算機系統基礎

系統分析師——計算機系統基礎 引言 作為系統分析師學習的第一節課,計算機系統基礎部分構建了整個知識體系的核心框架。本文將圍繞計算機系統的層次結構、硬件組成、軟件分類以及關鍵技術點進行詳細總結,為后續深入學習奠定基礎。 本節學習內容如下圖&…

JS常用設計模式匯總

1、基于類的單例模式 // PageManager.js class PageManager {constructor(config) {if (!PageManager.instance) {this.config config;this.initialized false;PageManager.instance this;this.init();}return PageManager.instance;}init() {if (this.initialized) return…

邁向軟件開發 T 型人才之路:構建多元能力體系

在軟件開發的廣袤天地里,T 型人才備受矚目。這類人才猶如具備強大能量的 “多面手”,既有深入專精的技術能力,又有廣泛多元的知識與技能儲備,能夠從容應對復雜多變的項目需求,引領行業創新發展。于當今社會而言&#x…

SALMONN-omni論文閱讀

論文鏈接 項目鏈接 名詞理解: backchanneling: 指的是聽話人在不打斷說話人的情況下,用簡短的語氣詞或動作表示“我在聽”“我理解了”的反饋。 常見示例包括: “嗯哼”(“uh-huh”) “對的”&#xff08…

區塊鏈:什么是DeFi?

DeFi(去中心化金融,Decentralized Finance) 是一種基于區塊鏈技術的金融生態系統,旨在通過去中心化的方式提供傳統金融服務(如借貸、交易、儲蓄等),無需依賴銀行、經紀商等中介機構。DeFi主要構…

idea編譯器使用git拉取、提交非常慢的原因和解決方案

前言 最近在公司換了一個電腦,但是發現這個電腦用idea編譯器使用git拉取、提交各種操作非常慢,有時候需要等10分鐘左右,這明顯是不對勁的,說明電腦的某些環境影響到git和idea之間的整合了。 目錄 在idea拉取代碼非常慢的原因 解決方案 在idea拉取代碼非常慢的原因 經過排查…

C語言變量的奇妙世界:探秘作用域

資料合集下載鏈接: ??https://pan.quark.cn/s/472bbdfcd014?? 在C語言的編程世界里,變量是我們存儲和操作數據的基礎。然而,僅僅知道如何定義和使用變量是遠遠不夠的。一個更深層次的理解,在于掌握變量的“作用域”——也就是變量在程序中可以被訪問和使用的范圍。這就…

恒流源和直流穩壓電源 電路

目錄 前言一、恒流源電路1.低端反饋2.低端反饋注意事項注意1:電阻Rx注意2:三極管和運放的限制 3.高端反饋注意:自激振蕩方案二 二、直流穩壓電源電流1.帶反饋2.不帶反饋3.區別 前言 基礎知識可以看個人筆記:個人筆記 一、恒流源…

那些年,曾經輝煌過的數據庫

滾滾長江東逝水,浪花淘盡英雄! 數據庫的演進史,正是這樣一部“英雄迭代”的壯闊史詩。從早期數據模型的拓荒者,到關系型數據庫的商業巨頭;從桌面應用的普及者,再到開源與大數據時代的弄潮兒;每…

2D曲線點云平滑去噪

2D曲線點云,含許多噪聲,采用類似移動最小二乘的方法(MLS)分段擬合拋物線并投影至拋物線,進行點云平滑去噪。 更通俗的說法是讓有一定寬度的曲線點云,變成一條細曲線上的點。 分兩種情況進行討論: 1&#…

【平面波導外腔激光器專題系列】用于精密測量的平面波導外腔激光器特性

----翻譯自Kenji Numata等人的文章 摘要 1542 nm平面波導外腔激光器PW-ECL具有足夠低的噪聲非常適合精密測量應用。與 0.1mHz至100kHz 之間,其頻率和強度噪聲與非平面環形振蕩器 NPRO和光纖激光器相當或更好。通過將 PW-ECL 的頻率穩定在乙炔(13C2H2&a…

文件時間修改器

文件時間修改器是一款幫助用戶修改文件創建時間的軟件,支持毫秒級時間的修改,包括文件的創建時間、修改時間、訪問時間等時間都支持修改,可以批量處理文件。 飛貓云下載 | 備用下載1 |備用下載2 基本簡介 本軟件主要為批量修改文件的創建時…

倉頡語言實戰:MQTT物聯網開發

目錄 引言 mqtt4cj庫的使用 申請倉頡編程語言內測 下載STDX 測試程序 結束語 引言 最近一直在學習倉頡語言,由于我對物聯網比較感興趣,自然想到寫一個MQTT的程序,好在找到了mqtt4cj庫,今天分享一下學習心得。 mqtt4cj庫的…

OpenCV CUDA模塊設備層-----用于在 CUDA 核函數中訪問紋理數據的一個封裝類TexturePtr()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 TexturePtr<T, R> 是 OpenCV 的 opencv_cudev 模塊中用于在 CUDA 核函數中訪問紋理數據的一個封裝類。它主要用于將一個已創建好的 cudaTe…

Spring Boot的自動裝配和自動配置

Spring Boot的自動裝配&#xff08;Auto Wiring&#xff09;和自動配置&#xff08;Auto Configuration&#xff09;是兩個不同的概念&#xff0c;它們在Spring框架中各自有不同的作用和用途。下面我將詳細解釋它們的區別和聯系。 自動裝配&#xff08;Auto Wiring&#xff09…

如何用 vue-office 快速搭建文檔在線預覽服務

1. 什么是 vue-office 1.1 vue-office 簡介 vue-office 是一個基于 Vue 的組件庫,用于在 Web 應用中快速集成 Office 文檔的在線預覽功能。它支持 Word、Excel 和 PowerPoint 等多種格式,并提供了簡潔的 API 接口和豐富的自定義選項。 1.2 支持的文檔類型與核心特性 支持的…

Python爬蟲(六):Scrapy框架

"Scrapy到底該怎么學&#xff1f;"今天&#xff0c;我將用這篇萬字長文&#xff0c;帶你從零開始掌握Scrapy框架的核心用法&#xff0c;并分享我在實際項目中的實戰經驗&#xff01;建議收藏?&#xff01; 一、Scrapy簡介&#xff1a;為什么選擇它&#xff1f; 1.…

Linux中關閉swap分區

在 Linux 系統中關閉 swap 分區&#xff08;或交換文件&#xff09;的步驟如下&#xff0c;請務必在操作前保存所有數據&#xff0c;以免丟失&#xff1a; &#x1f4cc; 完整操作步驟&#xff1a; 1. 查看當前 swap 使用情況 free -h swapon --show # 查看活躍的 swap 設…

RPGMZ游戲引擎之如何設計每小時開啟一次的副本

本文知識點 1. 獲取時間 2. 時間格式要正確 3. 事件內如何設計 正文開始 1. 獲取時間 首先獲取當前時間 然后保存在 事件內的變量里面 后需要判斷時間是否相等 function 獲取當前日期(){const now new Date();return now.toISOString();}; 2. 時間格式要正確 now.toI…

學習路之uniapp--uniapp擴展uni-ui

這里寫目錄標題 一、新建項目二、下載導入插件三、直接創建uni-ui項目 一、新建項目 二、下載導入插件 三、直接創建uni-ui項目 創建uniapp項目時&#xff0c;直接創建uni-ui項目