以太坊性能測試教程

2022-11-22 05:11:55

本篇我們主要為大家介紹如何使用HyperBench去測試以太坊

快速开始

前置要求

編譯HyperBench需要go版本為1.11及以上版本,使用下方wget命令即可下載go官網安裝包:

wget https://golang.google.cn/dl/go1.17.7.linux-amd64.tar.gz

下載完成後將壓縮包解壓至/usr/local/;

tar -zxvf go1.17.7.linux-amd64.tar.gz -C /usr/local

解壓完成後 vim 打开/etc/profile 文件,添加go相關環境變量;

vim /etc/profileexport GOROOT=/usr/local/go export GOPATH=/usr/local/gopathexport PATH=$PATH:$GOROOT/bin:$GOPATH/bin

添加完成後 使用source命令使變量配置生效;

source /etc/profile          --使變量配置生效    go version                   --查看golang的版本#使用go version命令查看go是否安裝完成go version go1.17.7 linux/amd64        --打印輸出

完成go環境配置後,首先使用go env命令為go添加一個國內的代理,這裏是為了使go在安裝一些依賴時可以更快的安裝完成;

go env -w GOPROXY=https://goproxy.cn,direct

在編譯HyperBench之前需要使用go get命令安裝packr二進制,packr會在編譯HyperBench時使用到,所以需要提前安裝好;

go get -u github.com/gobuffalo/packr/v2/packr2

編譯安裝HyperBench

環境准備完成,那么接下來為大家介紹HyperBench源代碼的clone以及編譯

首先HyperBench源碼可以通過github中HyperBench开源項目庫clone到本地,項目可以使用https://github.com/hyperbench 入,項目中可以看到三個庫,本次視頻使用到的庫為hyperbench、hyperbench-plugins,進入到HyperBench倉庫,在code菜單中選擇https,點擊地址右側復制按鈕。

接下來开始clone與編譯HyperBench:

#首先創建一個hyperbench的運行目錄並進入到目錄mkdir /opt/hyperbench cd /opt/hyperbench#然後使用git命令將hyperbench源碼clone到本地#這邊為了方便演示所有的源碼都已經clone好了,所以就只展示下git clone https://github.com/hyperbench/hyperbench.git#clone完成後進入到hyperbench源碼目錄cd hyperbench#使用make build命令編譯hyperbenchmake build#編譯完成後使用help來查看編譯是否成功./hyperbench --help#如果有輸出hyperbench命令使用說明則代表編譯成功Usage:  hyperbench [command]Examples:hyperbench --doc ./doc (generate document to specify path)Available Commands:  completion  Generate the autocompletion script for the specified shell  help        Help about any command  init        init a stress test dir  new         initialize a test plan  start       start a benchmark  version     get code version  worker      start as a worker serverFlags:      --debug        enable debug mode      --doc string   use to create doc and specify the doc path  -h, --help         help for hyperbenchUse "hyperbench [command] --help" for more information about a command.

HyperBench主程序編譯完成後,還需要編譯HyperBench的區塊鏈適配插件

#進入到前面所創建的hyperbench目錄cd /opt/hyperbench#使用git命令將hyperbench-plugins源碼clone本地git clone https://github.com/hyperbench/hyperbench-plugins.git#clone完成後進入到hyperbench-plugins目錄cd hyperbench-plugins#目錄中可以看到hyperbench所適配的各個區塊鏈平臺#本次視頻是介紹hyperbench對以太坊區塊鏈平臺的測試,所以進入以太坊目錄cd eth/#進入目錄後使用make build命令編譯插件make build#編譯完成後可以在當前目錄看到eth.so文件#需要將eth.so文件copy到hyperbench主程序所在的目錄cp eth.so ../../hyperbench/eth.so

編譯安裝並配置啓動geth

HyperBench主程序與插件編譯完成後,我們還需要搭建一條以太坊私有鏈以作測試

#首先創建一個geth目錄mkdir /opt/geth/#進入目錄cd /opt/geth/#進入到github上以太坊項目庫#使用git命令clone 以太坊源碼git clone https://github.com/ethereum/go-ethereum.git#clone完成後進入源碼目錄cd ethereum#使用make命令編譯geth主程序make geth#進入到build/bin/目錄就能看到geth主程序cd ./build/bin/#使用./geth version查看編譯是否成功./geth version#成功輸出了版本信息則代表編譯成功#然後將geth文件copy到/usr/local/bin/目錄,這樣就可以在任何目錄下執行geth命令cp ./geth /usr/local/bin/

接下來需要創建geth初始化文件,本次教程重點在HyperBench,所以就不詳細介紹geth的配置了。

初始化文件中需要注意的是alloc配置項,此配置項是以太坊區塊鏈私鏈的創世账戶,如果初始化時沒有創建創世账戶並且分配一定的原生幣,那在後續測試中的轉账交易就無法完成轉账。

如果自己在測試中沒有創世账戶的話,可以使用本次教程提供的账戶:

vim genesis.json{  "config": {    "chainId": 777,    "homesteadBlock": 0,    "eip150Block": 0,    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",    "eip155Block": 0,    "eip158Block": 0,    "byzantiumBlock": 0,    "constantinopleBlock": 0,    "petersburgBlock": 0,    "istanbulBlock": 0,    "ethash": {}  },  "nonce": "0x0",  "timestamp": "0x5ddf8f3e",  "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",  "gasLimit": "0x2540be400",  "difficulty": "0x00002",  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",  "coinbase": "0x0000000000000000000000000000000000000000",  "alloc": {        "0x4e5786bf8546e60ca38aa68eb8dc82b1b24d26f3": {            "balance": "100000000000000000000000000000000"        }   },  "number": "0x0",  "gasUsed": "0x0",  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"}

創建geth數據目錄,並初始化目錄

mkdir /opt/geth1/#執行初始化命令./geth --datadir /opt/geth1/ init ./genesis.json#執行返回如下則為成功INFO [10-18|10:41:55.859] Maximum peer count                       ETH=50 LES=0 total=50INFO [10-18|10:41:55.860] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"INFO [10-18|10:41:55.864] Set global gas cap                       cap=50,000,000INFO [10-18|10:41:55.865] Allocated cache and file handles         database=/opt/geth1/geth/chaindata cache=16.00MiB handles=16INFO [10-18|10:41:56.236] Opened ancient database                  database=/opt/geth1/geth/chaindata/ancient/chain readonly=falseINFO [10-18|10:41:56.236] Writing custom genesis blockINFO [10-18|10:41:56.238] Persisted trie from memory database      nodes=1 size=153.00B time="171.63µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00BINFO [10-18|10:41:56.239] Successfully wrote genesis state         database=chaindata                               hash=ced4ca..c9a1f8INFO [10-18|10:41:56.239] Allocated cache and file handles         database=/opt/geth1/geth/lightchaindata          cache=16.00MiB handles=16INFO [10-18|10:41:56.513] Opened ancient database                  database=/opt/geth1/geth/lightchaindata/ancient/chain readonly=falseINFO [10-18|10:41:56.513] Writing custom genesis blockINFO [10-18|10:41:56.514] Persisted trie from memory database      nodes=1 size=153.00B time="91.645µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00BINFO [10-18|10:41:56.515] Successfully wrote genesis state

初始化完成後,在/opt/geth1/keystore/目錄下新增文件

這個文件是在genesis.sjon配置中的創世账戶的私鑰,默認分配了余額

vim UTC--2022-10-17T08-41-53.685200708Z--4e5786bf8546e60ca38aa68eb8dc82b1b24d26f3#文件內容{"address":"4e5786bf8546e60ca38aa68eb8dc82b1b24d26f3","crypto":{"cipher":"aes-128-ctr","ciphertext":"f26e27f300b7ba46e968f8c656e534cbb706a15c825eb351d2ba4690d1b6bf26","cipherparams":{"iv":"bbb9f922fc48bcb2c1fb566453f328d8"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"f0ffc7fa97c82b94c2fcea53127ea3b8d5110c020830089283173e9d998cb8d9"},"mac":"2b6bdb9ae958ff55516ac313f4b68d5a8c66df018103903d1348a7158fe1fd2c"},"id":"654e1fa7-9c06-4643-bc3d-26b6186ff2cf","version":3}

啓動geth

#使用geth命令啓動以太坊私鏈vim scnohup geth --datadir "/opt/geth1/" --http --http.addr=0.0.0.0 --http.port 8545 --authrpc.port 8552 --http.corsdomain "*" --http.api "eth,net,web3,personal,admin,txpool,debug,miner" --nodiscover --maxpeers 30 --networkid 1981 --port 30303 --allow-insecure-unlock  2>> /opt/geth1/geth.log &#啓動命令中需要注意的是 --http.port 後續再hyperbench配置中會使用到

進入geth控制臺,確認geth啓動狀態

#進入geth數據目錄cd /opt/geth1/#使用命令進入geth控制臺geth attach ./geth.ipc#執行eth.acccounts查看當前鏈上账戶>eth.accounts["4e5786bf8546e60ca38aa68eb8dc82b1b24d26f3"]#如正確輸出账戶地址則代表啓動成功

確認啓動成功後,需要新增一個账戶

#新增账戶時為了方便測試,需要創建沒有密碼的账戶personal.newAccount("")

至此我們已經完成了以太坊私鏈的配置,結下來僅需配置HyperBench測試腳本啓動我們的測試,詳細完整的操作可在 ↓演示視頻↓ 中進行學習!

視頻教程

https://v.qq.com/x/page/g3364pal2qb.html

License

HyperBench目前使用Apache 2.0許可證。具體請參見 github LICENSE文件?

✨ 开源小貼士 ✨ 

HyperBench github

https://github.com/hyperbench/hyperbench

HyperBench quickstart

https://github.com/hyperbench/hyperbench/blob/master/README.md

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

btc日內再次下跌 短线應當如何處理?

盡管以太坊現貨ETF獲批是個好消息,但市場反應卻不如預期。在消息公布後,以太坊價格出現了小幅下跌,...

加密蓮
134 3個月前

7月23日、BTC(合約)ETH(合約)行情分析及操作策略

昨日收益還是不錯的,日內給出的現價空單分別止盈我們目標點位,恭喜跟上的朋友喫肉。時間一晃到月底了,...

倪老師
134 3個月前

幣圈院士:血與淚的教訓!交易者為何總是撞死在同一棵樹上?

幣圈院士談。交易市場中的幾種“死法” 在幣圈市場鱗次櫛比的海洋,風起雲湧,時常讓人感到驚手不及。在...

幣圈院士
139 3個月前

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...

168超神
131 3個月前

悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤

一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...

我是周悅盈
111 3個月前

btc完美盈利 晚間波動較大注意

昨日btc空單完美給到,最大化走出一千七百點空間~ btc: 日內开盤下跌繼續測試66000一线,...

加密蓮
121 3個月前

趣鏈科技

文章數量

1

粉絲數

0
Ta的最新文章
以太坊性能測試教程