EOS.IO 技術(shù)白皮書

草案:2017 年 6 月 26 日 (@dayzh (https://steemit.com/@dayzh))

摘要: EOS.IO 軟件引入一種新的區(qū)塊鏈架構(gòu)設(shè)計(jì)蜘欲,它使得去中心化的應(yīng)用可以橫向和縱向的擴(kuò)展把篓。 這通過構(gòu)建一個(gè)仿操作系統(tǒng)的方式來實(shí)現(xiàn),在它之上可以構(gòu)建應(yīng)用程序。 該軟件提供帳戶、身份驗(yàn)證是牢、數(shù)據(jù)庫、異步通信和跨越數(shù)百個(gè) CPU 內(nèi)核或集群的應(yīng)用程序調(diào)度礁击。 由此產(chǎn)生的技術(shù)是一種區(qū)塊鏈架構(gòu)盐杂,它可以擴(kuò)展至每秒處理百萬級(jí)交易,消除用戶的手續(xù)費(fèi)哆窿,并且允許快速和輕松的部署去中心化的應(yīng)用链烈。

PLEASE NOTE: CRYPTOGRAPHIC TOKENS REFERRED TO IN THIS WHITE PAPER REFER TO CRYPTOGRAPHIC TOKENS ON A LAUNCHED BLOCKCHAIN THAT ADOPTS THE EOS.IO SOFTWARE. THEY DO NOT REFER TO THE ERC-20 COMPATIBLE TOKENS BEING DISTRIBUTED ON THE ETHEREUM BLOCKCHAIN IN CONNECTION WITH THE EOS TOKEN DISTRIBUTION.

Copyright ? 2017 block.one

未經(jīng)允許,在非用于商業(yè)和教育用途的前提下 (即挚躯,除了收取費(fèi)用或商業(yè)目的)强衡,如果注明原始出處并適用聲明的版權(quán),任何人可以使用码荔、復(fù)制或發(fā)布本白皮書內(nèi)的任何內(nèi)容漩勤。

免責(zé)聲明: 本 EOS.IO 技術(shù)白皮書草案僅供參考。 block.one does not guarantee the accuracy of or the conclusions reached in this white paper, and this white paper is provided “as is”. block.one does not make and expressly disclaims all representations and warranties, express, implied, statutory or otherwise, whatsoever, including, but not limited to: (i) warranties of merchantability, fitness for a particular purpose, suitability, usage, title or noninfringement; (ii) that the contents of this white paper are free from error; and (iii) that such contents will not infringe third-party rights. block.one and its affiliates shall have no liability for damages of any kind arising out of the use, reference to, or reliance on this white paper or any of the content contained herein, even if advised of the possibility of such damages. In no event will block.one or its affiliates be liable to any person or entity for any damages, losses, liabilities, costs or expenses of any kind, whether direct or indirect, consequential, compensatory, incidental, actual, exemplary, punitive or special for the use of, reference to, or reliance on this white paper or any of the content contained herein, including, without limitation, any loss of business, revenues, profits, data, use, goodwill or other intangible losses.

背景

區(qū)塊鏈技術(shù)是通過 2008 年誕生的比特幣貨幣得以被認(rèn)知缩搅,自從那之后企業(yè)家和開發(fā)者就不斷的嘗試推廣這一技術(shù)越败,以便在單一的區(qū)塊鏈平臺(tái)上支持更為廣泛的應(yīng)用程序。

而一些區(qū)塊鏈平臺(tái)努力的支持可運(yùn)作的去中心化應(yīng)用硼瓣,具體的應(yīng)用比如 BitShares 去中心化交易所 (2014) 和 Steem 社交媒體平臺(tái) (2016) 已經(jīng)成為每天被成千上萬活躍用戶重度使用的區(qū)塊鏈究飞。 他們能做到這些,是通過性能的提升達(dá)到每秒處理上千交易堂鲤,消除手續(xù)費(fèi)和提供堪比已經(jīng)存在的中心化服務(wù)的用戶體驗(yàn)亿傅。

已存在的區(qū)塊鏈平臺(tái)承擔(dān)著大量的交易費(fèi)和有限的可計(jì)算能力,這都阻礙了區(qū)塊鏈技術(shù)的大面積應(yīng)用瘟栖。

區(qū)塊鏈應(yīng)用的要求

為了贏得廣泛的應(yīng)用葵擎,構(gòu)建在區(qū)塊鏈之上的應(yīng)用需要一個(gè)靈活性足以滿足以下要求的平臺(tái):

支持成百上千的用戶

像 Ebay、Uber慢宗、AirBnB 和 Facebook 這樣企業(yè)坪蚁,他們需要區(qū)塊鏈技術(shù)能處理每日數(shù)以千萬的活躍用戶奔穿。 在某些情況下,除非用戶群體達(dá)到一個(gè)極龐大的量級(jí)否則應(yīng)用并無用武之地敏晤,因此一個(gè)可以處理極其龐大用戶的平臺(tái)是至關(guān)重要的贱田。

免費(fèi)的使用

Application developers need the flexibility to offer users free services; users should not have to pay in order to use the platform or benefit from its services. 一個(gè)可以免費(fèi)供用戶使用的區(qū)塊鏈平臺(tái)或許將贏得更為廣泛的使用。 開發(fā)者和企業(yè)可以制訂有效的貨幣化戰(zhàn)略嘴脾。

簡單升級(jí)和 bug 修復(fù)

企業(yè)構(gòu)建區(qū)塊鏈基礎(chǔ)的應(yīng)用需要能夠?yàn)閼?yīng)用增加新特性的靈活性男摧。

所有非同凡響的軟件都會(huì)受到 bug 的影響,即便是經(jīng)過了最嚴(yán)格意義上的驗(yàn)證译打。這個(gè)平臺(tái)必須具有足夠的魯棒性以便應(yīng)對(duì)不可避免出現(xiàn)的 bug耗拓。

低延時(shí)

一個(gè)好的用戶體驗(yàn)需要延時(shí)時(shí)間在數(shù)秒內(nèi)就能收到可靠的反饋。 高延時(shí)會(huì)阻礙用戶奏司,并且會(huì)讓構(gòu)建在區(qū)塊鏈上的應(yīng)用比已有的非區(qū)塊鏈應(yīng)用缺乏競爭力乔询。

時(shí)序性能

一些應(yīng)用因?yàn)轫樞蛞蕾囮P(guān)系的執(zhí)行步驟而不能使用并發(fā)算法實(shí)現(xiàn)。 比如交易所就需要足夠的時(shí)序性能來處理很高的交易量韵洋,因此高時(shí)序性能處理的平臺(tái)是必須的竿刁。

并發(fā)性能

大型可擴(kuò)展應(yīng)用需要將工作量分配到多 CPU 和計(jì)算機(jī)之上。

共識(shí)算法 (DPOS)

EOS.IO 軟件使用唯一能滿足區(qū)塊鏈之上應(yīng)用性能需求的去中心化共識(shí)算法搪缨,委托股權(quán)證明 (DPOS)食拜。 Under this algorithm, those who hold tokens on a blockchain adopting the EOS.IO software may select block producers through a continuous approval voting system and anyone may choose to participate in block production and will be given an opportunity to produce blocks proportional to the total votes they have received relative to all other producers. For private blockchains the management could use the tokens to add and remove IT staff.

EOS.IO 軟件使得區(qū)塊準(zhǔn)確的每 3 秒生成一個(gè)并且在任何時(shí)間點(diǎn)都只有一個(gè)被授權(quán)的生產(chǎn)者來生成區(qū)塊。 如果一個(gè)區(qū)塊在規(guī)定時(shí)間之內(nèi)未被生產(chǎn)出來則這一區(qū)塊將被跳過副编。 當(dāng)一個(gè)或多個(gè)區(qū)塊被跳過發(fā)生時(shí)负甸,在區(qū)塊鏈中會(huì)有一個(gè) 6 秒及以上的間隔。

在 EOS.IO 軟件中痹届,區(qū)塊通過 21 名生產(chǎn)者輪流產(chǎn)生呻待。 在每一輪的開始時(shí),21 個(gè)唯一的區(qū)塊生產(chǎn)者被選出队腐。 獲票最高的前 20 名自動(dòng)在沒輪被選中带污,剩余的一個(gè)生產(chǎn)者通過得票比例選出。 被選中的生產(chǎn)者通過從區(qū)塊取到的時(shí)間作為偽隨機(jī)數(shù)來打亂其順序香到。 打亂順序是為確保這些生產(chǎn)者與其他生產(chǎn)者保持均衡的連通性鱼冀。

如果一個(gè)生產(chǎn)者錯(cuò)過了一個(gè)區(qū)塊并且在過去的 24 小時(shí)內(nèi)沒有生產(chǎn)任何的區(qū)塊,那么它將被從候選中移除悠就,直到它在區(qū)塊鏈中通知它要開始再次生產(chǎn)區(qū)塊的意圖千绪。 這樣通過最小化區(qū)塊丟失數(shù)量(因被證實(shí)不可靠的節(jié)點(diǎn)不作為導(dǎo)致)來確保網(wǎng)絡(luò)操作的穩(wěn)定性。

在一般情況下梗脾,一個(gè) DPOS 區(qū)塊鏈不會(huì)經(jīng)歷任何的分叉荸型,因?yàn)閰^(qū)塊生產(chǎn)者是通過合作而非競爭的方式來生產(chǎn)區(qū)塊。 即便真的出現(xiàn)了分叉炸茧,共識(shí)也將自動(dòng)的切換到最長的鏈上瑞妇。 之所以會(huì)這樣運(yùn)作稿静,是因?yàn)閰^(qū)塊添加到一個(gè)區(qū)塊鏈分叉的速率與公用同一共識(shí)的區(qū)塊生產(chǎn)者比例是相關(guān)的。 換句話說辕狰,具有更多生產(chǎn)者的區(qū)塊鏈分叉會(huì)比擁有較少生產(chǎn)的那一個(gè)條增長的速度更快改备。 而且,沒有一個(gè)生產(chǎn)者會(huì)同時(shí)在兩個(gè)分叉上同時(shí)生產(chǎn)區(qū)塊蔓倍。 如果一個(gè)區(qū)塊生產(chǎn)者被抓到做這樣的事兒悬钳,那么這個(gè)生產(chǎn)者將很可能被投票投出。 這些雙重生產(chǎn)行為對(duì)應(yīng)密碼學(xué)憑證可以用來自動(dòng)的刪除這些濫用者偶翅。

交易確認(rèn)

通常 DPOS 區(qū)塊鏈 100% 會(huì)有區(qū)塊生產(chǎn)者參與默勾。一個(gè)交易從廣播開始后平均 1.5 秒就可以 99.9% 被認(rèn)為是確認(rèn)了。

在一些特殊情況下例外聚谁,軟件出現(xiàn) bug母剥,網(wǎng)絡(luò)擁塞,或一個(gè)惡意的區(qū)塊生產(chǎn)者制造了兩個(gè)或更多的分叉形导。 為了確保一個(gè)交易絕對(duì)是不可逆的媳搪,一個(gè)節(jié)點(diǎn)可以選擇等待 21 個(gè)區(qū)塊生產(chǎn)者中的 15 個(gè)給出確認(rèn)。 基于通常的 EOS.IO 軟件配置骤宣,在一般情況下這需要平均 45 秒的時(shí)間。 默認(rèn)情況下序愚,所有的節(jié)點(diǎn)將認(rèn)為當(dāng) 21 個(gè)生產(chǎn)者中有 15 個(gè)給出確認(rèn)后這一區(qū)塊就是不可逆的了憔披,并且不管長度如何都不會(huì)切換到?jīng)]有這一區(qū)塊的分叉。

在分叉開始的 9 秒內(nèi)爸吮,一個(gè)節(jié)點(diǎn)就可以警告用戶他們極可能正處于分叉中芬膝。 在連續(xù)丟失 2 個(gè)區(qū)塊后,有 95% 的概率可以確認(rèn)一個(gè)節(jié)點(diǎn)處于分叉中形娇。 在連續(xù)丟失 3 個(gè)區(qū)塊后就有 99% 的概率確認(rèn)锰霜。 可以通過節(jié)點(diǎn)丟失、近期參與比率和其他參數(shù)來構(gòu)建魯棒性預(yù)測模型桐早,從而快速的警告操作者出現(xiàn)了問題癣缅。

對(duì)于這種警告的反應(yīng)完全取決于商業(yè)交易的性質(zhì),但最簡單的做法就是等待 15/21 的確認(rèn)直到警告消失哄酝。

股權(quán)證明的交易 (TaPoS)

EOS.IO 軟件需要每一個(gè)交易包含最近一個(gè)區(qū)塊頭的哈希值友存。這個(gè)哈希值有兩個(gè)目的:

  1. 防止不包含區(qū)塊引用的交易在分叉時(shí)重放發(fā)生;和
  2. 通知網(wǎng)絡(luò)對(duì)應(yīng)的用戶和他們的股份當(dāng)前在某個(gè)具體的分叉上陶衅。

隨著時(shí)間的推移屡立,所有的用戶直接確認(rèn)區(qū)塊鏈,在這一鏈條上難以偽造假的鏈條搀军,因?yàn)榧俚逆湕l根本無法從合法鏈條上遷移交易膨俐。

帳戶

EOS.IO 軟件允許所有的帳戶使用一個(gè)唯一的人類可讀的名稱來索引勇皇,長度在 2 到 32 個(gè)字符之間。 這個(gè)名稱由帳戶創(chuàng)建者自己選擇焚刺。 所有的帳戶必須在創(chuàng)建時(shí)用極少的帳戶余額來注資敛摘,從而覆蓋存儲(chǔ)帳戶信息的成本。 帳戶名稱也支持命名空間檩坚,比如 @domain 這個(gè)帳戶的擁有者是唯一可以創(chuàng)建 @user.domain 帳戶的人着撩。

在一個(gè)去中心化的場景中,應(yīng)用開發(fā)者將會(huì)為新用戶注冊(cè)成本買單匾委。 Traditional businesses already spend significant sums of money per customer they acquire in the form of advertising, free services, etc. 比起來拖叙,資助一個(gè)新的區(qū)塊鏈帳戶的花費(fèi)簡直微不足道。 值得慶幸的是赂乐,對(duì)一個(gè)已經(jīng)在另一個(gè)應(yīng)用注冊(cè)過的用戶并不需要再創(chuàng)建新的帳戶薯鳍。

消息 & 處理

每個(gè)帳戶可以發(fā)送結(jié)構(gòu)化的消息給其他的帳戶,并且可以定義腳本來處理他們接收到的消息挨措。 EOS.IO 軟件給每個(gè)帳戶提供了只有自己的消息處理腳本能訪問的私有數(shù)據(jù)庫挖滤。 消息處理腳本同樣可以給其他帳戶發(fā)送消息。 消息和自動(dòng)化的消息處理的結(jié)合決定了 EOS.IO 如何定義智能合約的浅役。

基于角色的權(quán)限管理

權(quán)限管理涉及判定一條消息是否被正確的授權(quán)斩松。 權(quán)限管理最簡單的形式就是檢查一個(gè)交易包含必須的簽名,但這意味著必須的簽名是已知的觉既。 一般情況下惧盹,權(quán)威必然是獨(dú)立的個(gè)體或者個(gè)體組成的群體,并且是被劃分開的瞪讼。 EOS.IO 軟件提供了聲明式的權(quán)限管理系統(tǒng)钧椰,通過管理誰可以在什么時(shí)間做什么來給用戶細(xì)力度和高維度的控制。

授權(quán)和權(quán)限管理被標(biāo)準(zhǔn)化和脫離應(yīng)用的商業(yè)邏輯是不可取的符欠。 這使得管理權(quán)限的工具得以被開發(fā)嫡霞,既滿足常規(guī)的需求又為性能優(yōu)化提供了重要的可能性。

每一個(gè)帳戶可以被任何權(quán)重組合的其他帳戶和私鑰管控希柿。 這創(chuàng)建了分層級(jí)的權(quán)利結(jié)構(gòu)诊沪,這反映了現(xiàn)實(shí)中的權(quán)限分配方式,并且讓多用戶共同管理資產(chǎn)變得從未如此簡單曾撤。 多用戶控制是安全最大的貢獻(xiàn)者娄徊,并且,當(dāng)用戶使用得當(dāng)盾戴,它可以極大的消除因被黑而導(dǎo)致被盜竊的風(fēng)險(xiǎn)寄锐。

EOS.IO software allows accounts to define what combination of keys and/or accounts can send a particular message type to another account. 舉個(gè)例子,可以指定一個(gè)密鑰給一個(gè)用戶的社交媒體賬號(hào),同時(shí)另一個(gè)密鑰訪問交易所橄仆。 甚至可以給其他帳戶權(quán)限來代表自己而無需分配給他們密鑰剩膘。

命名的權(quán)限級(jí)別

在 EOS.IO 軟件中,帳戶可以定義命名的權(quán)限級(jí)別盆顾,每一個(gè)是由更高級(jí)別的命名權(quán)限派生而來怠褐。 每一個(gè)命名的權(quán)限級(jí)別定義了一個(gè)權(quán)威;一個(gè)權(quán)威是多重簽名閾值校驗(yàn)您宪,它包含密鑰和/或其他帳戶的命名權(quán)限級(jí)別奈懒。 打個(gè)比方,一個(gè)帳戶的“朋友”權(quán)限級(jí)別可以被設(shè)置為由該帳戶的任何一個(gè)朋友無差別的控制宪巨。

另一個(gè)例子在 Steem 區(qū)塊鏈中磷杏,它包含三個(gè)硬編碼的命名權(quán)限級(jí)別:擁有,活躍和發(fā)帖捏卓。 發(fā)帖權(quán)限就只能進(jìn)行如投票和發(fā)帖的社交活動(dòng)极祸,而活躍權(quán)限可以做除了變更擁有之外的所有的事情。 擁有權(quán)限的意思是冷存儲(chǔ)并且有能力做任何事怠晴。 The EOS.IO software generalizes this concept by allowing each account holder to define their own hierarchy as well as the grouping of actions.

命名的消息處理群組

EOS.IO 軟件允許每個(gè)帳戶將他們自己的消息組織到一個(gè)命名和嵌套的群組中遥金。 這個(gè)命名的消息處理群組可以在其他帳戶配置他們權(quán)限級(jí)別時(shí)被引用。

最高級(jí)別的消息處理群組是帳戶名稱蒜田,最低級(jí)別的是一個(gè)帳戶接收到的單獨(dú)的消息類型稿械。 這些群組可以被這樣的方式引用: @accountname.groupa.subgroupb.MessageType.

在這樣的模型之下,交易所合約可以通過將掛單的創(chuàng)建和取消分組冲粤,從而與充值提現(xiàn)分離開美莫。 交易所合約的這樣分組對(duì)用戶而言帶來了方便。

權(quán)限映射

EOS.IO 軟件允許每個(gè)帳戶定義從任意帳戶的一個(gè)命名的消息處理群組與自己的命名的權(quán)限級(jí)別之間建立映射色解。 舉個(gè)例子,一個(gè)帳戶所有者可以將自己社交媒體應(yīng)用與自己的“朋友”權(quán)限群組建立映射餐茵。 有了這個(gè)映射科阎,任何朋友可以以這一帳戶的身份在這一帳戶的社交媒體上發(fā)帖。 盡管他們將以帳戶所有者的身份發(fā)帖忿族,他們?nèi)匀皇褂米约旱拿荑€來簽名消息锣笨。 這意味著總是可以辨識(shí)出是哪一個(gè)朋友在以何種方式使用帳戶。

評(píng)估權(quán)限

當(dāng) @alice 以 "Action" 類型發(fā)送一條消息給 @bob 時(shí)道批,EOS.IO 軟件首先會(huì)檢查 @alice 是否為 @bob.groupa.subgroup.Action 定義過權(quán)限映射错英。 如果什么都沒有找到,緊接著檢查 @bob.groupa.subgroup 映射隆豹,然后是 @bob.groupa椭岩,最后 @bob 將被檢查。 如果都沒有找到,那么假定映射為命名的權(quán)限群組 @alice.active判哥。

一旦一個(gè)映射被識(shí)別献雅,則通過閾值多簽名流程驗(yàn)證簽名權(quán)威,并且關(guān)聯(lián)權(quán)威與命名的權(quán)限塌计。 如果失敗了挺身,則躍遷至父權(quán)限,直至擁有者權(quán)限锌仅,@alice.owner章钾。

默認(rèn)權(quán)限群組

The EOS.IO technology also allows all accounts to have an "owner" group which can do everything, and an "active" group which can do everything except change the owner group. 所有其他的全新群組派生自“活動(dòng)”群組。

權(quán)限并行評(píng)估

權(quán)限評(píng)估過程是“只讀”的热芹,并且通過交易對(duì)權(quán)限的變更在一個(gè)區(qū)塊結(jié)束之前不會(huì)起作用贱傀。 這意味著對(duì)所有的交易對(duì)應(yīng)的密鑰和權(quán)限評(píng)估可以被并行執(zhí)行。 此外剿吻,這意味著一個(gè)快速的權(quán)限驗(yàn)證是可行的窍箍,它無需啟動(dòng)會(huì)引起回滾需求的高成本的應(yīng)用邏輯。 最后丽旅,這意味著交易權(quán)限可以被評(píng)估即便接收到等待的交易椰棘,并且之后無需再重新評(píng)估。

從各方面考慮榄笙,權(quán)限驗(yàn)證占據(jù)了驗(yàn)證交易計(jì)算量的很大比例邪狞。 讓其只讀和普遍的并發(fā)處理將會(huì)使得性能有一個(gè)質(zhì)的飛躍。

當(dāng)從消息日志中重新生成確定性狀態(tài)時(shí)不再需要重復(fù)的權(quán)限驗(yàn)證茅撞。 事實(shí)是一個(gè)交易如果被包含近了一個(gè)被認(rèn)為不存在問題的區(qū)塊時(shí)它就有足夠的理由跳過這 步這將極大減少因?yàn)閰^(qū)塊鏈增長拉去過去記錄時(shí)的計(jì)算量帆卓。

帶強(qiáng)制性延時(shí)的消息

時(shí)間是安全中的一個(gè)關(guān)鍵組成部分。 在大多數(shù)情況下米丘,一個(gè)私鑰在沒有被使用前都無從知曉它是否被偷竊剑令。 當(dāng)人們有需要密鑰的應(yīng)用在每天聯(lián)網(wǎng)使用的電腦上運(yùn)行時(shí),基于時(shí)間的安全會(huì)更為重要拄查。 EOS.IO 軟件讓應(yīng)用開發(fā)者可以指明消息必須在被加到一個(gè)區(qū)塊之前等待最小的時(shí)間間隙吁津。 During this time they can be cancelled.

用戶可以在消息廣播出去后通過郵件或者文字消息的形式收到通知。 如果他們沒有授權(quán)堕扶,那么他們可以使用帳戶恢復(fù)流程來恢復(fù)帳戶碍脏,并收回消息。

這個(gè)必須的延時(shí)由操作敏感性決定稍算。 為一杯咖啡付款可以沒有任何的延時(shí)典尾,幾秒之內(nèi)就不可逆了,而購買一個(gè)房子也許需要 72 消失的結(jié)算期糊探。 轉(zhuǎn)移整個(gè)帳戶到一個(gè)新的控制可能需要長達(dá) 30 天钾埂。 具體的延時(shí)選擇由開發(fā)者和用戶自己來做選擇河闰。

恢復(fù)被盜竊的密鑰

EOS.IO 軟件提供給用戶一種找回自己失竊密鑰控制權(quán)的方式。 一個(gè)帳戶的所有者可以使用過去 30 天任何活躍的擁有者密鑰與事先指定的合作者帳戶給出的批準(zhǔn)來重置自己帳戶的密鑰勃教。 帳戶的恢復(fù)合作者在沒有所有人幫助的情況下無法重置帳戶的控制權(quán)淤击。

黑客嘗試進(jìn)行恢復(fù)流程是無意義的,因?yàn)樗麄円呀?jīng)“控制”了帳戶故源。 此外污抬,就算他們真的進(jìn)行這一流程,恢復(fù)合作者也會(huì)詢問身份證明和多因素認(rèn)證 (手機(jī)和郵件)绳军。 這會(huì)讓黑客脫作出讓步或者無功而返印机。

這一流程與簡單的多重簽名有很大差異。 在多重簽名中门驾,另一個(gè)公司要參與所有轉(zhuǎn)賬的執(zhí)行射赛,但在恢復(fù)流程中,它卻只在恢復(fù)時(shí)才起作用對(duì)每天的轉(zhuǎn)賬無從干預(yù)奶是。 這大大的降低了參與者的成本和法律責(zé)任楣责。

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

區(qū)塊鏈共識(shí)取決于確定性 (可重現(xiàn)的) 的行為。 這意味著所有的并行計(jì)算必須是不能互斥或者具有其他鎖特性的聂沙。 沒有了鎖就必須有一些方式可以確保所有的帳戶只可以讀取和寫入他們自己的私有數(shù)據(jù)庫秆麸。 這也意味著每個(gè)帳戶處理消息是順序的,而并發(fā)只能在帳戶層面進(jìn)行及汉。

In an EOS.IO software-based blockchain, it is the job of the block producer to organize message delivery into independent threads so that they can be evaluated in parallel. 每個(gè)帳戶的狀態(tài)由且只由發(fā)送給它的消息決定沮趣。 進(jìn)度表由區(qū)塊生產(chǎn)者輸出并且會(huì)被確定性的執(zhí)行,但是生成進(jìn)度表的過程卻不一定是確定性的坷随。 這意味著區(qū)塊生產(chǎn)者可以使用并發(fā)算法來調(diào)度交易房铭。

并行執(zhí)行的一方面意味著當(dāng)一個(gè)腳本生成了一個(gè)新的消息,它不會(huì)立即被發(fā)送温眉,而被安排在下一個(gè)輪訓(xùn)中發(fā)送缸匪。 不能立馬發(fā)出的原因是接受者可能在另一個(gè)線程中活躍的變更自己的狀態(tài)。

最小化通信延遲

延遲是一個(gè)帳戶從發(fā)出一條消息給另一個(gè)帳戶类溢,直到收到回應(yīng)的這段時(shí)間凌蔬。 我們的目標(biāo)是在一個(gè)單獨(dú)的區(qū)塊中包含兩個(gè)帳戶交換消息的來去信息,而不用在每條消息間等待 3 秒鐘豌骏。 為了做到這一點(diǎn)龟梦,EOS.IO 軟件將每個(gè)區(qū)塊劃分為循環(huán)隐锭。 每個(gè)循環(huán)劃分為線程窃躲,每個(gè)線程包含了交易的一個(gè)列表。 每一個(gè)交易包含了待發(fā)送的消息集合钦睡。 這個(gè)結(jié)構(gòu)可以被可視化為一個(gè)樹蒂窒,其中交互層彼此并行,各自被順序的執(zhí)行。

    區(qū)塊

      循環(huán) (順序)

        線程 (并行)

          交易 (順序)

            消息 (順序)

              接受者和被通知帳戶 (并行)

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

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

只讀消息的處理

有些帳戶可以在傳遞/失敗的基礎(chǔ)上處理消息而不修改內(nèi)部狀態(tài)象迎。 如果是這樣的話,那么這些處理程序可以并行執(zhí)行呛踊,只要只有一個(gè)特定的帳戶的只讀消息處理程序包含在一個(gè)或多個(gè)線程在一個(gè)特定的周期砾淌。

多帳戶的原子化交易

有時(shí)我們需要確保消息自動(dòng)的被多個(gè)賬戶傳遞和接收。 在這種情況下谭网,消息會(huì)被放在同一個(gè)交易內(nèi)汪厨,賬戶會(huì)被分配到同一個(gè)線程,并且消息被順序的添加愉择。 這種情況對(duì)性能是不理想的劫乱,當(dāng)用戶使用涉及到“賬單”時(shí),他們將在交易內(nèi)以賬戶唯一索引被列入其中锥涕。

基于性能和成本原因最好減少涉及兩個(gè)或多個(gè)重度帳戶的原子性操作衷戈。

區(qū)塊鏈狀態(tài)的部分評(píng)估

擴(kuò)展區(qū)塊鏈技術(shù)使得組件化成為必要。每個(gè)人不應(yīng)該執(zhí)行所有的事務(wù)站楚,尤其是當(dāng)其只需要運(yùn)行應(yīng)用的一個(gè)小的子集脱惰。

一個(gè)交易所應(yīng)用開發(fā)者運(yùn)行一個(gè)完整節(jié)點(diǎn)位的是為其用戶展現(xiàn)所有的狀態(tài)。 這個(gè)交易所應(yīng)用沒有與社交網(wǎng)絡(luò)建立關(guān)聯(lián)的必要性窿春。 EOS.IO 軟件允許任何的完整節(jié)點(diǎn)選擇應(yīng)用的任何子集來執(zhí)行拉一。 傳遞給其他應(yīng)用的消息可以被安全的忽略掉,因?yàn)閼?yīng)用程序的狀態(tài)完全由傳遞給它的消息派生旧乞。

這與其他帳戶的溝通有一些重要的影響蔚润。 最重要的是,不能假定其他帳戶的狀態(tài)可以在同一臺(tái)機(jī)器上訪問尺栖。 這也意味著嫡纠,雖然很容易啟用“鎖”來允許一個(gè)帳戶同步調(diào)用另一個(gè)帳戶,如果其他帳戶不駐留在內(nèi)存中延赌,這種設(shè)計(jì)模式就會(huì)出現(xiàn)問題除盏。

所有賬戶帳戶間的狀態(tài)通信必須通過包含在區(qū)塊鏈中的消息進(jìn)行。

自主最優(yōu)調(diào)度

EOS.IO 軟件并不能為區(qū)塊生產(chǎn)生者為任何其他帳戶送達(dá)的任何信息負(fù)責(zé)挫以。 每個(gè)區(qū)塊生產(chǎn)者要對(duì)計(jì)算的發(fā)雜讀和處理一個(gè)消息的時(shí)間自己進(jìn)行主觀上的預(yù)測者蠕。 這同時(shí)適用于用戶生成的和腳本自動(dòng)生成的交易踱侣。

On a launched blockchain adopting the EOS.IO software, at a network level all transactions are billed a fixed computational bandwidth cost regardless of whether it took .01ms or a full 10 ms to execute it. 然而,每個(gè)單獨(dú)的區(qū)塊生產(chǎn)者要通過自己的算法來計(jì)算資源的消耗抡句。 當(dāng)一個(gè)區(qū)塊生產(chǎn)者斷定一個(gè)交易或者帳戶消耗了不相稱的大量的計(jì)算資源時(shí),他們可以在生成自己的區(qū)塊時(shí)拒絕該交易逞壁;但是锐锣,如果其他區(qū)塊生產(chǎn)者認(rèn)為交易是有效的,他們就仍需要處理交易绑嘹。

一般而言橘茉,只要一個(gè)區(qū)塊生產(chǎn)者認(rèn)為交易在資源使用限度內(nèi)是有效的工腋,那么其他區(qū)塊生產(chǎn)者就也要接受,但可能交易傳遞給生產(chǎn)者就要花費(fèi) 1 分鐘畅卓。

在某些情況下擅腰,生產(chǎn)者可以創(chuàng)建包含可接受范圍之外的數(shù)量級(jí)的塊。 在這種情況下翁潘,下一個(gè)區(qū)塊生產(chǎn)者可能會(huì)選擇拒絕區(qū)塊和束縛將被第三個(gè)生產(chǎn)者打破趁冈。 這和因?yàn)閰^(qū)塊過大導(dǎo)致的網(wǎng)絡(luò)延時(shí)沒什么打不同。 社區(qū)會(huì)注意到模式的異常并最終會(huì)將票從流氓生產(chǎn)者哪里刪掉拜马。

這種對(duì)計(jì)算成本的主觀評(píng)估將區(qū)塊鏈從必須精確和確定的預(yù)測一些東西要花多長時(shí)間來運(yùn)行這一問題中解放出來渗勘。 有了這一設(shè)計(jì)就不需要精確的數(shù)指令,將極大的增加優(yōu)化的可能性又不必打破共識(shí)俩莽。

Token 模型與資源使用

PLEASE NOTE: CRYPTOGRAPHIC TOKENS REFERRED TO IN THIS WHITE PAPER REFER TO CRYPTOGRAPHIC TOKENS ON A LAUNCHED BLOCKCHAIN THAT ADOPTS THE EOS.IO SOFTWARE. THEY DO NOT REFER TO THE ERC-20 COMPATIBLE TOKENS BEING DISTRIBUTED ON THE ETHEREUM BLOCKCHAIN IN CONNECTION WITH THE EOS TOKEN DISTRIBUTION.

All blockchains are resource constrained and require a system to prevent abuse. With a blockchain that uses EOS.IO software, there are three broad classes of resources that are consumed by applications:

  1. 帶寬和日志存儲(chǔ) (磁盤)旺坠;
  2. 計(jì)算與計(jì)算儲(chǔ)備 (中央處理器);
  3. 狀態(tài)存儲(chǔ) (內(nèi)存)扮超。

帶寬和計(jì)算有兩部分取刃,瞬時(shí)使用和長期使用。 一個(gè)區(qū)塊鏈維持著所有消息的日志出刷,這些日志最終由完全節(jié)點(diǎn)存儲(chǔ)和下載璧疗。 通過消息日志可以重現(xiàn)所有應(yīng)用的狀態(tài)。

可計(jì)算債務(wù)是一個(gè)必須通過消息日志重新構(gòu)建狀態(tài)的計(jì)算結(jié)果馁龟。 如果可計(jì)算債務(wù)增長變得臃腫則有必要通過快照方式記錄區(qū)塊鏈狀態(tài)崩侠,并丟棄區(qū)塊鏈歷史。 如果可計(jì)算債務(wù)增長過快屁柏,則它需要花費(fèi) 6 個(gè)月時(shí)間來重放等值與 1 年的交易啦膜。 這很不可取僧家,因此,可計(jì)算債務(wù)需要被細(xì)心的管理肌稻。

區(qū)塊鏈狀態(tài)存儲(chǔ)是通過訪問應(yīng)用邏輯獲取的信息爹谭。 它包括諸如掛單和賬戶余額等信息诺凡。 如果狀態(tài)從未被應(yīng)用讀取則它不會(huì)被存儲(chǔ)。 比如凉袱,博客發(fā)布的內(nèi)容和評(píng)論如未被應(yīng)用邏輯讀取則他們就不應(yīng)該存儲(chǔ)在區(qū)塊鏈狀態(tài)中专甩。 同時(shí),發(fā)布的內(nèi)容/評(píng)論的存在篓叶、投票的數(shù)量和其他屬性要作為區(qū)塊鏈狀態(tài)的部分被存儲(chǔ)下來缸托。

區(qū)塊生產(chǎn)者對(duì)外發(fā)布她們可用的帶寬,計(jì)算能力和狀態(tài)佩抹。 EOS.IO 允許帳戶按比例消耗一個(gè) 3 天對(duì)賭合約中的可用資源无宿。 舉個(gè)例子孽鸡,如果一個(gè)基于 EOS.IO 的區(qū)塊鏈啟動(dòng)了彬碱,一個(gè)帳戶持有所有 token 發(fā)行總量的 1%存皂,那么帳號(hào)就具有使用 1% 狀態(tài)存儲(chǔ)空間的能力。

Adopting the EOS.IO software on a launched blockchain means bandwidth and computational capacity are allocated on a fractional reserve basis because they are transient (unused capacity cannot be saved for future use). The algorithm used by EOS.IO software is similar to the algorithm used by Steem to rate-limit bandwidth usage.

客觀與主觀的度量

如前所述伏尼,檢測計(jì)算使用的性能和優(yōu)化的影響很大爆阶;因此,所有資源的使用限制故河,最終都是主觀的鱼的,執(zhí)行依靠個(gè)人的算法和區(qū)塊生產(chǎn)者進(jìn)行估計(jì)。

也就是說宙橱,有一些事情是微不足道的客觀衡量环葵。 發(fā)送的消息數(shù)和存儲(chǔ)在內(nèi)部數(shù)據(jù)庫中的數(shù)據(jù)的大小是便宜的客觀衡量。 的 EOS.IO 軟件讓區(qū)塊生產(chǎn)者采用相同的算法應(yīng)對(duì)客觀的量,但可以在主觀量上選擇采用更嚴(yán)格的主觀測量算法湿刽。

接收方付費(fèi)

傳統(tǒng)上來說诈闺,企業(yè)為辦公場地、計(jì)算力和其他為了運(yùn)行企業(yè)而需要的成本買單仁烹。 客戶從企業(yè)購買具體的產(chǎn)品卓缰,產(chǎn)品銷售產(chǎn)生的利潤來蓋過企業(yè)運(yùn)作的成本。 類似的总寒,沒有哪個(gè)網(wǎng)站要求來訪者為蓋過運(yùn)作成本而支付摄闸。 因此贪薪,去中心化應(yīng)用也不應(yīng)該強(qiáng)制用戶因?yàn)槭褂昧藚^(qū)塊鏈而直接為區(qū)塊鏈支付画切。

A launched blockchain that uses the EOS.IO software does not require its users to pay the blockchain directly for its use and therefore does not constrain or prevent a business from determining its own monetization strategy for its products.

委托能力

A holder of tokens on a blockchain launched adopting the EOS.IO software who may not have an immediate need to consume all or part of the available bandwidth, can give or rent such unconsumed bandwidth to others; the block producers running EOS.IO software on such blockchain will recognize this delegation of capacity and allocate bandwidth accordingly.

分離交易成本與 Token 價(jià)值

EOS.IO 軟件的一個(gè)主要優(yōu)點(diǎn)就是應(yīng)用可用的帶寬完全獨(dú)立于 token 的價(jià)格毫别。 If an application owner holds a relevant number of tokens on a blockchain adopting EOS.IO software, then the application can run indefinitely within a fixed state and bandwidth usage. In such case, developers and users are unaffected from any price volatility in the token market and therefore not reliant on a price feed. In other words, a blockchain that adopts the EOS.IO software enables block producers to naturally increase bandwidth, computation, and storage available per token independent of the token's value.

A blockchain using EOS.IO software also awards block producers tokens every time they produce a block. Token 的值將影響其能購買的帶寬、存儲(chǔ)和計(jì)算資源砾肺;這一模型會(huì)自然的利用 token 值的上漲來增加網(wǎng)絡(luò)的性能。

狀態(tài)存儲(chǔ)成本

由于帶寬和計(jì)算資源可以被委托蚁趁,因此應(yīng)用的狀態(tài)存儲(chǔ)需要應(yīng)用程序的開發(fā)者持有 token 直到狀態(tài)被刪除番官。 如果狀態(tài)永遠(yuǎn)不會(huì)被刪除那么 token 實(shí)質(zhì)上從流通中被抹除。

每一個(gè)用戶帳戶需要一個(gè)確定數(shù)量的存儲(chǔ)淆党;因此每一個(gè)帳戶必須保持一個(gè)最小的余額窒升。隨著網(wǎng)絡(luò)存儲(chǔ)能力的不斷提升饱须,余額的最小余額需求將會(huì)下降。

塊獎(jiǎng)勵(lì)

A blockchain that adopts the EOS.IO software will award new tokens to a block producer every time a block is produced. In these circumstances, the number of tokens created is determined by the median of the desired pay published by all block producers. EOS.IO 軟件可以配置限定生產(chǎn)者回報(bào)的上限從而確保 token 的每年增長比例不會(huì)超過 5%酪呻。

社區(qū)效益應(yīng)用

In addition to electing block producers, pursuant to a blockchain based on the EOS.IO software, users can elect 3 community benefit applications also known as smart contracts. 這三個(gè)應(yīng)用將接收至多一個(gè)按照配置百分比對(duì)應(yīng)的 token 年供應(yīng)量減去每年提供給區(qū)塊生產(chǎn)者的 token 量。 這些智能合約將按照每個(gè)應(yīng)用接收到的 token 持有者的票的比例對(duì)應(yīng)的 token阶冈。 這些應(yīng)用或者智能合約可以被 token 持有者選出的新的應(yīng)用或智能合約所替代填具。

治理

治理是人們?cè)谥饔^問題上達(dá)成共識(shí)的過程劳景,而這無法完全用軟件算法來捕獲盟广。 An EOS.IO software-based blockchain implements a governance process that efficiently directs the existing influence of block producers. 沒有了定義好的治理流程衡蚂,之前的區(qū)塊鏈依賴臨時(shí)的、非正式和常常充滿爭議的方式治理具被,直接導(dǎo)致不可預(yù)知的結(jié)果。

A blockchain based on the EOS.IO software recognizes that power originates with the token holders who delegate that power to the block producers. 區(qū)塊生產(chǎn)者被授予有限的檢查權(quán)威來凍結(jié)帳戶叮叹,升級(jí)有缺陷的應(yīng)用程序,對(duì)底層協(xié)議提出硬分叉的改進(jìn)建議携冤。

Embedded into the EOS.IO software is the election of block producers. 在對(duì)區(qū)塊鏈沒有做任何變更之前他們必須認(rèn)可它。 如果區(qū)塊生產(chǎn)者拒絕 token 持有者所預(yù)期的變更他們就會(huì)被投出翘地。 如果區(qū)塊生產(chǎn)者未經(jīng) token 持有者的授權(quán)作出變更瀑凝,其他的非生產(chǎn)、完整驗(yàn)證 (交易所等) 會(huì)拒絕這些變更寥枝。

凍結(jié)帳戶

有時(shí)一個(gè)智能合約的行為處于一種一場或不可預(yù)測的狀態(tài)并且無法按照預(yù)期執(zhí)行囊拜;另一些時(shí)候一個(gè)應(yīng)用或帳戶也許發(fā)現(xiàn)了一個(gè)可以銷毀不可想像數(shù)量資源的漏洞。 當(dāng)這些問題不可避免的發(fā)生時(shí)蜜托,區(qū)塊生產(chǎn)者有能力來扭轉(zhuǎn)這一局面。

所有區(qū)塊鏈上的區(qū)塊生產(chǎn)者都有能力來決定哪些交易被加到區(qū)塊中穴亏,這給了他們凍結(jié)帳戶的能力棠涮。 A blockchain using EOS.IO software formalizes this authority by subjecting the process of freezing an account to a 17/21 vote of active producers. 如果生產(chǎn)者濫用權(quán)利他們會(huì)被投出,而對(duì)應(yīng)凍結(jié)帳戶就將解凍诬垂。

更改帳戶代碼

When all else fails and an "unstoppable application" acts in an unpredictable manner, a blockchain using EOS.IO software allows the block producers to replace the account's code without hard forking the entire blockchain. 與凍結(jié)一個(gè)帳戶類似,更改帳戶代碼需要 17/21 這樣的生產(chǎn)者票形隧枫。

憲法

EOS.IO 應(yīng)用使得區(qū)塊鏈創(chuàng)建了一個(gè)點(diǎn)對(duì)點(diǎn)的服務(wù)條款協(xié)議或者綁定用戶到一個(gè)合約协怒,這都需要用戶對(duì)其簽名,簡稱“憲法”。 憲法的內(nèi)容定義了僅僅依靠代碼無法在用戶間履行的義務(wù)座舍,同時(shí)通過建立管轄權(quán)和可選的法律來解決相互間的爭端陨帆。 每個(gè)在網(wǎng)絡(luò)廣播的交易都必須將憲法的哈希值作為簽名的一部分曲秉,從而顯性的將簽名者綁定在合約中。

憲法還定義了人類可讀意圖的源代碼協(xié)議疲牵。 這個(gè)意圖是用來識(shí)別錯(cuò)誤和功能之間的差異承二,當(dāng)錯(cuò)誤發(fā)生時(shí),引導(dǎo)社區(qū)對(duì)什么是適當(dāng)或不當(dāng)修復(fù)瑰步。

升級(jí)協(xié)議 & 憲法

The EOS.IO software defines a process by which the protocol as defined by the canonical source code and its constitution, can be updated using the following process:

  1. 區(qū)塊生產(chǎn)者對(duì)憲法提出改建意見并獲得 17/21 批準(zhǔn)矢洲。
  2. 區(qū)塊生產(chǎn)者持續(xù) 17/21 品準(zhǔn)連續(xù) 30 天璧眠。
  3. 所有用戶需要使用新的憲法來做簽名题翻。
  4. 區(qū)塊生產(chǎn)通過變更代碼的方式來影響憲法并且提交一個(gè) git 記錄的哈希值。
  5. 區(qū)塊生產(chǎn)者持續(xù) 17/21 品準(zhǔn)連續(xù) 30 天。
  6. 7 天后改為會(huì)起影響的代碼,給所有完整節(jié)點(diǎn) 1 周時(shí)間在確認(rèn)源碼后進(jìn)行升級(jí)高氮。
  7. 所有未升級(jí)到最新代碼的節(jié)點(diǎn)被自動(dòng)關(guān)掉窖铡。

按照 EOS.IO 的默認(rèn)配置,添加新特性升級(jí)區(qū)塊鏈的流程需要 2 到 3 個(gè)月翘瓮,而修復(fù)一般的 bug 不需要更改憲法需要 1 到 2 個(gè)月時(shí)間今穿。

緊急變更

區(qū)塊生產(chǎn)者可以推薦軟件的變更當(dāng) bug 是傷害性 bug 或安全溢出影響用戶使用的。 一般來說侣滩,這可能是對(duì)憲法的加速更新,引進(jìn)新的功能或修復(fù)無害的錯(cuò)誤浸颓。

腳本 & 虛擬機(jī)

EOS.IO 首先會(huì)是一個(gè)平臺(tái)用于協(xié)同用戶間認(rèn)證消息的傳遞淘太。 腳本語言和虛擬機(jī)的具體實(shí)現(xiàn)與 EOS.IO 技術(shù)的設(shè)計(jì)是分離的艘狭。 任何語言或者虛擬主機(jī),只要確定并適合沙盒塞琼,帶有足夠的運(yùn)行效率均可以和 EOS.IO 軟件 API 對(duì)接。

模式定義的消息

所以用戶間發(fā)送的消息都是通過模式定義定義出來的,它是區(qū)塊鏈共識(shí)狀態(tài)的一部分娜扇。 這個(gè)模式允許消息在二進(jìn)制與 JSON 格式之間無縫的轉(zhuǎn)換。

模式定義的數(shù)據(jù)庫

數(shù)據(jù)庫狀態(tài)也是通過類似的模式來定義。 這是為了確保所有應(yīng)用存儲(chǔ)的數(shù)據(jù)是可以轉(zhuǎn)化為人類可讀的 JSON 但存儲(chǔ)和控制時(shí)使用高效的二進(jìn)制憔足。

分離授權(quán)與應(yīng)用

To maximize parallelization opportunities and minimize the computational debt associated with regenerating application state from the transaction log, EOS.IO software separates validation logic into three sections:

  1. 驗(yàn)證消息是否內(nèi)部一致依鸥;
  2. 驗(yàn)證所有前提條件是否有效;
  3. 修改應(yīng)用程序狀態(tài)。

驗(yàn)證消息的內(nèi)部一致性是只讀的并且無需訪問區(qū)塊鏈狀態(tài)疑务。 這意味著它可以以最大并發(fā)來執(zhí)行。 驗(yàn)證前提條件配椭,比如需要的余額數(shù)吱雏,是只讀的因此也可以受益與并行計(jì)算。 只有更改應(yīng)用狀態(tài)時(shí)需要寫入權(quán)限并且必須順序的執(zhí)行每個(gè)應(yīng)用。

身份認(rèn)證是一個(gè)驗(yàn)證消息可被使用的只讀過程座慰。 應(yīng)用程序?qū)嶋H上在發(fā)揮作用。 同一時(shí)間兩者都需要被計(jì)算版仔,然而一旦消息被包含進(jìn)區(qū)塊它就不再需要進(jìn)行消息驗(yàn)證的操作了游盲。

虛擬機(jī)獨(dú)立架構(gòu)

It is the intention of the EOS.IO software-based blockchain that multiple virtual machines can be supported and new virtual machines added over time as necessary. 因此,本文并不討論任何特定的語言或者虛擬機(jī)蛮粮。 That said, there are two virtual machines that are currently being evaluated for use with an EOS.IO software-based blockchain.

Web 組建 (WASM)

網(wǎng)絡(luò)組建是一種為了構(gòu)建高性能的 web 應(yīng)用而新興的 web 標(biāo)準(zhǔn)益缎。 只需要進(jìn)行少量的更改 Web 組建就可以被制作為確定性的和沙盒化的。 Web 組建的好處是它有著廣泛的產(chǎn)業(yè)支持并且它可以讓智能合約使用熟知的語言進(jìn)行開發(fā)然想,比如 C 或 C++莺奔。

以太訪開發(fā)者已經(jīng)開始更改 Web 組建來提供合適的沙盒與確定性在他們的以太訪式 Web 組建 (WASM)。 這種方式讓 EOS.IO 很容易的與之適配和對(duì)接变泄。

以太訪虛擬機(jī) (EVM)

這個(gè)虛擬機(jī)已經(jīng)被眾多已有的智能合約所采用并且可以通過適配應(yīng)用與 EOS.IO 區(qū)塊鏈中令哟。 It is conceivable that EVM contracts could be run within their own sandbox inside an EOS.IO software-based blockchain and that with some adaptation EVM contracts could communicate with other EOS.IO software blockchain applications.

跨鏈通信

EOS.IO 軟件被設(shè)計(jì)為跨區(qū)塊鏈通信友好的。 這是通過生成消息存在證明與消息時(shí)序證明變的簡單而實(shí)現(xiàn)的妨蛹。 這些證明與應(yīng)用架構(gòu)設(shè)計(jì)相結(jié)合屏富,即圍繞消息細(xì)節(jié)的跨鏈傳輸和有效性驗(yàn)證時(shí)隱藏應(yīng)用程序開發(fā)者的架構(gòu)設(shè)計(jì)。

用于輕客戶端的 Merkle 證明 (LCV)

如果客戶端不需要處理所有的交易會(huì)讓多區(qū)塊鏈間的整合更為輕松蛙卤。 畢竟狠半,一個(gè)交易所只需要關(guān)心交易所的入賬和出賬,別無他求。 如果交易所鏈條可以使用資金的輕量 merkle 證明典予,而不必非要完全依賴對(duì)它區(qū)塊生產(chǎn)者的信任會(huì)是一個(gè)不錯(cuò)的主意甜滨。 至少一個(gè)鏈的區(qū)塊生產(chǎn)者在與其他區(qū)塊鏈同步時(shí)更樂意保持盡可能小的開銷乐严。

LCV 的目標(biāo)能產(chǎn)生相對(duì)輕量存在性證明瘤袖,使得任何追蹤相對(duì)輕量數(shù)據(jù)集的人可以驗(yàn)證其有效性。 在這種情況下昂验,目的是為了證明一個(gè)特定的交易是包含在一個(gè)特定的區(qū)塊中捂敌,區(qū)塊包含在一個(gè)特定的區(qū)塊鏈的已驗(yàn)證歷史中。

比特幣支持通過全節(jié)點(diǎn)的完整記錄獲取每年 4MB 大小的區(qū)塊頭信息來驗(yàn)證交易既琴。 每秒 10 個(gè)交易占婉,一個(gè)有效的證明需要 512 個(gè)字節(jié)。 這對(duì)于有 10 分鐘間隔的區(qū)塊鏈沒有問題甫恩,但是對(duì)于 3 秒間隔區(qū)塊鏈就顯得不那么“輕量”了逆济。

EOS.IO 軟件使得任何一個(gè)人只要他擁有包含交易所對(duì)應(yīng)區(qū)塊之后的隨意一個(gè)不可逆的區(qū)塊頭,他就可以進(jìn)行輕量證明磺箕。 使用下面展示的哈希鏈結(jié)構(gòu)就可以使用少于 1024 字節(jié)的大小來完成任意交易的存在性證明奖慌。 如果假設(shè)校驗(yàn)節(jié)點(diǎn)在過去幾天內(nèi)所有的區(qū)塊頭一直增長 (2MB 的數(shù)據(jù)),那么驗(yàn)證這些交易將只需要 200 字節(jié)就夠了松靡。

將生產(chǎn)的區(qū)塊與恰當(dāng)?shù)墓f溩鲫P(guān)聯(lián)使得開銷增幅很小简僧,這意味著沒有理由不使用這種方式來生成區(qū)塊。

當(dāng)需要驗(yàn)證其他鏈時(shí)雕欺,有譬如 時(shí)間/ 空間/ 帶寬 的多樣化優(yōu)化可以做岛马。 追蹤全部區(qū)塊頭 (420 MB/年) 將保持證明體積的輕巧。 只追蹤最近的頭可以提供最小長期存儲(chǔ)和證明大小來獲得屠列。 另外啦逆,一個(gè)區(qū)塊鏈可以使用懶惰的評(píng)估方法,即它記住過去證明的中間值哈希笛洛。 新證明只需要包含指向已知稀疏樹的鏈接夏志。 確切的方法將取決于那些包含對(duì) Merkle 證明引用的交易所在的外部區(qū)塊的比例。

一定密度的聯(lián)系后撞蜂,將變得更為高效盲镶,一個(gè)鏈會(huì)包含另一個(gè)鏈整個(gè)區(qū)塊的歷史和消除證據(jù)一起,這樣就不需要通信便可以驗(yàn)證了蝌诡。 出于性能原因溉贿,應(yīng)最小化的跨鏈證明的頻率。

跨鏈通信的延時(shí)

當(dāng)與外部區(qū)塊鏈進(jìn)行通信時(shí)浦旱,區(qū)塊生產(chǎn)者必須等待直到 100% 確信一個(gè)交易已經(jīng)被另一個(gè)區(qū)塊鏈確認(rèn)為不可逆后才會(huì)接收它成為一個(gè)有效的輸入宇色。 Using an EOS.IO software-based blockchain and DPOS with 3 second blocks and 21 producers, this takes approximately 45 seconds. If a chain's block producers do not wait for irreversibility it would be like an exchange accepting a deposit that was later reversed and could impact the validity of the blockchain's consensus.

完備性證明

當(dāng)使用來自外部區(qū)塊鏈的 Merkle 證明時(shí),在已知所有交易均已驗(yàn)證和已知沒有交易被跳過或遺忘之間有一個(gè)重要的差異。 雖然不可能證明所有最近的交易是已知的宣蠕,但有沒有間隙的交易歷史是可以被證明的例隆。 EOS.IO 軟件在每個(gè)用戶的每個(gè)傳遞的消息上分配了一個(gè)序列號(hào)。 一個(gè)用于可以使用這些序列號(hào)來證明所有的消息由某個(gè)特定帳戶處理抢蚀,只需要看它是否是按序執(zhí)行的镀层。

總結(jié)

EOS.IO 軟件是從證明概念的經(jīng)驗(yàn)和最佳實(shí)踐設(shè)計(jì)而來,它代表了區(qū)塊鏈技術(shù)的重要進(jìn)步皿曲。 該軟件是全球可擴(kuò)展區(qū)塊鏈社會(huì)偉大藍(lán)圖中的一部分唱逢,它將應(yīng)用去中心化并得以輕松的發(fā)布和治理。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末屋休,一起剝皮案震驚了整個(gè)濱河市坞古,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劫樟,老刑警劉巖痪枫,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異叠艳,居然都是意外死亡奶陈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門虑绵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尿瞭,“玉大人,你說我怎么就攤上這事翅睛∩椋” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵捕发,是天一觀的道長疏旨。 經(jīng)常有香客問我,道長扎酷,這世上最難降的妖魔是什么檐涝? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮法挨,結(jié)果婚禮上谁榜,老公的妹妹穿的比我還像新娘。我一直安慰自己凡纳,他們只是感情好窃植,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荐糜,像睡著了一般巷怜。 火紅的嫁衣襯著肌膚如雪葛超。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天延塑,我揣著相機(jī)與錄音绣张,去河邊找鬼。 笑死关带,一個(gè)胖子當(dāng)著我的面吹牛侥涵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播豫缨,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼独令,長吁一口氣:“原來是場噩夢啊……” “哼端朵!你這毒婦竟也來了好芭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤冲呢,失蹤者是張志新(化名)和其女友劉穎舍败,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敬拓,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邻薯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乘凸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厕诡。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖营勤,靈堂內(nèi)的尸體忽然破棺而出灵嫌,到底是詐尸還是另有隱情,我是刑警寧澤葛作,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布寿羞,位于F島的核電站,受9級(jí)特大地震影響赂蠢,放射性物質(zhì)發(fā)生泄漏绪穆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一虱岂、第九天 我趴在偏房一處隱蔽的房頂上張望玖院。 院中可真熱鬧,春花似錦第岖、人聲如沸难菌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扔傅。三九已至耍共,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猎塞,已是汗流浹背试读。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荠耽,地道東北人钩骇。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像铝量,于是被迫代替她去往敵國和親倘屹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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