1. 程式人生 > >【問鏈-EOS公開課】第十六課 EOS中文白皮書2.0

【問鏈-EOS公開課】第十六課 EOS中文白皮書2.0

摘要
EOS.IO軟體引入了一種新的區塊鏈架構,意在實現去中心化應用的效能擴充套件。通過建立類似作業系統的結構,在此基礎上可構建各種應用程式。該軟體提供帳戶、身份驗證、資料庫、非同步通訊以及在數以百計的CPU或群集上的程式排程。該技術的最終形式是形成一個區塊鏈架構體系,能支援每秒數百萬次交易、免除使用者費用,並允許在受控區塊鏈的背景下,迅速、便捷地釋出去中心化應用程式。

一、背景

隨著比特幣的發行,區塊鏈技術於2008年應運而生。自那時起,企業家和開發人員一直在努力推廣該技術,以便在單個區塊鏈平臺上支援更廣泛的應用。

雖然若干區塊鏈平臺一直在努力支援去中心化功能的應用,但諸如BitShares(去中心化交易所,2014)和Steem(社交媒體平臺,2016)等已經成為使得成千上萬日活躍使用者大量使用的區塊鏈。這一成就的實現,源於將交易處理能力提高至每秒數千筆,從而將延時降低到1.5秒,取消每筆交易費用,並提供與現有中心化服務提供的相似使用者體驗。

現有的區塊鏈平臺受累於高昂的費用,有限的計算能力,難以被廣泛採用。

二、區塊鏈應用的要求

為了獲得廣泛的使用,應用程式需要一個足夠靈活的區塊鏈平臺來滿足以下需求:

2.1支援數百萬使用者

某區塊鏈應用程式若要同Ebay,Uber,AirBnB和Facebook等企業競爭,則其使用的區塊鏈技術需能處理數千萬日活使用者所產生的資料。在某些情況下,若無法達到足夠的臨界使用者量,應用程式可能無法正常工作,因此容納大量使用者平臺至關重要。

2.2免費使用

應用開發人員需要靈活地為戶提供免費服務;使用者不需要為使用該平臺或從其服務中獲益而支付費用。區塊鏈平臺只有支援使用者免費使用,才可能獲得更廣泛的發展空間。基於此項前提,開發者和企業建立有效的盈利模式。

2.3輕鬆升級和漏洞修復

基於區塊鏈應用的企業需要靈活地通過新功能來增強應用程式。 該平臺必須能支援軟體和智慧合約升級。

即使經過最嚴格的形式驗證,軟體依然有可能發生錯誤。因此平臺必須足夠強大,以便在發生不可避免性的錯誤時及時修復。

2.4低延遲

良好的使用者體驗要求不超過幾秒鐘的可靠反饋。過長的延遲會影響使用者體驗,並使構建在區塊鏈上的應用程式無法與現有的非區塊鏈替代品匹敵。因此平臺必須能支援事務低延遲性。

2.5順序效能(序列效能)

有些應用程式的命令執行必須有先後順序,無法用並行演算法來實現。諸如交易所之類的應用,需要足夠的順序效能來處理大量資料。因此需要能夠執行高速順序效能的平臺。

2.6併發效能(並行效能)

大規模應用程式需要在多個CPU和計算機之間劃分工作負載。

三、共識演算法(BFT-DPOS)

EOS.IO軟體採用目前為止唯一能夠符合上述效能要求的去中心化共識演算法,即授權委託證明(DPOS)。根據這種演算法, EOS區塊鏈上持有令牌的人可以通過投票系統持續選擇區塊生產者,任何人都可以成為塊生產,只要他能說服令牌持有人以獲得足夠投票。

EOS.IO軟體能夠精確到每0.5秒生產一個區塊,並且僅一個生產者被授權能在給定的時間點生產該區塊。如果在預定時間內沒有生成,則跳過該塊。當跳過一個或多個塊時,區塊鏈中會存在0.5秒或者大於0.5秒的間隔。

使用EOS.IO軟體,以126輪進行生產(共21個生產者,每個生產者生產6個塊)。在每輪開始時,根據令牌持有者的投票選出21個不同的塊生產者。獲選生產者的生產順序由15個及以上的生產者約定的順序安排。

如果生產者錯過了一個塊,並且在過去24小時均未生產任何塊,則會被刪除,直至其向區塊鏈通知打算再次生產塊。通過排除不可靠的生產者,使得遺漏的區塊數量實現最小化,確保網路的順暢執行。

理論上, DPOS區塊鏈不會經歷任何分叉,因為其區塊生產過程中,生產者是合作而不是競爭關係。如果有分叉,共識將自動切換到最長的鏈上。其工作原理是,共識機制下,將新區塊新增到分叉區塊鏈中的速度是與分叉鏈中的生產者的佔比直接相關的。換言之,擁有較多生產者的區塊鏈分叉會比生產者少的鏈增長速度要快得多,因為生產者佔比越高的分叉鏈丟失的區塊會更少。

此外,任何塊生產者都不應該同時在兩個分叉上生產塊。如果有塊生產者被發現這麼做,可能會被投票出局。這種雙重生產留下的密碼證據也可用於自動清除濫用者。

通過允許所有生產者簽署所有區塊,拜占庭容錯機制被新增到傳統的DPOS中,只要沒有生產者簽署具有相同時間戳或相同區塊高度的兩個區塊。一旦15個生產者簽署了一個區塊,則這個塊被視為不可逆轉的。 如果拜占庭式的生產者簽署了兩個相同時間戳或相同區塊高度的區塊,那麼系統會生成其不忠行為的密碼證據。在這一模式下,不可逆的共識應在1秒內可達成。

3.1交易確認

標準的DPOS區塊鏈中,區塊生產者將100%參與度。在廣播後平均0.25秒,交易可認定為99.9%確定。

在DPOS基礎上,EOS.IO中加入了非同步拜占庭容錯(aBFT), 可實現更快的不可逆性。 aBFT演算法在1秒時間內達到不可逆性的100%確認。

3.2交易證明(TaPoS)

EOS.IO軟體要求每一交易必須包括最近的區塊頭的雜湊值。這個雜湊值有兩個目的:

1.防止分叉區塊鏈上出現大量重複事務;

2.使得系統能感知到使用者是否在分叉出來的區塊鏈上。

隨著時間的推移,所有使用者最終直接確認區塊鏈,這使得偽造假冒鏈變得困難,偽造者無法將合法鏈中的交易遷移。

四、帳號

EOS.IO軟體允許帳戶可被長度多達12個字元的唯一可讀名稱所引用。該名稱由帳戶的建立者選擇。帳戶建立者必須保留儲存新帳戶所需的RAM,直至新帳戶儲存令牌以保留其自己的RAM。

在去中心化的情況下,應用程式開發人員將支付建立帳戶的名義成本,以註冊新使用者。傳統企業為獲取每個客戶,已經以廣告、免費服務等形式花費了大量資金。相比之下,建立新的區塊鏈賬戶所需的資金成本微不足道。並且幸運的是,沒有必要為已經由另一個應用程式註冊的使用者建立帳戶。

4.1操作和處理程式

每個帳戶可以將結構化的操作傳送到其他帳戶,並且可以定義指令碼來處理收到的操作。EOS.IO軟體為每個帳戶提供自己的專用資料庫,只能由自己的操作處理程式訪問。操作處理指令碼還可以將操作傳送到其他賬戶。訊息和自動操作處理程式的組合是EOS.IO定義智慧合同的方式。

為支援併發執行操作,每個賬戶同樣可以在資料庫內定義任意數量的範圍。區塊生產者將以這樣一種方式來安排事務,即對儲存器訪問範圍沒有衝突, 因此他們可以併發執行。

4.2基於角色的許可權管理

許可權管理涉及確認某項操作是否被正確授權。最簡單形式的許可權管理是檢查交易是否具有所需的簽名,這也意味著所需的簽名為已知。一般而言,授權涉及個人或群體,並且往往是分門別類的。EOS.IO軟體提供了一個宣告式許可權管理系統,可以對帳戶進行細粒度、高級別的控制,以確定誰可以做什麼和什麼時候做什麼。

認證和許可權管理必須標準化,並與應用程式的業務邏輯分開,這是至關重要的。這使得開發工具能夠以通用方式管理許可權,併為優化效能提供巨大空間。

每個帳戶都可以通過其他帳戶和私鑰的任何加權組合來控制。這建立了一個分層的許可權結構,真實反映了許可權的組織方式,並使得多使用者對賬戶的控制比以往更容易。多使用者控制是提升安全性的最大貢獻者。如果使用得當,會極大降低黑客攻擊而造成的盜竊風險。

EOS.IO軟體允許帳戶定義與其他賬戶和金鑰的組合方式,並且把這個組合以特定型別的訊息傳送到另一個賬戶。例如,可以為使用者的社交媒體帳戶提供一個金鑰,另一個金鑰用於訪問交易所。甚至使用者可以給其他帳戶授權,可以代表本賬戶進行操作,而無需分配金鑰。

4.2.1命名許可權級別

使用EOS.IO軟體,帳戶可以定義命名的許可權級別,每個許可權級別可以從更高級別的命名許可權中派生。每個命名許可權級別定義一個許可權。許可權是由其他帳戶的金鑰和/或命名許可權級別組成的多簽名檢查閾值。例如,帳戶的“朋友”許可權級別可以設定為帳戶能被帳戶的朋友同等控制。

另一個例子是Steem區域鏈,它具有三個硬編碼命名的許可權級別:owner, active和posting。Posting許可權只能執行諸如投票和釋出等社交行為,而active許可權可以執行除更改所有者的所有操作。Owner許可權被保留,可以執行一切操作。EOS.IO允許每個賬戶所有者定義自己的許可權級別以及訊息的分組,以此來推廣這一管理理念。

4.2.2許可權對映

EOS.IO軟體允許每個帳戶定義任意其他帳戶的合同、操作或合同與其自己的命名許可權級別之間的對映。例如,賬戶持有人可將其社交媒體應用程式對映到賬戶所有者的“朋友”許可權組。通過此對映,賬戶中的任何朋友都可以作為賬戶所有者,在社交媒體釋出資訊。即使這些朋友可以作為帳戶所有者釋出資訊,他們仍然會使用自己的金鑰來簽名。這意味著可以確定哪些朋友,以何種方式使用了該帳戶。

4.2.3 許可權評估

從@alice到@bob傳遞型別為“ Action ” 的操作時,EOS.IO軟體將首先檢查@alice是否為@ bob.groupa.subgroup.Action定義了許可權對映。如果沒有發現任何結果,那麼將會檢查@ bob.groupa.subgroup,然後檢查@ bob.groupa,最後檢查@bob。如果沒有找到進一步的匹配,則假定的對映將是命名許可權組@alice.active。

一旦識別出對映,則使用多簽名閾值和與命名許可權相關聯的許可權來驗證簽名許可權。如果失敗,那麼它會遍歷父類許可權,最後遍歷所有者的許可權,即@alice.owner。

4.2.3.1預設許可權組

EOS.IO技術還允許所有賬戶擁有一個可以完成所有操作的“owner”許可權組,而一個“active”許可權組除了更改所有組之外,可以執行所有操作。所有其他許可權組均由“active”組派生。

4.2.3.2併發評估許可權

許可權評估過程是“只讀”的,並且對事務所做的許可權更改直到塊結束才會生效。這意味著所有交易的所有金鑰和許可權評估可以併發執行。此外,這意味著可以快速驗證許可權,而不需要重新啟動昂貴的應用程式邏輯。最後,這意味著交易許可權可以在接收到待處理的交易時進行評估,而在應用它們時無需重新評估。

從整體來看,許可權驗證占驗證交易所需計算的很大一部分。讓許可權驗證成為一個只讀與可併發化的過程可以顯著提升效能。

當重播區塊鏈以從動作日誌重新生成確定性狀態時,不需要再次評估許可權。因為事務包含在已知的狀態良好的區塊中,可以讓其跳過這一步驟。這極大減少了重放區塊鏈時消耗的計算量。

4.3強制延遲的操作

時間是安全的關鍵組成部分。在大多數情況下,不可能知道私鑰是否被盜用,直到它被使用。基於時間的安全機制在人們使用某些應用程式時更為重要,因為這些應用程式需要將金鑰儲存在日常使用的聯網計算機上。訊息包含在區塊後,EOS.IO軟體支援應用程式開發人員可以指定某些訊息在應用前必須等待一小段時間,在此期間可以取消該操作。

當這類訊息被廣播時,使用者可以通過電子郵件或簡訊收到相應通知。如果使用者沒有授權,那麼他們可以登入帳戶來還原賬戶資料並撤回訊息。

所需的延遲取決於操作的敏感程度。支付一杯咖啡可以毫不拖延地在幾秒鐘內確認且不可撤回,而買房子可能需要72小時的清算週期。將整個帳戶轉移到新的使用者可能需要30天。具體延遲取決於應用程式開發人員和使用者。

4.4被盜鑰匙恢復

EOS.IO軟體為使用者提供了金鑰被盜時恢復其帳戶控制的方法。帳戶所有者可以使用過去30天內活躍的任何其批准的帳戶恢復合作伙伴的金鑰,重置帳戶上的所有者金鑰。沒有賬戶所有者的配合,帳戶恢復合作伙伴無法重置帳戶的控制權。

對於黑客而言,由於其已經“控制”該賬戶,因此嘗試執行恢復過程沒有任何收穫。此外,如果黑客執行恢復過程,恢復夥伴可能需要身份認證和多因素認證(電話和電子郵件)。這可能會暴露黑客身份,或者黑客在恢復過程中毫無所得。

這個過程也與簡單的多重簽名交易有著極大的不同。通過多簽名交易,另一個實體會成為每個執行交易的一方。相比之下,通過恢復過程,恢復合作伙伴僅參與恢復過程,無權參與日常交易。這極大降低了所有參與者的成本和法律責任。

五、應用程式的確定性並行執行

區塊鏈共識取決於確定性(可重現)的行為。這意味著所有併發執行都不能使用互斥體或其他鎖定基元。如果沒有鎖定,必須有一些方法來保證併發執行的帳戶不會產生非確定性結果。

2018年6月發行的EOS.IO軟體為單執行緒執行,但是它也包含未來需要的多執行緒併發執行的資料結構。

在基於EOS.IO軟體的區塊鏈中,一旦執行併發操作,區塊生成器需要將訊息傳遞到獨立的執行緒中,以便進行併發評估,但是生成計劃的過程無需確定。這意味著區塊生成器可以利用併發演算法安排交易。

併發執行還意味著指令碼生成新訊息時,它不會立即傳送,而是在下一個週期中傳送。無法立即傳送的原因是接收方可能會在另一個執行緒中主動修改自己的狀態。

5.1最小化通訊延遲

延遲是指一個帳戶將訊息傳送到另一個帳戶並收到響應的時間。EOS.IO的目標是使兩個帳戶能夠在單個區塊內來回交換訊息,而不必在每個訊息之間等待0.5秒。為了實現這一點,EOS.IO軟體將每個塊分為週期(cycle)。每個週期分為執行緒(thread),每個執行緒包含交易列表。每個交易包含一組要傳遞的訊息。該結構可以視覺化為樹狀結構,其中各層按順序併發處理。

區塊

區域

週期(順序)

執行緒(併發)

交易(順序)

訊息(順序)

在一個週期中生成的交易可以在任何後續週期或區塊中傳送。區塊生產者不斷把週期新增到區塊中,直到達到最長的執行時間,或者沒有新生成的事務要交付

可以使用區塊的靜態分析來證明在給定週期內,兩個執行緒內不包含修改同一個帳戶的交易。只要一直保持這種靜態分析機制,就可以通過併發執行所有執行緒來處理區塊。

5.2 只讀訊息處理

某些帳戶可能能夠以通過/未通過的方式處理操作,而不必修改其內部狀態。在這種情況下,只要特定賬戶的只讀訊息處理程式包含在特定週期內的一個或多個執行緒中,這些處理程式就可以併發執行。

5.3多賬戶原子交易

有時,最好確保動作被多個賬戶以原子方式交付和接受。在這種情況下,兩個操作都放在同一個交易中,兩個賬戶分配至同一個執行緒,訊息按順序執行。

5.4部分評估區塊鏈狀態

大規模區塊鏈技術元件應該是模組化的。並不要求每個人都執行所有的東西,特別是當有人只需要使用一小部分應用程式的時候。

交換應用程式開發人員執行完整節點以向其使用者顯示交換狀態。此交換應用程式不需要與社交媒體應用程式相關的狀態。EOS.IO允許任何完整節點選擇要執行的應用程式的任何子集,傳遞給其他應用的訊息將被安全地忽略,因為應用的狀態完全來自於傳遞給它的訊息,而不是依靠其他應用。

5.5主觀最優任務安排

EOS.IO系統不能強制阻止區塊生成者向其他賬戶傳送的任何訊息。每個區塊生成者對處理交易的計算複雜度和時間複雜度都有自己的主觀度量,無論該交易是由使用者生成的還是由指令碼自動生成的。

在推出的採用EOS.IO軟體的區塊鏈中,在網路層面,所有交易都根據執行的WASM指令數量計算頻寬成本。但是,使用軟體的每個區塊生成者會使用他們自己的演算法和度量來計算資源使用情況。當一個區塊生成者發現一個交易或賬戶已經消耗了不成比例的計算能力時,他們會在生成自己的區塊時拒絕該交易;但是,如果其他區塊生成者認為其是有效的,他們仍將處理該交易。

一般來說,只要一個區塊生成者認為一項交易有效,且其所消耗的資源內可控,那麼所有其他區塊生產者也將接受它,但交易可能需要1分鐘才能找到該生產者。

在某些情況下,區塊生成者可以建立一個區塊,其中包括超出可接受範圍之外幾個數量級的交易。在這種情況下,下一個區塊生產者可能會選擇拒絕該區塊,並且會被第三個區塊生成者終結。這與一個大區快導致網路傳播延遲所引發的情況沒有什麼不同。社群會注意到這種異常模式,並最終清理該流氓區塊生成者的投票。

這種對於計算成本的主觀評估使得區塊鏈不必精確地去度量執行某一任務需要多長時間。有了這個設計,就不需要精確地數指令,這將能在不打破共識的情況下大幅增加優化機會。

5.6 延期交易

EOS.IO軟體支援計劃在未來執行的延期交易。 這使計算能夠移動到不同的分片和/或建立持續計劃持續交易的長時間執行的流程。

5.7 上下文無關操作

上下文無關操作僅涉及需要用到交易資料的計算,而不涉及區塊鏈狀態。例如,簽名驗證是一種僅需交易資料和簽名以確定簽署事務的公鑰的計算。簽名驗證在區塊鏈必須執行的計算中,屬於最昂貴的單個計算之一,但由於此計算是上下文無關的,因此可併發執行。

上下文無關操作與其他使用者操作類似,只是它們無法訪問區塊鏈狀態來執行驗證。這不僅使EOS.IO能夠併發處理諸如簽名驗證等所有上下文無關操作,更重要的是可以實現通用簽名驗證。

通過支援上下文自由操作,諸如Sharding,Raiden,Plasma,StateChannels等的可伸縮性技術變得更加可併發和實用。該種開發實現了高效的區塊鏈間通訊和潛在的無限可擴充套件性。

六、令牌模型和資源使用

所有的區塊鏈都是資源受限的,並且需要一個系統來防止濫用。在EOS.IO系統中,有三大類資源被應用程式消耗:

1.頻寬和日誌儲存(磁碟)

2.計算和計算積壓(CPU)

3.狀態儲存器(RAM)

瞬時使用和長期使用這兩類元件都會消耗頻寬和計算。區塊鏈系統將維護所有訊息的日誌,這些日誌會被所有的完整節點下載和儲存。通過日誌資訊,可以重構所有應用程式的狀態。

計算債務是必須執行的計算,以便從操作日誌中重新生成狀態。如果可計債務增長量過大,那麼就有必要對區塊鏈的當前狀態進行快照,並放棄區塊鏈的歷史狀態。如果計算債務增長過快,區塊鏈可能需要6個月的時間來重放1年的交易。因此,謹慎管理計算債務至關重要。

區塊鏈儲存狀態是可從應用程式邏輯訪問的資訊。它包括諸如訂單和賬戶餘額等資訊。如果應用程式從未讀取該狀態,則不應該儲存它。例如,應用程式邏輯不會讀取部落格文章內容和評論,因此不應將其儲存在區塊鏈狀態中。同時,釋出/評論,投票數量以及其他屬性的存在將作為區塊鏈狀態的一部分進行儲存。

區塊生成者可以釋出他們可用的頻寬、計算資源和狀態的容量。EOS.IO系統允許每個賬戶在一個三天對賭合約中,消耗一定比例的可用容量。例如:假設一個基於EOS.IO系統的區塊鏈應用啟動,如果一個賬戶持有該區塊鏈提供的總令牌的1%,那麼這個賬戶就有可利用該區塊鏈1%的狀態儲存容量。

在已啟動的區塊鏈中使用EOS.IO系統,頻寬和計算能力將被分配到部分儲備基礎中,因為它們是暫時的(未使用的容量不能儲存下來為將來使用)。EOS.IO系統將使用類似於Steem的演算法來限制頻寬使用速率。

6.1客觀和主觀測量

如前所述,測量計算使用對效能和優化有重大影響,因此,所有資源使用限制最終是主觀的,並且由區塊生產者根據他們各自的演算法和估算來執行,通常由區塊生產者通過寫自定義外掛來執行。

雖說如此,但有些東西客觀地衡量是微不足道的。交付的操作次數以及儲存在內部資料庫中的資料大小對於客觀衡量都很便宜。EOS.IO軟體使區塊生產者能夠在這些客觀測量上應用相同的演算法,但可以選擇對主觀度量應用更嚴格的主觀演算法。

6.2收款人支付

傳統意義上,支付辦公空間,計算能力以及其它運營成本是企業的責任。客戶購買了特定產品,這些產品銷售收入用於支付業務成本。同樣,沒有網站強制其訪問者在訪問其網站時收取小額費用來支付管理成本。因此,去中心化的應用程式不應強迫使用區塊鏈的使用者直接支付區塊鏈使用費用。

使用EOS.IO軟體的推出區塊鏈不要求其使用者直接支付區塊鏈使用費,因此不會限制或阻止企業制定其產品的貨幣化策略。

儘管接收方可以支付,但EOS.IO使傳送方能夠支付頻寬、計算和儲存費用。這使得應用程式開發人員能夠選擇最適合其應用程式的方法。很多情況下,發件人支付大大降低了不想實施自己的配給系統的應用程式開發人員的複雜性。應用程式開發人員可以將頻寬和計算委派給使用者,然後讓“發件人支付”模型執行使用。從終端使用者的角度來看,它是免費的,但從區塊鏈的角度來看,它是發件人支付的。

6.3委派能力

採用EOS.IO軟體區塊鏈上的令牌持有人,可能不需要立即消耗全部或部分可用頻寬,可將這些未消耗的頻寬委派或租借給其他人; 執行EOS.IO軟體的區塊生產者將會識別這種容量授權並分配相應頻寬。

6.4 將交易成本與令牌價值分開

EOS.IO軟體的主要優點之一是可用於應用程式的頻寬量完全獨立於令牌價格。如果應用程式所有者在使用EOS.IO程式的區塊鏈上持有相應數量的令牌,則該應用程式可在固定狀態和頻寬的情況下無限期執行。這種情況下,開發商和使用者不會受到令牌市場任何價格波動的影響,因此不依賴於價格反饋。換言之,採用EOS.IO軟體的區塊鏈生產商能夠自然地增加頻寬,計算和儲存,而不受令牌價值的影響。

使用EOS.IO軟體的區塊鏈每次新產生區塊時都會授予區塊生產者令牌。令牌的價值將影響生產商的頻寬、儲存和計算量,該模型利用自然上升的令牌價值來提高網路效能。

6.5 狀態儲存成本

雖然可以委託頻寬和計算,但應用程式儲存狀態需要應用程式開發人員持有令牌,直至該狀態被刪除。如果該狀態從未被刪除,那麼令牌將從迴圈中有效移除。

6.6 塊獎勵

建立的令牌數量由所有塊生產者公佈的期望收益的平均數決定。 EOS.IO軟體可能被設為強制執行生產者獎勵的上限,使得令牌供應總量的年增長率不得超過5%。

6.7 工作者建議系統

除了選擇區塊生產者之外,根據基於EOS.IO軟體的區塊鏈,令牌持有者可以選擇一些旨在讓社群受益的工人建議。獲勝的提案將獲得高令牌通貨膨脹配置百分比的令牌減去已經支付給區塊生產者的令牌。這些建議將獲得與每個應用程式從令牌持有者收到的投票成比例的令牌,直到他們要求執行其工作的金額為止。當選的提案可以由代幣持有人的新當選提案取代。

實施工人建議的系統合同可能在2018年6月初次啟動時未到位,但資金機制將會實現。它將開始積累資金,同時開始區塊生產者獎勵。由於工作人員建議系統將在WASM中實施,因此可以在以後不加分叉的情況下新增。

七、治理

治理是人們在一個社群的過程:

1.就集體行動的主觀問題達成共識,而這些問題不能完全由軟體演算法俘獲;

2.執行他們所做的決定;

3.通過修改法則改變治理憲法本身。

基於EOS.IO軟體的區塊鏈實現了一個有效地指導區塊生產者現有影響的治理過程。如果缺少明確的治理流程,之前的區塊鏈依賴於特殊的,非正式的且往往頗具爭議的治理流程,從而導致不可預測的結果。

基於EOS.IO軟體的區塊鏈認識到權力來源於令牌持有者將權力委託給區塊生產者。塊生產者被給予有限的檢查許可權來凍結帳戶,更新有缺陷的應用程式,並且提出對底層協議的硬分叉改變。

嵌入到EOS.IO軟體中是選擇區塊生產者。在對區塊鏈進行任何更改之前,這些區塊生產者必須批准該區塊鏈。如果區塊生產者拒絕代幣持有者所希望的改變,那麼他們可以被投票出去。如果區塊生產者沒有代幣持有者的許可進行更改,則所有其他非生產性全節點驗證器(交換等)將拒絕該更改。

7.1凍結帳戶

有時候,某個智慧聯絡表現異常或不可預測,並且不能按預期執行; 其他時候,應用程式或帳戶可能會發現一個可被利用的漏洞來消耗大量資源。當這些問題不可避免地發生時,區塊生產者有權糾正這種情況。

所有區塊鏈上的區塊生產者都有權選擇哪些交易包含在區塊中,從而使其能夠凍結賬戶。使用EOS.IO程式的區塊鏈通過21個活躍生產者中的15個投票正式授權凍結賬戶。

如果區塊生產者濫用權力,他們將被投票出局,並且被無辜凍結的帳戶將被解凍。

7.2更改賬戶程式碼

當所有其他方式失敗並且“勢不可擋的應用程式”以不可預知的方式發揮作用時,使用EOS.IO軟體的區塊鏈允許區塊生產者替換賬戶的程式碼,而不分叉整個區塊鏈。這類似凍結賬戶的過程,這個程式碼的替換需要選出的15/21的區塊生產者投票。

7.3憲法

EOS.IO軟體允許區塊鏈建立點對點的服務條款協議或在使用者之間簽署繫結合約,稱其為“憲法”。這套憲法的內容界定了使用者的義務,不能完全由法規強制,並通過確立管轄權和法律選擇以及其他相互接受的憲法來促進解決爭端。在網路上廣播的每一筆交易都必須包含憲法的雜湊作為簽名的一部分,從而明確約束簽署人的合同。

該憲法還定義了原始碼協議的人類可讀的意圖。此意圖用於識別發生錯誤時的錯誤和功能之間的差異,並指導社群進行哪些修正是正確的或不正確的。

7.4升級議定書和憲法

EOS.IO軟體定義了以下過程,通過該過程可以更新由規範原始碼及其構成定義的協議:

1.區塊生產者提議修改憲法並獲得15/21批准。

2.區塊生產者連續30天保持15/21批准新憲法。

3.所有使用者都必須使用新憲法,作為未來交易處理的條件。

  1. 區塊生產者通過修改原始碼來反映憲法的變化,並使用新憲法的雜湊將其提交給區塊鏈。

  2. 區塊生產者連續30天保持15/21批准新憲法。

  3. 對程式碼的更改7天后生效,在批准原始碼後,所有非生產完整節點有1周的時間進行升級。

  4. 所有未升級到新程式碼的節點都會自動關閉。

預設情況下,EOS.IO軟體的配置,更新區塊鏈以新增新功能的過程需要2到3個月的時間,而修復不需要修改結構的非關鍵性漏洞的的更新可能需要1到2個月的時間。

7.4.1緊急變更

如需進行軟體更改以修復不良或損害使用者的安全漏洞,區塊生產者則可能會加快此程序。 總體來說,它可能會因為引入新功能或修復無害漏洞來加快升級而違反憲法。

八、指令碼和虛擬機器

EOS.IO軟體將首先成為協調向賬戶交付認證訊息(稱為“操作”)的平臺。指令碼語言和虛擬機器的細節是特定於實現的細節,這些細節大多獨立於EOS.IO技術的設計。 任何語言或虛擬機器都可以與EOS.IO軟體API整合在一起,這些語言或虛擬機器具有足夠的效能,並且具有確定性和正確的沙箱效果。

8.1 明確的指令架構

所有賬戶間傳送的指令都是通過區區塊鏈共識狀態模式來定義的。該架構允許在二進位制和JSON表示形式中無縫轉換。

8.2定義資料庫的架構

資料庫狀態也使用類似的模式進行定義。 這確保了所有應用程式儲存的資料都可被解釋為人類可讀的JSON格式,但以二進位制的效率進行儲存和操作。

8.3通用多索引資料庫API

開發智慧合約需確定的資料庫模式來追蹤,儲存和查詢資料。 開發人員通常需要對多個欄位進行排序或索引的相同資料,並保持所有索引之間的一致性。

8.4身份驗證與應用程式分開

為了最大化並行機會並最大限度地減少與事務日誌中重新生成應用程式狀態相關的計算債務,EOS.IO軟體將邏輯驗證分為三部分:

1.驗證Action是否內部一致;

2.驗證所有先決條件是否有效;

3.修改應用程式狀態。

驗證Action內部的一致性是隻讀的,不需要訪問區塊鏈狀態。這意味著它能以最大並行度執行。驗證的先決條件(如所需的平衡)是隻讀的,因此也可以從併發性中受益。只有修改應用程式狀態才需寫入許可權,並且必須按順序處理每個應用程式。

身份驗證是驗證可以應用操作的只讀過程。事實上,應用程式在做這項工作,實時兩項計算都需要執行,但是一旦交易包含在區塊鏈中,就不再需要執行認證操作。

九、區塊鏈間通訊

EOS.IO軟體旨在促進區塊間連結通訊。 這是通過生成動作存在證明和動作序列證明來實現的。這些證明與圍繞Action傳輸指令而設計的應用程架構相結合,使應用程式開發人員可隱藏區塊鏈間通訊和確認證明的細節,從而高度抽象地呈現給開發人員。

9.1輕客戶驗證(LCV)Merkle證明

如果客戶不需要處理所有交易,與其他區塊鏈整合將更容易。畢竟,交易所只關心交易的匯入和匯出。如果交易所能夠利用輕量級的存款證明而不是完全信任自己的區塊生產者,這將是理想的選擇。如果交易所能有效利用輕量級的存款證明,而不需完全信任自己的區塊生產者,這將是理想的選擇。至少,一個區塊鏈生產者在與另一個區塊鏈同步時希望儘可能的維持最低開銷。

LCV的目標是能夠生成相對較輕的存在證據,並且任何人都可追蹤輕量級資料集來驗證。在這種情況下,目標是證明特殊交易包含在特定區塊中,並且該區塊包含在經驗證的特定區塊鏈的歷史記錄中。

比特幣支援事務驗證的方式是,假設所有節點都有權讀取區塊頭資料完整記錄的能力,而每年區塊頭增長4MB。假設每秒產生10筆交易,一個有效的證明需要大約512 bytes。這對於一個出塊時間是10分鐘的區塊鏈來說是可行的,但對於塊區間隔為0.5秒的區塊鏈這就不再“輕”了。

EOS.IO軟體為任何在包含事務處理後擁有任何不可逆區塊頭的人提供輕量級證明。使用顯示的雜湊連結結構,可以證明任何事務的存在性,且證明是小於1024位元組的。

在區塊鏈中,每個區塊鏈都擁有一個ID,並將頭部標題設為可信的不可逆區塊。有可能證明該塊已包含在區塊鏈中。該證明採用ceil(log2(N))摘錄其路徑,其中N是鏈中的塊數。 指定的SHA256摘要方法可證明所有在864個位元組中包含的1億個區塊的存在。

當需要驗證其他鏈上的證據時,可進行各種時間/空間/頻寬優化。追蹤所有塊頭(420 MB /年)將使證明保持較小證據。僅跟蹤近期標題可在最小的長期儲存和證明大小間折中。另外,區塊鏈可使用緩慢評估方式記憶過去證明的中間雜湊值。新的證明只需包含已知稀疏樹的連結。所使用的確切方法必將取決於包含引用merkle證明交易的外部塊的百分比。

在一定密度的相互連線之後,只讓一條鏈包含另一條鏈的整個區塊歷史記錄並且不需要提供所有樣本將變得更有效率。出於效能考慮,最理想的做法就是儘可能減少鏈間證據的頻率。

9.2 鏈間通訊延遲

當與外部區塊鏈通訊時,區塊生產商必須等到100%確定交易已被其他區塊鏈不可逆轉地確認後,再將其作為有效輸入接受。使用基於EOS.IO軟體的區塊鏈和DPOS以及0.5s的DPOS出塊速度及拜占庭容錯不可逆性新增,這大約需要0.5秒。如果任何一個區塊鏈生產者不等待,那就好比一筆後來被逆轉的存款交易一樣,並可能影響區塊鏈共識的有效性。 EOS.IO軟體同時使用DPOS和aBFT來實現快速的不可逆性。

9.3 完整性證明

當使用來自外部區塊鏈的merkle證據時,知道所有處理過的交易為有效的,和知道沒有交易被跳過或省略的,這兩者存在顯著差異。儘管不可能證明所有最近的交易都是已知的,但卻可證明交易記錄沒有間斷。 EOS.IO軟體為每個指令、每個賬戶分配一組序列去簡化操作。使用者可使用這些序號來證明那些特殊帳戶的所有指令已被處理,並且是按序處理。

9.4 隔離見證

隔離見證的概念是指:一旦區塊鏈完成不可逆交易後,交易簽名便會無關緊要。因此,即使簽名資料被縮減,當前狀態仍可有效匯出。由於簽名佔據了多數事務的大量資料,隔離見證可顯著減少磁碟儲存空間和同步時間。

相同概念也可使用到merkle 證明區塊鏈之間的溝通上:一旦證明被接受,將不可逆轉地記錄在區塊鏈上,區塊鏈狀態正確匯出時便不再需要這2kb的SHA256雜湊值來證明,在區塊鏈之間的溝通上,這比一般簽名減少了超過32倍的佔用空間。

另外一個隔離見證的應用例子是Steem部落格帖子,在這種模型下,帖子僅包括SHA256(部落格內容),帖子內容會存在隔離見證資料內,區塊鏈生產者將查證內容的存在性及已有的雜湊值。不過,在區塊鏈日誌上恢復當前狀態時並不需要預先儲存帖子內容,因為內容一經確認,無需永久儲存。

十、結論

EOS.IO軟體的設計源自經過驗證的概念和最佳實踐經驗,並代表了區塊鏈技術的根本性進步。該軟體是全球可擴充套件區塊鏈社會的整體藍圖的一部分,其中可以輕鬆部署和管理去中化應用程式。