EOS 區(qū)塊生產(chǎn)過(guò)程

1. 交易同步過(guò)程


1. 在cleos界面輸入?cleos transfer ${from_account} ${to_account} ${quantity}

2. 調(diào)用chain_plugin 的push_transaction,發(fā)送transaction_async消息?

3. 觸發(fā)了producer_plugin的on_incoming_transaction_async,調(diào)用controller的 push_transaction贞瞒,并執(zhí)行trx。

4. controller發(fā)送消息accepted_transaction毙沾,觸發(fā)了bnet_plugin和net_plugin(已廢棄)的on_accepted_transaction?

5. ?bnet_plugin和net_plugin(已廢棄)將消息廣播發(fā)送到其他節(jié)點(diǎn)

6. 其他節(jié)點(diǎn)收到消息后篷帅,進(jìn)入on處理流程跺讯,發(fā)送transction消息糯景,producer_plugin收到消息后嘁圈,調(diào)用on_incoming_transaction_async,調(diào)用controller的 push_transaction蟀淮,并執(zhí)行trx最住。


2. 區(qū)塊成產(chǎn)過(guò)程

producer 收到廣播的交易之后,將交易保存下來(lái)放在pending_state中怠惶,producer_plugin在startup的時(shí)候就啟動(dòng)了區(qū)塊生產(chǎn)schedule_production_loop温学,先做區(qū)塊準(zhǔn)備工作,即start_block甚疟,主要完成區(qū)塊BFT的簽名,之后進(jìn)入maybe_produce_block逃延,進(jìn)入生產(chǎn)過(guò)程览妖,即produce_block,這是區(qū)塊生產(chǎn)的核心部分揽祥,包括計(jì)算merkle root讽膏,提交到DB中等,在最后重新調(diào)用schedule_production_loop拄丰,這樣就形成了循環(huán)府树,具體流程見(jiàn)下圖:



1. ?檢查自己是否是生產(chǎn)者俐末,一個(gè)生產(chǎn)者500ms出一次塊,共出12次之后切換生產(chǎn)者奄侠。

2. 對(duì)上次確認(rèn)的區(qū)塊到本次的區(qū)塊做BFT簽名卓箫,涉及函數(shù)set_confirmed和maybe_promote_pending

3. 等待一個(gè)出塊周期500ms

4. 計(jì)算action的merkle root

5. 計(jì)算transaction的merkle root

6. 對(duì)區(qū)塊簽名

7. 提交區(qū)塊到DB

8. 遞歸調(diào)用schedule_production_loop


3. 區(qū)塊同步過(guò)程


1. ?參考區(qū)塊生產(chǎn)過(guò)程,producer_plugin循環(huán)生產(chǎn)區(qū)塊垄潮,先start_block處理BFT簽名并確定不可逆的區(qū)塊數(shù)烹卒,之后produce_block調(diào)用controller

2. ?Controller使用finalize_block計(jì)算merkle root,使用commit_block提交到fork database中弯洗,fork db會(huì)依據(jù)1中計(jì)算的不可逆區(qū)塊數(shù)旅急,將不可逆的區(qū)塊刪除,并發(fā)送irreversible消息

3. ?Controller收到消息后牡整,調(diào)用on_irreversible處理發(fā)送irreversible_block消息

4. ?bnet_plugin 收到消息后藐吮,調(diào)用on_irreversible_block處理。

5. ?Controller發(fā)送accepted_block_header和accepted_block消息

6. ?producer_plugin收到消息后逃贝, 調(diào)用on_block谣辞,calc_dpos_last_irreversible計(jì)算不可逆塊。

7. ?bnet_plugin/net_plugin 收到之后廣播到其他節(jié)點(diǎn)

8. ?其他節(jié)點(diǎn)的bnet_plugin/net_plugin收到P2P消息后秋泳,通過(guò)發(fā)送block消息/調(diào)用accept_block函數(shù)發(fā)送block_async消息

9. ?Producer_plugin收到block/block_async消息后調(diào)用controller的push_block函數(shù)

10. ?Controller調(diào)用apply_block判斷如果新收到的block比原有的鏈長(zhǎng)潦闲,則切換到新鏈上

11. ?Controller調(diào)用finalize_block計(jì)算merkle root,使用commit_block提交到DB

下面貼張網(wǎng)上找到的log圖迫皱,說(shuō)明消息的時(shí)序:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末歉闰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卓起,更是在濱河造成了極大的恐慌和敬,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戏阅,死亡現(xiàn)場(chǎng)離奇詭異昼弟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)奕筐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門舱痘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人离赫,你說(shuō)我怎么就攤上這事芭逝。” “怎么了渊胸?”我有些...
    開(kāi)封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵旬盯,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)胖翰,這世上最難降的妖魔是什么接剩? 我笑而不...
    開(kāi)封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮萨咳,結(jié)果婚禮上懊缺,老公的妹妹穿的比我還像新娘。我一直安慰自己某弦,他們只是感情好桐汤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著靶壮,像睡著了一般怔毛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上腾降,一...
    開(kāi)封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天拣度,我揣著相機(jī)與錄音,去河邊找鬼螃壤。 笑死抗果,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奸晴。 我是一名探鬼主播冤馏,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寄啼!你這毒婦竟也來(lái)了逮光?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤墩划,失蹤者是張志新(化名)和其女友劉穎涕刚,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體乙帮,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杜漠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了察净。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驾茴。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖氢卡,靈堂內(nèi)的尸體忽然破棺而出沟涨,到底是詐尸還是另有隱情,我是刑警寧澤异吻,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響诀浪,放射性物質(zhì)發(fā)生泄漏棋返。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一雷猪、第九天 我趴在偏房一處隱蔽的房頂上張望睛竣。 院中可真熱鬧,春花似錦求摇、人聲如沸射沟。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)验夯。三九已至,卻和暖如春摔刁,著一層夾襖步出監(jiān)牢的瞬間挥转,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工共屈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绑谣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓拗引,卻偏偏與公主長(zhǎng)得像借宵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矾削,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理壤玫,服務(wù)發(fā)現(xiàn),斷路器怔软,智...
    卡卡羅2017閱讀 134,702評(píng)論 18 139
  • EOS采用DPoS算法和塊內(nèi)分片技術(shù)垦细,實(shí)現(xiàn)了百萬(wàn)級(jí)別TPS的超高性能,可以媲美中心化服務(wù)器的處理能力挡逼,同時(shí)保持去中...
    vdes閱讀 2,214評(píng)論 0 5
  • 我家養(yǎng)了三只小貓括改,貓媽媽是從朋友那兒領(lǐng)養(yǎng)過(guò)來(lái)的叫樂(lè)高。沒(méi)多久便和附近的公貓私定終生家坎,生下了兩小只嘱能。小貓咪要出生的時(shí)...
    cyrensw閱讀 549評(píng)論 5 3
  • 我們是否有過(guò)這樣的體驗(yàn)做瞪?工作千頭萬(wàn)緒对粪,待處理事項(xiàng)一大堆心急火燎右冻,會(huì)議中需要表達(dá)觀點(diǎn)思路卻還沒(méi)理順;回到家面對(duì)滿屋狼...
    睦媽是也閱讀 588評(píng)論 0 2
  • 從溫暖、發(fā)達(dá)的深圳回來(lái)儡遮,今天急匆匆上班了乳蛾,一 大堆的事等著我去處理,莫名有點(diǎn)煩躁鄙币。 剛到辦公室肃叶,...
    幸運(yùn)草_e5c3閱讀 281評(píng)論 0 0