Filecoin VM 解釋器 - 消息的調(diào)用 (外部 VM)

VM解釋器從tipset(基于上tipset的父狀態(tài))上編排消息的執(zhí)行,從而生成一個新的狀態(tài)和消息收據(jù)的序列.這個新狀態(tài)和收據(jù)集合的CID被包含在后續(xù)epoch的塊中犁钟,這些epoch必須就這些CID達成一致才能形成新的tipset。

每個狀態(tài)的更改都有一條消息來驅(qū)動喳魏,tipset中所有塊中得消息都必須全部執(zhí)行才能產(chǎn)生下一個狀態(tài)卖毁。來自第一個塊得所有消息均在tipset中得第二個和后續(xù)塊得消息之前執(zhí)行。對于每個塊贩毕,首先執(zhí)行BLS聚合得消息悯许,然后執(zhí)行SECP簽名的消息。

隱式消息

除了顯式包含在每個塊中的消息外辉阶,隱含消息還會在每個epoch進行一些狀態(tài)更改先壕,隱式消息不在節(jié)點之間傳輸,而是由解釋器在評估時構(gòu)成谆甜。
對于tipset中的每個塊垃僚,都有一個條隱式消息:

  • 選舉礦工角色成為區(qū)塊生產(chǎn)者,作為區(qū)塊中的第一條消息规辱。
  • 調(diào)用獎勵角色將區(qū)塊獎勵支付給礦工 的 owner賬戶谆棺,作為區(qū)塊中的最后一條消息。

對于每個tipset罕袋, 都已以下一個隱式消息:

  • 調(diào)用 cron角色來處理自動檢查和付款改淑,作為tipset的最后一條消息

所有隱式消息的構(gòu)造都使用一個區(qū)別于系統(tǒng)賬戶的角色的From地址。他們的Gas費用位0浴讯,但是他們必須被計算朵夏。為了計算新狀態(tài),他們必須成功(推出代碼為0)兰珍。隱式消息的收據(jù)不包括在收據(jù)列表中,只用顯式的消息才有明確的收據(jù)侍郭。

Gas 支付

在大多數(shù)情況下,消息的發(fā)送者向產(chǎn)生包含該消息的塊的礦工支付執(zhí)行該消息所需的gas費掠河。執(zhí)行該消息后亮元,每次執(zhí)行該消息所產(chǎn)生的gas費將立即支付給礦工的owner賬戶。獲得塊獎勵和gas費用沒有任何阻礙唠摹,他們都是立即支付的爆捞。

重復(fù)消息

由于不同礦工在同一時期產(chǎn)生區(qū)塊,因此勾拉,單個tips中的多個區(qū)塊可能包含相同的消息(由CID標(biāo)識)煮甥。發(fā)生這種情況時,在tipset的規(guī)范順序中第一次遇到它是才會處理該消息藕赞,消息的后續(xù)實例將會被忽略成肘,不會導(dǎo)致任何狀態(tài)變化,也不會產(chǎn)生收據(jù)和向區(qū)塊生產(chǎn)者支付費用

因此斧蜕,tipset的執(zhí)行順序是:

  • 支付第一塊的獎勵
  • 選舉第一個區(qū)塊的生產(chǎn)者
  • 處理第一個區(qū)塊的消息(首先處理BLS双霍,其次處理SECP)
  • 支付第二個區(qū)塊的獎勵
  • 選舉第二個區(qū)塊的生產(chǎn)者
  • 處理第二個塊的消息(首先處理BLS,其次處理SECP,跳過任何已經(jīng)遇到的消息)
  • [...隨后的塊處理同上....]
  • cron角色標(biāo)記

正確和失敗的消息

有效塊中的每一條消息都可以被處理并產(chǎn)生收據(jù)(注意,塊的有效性表示所有消息在語法上均有效且正確簽名)洒闸。但是染坯,執(zhí)行的成功與否取決于消息的執(zhí)行狀態(tài)。如果消息執(zhí)行失敗丘逸,則相應(yīng)的收據(jù)將攜帶非零的退出代碼单鹿。
如過一條消息由于礦工打包在父狀態(tài)就不可能成功消息的原因而失敗,或者由于發(fā)送者缺乏資金來支付最大消息成本深纲,則礦工將通過消耗Gas的方式支付罰款(而不是發(fā)送者向礦工支付費用)仲锄。
消息失敗導(dǎo)致的唯一狀態(tài)變更是:

  • 增加發(fā)送者的 CallSeqNum,并且發(fā)送者向創(chuàng)造包含該消息的塊的礦工的onwer支付Gas費囤萤,或者
  • 礦工通過支付等同于失敗消息的Gas費的罰款(發(fā)送者的CallSeqNum不改變)

如果發(fā)生以下情況昼窗,消息將會失斒桥俊:

  • From的角色在狀態(tài)中不存在(礦工罰款)
  • From的角色不是賬號角色(礦工罰款)
  • 消息的CallSeqNumFrom的角色的CallSeqNum不匹配(礦工罰款)
  • From的角色沒有足夠的資金來支付整個消息消耗的Gas成本GasLimit * GasPrice(礦工罰款)
  • To的角色不存在并且To的地址不是一個公鑰類型的地址
  • To的角色存在(或者作為隱式賬戶創(chuàng)建)但是沒有對應(yīng)于非零的方法MethodNum涛舍。
  • 反序列化的Params長度不匹配ToMethodNum方法的長度的數(shù)組
  • 反序列化的Params對于To 角色的MethodNum方法執(zhí)行的類型無效
  • 所調(diào)用的方法消耗的Gas多于GasLimit允許的量。
  • 調(diào)用的方法以非零代碼(通過Runtime.Abort())推出
  • 由于以上任何原因唆途,接收方發(fā)送的任何內(nèi)部消息都會失敗富雅。

如果To賬戶在狀態(tài)中不存在,并且該地址是有效的H(pubkey)地址肛搬,則會為其創(chuàng)建賬戶角色


翻譯自https://spec.filecoin.io/#section-systems.filecoin_vm.interpreter

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末没佑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子温赔,更是在濱河造成了極大的恐慌蛤奢,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陶贼,死亡現(xiàn)場離奇詭異啤贩,居然都是意外死亡,警方通過查閱死者的電腦和手機拜秧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門痹屹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人枉氮,你說我怎么就攤上這事志衍。” “怎么了聊替?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵楼肪,是天一觀的道長。 經(jīng)常有香客問我惹悄,道長春叫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮象缀,結(jié)果婚禮上蔬将,老公的妹妹穿的比我還像新娘。我一直安慰自己央星,他們只是感情好霞怀,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著莉给,像睡著了一般毙石。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颓遏,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天徐矩,我揣著相機與錄音,去河邊找鬼叁幢。 笑死滤灯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的曼玩。 我是一名探鬼主播鳞骤,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼黍判!你這毒婦竟也來了豫尽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤顷帖,失蹤者是張志新(化名)和其女友劉穎美旧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贬墩,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡榴嗅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了震糖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片录肯。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吊说,靈堂內(nèi)的尸體忽然破棺而出论咏,到底是詐尸還是另有隱情,我是刑警寧澤颁井,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布厅贪,位于F島的核電站,受9級特大地震影響雅宾,放射性物質(zhì)發(fā)生泄漏养涮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贯吓。 院中可真熱鬧懈凹,春花似錦、人聲如沸悄谐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爬舰。三九已至们陆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間情屹,已是汗流浹背坪仇。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垃你,地道東北人椅文。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蜡镶,于是被迫代替她去往敵國和親雾袱。 傳聞我的和親對象是個殘疾皇子恤筛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

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