TWI793696B - 具有短完結時間之高吞吐量區塊鏈共識系統、電腦實施方法以及非暫時性電腦可讀媒體 - Google Patents

具有短完結時間之高吞吐量區塊鏈共識系統、電腦實施方法以及非暫時性電腦可讀媒體 Download PDF

Info

Publication number
TWI793696B
TWI793696B TW110128435A TW110128435A TWI793696B TW I793696 B TWI793696 B TW I793696B TW 110128435 A TW110128435 A TW 110128435A TW 110128435 A TW110128435 A TW 110128435A TW I793696 B TWI793696 B TW I793696B
Authority
TW
Taiwan
Prior art keywords
node
proposer
voter
computer
blockchain
Prior art date
Application number
TW110128435A
Other languages
English (en)
Other versions
TW202145759A (zh
Inventor
石潤婷
拉斐爾 納特 約瑟夫 帕斯
字康 陳
蔡彰人
駱嘉濠
Original Assignee
美商霹靂幣股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商霹靂幣股份有限公司 filed Critical 美商霹靂幣股份有限公司
Publication of TW202145759A publication Critical patent/TW202145759A/zh
Application granted granted Critical
Publication of TWI793696B publication Critical patent/TWI793696B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本發明係關於採用管線化技術之區塊鏈系統及共識協定。該等系統及協定涉及包括提議者節點及表決者節點之共識節點之一委員會。每一提議者節點可將一個或多個未公證提議發送至該等表決者節點,且該等表決者節點可在其等具有相同的最新已公證鏈或區塊時對一未公證提議進行表決。提供一序列號以促進該等系統及協定之操作。該序列號可用來判定該最新已公證鏈或區塊及已完結鏈,且切換提議者節點。該等系統及協定亦提供其他特徵,諸如鏈同步器、委員會選舉方案及委員會重新組態。該等系統及協定進一步提供一簡單完結程序,且因此具有一短完結時間。

Description

具有短完結時間之高吞吐量區塊鏈共識系統、電腦實施方法以及非暫時性電腦可讀媒體
本發明係有關於區塊鏈共識(blockchain consensus)之領域,特別是關於用於增大交易吞吐量且加速交易完結時間之區塊鏈共識系統及協定。
相關申請案之交叉參考:本申請案主張2018年9月28日申請之美國臨時申請案第62/738,791號之權益,該美國臨時申請案之全部內容以引用之方式併入本文中。
用於同級間網路(peer-to-peer network)中的分佈式分類帳(distributed ledger),例如用於比特幣(Bitcoin)及以太坊(Ethereum)加密貨幣系統中的區塊鏈,是依賴於藉由同級間網路上的參與者所商定的共識系統,來將資料區塊添加至分類帳。在此等系統中,參與者檢查所提議的區塊以便驗證其符合網路商定標準,而非依賴於第三方受信任中央授權機構來授權該添加的區塊。
然而,現有共識系統具有若干問題。工作量證明(Proof of Work, PoW)系統需要使用消費過多電的巨大的專用硬體來計算複雜的散列演算法(hashing algorithm)。此等系統已導致散列硬體的軍備競賽及採礦池之建立。股權證明(Proof of Stake, PoS)系統旨在解決工作量證明系統之問題。股權證明系統之基本構思係與數位貨幣之持股成比例地控制公共分類帳。希望股權證明系統將更具能量效益且更適當地分配對公共分類帳之控制。然而,此等系統可導致多個鏈或叉路之建立,且不存在客觀方式來在其間進行選擇(無利害關係問題)。實用拜占庭容錯(Practical Byzantine fault tolerance, PBFT)系統為另一類型之共識系統。此等系統經由多輪參與者表決來實施,從而需要對網路中之訊息進行多次簽名。此引入計算簽名之計算額外負荷及儲存所產生的所有多個簽名之磁碟空間額外負荷。習知共識系統亦具有低吞吐量,此係因為其並不良好地按比例調整以處置大交易量。舉例而言,比特幣及以太坊可處置的交易量不超過10個每秒。相比之下,Visa之交易處理系統在相同時間量內可處置多於200個交易。管線化可增大共識系統之吞吐量,但其亦使交易完結程序變複雜且延長交易完結時間。因此,傳統上,已知此技術阻礙許多重要應用且在區塊鏈技術中不合需要。
因此,仍需要較之先前技術有所改良之區塊鏈共識系統及協定。
根據本發明之原理,預期一種實施一區塊鏈共識協議之系統。在一個實施例中,該系統包含複數個節點電腦,且該複數個節點電腦中之每一節點電腦包括一處理器、儲存可由該處理器執行之電腦指令的記憶體以及能夠運作地耦接至該處理器及一通信網路之一網路介面,該通信網路連接該複數個節點電腦。該複數個節點電腦經組態以建立含有交易之一區塊鏈,該區塊鏈藉由該複數個節點電腦維護。該複數個節點電腦包括一委員會,其包含提議者節點電腦及表決者節點電腦。
該系統經組態以將一序列號提供至該區塊鏈上之一提議或一區塊。
該委員會中之節點電腦經組態以執行一公證程序。在該公證程序中,該委員會中之一提議者節點電腦經組態以準備一個或多個未公證提議並將其發送至該委員會中之每一該表決者節點電腦。該委員會中之該等表決者節點電腦中之每一者經組態以在該表決者節點電腦與該提議者節點電腦具有該區塊鏈之相同記錄時對一未公證提議進行簽名,且將經簽名提議發送至該提議者節點電腦。該提議者節點電腦經組態以在該提議者節點電腦接收到用於一未公證提議之臨限數目個簽名之後公證該未公證提議。一已公證提議為添加至該區塊鏈之一區塊。
該提議者節點電腦進一步經組態以在該提議者節點電腦公證任何提議之前,將另一個或另多個未公證提議發送至每一該表決者節點電腦。
該相同記錄為最末區塊具有由該系統提供的最大的序列號之一已公證鏈。
該系統經組態以自該已公證鏈判定無該已公證鏈中之數個最末區塊的一已完結鏈,其中最末區塊之該數目對應於由該提議者節點電腦發送的多個未公證提議之數目。
在一個實施例中,該提議者節點電腦中具有該最大序列號的該區塊之該序列號與該表決者節點電腦中具有該最大序列號的該區塊之該序列號匹配。
在一個實施例中,該提議者節點電腦中具有該最大序列號的該區塊之該序列號至少相同於或大於該表決者節點電腦中具有該最大序列號的該區塊之該序列號。
在一個實施例中,該委員會進一步經組態以執行一對帳程序。在該對帳程序中,該委員會中之一提議者節點電腦經組態以將請求每一表決者節點電腦提供每一表決者節點電腦上的區塊鏈資訊之一狀態請求發送至該委員會中之該等表決者節點電腦,且每一表決者節點電腦經組態以將其區塊鏈資訊發送至該提議者節點電腦。
另外,在該對帳程序中,該提議者節點電腦經組態以在該提議者節點電腦接收到該等表決者節點電腦中之一者上的該區塊鏈資訊之後,在該提議者節點電腦在該表決者節點電腦上具有的該區塊鏈資訊與該表決者節點電腦上之該區塊鏈資訊不同的時候將一資料請求發送至該表決者節點電腦。
另外,在該對帳程序中,該表決者節點電腦經組態以在該資料請求之後將遺漏之區塊鏈資訊提供至該提議者節點電腦,以使得該提議者節點電腦在該表決者節點電腦上具有的該區塊鏈資訊與該表決者節點電腦上的該區塊鏈資訊匹配。
在一個實施例中,該系統經組態以在執行任何公證程序之前執行該對帳程序。
在一個實施例中,簽名之該臨限數目為該委員會中的表決者節點電腦之總數目之至少2/3。
在一個實施例中,簽名之該臨限數目等於該委員會中一起持有總股權之至少2/3的表決者節點之一數目。
在一個實施例中,該序列號包括指示哪一委員會正執行一公證程序之一第一值、指示該委員會中哪一提議者正提出提議之一第二值及指示一區塊識別號之一第三值。
在一個實施例中,該等表決者節點電腦經組態以在一段時間未自該提議者節點電腦接收到一提議之後將一提議者改變請求發送至該委員會中之另一提議者節點電腦。
在一個實施例中,該另一提議者節點電腦經組態以接收提議者改變請求,且在接收到臨限數目個提議者改變請求之後公證該等提議者改變請求。
在一個實施例中,該另一提議者節點電腦經組態以發指令給該等表決者節點電腦以前移其出現時間值。該等表決者節點電腦經組態以在其出現時間值前移之後自該另一提議者節點電腦接收提議。
在一個實施例中,該等提議者節點電腦及該等表決者節點電腦係基於其提交的一投標交易而自候選節點之一群組中選擇。每一候選節點提交一投標交易,該投標交易指定待置於一代管契約中之一股權量且指示其希望成為一提議者節點電腦抑或一表決者節點電腦,且該系統選擇具有最高股權之數個候選節點作為提議者節點電腦及表決者節點電腦。
在一個實施例中,該系統經組態以依照一選舉方案選擇包括提議者節點電腦及表決者節點電腦之一新委員會。該系統經組態以藉由在該委員會中具有臨限數目個表決者節點電腦且在該新委員會中具有臨限數目個表決者節點電腦來對一提議進行簽名或在數個區塊之後用該新委員會來替換該委員會。
根據本發明之原理,預期一種計算機實施方法或區塊鏈共識協議。該方法包含在複數個節點電腦中實施一區塊鏈共識軟體應用程式。該複數個節點電腦中之每一節點電腦包括一處理器、儲存可由該處理器執行之電腦指令的記憶體以及能夠運作地耦接至該處理器及一通信網路之一網路介面,該通信網路連接該複數個節點電腦。該應用程式組態該複數個節點電腦以建立藉由該複數個節點電腦維護的含有交易之一區塊鏈,且形成包含提議者節點電腦及表決者節點電腦的一委員會。
該區塊鏈共識軟體應用程式包括儲存在該記憶體中之電腦指令,該等電腦指令可由該處理器執行以執行電腦實施步驟,該等步驟包含將一序列號提供至該區塊鏈上之一提議或一區塊。該等步驟亦包含執行一公證程序,包含組態該委員會中之一提議者節點電腦以準備一個或多個未公證提議並將其發送至每一該表決者節點電腦。該等步驟亦包含組態該委員會中之該等表決者節點電腦中之每一者以在該表決者節點電腦與該提議者節點電腦具有該區塊鏈之相同記錄時對一未公證提議進行簽名,且將經簽名提議發送至該提議者節點電腦。該等步驟亦包含組態該提議者節點電腦以在該提議者節點電腦接收到用於一未公證提議之臨限數目個簽名之後公證該未公證提議。一已公證提議為添加至該區塊鏈之一區塊。
該等步驟進一步包含組態該提議者節點電腦,以在該提議者節點電腦公證任何提議之前,將另一個或另多個未公證提議發送至每一該表決者節點電腦。
該相同記錄為最末區塊具有由該應用程式提供的最大的序列號之一已公證鏈。
另外,該等步驟包含自該已公證鏈判定無該已公證鏈中之數個最末區塊的一已完結鏈。最末區塊之該數目對應於由該提議者節點電腦發送的多個未公證提議之數目。
根據本發明之原理,預期一非暫時性電腦可讀媒體實施例。該媒體儲存可使一電腦執行一程序之一應用程式。該程序包含在複數個節點電腦中實施一區塊鏈共識軟體應用程式。該複數個節點電腦中之每一節點電腦包括一處理器、儲存可由該處理器執行之電腦指令的記憶體以及能夠運作地耦接至該處理器及一通信網路之一網路介面,該通信網路連接該複數個節點電腦。該應用程式組態該複數個節點電腦以建立藉由該複數個節點電腦維護的含有交易之一區塊鏈,且形成一委員會,該委員會包含被舉為或被選為提議者節點電腦及表決者節點電腦的節點電腦。
該區塊鏈共識軟體應用程式包括儲存在該記憶體中之電腦指令,該等電腦指令可由該處理器執行以執行電腦實施步驟,該等步驟包含將一序列號提供至該區塊鏈上之一提議或一區塊。該等步驟亦包含執行一公證程序。公證程序包含在被舉為或被選為委員會中之表決者節點電腦時,所執行之步驟;以及在被舉為或被選為委員會中之表決者節點電腦時,所執行之步驟。在被舉為或被選為委員會中之表決者節點電腦時,所執行之步驟包含在表決者節點電腦與提議者節點電腦具有區塊鏈之相同記錄時,簽名從提議者節點電腦接收的一未公證提議;及將經簽名提議發送至提議者節點電腦。在被舉為或被選為委員會中之表決者節點電腦時,所執行之步驟包含準備一個或多個未公證提議並將其發送至每一表決者節點電腦;在提議者節點電腦接收到用於一未公證提議之臨限數目個簽名之後,公證未公證提議;及在提議者節點電腦公證任何提議之前,將另一個或另多個未公證提議發送至每一表決者節點電腦。一已公證提議為添加至該區塊鏈之一區塊。
該相同記錄為最末區塊具有由該應用程式提供的最大序列號之一已公證鏈。
另外,該等步驟包含自該已公證鏈判定無該已公證鏈中之數個最末區塊的一已完結鏈。最末區塊之該數目對應於由該提議者節點電腦發送的多個未公證提議之數目。
圖1描繪本發明之說明性區塊鏈系統100。區塊鏈系統100包括複數個節點電腦105及連接該複數個節點電腦105之通信網路110。該複數個節點電腦中之每一節點電腦包括一處理器、儲存可由處理器執行之電腦指令之記憶體以及能夠運作地耦接至該處理器及該通信網路110之一網路介面,該通信網路可為諸如網際網路之廣域網路。區塊鏈系統100由區塊鏈共識軟體應用程式(區塊鏈共識協定)實施。區塊鏈共識軟體應用程式經調適以經由通信網路110連接至該複數個節點電腦105。區塊鏈共識軟體應用程式組態區塊鏈系統100以按本申請案中描述之方式操作。
經由軟體應用程式,節點電腦105可操作以達成關於將交易添加至由區塊鏈系統維護之總體交易記錄115之共識,且商定總體交易記錄115之內容。區塊鏈系統中之每一節點105 n可稱為共識節點。交易可為諸如比特幣交易之加密貨幣交易(在圖1中由「TX...表示」)。總體交易記錄115為儲存經由區塊鏈系統100進行之所有交易之處。總體交易記錄115以區塊鏈之形式保存。區塊鏈系統中之節點電腦105具有其自身之總體交易記錄或區塊鏈115之複本。節點電腦可能會暫時具有總體區塊鏈之不同複本,但節點電腦最終將商定相同的總體區塊鏈。舉例而言,節點105可能在時間1具有由A、B及C組成之區塊鏈,且另一節點105可能同時具有由A、B、D組成之區塊鏈。一段時間之後,兩個節點將商定由A、B及C組成之總體區塊鏈。其區塊鏈複本亦將相應地更新。區塊鏈意謂分佈式分類帳,其中交易在若干節點電腦之間維護,此等節點電腦在同級間網路中鏈接且不可變。
區塊鏈系統100涉及共識節點委員會120。該共識節點委員會包括複數個提議者節點及複數個表決者節點。儘管圖1展示存在兩個提議者節點(P1及P2)及三個表決者節點(V1、V2及V3),但應理解,委員會120可由其他數目之提議者節點及表決者節點組成。在一個實施例中,提議者節點(P1及P2)經組態以與委員會120中之其他節點(提議者及表決者節點)進行通信,而表決者節點(V1、V2、V3)經組態以與提議者節點進行通信而不與其他表決者節點進行通信。委員會120經組態以執行對帳程序。對帳程序為提議者節點檢查其是否具有每一表決者節點之最新區塊鏈資訊或儲存在提議者節點上之每一表決者節點之區塊鏈資訊是否與對應表決者節點上之區塊鏈資訊匹配之程序。在一個實施例中,區塊鏈資訊包括每一節點已知之最新已公證鏈,其將在本申請案中稍後論述。若其不匹配,則提議者節點請求(狀態請求)該表決者節點提供遺漏或額外之資訊,以使得可將提議者節點更新為具有該節點之當前資訊。圖2描繪說明性對帳程序。提議者節點1可將請求每一表決者節點提供當前儲存在該等表決者節點中之每一者上或其已知的區塊鏈資訊之狀態請求訊息發送至該表決者節點。在每一表決者節點提供其區塊鏈資訊之後,提議者節點1會注意到其在表決者節點2上的區塊鏈資訊之資訊(例如,由4個區塊組成)位於表決者節點2之當前區塊鏈資訊(例如,由5個區塊組成)之後。提議者節點接著請求(資料請求)表決者節點2提供遺漏之資訊(例如,第5區塊之資訊),且表決者節點2提供該資訊。提議者節點1與表決者節點2現在將具有相同之資訊(即,提議者節點知曉表決者節點2之區塊鏈為5個區塊,且表決者節點2之區塊鏈為5個區塊)。提議者節點可藉由自委員會中之節點中之任一者請求遺漏之資訊來更新其區塊鏈資訊。表決者節點可藉由自委員會中之提議者節點中之任一者(而非委員會中之其他表決者節點)請求遺漏之資訊來更新其區塊鏈資訊。
為了判定提議者節點與表決者節點是否具有匹配之資訊或鏈資料,提議者節點檢查其在該節點上具有的區塊鏈資訊是否與表決者鏈之資訊匹配。在一個實施例中,提議者節點檢查其最新的已公證鏈是否與表決者節點之已公證鏈匹配。由區塊鏈系統建立之每一區塊可具備一序列號。區塊鏈之最新區塊為序列號最大之區塊。舉例而言,在包括序列號為(1、1、1)之第一區塊、序列號為(1、1、2)之第二區塊及序列號為(1、1、3)第三區塊的區塊鏈中,第三區塊為最新區塊。最新區塊亦可稱為最新頭。提議者節點將其在表決者節點上具有的最新區塊與表決者節點上之最新區塊進行比較,且判定其是否具有相同序列號。若其相同,則提議者節點與表決者節點具有匹配之鏈資料。若表決者節點上的最新區塊之序列號大於提議者節點在表決者節點具有的序列號,則提議者節點提取遺漏之區塊。在一個實施例中,在執行對帳程序之後,提議者節點之最新已公證鏈與表決者節點之最新已公證鏈相匹配,或反之亦然。序列號特徵在本申請案中稍後更詳細地論述。
對帳程序亦可稱為鏈同步程序。此特徵解決區塊鏈系統可能丟失網路訊息(例如,在傳輸期間、在節點崩潰時,等)之問題,且消除實施可遞送每一條單一網路訊息之區塊鏈系統之需要。具有舊鏈資料之節點可自同級節點選取最新鏈資料。狀態訊息、投標訊息、提議、已表決提議及已公證提議(下文描述)及提議者節點與表決者節點彼此通信所使用之其他訊息為網路訊息。剛剛加入區塊鏈系統之新共識節點(例如,藉由在電腦上安裝區塊鏈共識軟體應用程式)亦可使用此方法選取最新的總體區塊鏈資訊。新共識節點可逐漸更新,直至其接收到最新之鏈資訊或完整之總體區塊鏈。
委員會120亦經組態以執行公證或表決程序。圖1中之節點N1至Nn為向委員會120提交交易以進行公證之節點。提交之交易將保存在記憶體池(或交易池)中,以自提議者節點選取。圖3描繪說明性公證程序。提議者節點自記憶體池選擇交易,且準備含有所選交易之電子區塊以待添加至區塊鏈。所準備之區塊可稱為候選區塊或提議。提議者節點接著對提議進行簽名,且將經簽名提議發送至複數個表決者節點V1、V2、V3。
表決者節點經組態以在其對提議進行校驗之後及其與提議者節點具有相同之最新已公證鏈時對提議進行表決或簽名。最新已公證鏈之概念將在本申請案中稍後描述。在對提議進行簽名之後,表決者節點將經簽名提議發送至提議者節點。在自複數個表決者節點中之表決者節點接收到足夠簽名之後,提議者節點對提議進行公證(將候選區塊添加至區塊鏈)。公證所需之簽名數目較佳為複數個表決者節點中的表決者節點之總數目的2/3,但亦預期其他數目。此為按席位表決方案。亦預期其他表決方案,例如按股權表決方案。在按股權表決方案中,公證臨限值可組態為來自持有委員會2/3或更多股權之表決者節點之表決。舉例而言,若委員會包括六個表決者節點,且六個表決者節點中之兩者持有委員會2/3或更多之股權,則來自彼等兩個節點之表決(而非四個表決)足以對提議進行公證。接著將已公證提議添加至最新已公證鏈或最新已公證鏈之頭(具有最大序列號之區塊)。在公證之後,提議者節點可接著將另一提議發送至表決者節點進行公證。
提議者節點經組態以在對第一提議進行公證之前準備且傳輸一或多個提議,較佳地兩個或多於兩個提議。此等提議可稱為未公證提議。圖3描繪未公證提議之數目K等於1之說明性公證程序。圖4描繪未公證提議之數目K等於3之說明性公證程序。在圖4中,可允許提議者節點準備且發送最多三個提議或未公證提議。提議者節點可在其接收到第一提議之所需簽名數目之前在時間1發送第一提議,在時間2發送第二提議,且在時間3發送第三提議。在接收到第一提議之足夠簽名之後,提議者可準備且發送另一提議(第4提議)。在接收到第二提議之足夠簽名之後,提議者可接著準備且發送又一提議(第5提議),依此類推。區塊鏈系統可在任何給定時間處理最多K個提議,而無需區塊鏈系統首先完成提議之處理(例如,完成對提議之公證)。習知區塊鏈系統需要先對提議進行公證,然後才能將第二提議傳輸至表決者節點。
圖5a至圖5b分別描繪在K等於1時及在K等於3時之簡化提議傳輸及表決程序。
在委員會可執行任何公證程序之前,委員會120可執行對帳程序。委員會120亦可經組態以在初始公證程序之後週期性地執行對帳程序。對帳程序可實施為請求-回應程序(圖2)或廣播您的狀態更新程序。在後一程序中,表決者節點經組態以將其區塊鏈資訊發送至提議者節點(無需提議者節點之請求)。在表決者節點之區塊鏈資訊改變時,表決者節點可將其區塊鏈資訊發送至提議者節點。在一個實施例中,在表決者節點之最新已公證鏈改變時,表決者節點可將其區塊鏈資訊發送至提議者節點。在表決者節點之本端出現時間值改變時,表決者節點亦可將其經更新之本端出現時間值發送至提議者節點。
在公證之後(無論其為K等於1之公證抑或為K等於3時對第一提議之公證),提議者節點可接著將另一提議發送至表決者節點進行公證。此後續之公證可理解為提議者節點知曉2/3之表決者節點知曉2/3之表決者節點商定了先前已公證區塊(假設公證之臨限值要求為2/3)。
區塊鏈系統可將序列號提供至已公證區塊或其他區塊。在一個實施例中,序列號由會話值、出現時間值及區塊識別值界定。序列號可以(會話值、出現時間值、區塊識別值)之形式提供。圖6描繪具有由區塊鏈系統提供之序列號的說明性區塊。會話值識別公證該區塊之委員會。出現時間值識別提議候選區塊之提議者節點。區塊識別值識別該區塊,且隨著對區塊進行公證或以其他方式建立而依序增大。在判定一序列號是否大於另一序列號時,會話值可具有最高權重,出現時間值可具有中等權重,且區塊識別值可具有最低權重。舉例而言,(1、1、2)大於(1、1、1)。對於另一實例,(1、2、1)大於(1、1、1)。對於又一實例,(2、1、1)大於(1、2、1)。區塊識別值亦可稱為用於對所提供之序列號進行計數之值。在一些條件下,諸如在出現時間值改變時,區塊識別值可自1重新開始。序列號可用於追蹤區塊鏈系統之操作,且判定最新已公證鏈及其他鏈(諸如已公證鏈及已完結鏈)之邊界或長度。圖6中之區塊包括其他資料欄位,諸如區塊編號(僅可沿區塊鏈變大之依序增大的整數)、親代散列(parent hash)、時間建立及交易資料。
最新已公證鏈係指最末區塊具有最大序列號之已公證鏈。具有最大序列號之最末區塊可稱為頭區塊或簡稱為頭。圖7描繪說明性最新已公證鏈705。鏈705為最新已公證鏈,因為其頭區塊710具有最大之序列號。可能亦存在其他已公證鏈諸如具有頭區塊(1、3、3),但鏈705為最新鏈,因為其頭區塊為(1、3、4)。
最新已公證鏈或最新已公證鏈之頭區塊用於判定表決者節點何時將對提議進行表決,或提議者節點與表決者節點何時具有區塊鏈之相同記錄。相同記錄意謂區塊鏈記錄匹配或基本匹配,如下文所描述。
在一個實施例中,在提議者節點中之區塊鏈之本端複本或記錄與表決者節點之本端複本或記錄匹配時,表決者節點對提議進行表決。詳言之,在提議者節點之本端記錄中的最新已公證鏈與表決者節點之已公證鏈匹配時,或在其最新已公證鏈之頭區塊匹配時,表決者節點對提議進行表決。圖8說明此概念。在表決者節點810自提議者節點805接收到提議815時,表決者節點檢查其是否匹配。提議815包括其序列號815a、提議者節點之簽名815b及鏈資訊815c,鏈資訊提供關於儲存在提議者節點805中的最新已公證鏈820或最新已公證鏈820之頭區塊的資訊。在接收到提議815時,表決者節點810使用鏈資訊815c來判定其最新已公證鏈820或其最新已公證鏈820之頭區塊825是否匹配。在其匹配時,諸如在此情況下,表決者節點810對提議815進行表決。匹配頭區塊意謂兩個頭區塊之序列號匹配(例如,提議者805中之區塊825之(1、3、4)與表決者節點810中之區塊825之(1、3、4)匹配)。在一些實施例中,匹配頭區塊意謂兩個頭區塊之序列號匹配且兩個頭區塊中之交易之散列匹配。提議者節點805及表決者節點810中之區塊鏈資訊820可儲存在暫態儲存裝置(例如,記憶體)或永久性儲存裝置(例如,硬碟機)830中。在一個實施例中,鏈資訊815c為指向提議者節點805中之最新已公證鏈之頭區塊的指標。
表決者節點810亦檢查簽名815b,以確保提議815來自正確之提議者或提議者805(例如,提議者805是否匹配表決者810之當前出現時間值)。
在另一實施例中,在提議者節點之本端記錄中之最新已公證鏈與表決者節點之已公證鏈基本匹配時,或在其最新已公證鏈之頭區塊基本匹配時,表決者節點對提議進行表決。在一些情境下,其最新已公證鏈或頭可能會略有不同,但表決者節點仍會對提議進行表決。圖9說明此概念。在表決者節點910自提議者節點905接收到提議915時,表決者節點檢查其是否基本匹配。提議915包括其序列號915a、提議者節點之簽名915b及鏈資訊915c,鏈資訊提供關於儲存在提議者節點905中的最新已公證鏈920或最新已公證鏈920之頭區塊的資訊。在接收到提議915時,表決者節點915使用鏈資訊915c判定其最新已公證鏈920或其最新已公證鏈920之頭區塊925基本上匹配。表決者節點910中之頭區塊925小於提議者節點905中之頭區塊925(小一個區塊)。此可能係由於提議者節點905接收到另一公證,且表決者節點910上之區塊鏈資訊尚未更新。由於其僅相差一個區塊或其基本匹配,因此表決者節點910可對提議915進行表決。在一些實施例中,差異可為兩個或多於兩個區塊。在一些實施例中,基本匹配意謂提議者節點中之頭區塊之序列號至少相同於或大於表決者節點中之頭區塊之序列號。基本匹配亦可稱為提議者節點中的最新已公證鏈之頭區塊與表決者節點中最新已公證鏈之頭區塊一樣大。若提議者節點中的頭區塊之序列號隨後變得大於或略大於表決者節點中的頭區塊之序列號,則表決者節點仍會表決。在一些實施例中,提議者節點中之頭區塊之序列號可小於表決者節點之序列號。
如同圖8,提議者節點905及表決者節點910中之區塊鏈資訊920可儲存在暫態儲存裝置(例如,記憶體)或永久性儲存裝置(例如,硬碟機)930中。在一個實施例中,鏈資訊915c為指向提議者節點905中的最新已公證鏈之頭區塊之指標。表決者節點910亦檢查簽名915b以確保提議915來自正確之提議者或提議者節點905(例如,提議者節點905是否匹配表決者節點910之當前出現時間值)。
在又一實施例中,頭區塊可為表決者節點在逾時之前剛剛獲知或記錄之頭區塊,或其發送提議者改變請求或時脈訊息。在表決者節點前移其出現時間值之後,表決者節點將對下一提議進行表決,且在公證之後,下一提議將自該頭區塊擴展。逾時、提議者改變請求、出現時間值前移在本申請案中稍後描述。
已公證鏈係指區塊均依照上文所描述的表決方法經過公證的區塊鏈。已完結鏈係指無最末K個區塊之最新已公證鏈。在一個實施例中,最末K個區塊係指最末K個正常區塊。
在一個實施例中,正常區塊為非逾時區塊之區塊。逾時區塊為具有出現時間之第一區塊。舉例而言,序列號為(1、1、1)之區塊、序列號為(1、2、1)之區塊及序列號為(2、1、1)之區塊全部為逾時區塊,因為其序列號中之最末值為1。由此,具有序列號(1、1、1+N)之區塊具有序列號(1、2、1+N)之區塊及具有序列號(2、1、1+N)之區塊全部為N大於0之正常區塊。在一個實施例中,正常區塊滿足以下條件:若正常區塊之親代區塊具有序列號(會話、出現時間、i),則正常區塊具有序列號(會話、出現時間,及i+1)。親代區塊為緊接在正常區塊之前的區塊。換言之,正常區塊具有與其親代區塊相同之會話及出現時間值,且區塊識別號大一。
圖7展示其中K等於2,且無最末兩個(或最大)區塊之最新已公證鏈為已完結鏈715之實例。已完結區塊或鏈意謂該區塊或鏈中之交易為不可逆的。其中之交易永久保留在區塊鏈上,且不能被區塊鏈系統上之任何節點吊銷、捨棄或操縱。已完結區塊或鏈由區塊鏈系統中之每一共識節點保存及商定。已完結鏈為對於區塊鏈系統中的每一共識節點皆相同之分類帳。已公證區塊或鏈可視為等待完結之區塊或鏈。
簡言之,區塊鏈系統100涉及共識節點委員會120,以將區塊添加至由區塊鏈系統維護之總體區塊鏈115。委員會120進行表決程序以將區塊添加至區塊鏈115。委員會120包括提議者節點及表決者節點,且提議者節點P1或P2可將多個未公證提議發送至表決者節點(或直至區塊鏈系統允許之最大數目),而無需首先對提議進行公證。表決者節點V1、V2、V3各自在校驗之後及每一及該提議者節點具有相同之最新已公證鏈時對提議進行表決。對提議進行公證需要臨限數目個表決(例如,2/3)。將已公證提議添加至區塊鏈,且可建立或擴展已公證鏈。根據已公證鏈判定已完結鏈。
藉由組態提議者節點在提議者節點接收到任何已公證提議之前發送多個未公證提議(K個未公證提議)、表決者節點在該表決者節點與提議者節點具有相同的最新已公證鏈時對未公證提議進行表決且區塊鏈系統自最新已公證鏈判定無最末K個已公證區塊之已完結鏈,區塊鏈系統及共識協定具有高吞吐量(系統及協定每秒可處置之交易數目)及短完結時間(達成已完結鏈之共識或將交易永久記錄在區塊鏈上之時間)。
現在將針對前述逾時、提議者改變請求、出現時間值前移進行論述。出現時間值識別表決者節點接收提議所自之提議者節點。舉例而言,提議者節點中之一者可具有識別該提議者節點之本端出現時間值1,且提議者節點中之另一者可具有識別該提議者節點之本端出現時間值2。表決者節點中之每一者亦包括本端出現時間值(例如1),該本端出現時間值識別其應接收提議所自之提議者節點(例如提議者1)。提供出現時間值且將其在本端儲存在每一節點中。節點中之每一者不知曉其他節點中之出現時間值,即使其具有相同之出現時間值亦如此。舉例而言,參考圖1,提議者節點P1之本端出現時間值為1,但其不知曉提議者節點P2之本端出現時間值為2,且表決者節點V1、V2、V3中之每一者當前具有本端出現時間值1。同樣,提議者節點2之本端出現時間值為2,但不知曉提議者節點P1之本端出現時間值為1,且表決者節點中之每一者當前之本端出現時間值為1。此外表決者節點中之每一者當前具有本端出現時間值1,但不知曉其他表決者節點亦具有本端出現時間值1。委員會120以使得每一提議者節點可與委員會中之其他提議者節點及表決者節點進行通信且每一表決者節點可與提議者節點進行通信但不能與委員會中之其他表決者節點進行通信之方式建立。
表決者節點可藉由前移其本端出現時間值來將其接收提議所自之提議者節點(例如,P1)切換至委員會120內之不同提議者節點(例如,P2)。表決者節點中之每一者可經組態以具有用於判定下一出現時間值(諸如當前出現時間值+1)之出現時間函數。若表決者節點中之當前出現時間值為1,則表決者節點發送具有出現時間值2之提議者改變請求至與出現時間值2相關聯之新提議者節點。在新提議者節點接收到足夠請求之後,新提議者節點對提議者改變請求進行公證,且通知表決者節點已批准該改變。在接收到批准後,表決者節點接著將其當前出現時間值1前移至下一出現時間值2,且將開始自與出現時間值2相關聯之新提議者節點接收提議。新出現時間值為2,因為表決者節點中的當前出現時間值為1,且出現時間函數為當前出現時間值+1。在一些實施例中,替代依賴於出現時間函數,接收到具有比節點之本端出現時間值更大之出現時間值的提議者改變請求之公證將使該節點將其出現時間值前移至已公證請求中之值。已公證請求中之出現時間值大於節點之本端出現時間值。對提議者改變請求之公證可作為其他節點感知及集體決策之證明。
用於切換之所需請求數目較佳為複數個表決者節點中的表決者節點之總數目的2/3,但亦預期其他數目。表決者節點可能希望在某些條件下改變提議者節點,諸如在提議者節點離線、與提議者節點之通信連接較弱時或其他原因。表決者節點可在一段時間未自提議者節點接收到與當前出現時間值相關聯之任何提議之後發送提議者改變請求。在尚未更新表決者節點之最新已公證頭(係指最新已公證鏈之頭)之一段時間後,表決者節點可發送提議者改變請求,其可能係因為提議者節點離線、傳輸存在延遲或其他問題。在任一情況下,此時間段可稱為逾時。圖10描繪說明性提議者切換程序。在提議者切換之後,新提議者節點接著執行對帳程序,且具有新提議者節點之委員會開始對提議進行公證。藉由執行對帳程序,新提議者節點可具有最新之區塊鏈資訊或擷取其在先前提議者節點與表決者節點之間的通信期間遺漏之資訊。
共識節點委員會120可藉由選舉方案來判定。在選舉方案之一個實施例中,想要成為委員會成員之節點(提議者節點或表決者節點)提交投標交易或選舉投標。投標交易以區塊鏈交易之形式提交,與記憶體池中之加密貨幣交易類似,不同之處在於基礎交易為候選節點指定要在委員會任期中放入且鎖定在代管契約中之加密貨幣金額,且此等投標交易係為了委員會選舉目的而發送(與提議公證相反)。候選節點亦指定其希望成為投標交易中之提議者節點抑或表決者節點。投標交易可以某種格式來準備,或包括指示其將被用於選舉目的之資訊。
委員會任期為一個時間段,其中選舉或選定之節點將充當提議者節點或表決者節點。該時間段由區塊鏈上之數個區塊來衡量。委員會任期屆滿後,新選定之節點將接任,且在下一委員會任期內充當新提議者節點及表決者節點。舉例而言,每一委員會任期可組態為持續10,800個區塊(例如,將10,800個區塊添加至區塊鏈之後,若區塊鏈系統每秒產生一個區塊,則大致為3小時)。當前委員會任期期間提交之投標交易用於判定下一委員會任期之提議者節點及表決者節點。區塊鏈系統可選擇股權量最高之候選節點作為下一委員會任期之提議者節點及表決者節點(例如,前2個提議者候選節點作為提議者節點,且前3個表決者候選節點作為表決者節點)。可將區塊鏈系統組態成為提議者節點及表決者節點選擇數個股權最高之節點。可將區塊鏈系統組態為預先選擇初始委員會(不使用選舉方案),且藉由上文所論述的選舉方案選擇後續委員會。區塊鏈系統可為下一委員會任期選擇整個委員會120,或為下一委員會任期選擇一些委員會成員(例如,僅提議者節點或表決者節點、提議者節點中之僅一者、表決者節點中之僅一者,等)。
亦可使用其他選舉方案。
在當前委員會任期屆滿時,區塊鏈系統可用為下一委員會任期選擇之提議者節點及表決者節點重新組態或替換當前委員會任期中之提議者節點及表決者節點。替換程序在選舉程序完成後發生。在一個實施例中,區塊鏈系統經組態以在數個區塊已完結之後(或在每第N個已完結區塊之後)執行替換程序。舉例而言,每10,800個區塊已完結之後,區塊鏈系統可替換提議者及表決者節點。在該實例中,第N個區塊或第10,800個區塊可稱為停止區塊,且此替換技術可稱為停止區塊技術。在第N個區塊已完結後,區塊鏈系統退出整個現任委員會(例如,將其轉換為常規共識節點,使其無法提議或表決,或停用或移除其提議或表決能力)且允許新委員會接管停止區塊。自彼時起,新委員會將對候選區塊進行提議且表決,直至其委員會任期屆滿為止。此技術可替換提議者節點及表決者節點兩者。
在另一實施例中,區塊鏈系統經組態以藉由使當前委員會之表決者節點及下一委員會之表決者節點對同一提議進行表決來執行替換程序。區塊鏈系統可能需要來自每一委員會之臨限數目個表決者節點才能對提議進行表決,以便使替換發生。每一委員會所需之表決數目較佳為每一委員會中的表決者節點之總數目的2/3(例如,當前委員會之2/3及下一委員會之2/3),但亦預期其他數目。在替換程序中,允許未經由通信網路連接之表決者節點進行連接且經由通信網路進行通信。此實施例可能要求進行表決之表決者節點在線且連接。此技術可替換表決者節點,且提議者節點可保留且重複使用。此替換程序亦可基於按股權表決方案。
亦預期其他重新組態或替換技術。
區塊鏈系統可經組態以除了使表決者節點前移其出現時間值之外,亦以另一方式在每一委員會任期內切換提議者。在一個實施例中,委員會中的每一提議者可提議的候選區塊之數目與其在其選舉投標中所占之股權量成比例。在提議了該數目之候選區塊之後,區塊鏈系統不允許提議者提議額外候選區塊,且令另一提議者接管且提議候選區塊。舉例而言,若提議者P1將40個比特幣放入代管契約中,且另一提議者P2將10個比特幣放入代管契約中,則提議者P1可提議委員會任期內可用的候選區塊之總數目的80%,且提議者P2可提出總數目的20%。提議者應提出提議之次序亦可與其放入代管契約中之股權量成比例(例如,股權較大之提議者首先提議),或可為隨機的。提議者可判定哪些交易待包括在提議中或自提議排除(例如,自記憶體池,提議者可僅選擇來自某些節點或位址之交易,或忽略來自某些節點或位址之交易),且因此判定哪些交易在區塊鏈上記錄或不記錄。藉由以此方式切換提議者,區塊鏈系統減少了在整個委員會任期內審查(例如,未選擇)交易之機會。此方法可稱為強制提議者切換,因為在提議或公證了數個候選區塊之後必須改變提議者。
本發明之實施例提供高吞吐量及短完結時間。傳統之共識系統及協定每秒可處理大致10至20個交易,且在大致60至90秒內完成交易(例如,以太坊每10至15秒產生一個區塊,且需要等待另外6個區塊才能被視為安全或完結),而本發明之共識系統及協定每秒可處理大致1000個交易,且在大致1至5秒內完成交易。一些習知之共識系統及協定甚至並不界定完結之概念。在存在少於1/3之拜占庭表決者節點且存在具有至少一個誠實之提議者節點及2/3的誠實之表決者節點的網路分割區(例如,共識節點委員會)時,才能一貫地達成此效能。在其他條件下亦已一貫地達成此效能。本發明之共識系統及協定亦提供一種快速切換提議者節點之簡單方法。本發明亦可在實際之同步網路中工作,且表決者節點之可擴展性為線性的。
區塊係指區塊鏈上之區塊或待添加至區塊鏈上以使得其自區塊鏈之最新區塊擴展之區塊。區塊可包括交易、先前電子區塊之散列、當前電子區塊之散列、時間戳、默克爾根(Merkle root)、目標、隨機數及其他資訊,或前述資訊中之一或多者。圖6描繪說明性區塊,且其可包括上文所指示之其他資料欄位。
自提議者節點之角度來看,簽名或其等效者係指由提議者節點建立之數位簽名,證明該提議者節點為候選區塊之建立者或提議者。數位簽名對於每一提議者節點為唯一的。舉例而言,可藉由對交易進行散列以獲得散列值且使用專用密鑰對獲得之散列值進行加密來建立數位簽名。加密之散列值為數位簽名。將數位簽名及對應於專用密鑰之公共密鑰與候選區塊一起傳輸至表決者節點。
在表決者節點接收到候選區塊、數位簽名及公共密鑰之後,表決者節點使用公共密鑰對數位簽名進行解密。表決者節點瞭解其期望自此區塊進行之交易,且使用提議者節點所使用之相同散列演算法對期望交易進行散列。若來自數位簽名解密之散列值與來自表決者節點之散列值相同,則表決者節點知曉交易在傳輸過程中尚未更改,且驗證提議者節點為建立者、提議者抑或傳輸者。
驗證或其等效者係指表決者節點知曉交易在傳輸中尚未更改及/或驗證提議者節點為建立者、提議者或傳輸者。驗證或其等效者亦可指判定候選區塊上之簽名來自正確提議者節點或該會話中之提議者節點(由本端出現時間值判定)及/或交易資料正確。亦預期驗證提議來自正確之提議者節點與提議中之交易資料正確之組合。
在對提議進行驗證或校驗之後,表決者節點將其數位簽名應用於提議(對提議進行簽名及對提議進行表決為其他同義語言)。上文所描述的簽名之概念亦類似地適用於表決者節點。
亦預期其他簽名及校驗方法。簽名及校驗方法可基於此項技術中已知之程序。
提議者節點亦可稱為領導者節點(leader node),而委員會節點可稱為提議者節點或表決者節點。節點委員會、提議者節點及表決者節點藉由演算法實施,以執行其各別功能。區塊鏈系統及區塊鏈共識軟體應用程式包括此等演算法及用於執行對帳程序、公證程序、選舉方案、最新已公證鏈判定程序(及其他鏈判定程序)以及本申請案中描述之其他程序及方案的演算法。初始委員會由區塊鏈系統及區塊鏈共識軟體應用程式判定,諸如自軟體開發人員程式化為演算法之程式碼判定(例如,軟體開發人員選擇特定提議者節點及表決者節點,且將所選節點編碼至演算法中)。自選舉方案選擇後續委員會。
誠實意謂節點正在執行需要執行之操作(例如,執行準備、提交、簽名及傳輸步驟)、節點未操縱交易及/或序列號以添加不正確之交易資料及/或改變序列號,或其組合。
為拜占庭意謂節點正在違反或正試圖違反以上誠實要求中的一或多者。
交易或交易資料可為加密貨幣交易(例如,比特幣交易)、銀行交易、信用卡交易及其他涉及紙幣之交易(例如,個人可自銀行獲得紙幣)。交易或交易資料亦可為非貨幣或非貨幣化交易、用於建立及調用智慧型合約之交易或用於執行其他任務之其他交易。交易或交易資料亦可為其他類型之資料(例如,電腦指令)或記錄(例如,業務記錄、醫療記錄)。亦預期前述交易、資料及記錄之組合。
在本申請案中描述之協定及演算法實施於由通信網路連接之電腦或節點電腦上。通信網路可包括網際網路、蜂巢式網路、電話網路、電腦網路、分組交換網路、廣域網路(WAN)、全球區域網或其他網路。本發明之實施例係針對執行協定及演算法之系統、裝置及方法。本發明之實施例亦係關於經組態以進行本文所揭示之方法中的任一者之非暫時性電腦可讀媒體。協定及演算法可為可由處理器讀取且儲存於非暫時性電腦可讀媒體上之一組電腦指令。此等媒體可為一般熟習此項技術者將已知的永久性或半永久性記憶體,諸如硬碟機、軟碟機、光碟、快閃記憶體、ROM、EPROM、EEPROM等。區塊或區塊鏈資訊可儲存於非暫時性電腦可讀媒體或記憶體上。舉例而言,記憶體可為快取記憶體、諸如RAM之半永久性記憶體及/或用於暫時儲存資料之一或多種類型之記憶體。
處理器可包括特殊應用積體電路(ASIC)、可程式化邏輯陣列(PLA)、數位信號處理器(DSP)、現場可程式化邏輯閘陣列(FPGA)或任何其他積體電路。處理器亦可包括任何其他適用處理器中之一或多者,諸如將CPU、應用程式處理器及記憶體中之一或多者組合之晶片上系統或精簡指令集計算(RISC)處理器。
應理解,術語「必須」及在術語「必須」之後或與之相關聯之限制、數目、條件、結果或其他情況用於例示所描述之情境為申請人的技術之實例(例如,一或多項發明之實施例)且申請人之技術不限於彼等操作及結果。一般熟習此項技術者將理解,可組態申請人之技術以執行且達成其他操作及結果。預期更寬泛的、不同的或通用的發明或發明實施例,同時基於術語「必須」之使用亦預期特定實施例。相同之說明亦適用於其他類似術語,諸如「嚴格地較新」及其他片語。
亦應理解,本公開中提及之數目、分率、百分比或其他要求(例如1/3、2n/3、4n/3等)可為發明構思之一部分,且亦可出於說明更廣泛、不同或通用態樣之目的而提供。亦預期不同於彼等指定者(較大或較小)之數目、分率及百分比。
一般熟習相關技術者將易於理解,本發明具有廣泛實用性及應用。可出於額外說明性目的論述其他實施例以提供本發明之完整且能夠實現的揭示內容。此外,本文所描述之實施例將隱含地揭示許多實施例,諸如調適、變化、修改及等效配置,且其落入本發明之範疇內。
因此,儘管本文相對於一或多個實施例詳細描述了本發明之實施例,但應理解,本揭示內容說明且例示本發明,且僅出於提供本發明之完整且能夠實現的揭示內容的目的而做出。本文中對一或多個實施例之詳細揭示既無意亦不應解釋為限制本發明提供之專利保護範疇,該範疇由申請專利範圍界定。
因此,例如,本文描述之各種程序或方法之步驟之任何順序及/或時間次序(或系統連接或操作之順序)為說明性的,且不應解釋為限制性的。因此,應理解,儘管各種程序或方法(或連接或操作序列)之步驟可展示及描述為按順序或時間次序,但其不一定限於以任何特定順序或次序進行。預期其他順序或時間次序,且其將為一般熟習此項技術者理解為存在。另外,本文中所描述的系統或特徵應理解為包括變化,其中以不同方式移除、重新排序或組合特徵。
另外,值得注意的是,本文中所使用之每個術語均指代一般技術人員基於本文中此術語之上下文使用理解此術語意謂之含義。應理解,具有組件修飾語之術語旨在傳達修飾語作為表徵所論述之元件、步驟、系統或組件之限定詞。
在本說明書中使用單詞「可能」及「可」來指示此為一個實施例,但該描述不應被理解為唯一實施例。
儘管本文中已參考較佳實施例描述及說明了本發明,但一般熟習此項技術者將顯而易見,其他實施例可執行類似功能及/或達成相似結果。因此,應理解,所揭示實施例之各種特徵及態樣可彼此組合或替代,以便形成所揭示之發明之不同模式。
100:區塊鏈系統 105:節點電腦 110:通信網路 115:總體交易記錄 120:共識節點委員會 805:提議者節點 810:表決者節點 815:提議 815a:序列號 815b:簽名 815c:鏈資訊 820:最新已公證鏈 825:區塊 830:永久性儲存裝置 905:提議者節點 910:表決者節點 915:提議 915a:序列號 915b:簽名 915c:鏈資訊 920:最新已公證鏈 925:頭區塊 930:永久性儲存裝置
參考以下結合附圖進行之詳細描述,可更容易地理解根據本文中所描述的原理之實例之各種特徵,其中相同附圖標號標明相同結構元件,且其中: 圖1描繪根據本發明之一些實施例之說明性區塊鏈系統; 圖2描繪根據本發明之一些實施例之說明性對帳程序; 圖3描繪根據本發明之一些實施例之說明性公證程序; 圖4描繪根據本發明之一些實施例之另一說明性公證程序; 圖5a至圖5b分別描繪根據本發明之一些實施例之在K等於1時及在K等於3時之說明性簡化提議傳輸及表決程序; 圖6描繪根據本發明之一些實施例之包括由區塊鏈系統提供的序列號之說明性區塊; 圖7描繪根據本發明之一些實施例之說明性已公證鏈、最新已公證鏈及已完結鏈; 圖8描繪根據本發明之一些實施例之說明性表決規則; 圖9描繪根據本發明之一些實施例之另一說明性表決規則;及 圖10描繪根據本發明之一些實施例之說明性提議者切換程序鏈。
100:區塊鏈系統
105:節點電腦
110:通信網路
115:總體交易記錄
120:共識節點委員會

Claims (20)

  1. 一種具有短完結時間之高吞吐量區塊鏈共識系統,其包含: 複數個節點電腦,該複數個節點電腦中之每一節點電腦包括一處理器、儲存可由該處理器執行之電腦指令的記憶體以及能夠運作地耦接至該處理器及一通信網路之一網路介面,該通信網路連接該複數個節點電腦,其中該複數個節點電腦經組態以建立藉由該複數個節點電腦維護的含有交易之一區塊鏈,該複數個節點電腦包括一委員會,其包含提議者節點電腦及表決者節點電腦; 其中該具有短完結時間之高吞吐量區塊鏈共識系統經組態以將一序列號提供至該區塊鏈上之一提議或一區塊; 其中該委員會中之該些節點電腦經組態以執行一公證程序,且在該公證程序中,該委員會中之一提議者節點電腦經組態以準備一個或多個未公證提議並將其發送至該委員會中之每一該表決者節點電腦;該委員會中之該等表決者節點電腦中之每一者經組態以在該表決者節點電腦與該提議者節點電腦具有該區塊鏈之相同記錄時對一未公證提議進行簽名,且將經簽名提議發送至該提議者節點電腦;且該提議者節點電腦經組態以在該提議者節點電腦接收到用於一未公證提議之臨限數目個簽名之後公證該未公證提議,其中一已公證提議為添加至該區塊鏈之一區塊; 其中該提議者節點電腦進一步經組態以在該提議者節點電腦公證任何提議之前,將另一個或另多個未公證提議發送至每一該表決者節點電腦; 其中該相同記錄為最末區塊具有由該具有短完結時間之高吞吐量區塊鏈共識系統提供的最大的該序列號之一已公證鏈;且 其中該具有短完結時間之高吞吐量區塊鏈共識系統經組態以自該已公證鏈判定無該已公證鏈中之數個最末區塊的一已完結鏈,其中最末區塊之該數目對應於由該提議者節點電腦發送的多個未公證提議之數目。
  2. 如請求項1之具有短完結時間之高吞吐量區塊鏈共識系統,其中該提議者節點電腦中具有該最大序列號的該區塊之該序列號與該表決者節點電腦中具有該最大序列號的該區塊之該序列號匹配。
  3. 如請求項1之具有短完結時間之高吞吐量區塊鏈共識系統,其中該提議者節點電腦中具有該最大序列號的該區塊之該序列號至少相同於或大於該表決者節點電腦中具有該最大序列號的該區塊之該序列號。
  4. 如請求項1之具有短完結時間之高吞吐量區塊鏈共識系統,其中該委員會進一步經組態以執行一對帳程序,且在該對帳程序中,該委員會中之一提議者節點電腦經組態以將請求每一表決者節點電腦提供每一表決者節點電腦上的區塊鏈資訊之一狀態請求發送至該委員會中之該等表決者節點電腦,且每一表決者節點電腦經組態以將其區塊鏈資訊發送至該提議者節點電腦。
  5. 如請求項4之具有短完結時間之高吞吐量區塊鏈共識系統,其中另外在該對帳程序中,該提議者節點電腦經組態以在該提議者節點電腦接收到該等表決者節點電腦中之一者上的該區塊鏈資訊之後,在該提議者節點電腦在該表決者節點電腦上具有的該區塊鏈資訊與該表決者節點電腦上之該區塊鏈資訊不同的時候將一資料請求發送至該表決者節點電腦。
  6. 如請求項5之具有短完結時間之高吞吐量區塊鏈共識系統,其中另外在該對帳程序中,該表決者節點電腦經組態以在該資料請求之後將遺漏之區塊鏈資訊提供至該提議者節點電腦,以使得該提議者節點電腦在該表決者節點電腦上具有的該區塊鏈資訊與該表決者節點電腦上的該區塊鏈資訊匹配。
  7. 如請求項4之具有短完結時間之高吞吐量區塊鏈共識系統,其中該具有短完結時間之高吞吐量區塊鏈共識系統經組態以在執行任何公證程序之前執行該對帳程序。
  8. 如請求項1之具有短完結時間之高吞吐量區塊鏈共識系統,其中簽名之該臨限數目為該委員會中的表決者節點電腦之總數目之至少2/3。
  9. 如請求項1之具有短完結時間之高吞吐量區塊鏈共識系統,其中簽名之該臨限數目等於該委員會中一起持有總股權之至少2/3的表決者節點之一數目。
  10. 如請求項1之具有短完結時間之高吞吐量區塊鏈共識系統,其中該序列號包括指示哪一委員會正執行一公證程序之一第一值、指示該委員會中哪一提議者正提出提議之一第二值及指示一區塊識別號之一第三值。
  11. 如請求項1之具有短完結時間之高吞吐量區塊鏈共識系統,其中該等表決者節點電腦經組態以在一段時間未自該提議者節點電腦接收到一提議之後將一提議者改變請求發送至該委員會中之另一提議者節點電腦。
  12. 如請求項10之具有短完結時間之高吞吐量區塊鏈共識系統,其中另一提議者節點電腦經組態以接收提議者改變請求,且在接收到臨限數目個提議者改變請求之後公證該等提議者改變請求。
  13. 如請求項10之具有短完結時間之高吞吐量區塊鏈共識系統,其中另一提議者節點電腦經組態以發指令給該等表決者節點電腦以前移其出現時間值。
  14. 如請求項13之具有短完結時間之高吞吐量區塊鏈共識系統,其中該等表決者節點電腦經組態以在其出現時間值前移之後自該另一提議者節點電腦接收提議。
  15. 如請求項1之具有短完結時間之高吞吐量區塊鏈共識系統,其中該等提議者節點電腦及該等表決者節點電腦係基於其提交的一投標交易而自候選節點之一群組中選擇。
  16. 如請求項15之具有短完結時間之高吞吐量區塊鏈共識系統,其中每一候選節點提交一投標交易,該投標交易指定待置於一代管契約中之一股權量且指示其希望成為一提議者節點電腦抑或一表決者節點電腦,且該具有短完結時間之高吞吐量區塊鏈共識系統選擇具有最高股權之數個候選節點作為提議者節點電腦及表決者節點電腦。
  17. 如請求項1之具有短完結時間之高吞吐量區塊鏈共識系統,其中該具有短完結時間之高吞吐量區塊鏈共識系統經組態以依照一選舉方案選擇包括提議者節點電腦及表決者節點電腦之一新委員會。
  18. 如請求項17之具有短完結時間之高吞吐量區塊鏈共識系統,其中該具有短完結時間之高吞吐量區塊鏈共識系統經組態以藉由在該委員會中具有臨限數目個表決者節點電腦且在該新委員會中具有臨限數目個表決者節點電腦來對一提議進行簽名或在數個區塊之後用該新委員會來替換該委員會。
  19. 一種電腦實施方法,其包含: 在複數個節點電腦中實施一區塊鏈共識軟體應用程式,該複數個節點電腦中之每一節點電腦包括一處理器、儲存可由該處理器執行之電腦指令的記憶體以及能夠運作地耦接至該處理器及一通信網路之一網路介面,該通信網路連接該複數個節點電腦,該應用程式組態該複數個節點電腦以建立藉由該複數個節點電腦維護的含有交易之一區塊鏈,且形成包含提議者節點電腦及表決者節點電腦的一委員會; 其中該區塊鏈共識軟體應用程式包括儲存在該記憶體中之電腦指令,該等電腦指令可由該處理器執行以執行電腦實施步驟,該等步驟包含: 將一序列號提供至該區塊鏈上之一提議或一區塊; 執行一公證程序,包含組態該委員會中之一提議者節點電腦以準備一個或多個未公證提議並將其發送至每一該表決者節點電腦;組態該委員會中之該等表決者節點電腦中之每一者以在該表決者節點電腦與該提議者節點電腦具有該區塊鏈之相同記錄時對一未公證提議進行簽名,且將經簽名提議發送至該提議者節點電腦;以及組態該提議者節點電腦以在該提議者節點電腦接收到用於一未公證提議之臨限數目個簽名之後公證該未公證提議,其中一已公證提議為添加至該區塊鏈之一區塊; 進一步組態該提議者節點電腦,以在該提議者節點電腦公證任何提議之前,將另一個或另多個未公證提議發送至每一該表決者節點電腦; 其中該相同記錄為最末區塊具有由該應用程式提供的最大的該序列號之一已公證鏈;且 其中該等電腦實施步驟進一步包含自該已公證鏈判定無該已公證鏈中之數個最末區塊的一已完結鏈,其中最末區塊之該數目對應於由該提議者節點電腦發送的多個未公證提議之數目。
  20. 一種非暫時性電腦可讀媒體,其儲存使一電腦執行一程序之一應用程式,該程序包含: 在複數個節點電腦中實施一區塊鏈共識軟體應用程式,該複數個節點電腦中之每一節點電腦包括一處理器、儲存可由該處理器執行之電腦指令的記憶體以及能夠運作地耦接至該處理器及一通信網路之一網路介面,該通信網路連接該複數個節點電腦,該應用程式組態該複數個節點電腦以建立藉由該複數個節點電腦維護的含有交易之一區塊鏈,且形成一委員會,該委員會包含被舉為或被選為提議者節點電腦及表決者節點電腦的節點電腦; 其中該區塊鏈共識軟體應用程式包括儲存在該記憶體中之電腦指令,該等電腦指令可由該處理器執行以執行電腦實施步驟,該等步驟包含: 將一序列號提供至該區塊鏈上之一提議或一區塊; 執行一公證程序,包含: 在被舉為或被選為該委員會中之該表決者節點電腦時,執行以下步驟: 在該表決者節點電腦與該提議者節點電腦具有該區塊鏈之相同記錄時,簽名從該提議者節點電腦接收的一未公證提議;及 將經簽名提議發送至該提議者節點電腦;及 在被舉為或被選為該委員會中之該表決者節點電腦時,執行以下步驟: 準備一個或多個未公證提議並將其發送至每一該表決者節點電腦; 在該提議者節點電腦接收到用於一未公證提議之臨限數目個簽名之後,公證該未公證提議,其中一已公證提議為添加至該區塊鏈之一區塊;及 在該提議者節點電腦公證任何提議之前,將另一個或另多個未公證提議發送至每一該表決者節點電腦; 其中該相同記錄為最末區塊具有由該應用程式提供的最大的該序列號之一已公證鏈;且 其中該等電腦實施步驟進一步包含自該已公證鏈判定無該已公證鏈中之數個最末區塊的一已完結鏈,其中最末區塊之該數目對應於由該提議者節點電腦發送的多個未公證提議之數目。
TW110128435A 2018-09-28 2019-10-09 具有短完結時間之高吞吐量區塊鏈共識系統、電腦實施方法以及非暫時性電腦可讀媒體 TWI793696B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862738791P 2018-09-28 2018-09-28
US16/586,508 2019-09-27
PCT/US2019/053608 WO2020069411A1 (en) 2018-09-28 2019-09-27 High throughput blockchain consensus systems and methods with low finalization time
US16/586,508 US11222009B2 (en) 2018-09-28 2019-09-27 High throughput blockchain consensus systems and methods with low finalization time
WOPCT/US19/53608 2019-09-27

Publications (2)

Publication Number Publication Date
TW202145759A TW202145759A (zh) 2021-12-01
TWI793696B true TWI793696B (zh) 2023-02-21

Family

ID=69947530

Family Applications (2)

Application Number Title Priority Date Filing Date
TW108136492A TWI739170B (zh) 2018-09-28 2019-10-09 具有短完結時間之高吞吐量區塊鏈共識系統、電腦實施方法以及非暫時性電腦可讀媒體
TW110128435A TWI793696B (zh) 2018-09-28 2019-10-09 具有短完結時間之高吞吐量區塊鏈共識系統、電腦實施方法以及非暫時性電腦可讀媒體

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW108136492A TWI739170B (zh) 2018-09-28 2019-10-09 具有短完結時間之高吞吐量區塊鏈共識系統、電腦實施方法以及非暫時性電腦可讀媒體

Country Status (4)

Country Link
US (2) US11222009B2 (zh)
EP (1) EP3857850A4 (zh)
TW (2) TWI739170B (zh)
WO (1) WO2020069411A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017212618B3 (de) * 2017-07-21 2018-12-13 Bundesdruckerei Gmbh Hardwaresystem mit Blockchain
WO2019106006A1 (en) * 2017-12-01 2019-06-06 Quant Network Ltd. Blockchain communications and ordering
US20210099312A1 (en) 2019-09-27 2021-04-01 Cypherium Blockchain Inc. Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system
WO2021078369A1 (en) * 2019-10-22 2021-04-29 DFINITY Stiftung Distributed network with consensus mechanism
JP2021175016A (ja) * 2020-04-20 2021-11-01 株式会社日立製作所 デジタル署名の管理方法、デジタル署名の管理システム
US11969335B2 (en) 2020-04-28 2024-04-30 Cook Medical Technologies Llc Woven graft having a taper with a re-engaged warp end
CN112118117A (zh) * 2020-08-27 2020-12-22 紫光云(南京)数字技术有限公司 一种基于Paxos算法的区块链共识方法
CN112073483B (zh) * 2020-08-28 2022-01-04 武汉大学 基于信誉与委员会背书机制的权威证明共识方法及系统
CN112911011B (zh) * 2021-02-05 2022-05-27 深圳前海益链网络科技有限公司 一种应用于区块链的区块生成控制方法及相关装置
CN112714196B (zh) * 2021-03-29 2021-06-04 腾讯科技(深圳)有限公司 基于区块链网络的节点管理方法、装置、设备及存储介质
CN113487400B (zh) * 2021-06-04 2022-10-11 长春工业大学 基于诚实度双向选择的金融授信共识方法
CN113495927B (zh) * 2021-09-06 2022-02-25 支付宝(杭州)信息技术有限公司 区块管理方法及装置
CN113570466B (zh) * 2021-09-24 2021-11-30 腾讯科技(深圳)有限公司 一种交易数据处理方法、装置以及可读存储介质
WO2024177604A1 (en) * 2023-02-21 2024-08-29 Istanbul Teknik Universitesi Block chain consensus method
CN117354315B (zh) * 2023-08-29 2024-06-04 长江水上交通监测与应急处置中心 一种大跨度地域航运数据链的共识方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160335533A1 (en) * 2015-05-15 2016-11-17 Joshua P. Davis System and Method for an Autonomous Entity
US20170236120A1 (en) * 2016-02-11 2017-08-17 Oracle International Corporation Accountability and Trust in Distributed Ledger Systems
US20180101560A1 (en) * 2016-10-07 2018-04-12 International Business Machines Corporation Establishing overlay trust consensus for blockchain trust validation system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107145768B (zh) * 2016-03-01 2021-02-12 华为技术有限公司 版权管理方法和系统
CN107909369A (zh) * 2017-10-13 2018-04-13 布比(北京)网络技术有限公司 基于跨链交易的共识方法、装置和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160335533A1 (en) * 2015-05-15 2016-11-17 Joshua P. Davis System and Method for an Autonomous Entity
US20170236120A1 (en) * 2016-02-11 2017-08-17 Oracle International Corporation Accountability and Trust in Distributed Ledger Systems
US20180101560A1 (en) * 2016-10-07 2018-04-12 International Business Machines Corporation Establishing overlay trust consensus for blockchain trust validation system

Also Published As

Publication number Publication date
WO2020069411A1 (en) 2020-04-02
TW202145759A (zh) 2021-12-01
TW202114374A (zh) 2021-04-01
US20200104293A1 (en) 2020-04-02
US11222009B2 (en) 2022-01-11
TWI739170B (zh) 2021-09-11
US20220129439A1 (en) 2022-04-28
EP3857850A4 (en) 2022-06-29
EP3857850A1 (en) 2021-08-04

Similar Documents

Publication Publication Date Title
TWI793696B (zh) 具有短完結時間之高吞吐量區塊鏈共識系統、電腦實施方法以及非暫時性電腦可讀媒體
US20200134578A1 (en) Blockchain consensus systems and methods involving a time parameter
US20210295321A1 (en) Methods for decentralized digital asset transfer and smart contract state transition
JP7569602B2 (ja) 分散協調を用いるスマートコントラクトの実行
CN110869967B (zh) 用于并行处理区块链交易的系统和方法
Pahlajani et al. Survey on private blockchain consensus algorithms
US20230239157A1 (en) Network for improved verification speed with tamper resistant data
US20210097538A1 (en) Systems and methods for managing data generation, storage, and verification in a distributed system having a committee of validator nodes
US20190354518A1 (en) Chain mesh network for decentralized transaction systems
US10630463B2 (en) Meta block chain
AU2019203861B2 (en) System and method for ending view change protocol
US10389518B2 (en) Blockchain hash value recomputation
US20190268139A1 (en) Data authentication using a blockchain approach
WO2021244208A1 (zh) 区块链的提案消息处理方法、装置、设备以及存储介质
CA3037833C (en) System and method for information protection
US11263067B2 (en) System and method for ending view change protocol
JP2020511807A (ja) 分散システムにおけるネットワークノード間のコンセンサスを実現すること
US20210233068A1 (en) Settlement system, settlement method, user device, and settlement program
Yanovich et al. Exonum: Byzantine fault tolerant protocol for blockchains
WO2022072617A1 (en) Distributed ledger network implementing a synchronous trust consensus model
JP2023515369A (ja) 分散型データベース
JP2023515368A (ja) ブロックチェーンネットワークと共に使用される証明サービス
Jayabalan et al. A study on distributed consensus protocols and algorithms: the backbone of blockchain networks
JP2023513950A (ja) 階層化ネットワーク
Ozdayi et al. Instachain: Breaking the sharding limits via adjustable quorums