EOS技術白皮書學習筆記(三) - 應用程序的確定性并執(zhí)行

本文由幣乎社區(qū)(bihu.com)內(nèi)容支持計劃贊助

在看本文前,最好先了解區(qū)塊鏈相關概念:比特幣潭辈,以太坊鸯屿,錢包,智能合約把敢,秘鑰等

應用程序的確定性并行執(zhí)行

相信你和我一樣寄摆,剛開始看這個標題的時候有點懵逼,這講的啥意思呀修赞?后來我查閱了許多資料以及他人的分析婶恼,這才有點理解其中的意思,下面我來說說我是怎么理解的柏副。首先勾邦,我把這個標題分解成3個:應用程序、確定性割择、并行執(zhí)行眷篇,分解后就明了了,我知道應用程序是什么荔泳,但是不知道它說的確定性和并行執(zhí)行是什么意思蕉饼。于是,就需要查詢確定性和并行執(zhí)行玛歌,得出的結(jié)果是:

并行執(zhí)行:同時獨立地安裝和使用程序集的多個版本的能力昧港。并行執(zhí)行可以應用于應用程序和組件以及 .NET Framework。允許多個程序集在同一臺計算機上共存和同時執(zhí)行支子,對于支持公共語言運行庫中可靠的版本控制至關重要慨飘。--百度百科

簡單的說就是,多個程序可以同時執(zhí)行译荞。

確定性并行執(zhí)行: 由于執(zhí)行個體之間的同步瓤的、競爭和干擾,并行程序的執(zhí)行存在著不確定性問題吞歼,即程序在相同輸入下多次執(zhí)行可能得到不同的結(jié)果圈膏。不確定性給并行程序在開發(fā)、調(diào)試篙骡、測試稽坤、容錯和安全等方面都帶來了挑戰(zhàn)丈甸,嚴重降低了并行程序的可靠性,阻礙了并行程序的發(fā)展尿褪。確定性并行技術通過控制并行程序執(zhí)行個體間的同步睦擂、競爭和干擾,使程序的執(zhí)行結(jié)果僅依賴于輸入杖玲。確定性并行技術能夠從根本上解決了目前并行程序存在的諸多問題顿仇,提升了并行程序的可靠性,給并行程序的發(fā)展帶來了新的機遇。

結(jié)合并行執(zhí)行可以這樣理解摆马,要使多個程序同時執(zhí)行臼闻,并且能更穩(wěn)更安全的執(zhí)行,就需要用到確定性并行技術囤采,理解了嗎述呐?

EOS中也運用了這樣的技術,在白皮書中是這樣說的:

  • 區(qū)塊鏈共識取決于確定性(可重現(xiàn))的行為蕉毯。
    1.意味著所有的并行程序都不能是“不確定”的乓搬,例如互斥或加鎖是不確定的,就不能用代虾。
    2.沒有鎖进肯,就需要一些方法來保證所有賬戶只能讀寫自己的私有數(shù)據(jù)庫
    3.所以每個賬戶都必須按照順序處理消息,EOS的并行性在賬戶級別褐着。
  • EOS將消息傳遞到獨立的線程中
    1.判斷并行的可能性
    2.每個賬戶的狀態(tài)只取決于傳遞給它們的消息
    3.進度表,我這里理解成消息的執(zhí)行順序托呕,這個順序在區(qū)塊產(chǎn)生后是確定的含蓉,而在產(chǎn)生過程中是不確定的,是由區(qū)塊生產(chǎn)者按照并行算法決定项郊。
  • 當腳本生成新消息時馅扣,他不會立即發(fā)送,而是被安排在下一個周期着降。因為接收方可能會在另一個線程中主動修改自己的狀態(tài)差油。

通信延遲優(yōu)化

通常一個賬戶方一條消息到另外一個賬戶,并不是立即就能收到的任洞,其中需要一定的時間蓄喇,這個時間就叫做延遲時間。EOS不希望有這個延遲時間存在交掏,他希望能夠在一個區(qū)塊內(nèi)來回交換消息妆偏。他是怎么做的呢?
EOS將區(qū)塊分成了幾個循環(huán)盅弛,循環(huán)又分成了多個線程钱骂,每個線程包含一個交易列表叔锐,每個交易包含一組要傳遞的消息。這個結(jié)構可以看成為一棵樹见秽,在這個樹中交替的層被順序的并行的處理愉烙,我們看下面這張圖


執(zhí)行流程

在一個循環(huán)中生成的交易可以在后續(xù)的任何一個循環(huán)或者區(qū)塊中被發(fā)送。 區(qū)塊生產(chǎn)者會持續(xù)不斷的向區(qū)塊中添加循環(huán)直到最大的墻上時間到了或者沒有更多的新交易要發(fā)送解取。

可以對一個區(qū)塊使用靜態(tài)分析來驗證同一個循環(huán)內(nèi)不存在兩個線程包含同一帳戶下對交易的變更步责。 只要保持不變一個區(qū)塊就可以并行的運行所有的線程。

有點繞肮蛹,其實可以這樣理解勺择,以上做法都是為了讓賬戶和賬戶之間通信更快更及時。

只讀消息處理

只讀消息的處理伦忠,EOS對于無需更新狀態(tài)的消息處理是可以并行的省核,只要特定的只讀消息處理程序被包含在特定的循環(huán)內(nèi)的一個或多個線程中就可以。

多賬戶原子交易

有時我們需要確保消息自動的被多個賬戶傳遞和接收(原子性操作)昆码。 在這種情況下气忠,消息會被放在同一個交易內(nèi),賬戶會被分配到同一個線程赋咽,并且消息被順序的添加旧噪。 這種情況對性能是不理想的,當用戶使用涉及到“賬單”時脓匿,他們將在交易內(nèi)以賬戶唯一索引被列入其中(為了確保交易成功)淘钟。

但是,基于性能和成本原因最好減少涉及兩個或多個重度帳戶的原子性操作陪毡。

部分區(qū)塊鏈狀態(tài)的評估(組件化,模塊化的判斷)

1.大規(guī)模的區(qū)塊鏈技術組件應該是模塊化的

  • 每個人都不應該運行所有的東西,特別是他們只需要運行一個小應用時
  • 例如慧耍,一個交易所的應用,只需要向用戶展示交易狀態(tài)师枣,而不需要與其他應用程序(社交媒體或其他)有狀態(tài)關聯(lián)洗贰。

2.EOS允許完整節(jié)點選擇要運行的任何程序子集

  • 傳遞給其他應用的消息可以被安全的忽略掉敛滋,因為應用程序的狀態(tài)完全由傳遞給它的消息派生绎晃。
  • 這與其他帳戶的溝通有一些重要的影響擎勘。 最重要的是棚饵,不能假定其他帳戶的狀態(tài)可以在同一臺機器上訪問硼砰。 這也意味著题翰,雖然很容易啟用“鎖”來允許一個帳戶同步調(diào)用另一個帳戶,如果其他帳戶不駐留在內(nèi)存中桅咆,這種設計模式就會出現(xiàn)問題荚虚。
  • 所有賬戶帳戶間的狀態(tài)通信必須通過包含在區(qū)塊鏈中的消息進行版述。

自主最優(yōu)任務安排

1.EOS系統(tǒng)不能強制阻止區(qū)塊生成這向其他賬戶發(fā)送的任何消息
2.每個區(qū)塊生產(chǎn)者都可以根據(jù)處理交易所需的計算復雜性和時間做出自己的主觀預測晚伙。
3.在網(wǎng)絡層面上,所有的交易都會收取一個固定的計算帶寬成本午磁,區(qū)塊生產(chǎn)者也可以使用自己的算法來測量資源的使用衙熔。
4.一般來說青责,只要一個區(qū)塊生產(chǎn)者認為一個交易是有效的扁耐,并且所消耗的資源是可控的构蹬,那么所有的其他區(qū)塊生產(chǎn)者也會接受俗壹,但是交易可能需要最長1分鐘才能找到生產(chǎn)者怖亭。為什么是一分鐘期吓,因為一分鐘內(nèi)交易可以在21個區(qū)塊生產(chǎn)者之間流轉(zhuǎn)一遍,如果還沒有找到,那么這個交易就不會被打包了。
5.這種對計算割捅、資源成本的主觀評估將使區(qū)塊鏈不必精確地去度量運行一個任務需要多長時間奶躯。有了這個設計,就不需要精確地數(shù)指令亿驾,這將極大地增加優(yōu)化的機會嘹黔,而不會打破“共識”。

配合學習筆記系列文章一起讀會更好理解哦

上一篇:EOS技術白皮書學習筆記(二)- 賬戶系統(tǒng)

下一篇:EOS技術白皮書學習筆記(四) - 令牌模型和資源使用

本文首發(fā)于微信公眾號:lin-mingtan 歡迎關注交流 .

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末莫瞬,一起剝皮案震驚了整個濱河市儡蔓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疼邀,老刑警劉巖喂江,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異旁振,居然都是意外死亡获询,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門拐袜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吉嚣,“玉大人,你說我怎么就攤上這事蹬铺〕⒍撸” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵甜攀,是天一觀的道長秋泄。 經(jīng)常有香客問我,道長赴邻,這世上最難降的妖魔是什么印衔? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任啡捶,我火速辦了婚禮姥敛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞎暑。我一直安慰自己彤敛,他們只是感情好与帆,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著墨榄,像睡著了一般玄糟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袄秩,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天阵翎,我揣著相機與錄音,去河邊找鬼之剧。 笑死郭卫,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的背稼。 我是一名探鬼主播贰军,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蟹肘!你這毒婦竟也來了词疼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤帘腹,失蹤者是張志新(化名)和其女友劉穎贰盗,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阳欲,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡童太,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胸完。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片书释。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赊窥,靈堂內(nèi)的尸體忽然破棺而出爆惧,到底是詐尸還是另有隱情,我是刑警寧澤锨能,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布扯再,位于F島的核電站,受9級特大地震影響址遇,放射性物質(zhì)發(fā)生泄漏熄阻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一倔约、第九天 我趴在偏房一處隱蔽的房頂上張望秃殉。 院中可真熱鬧,春花似錦、人聲如沸钾军。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吏恭。三九已至拗小,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間樱哼,已是汗流浹背哀九。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留搅幅,地道東北人勾栗。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像盏筐,于是被迫代替她去往敵國和親围俘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

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