EOS.IO 技術(shù)白皮書(shū)
草案:2017 年 6 月 26 日 (@dayzh (https://steemit.com/@dayzh))
摘要:?EOS.IO 軟件引入一種新的區(qū)塊鏈架構(gòu)設(shè)計(jì),它使得去中心化的應(yīng)用可以橫向和縱向的擴(kuò)展郑口。 這通過(guò)構(gòu)建一個(gè)仿操作系統(tǒng)的方式來(lái)實(shí)現(xiàn)猜惋,在它之上可以構(gòu)建應(yīng)用程序阵谚。 該軟件提供帳戶(hù)响鹃、身份驗(yàn)證苇侵、數(shù)據(jù)庫(kù)祈争、異步通信和跨越數(shù)百個(gè) CPU 內(nèi)核或集群的應(yīng)用程序調(diào)度。 由此產(chǎn)生的技術(shù)是一種區(qū)塊鏈架構(gòu)荸恕,它可以擴(kuò)展至每秒處理百萬(wàn)級(jí)交易乖酬,消除用戶(hù)的手續(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ā)布本白皮書(shū)內(nèi)的任何內(nèi)容茅糜。
免責(zé)聲明:?本 EOS.IO 技術(shù)白皮書(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ù)是通過(guò) 2008 年誕生的比特幣貨幣得以被認(rèn)知素挽,自從那之后企業(yè)家和開(kāi)發(fā)者就不斷的嘗試推廣這一技術(shù)蔑赘,以便在單一的區(qū)塊鏈平臺(tái)上支持更為廣泛的應(yīng)用程序。
而一些區(qū)塊鏈平臺(tái)努力的支持可運(yùn)作的去中心化應(yīng)用预明,具體的應(yīng)用比如 BitShares 去中心化交易所 (2014) 和 Steem 社交媒體平臺(tái) (2016) 已經(jīng)成為每天被成千上萬(wàn)活躍用戶(hù)重度使用的區(qū)塊鏈缩赛。 他們能做到這些,是通過(guò)性能的提升達(dá)到每秒處理上千交易撰糠,消除手續(xù)費(fèi)和提供堪比已經(jīng)存在的中心化服務(wù)的用戶(hù)體驗(yàn)酥馍。
已存在的區(qū)塊鏈平臺(tái)承擔(dān)著大量的交易費(fèi)和有限的可計(jì)算能力,這都阻礙了區(qū)塊鏈技術(shù)的大面積應(yīng)用阅酪。
為了贏得廣泛的應(yīng)用旨袒,構(gòu)建在區(qū)塊鏈之上的應(yīng)用需要一個(gè)靈活性足以滿(mǎn)足以下要求的平臺(tái):
像 Ebay、Uber术辐、AirBnB 和 Facebook 這樣企業(yè)砚尽,他們需要區(qū)塊鏈技術(shù)能處理每日數(shù)以千萬(wàn)的活躍用戶(hù)。 在某些情況下辉词,除非用戶(hù)群體達(dá)到一個(gè)極龐大的量級(jí)否則應(yīng)用并無(wú)用武之地必孤,因此一個(gè)可以處理極其龐大用戶(hù)的平臺(tái)是至關(guān)重要的。
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)供用戶(hù)使用的區(qū)塊鏈平臺(tái)或許將贏得更為廣泛的使用瑞躺。 開(kāi)發(fā)者和企業(yè)可以制訂有效的貨幣化戰(zhàn)略敷搪。
企業(yè)構(gòu)建區(qū)塊鏈基礎(chǔ)的應(yīng)用需要能夠?yàn)閼?yīng)用增加新特性的靈活性。
所有非同凡響的軟件都會(huì)受到 bug 的影響幢哨,即便是經(jīng)過(guò)了最嚴(yán)格意義上的驗(yàn)證赡勘。這個(gè)平臺(tái)必須具有足夠的魯棒性以便應(yīng)對(duì)不可避免出現(xiàn)的 bug。
一個(gè)好的用戶(hù)體驗(yàn)需要延時(shí)時(shí)間在數(shù)秒內(nèi)就能收到可靠的反饋捞镰。 高延時(shí)會(huì)阻礙用戶(hù)闸与,并且會(huì)讓構(gòu)建在區(qū)塊鏈上的應(yīng)用比已有的非區(qū)塊鏈應(yīng)用缺乏競(jìng)爭(zhēng)力顽悼。
一些應(yīng)用因?yàn)轫樞蛞蕾?lài)關(guān)系的執(zhí)行步驟而不能使用并發(fā)算法實(shí)現(xiàn)。 比如交易所就需要足夠的時(shí)序性能來(lái)處理很高的交易量几迄,因此高時(shí)序性能處理的平臺(tái)是必須的蔚龙。
大型可擴(kuò)展應(yīng)用需要將工作量分配到多 CPU 和計(jì)算機(jī)之上。
EOS.IO 軟件使用唯一能滿(mǎn)足區(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)者來(lái)生成區(qū)塊。 如果一個(gè)區(qū)塊在規(guī)定時(shí)間之內(nèi)未被生產(chǎn)出來(lái)則這一區(qū)塊將被跳過(guò)解孙。 當(dāng)一個(gè)或多個(gè)區(qū)塊被跳過(guò)發(fā)生時(shí)坑填,在區(qū)塊鏈中會(huì)有一個(gè) 6 秒及以上的間隔。
在 EOS.IO 軟件中弛姜,區(qū)塊通過(guò) 21 名生產(chǎn)者輪流產(chǎn)生脐瑰。 在每一輪的開(kāi)始時(shí),21 個(gè)唯一的區(qū)塊生產(chǎn)者被選出廷臼。 獲票最高的前 20 名自動(dòng)在沒(méi)輪被選中苍在,剩余的一個(gè)生產(chǎn)者通過(guò)得票比例選出。 被選中的生產(chǎn)者通過(guò)從區(qū)塊取到的時(shí)間作為偽隨機(jī)數(shù)來(lái)打亂其順序荠商。 打亂順序是為確保這些生產(chǎn)者與其他生產(chǎn)者保持均衡的連通性寂恬。
如果一個(gè)生產(chǎn)者錯(cuò)過(guò)了一個(gè)區(qū)塊并且在過(guò)去的 24 小時(shí)內(nèi)沒(méi)有生產(chǎn)任何的區(qū)塊,那么它將被從候選中移除莱没,直到它在區(qū)塊鏈中通知它要開(kāi)始再次生產(chǎn)區(qū)塊的意圖初肉。 這樣通過(guò)最小化區(qū)塊丟失數(shù)量(因被證實(shí)不可靠的節(jié)點(diǎn)不作為導(dǎo)致)來(lái)確保網(wǎng)絡(luò)操作的穩(wěn)定性。
在一般情況下饰躲,一個(gè) DPOS 區(qū)塊鏈不會(huì)經(jīng)歷任何的分叉牙咏,因?yàn)閰^(qū)塊生產(chǎn)者是通過(guò)合作而非競(jìng)爭(zhēng)的方式來(lái)生產(chǎn)區(qū)塊。 即便真的出現(xiàn)了分叉嘹裂,共識(shí)也將自動(dòng)的切換到最長(zhǎng)的鏈上妄壶。 之所以會(huì)這樣運(yùn)作,是因?yàn)閰^(qū)塊添加到一個(gè)區(qū)塊鏈分叉的速率與公用同一共識(shí)的區(qū)塊生產(chǎn)者比例是相關(guān)的焦蘑。 換句話(huà)說(shuō)盯拱,具有更多生產(chǎn)者的區(qū)塊鏈分叉會(huì)比擁有較少生產(chǎn)的那一個(gè)條增長(zhǎng)的速度更快。 而且例嘱,沒(méi)有一個(gè)生產(chǎn)者會(huì)同時(shí)在兩個(gè)分叉上同時(shí)生產(chǎn)區(qū)塊狡逢。 如果一個(gè)區(qū)塊生產(chǎn)者被抓到做這樣的事兒,那么這個(gè)生產(chǎn)者將很可能被投票投出拼卵。 這些雙重生產(chǎn)行為對(duì)應(yīng)密碼學(xué)憑證可以用來(lái)自動(dòng)的刪除這些濫用者奢浑。
通常 DPOS 區(qū)塊鏈 100% 會(huì)有區(qū)塊生產(chǎn)者參與。一個(gè)交易從廣播開(kāi)始后平均 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ū)塊就是不可逆的了梢莽,并且不管長(zhǎng)度如何都不會(huì)切換到?jīng)]有這一區(qū)塊的分叉萧豆。
在分叉開(kāi)始的 9 秒內(nèi),一個(gè)節(jié)點(diǎn)就可以警告用戶(hù)他們極可能正處于分叉中昏名。 在連續(xù)丟失 2 個(gè)區(qū)塊后涮雷,有 95% 的概率可以確認(rèn)一個(gè)節(jié)點(diǎn)處于分叉中。 在連續(xù)丟失 3 個(gè)區(qū)塊后就有 99% 的概率確認(rèn)轻局。 可以通過(guò)節(jié)點(diǎn)丟失洪鸭、近期參與比率和其他參數(shù)來(lái)構(gòu)建魯棒性預(yù)測(cè)模型,從而快速的警告操作者出現(xiàn)了問(wèn)題嗽交。
對(duì)于這種警告的反應(yīng)完全取決于商業(yè)交易的性質(zhì)卿嘲,但最簡(jiǎn)單的做法就是等待 15/21 的確認(rèn)直到警告消失颂斜。
EOS.IO 軟件需要每一個(gè)交易包含最近一個(gè)區(qū)塊頭的哈希值夫壁。這個(gè)哈希值有兩個(gè)目的:
防止不包含區(qū)塊引用的交易在分叉時(shí)重放發(fā)生;和
通知網(wǎng)絡(luò)對(duì)應(yīng)的用戶(hù)和他們的股份當(dāng)前在某個(gè)具體的分叉上沃疮。
隨著時(shí)間的推移盒让,所有的用戶(hù)直接確認(rèn)區(qū)塊鏈,在這一鏈條上難以偽造假的鏈條司蔬,因?yàn)榧俚逆湕l根本無(wú)法從合法鏈條上遷移交易邑茄。
EOS.IO 軟件允許所有的帳戶(hù)使用一個(gè)唯一的人類(lèi)可讀的名稱(chēng)來(lái)索引,長(zhǎng)度在 2 到 32 個(gè)字符之間俊啼。 這個(gè)名稱(chēng)由帳戶(hù)創(chuàng)建者自己選擇肺缕。 所有的帳戶(hù)必須在創(chuàng)建時(shí)用極少的帳戶(hù)余額來(lái)注資,從而覆蓋存儲(chǔ)帳戶(hù)信息的成本授帕。 帳戶(hù)名稱(chēng)也支持命名空間同木,比如 @domain 這個(gè)帳戶(hù)的擁有者是唯一可以創(chuàng)建 @user.domain 帳戶(hù)的人。
在一個(gè)去中心化的場(chǎng)景中跛十,應(yīng)用開(kāi)發(fā)者將會(huì)為新用戶(hù)注冊(cè)成本買(mǎi)單彤路。 Traditional businesses already spend significant sums of money per customer they acquire in the form of advertising, free services, etc. 比起來(lái),資助一個(gè)新的區(qū)塊鏈帳戶(hù)的花費(fèi)簡(jiǎn)直微不足道芥映。 值得慶幸的是洲尊,對(duì)一個(gè)已經(jīng)在另一個(gè)應(yīng)用注冊(cè)過(guò)的用戶(hù)并不需要再創(chuàng)建新的帳戶(hù)远豺。
每個(gè)帳戶(hù)可以發(fā)送結(jié)構(gòu)化的消息給其他的帳戶(hù),并且可以定義腳本來(lái)處理他們接收到的消息坞嘀。 EOS.IO 軟件給每個(gè)帳戶(hù)提供了只有自己的消息處理腳本能訪(fǎng)問(wèn)的私有數(shù)據(jù)庫(kù)躯护。 消息處理腳本同樣可以給其他帳戶(hù)發(fā)送消息。 消息和自動(dòng)化的消息處理的結(jié)合決定了 EOS.IO 如何定義智能合約的丽涩。
權(quán)限管理涉及判定一條消息是否被正確的授權(quán)榛做。 權(quán)限管理最簡(jiǎn)單的形式就是檢查一個(gè)交易包含必須的簽名,但這意味著必須的簽名是已知的内狸。 一般情況下检眯,權(quán)威必然是獨(dú)立的個(gè)體或者個(gè)體組成的群體,并且是被劃分開(kāi)的昆淡。 EOS.IO 軟件提供了聲明式的權(quán)限管理系統(tǒng)锰瘸,通過(guò)管理誰(shuí)可以在什么時(shí)間做什么來(lái)給用戶(hù)細(xì)力度和高維度的控制。
授權(quán)和權(quán)限管理被標(biāo)準(zhǔn)化和脫離應(yīng)用的商業(yè)邏輯是不可取的昂灵。 這使得管理權(quán)限的工具得以被開(kāi)發(fā)避凝,既滿(mǎn)足常規(guī)的需求又為性能優(yōu)化提供了重要的可能性。
每一個(gè)帳戶(hù)可以被任何權(quán)重組合的其他帳戶(hù)和私鑰管控眨补。 這創(chuàng)建了分層級(jí)的權(quán)利結(jié)構(gòu)管削,這反映了現(xiàn)實(shí)中的權(quán)限分配方式,并且讓多用戶(hù)共同管理資產(chǎn)變得從未如此簡(jiǎn)單。 多用戶(hù)控制是安全最大的貢獻(xiàn)者,并且盹靴,當(dāng)用戶(hù)使用得當(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ù)的社交媒體賬號(hào),同時(shí)另一個(gè)密鑰訪(fǎng)問(wèn)交易所。 甚至可以給其他帳戶(hù)權(quán)限來(lái)代表自己而無(wú)需分配給他們密鑰遏弱。
在 EOS.IO 軟件中,帳戶(hù)可以定義命名的權(quán)限級(jí)別塞弊,每一個(gè)是由更高級(jí)別的命名權(quán)限派生而來(lái)漱逸。 每一個(gè)命名的權(quán)限級(jí)別定義了一個(gè)權(quán)威;一個(gè)權(quán)威是多重簽名閾值校驗(yàn)游沿,它包含密鑰和/或其他帳戶(hù)的命名權(quán)限級(jí)別饰抒。 打個(gè)比方,一個(gè)帳戶(hù)的“朋友”權(quán)限級(jí)別可以被設(shè)置為由該帳戶(hù)的任何一個(gè)朋友無(wú)差別的控制奏候。
另一個(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è)帳戶(hù)將他們自己的消息組織到一個(gè)命名和嵌套的群組中镶柱。 這個(gè)命名的消息處理群組可以在其他帳戶(hù)配置他們權(quán)限級(jí)別時(shí)被引用旷档。
最高級(jí)別的消息處理群組是帳戶(hù)名稱(chēng),最低級(jí)別的是一個(gè)帳戶(hù)接收到的單獨(dú)的消息類(lèi)型歇拆。 這些群組可以被這樣的方式引用:?@accountname.groupa.subgroupb.MessageType.
在這樣的模型之下鞋屈,交易所合約可以通過(guò)將掛單的創(chuàng)建和取消分組,從而與充值提現(xiàn)分離開(kāi)故觅。 交易所合約的這樣分組對(duì)用戶(hù)而言帶來(lái)了方便厂庇。
EOS.IO 軟件允許每個(gè)帳戶(hù)定義從任意帳戶(hù)的一個(gè)命名的消息處理群組與自己的命名的權(quán)限級(jí)別之間建立映射。 舉個(gè)例子输吏,一個(gè)帳戶(hù)所有者可以將自己社交媒體應(yīng)用與自己的“朋友”權(quán)限群組建立映射权旷。 有了這個(gè)映射,任何朋友可以以這一帳戶(hù)的身份在這一帳戶(hù)的社交媒體上發(fā)帖贯溅。 盡管他們將以帳戶(hù)所有者的身份發(fā)帖拄氯,他們?nèi)匀皇褂米约旱拿荑€來(lái)簽名消息。 這意味著總是可以辨識(shí)出是哪一個(gè)朋友在以何種方式使用帳戶(hù)它浅。
當(dāng)?@alice?以 "Action" 類(lèi)型發(fā)送一條消息給?@bob?時(shí)译柏,EOS.IO 軟件首先會(huì)檢查?@alice?是否為?@bob.groupa.subgroup.Action?定義過(guò)權(quán)限映射。 如果什么都沒(méi)有找到姐霍,緊接著檢查?@bob.groupa.subgroup?映射鄙麦,然后是?@bob.groupa,最后?@bob?將被檢查邮弹。 如果都沒(méi)有找到黔衡,那么假定映射為命名的權(quán)限群組?@alice.active。
一旦一個(gè)映射被識(shí)別腌乡,則通過(guò)閾值多簽名流程驗(yàn)證簽名權(quán)威,并且關(guān)聯(lián)權(quán)威與命名的權(quán)限夜牡。 如果失敗了与纽,則躍遷至父權(quán)限,直至擁有者權(quán)限塘装,@alice.owner急迂。
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)估過(guò)程是“只讀”的蹦肴,并且通過(guò)交易對(duì)權(quán)限的變更在一個(gè)區(qū)塊結(jié)束之前不會(huì)起作用僚碎。 這意味著對(duì)所有的交易對(duì)應(yīng)的密鑰和權(quán)限評(píng)估可以被并行執(zhí)行。 此外阴幌,這意味著一個(gè)快速的權(quán)限驗(yàn)證是可行的勺阐,它無(wú)需啟動(dòng)會(huì)引起回滾需求的高成本的應(yīng)用邏輯卷中。 最后,這意味著交易權(quán)限可以被評(píng)估即便接收到等待的交易渊抽,并且之后無(wú)需再重新評(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)為不存在問(wèn)題的區(qū)塊時(shí)它就有足夠的理由跳過(guò)這 步這將極大減少因?yàn)閰^(qū)塊鏈增長(zhǎng)拉去過(guò)去記錄時(shí)的計(jì)算量愤估。
時(shí)間是安全中的一個(gè)關(guān)鍵組成部分帮辟。 在大多數(shù)情況下,一個(gè)私鑰在沒(méi)有被使用前都無(wú)從知曉它是否被偷竊玩焰。 當(dāng)人們有需要密鑰的應(yīng)用在每天聯(lián)網(wǎng)使用的電腦上運(yùn)行時(shí)织阅,基于時(shí)間的安全會(huì)更為重要。 EOS.IO 軟件讓?xiě)?yīng)用開(kāi)發(fā)者可以指明消息必須在被加到一個(gè)區(qū)塊之前等待最小的時(shí)間間隙震捣。 During this time they can be cancelled.
用戶(hù)可以在消息廣播出去后通過(guò)郵件或者文字消息的形式收到通知荔棉。 如果他們沒(méi)有授權(quán),那么他們可以使用帳戶(hù)恢復(fù)流程來(lái)恢復(fù)帳戶(hù)蒿赢,并收回消息润樱。
這個(gè)必須的延時(shí)由操作敏感性決定。 為一杯咖啡付款可以沒(méi)有任何的延時(shí)羡棵,幾秒之內(nèi)就不可逆了壹若,而購(gòu)買(mǎi)一個(gè)房子也許需要 72 消失的結(jié)算期。 轉(zhuǎn)移整個(gè)帳戶(hù)到一個(gè)新的控制可能需要長(zhǎng)達(dá) 30 天皂冰。 具體的延時(shí)選擇由開(kāi)發(fā)者和用戶(hù)自己來(lái)做選擇店展。
EOS.IO 軟件提供給用戶(hù)一種找回自己失竊密鑰控制權(quán)的方式。 一個(gè)帳戶(hù)的所有者可以使用過(guò)去 30 天任何活躍的擁有者密鑰與事先指定的合作者帳戶(hù)給出的批準(zhǔn)來(lái)重置自己帳戶(hù)的密鑰秃流。 帳戶(hù)的恢復(fù)合作者在沒(méi)有所有人幫助的情況下無(wú)法重置帳戶(hù)的控制權(quán)赂蕴。
黑客嘗試進(jìn)行恢復(fù)流程是無(wú)意義的,因?yàn)樗麄円呀?jīng)“控制”了帳戶(hù)舶胀。 此外概说,就算他們真的進(jìn)行這一流程,恢復(fù)合作者也會(huì)詢(xún)問(wèn)身份證明和多因素認(rèn)證 (手機(jī)和郵件)嚣伐。 這會(huì)讓黑客脫作出讓步或者無(wú)功而返糖赔。
這一流程與簡(jiǎn)單的多重簽名有很大差異。 在多重簽名中轩端,另一個(gè)公司要參與所有轉(zhuǎn)賬的執(zhí)行放典,但在恢復(fù)流程中,它卻只在恢復(fù)時(shí)才起作用對(duì)每天的轉(zhuǎn)賬無(wú)從干預(yù)。 這大大的降低了參與者的成本和法律責(zé)任奋构。
區(qū)塊鏈共識(shí)取決于確定性 (可重現(xiàn)的) 的行為壳影。 這意味著所有的并行計(jì)算必須是不能互斥或者具有其他鎖特性的。 沒(méi)有了鎖就必須有一些方式可以確保所有的帳戶(hù)只可以讀取和寫(xiě)入他們自己的私有數(shù)據(jù)庫(kù)声怔。 這也意味著每個(gè)帳戶(hù)處理消息是順序的态贤,而并發(fā)只能在帳戶(hù)層面進(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è)帳戶(hù)的狀態(tài)由且只由發(fā)送給它的消息決定醋火。 進(jìn)度表由區(qū)塊生產(chǎn)者輸出并且會(huì)被確定性的執(zhí)行悠汽,但是生成進(jìn)度表的過(guò)程卻不一定是確定性的。 這意味著區(qū)塊生產(chǎn)者可以使用并發(fā)算法來(lái)調(diào)度交易芥驳。
并行執(zhí)行的一方面意味著當(dāng)一個(gè)腳本生成了一個(gè)新的消息柿冲,它不會(huì)立即被發(fā)送,而被安排在下一個(gè)輪訓(xùn)中發(fā)送兆旬。 不能立馬發(fā)出的原因是接受者可能在另一個(gè)線(xiàn)程中活躍的變更自己的狀態(tài)假抄。
延遲是一個(gè)帳戶(hù)從發(fā)出一條消息給另一個(gè)帳戶(hù),直到收到回應(yīng)的這段時(shí)間丽猬。 我們的目標(biāo)是在一個(gè)單獨(dú)的區(qū)塊中包含兩個(gè)帳戶(hù)交換消息的來(lái)去信息宿饱,而不用在每條消息間等待 3 秒鐘。 為了做到這一點(diǎn)脚祟,EOS.IO 軟件將每個(gè)區(qū)塊劃分為循環(huán)谬以。 每個(gè)循環(huán)劃分為線(xiàn)程,每個(gè)線(xiàn)程包含了交易的一個(gè)列表由桌。 每一個(gè)交易包含了待發(fā)送的消息集合为黎。 這個(gè)結(jié)構(gòu)可以被可視化為一個(gè)樹(shù),其中交互層彼此并行行您,各自被順序的執(zhí)行铭乾。
? ? 區(qū)塊
? ? ? 循環(huán) (順序)
? ? ? ? 線(xiàn)程 (并行)
? ? ? ? ? 交易 (順序)
? ? ? ? ? ? 消息 (順序)
? ? ? ? ? ? ? 接受者和被通知帳戶(hù) (并行)
在一個(gè)循環(huán)中生成的交易可以在后續(xù)的任何一個(gè)循環(huán)或者區(qū)塊中被發(fā)送。 區(qū)塊生產(chǎn)者會(huì)持續(xù)不斷的向區(qū)塊中添加循環(huán)直到最大的墻上時(shí)間到了或者沒(méi)有更多的新交易要發(fā)送娃循。
可以對(duì)一個(gè)區(qū)塊使用靜態(tài)分析來(lái)驗(yàn)證同一個(gè)循環(huán)內(nèi)不存在兩個(gè)線(xiàn)程包含同一帳戶(hù)下對(duì)交易的變更炕檩。 只要保持不變一個(gè)區(qū)塊就可以并行的運(yùn)行所有的線(xiàn)程。
有些帳戶(hù)可以在傳遞/失敗的基礎(chǔ)上處理消息而不修改內(nèi)部狀態(tài)淮野。 如果是這樣的話(huà)捧书,那么這些處理程序可以并行執(zhí)行,只要只有一個(gè)特定的帳戶(hù)的只讀消息處理程序包含在一個(gè)或多個(gè)線(xiàn)程在一個(gè)特定的周期骤星。
有時(shí)我們需要確保消息自動(dòng)的被多個(gè)賬戶(hù)傳遞和接收。 在這種情況下爆哑,消息會(huì)被放在同一個(gè)交易內(nèi)洞难,賬戶(hù)會(huì)被分配到同一個(gè)線(xiàn)程,并且消息被順序的添加揭朝。 這種情況對(duì)性能是不理想的队贱,當(dāng)用戶(hù)使用涉及到“賬單”時(shí)色冀,他們將在交易內(nèi)以賬戶(hù)唯一索引被列入其中。
基于性能和成本原因最好減少涉及兩個(gè)或多個(gè)重度帳戶(hù)的原子性操作柱嫌。
擴(kuò)展區(qū)塊鏈技術(shù)使得組件化成為必要锋恬。每個(gè)人不應(yīng)該執(zhí)行所有的事務(wù),尤其是當(dāng)其只需要運(yùn)行應(yīng)用的一個(gè)小的子集编丘。
一個(gè)交易所應(yīng)用開(kāi)發(fā)者運(yùn)行一個(gè)完整節(jié)點(diǎn)位的是為其用戶(hù)展現(xiàn)所有的狀態(tài)与学。 這個(gè)交易所應(yīng)用沒(méi)有與社交網(wǎng)絡(luò)建立關(guān)聯(lián)的必要性。 EOS.IO 軟件允許任何的完整節(jié)點(diǎn)選擇應(yīng)用的任何子集來(lái)執(zhí)行嘉抓。 傳遞給其他應(yīng)用的消息可以被安全的忽略掉索守,因?yàn)閼?yīng)用程序的狀態(tài)完全由傳遞給它的消息派生。
這與其他帳戶(hù)的溝通有一些重要的影響抑片。 最重要的是卵佛,不能假定其他帳戶(hù)的狀態(tài)可以在同一臺(tái)機(jī)器上訪(fǎng)問(wèn)。 這也意味著敞斋,雖然很容易啟用“鎖”來(lái)允許一個(gè)帳戶(hù)同步調(diào)用另一個(gè)帳戶(hù)截汪,如果其他帳戶(hù)不駐留在內(nèi)存中,這種設(shè)計(jì)模式就會(huì)出現(xiàn)問(wèn)題植捎。
所有賬戶(hù)帳戶(hù)間的狀態(tài)通信必須通過(guò)包含在區(qū)塊鏈中的消息進(jìn)行衙解。
EOS.IO 軟件并不能為區(qū)塊生產(chǎn)生者為任何其他帳戶(hù)送達(dá)的任何信息負(fù)責(zé)。 每個(gè)區(qū)塊生產(chǎn)者要對(duì)計(jì)算的發(fā)雜讀和處理一個(gè)消息的時(shí)間自己進(jìn)行主觀上的預(yù)測(cè)鸥跟。 這同時(shí)適用于用戶(hù)生成的和腳本自動(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)者要通過(guò)自己的算法來(lái)計(jì)算資源的消耗医咨。 當(dāng)一個(gè)區(qū)塊生產(chǎn)者斷定一個(gè)交易或者帳戶(hù)消耗了不相稱(chēng)的大量的計(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ū)塊過(guò)大導(dǎo)致的網(wǎng)絡(luò)延時(shí)沒(méi)什么打不同。 社區(qū)會(huì)注意到模式的異常并最終會(huì)將票從流氓生產(chǎn)者哪里刪掉。
這種對(duì)計(jì)算成本的主觀評(píng)估將區(qū)塊鏈從必須精確和確定的預(yù)測(cè)一些東西要花多長(zhǎng)時(shí)間來(lái)運(yùn)行這一問(wèn)題中解放出來(lái)隶债。 有了這一設(shè)計(jì)就不需要精確的數(shù)指令腾它,將極大的增加優(yōu)化的可能性又不必打破共識(shí)。
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:
帶寬和日志存儲(chǔ) (磁盤(pán))死讹;
計(jì)算與計(jì)算儲(chǔ)備 (中央處理器)瞒滴;
狀態(tài)存儲(chǔ) (內(nèi)存)。
帶寬和計(jì)算有兩部分赞警,瞬時(shí)使用和長(zhǎng)期使用妓忍。 一個(gè)區(qū)塊鏈維持著所有消息的日志,這些日志最終由完全節(jié)點(diǎn)存儲(chǔ)和下載仅颇。 通過(guò)消息日志可以重現(xiàn)所有應(yīng)用的狀態(tài)单默。
可計(jì)算債務(wù)是一個(gè)必須通過(guò)消息日志重新構(gòu)建狀態(tài)的計(jì)算結(jié)果。 如果可計(jì)算債務(wù)增長(zhǎng)變得臃腫則有必要通過(guò)快照方式記錄區(qū)塊鏈狀態(tài)忘瓦,并丟棄區(qū)塊鏈歷史搁廓。 如果可計(jì)算債務(wù)增長(zhǎng)過(guò)快,則它需要花費(fèi) 6 個(gè)月時(shí)間來(lái)重放等值與 1 年的交易耕皮。 這很不可取境蜕,因此,可計(jì)算債務(wù)需要被細(xì)心的管理凌停。
區(qū)塊鏈狀態(tài)存儲(chǔ)是通過(guò)訪(fǎng)問(wèn)應(yīng)用邏輯獲取的信息粱年。 它包括諸如掛單和賬戶(hù)余額等信息。 如果狀態(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ǔ)下來(lái)。
區(qū)塊生產(chǎn)者對(duì)外發(fā)布她們可用的帶寬阻逮,計(jì)算能力和狀態(tài)粱快。 EOS.IO 允許帳戶(hù)按比例消耗一個(gè) 3 天對(duì)賭合約中的可用資源。 舉個(gè)例子叔扼,如果一個(gè)基于 EOS.IO 的區(qū)塊鏈啟動(dòng)了事哭,一個(gè)帳戶(hù)持有所有 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.
如前所述鳍咱,檢測(cè)計(jì)算使用的性能和優(yōu)化的影響很大;因此与柑,所有資源的使用限制流炕,最終都是主觀的澎现,執(zhí)行依靠個(gè)人的算法和區(qū)塊生產(chǎn)者進(jìn)行估計(jì)仅胞。
也就是說(shuō)每辟,有一些事情是微不足道的客觀衡量。 發(fā)送的消息數(shù)和存儲(chǔ)在內(nèi)部數(shù)據(jù)庫(kù)中的數(shù)據(jù)的大小是便宜的客觀衡量干旧。 的 EOS.IO 軟件讓區(qū)塊生產(chǎn)者采用相同的算法應(yīng)對(duì)客觀的量渠欺,但可以在主觀量上選擇采用更嚴(yán)格的主觀測(cè)量算法。
傳統(tǒng)上來(lái)說(shuō)椎眯,企業(yè)為辦公場(chǎng)地挠将、計(jì)算力和其他為了運(yùn)行企業(yè)而需要的成本買(mǎi)單。 客戶(hù)從企業(yè)購(gòu)買(mǎi)具體的產(chǎn)品编整,產(chǎn)品銷(xiāo)售產(chǎn)生的利潤(rùn)來(lái)蓋過(guò)企業(yè)運(yùn)作的成本舔稀。 類(lèi)似的,沒(méi)有哪個(gè)網(wǎng)站要求來(lái)訪(fǎng)者為蓋過(guò)運(yùn)作成本而支付掌测。 因此内贮,去中心化應(yīng)用也不應(yīng)該強(qiáng)制用戶(hù)因?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.
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 的值將影響其能購(gòu)買(mǎi)的帶寬夜郁、存儲(chǔ)和計(jì)算資源;這一模型會(huì)自然的利用 token 值的上漲來(lái)增加網(wǎng)絡(luò)的性能粘勒。
由于帶寬和計(jì)算資源可以被委托竞端,因此應(yīng)用的狀態(tài)存儲(chǔ)需要應(yīng)用程序的開(kāi)發(fā)者持有 token 直到狀態(tài)被刪除。 如果狀態(tài)永遠(yuǎn)不會(huì)被刪除那么 token 實(shí)質(zhì)上從流通中被抹除庙睡。
每一個(gè)用戶(hù)帳戶(hù)需要一個(gè)確定數(shù)量的存儲(chǔ)事富;因此每一個(gè)帳戶(hù)必須保持一個(gè)最小的余額。隨著網(wǎng)絡(luò)存儲(chǔ)能力的不斷提升乘陪,余額的最小余額需求將會(huì)下降统台。
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 的每年增長(zhǎng)比例不會(huì)超過(guò) 5%。
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è)谥饔^問(wèn)題上達(dá)成共識(shí)的過(guò)程谣拣,而這無(wú)法完全用軟件算法來(lái)捕獲募寨。 An EOS.IO software-based blockchain implements a governance process that efficiently directs the existing influence of block producers. 沒(méi)有了定義好的治理流程,之前的區(qū)塊鏈依賴(lài)臨時(shí)的森缠、非正式和常常充滿(mǎn)爭(zhēng)議的方式治理拔鹰,直接導(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)威來(lái)凍結(jié)帳戶(hù)贵涵,升級(jí)有缺陷的應(yīng)用程序列肢,對(duì)底層協(xié)議提出硬分叉的改進(jìn)建議恰画。
Embedded into the EOS.IO software is the election of block producers. 在對(duì)區(qū)塊鏈沒(méi)有做任何變更之前他們必須認(rèn)可它。 如果區(qū)塊生產(chǎn)者拒絕 token 持有者所預(yù)期的變更他們就會(huì)被投出瓷马。 如果區(qū)塊生產(chǎn)者未經(jīng) token 持有者的授權(quán)作出變更拴还,其他的非生產(chǎn)、完整驗(yàn)證 (交易所等) 會(huì)拒絕這些變更欧聘。
有時(shí)一個(gè)智能合約的行為處于一種一場(chǎng)或不可預(yù)測(cè)的狀態(tài)并且無(wú)法按照預(yù)期執(zhí)行片林;另一些時(shí)候一個(gè)應(yīng)用或帳戶(hù)也許發(fā)現(xiàn)了一個(gè)可以銷(xiāo)毀不可想像數(shù)量資源的漏洞。 當(dāng)這些問(wèn)題不可避免的發(fā)生時(shí)怀骤,區(qū)塊生產(chǎn)者有能力來(lái)扭轉(zhuǎn)這一局面费封。
所有區(qū)塊鏈上的區(qū)塊生產(chǎn)者都有能力來(lái)決定哪些交易被加到區(qū)塊中,這給了他們凍結(jié)帳戶(hù)的能力蒋伦。 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é)帳戶(hù)就將解凍。
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è)帳戶(hù)類(lèi)似痕届,更改帳戶(hù)代碼需要 17/21 這樣的生產(chǎn)者票形韧献。
EOS.IO 應(yīng)用使得區(qū)塊鏈創(chuàng)建了一個(gè)點(diǎn)對(duì)點(diǎn)的服務(wù)條款協(xié)議或者綁定用戶(hù)到一個(gè)合約,這都需要用戶(hù)對(duì)其簽名爷抓,簡(jiǎn)稱(chēng)“憲法”势决。 憲法的內(nèi)容定義了僅僅依靠代碼無(wú)法在用戶(hù)間履行的義務(wù),同時(shí)通過(guò)建立管轄權(quán)和可選的法律來(lái)解決相互間的爭(zhēng)端蓝撇。 每個(gè)在網(wǎng)絡(luò)廣播的交易都必須將憲法的哈希值作為簽名的一部分果复,從而顯性的將簽名者綁定在合約中。
憲法還定義了人類(lèi)可讀意圖的源代碼協(xié)議渤昌。 這個(gè)意圖是用來(lái)識(shí)別錯(cuò)誤和功能之間的差異虽抄,當(dāng)錯(cuò)誤發(fā)生時(shí),引導(dǎo)社區(qū)對(duì)什么是適當(dāng)或不當(dāng)修復(fù)独柑。
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:
區(qū)塊生產(chǎn)者對(duì)憲法提出改建意見(jiàn)并獲得 17/21 批準(zhǔn)迈窟。
區(qū)塊生產(chǎn)者持續(xù) 17/21 品準(zhǔn)連續(xù) 30 天。
所有用戶(hù)需要使用新的憲法來(lái)做簽名忌栅。
區(qū)塊生產(chǎn)通過(guò)變更代碼的方式來(lái)影響憲法并且提交一個(gè) git 記錄的哈希值车酣。
區(qū)塊生產(chǎn)者持續(xù) 17/21 品準(zhǔn)連續(xù) 30 天。
7 天后改為會(huì)起影響的代碼索绪,給所有完整節(jié)點(diǎn) 1 周時(shí)間在確認(rèn)源碼后進(jìn)行升級(jí)湖员。
所有未升級(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 或安全溢出影響用戶(hù)使用的唤反。 一般來(lái)說(shuō)凳寺,這可能是對(duì)憲法的加速更新鸭津,引進(jìn)新的功能或修復(fù)無(wú)害的錯(cuò)誤。
EOS.IO 首先會(huì)是一個(gè)平臺(tái)用于協(xié)同用戶(hù)間認(rèn)證消息的傳遞肠缨。 腳本語(yǔ)言和虛擬機(jī)的具體實(shí)現(xiàn)與 EOS.IO 技術(shù)的設(shè)計(jì)是分離的逆趋。 任何語(yǔ)言或者虛擬主機(jī),只要確定并適合沙盒怜瞒,帶有足夠的運(yùn)行效率均可以和 EOS.IO 軟件 API 對(duì)接父泳。
所以用戶(hù)間發(fā)送的消息都是通過(guò)模式定義定義出來(lái)的,它是區(qū)塊鏈共識(shí)狀態(tài)的一部分吴汪。 這個(gè)模式允許消息在二進(jìn)制與 JSON 格式之間無(wú)縫的轉(zhuǎn)換。
數(shù)據(jù)庫(kù)狀態(tài)也是通過(guò)類(lèi)似的模式來(lái)定義蒸眠。 這是為了確保所有應(yīng)用存儲(chǔ)的數(shù)據(jù)是可以轉(zhuǎn)化為人類(lèi)可讀的 JSON 但存儲(chǔ)和控制時(shí)使用高效的二進(jìn)制漾橙。
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:
驗(yàn)證消息是否內(nèi)部一致;
驗(yàn)證所有前提條件是否有效楞卡;
修改應(yīng)用程序狀態(tài)霜运。
驗(yàn)證消息的內(nèi)部一致性是只讀的并且無(wú)需訪(fǎng)問(wèn)區(qū)塊鏈狀態(tài)。 這意味著它可以以最大并發(fā)來(lái)執(zhí)行蒋腮。 驗(yàn)證前提條件淘捡,比如需要的余額數(shù),是只讀的因此也可以受益與并行計(jì)算池摧。 只有更改應(yīng)用狀態(tài)時(shí)需要寫(xiě)入權(quán)限并且必須順序的執(zhí)行每個(gè)應(yīng)用焦除。
身份認(rèn)證是一個(gè)驗(yàn)證消息可被使用的只讀過(guò)程。 應(yīng)用程序?qū)嶋H上在發(fā)揮作用作彤。 同一時(shí)間兩者都需要被計(jì)算膘魄,然而一旦消息被包含進(jìn)區(qū)塊它就不再需要進(jìn)行消息驗(yàn)證的操作了。
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. 因此竭讳,本文并不討論任何特定的語(yǔ)言或者虛擬機(jī)创葡。 That said, there are two virtual machines that are currently being evaluated for use with an EOS.IO software-based blockchain.
網(wǎng)絡(luò)組建是一種為了構(gòu)建高性能的 web 應(yīng)用而新興的 web 標(biāo)準(zhǔn)。 只需要進(jìn)行少量的更改 Web 組建就可以被制作為確定性的和沙盒化的绢慢。 Web 組建的好處是它有著廣泛的產(chǎn)業(yè)支持并且它可以讓智能合約使用熟知的語(yǔ)言進(jìn)行開(kāi)發(fā)灿渴,比如 C 或 C++。
以太訪(fǎng)開(kāi)發(fā)者已經(jīng)開(kāi)始更改 Web 組建來(lái)提供合適的沙盒與確定性在他們的以太訪(fǎng)式 Web 組建 (WASM)胰舆。 這種方式讓 EOS.IO 很容易的與之適配和對(duì)接骚露。
這個(gè)虛擬機(jī)已經(jīng)被眾多已有的智能合約所采用并且可以通過(guò)適配應(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ū)塊鏈通信友好的思瘟。 這是通過(guò)生成消息存在證明與消息時(shí)序證明變的簡(jiǎn)單而實(shí)現(xiàn)的荸百。 這些證明與應(yīng)用架構(gòu)設(shè)計(jì)相結(jié)合,即圍繞消息細(xì)節(jié)的跨鏈傳輸和有效性驗(yàn)證時(shí)隱藏應(yīng)用程序開(kāi)發(fā)者的架構(gòu)設(shè)計(jì)滨攻。
如果客戶(hù)端不需要處理所有的交易會(huì)讓多區(qū)塊鏈間的整合更為輕松够话。 畢竟蓝翰,一個(gè)交易所只需要關(guān)心交易所的入賬和出賬,別無(wú)他求女嘲。 如果交易所鏈條可以使用資金的輕量 merkle 證明畜份,而不必非要完全依賴(lài)對(duì)它區(qū)塊生產(chǎn)者的信任會(huì)是一個(gè)不錯(cuò)的主意。 至少一個(gè)鏈的區(qū)塊生產(chǎn)者在與其他區(qū)塊鏈同步時(shí)更樂(lè)意保持盡可能小的開(kāi)銷(xiāo)欣尼。
LCV 的目標(biāo)能產(chǎn)生相對(duì)輕量存在性證明爆雹,使得任何追蹤相對(duì)輕量數(shù)據(jù)集的人可以驗(yàn)證其有效性。 在這種情況下愕鼓,目的是為了證明一個(gè)特定的交易是包含在一個(gè)特定的區(qū)塊中钙态,區(qū)塊包含在一個(gè)特定的區(qū)塊鏈的已驗(yàn)證歷史中。
比特幣支持通過(guò)全節(jié)點(diǎn)的完整記錄獲取每年 4MB 大小的區(qū)塊頭信息來(lái)驗(yàn)證交易菇晃。 每秒 10 個(gè)交易册倒,一個(gè)有效的證明需要 512 個(gè)字節(jié)。 這對(duì)于有 10 分鐘間隔的區(qū)塊鏈沒(méi)有問(wèn)題磺送,但是對(duì)于 3 秒間隔區(qū)塊鏈就顯得不那么“輕量”了驻子。
EOS.IO 軟件使得任何一個(gè)人只要他擁有包含交易所對(duì)應(yīng)區(qū)塊之后的隨意一個(gè)不可逆的區(qū)塊頭,他就可以進(jìn)行輕量證明估灿。 使用下面展示的哈希鏈結(jié)構(gòu)就可以使用少于 1024 字節(jié)的大小來(lái)完成任意交易的存在性證明崇呵。 如果假設(shè)校驗(yàn)節(jié)點(diǎn)在過(guò)去幾天內(nèi)所有的區(qū)塊頭一直增長(zhǎng) (2MB 的數(shù)據(jù)),那么驗(yàn)證這些交易將只需要 200 字節(jié)就夠了馅袁。
將生產(chǎn)的區(qū)塊與恰當(dāng)?shù)墓f溩鲫P(guān)聯(lián)使得開(kāi)銷(xiāo)增幅很小域慷,這意味著沒(méi)有理由不使用這種方式來(lái)生成區(qū)塊。
當(dāng)需要驗(yàn)證其他鏈時(shí)司顿,有譬如 時(shí)間/ 空間/ 帶寬 的多樣化優(yōu)化可以做芒粹。 追蹤全部區(qū)塊頭 (420 MB/年) 將保持證明體積的輕巧。 只追蹤最近的頭可以提供最小長(zhǎng)期存儲(chǔ)和證明大小來(lái)獲得大溜。 另外化漆,一個(gè)區(qū)塊鏈可以使用懶惰的評(píng)估方法,即它記住過(guò)去證明的中間值哈希钦奋。 新證明只需要包含指向已知稀疏樹(shù)的鏈接座云。 確切的方法將取決于那些包含對(duì) Merkle 證明引用的交易所在的外部區(qū)塊的比例。
一定密度的聯(lián)系后付材,將變得更為高效朦拖,一個(gè)鏈會(huì)包含另一個(gè)鏈整個(gè)區(qū)塊的歷史和消除證據(jù)一起,這樣就不需要通信便可以驗(yàn)證了厌衔。 出于性能原因璧帝,應(yīng)最小化的跨鏈證明的頻率。
當(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)使用來(lái)自外部區(qū)塊鏈的 Merkle 證明時(shí)锣夹,在已知所有交易均已驗(yàn)證和已知沒(méi)有交易被跳過(guò)或遺忘之間有一個(gè)重要的差異。 雖然不可能證明所有最近的交易是已知的苏潜,但有沒(méi)有間隙的交易歷史是可以被證明的银萍。 EOS.IO 軟件在每個(gè)用戶(hù)的每個(gè)傳遞的消息上分配了一個(gè)序列號(hào)。 一個(gè)用于可以使用這些序列號(hào)來(lái)證明所有的消息由某個(gè)特定帳戶(hù)處理恤左,只需要看它是否是按序執(zhí)行的贴唇。
EOS.IO 軟件是從證明概念的經(jīng)驗(yàn)和最佳實(shí)踐設(shè)計(jì)而來(lái),它代表了區(qū)塊鏈技術(shù)的重要進(jìn)步飞袋。 該軟件是全球可擴(kuò)展區(qū)塊鏈社會(huì)偉大藍(lán)圖中的一部分戳气,它將應(yīng)用去中心化并得以輕松的發(fā)布和治理。