本文將以Medalla多客戶端測試網為例介紹在ETH2.0上質押的詳細步驟。主要基于以下幾個技術:
Ubuntuv20.04(LTS)x64服務器
GoEthereum節點(代碼分支)
PrysmaticLabsETH2.0客戶端——Prysm
官方多客戶端公共測試網Medalla
瀏覽器擴展程序錢包MetaMask
Prometheus指標
Grafana控制面板
這篇指南介紹了如何:
配置新運行的Ubuntu服務器實例
配置和運行ETH1.0節點
為ETH2.0Phase0編譯并配置PrysmaticLabs信標鏈和驗證者客戶端軟件,并提供相應的運行服務
安裝并配置Prometheus指標,并創建Grafana控制面板用于查看數據和接收警報
致謝和免責聲明
這篇指南參考了各種網上資料。沒有它們,就沒有這篇指南。特此表示感謝!
我本人并不精通這篇指南中列出的所有技術。經過親身嘗試之后,我發現這些技術非常有趣,因此想要分享給其他人。如有任何錯誤或疏漏之處,煩請見諒。歡迎大家積極反饋!
讀者須知
這篇指南并不適合初學者。讀者需要具備一些關于以太坊、以太幣、質押、Linux和MetaMask的知識。在開始閱讀之前,請先運行Ubuntu服務器實例。先安裝好MetaMask瀏覽器插件并配置好也在一定程度上有所幫助。然后,我會引導你完成接下來的步驟。
樹莓派用戶須知
我沒有在樹莓派上測試過這個指南。如果你想嘗試一下,直接將下文列出的軟件換成ARM版本。但是我不保證一定能成功!
要求
Ubuntu服務器實例。我使用的是v20.04(LTS)amd64服務器虛擬機。
安裝并配置好的MetaMask密碼學錢包瀏覽器擴展程序。
運行Prysm軟件的最低硬件要求:—操作系統:64-bitLinux—處理器:IntelCorei5–760或AMDFX-8100或以上—內存:4GBRAM(推薦8GB)—硬盤:不低于20GB的SSD固態硬盤空間—網絡:穩定的寬帶連接
目前似乎還沒有任何硬性硬盤要求。測試網可能只需要100GB的SSD固態硬盤就夠了。對于主網來說,接下來的幾年,使用1TB的SSD固態硬盤可能更好。總的來說,最好做好在必要時擴展硬盤容量的準備。
概述
這份指南很長而且細節繁多。所以我畫了一張究極簡化的示意圖來幫助你對接下來要做的事情建立基本概念。下圖中的黃色框即是本指南會覆蓋到的部分。
整個流程可以概念化表述為:
啟動一個Eth1節點并同步Eth1G?erli測試網
生成并激活驗證者密鑰對
配置信標鏈節點和驗證者客戶端
讓信標鏈節點在驗證者的幫助下施展魔法
第一步——保護你的系統
安全性很重要。由于本文不是一篇全面的安全性指南,我只介紹一些基本設置:防火墻和用戶賬號。本文預設你可以訪問你的Ubuntu實例的控制臺,并作為root用戶通過SSH登陸控制臺。
配置防火墻
Ubuntu20.04服務器可以使用默認的UFW防火墻來限制訪問該服務器的流量。我們需要允許來自SSH、GoEthereum、Grafana和Prysm的入站流量。允許SSH——允許通過SSH連接到該服務器
外媒:香港金融監管機構本周討論了如何解決加密公司開設銀行賬戶面臨的挑戰:6月16日消息,據彭博社援引知情人士報道,香港金融監管機構已于本周一召集銀行、加密平臺和其他行業參與者在一起,主要討論如何解決加密公司在開設銀行賬戶方面面臨的持續挑戰。這是香港監管機構自 4 月下旬以來第二次推動銀行更多參與加密領域的會議。[2023/6/16 21:41:23]
注:出于安全考慮,你可能需要考慮更換你的SSH端口。這里面會有一些細微差別,你可以自己研究一下。
#ufwallow22/tcp
允許GoEthereum——允許來自GoEthereum節點的請求。
注:如果你將你的Ubuntu實例托管在本地,你需要對你的路由器和/或防火墻進行配置,允許來自這些端口的入站流量。
#ufwallow30303/tcp#ufwallow30303/udp
允許Grafana——允許將入站請求發送至Grafana網絡服務器
#ufwallow3000/tcp
允許Prysm——允許對等節點之間進行連接,以便在信標鏈節點上進行操作。PrysmaticLabs將端口13000/TCP和12000/UDP列為默認端口。
注:如果你將你的Ubuntu實例托管在本地,你需要對你的路由器和/或防火墻進行配置,允許來自這些端口的入站流量。
#ufwallow13000/tcp#ufwallow12000/udp
可選項:如果你想要直接訪問Prometheus數據服務,你也可以開啟端口9090/TCP。如果你只使用Grafana查看數據,那就沒必要開啟這個端口。我自己就沒有開啟這個端口。
#ufwallow9090/tcp
現在開啟防火墻并檢查防火墻是否已經按照上述規則正確配置。
#ufwenable#ufwstatusnumbered
輸出應如下圖所示:
-UFW防火墻設置-
創建一個新的用戶賬戶,并授予其管理權限
使用root賬戶登陸存在很大的風險。讓我們來重新創建一個擁有管理權限的用戶賬戶。
#adduser
你需要輸入密碼以及其它信息。
將新的用戶加入sudo群組,即可授予其管理權限。
#usermod-aGsudo
當你以登陸時,你可以在命令行前鍵入sudo,即可以超級用戶的權限來執行操作。
可選項:如果你使用SSH密鑰連接你的實例,你需要將這個新賬戶與root賬戶的SSH密鑰數據進行關聯。
#rsync--archive--chown=:~/.ssh/home/
第二步——升級你的系統
注銷你的root賬戶登錄狀態和SSH,使用你新創建的用戶名進入Ubuntu系統,運行下列命令行來升級系統。
$sudoaptupdate&&sudoaptupgrade$sudoaptdist-upgrade&&sudoaptautoremove
第三步——安裝并運行GoEthereum節點
本步的用意是安裝并配置好一個將來的你的信標鏈節點需要連接的以太坊1.0節點。如果你傾向于使用由第三方托管的節點(比如Infura),那就跳過這一步。
安裝GoEthereum
GoEthereum建議使用PPA的。
$sudoadd-apt-repository-yppa:ethereum/ethereum
比特幣大手子:大手子教你如何提前預知爆漲趨勢:4月30日19:00,實盤大V 比特幣大手子 做客金色財經《幣情觀察室》直播間,將分享《大手子教你如何提前預知爆漲趨勢》,欲觀看直播掃描下圖二維碼即可![2020/4/30]
更新安裝包并安裝最新的穩定版本。
$sudoapt-getupdate$sudoapt-getinstallethereum
運行GoEthereum作為后臺服務
為要運行的服務創建一個用戶。此種類型的用戶無法登錄服務器。
sudouseradd--no-create-home--shell/bin/falsegoeth
為Eth1區塊鏈創建數據文件夾。這是存儲Eth1節點數據所必須的操作。使用-p來創建完整的路徑。
$sudomkdir-p/var/lib/goethereum
設定文件夾權限。用戶goeth需要權限來修改該數據文件夾。
$sudochown-Rgoeth:goeth/var/lib/goethereum
創建一個systemd服務文件來存儲服務配置。我們將使用配置文件來命令你的systemd運行geth進程。
$sudonano/etc/systemd/system/geth.service
復制下列服務配置到該文件里面。
Description=EthereumgoclientAfter=network.targetWants=network.targetUser=goethGroup=goethType=simpleRestart=alwaysRestartSec=5ExecStart=geth--goerli--http--datadir/var/lib/goethereumWantedBy=default.target
那個--goerli標簽是用來指定Goerli測試網的,而--http標簽則是用來暴露供信標鏈節點連接的端口的。
可以對照下面這張屏幕截圖。你的文件也應該像它一樣。記得保存然后退出。
重啟systemd以使更改生效。
$sudosystemctldaemon-reload
開啟這項服務,并確保它正常運行。
$sudosystemctlstartgeth$sudosystemctlstatusgeth
啟動服務后的輸出應該像下圖一樣。
如果一切正常,它應該會用綠色文本顯示“active(running)”。如果不正常,那就倒回去,重復這個步驟來解決這個問題。可以按Q退出。
允許geth服務在系統重啟時自動啟動。
$sudosystemctlenablegeth
GoEthereum會自動開始同步。你可以運行journal命令來查看進度。按Ctrl+C可以退出。
$sudojournalctl-f-ugeth.service
找到對等節點并完成Goerli測試網同步可能要花好一段時間。如果出現了延宕的情況,你可以手動添加節點來幫助同步。到這個網站找到最新的節點列表,并像這樣這樣修改geth服務:
$sudosystemctlstopgeth$sudonano/etc/systemd/system/geth.service
修改“ExecStart”那一行,加入--bootnodes標簽和一些最新的節點。
ExecStart=geth--goerli--http--datadir/var/lib/goethereum--bootnodes"enode://46add44b9f13965f7b9875ac6b85f016f341012d84f975377573800a863526f4d94.237.54.114:30313,enode://119f66b04772e8d2e9d352b81a15aa49d565590bfc9a80fe732706919f8ccd00a13.250.50.139:30303"
掌柜調查署 | Matrixport如何實現0息借貸:4月23日18:00,金色財經將邀請Matrixport高級副總裁林榕做客「掌柜調查署」。本期調查署將針對Matrixport推出的“0息借貸”進行深入“拷問”,帶大家一起了解Matrixport如何做到0息借貸惠澤大眾。詳情見原文鏈接。[2020/4/23]
保存文件并退出。重啟服務并觀察。
$sudosystemctldaemon-reload$sudosystemctlstartgeth$sudojournalctl-f-ugeth.service
結果應該像這樣:
注意:在你運行信標鏈節點之前,要先等這個Eth1節點同步完成。可以在這里找到最新的區塊。
接下來,我們要下載Prysm軟件。從這里開始你可以開啟一個新的命令行窗口,這樣你就能繼續觀察Eth1節點的同步情況了。
第四步——安裝Bazel
Bazel是一個開源構建工具。我們將使用它來編譯Prysm軟件。
我們還需要使用Curl來下載Prysm代碼。
$sudoaptinstallcurlgnupg
下載BazelgpgdistributionURI并將其添加為包源。你在復制命令行時,別漏了“add”后的:sudoapt-keyadd-sudoapt-keyadd-。
$curlhttps://bazel.build/bazel-release.pub.gpg|sudoapt-keyadd-$echo"debhttps://storage.googleapis.com/bazel-aptstablejdk1.8"|sudotee/etc/apt/sources.list.d/bazel.list
根據Bazel的文檔,保留組建名“jdk1.8”只是出于歷史遺留原因,不再代表支持或包含哪些JDK版本。
安裝Bazel。先安裝最新版本,然后安裝3.2.0版本。Prysm目前需要3.2.0版本。
$sudoaptupdate&&sudoaptinstallbazel$sudoaptupdate&&sudoaptinstallbazel-3.2.0
第五步——安裝并構建Prysm
Prysm由兩部分二進制文件組成:信標鏈和驗證者。我們將構建這兩部分。
克隆Prysm的主代碼庫。
$gitclonehttps://github.com/prysmaticlabs/prysm$cdprysm
使用BazelBuild來編譯信標鏈和驗證者二進制文件。
$bazelbuild//beacon-chain:beacon-chain$bazelbuild//validator:validator
信標鏈文件需要一段時間才能構建完成。現在我們可以喝杯水小憩一下。或許可以讀一下我的其它文章。
構建驗證者文件會快一些,因為我們已經下載和/或構建好相關項了。
如果二者均構建完成,就可以執行后續步驟了。如果失敗了,可以去Prysm的Discord尋求幫助。
更新Prysm
注:務必在完成本指南中的所有步驟后再執行該步驟,否則請直接跳到第六步。
如果你因為Git代碼庫變化而需要更新代碼,請執行以下步驟獲得最新文件,并創建你的二進制文件:
$cdprysm$gitpulloriginmaster$bazelbuild//beacon-chain:beacon-chain$bazelbuild//validator:validator
動態 | ITAM Network發文 “DApps如何優化RAM使用率”:據IMEOS報道,ITAM Network在Medium上發表文章“DApps如何優化RAM使用率”。文中介紹DApps主要是在上傳智能合約還有在使用智能合約Table保存數據的情況下使用RAM,并介紹如何通過在區塊上運行數據達到RAM使用率最小化,還有DApps開發者應當考慮和準備的工作。文章最后ITAM Network表示這只是一種可供替代的方法,并不是唯一正確的途徑。[2018/8/2]
別忘了停止信標鏈和驗證者服務,并將二進制文件復制到/usr/local/bin目錄下,然后再開始啟動服務:
$sudosystemctlstopbeaconchain$sudosystemctlstopvalidator$sudocpbazel-bin/beacon-chain/linux_amd64_stripped/beacon-chain/usr/local/bin$sudocpbazel-bin/validator/linux_amd64_stripped/validator/usr/local/bin$sudosystemctlstartbeaconchain$sudosystemctlstatusbeaconchain<--Checkforanyerrors.$sudosystemctlstartvalidator$sudosystemctlstatusvalidator<--Checkforanyerrors.
第六步——配置信標鏈節點
在這一步驟中,我們將讓信標鏈節點作為后臺服務運行,如果系統重啟,信標鏈節點進程也會自動重啟。
建立賬戶和目錄
為這項服務創建一個用戶。此種類型的用戶無法登錄服務器。
$sudouseradd--no-create-home--shell/bin/falsebeaconchain
也要為信標鏈節點創建數據目錄。這是存儲信標鏈數據庫所必需的。使用-p來創建完整的路徑。
$sudomkdir-p/var/lib/prysm/beaconchain
設置文件夾權限。這個beaconchain用戶需要權限來更改這個數據庫目錄。-R表示遞歸。
$sudochown-Rbeaconchain:beaconchain/var/lib/prysm/beaconchain
接下來,把新編譯的beacon-chain二進制文件復制到/usr/local/bin目錄。我們會在這個文件夾里運行它。
注意:每次你拉取/構建一個新版本的beacon-chain二進制文件的時候,都要做這一步驟。
$sudocpbazel-bin/beacon-chain/linux_amd64_stripped/beacon-chain/usr/local/bin
把所有權設給我們上面創建的用戶賬戶beaconchain。
$sudochown-Rbeaconchain:beaconchain/usr/local/bin/beacon-chain
創建和配置服務
創建一個systemd服務文件來存儲這個服務的配置。
$sudonano/etc/systemd/system/beaconchain.service
復制下列內容到這個文件里面。
Description=BeaconchainWants=network-online.targetAfter=network-online.targetType=simpleUser=beaconchainGroup=beaconchainRestart=alwaysRestartSec=5Environment="ClientIP=$(curl-sv4.ident.me)"ExecStart=/bin/bash-c'/usr/local/bin/beacon-chain--p2p-host-ip=${ClientIP}--datadir=/var/lib/prysm/beaconchain--http-web3provider=http://127.0.0.1:8545'WantedBy=multi-user.target
中國信通院云計算與大數據研究所所長何寶宏:區塊鏈中如何使用共識機制是大問題:中國信通院云計算與大數據研究所所長何寶宏:區塊鏈是唯一崛起于草根的顛覆性技術,越來越多的行業應用正在采用分布式賬本技術;在區塊鏈中如何使用共識機制是大問題,當信任缺失時,共識機制十分消耗算力;區塊鏈技術人才需求朝復合型方向發展。[2017/12/22]
我們是用一個環境參數來獲得這個客戶端的IP地址Environment="ClientIP=$(curl-sv4.ident.me)"因為ExecStart不允許內聯調用。使用--p2p-host-ip=${ClientIP}是為了應對故障。
--http-web3provider標簽用于定義Eth1節點的端口。如果你使用的是本地的節點,這個值就是http://127.0.0.1:8545,如果你在使用第三方服務,那就要使用一個外部的端口地址。
看看你的文件是不是也像這個截圖一樣。應該是一樣的。然后你可以保存并退出。
重啟systemd以使變更生效。
$sudosystemctldaemon-reload
注意:如果你在本地運行Eth1節點,你需要等待本地的節點同步區塊鏈同步完成,然后才能開始beaconchain服務。使用這個命令行來檢查進度:
sudojournalctl-f-ugeth.service。
啟動服務并檢查它有沒有正常運行。
$sudosystemctlstartbeaconchain$sudosystemctlstatusbeaconchain
屏幕上的輸出看起來應該是這樣的。
如果你正確地完成了上述步驟,它應該會用綠色字體顯示“active(running)”。如果沒有這么顯示,你要倒回去,重復這些步驟,來修復問題。按Q可以退出。
讓信標鏈服務能隨系統重啟而自動重啟。
$sudosystemctlenablebeaconchain
然后信標鏈節點會開始同步。可能需要幾個小時才能完成同步。你可以運行journal命令來檢查進度。按Ctrl+C來退出。
$sudojournalctl-f-ubeaconchain.service
命令行窗口的輸出會給你來自Eth1區塊鏈的、正在處理的保證金的狀態信息。
現在你的信標鏈節點已經作為一項服務在后臺運行了。恭喜!雖然節點還在同步,我們可以開始下一步了。
第七步——完成Medalla測試網的引導流程
在啟動驗證者客戶端之前,我們需要先生成我們的驗證者密鑰對。官方的Eth2LaunchPad會引導你完成這個流程,不過,在你開始存入保證金之前,你需要獲得一些GoerliETH。
獲得GoerliETH
遵照下列步驟:
點擊MetaMask瀏覽器插件并登錄
點擊頂部的下拉菜單,選擇Goerli測試網
點擊你的用戶名,它會自動復制下你的GoerliETH錢包地址;
你可以通過這個經過認證的水龍頭來獲得Goerli測試網ETH,或者到ethstakerDiscord群組的goerli-eth頻道內使用機器人命令:!goerliEth獲取。
如果你在計劃運行多個驗證者,你可以請求自己想要的額度
等到GoerliETH出現在你的錢包里,你就可以操作下一步了
生成驗證者數據
訪問官方的Eth2LaunchPad網站,跟隨指引完成操作。如果一切順利,它就能生成一個驗證者密鑰文件。
根據引導流程、使用命令行工具所生成的JSON文件會存儲在你運行“驗證者密鑰生成”腳本的目錄下的eth2.0-deposit-cli/validator_keys文件夾里。當我們要運行驗證者的時候,我們需要從這個位置引用我們的密鑰。如果你需要通過SFTP發送到你的服務器,那可以放心這么做。本指南假定這個文件會存儲在這個目錄:$HOME/eth2.0-deposit-cli/validator_keys。
第八步——創建驗證者錢包
首先我們要使用Prysm的驗證者二進制文件來創建一個錢包,就基于上一步我們所創建的密鑰。
$cdprysm$bazelrun//validator:validator--accounts-v2import--keys-dir=$HOME/eth2.0-deposit-cli/validator_keys
你會被程序詢問指定一個錢包的存儲位置。你可以直接按回車,這樣它會存儲到默認位置。你還需要輸入一個新的錢包口令,請務必把這個口令保管在安全的地方。
接下來你要輸入你在Eth2LaunchPad網站上創建驗證者密鑰時候使用的口令。如果你正確輸入了,這個賬戶就會導入到這個新錢包中。
Enterawalletdirectory(default:/home/ethstaker/.eth2validators/prysm-wallet-v2):Newwalletpassword:Confirmpassword:INFOaccounts-v2:Successfullycreatednewwalletwallet-path=/home/ethstaker/.eth2validators/prysm-wallet-v2Enterthepasswordforyourimportedaccounts:Importingaccounts,thismaytakeawhile...Importingaccounts...100%Successfullyimported40accounts,viewallofthembyrunningaccounts-v2list
確認驗證者賬戶創建成功。
$bazelrun//validator:validator--accounts-v2list
這就完成啦。現在這個驗證者錢包已經配置好了,我們將啟動驗證者作為一個后臺服務。
第九步——配置驗證者客戶端
建立賬戶和存儲目錄
我們將讓驗證者能作為一項后臺服務運行,并且在系統重啟時這個線程會自動重啟。
為要運行的服務創建一個用戶賬戶。此種類型的賬戶無法登錄服務器。
$sudouseradd--no-create-home--shell/bin/falsevalidator
為驗證者客戶端創建數據存儲目錄,也就是跟驗證者相關的數據庫存放的地方。使用-p來創建完整的地址。
$sudomkdir-p/var/lib/prysm/validator
設置目錄的權限。這個validator用戶需要修改這個數據目錄的權限。
$sudochown-Rvalidator:validator/var/lib/prysm/validator
現在,復制我們之前編譯好的validator二機制文件到這個/usr/local/bin目錄。
注意:每次你拉取/構建一個新版本的validator二進制文件,都要做這一步。
$cdprysm$sudocpbazel-bin/validator/linux_amd64_stripped/validator/usr/local/bin
把用戶和群組權限設給validator用戶。
$sudochown-Rvalidator:validator/usr/local/bin/validator
創建和配置服務
創建一個systemd服務文件來存儲服務配置。
$sudonano/etc/systemd/system/validator.service
完全復制下列內容到這個文件中,就除了下面的兩個例外:
用你正在使用的用戶名替代那兩個。
用你的PrysmPOAP參與獎章值替換掉,這樣就能獲得特殊的NFT獎品!例如--graffiti"abcdefg12345"
Description=ValidatorWants=network-online.targetAfter=network-online.targetType=simpleUser=validatorGroup=validatorRestart=alwaysRestartSec=5ExecStart=/usr/local/bin/validator--datadir/var/lib/prysm/validator--wallet-dir/home//.eth2validators/prysm-wallet-v2--wallet-password-file/home//.eth2validators/prysm-wallet-v2/password.txt--graffiti""WantedBy=multi-user.target
檢查你的文件,看看是不是跟這個截圖一樣。保存并退出。
password.txt是必需的,因為--wallet-password-file需要指定一個口令文件。因此我們就創建一個,然后存儲在那個位置。
$cd/home//.eth2validators/prysm-wallet-v2$touchpassword.txt$nanopassword.txt
把你的錢包password輸入到這個文件中。就像下圖一樣,然后保存并退出。
重啟系統以使變更生效。
$sudosystemctldaemon-reload
啟動服務并確保正常運行。
$sudosystemctlstartvalidator$sudosystemctlstatusvalidator
你的屏幕輸出應該看起來像這樣。
如果你正確地完成了上述步驟,它應該會用綠色字體顯示“active(running)”。如果沒有這么顯示,你要倒回去,重復這些步驟,來修復問題。按Q可以退出。
讓信標鏈服務能隨系統重啟而自動重啟。
$sudosystemctlenablevalidator
你可以運行journal命令來檢查進度。按Ctrl+C來退出。
$sudojournalctl-f-uvalidator.service
等信標鏈真的啟動之后,可能還要等幾個小時來激活你的驗證者賬戶。驗證者進程的輸出會顯示進度。
Aug0203:03:25ETH-STAKER-01validator:time="2020-08-0203:03:25"level=infomsg="WaitingforbeaconchainstartlogfromtheETH1.0depositcontract"prefix=validator
你可以通過beaconcha.in檢查自己的驗證者的狀態。只需搜索你的驗證者公鑰即可。網站上很快就會顯示出來。
就這么簡單。我們已經開始運行信標鏈節點和驗證者客戶端了。恭喜恭喜,你很棒!
九月節,露氣寒冷,將凝結也。2020年的幣圈奇跡,3萬多美金的YFI是因其實際應用具有如此高的價值,還是炒作性更多!一個DEFI項目YIF發行總量只有3萬枚的代幣,引爆了幣圈,以一種神乎其神的方.
1900/1/1 0:00:00尊敬的ZT用戶: 為給用戶提供更好的交易體驗,ZT會對已上線項目進行嚴格審查,根據項目下架規則,ZT決定對SPNC,QQBC,NB,KIMICHI,HD,HAT進行下架處理.
1900/1/1 0:00:00陸百川9.16BTC行情分析及操作策略有志者自有千計萬計,無志者只感千難萬難。大家好,我是陸百川.
1900/1/1 0:00:00bZx協議再次遭到攻擊,共計損失價值逾800萬資產。另一方面,去中心化保險NexusMutual的有效保額突破了2億美元,較昨日翻倍.
1900/1/1 0:00:00比特幣是數字資產世界發展的大爆炸起源。比特幣是作為一種電子現金設計出來的,但是它并沒有同任何法幣或實體資產相掛鉤,完全是一個技術產品。支持比特幣流通的底層的網絡是全球性的.
1900/1/1 0:00:00尊敬的TB用戶: TokenBetter礦池為增強用戶體驗、滿足廣大用戶挖礦需求,將于9月16日14:00上線挖礦幣種ABD.
1900/1/1 0:00:00