Geth介紹及如何運行以太坊節(jié)點

在本文中,我們將看看以太坊節(jié)點是什么涉枫,并探索最受歡迎的節(jié)點之一邢滑,稱為Geth。

為了與區(qū)塊鏈進行通信愿汰,我們必須使用區(qū)塊鏈客戶端困后。客戶端是能夠與其他客戶建立p2p通信信道衬廷,簽署和廣播交易摇予,挖掘,部署和與智能合約交互等的軟件吗跋〔啻鳎客戶端通常被稱為節(jié)點。

以太坊節(jié)點必須遵循的功能的正式定義在以太坊黃皮書中定義跌宛。黃皮書定義了網絡上節(jié)點所需的函數(shù)酗宋,挖掘算法,私鑰/公鑰ECDSA參數(shù)疆拘。它定義了使節(jié)點與以太坊客戶端完全兼容的全部功能蜕猫。

基于以太坊黃皮書,任何人都能夠以他們認為合適的語言創(chuàng)建自己的以太坊節(jié)點實現(xiàn)哎迄。

這里可以看到完整的客戶端列表回右。

迄今為止最受歡迎的客戶是GethParity。實現(xiàn)的不同之處主要在于選擇的編程語言:Geth使用Golang漱挚,而Parity使用Rust翔烁。

由于Geth是目前最受歡迎的客戶端實現(xiàn),我們現(xiàn)在將重點關注它旨涝。

節(jié)點類型

當你加入以太坊網絡時蹬屹,你可以選擇運行各種類型的節(jié)點。目前的選項是:

  • light節(jié)點
  • full節(jié)點
  • Archive節(jié)點

Archive節(jié)點是full節(jié)點的特例颊糜,因此我們不會詳細介紹它哩治。我發(fā)現(xiàn)的節(jié)點類型的最佳摘要之一是在Stack Exchange上:

通常,我們可以將節(jié)點軟件劃分為兩種類型:完整節(jié)點和輕(重量)節(jié)點衬鱼。完整節(jié)點驗證廣播到網絡上的塊。也就是說憔杨,它們確保塊中包含的交易(以及塊本身)遵循以太坊規(guī)范中定義的規(guī)則鸟赫。它們維護網絡的當前狀態(tài)(根據(jù)以太坊規(guī)范定義)。

不遵循規(guī)則的交易和塊不用于確定以太坊網絡的當前狀態(tài)。例如抛蚤,如果A嘗試向B發(fā)送100以太,但A有0個ethers朋沮,并且一個塊包含此交易,則完整節(jié)點將意識到這不遵循以太坊的規(guī)則并拒絕該塊為無效。特別是,智能合約的執(zhí)行是交易的一個例子。每當在交易中使用智能合約(例如,發(fā)送ERC-20代幣)時摊欠,所有完整節(jié)點都必須運行所有指令以確保它們到達區(qū)塊鏈的正確的掸刊,商定的下一狀態(tài)石窑。

到達同一個狀態(tài)有多種方式肯夏。例如耐亏,如果A有101個以太主之,并且在一次交易中將其中的一百個給了B以支付1個以太的gas芙代,那么最終結果將是如果A每次向B發(fā)送100個1以太的交易裆蒸,每次交易支付0.01以太(無視誰收到交易費用)吼蚁。要知道B現(xiàn)在是否允許發(fā)送100以太旗国,就足以知道B的當前余額是多少注整。保留整個交易歷史記錄的完整節(jié)點稱為完整歸檔節(jié)點能曾。這些必須存在于網絡上才能保持健康。

節(jié)點也可以選擇丟棄舊數(shù)據(jù)肿轨;如果B想要向C發(fā)送100以太寿冕,那么如何獲得以太并不重要,只要B的賬號包含100以太椒袍。相反驼唱,輕節(jié)點不會驗證每個塊或交易,也可能沒有當前區(qū)塊鏈狀態(tài)的副本槐沼。他們依靠完整的節(jié)點為他們提供缺失的細節(jié)(或者只是缺少特定的功能)曙蒸。輕型節(jié)點的優(yōu)勢在于它們可以更快地啟動和運行捌治,可以在更多計算/內存受限的設備上運行岗钩,并且不會占用幾乎同樣多的存儲空間纽窟。在缺點方面,其他節(jié)點存在信任因素(它根據(jù)客戶端和概率方法/啟發(fā)式方法而有所不同兼吓,可用于降低風險)臂港。一些完整的客戶端包括具有更快同步的功能(例如,Parity的warp sync)视搏。

安裝Geth

可以在此處找到Geth在各種平臺(Windows审孽,macOS,Linux)上的安裝說明浑娜。該列表非常全面佑力,并且保持最新,所以我不會在文章中介紹它筋遭。

運行Geth

為了啟動Geth節(jié)點打颤,你唯一需要做的就是轉到終端窗口并運行geth。當你這樣做時漓滔,你應該得到類似于這樣的輸出:

~ geth
INFO [06-03|11:03:13] Maximum peer count                       ETH=25 LES=0 total=25
INFO [06-03|11:03:13] Starting peer-to-peer node               instance=Geth/v1.8.10-stable/darwin-amd64/go1.10.2
INFO [06-03|11:03:13] Allocated cache and file handles         database=/Users/mjvr/Library/Ethereum/geth/chaindata cache=768 handles=128
INFO [06-03|11:03:13] Writing default main-net genesis block
INFO [06-03|11:03:14] Persisted trie from memory database      nodes=12356 size=2.34mB time=48.31016ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [06-03|11:03:14] Initialised chain configuration          config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: <nil> Engine: ethash}"
INFO [06-03|11:03:14] Disk storage enabled for ethash caches   dir=/Users/mjvr/Library/Ethereum/geth/ethash count=3
INFO [06-03|11:03:14] Disk storage enabled for ethash DAGs     dir=/Users/mjvr/.ethash                      count=2
INFO [06-03|11:03:14] Initialising Ethereum protocol           versions="[63 62]" network=1
INFO [06-03|11:03:14] Loaded most recent local header          number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [06-03|11:03:14] Loaded most recent local full block      number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [06-03|11:03:14] Loaded most recent local fast block      number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [06-03|11:03:14] Regenerated local transaction journal    transactions=0 accounts=0
INFO [06-03|11:03:14] Starting P2P networking
INFO [06-03|11:03:16] UDP listener up                          self=enode://a4cb08519bc2bceecb8ad421871c624d5212888653bbaee309fda960f3c87ca7aa9855ee14684d521836ae88ad1986b8ca944348e976760d2bd1247ed3ca7628@[::]:30303
INFO [06-03|11:03:16] RLPx listener up                         self=enode://a4cb08519bc2bceecb8ad421871c624d5212888653bbaee309fda960f3c87ca7aa9855ee14684d521836ae88ad1986b8ca944348e976760d2bd1247ed3ca7628@[::]:30303
INFO [06-03|11:03:16] IPC endpoint opened                      url=/Users/mjvr/Library/Ethereum/geth.ipc

在此之后编饺,你應該看到定期出現(xiàn)新行,Geth說“導入新狀態(tài)”或“導入新區(qū)塊頭”或“導入新收據(jù)”响驴。狀態(tài)透且,塊頭和交易是 Ethereum’s tree tries的一部分:必須下載它們才能使你的節(jié)點與以太坊區(qū)塊鏈同步。

這個過程可能需要很長時間豁鲤,因此你可以選擇運行這樣的輕型節(jié)點秽誊。

geth --light

Geth現(xiàn)在需要做的只是拉動最新的塊頭并依賴其他完整節(jié)點來通過使用merkle證明來驗證交易。

訪問Geth控制臺

現(xiàn)在你已經創(chuàng)建了一個節(jié)點琳骡,你可以通過在終端中打開一個新選項卡并運行以下命令來訪問它:

geth attach

這將把Geth控制臺(一個用于與區(qū)塊鏈通信的Javascript環(huán)境)連接到你的運行節(jié)點锅论。這可以在完全客戶端模式和輕模式下完成。

打開控制臺后日熬,鍵入以下內容:

web3.eth.blockNumber

你應該輸出一個數(shù)字(例如5631487)棍厌,表示以太坊網絡的當前塊號。

創(chuàng)建一個新帳戶

要使用區(qū)塊鏈竖席,你需要擁有一個帳戶耘纱。使用Geth,你可以通過在終端中運行以下命令來實現(xiàn):

geth account new

完成后毕荐,它會詢問你輸入密碼束析,以保護你的帳戶。確保使用安全密碼并安全存儲憎亚。

運行geth account new時Geth所做的是更新Geth數(shù)據(jù)目錄中的文件(Geth存儲所有必要數(shù)據(jù)的目錄员寇,包括塊和塊頭信息)弄慰。目錄在每個平臺的位置:

  • macOS:~/Library/Ethereum
  • Linux:~/.ethereum
  • Windows:%APPDATA%\Ethereum

從其他客戶端訪問Geth

當你啟動Geth時,客戶端會自動在端口8545啟動RPC服務器蝶锋。你可以通過使用web3jsweb3j等庫連接到localhost:8545或使用curlwget手動調用它來訪問此端口上的RPC服務器及其方法陆爽。

要了解如何與正在運行的Geth實例(在啟動你自己的區(qū)塊鏈時是私有的,或在上面的說明中公開)的外部工具的連接扳缕,請參閱此文章慌闭。

結論

在這篇簡短的介紹中,我們介紹了Geth躯舔,以太坊節(jié)點的類型及其目的驴剔。你現(xiàn)在可以運行自己的Geth節(jié)點,并使用第三方工具對其進行增強粥庄。在以后的文章中丧失,我們將介紹運行專用網絡(你自己的以太網區(qū)域鏈與Geth)以及更多內容。

======================================================================

分享一些以太坊惜互、EOS布讹、比特幣等區(qū)塊鏈相關的交互式在線編程實戰(zhàn)教程:

  • java以太坊開發(fā)教程,主要是針對java和android程序員進行區(qū)塊鏈以太坊開發(fā)的web3j詳解载佳。
  • python以太坊炒事,主要是針對python工程師使用web3.py進行區(qū)塊鏈以太坊開發(fā)的詳解。
  • php以太坊蔫慧,主要是介紹使用php進行智能合約開發(fā)交互挠乳,進行賬號創(chuàng)建、交易姑躲、轉賬睡扬、代幣開發(fā)以及過濾器和交易等內容。
  • 以太坊入門教程黍析,主要介紹智能合約與dapp應用開發(fā)卖怜,適合入門。
  • 以太坊開發(fā)進階教程阐枣,主要是介紹使用node.js马靠、mongodb、區(qū)塊鏈蔼两、ipfs實現(xiàn)去中心化電商DApp實戰(zhàn)甩鳄,適合進階。
  • C#以太坊额划,主要講解如何使用C#開發(fā)基于.Net的以太坊應用妙啃,包括賬戶管理、狀態(tài)與交易俊戳、智能合約開發(fā)與交互揖赴、過濾器和交易等馆匿。
  • EOS教程,本課程幫助你快速入門EOS區(qū)塊鏈去中心化應用的開發(fā)燥滑,內容涵蓋EOS工具鏈渐北、賬戶與錢包、發(fā)行代幣突倍、智能合約開發(fā)與部署腔稀、使用代碼與智能合約交互等核心知識點盆昙,最后綜合運用各知識點完成一個便簽DApp的開發(fā)羽历。
  • java比特幣開發(fā)教程,本課程面向初學者淡喜,內容即涵蓋比特幣的核心概念秕磷,例如區(qū)塊鏈存儲、去中心化共識機制炼团、密鑰與腳本澎嚣、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能瘟芝,例如創(chuàng)建地址易桃、管理錢包、構造裸交易等锌俱,是Java工程師不可多得的比特幣開發(fā)學習課程晤郑。
  • php比特幣開發(fā)教程,本課程面向初學者贸宏,內容即涵蓋比特幣的核心概念造寝,例如區(qū)塊鏈存儲、去中心化共識機制吭练、密鑰與腳本诫龙、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能鲫咽,例如創(chuàng)建地址签赃、管理錢包、構造裸交易等分尸,是Php工程師不可多得的比特幣開發(fā)學習課程锦聊。
  • tendermint區(qū)塊鏈開發(fā)詳解,本課程適合希望使用tendermint進行區(qū)塊鏈開發(fā)的工程師寓落,課程內容即包括tendermint應用開發(fā)模型中的核心概念括丁,例如ABCI接口、默克爾樹伶选、多版本狀態(tài)庫等史飞,也包括代幣發(fā)行等豐富的實操代碼尖昏,是go語言工程師快速入門區(qū)塊鏈開發(fā)的最佳選擇。

匯智網原創(chuàng)翻譯构资,轉載請標明出處抽诉。這里是原文Geth介紹及如何運行以太坊節(jié)點

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市吐绵,隨后出現(xiàn)的幾起案子迹淌,更是在濱河造成了極大的恐慌,老刑警劉巖己单,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唉窃,死亡現(xiàn)場離奇詭異,居然都是意外死亡纹笼,警方通過查閱死者的電腦和手機纹份,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來廷痘,“玉大人蔓涧,你說我怎么就攤上這事∷穸睿” “怎么了元暴?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長兄猩。 經常有香客問我茉盏,道長,這世上最難降的妖魔是什么厦滤? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任援岩,我火速辦了婚禮,結果婚禮上掏导,老公的妹妹穿的比我還像新娘享怀。我一直安慰自己,他們只是感情好趟咆,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布添瓷。 她就那樣靜靜地躺著,像睡著了一般值纱。 火紅的嫁衣襯著肌膚如雪鳞贷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天虐唠,我揣著相機與錄音搀愧,去河邊找鬼。 笑死,一個胖子當著我的面吹牛咱筛,可吹牛的內容都是我干的搓幌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼迅箩,長吁一口氣:“原來是場噩夢啊……” “哼溉愁!你這毒婦竟也來了?” 一聲冷哼從身側響起饲趋,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤拐揭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后奕塑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堂污,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年爵川,在試婚紗的時候發(fā)現(xiàn)自己被綠了敷鸦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡寝贡,死狀恐怖,靈堂內的尸體忽然破棺而出值依,到底是詐尸還是另有隱情圃泡,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布愿险,位于F島的核電站颇蜡,受9級特大地震影響,放射性物質發(fā)生泄漏辆亏。R本人自食惡果不足惜风秤,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扮叨。 院中可真熱鬧缤弦,春花似錦、人聲如沸彻磁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衷蜓。三九已至累提,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間磁浇,已是汗流浹背斋陪。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人无虚。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓鞍匾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親骑科。 傳聞我的和親對象是個殘疾皇子橡淑,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容