一旦一個對映被識別,則透過閾值多簽名流程驗證簽名權威,並且關聯權威與命名的許可權。 如果失敗了,則躍遷至父許可權,直至擁有者許可權,@alice.owner。
預設許可權群組
所有其他的全新群組派生自“活動”群組。
許可權並行評估
許可權評估過程是“只讀”的,並且透過交易對許可權的變更在一個區塊結束之前不會起作用。 這意味著對所有的交易對應的金鑰和許可權評估可以被並行執行。 此外,這意味著一個快速的許可權驗證是可行的,它無需啟動會引起回滾需求的高成本的應用邏輯。 最後,這意味著交易許可權可以被評估即便接收到等待的交易,並且之後無需再重新評估。
從各方面考慮,許可權驗證佔據了驗證交易計算量的很大比例。 讓其只讀和普遍的併發處理將會使得效能有一個質的飛躍。
當從訊息日誌中重新生成確定性狀態時不再需要重複的許可權驗證。 事實是一個交易如果被包含近了一個被認為不存在問題的區塊時它就有足夠的理由跳過這 步這將極大減少因為區塊鏈增長拉去過去記錄時的計算量。
帶強制性延時的訊息
時間是安全中的一個關鍵組成部分。 在大多數情況下,一個私鑰在沒有被使用前都無從知曉它是否被偷竊。 當人們有需要金鑰的應用在每天聯網使用的電腦上執行時,基於時間的安全會更為重要。 EOS 軟體讓應用開發者可以指明訊息必須在被加到一個區塊之前等待最小的時間間隙。
使用者可以在訊息廣播出去後透過郵件或者文字訊息的形式收到通知。 如果他們沒有授權,那麼他們可以使用帳戶恢復流程來恢復帳戶,並收回訊息。
這個必須的延時由操作敏感性決定。 為一杯咖啡付款可以沒有任何的延時,幾秒之內就不可逆了,而購買一個房子也許需要 72 消失的結算期。 轉移整個帳戶到一個新的控制可能需要長達 30 天。 具體的延時選擇由開發者和使用者自己來做選擇。
恢復被盜竊的金鑰
EOS 軟體提供給使用者一種找回自己失竊金鑰控制權的方式。 一個帳戶的所有者可以使用過去 30 天任何活躍的擁有者金鑰與事先指定的合作者帳戶給出的批准來重置自己帳戶的金鑰。 帳戶的恢復合作者在沒有所有人幫助的情況下無法重置帳戶的控制權。
駭客嘗試進行恢復流程是無意義的,因為他們已經“控制”了帳戶。 此外,就算他們真的進行這一流程,恢復合作者也會詢問身份證明和多因素認證 (手機和郵件)。 這會讓駭客脫作出讓步或者無功而返。
這一流程與簡單的多重簽名有很大差異。 在多重簽名中,另一個公司要參與所有轉賬的執行,但在恢復流程中,它卻只在恢復時才起作用對每天的轉賬無從干預。 這大大的降低了參與者的成本和法律責任。
應用程式的確定性並行執行
區塊鏈共識取決於確定性 (可重現的) 的行為。 這意味著所有的平行計算必須是不能互斥或者具有其他鎖特性的。 沒有了鎖就必須有一些方式可以確保所有的帳戶只可以讀取和寫入他們自己的私有資料庫。 這也意味著每個帳戶處理訊息是順序的,而併發只能在帳戶層面進行。
每個帳戶的狀態由且只由傳送給它的訊息決定。 進度表由區塊生產者輸出並且會被確定性的執行,但是生成進度表的過程卻不一定是確定性的。 這意味著區塊生產者可以使用併發演算法來排程交易。
並行執行的一方面意味著當一個指令碼生成了一個新的訊息,它不會立即被髮送,而被安排在下一個輪訓中傳送。 不能立馬發出的原因是接受者可能在另一個執行緒中活躍的變更自己的狀態。
最小化通訊延遲
延遲是一個帳戶從發出一條訊息給另一個帳戶,直到收到迴應的這段時間。 我們的目標是在一個單獨的區塊中包含兩個帳戶交換訊息的來去資訊,而不用在每條訊息間等待 3 秒鐘。 為了做到這一點,EOS 軟體將每個區塊劃分為迴圈。 每個迴圈劃分為執行緒,每個執行緒包含了交易的一個列表。 每一個交易包含了待傳送的訊息集合。 這個結構可以被視覺化為一個樹,其中互動層彼此並行,各自被順序的執行。
區塊
迴圈 (順序)
執行緒 (並行)
交易 (順序)
訊息 (順序)
接受者和被通知帳戶 (並行)
在一個迴圈中生成的交易可以在後續的任何一個迴圈或者區塊中被髮送。 區塊生產者會持續不斷的向區塊中新增迴圈直到最大的牆上時間到了或者沒有更多的新交易要傳送。
可以對一個區塊使用靜態分析來驗證同一個迴圈內不存在兩個執行緒包含同一帳戶下對交易的變更。 只要保持不變一個區塊就可以並行的執行所有的執行緒。
只讀訊息的處理
有些帳戶可以在傳遞/失敗的基礎上處理訊息而不修改內部狀態。 如果是這樣的話,那麼這些處理程式可以並行執行,只要只有一個特定的帳戶的只讀訊息處理程式包含在一個或多個執行緒在一個特定的週期。
多帳戶的原子化交易
有時我們需要確保訊息自動的被多個賬戶傳遞和接收。 在這種情況下,訊息會被放在同一個交易內,賬戶會被分配到同一個執行緒,並且訊息被順序的新增。 這種情況對效能是不理想的,當使用者使用涉及到“賬單”時,他們將在交易內以賬戶唯一索引被列入其中。
基於效能和成本原因最好減少涉及兩個或多個重度帳戶的原子性操作。
區塊鏈狀態的部分評估
擴充套件區塊鏈技術使得元件化成為必要。每個人不應該執行所有的事務,尤其是當其只需要執行應用的一個小的子集。
一個交易所應用開發者執行一個完整節點位的是為其使用者展現所有的狀態。 這個交易所應用沒有與社交網路建立關聯的必要性。 EOS 軟體允許任何的完整節點選擇應用的任何子集來執行。 傳遞給其他應用的訊息可以被安全的忽略掉,因為應用程式的狀態完全由傳遞給它的訊息派生。
這與其他帳戶的溝通有一些重要的影響。 最重要的是,不能假定其他帳戶的狀態可以在同一臺機器上訪問。 這也意味著,雖然很容易啟用“鎖”來允許一個帳戶同步呼叫另一個帳戶,如果其他帳戶不駐留在記憶體中,這種設計模式就會出現問題。
所有賬戶帳戶間的狀態通訊必須透過包含在區塊鏈中的訊息進行。
自主最優排程
EOS 軟體並不能為區塊生產生者為任何其他帳戶送達的任何資訊負責。 每個區塊生產者要對計算的發雜讀和處理一個訊息的時間自己進行主觀上的預測。 這同時適用於使用者生成的和指令碼自動生成的交易。
然而,每個單獨的區塊生產者要透過自己的演算法來計算資源的消耗。 當一個區塊生產者斷定一個交易或者帳戶消耗了不相稱的大量的計算資源時,他們可以在生成自己的區塊時拒絕該交易;但是,如果其他區塊生產者認為交易是有效的,他們就仍需要處理交易。
一般而言,只要一個區塊生產者認為交易在資源使用限度內是有效的,那麼其他區塊生產者就也要接受,但可能交易傳遞給生產者就要花費 1 分鐘。
在某些情況下,生產者可以建立包含可接受範圍之外的數量級的塊。 在這種情況下,下一個區塊生產者可能會選擇拒絕區塊和束縛將被第三個生產者打破。 這和因為區塊過大導致的網路延時沒什麼打不同。 社羣會注意到模式的異常並最終會將票從流氓生產者哪裡刪掉。
這種對計算成本的主觀評估將區塊鏈從必須精確和確定的預測一些東西要花多長時間來執行這一問題中解放出來。 有了這一設計就不需要精確的數指令,將極大的增加最佳化的可能性又不必打破共識。
Token 模型與資源使用
· 頻寬和日誌儲存 (磁碟);
· 計算與計算儲備 (中央處理器);
· 狀態儲存 (記憶體)。
頻寬和計算有兩部分,瞬時使用和長期使用。 一個區塊鏈維持著所有訊息的日誌,這些日誌最終由完全節點儲存和下載。 透過訊息日誌可以重現所有應用的狀態。
可計算債務是一個必須透過訊息日誌重新構建狀態的計算結果。 如果可計算債務增長變得臃腫則有必要透過快照方式記錄區塊鏈狀態,並丟棄區塊鏈歷史。 如果可計算債務增長過快,則它需要花費 6 個月時間來重放等值與 1 年的交易。 這很不可取,因此,可計算債務需要被細心的管理。
區塊鏈狀態儲存是透過訪問應用邏輯獲取的資訊。 它包括諸如掛單和賬戶餘額等資訊。 如果狀態從未被應用讀取則它不會被儲存。 比如,部落格釋出的內容和評論如未被應用邏輯讀取則他們就不應該儲存在區塊鏈狀態中。 同時,釋出的內容/評論的存在、投票的數量和其他屬性要作為區塊鏈狀態的部分被儲存下來。
區塊生產者對外發布她們可用的頻寬,計算能力和狀態。 EOS 允許帳戶按比例消耗一個 3 天對賭合約中的可用資源。 舉個例子,如果一個基於 EOS 的區塊鏈啟動了,一個帳戶持有所有 token 發行總量的 1%,那麼帳號就具有使用 1% 狀態儲存空間的能力。
客觀與主觀的度量
如前所述,檢測計算使用的效能和最佳化的影響很大;因此,所有資源的使用限制,最終都是主觀的,執行依靠個人的演算法和區塊生產者進行估計。
也就是說,有一些事情是微不足道的客觀衡量。 傳送的訊息數和儲存在內部資料庫中的資料的大小是便宜的客觀衡量。 的 EOS 軟體讓區塊生產者採用相同的演算法應對客觀的量,但可以在主觀量上選擇採用更嚴格的主觀測量演算法。
接收方付費
傳統上來說,企業為辦公場地、計算力和其他為了執行企業而需要的成本買單。 客戶從企業購買具體的產品,產品銷售產生的利潤來蓋過企業運作的成本。 類似的,沒有哪個網站要求來訪者為蓋過運作成本而支付。 因此,去中心化應用也不應該強制使用者因為使用了區塊鏈而直接為區塊鏈支付。
委託能力
A holder of tokens on a blockchain launched adopting the EOS 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 software on such blockchain will recognize this delegation of capacity and allocate bandwidth accordingly.
分離交易成本與 Token 價值
EOS 軟體的一個主要優點就是應用可用的頻寬完全獨立於 token 的價格。 If an application owner holds a relevant number of tokens on a blockchain adopting EOS 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 software enables block producers to naturally increase bandwidth, computation, and storage available per token independent of the token's value.
A blockchain using EOS software also awards block producers tokens every time they produce a block. Token 的值將影響其能購買的頻寬、儲存和計算資源;這一模型會自然的利用 token 值的上漲來增加網路的效能。
狀態儲存成本
由於頻寬和計算資源可以被委託,因此應用的狀態儲存需要應用程式的開發者持有 token 直到狀態被刪除。 如果狀態永遠不會被刪除那麼 token 實質上從流通中被抹除。
每一個使用者帳戶需要一個確定數量的儲存;因此每一個帳戶必須保持一個最小的餘額。隨著網路儲存能力的不斷提升,餘額的最小余額需求將會下降。
塊獎勵
EOS 軟體可以配置限定生產者回報的上限從而確保 token 的每年增長比例不會超過 5%。
社羣效益應用
In addition to electing block producers, pursuant to a blockchain based on the EOS software, users can elect 3 community benefit applications also known as smart contracts. 這三個應用將接收至多一個按照配置百分比對應的 token 年供應量減去每年提供給區塊生產者的 token 量。 這些智慧合約將按照每個應用接收到的 token 持有者的票的比例對應的 token。 這些應用或者智慧合約可以被 token 持有者選出的新的應用或智慧合約所替代。
治理
治理是人們在主觀問題上達成共識的過程,而這無法完全用軟體演算法來捕獲。 An EOS software-based blockchain implements a governance process that efficiently directs the existing influence of block producers. 沒有了定義好的治理流程,之前的區塊鏈依賴臨時的、非正式和常常充滿爭議的方式治理,直接導致不可預知的結果。
A blockchain based on the EOS software recognizes that power originates with the token holders who delegate that power to the block producers. 區塊生產者被授予有限的檢查權威來凍結帳戶,升級有缺陷的應用程式,對底層協議提出硬分叉的改進建議。
Embedded into the EOS software is the election of block producers. 在對區塊鏈沒有做任何變更之前他們必須認可它。 如果區塊生產者拒絕 token 持有者所預期的變更他們就會被投出。 如果區塊生產者未經 token 持有者的授權作出變更,其他的非生產、完整驗證 (交易所等) 會拒絕這些變更。
凍結帳戶
有時一個智慧合約的行為處於一種一場或不可預測的狀態並且無法按照預期執行;另一些時候一個應用或帳戶也許發現了一個可以銷燬不可想像數量資源的漏洞。 當這些問題不可避免的發生時,區塊生產者有能力來扭轉這一局面。
所有區塊鏈上的區塊生產者都有能力來決定哪些交易被加到區塊中,這給了他們凍結帳戶的能力。 A blockchain using EOS software formalizes this authority by subjecting the process of freezing an account to a 17/21 vote of active producers. 如果生產者濫用權利他們會被投出,而對應凍結帳戶就將解凍。
更改帳戶程式碼
When all else fails and an "unstoppable application" acts in an unpredictable manner, a blockchain using EOS software allows the block producers to replace the account's code without hard forking the entire blockchain. 與凍結一個帳戶類似,更改帳戶程式碼需要 17/21 這樣的生產者票形。
憲法
EOS 應用使得區塊鏈建立了一個點對點的服務條款協議或者繫結使用者到一個合約,這都需要使用者對其簽名,簡稱“憲法”。 憲法的內容定義了僅僅依靠程式碼無法在使用者間履行的義務,同時透過建立管轄權和可選的法律來解決相互間的爭端。 每個在網路廣播的交易都必須將憲法的雜湊值作為簽名的一部分,從而顯性的將簽名者繫結在合約中。
憲法還定義了人類可讀意圖的原始碼協議。 這個意圖是用來識別錯誤和功能之間的差異,當錯誤發生時,引導社羣對什麼是適當或不當修復。
升級協議 & 憲法
The EOS 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:
· 區塊生產者對憲法提出改建意見並獲得 17/21 批准。
· 區塊生產者持續 17/21 品準連續 30 天。
· 所有使用者需要使用新的憲法來做簽名。
· 區塊生產透過變更程式碼的方式來影響憲法並且提交一個 git 記錄的雜湊值。
· 區塊生產者持續 17/21 品準連續 30 天。
· 7 天后改為會起影響的程式碼,給所有完整節點 1 周時間在確認原始碼後進行升級。
· 所有未升級到最新程式碼的節點被自動關掉。
按照 EOS 的預設配置,新增新特性升級區塊鏈的流程需要 2 到 3 個月,而修復一般的 bug 不需要更改憲法需要 1 到 2 個月時間。
緊急變更
區塊生產者可以推薦軟體的變更當 bug 是傷害性 bug 或安全溢位影響使用者使用的。 一般來說,這可能是對憲法的加速更新,引進新的功能或修復無害的錯誤。
指令碼 & 虛擬機器
EOS 首先會是一個平臺用於協同使用者間認證訊息的傳遞。 指令碼語言和虛擬機器的具體實現與 EOS 技術的設計是分離的。 任何語言或者虛擬主機,只要確定並適合沙盒,帶有足夠的執行效率均可以和 EOS 軟體 API 對接。
模式定義的訊息
所以使用者間傳送的訊息都是透過模式定義定義出來的,它是區塊鏈共識狀態的一部分。 這個模式允許訊息在二進位制與 JSON 格式之間無縫的轉換。
模式定義的資料庫
資料庫狀態也是透過類似的模式來定義。 這是為了確保所有應用儲存的資料是可以轉化為人類可讀的 JSON 但儲存和控制時使用高效的二進位制。
分離授權與應用
To maximize parallelization opportunities and minimize the computational debt associated with regenerating application state from the transaction log, EOS software separates validation logic into three sections:
驗證訊息是否內部一致;
驗證所有前提條件是否有效;
修改應用程式狀態。
驗證訊息的內部一致性是隻讀的並且無需訪問區塊鏈狀態。 這意味著它可以以最大併發來執行。 驗證前提條件,比如需要的餘額數,是隻讀的因此也可以受益與平行計算。 只有更改應用狀態時需要寫入許可權並且必須順序的執行每個應用。
身份認證是一個驗證訊息可被使用的只讀過程。 應用程式實際上在發揮作用。 同一時間兩者都需要被計算,然而一旦訊息被包含進區塊它就不再需要進行訊息驗證的操作了。
虛擬機器獨立架構
It is the intention of the EOS software-based blockchain that multiple virtual machines can be supported and new virtual machines added over time as necessary. 因此,本文並不討論任何特定的語言或者虛擬機器。 That said, there are two virtual machines that are currently being evaluated for use with an EOS software-based blockchain.
Web 組建 (WASM)
網路組建是一種為了構建高效能的 web 應用而新興的 web 標準。 只需要進行少量的更改 Web 組建就可以被製作為確定性的和沙盒化的。 Web 組建的好處是它有著廣泛的產業支援並且它可以讓智慧合約使用熟知的語言進行開發,比如 C 或 C++。
以太訪開發者已經開始更改 Web 組建來提供合適的沙盒與確定性在他們的以太訪式 Web 組建 (WASM)。 這種方式讓 EOS 很容易的與之適配和對接。
以太訪虛擬機器 (EVM)
這個虛擬機器已經被眾多已有的智慧合約所採用並且可以透過適配應用與 EOS 區塊鏈中。 It is conceivable that EVM contracts could be run within their own sandbox inside an EOS software-based blockchain and that with some adaptation EVM contracts could communicate with other EOS software blockchain applications.
跨鏈通訊
EOS 軟體被設計為跨區塊鏈通訊友好的。 這是透過生成訊息存在證明與訊息時序證明變的簡單而實現的。 這些證明與應用架構設計相結合,即圍繞訊息細節的跨鏈傳輸和有效性驗證時隱藏應用程式開發者的架構設計。
用於輕客戶端的 Merkle 證明 (LCV)
如果客戶端不需要處理所有的交易會讓多區塊鏈間的整合更為輕鬆。 畢竟,一個交易所只需要關心交易所的入賬和出賬,別無他求。 如果交易所鏈條可以使用資金的輕量 merkle 證明,而不必非要完全依賴對它區塊生產者的信任會是一個不錯的主意。 至少一個鏈的區塊生產者在與其他區塊鏈同步時更樂意保持儘可能小的開銷。
LCV 的目標能產生相對輕量存在性證明,使得任何追蹤相對輕量資料集的人可以驗證其有效性。 在這種情況下,目的是為了證明一個特定的交易是包含在一個特定的區塊中,區塊包含在一個特定的區塊鏈的已驗證歷史中。
比特幣支援透過全節點的完整記錄獲取每年 4MB 大小的區塊頭資訊來驗證交易。 每秒 10 個交易,一個有效的證明需要 512 個位元組。 這對於有 10 分鐘間隔的區塊鏈沒有問題,但是對於 3 秒間隔區塊鏈就顯得不那麼“輕量”了。
EOS 軟體使得任何一個人只要他擁有包含交易所對應區塊之後的隨意一個不可逆的區塊頭,他就可以進行輕量證明。 使用下面展示的雜湊鏈結構就可以使用少於 1024 位元組的大小來完成任意交易的存在性證明。 如果假設校驗節點在過去幾天內所有的區塊頭一直增長 (2MB 的資料),那麼驗證這些交易將只需要 200 位元組就夠了。
將生產的區塊與恰當的雜湊鏈做關聯使得開銷增幅很小,這意味著沒有理由不使用這種方式來生成區塊。
當需要驗證其他鏈時,有譬如 時間/ 空間/ 頻寬 的多樣化最佳化可以做。 追蹤全部區塊頭 (420 MB/年) 將保持證明體積的輕巧。 只追蹤最近的頭可以提供最小長期儲存和證明大小來獲得。 另外,一個區塊鏈可以使用懶惰的評估方法,即它記住過去證明的中間值雜湊。 新證明只需要包含指向已知稀疏樹的連結。 確切的方法將取決於那些包含對 Merkle 證明引用的交易所在的外部區塊的比例。
一定密度的聯絡後,將變得更為高效,一個鏈會包含另一個鏈整個區塊的歷史和消除證據一起,這樣就不需要通訊便可以驗證了。 出於效能原因,應最小化的跨鏈證明的頻率。
跨鏈通訊的延時
當與外部區塊鏈進行通訊時,區塊生產者必須等待直到 100% 確信一個交易已經被另一個區塊鏈確認為不可逆後才會接收它成為一個有效的輸入。 Using an EOS 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.
完備性證明
當使用來自外部區塊鏈的 Merkle 證明時,在已知所有交易均已驗證和已知沒有交易被跳過或遺忘之間有一個重要的差異。 雖然不可能證明所有最近的交易是已知的,但有沒有間隙的交易歷史是可以被證明的。 EOS 軟體在每個使用者的每個傳遞的訊息上分配了一個序列號。 一個用於可以使用這些序列號來證明所有的訊息由某個特定帳戶處理,只需要看它是否是按序執行的。
總結
EOS 軟體是從證明概念的經驗和最佳實踐設計而來,它代表了區塊鏈技術的重要進步。 該軟體是全球可擴充套件區塊鏈社會偉大藍圖中的一部分,它將應用去中心化並得以輕鬆的釋出和治理。
網址:
交易平臺 注:各大交易所均可交易
幣安網 : | |
火幣全球站 : | Bibox : |
KuCoin : | 位元兒海外版 : |
BCEX : | 幣蛋 : |
FCoin : |