TW202341044A - 有序且僅可附加之資料儲存技術 - Google Patents
有序且僅可附加之資料儲存技術 Download PDFInfo
- Publication number
- TW202341044A TW202341044A TW112111256A TW112111256A TW202341044A TW 202341044 A TW202341044 A TW 202341044A TW 112111256 A TW112111256 A TW 112111256A TW 112111256 A TW112111256 A TW 112111256A TW 202341044 A TW202341044 A TW 202341044A
- Authority
- TW
- Taiwan
- Prior art keywords
- transaction
- data
- blockchain
- event
- client
- Prior art date
Links
- 238000013500 data storage Methods 0.000 title description 21
- 238000000034 method Methods 0.000 claims abstract description 160
- 230000006870 function Effects 0.000 claims description 75
- 241001465754 Metazoa Species 0.000 claims description 53
- 150000003839 salts Chemical class 0.000 claims description 42
- 244000144972 livestock Species 0.000 claims description 37
- 230000015654 memory Effects 0.000 claims description 32
- 238000003860 storage Methods 0.000 claims description 32
- 238000012795 verification Methods 0.000 claims description 29
- 238000002255 vaccination Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 8
- 238000013515 script Methods 0.000 description 68
- 238000012545 processing Methods 0.000 description 32
- 238000005516 engineering process Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 230000009471 action Effects 0.000 description 12
- 238000007726 management method Methods 0.000 description 12
- 230000000644 propagated effect Effects 0.000 description 11
- 230000008901 benefit Effects 0.000 description 10
- 230000000875 corresponding effect Effects 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000013475 authorization Methods 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 238000009938 salting Methods 0.000 description 4
- 239000011800 void material Substances 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000013479 data entry Methods 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 229910052799 carbon Inorganic materials 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000007170 pathology Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241001025261 Neoraja caerulea Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004900 laundering Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
- G06Q10/087—Inventory or stock management, e.g. order filling, procurement or balancing against orders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/02—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic 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)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Accounting & Taxation (AREA)
- Economics (AREA)
- Theoretical Computer Science (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Tourism & Hospitality (AREA)
- Quality & Reliability (AREA)
- Finance (AREA)
- Operations Research (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Development Economics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Input From Keyboards Or The Like (AREA)
- Debugging And Monitoring (AREA)
Abstract
本案提供一種用於在一區塊鏈系統中添加與一交易集合相關聯之一當前交易的電腦實施方法。該方法包含以下步驟:產生一第一狀態資料,其中該第一狀態資料係基於對一第一交易之一第一交易參考及/或對一第二交易之一第二交易參考;產生包含該第一狀態資料之該當前交易;以及將該當前交易提交至區塊鏈。
Description
發明領域
本揭露內容係關於用於為一或多個用戶端實施與分散式分類帳,亦即區塊鏈相關聯之一或多個服務之平台的方法、系統以及資料結構。更特定而言,本揭露內容係關於但不限於與區塊鏈相關聯之資料儲存提供及資料儲存驗證。
發明背景
區塊鏈係指一種形式之分散式資料結構,其中在分散式同級間(P2P)網路(在下文被稱作「區塊鏈網路」)中之多個節點中之各者處維護區塊鏈之複本且廣泛地公佈該等複本。區塊鏈包含資料區塊鏈,其中各區塊包含一或多個交易。除所謂的「比特幣基地(coinbase)交易」以外,各交易亦指回至序列中之先前交易,該序列可向上橫跨一或多個區塊,直至一或多個coinbase交易。下文論述coinbase交易。經提交至區塊鏈網路之交易包括於新區塊中。新區塊係藉由常常被稱作「挖掘(mining)」之程序創建,該程序涉及多個節點中之各者競爭執行「工作量證明」,亦即,基於等待包括於區塊鏈之新區塊中的有序及經驗核之未決交易之所定義集合的表示而解決密碼編譯難題。應注意,可在一節點處修剪區塊鏈,且可經由僅公佈區塊標頭來達成區塊之公佈。
區塊鏈中之交易用以執行以下操作中之一或多者:傳送數位資產(亦即,數個數位符記);對虛擬化分類帳或註冊表中之一組日記條目進行排序;接收及處理時戳條目;及/或按時間對索引指標進行排序。亦可利用區塊鏈以便對區塊鏈之上的額外功能性進行分層。區塊鏈協定可允許將額外使用者資料或資料之索引儲存於交易中。對於可儲存於單個交易內之最大資料容量不存在預先指定之限制,且因此可併入愈來愈複雜之資料。舉例而言,此可用於將電子文件或音訊或視訊資料儲存於區塊鏈中。
區塊鏈網路之節點(其常常被稱作「挖掘者」)執行下文將詳細描述之分散式交易註冊及驗證程序。總體而言,在此程序期間,節點驗核交易且將其插入至區塊範本中,針對該區塊範本,該等交易嘗試識別有效的工作量證明解決方案。一旦找到有效解決方案,便將新區塊傳播至網路之其他節點,因此使得各節點能夠在區塊鏈上記錄新區塊。為了使交易記錄於區塊鏈中,使用者(例如,區塊鏈用戶端應用程式)將交易發送至網路之節點中之一者以供傳播。接收交易之節點可競相尋找將經驗核交易併入至新區塊中之工作量證明解決方案。各節點經組配以實施同一節點協定,其將包括交易有效之一或多個條件。無效交易將不被傳播或併入至區塊中。假定交易經驗核且藉此經接受至區塊鏈上,則交易(包括任何使用者資料)將因此作為不可變的公開記錄在區塊鏈網路中之節點中之各者處保持註冊及編索引。
成功地解決工作量證明難題以創建最新區塊之節點通常獲得被稱為「coinbase交易」之新交易的獎勵,該新交易分發一定金額之數位資產,亦即,數個符記。對無效交易之偵測及拒絕係藉由競爭節點之動作實施,該等競爭節點充當網路之代理且經激勵以報告及阻止非法行為。資訊之廣泛公佈允許使用者連續地稽核節點之效能。對僅區塊標頭之公佈允許參與者確保區塊鏈之持續完整性。
在「基於輸出」之模型(有時被稱作基於UTXO之模型)中,給定交易之資料結構包含一或多個輸入及一或多個輸出。任何可支出輸出皆包含一元素,該元素指定可自進行中之交易序列導出的數位資產之金額。可支出輸出有時被稱作UTXO (「未支出交易輸出」)。該輸出可進一步包含指定用於未來兌換該輸出之條件的鎖定指令碼。鎖定指令碼係定義驗核及轉移數位符記或資產所必需之條件的述詞。交易(除coinbase交易以外)之各輸入包含指向先前交易中之此輸出的指標(亦即,參考),且可進一步包含用於解除鎖定所指向輸出之鎖定指令碼的解除鎖定指令碼。因此,考慮一對交易,將其稱為第一交易及第二交易(或「目標」交易)。第一交易包含至少一個輸出,該至少一個輸出指定數位資產之金額且包含定義解除鎖定該輸出之一或多個條件的鎖定指令碼。第二目標交易包含至少一個輸入,該至少一個輸入包含指向第一交易之輸出的指標及用於解除鎖定第一交易之輸出的解除鎖定指令碼。
在此模型中,當將第二目標交易發送至區塊鏈網路以在區塊鏈中傳播及記錄時,在各節點處應用之有效性準則中之一者將為解除鎖定指令碼符合第一交易之鎖定指令碼中所定義的所有一或多個條件。另一準則將為第一交易之輸出尚未由另一較早有效交易兌換。根據此等條件中之任一者發現目標交易為無效的任何節點將不會傳播該目標交易(作為有效交易,但可能註冊無效交易),亦不將該目標交易包括於待記錄於區塊鏈中之新區塊中。
交易模型之替代類型為基於帳戶之模型。在此狀況下,各交易皆不會藉由返回參考過去交易序列中之先前交易之UTXO來定義待轉移之金額,而是藉由參考絕對帳戶餘額。所有帳戶之當前狀態由節點與區塊鏈分離地儲存,且不斷更新。
當前研究之一個領域為使用區塊鏈用於實施「智慧型合約」。此等智慧型合約為經設計以使機器可讀合約或協議之條款之執行自動化的電腦程式。不同於以自然語言撰寫之傳統合約,智慧型合約為包含可處理輸入以便產生結果之規則的機器可執行程式,該程式可接著取決於彼等結果而執行動作。與區塊鏈相關的另一感興趣領域為使用「符記」(或「彩色幣」)來表示真實世界實體及經由區塊鏈傳送真實世界實體。潛在地敏感或秘密之項目可由符記表示,該符記不具有可辨別之含義或值。該符記因此充當允許自區塊鏈參考真實世界項目之識別符。
上文所提及的實例或情境儘管利用區塊鏈之優點以提供事件之永久性防篡改記錄;但要求用戶端、用戶端實體、運算裝置或與用戶端相關聯之終端機包括或實施軟體及/或硬體,或處理器/模組,諸如數位錢包,其用於實施用於管理數位資產、管理用於橢圓曲線數位簽章演算法(ECDSA)之密碼編譯金鑰的功能性,該等密碼編譯金鑰例如由比特幣中本聰願景(Bitcoin Satoshi's Vision;BSV)區塊鏈使用。此外,亦要求用戶端裝置能夠實施區塊鏈交易建構及存取BSV庫。因此,用戶端不僅需要包括實施此功能性之處理,而且其亦需要確保在此類程序可利用區塊鏈網路來發送、接收及檢視資料及/或數位資產之前針對此類程序實施適當的安全措施,該等數位資產與智慧型合約或表示真實世界資產交易之符記相關。
因此,期望實施安全、低複雜度、使用者友好、高效且穩固之技術,該等技術將允許無論運算上是否複雜,任何用戶端皆能夠以運算上及功能上較不繁重之簡單、快速、準確、可靠且安全的方式瞬時存取與區塊鏈相關聯之有用應用程式並與該等應用程式互動。更特定而言,期望利用分散式分類帳(區塊鏈)技術以及記錄之安全性、透明度及可靠性增加的優點,從而為多個區塊鏈相關服務或應用程式提供共同平台或介面,該等服務或應用程式使得任何用戶端運算裝置能夠確保與用戶端相關聯之任何資料、事件或數位資產可瞬時且安全地被挖掘,或容易地寫入至區塊鏈中,藉此提供可視需要創建、寫入、更新、讀取或檢視的持續、防篡改且可稽核之記錄。另外,可能需要對此類資料進行分組,使得當存在於區塊鏈上時,交易可根據其群組來遍歷或以其他方式彼此相關聯。
現已設計出此經改良之解決方案。本揭露內容藉由提出一或多種技術來解決以上技術問題,藉此與用戶端相關聯之資料或資訊可藉由為與區塊鏈相關聯之一或多個服務提供應用程式設計介面(API)的方法、裝置及系統來簡單地、安全地且瞬時地寫入至區塊鏈中或自區塊鏈獲得,而此類用戶端無需實施任何處理或功能性以使用區塊鏈,同時仍能夠利用與區塊鏈相關聯之所有優點。
發明概要
在第一態樣中,本揭露內容提議用於在區塊鏈系統中添加與交易集合相關聯之當前交易的方法、裝置以及系統,該方法包含以下步驟:產生第一狀態資料,其中該第一狀態資料係基於對第一交易之第一交易參考及/或對第二交易之第二交易參考;產生包含第一狀態資料之當前交易;以及將當前交易提交至區塊鏈。
在第二態樣中,本揭露內容提議用於經由使用第一態樣之方法、裝置以及系統來追蹤家畜的方法、裝置以及系統。
現參看隨附圖式作為說明來描述所揭露方法之一些特定組件及實施例,在該等圖式中,類似參考編號指類似特徵。
較佳實施例之詳細說明
在第一態樣中,本揭露內容提議一種用於在區塊鏈系統中添加與交易集合相關聯之當前交易的方法,該方法包含以下步驟:產生第一狀態資料,其中該第一狀態資料係基於對第一交易之第一交易參考及/或對第二交易之第二交易參考;產生包含第一狀態資料之當前交易;以及將當前交易提交至區塊鏈。
較佳地,交易集合為如本文中所描述之承諾鏈。
任擇地,第一交易參考係基於第一交易之輸出。任擇地,第一交易參考係基於第一交易之第二狀態資料。任擇地,第一交易參考係對交易集合中之前一交易的參考。因此,第一交易參考亦可被稱為前一交易參考。有利地,藉由使前一交易參考基於交易集合中之前一交易的輸出,建立向後參考鏈,藉此使得一方能夠向後遍歷以自區塊鏈找到該前一交易。
任擇地,第二交易參考係基於對第二交易之輸入的參考。任擇地,第二交易參考包含未支出交易輸出點。任擇地,第二交易參考係對交易集合中之下一交易的參考。因此,第二交易參考亦可被稱為下一交易參考。任擇地,下一交易參考包含未支出交易輸出點。任擇地,未支出交易輸出點將為下一交易之輸入。有利地,藉由使下一交易參考基於交易集合中之下一交易的輸入,建立向前參考鏈,藉此使得一方能夠向前遍歷以自區塊鏈找到該下一交易。
任擇地,第一交易參考及/或第二交易參考係基於對發送者帳戶位址及臨時亂數之參考。有利地,允許在基於之帳戶區塊鏈上使用參考。因此,使得交易鏈能夠以與關於基於UTXO之區塊鏈所闡述類似的安全方式完全或部分地存在於基於帳戶之區塊鏈上。
當使狀態資料基於向前參考及向後參考二者時,儲存於區塊鏈上之狀態資料使得一方能夠向前或向後遍歷交易集合。區塊鏈上之資料因此將資料提供至該方以判定區塊鏈中之哪些交易為交易集合之部分。任擇地,狀態資料項目為如本文中所描述之「狀態摘要(S)」實施例中之一或多者。
任擇地,第一狀態資料具有與第一狀態資料所基於之資料不相關的已知狀態大小。任擇地,當前交易具有已知交易大小。任擇地,計算將當前交易包括於區塊鏈上之交易費用的步驟,其中準確地計算交易費用。任擇地,可在給定已知交易大小之情況下準確地計算交易費用。有利地,在已知交易大小及交易費用之情況下,可預先判定用以為各交易提供資金之金額且因此可預先產生資金輸入。在預先已知資金輸入之情況下,可參考該等輸入(且因此用作如上文所論述之第二參考)。
任擇地,第一交易參考及/或第二交易參考在區塊鏈上被隱藏而不被公眾看到。有利地,僅具有必要知識之各方才能夠遍歷交易集合。
任擇地,當前交易與區塊鏈上之任何其他交易無法區分。任擇地,當前交易與亦可為承諾鏈之部分的其他交易無法區分。有利地,此不允許任何惡意的第三方查看哪些交易為交易集合之部分,且其因此不能判定關於交易集合之任何雜項資訊,諸如其總數、其頻率或其他資訊。
任擇地,第一狀態資料係基於採用第一交易參考及/或第二交易參考作為輸入之單向函數的輸出。有利地,此不允許惡意第三方反轉鏈上儲存之資料以獲得參考,藉此進一步增加安全性。
任擇地,第一狀態日期經PUSHDATA編碼。有利地,PUSHDATA編碼以可由區塊鏈節點剖析之有效格式維護指令碼。因此,節點將不會因為包含無效區塊鏈指令碼而拒絕交易。
任擇地,第一狀態資料係基於基於雜湊之資料結構,該資料結構係基於第一交易參考及/或第二交易參考。有利地,基於雜湊之資料結構使得資料能夠被隱藏(由於雜湊函數之單向特性)以及呈已知格式以供其他方在適當時使用資料。
任擇地,第一狀態資料為狀態默克爾樹之第一默克爾樹根,且其中產生第一狀態資料之步驟包含產生狀態默克爾樹。任擇地,狀態默克爾樹包含基於第一交易參考之第一葉節點及/或基於第二交易參考之第二葉節點。有利地,默克爾樹根隱藏默克爾樹之內容,但允許重建構默克爾樹以用於驗證其內容。因此,此允許具有默克爾樹證明之彼等者驗證默克爾樹係使用相同資料建構。
替代地,第一狀態資料為雜湊鏈中之最後一個雜湊,其中該雜湊鏈係基於第一交易參考、第二交易參考、所接收之用戶端資料、鹽值(salt)、元資料及/或版本號碼。
替代地,第一狀態資料為雜湊函數之輸出,其中輸入為第一交易參考、第二交易參考、所接收之用戶端資料、鹽值(salt)、元資料及/或版本號碼之串連。
任擇地,藉由使第一交易參考通過單向函數至少一次來產生第一葉節點。任擇地,藉由使對第一交易之參考通過單向函數至少二次來產生第一葉節點。任擇地,藉由使第二交易參考通過單向函數至少一次來產生第二葉節點。任擇地,藉由使第二交易參考通過單向函數至少二次來產生第二葉節點。有利地,對默克爾樹之葉節點進行預雜湊提供了關於如何建構默克爾樹(及因此如何獲得默克爾樹根)之額外不可逆層。二次使用單向函數不允許惡意第三方濫用任何雜湊長度攻擊。
任擇地,單向函數為雜湊函數。
任擇地,狀態默克爾樹包含第一資料項目作為葉節點。任擇地,第一資料項目係基於以下各者中之任何一或多者:自用戶端接收到之資料、關於交易集合之元資料集合、版本號碼以及鹽值。有利地,藉由使狀態默克爾樹基於資料,為了重建構默克爾樹(及因此默克爾樹根),惡意第三方必須亦知曉所有的用戶端資料、元資料、版本號碼及/或鹽值。此增加公開可用資料之安全性。
任擇地,第一資料項目為資料默克爾樹之第二默克爾樹根,且其中產生第一資料項目之步驟包含產生資料默克爾樹。任擇地,資料默克爾樹包含數個資料葉節點,且資料葉節點各自係基於以下各者中之一者:自用戶端接收到之資料、來自關於交易集合之元資料集合的項目、版本號碼及/或鹽值。有利地,藉由使狀態默克爾樹基於另一資料默克爾樹(且較佳地,其默克爾樹根),達成了另一層間接性及可驗證性。若惡意第三方將不僅需要知曉第一及第二參考之內容以及用戶端資料,而且需要知曉如何建構默克爾樹,包括所有的其他元資料、鹽值等。資料默克爾樹亦可使用另一默克爾樹證明來驗證,以使得第三方能夠確認給定資料(例如,其自身的用戶端資料)在資料默克爾樹中表示,該資料默克爾樹接著亦在交易鏈中之交易中表示。
任擇地,資料葉節點中之至少一者係基於與版本號碼之串連。對默克爾樹進行版本設定使得默克爾樹之創建者能夠更新儲存於默克爾樹上之佈局或資料。
任擇地,第一狀態資料儲存於當前交易之輸出上。任擇地,輸出為不可支出輸出。任擇地,第一狀態資料係儲存於交易上,在OP_RETURN運算碼及/或OP_0運算碼之後。有利地,將資料儲存於交易之輸出上使得其能夠儲存於區塊鏈上。使用OP_RETURN及/或OP_0意謂交易輸出可證明為不可支出的。藉由可證明為不可支出的輸出,僅儲存可支出UTXO之區塊鏈節點無需儲存此UTXO,藉此節省更廣泛區塊鏈網路上之空間。
任擇地,當前交易包含第二資料項目。任擇地,第二資料項目儲存於當前交易之輸出上。任擇地,輸出為不可支出輸出。任擇地,第二資料項目係儲存於該交易上,在OP_RETURN運算碼及/或OP_0運算碼之後。任擇地,第二資料項目經PUSHDATA編碼。任擇地,第二資料項目係基於所接收之用戶端資料。任擇地,第二資料項目與第一狀態資料儲存於相同輸出上。如上文所論述,OP_RETURN及/或OP_0使輸出可證明為不可支出,且PUSHDATA編碼確保區塊鏈指令碼對於驗證者仍呈有效形式。儲存基於用戶端資料之資料使得第三方能夠證明給定資料在給定時間的存在(有時被稱為「存在證明」)。任擇地,此第二資料項目為如本文中所描述之「資料摘要」實施例中之一或多者。
任擇地,第二資料項目係基於使基於所接收之用戶端資料的資料項目通過單向函數至少一次的輸出。任擇地,第二資料項目係基於使基於所接收之用戶端資料的資料項目通過單向函數至少二次的輸出。有利地,使用單向函數不允許第三方反轉函數且發現用戶端資料為何資料。提供使用單向函數多於一次以抵抗長度擴展攻擊。
任擇地,對基於所接收之用戶端資料的資料項目進行加鹽值。對任何雜湊或單向函數進行加鹽值改良了對試圖反轉單向函數(例如,經由使用彩虹表)之惡意方的抵抗力。
任擇地,藉由使所接收之用戶端資料通過單向函數至少一次來獲得基於所接收之用戶端資料的資料項目。任擇地,藉由使所接收之用戶端資料通過單向函數至少二次來獲得基於所接收之用戶端資料的資料項目。有利地,藉由使用戶端資料再次通過單向函數,提供針對反轉雜湊之其他層保護,藉此增加儲存於區塊鏈上之公開資料的安全性。
任擇地,單向函數為雜湊函數。任擇地,根據以下函數產生第二資料項目:
其中H
D為第二資料項目,D為用戶端資料,H
2為單向函數(較佳為雜湊函數)且SALT為鹽值。
任擇地,用戶端資料在區塊鏈上被隱藏而不被公眾看到。有利地,將資料隱藏在區塊鏈上而不被公眾看到,從而阻止惡意第三方看到資料,藉此增加系統之安全性。任擇地,用戶端資料之表示不可變地儲存於區塊鏈上。任擇地,第二資料項目提供所接收之用戶端資料的存在證明。有利地,資料存在之不可變證明(任擇地,其中資料亦被隱藏)允許資料之擁有者以安全方式選擇性地提供其資料之某些態樣的證明,而不公開顯示資料以供所有人查看。
任擇地,第二資料項目具有與第二資料項目所基於之資料不相關的已知大小。任擇地,當前交易具有已知交易大小。任擇地,該方法進一步包含計算將當前交易包括於區塊鏈上之交易費用的步驟,其中在給定已知交易大小之情況下準確地計算交易費用。如上文所論述,具有(預先)已知交易大小存在數個優點,包括精確地判定將交易包括於區塊鏈中所需的費用以及使得能夠預先產生任何UTXO以為該等交易提供資金。
任擇地,當前交易屬於第二交易集合,且第三狀態資料係基於第三交易參考及/或第四交易參考產生。任擇地,第三狀態資料儲存於當前交易之另一輸出上。任擇地,第三交易參考具有與第一交易參考相同的形式。任擇地,第四交易參考具有與第二交易參考相同的形式。有利地,藉由屬於第二交易集合,當前交易為二個單獨的交易集合(或確切而言,與交易集合相關之日誌及/或串流)提供跨日誌/串流二者以原子方式將資料提承至區塊鏈的方式。
任擇地,第一狀態資料係進一步基於第三交易參考及/或第四交易參考。
任擇地,該方法進一步包含在產生第二交易之前判定第二交易參考。有利地,第二(向前)參考可經由使用交易輸出點在區塊鏈上之交易存在之前對其進行參考。能夠在下一交易已知之前創建至下一交易之鏈路提供了靈活性,此係因為可立即提承當前交易之資料而無需等待產生下一交易。 替代地,第一交易參考包含指示當前交易為交易集合中之第一交易的資料及/或第二交易參考包含指示當前交易為交易集合中之最後交易的資料。較佳地,第一狀態資料為默克爾樹之默克爾樹根,其中基於第三交易參考及/或第四交易參考而建構包含一或多個葉節點之默克爾樹
任擇地,指示當前交易為交易集合中之第一交易的資料及/或指示當前交易為交易集合中之最後交易的資料為零位元組字串。任擇地,第一交易參考為空參考及/或第二交易參考為空參考。任擇地,空參考包含零位元組字串。有利地,使用空參考及/或已知零值允許狀態摘要表示已知最終狀況。此在遍歷交易集合時尤其重要,此係因為遍歷者將需要知曉其何時處於集合之末尾或開始處。
任擇地,零位元組字串具有與第一或第二交易參考相同的長度。任擇地,零位元組字串為32位元組長。有利地,使用與第一或第二交易相同的長度,在產生狀態默克爾樹時使用的資料結構無需適應不同大小。
任擇地,該方法進一步包含以下步驟:接收創建串流訊息,該創建串流訊息包含觸發條件之指示;基於符合觸發條件,進行以下步驟:獲得指示串流之狀態的資料;以及產生附加交易,該附加交易包含指示串流之狀態的資料。較佳地,該附加交易具有與如上文所描述之當前交易相同的形式。
有利地,藉由為表示當前串流狀態之交易的產生(及後續提交)提供觸發,達成串流之區塊鏈表示所需的最新程度之更大靈活性及可選擇性。用戶端在創建事件串流後可取決於其要求而選擇觸發之態樣。
在一些實施例中,該方法進一步包含監測觸發條件之再次發生的步驟。
當大量資料儲存於鏈外資料庫中時,觸發條件可能會發生多次。藉由監測何時符合額外觸發條件,在需要時更新鏈上資料集。
在一些實施例中,該方法進一步包含產生及廣播至少包含觸發條件之指示的初始交易的步驟。
在一些實施例中,觸發條件係基於以下各者中之任何一或多者:指示串流完成之訊息的接收、經過時間、經過時間與臨限時間的比較及/或接收到之事件之數目與事件之臨限數目的比較。
有利地,不同觸發系統係針對不同用戶端需求而提供且可由用戶端選擇。
在一些實施例中,經過時間係基於自符合先前觸發條件以來的時間及/或自接收到創建訊息以來的時間。在一些實施例中,創建訊息進一步包含臨限時間。
較佳使用上文所提及的特徵將交易至區塊鏈之提交與對事件串流之更新分離提供了數個優點,包括: 隱藏已發生之事件的準確數目。舉例而言,若已知每50個事件在鏈上更新一串流,則第三方僅需要對每個鏈上附加交易進行計數,將計數乘以50,且大致瞭解事件總數。取決於相關聯之智慧型合約,此可能會向第三方洩漏機密資訊。使用本發明實施例藉由允許觸發基於時間來緩解此情形,藉此不洩漏關於事件之總數目的任何資訊;以及 防止發生任何循環,其中若您的事件串流正追蹤其自身的鏈上提交,則提交至事件串流之任何事件皆將觸發創建另一事件且因此觸發另一事件交易,如此等等。使用本發明實施例藉由不基於接收到之每個事件向區塊鏈進行提交來緩解此情形。
在一些實施例中,接收到之事件的數目係基於自符合先前觸發條件以來接收到之事件的數目及/或自接收到創建訊息以來接收到之事件的數目。在一些實施例中,創建訊息包含事件之臨限數目。在一些實施例中,事件之臨限數目為1。在一些實施例中,事件之臨限數目大於1。
在一些實施例中,觸發條件僅係基於經過時間與臨限時間的比較。在一些實施例中,觸發條件僅係基於接收到之事件之數目與事件之臨限數目的比較。
在第一態樣中,亦提議一種裝置,該裝置包含處理器及記憶體,該記憶體包括可執行指令,由於處理器之執行該等可執行指令,致使裝置執行根據以上第一態樣之電腦實施方法。
在第一態樣中,亦提議一種非暫時性電腦可讀儲存媒體,其包含電腦程式碼指令,該等電腦程式碼指令可由電腦執行,以進行根據以上第一態樣之方法。
在第一態樣中,亦提議一種電腦程式,該電腦程式包含指令,當程式由電腦執行時,該等指令使電腦進行根據以上第一態樣之方法。
在第一態樣中,亦提議一種系統,其包含根據如上文所描述之第一態樣的裝置,及經組配以將資料提交至裝置使得所提交資料之表示包括於區塊鏈上的用戶端裝置。
任擇地,根據第一態樣之方法供用於在區塊鏈上儲存及追蹤家畜相關資料,該方法包含以下步驟:接收附加事件訊息,該附加事件訊息包含:動物唯一識別符及與動物相關聯之事件的描述符,該動物與該動物唯一識別符相關聯,且其中第一狀態資料係基於動物唯一識別符及事件之描述符。
較佳地,附加事件訊息與對與動物唯一識別符相關聯之動物執行的疫苗接種相關。更佳地,使用RFID標籤判定動物唯一識別符。
任擇地,該方法進一步包含判定與動物唯一識別符相關聯之事件串流的步驟。
任擇地,前一區塊鏈交易參考為對與事件串流相關聯之交易的參考,該事件串流與在動物唯一識別符中參考之動物相關聯。
任擇地,該方法進一步包含以下步驟:接收包含動物唯一識別符及事件參考之驗證請求;獲得由事件參考所參考之事件的驗證證明;以及將驗證證明傳輸至驗證請求之發送者。較佳地,驗證證明為默克爾證明。
任擇地,提供一種驗證與動物相關聯之事件的方法,其包含以下步驟:獲得與事件相關之事件資料;自來自區塊鏈之交易獲得存在值證明,其中交易與交易集合相關聯,且其中交易係根據根據第一態樣之任何實施例的方法儲存於區塊鏈上;獲得驗證證明;以及基於驗證證明及存在值證明而判定事件資料之有效性。
在第一態樣中,亦提議一種家畜管理系統,其包含:使用者裝置;家畜管理資料庫;區塊鏈介面系統;其中使用者裝置經組配以在動物相關事件期間捕獲與動物相關聯之唯一識別符且將與事件相關之資料及唯一識別符傳輸至家畜管理資料庫;其中家畜管理資料庫經組配以接收唯一識別符及與事件相關之資料,且其中家畜管理資料庫經進一步組配以將唯一識別符及與事件相關之資料傳輸至區塊鏈介面系統;其中區塊鏈介面系統經組配以進行第一態樣之實施例中之任何一或多者的方法。
任擇地,第一狀態資料係基於第三交易參考,其中該第三交易參考係基於對第三交易之參考。
較佳地,該方法進一步包含以下步驟:獲得對交易之計數分支之參考;產生計數狀態資料,其中該計數狀態資料係基於交易集合中之分支的數目及對交易之計數分支中之最近的交易的參考;產生包含計數狀態資料之計數狀態交易;以及將當前交易提交至區塊鏈。
任擇地,第一交易參考及/或第二交易參考為對儲存於或待儲存於另一區塊鏈上之交易的參考,其中另一區塊鏈不同於區塊鏈。任擇地,第一交易參考及/或第二交易參考為對基於帳戶之區塊鏈的參考。更佳地,第一交易參考及/或第二交易參考包含帳戶位址及臨時亂數。
例示性系統概述
圖1展示用於實施區塊鏈150之例示性系統100。系統100可包含封包交換網路101,其通常為諸如網際網路之廣域網際網路。封包交換網路101包含多個區塊鏈節點104,該等區塊鏈節點可經配置以在封包交換網路101內形成同級間(P2P)網路106。雖然未繪示,但區塊鏈節點104可經配置為接近完整的圖。各區塊鏈節點104因此高度連接至其他區塊鏈節點104。
各區塊鏈節點104包含同級者之電腦裝備,其中節點104中之不同節點屬於不同同級者。各區塊鏈節點104包含:處理設備,其包含一或多個處理器,例如一或多個中央處理單元(CPU)、加速器處理器、特殊應用處理器及/或場可規劃閘陣列(FPGA);以及其他裝備,諸如特殊應用積體電路(ASIC)。各節點亦包含記憶體,亦即,呈一或多個非暫時性電腦可讀媒體之形式的電腦可讀儲存器。記憶體可包含一或多個記憶體單元,其使用一或多個記憶體媒體,例如,諸如硬碟之磁性媒體;諸如固態硬碟(SSD)、快閃記憶體或EEPROM之電子媒體;及/或諸如光碟機之光學媒體。
區塊鏈150包含資料區塊鏈151,其中在分散式或區塊鏈網路160中之多個區塊鏈節點104中之各者處維護區塊鏈150之各別複本。如上文所提及,維護區塊鏈150之複本未必意謂儲存整個區塊鏈150。實情為,只要各區塊鏈節點150儲存各區塊151之區塊標頭(下文所論述),即可修剪區塊鏈150之資料。該鏈中之各區塊151包含一或多個交易152,其中在此上下文中之交易係指一種資料結構。該資料結構之特性將取決於用作交易模型或方案之部分的交易協定之類型。給定區塊鏈將始終使用一個特定交易協定。在一種常見類型之交易協定中,各交易152之資料結構包含至少一個輸入及至少一個輸出。各輸出指定表示作為財產之數位資產之數量的金額,其實例為輸出以密碼編譯方式被鎖定至的使用者103 (需要彼使用者之簽章或其他解決方案以便解除鎖定且藉此兌換或支出)。各輸入均指回至先前交易152之輸出,藉此連結交易。
各區塊151亦包含區塊指標155,該區塊指標指回至該鏈中之先前創建區塊151以便定義區塊151之順序次序。各交易152 (除了coinbase交易以外)包含指回至前一交易之指標,以便定義交易序列之次序(注意:允許交易152之序列進行分支)。區塊151之鏈一直追溯至起源區塊(Gb) 153,該起源區塊為該鏈中之第一區塊。鏈150中早期之一或多個原始交易152指向起源區塊153,而非先前交易。
區塊鏈節點104中之各者經組配以將交易152轉遞至其他區塊鏈節點104,且藉此使交易152在整個網路106中傳播。各區塊鏈節點104經組配以創建區塊151,且將同一區塊鏈150之各別複本儲存於其各別記憶體中。各區塊鏈節點104亦維護等待併入至區塊151中之交易152的有序集合154。有序集合154常常被稱作「記憶體池」。本文中之此術語並不意欲限於任何特定區塊鏈、協定或模型。該術語係指節點104已接受為有效的交易之有序集合,且對於該有序集合,節點104不必接受嘗試支出相同輸出之任何其他交易。
在給定的目前交易152j中,該(或各)輸入包含參考交易序列中之先前交易152i之輸出的指標,指定此輸出待在目前交易152j中兌換或「支出」。一般而言,先前交易可為有序集合154或任何區塊151中之任何交易。在目前交易152j經創建或甚至發送至網路106時,先前交易152i不一定存在,但先前交易152i將需要存在且經驗核以使目前交易有效。因此,本文中的「先前」係指在藉由指標連結之邏輯序列中的前置者,未必為時間序列中之創建或發送時間,且因此,其未必排除無序地創建或發送交易152i、152j (參見下文關於孤立交易之論述)。先前交易152i同樣可被稱為前期或前置交易。
目前交易152j之輸入亦包含輸入授權,例如先前交易152i之輸出被鎖定至的使用者103a之簽章。又,目前交易152j之輸出可以密碼編譯方式鎖定至新使用者或實體103b。目前交易152j因此可將先前交易152i之輸入中所定義的金額轉移至如目前交易152j之輸出中定義的新使用者或實體103b。在一些狀況下,交易152可具有多個輸出以在多個使用者或實體(多個使用者或實體中之一者可為原始使用者或實體103a以便找零)間劃分輸入金額。在一些狀況下,交易亦可具有多個輸入以將來自一或多個先前交易之多個輸出的金額搜集在一起,且重新分發給當前交易之一或多個輸出。
根據基於輸出之交易協定,諸如比特幣,當諸如使用者或機器之實體103希望制定新交易152j時,則該實體將新交易自其電腦終端機102發送至接收者。該實體或接收者將最終發送此交易至網路106之區塊鏈節點104中之一或多者(該等區塊鏈節點現今通常為伺服器或資料中心,但原則上可為其他使用者終端機)。亦不排除制定新交易152j之實體103可將交易發送至區塊鏈節點104中之一或多者,且在一些實例中不發送至接收者。接收交易之區塊鏈節點104根據應用於區塊鏈節點104中之各者處之區塊鏈節點協定而檢查該交易是否有效。區塊鏈節點協定通常需要區塊鏈節點104檢查新交易152j中之密碼編譯簽章是否匹配預期簽章,此取決於交易152之有序序列中的前一交易152i。在此基於輸出之交易協定中,此可包含檢查包括於新交易152j之輸入中的實體103之密碼編譯簽章或其他授權是否匹配定義於新交易指派之先前交易152i之輸出中的條件,其中此條件通常包含至少檢查新交易152j之輸入中的密碼編譯簽章或其他授權是否解除鎖定新交易之輸入所連結至的前一交易152i之輸出。該條件可至少部分地由包括於先前交易152i之輸出中的指令碼定義。替代地,其可簡單地由區塊鏈節點協定單獨確定,或其由此等協定之組合確定。無論如何,若新交易152j有效,則區塊鏈節點104將其轉遞至區塊鏈網路106中之一或多個其他區塊鏈節點104。此等其他區塊鏈節點104根據相同區塊鏈節點協定應用相同測試,且因此將新交易152j轉遞至一或多個其他節點104,等等。以此方式,新交易在區塊鏈節點104之整個網路中傳播。
在基於輸出之模型中,是否指派給定輸出(例如,UTXO)之定義為其是否已根據區塊鏈節點協定而由另一後續交易152j之輸入有效地兌換。使交易有效之另一條件為該交易嘗試指派或兌換之先前交易152i之輸出尚未由另一交易指派/兌換。再次,若並非有效的,則將不在區塊鏈150中傳播(除非經標記為無效,且經傳播以用於警示)或記錄交易152j。此防止雙重支出,由此交易者試圖將同一交易之輸出指派多於一次。另一方面,基於帳戶之模型藉由維持帳戶餘額來防止雙重支出。因為同樣存在所定義之交易次序,所以帳戶餘額在任一時間皆具有單個所定義狀態。
除了驗核交易以外,區塊鏈節點104亦競相率先在通常被稱作挖掘之程序中創建交易區塊,該程序由「工作量證明」支援。在區塊鏈節點104處,將新交易添加至有效交易之有序集合154,該等新交易尚未出現在記錄於區塊鏈150上之區塊151中。區塊鏈節點接著競相藉由嘗試解決密碼編譯難題而自交易之有序集合154組裝交易152之新有效區塊151。通常,此包含搜尋「臨時亂數」值,使得當臨時亂數與交易之有序集合154的表示串連且經雜湊時,雜湊之輸出接著符合預定條件。例如,預定條件可為雜湊之輸出具有某一預定義數目個前導零。應注意,此僅為一個特定類型之工作量證明難題,且不排除其他類型。雜湊函數之特性為其輸出相對於其輸入為不可預測的。因此,此搜尋可僅藉由蠻力執行,因此在正試圖解決難題之各區塊鏈節點104處消耗大量處理資源。
解決難題之第一區塊鏈節點104向網路106宣佈此點,從而提供解決方案作為證明,該解決方案接著可由網路中之其他區塊鏈節點104容易地檢查(一旦給定雜湊之解決方案,便直接檢查其是否使得雜湊之輸出符合條件)。第一區塊鏈節點104將區塊傳播至接受該區塊且因此實行協定規則之其他節點的臨限共識。交易之有序集合154接著藉由區塊鏈節點104中之各者而記錄為區塊鏈150中之新區塊151。區塊指標155亦經指派給新區塊151n,該指標指回至鏈中之先前創建區塊151n-1。創建工作量證明解決方案所需之例如呈雜湊形式的大量工作量發信第一節點104遵循區塊鏈協定之規則的意圖。此等規則包括若交易指派與先前驗核之交易相同的輸出,則不接受該交易為有效的,否則被稱為雙重支出。一旦經創建,區塊151便無法被修改,此係因為在區塊鏈網路106中之區塊鏈節點104中之各者處辨識及維護該區塊。區塊指標155亦向區塊151強加順序次序。由於交易152記錄於網路106中之各區塊鏈節點104處的有序區塊中,因此,此提供交易的不可變公共分類帳。
應注意,在任何給定時間競相解決難題之不同區塊鏈節點104可基於在任何給定時間尚待公佈之交易的有序集合154的不同快照而如此操作,此取決於該等節點何時開始搜尋解決方案或接收該等交易之次序。不論誰首先解決其各別難題皆定義哪些交易152且以哪一次序包括於下一新區塊151n中,且更新未公佈交易之當前集合154。區塊鏈節點104接著繼續競相自未公佈交易之新定義的未決有序集合154創建區塊,等等。亦存在用於解決可能出現的任何「分叉」之協定,分叉為二個區塊鏈節點104彼此在極短的時間內解決其難題之情況,使得區塊鏈的衝突觀點在節點104之間傳播。簡言之,無論分叉之哪個支叉生長得最長,皆成為決定性區塊鏈150。應注意,此不應影響網路之使用者或代理,此係因為相同交易將出現在二個分叉中。
根據比特幣區塊鏈(及大部分其他區塊鏈),成功地建構新區塊之節點104被授予在新特殊種類之交易中指派接受金額之數位資產的能力,該新特殊種類之交易分發定義數量之數位資產(相較於代理間或使用者間交易,其將一定金額之數位資產自一個代理或使用者轉移至另一代理或使用者)。此特殊類型之交易通常被稱作「coinbase交易」,但亦可被稱為「起始交易」。其通常形成新區塊151n之第一交易。工作量證明發信建構新區塊之節點遵循協定規則的意圖,從而允許稍後兌換此特殊交易。在可兌換此特殊交易之前,區塊鏈協定規則可能需要成熟期,例如100個區塊。常常,常規(非產生)交易152亦將在其輸出中之一者中指定額外交易費用,以進一步獎勵創建了公佈彼交易之區塊151n的區塊鏈節點104。此費用通常被稱作「交易費用」,且在下文論述。
由於交易驗核及公佈中所涉及的資源,區塊鏈節點104中之至少各者通常採用伺服器之形式,該伺服器包含一或多個實體伺服器單元或甚至整個資料中心。然而,原則上,任何給定區塊鏈節點104可採用使用者終端機或經網路連接在一起之使用者終端機之群組的形式。
各區塊鏈節點104之記憶體儲存軟體,該軟體經組配以在區塊鏈節點104之處理設備上運行以便根據區塊鏈節點協定執行其各別的一或多個角色且處置交易152。應理解,本文中歸於區塊鏈節點104之任何動作可由在各別電腦裝備之處理設備上運行的軟體執行。節點軟體可以一或多個應用程式實施於應用層或諸如作業系統層或協定層之下部層或此等層之任何組合處。
充當消費使用者之角色的多方103中之各者的電腦裝備102亦連接至網路101。此等使用者可與區塊鏈網路互動,但不參與驗核、建構或傳播交易及區塊。此等使用者或代理103中之一些可充當交易中之發送者及接收者。其他使用者可與區塊鏈150互動,而未必充當發送者或接收者。舉例而言,一些方可充當儲存實體,其儲存區塊鏈150之複本(例如,已自區塊鏈節點104獲得區塊鏈之複本)。
一些或所有方103可作為不同網路(例如,覆疊於區塊鏈網路106之上的網路)之部分而連接。區塊鏈網路之使用者(常常被稱作「用戶端」)可據稱為包括區塊鏈網路之系統的部分;然而,此等使用者並非區塊鏈節點104,此係因為其不執行區塊鏈節點所需的角色。實情為,各方103可與區塊鏈網路106互動,且藉此,藉由連接至區塊鏈節點106 (亦即,與該區塊鏈節點通訊)而利用區塊鏈150。出於繪示之目的而展示二方103及其各別裝備102:第一方103a及其各別電腦裝備102a,以及第二方103b及其各別電腦裝備102b。應理解,更多此類方103及其各別電腦裝備102可存在且參與系統100,但為方便起見而未繪示。各方103可為個人或組織。僅作為說明,第一方103a在本文中被稱作愛麗絲,且第二方103b被稱作鮑勃,但應瞭解,此不具限制性,且在本文中對愛麗絲或鮑勃之任何提及皆可分別用「第一方」及「第二方」替換。
各方103之電腦裝備102包含各別處理設備,該處理設備包含一或多個處理器,例如一或多個CPU、GPU、其他加速器處理器、特殊應用處理器及/或FPGA。各方103之電腦裝備102進一步包含記憶體,亦即,呈一或多個非暫時性電腦可讀媒體之形式的電腦可讀儲存器。此記憶體可包含一或多個記憶體單元,其使用一或多個記憶體媒體,例如,諸如硬碟之磁性媒體;諸如SSD、快閃記憶體或EEPROM之電子媒體;及/或諸如光碟機之光學媒體。各方103之電腦裝備102上的記憶體儲存軟體,該軟體包含經配置以在處理設備上運行之至少一個用戶端應用程式105的各別執行個體。應理解,可使用在各別電腦裝備102之處理設備上運行的軟體來執行本文中歸於給定方103之任何動作。各方103之電腦裝備102包含至少一個使用者終端機,例如桌上型或膝上型電腦、平板電腦、智慧型手機或諸如智慧型手錶之可穿戴式裝置。給定方103之電腦裝備102亦可包含一或多個其他網路連接資源,諸如經由使用者終端機存取之雲端運算資源。
用戶端應用程式105最初可在合適的一或多個電腦可讀儲存媒體上經提供至任何給定方103之電腦裝備102,例如自伺服器下載,或經提供於抽取式儲存裝置上,該抽取式儲存裝置諸如為抽取式SSD、快閃記憶體鑰匙、抽取式EEPROM、抽取式磁碟機、磁性軟碟或磁帶、諸如CD或DVD ROM之光碟,或抽取式光碟機等。
用戶端應用程式105包含至少一「錢包」功能。此具有二個主要功能性。此等功能性中之一者為使得各別方103能夠創建、授權(例如,簽章)及發送交易152至一或多個比特幣節點104,以接著在區塊鏈節點104之整個網路中傳播且藉此包括於區塊鏈150中。另一功能性為將其當前擁有之數位資產的金額報告給各別方。在基於輸出之系統中,此第二功能性包含核對散佈在整個區塊鏈150中屬於所討論的一方之各種交易152之輸出中所定義的金額。
應注意:雖然各種用戶端功能性可描述為整合至給定用戶端應用程式105中,但此未必為限制性的,且實情為,本文中所描述之任何用戶端功能性可替代地實施於二個或多於二個相異應用程式之套件中,例如經由API介接,或一個應用程式為另一應用程式之外掛程式。更一般而言,用戶端功能性可實施於應用層或諸如作業系統之下部層或此等層之任何組合處。下文將關於用戶端應用程式105進行描述,但應瞭解,此並非限制性的。
各電腦裝備102上之用戶端應用程式或軟體105的執行個體操作性地耦接至網路106之區塊鏈節點104中之至少一者。此使得用戶端105之錢包功能能夠將交易152發送至網路106。用戶端105亦能夠聯繫區塊鏈節點104以便查詢區塊鏈150以詢問各別方103為接收者之任何交易(或實際上檢測區塊鏈150中之其他方的交易,此係因為在實施例中,區塊鏈150為公共設施,其部分地經由其公共可見性而在交易中提供信任)。各電腦裝備102上之錢包功能經組配以根據交易協定來制訂及發送交易152。如上文所闡述,各區塊鏈節點104運行軟體,該軟體經組配以根據區塊鏈節點協定來驗核交易152,且轉遞交易152以便在整個區塊鏈網路106中傳播該等交易。交易協定及節點協定彼此對應,且給定交易協定與給定節點協定相配,其一起實施給定交易模型。相同交易協定用於區塊鏈150中之所有交易152。相同節點協定由網路106中之所有節點104使用。
當給定方103,比如愛麗絲,希望發送新交易152j以包括於區塊鏈150中時,其接著根據相關交易協定來制訂新交易(使用其用戶端應用程式105中之錢包功能)。其接著將交易152自用戶端應用程式105發送至與其連接的一或多個區塊鏈節點104。例如,此可為最佳地連接至愛麗絲之電腦102的區塊鏈節點104。當任何給定區塊鏈節點104接收新交易152j時,該區塊鏈節點根據區塊鏈節點協定及其各別角色來處置該新交易。此包含首先檢查新接收交易152j是否符合「有效」的某一條件,稍後將更詳細地論述該條件之實例。在一些交易協定中,可藉由包括於交易152中之指令碼基於各交易來組配驗核條件。替代地,該條件可簡單地為節點協定之內置特徵,或可由指令碼及節點協定之組合來定義。
若新接收交易152j通過被視為有效的測試(亦即,若其「經驗核」),則接收交易152j之任何區塊鏈節點104將添加新的經驗核交易152至在彼區塊鏈節點104處維護的交易之有序集合154。另外,接收交易152j之任何區塊鏈節點104將經驗核交易152向前傳播至網路106中之一或多個其他區塊鏈節點104。由於各區塊鏈節點104應用相同協定,因此接著假設交易152j有效,此意謂該交易將很快在整個網路106中傳播。
一旦被接納至在給定區塊鏈節點104處維護之交易的有序集合154,彼區塊鏈節點104便將開始競爭解決其關於包括新交易152之交易的各別有序集合154之最新版本的工作量證明難題(前已述及,其他區塊鏈節點104可能正試圖基於交易之不同有序集合154來解決難題,但不論誰率先完成皆將定義包括於最新區塊151中之交易的有序集合。最終,區塊鏈節點104將解決包括愛麗絲之交易152j的有序集合154之一部分的難題)。一旦已針對包括新交易152j之有序集合154完成工作量證明,則其不可變地成為區塊鏈150中之區塊151中之一者的部分。各交易152包含指回至較早交易之指標,因此亦不變地記錄交易之次序。
不同區塊鏈節點104可首先接收給定交易之不同執行個體,且因此在新區塊151中公佈一個執行個體之前對於哪個執行個體「有效」具有衝突的觀點,此時,所有區塊鏈節點104同意所公佈執行個體為唯一有效執行個體。若區塊鏈節點104將一個執行個體接受為有效的且接著發現第二執行個體已記錄於區塊鏈150中,則彼區塊鏈節點104必須接受此執行個體且將捨棄(亦即,視為無效)其最初接受之執行個體(亦即,尚未在區塊151中公佈之執行個體)。
作為基於帳戶之交易模型之部分,由一些區塊鏈網路操作之交易協定之替代類型可被稱作「基於帳戶」之協定。在基於帳戶之狀況下,各交易皆不會藉由返回參考過去交易序列中之先前交易之UTXO來定義待轉移的金額,而是參考絕對帳戶餘額。所有帳戶之當前狀態由彼網路之節點與區塊鏈分離地儲存且不斷更新。在此系統中,使用帳戶(亦被稱作「頭寸」)之運行交易計數來對交易進行排序。此值由發送者進行簽章,作為其密碼編譯簽章之部分,且作為交易參考計算之部分而經雜湊。此外,任擇資料欄位亦可對交易進行簽章。舉例而言,若前一交易ID包括於資料欄位中,則此資料欄位可指回至前一交易。
基於UTXO 之模型
圖2繪示例示性交易協定。此為基於UTXO之協定的實例。交易152 (簡稱為「Tx」)為區塊鏈150之基本資料結構(各區塊151包含一或多個交易152)。下文將參考基於輸出或基於「UTXO」之協定來描述。然而,此並不限於所有可能實施例。應注意,雖然參考比特幣描述基於UTXO之例示性協定,但其可同樣地實施於其他例示性區塊鏈網路上。
在基於UTXO之模型中,各交易(「Tx」) 152包含資料結構,該資料結構包含一或多個輸入202及一或多個輸出203。各輸出203可包含未支出交易輸出(UTXO),其可用作另一新交易之輸入202的來源(若尚未兌換該UTXO)。UTXO包括指定數位資產之金額的值。此表示分散式分類帳上之符記的設定數目。UTXO亦可含有其所來自的交易之交易ID以及其他資訊。交易資料結構亦可包含標頭201,該標頭可包含輸入欄位202及輸出欄位203之大小的指示符。標頭201亦可包括交易之ID。在實施例中,交易ID為交易資料(不包括交易ID自身)之雜湊,且儲存於提交至節點104之原始交易152的標頭201中。
假設愛麗絲103a希望創建將所討論的一定金額之數位資產轉移至鮑勃103b的交易152j。在圖2中,愛麗絲之新交易152j經標示為「
Tx
1 」。該交易獲取在序列中之先前交易152i之輸出203中鎖定至愛麗絲的一定金額之數位資產且將此數位資產中之至少一些轉移至鮑勃。先前交易152i在圖2中經標示為「
Tx
0 」。
Tx
0 及
Tx
1 僅為任意標籤。其未必意謂
Tx
0 為區塊鏈151中之第一交易,亦不意謂
Tx
1 為池154中緊接著的下一交易。
Tx
1 可指回至仍具有鎖定至愛麗絲之未支出輸出203的任何先前(亦即,前期)交易。
在愛麗絲創建其新交易
Tx
1 時,或至少至其將新交易發送至網路106時,先前交易
Tx
0 可能已經驗核且包括於區塊鏈150之區塊151中。該交易彼時可能已包括於區塊151中之一者中,或其可能仍在有序集合154中等待,在此狀況下,該交易將很快包括於新區塊151中。替代地,可創建
Tx
0 及
Tx
1 且將其一起發送至網路106,或若節點協定允許緩衝「孤立」交易,則
Tx
0 甚至可在
Tx
1 之後發送。如本文中所使用之「先前」及「後續」二個詞在交易序列之上下文中係指如由交易中指定之交易指標所定義的序列中之交易的次序(哪一交易指回至哪一其他交易,等等)。該等詞同樣地可用「前置」及「後置」或「前期」及「後期」、「親代」及「子代」或其類似者來替換。其未必暗示該等交易經創建、發送至網路106或到達任何給定區塊鏈節點104之次序。然而,直至且除非親代交易經驗核,否則將不驗核指向先前交易(前期交易或「親代」)之後續交易(後期交易或「子代」)。在親代之前到達區塊鏈節點104之子代被視為孤立的。取決於節點協定及/或節點行為,子代可被捨棄或緩衝一段時間以等待親代。
先前交易
Tx
0 之一或多個輸出203中之一者包含特定UTXO,其在此處標示為
UTXO
0 。各UTXO包含指定由UTXO表示之一定金額之數位資產的值;以及鎖定指令碼,其定義後續交易之輸入202中之解除鎖定指令碼必須符合的條件,以便驗核後續交易且因此成功地兌換UTXO。通常,鎖定指令碼將金額鎖定至特定方(包括該金額之交易的受益人)。亦即,鎖定指令碼定義解除鎖定條件,通常包含如下條件:後續交易之輸入中的解除鎖定指令碼包含先前交易經鎖定至的一方之密碼編譯簽章。
鎖定指令碼(亦稱為scriptPubKey)為以節點協定所辨識之網域特定語言編寫的一段程式碼。此語言之特定實例被稱為「Script」(S為大寫),其由區塊鏈網路使用。鎖定指令碼指定需要何資訊來支出交易輸出203,例如愛麗絲之簽章的要求。解除鎖定指令碼出現在交易之輸出中。解除鎖定指令碼(亦稱為scriptSig)為用網域特定語言編寫的一段程式碼,其提供滿足鎖定指令碼準則所需的資訊。舉例而言,其可含有鮑勃之簽章。解除鎖定指令碼出現在交易之輸入202中。
因此,在所繪示之實例中,
Tx
0 之輸出203中的
UTXO
0 包含鎖定指令碼[Checksig
P
A ],該鎖定指令碼需要愛麗絲之簽章Sig
P
A 以便兌換
UTXO
0 (嚴格而言,以便使嘗試兌換
UTXO
0 之後續交易有效)。[Checksig
P
A ]含有來自愛麗絲之公開-私密金鑰對之公開金鑰
P
A 的表示(亦即,雜湊)。
Tx
1 之輸入202包含指回至
Tx
1 之指標(例如,藉助於其交易ID
TxID
0 ,其在實施例中為整個交易
Tx
0 之雜湊)。
Tx
1 之輸入202包含識別
Tx
0 內之
UTXO
0 的索引,以在
Tx
0 之任何其他可能輸出中識別
UTXO
0 。
Tx
1 之輸入202進一步包含解除鎖定指令碼<Sig
P
A >,其包含愛麗絲之密碼編譯簽章,該密碼編譯簽章係藉由愛麗絲將其來自金鑰對之私密金鑰應用於資料(在密碼學中有時被稱為「訊息」)之預定義部分而創建。需要由愛麗絲進行簽章以提供有效簽章之資料(或「訊息」)可由鎖定指令碼或由節點協定或由此等之組合來定義。 當新交易
Tx
1 到達區塊鏈節點104時,該節點應用節點協定。此包含一起運行鎖定指令碼及解除鎖定指令碼以檢查解除鎖定指令碼是否符合鎖定指令碼中所定義之條件(其中此條件可包含一或多個準則)。在實施例中,此涉及串連二個指令碼: <Sig
P
A > <
P
A > || [Checksig
P
A ]
其中「||」表示串連,且「<…>」意謂將資料置放於堆疊上,且「[…]」為鎖定指令碼(在此實例中為基於堆疊之語言)所包含之函式。較佳地,「<>」字元指示尖括弧內之內容經PUSHDATA編碼。PUSHDATA編碼係關於使用OP_PUSHDATA運算碼以將資料添加至堆疊。等效地,指令碼可使用共同堆疊一個接一個地運行,而非串連指令碼。無論如何,當一起運行時,指令碼使用如包括於
Tx
0 之輸出中之鎖定指令碼中的愛麗絲之公開金鑰
P
A ,以鑑認
Tx
1 之輸入中的解除鎖定指令碼含有對資料之預期部分進行簽章的愛麗絲之簽章。亦需要包括資料自身(「訊息」)之預期部分,以便執行此鑑認。在實施例中,經簽章資料包含整個
Tx
1 (因此不需要包括單獨元素來以明文指定資料之經簽章部分,此係因為其已固有地存在)。
藉由公開-私密密碼學進行鑑認之細節將為熟習此項技術者所熟悉的。基本上,若愛麗絲已使用其私密金鑰對訊息進行簽章,則在以明文給出愛麗絲之公開金鑰及訊息的情況下,諸如節點104之另一實體能夠鑑認該訊息必須已由愛麗絲進行簽章。簽章通常包含對訊息進行雜湊、對雜湊進行簽章及將此標誌至訊息上作為簽章,因此使得公開金鑰之任何持有者能夠鑑認該簽章。因此,應注意,本文中對特定資料片段或交易部分或其類似者之簽章的任何提及在實施例中可意謂對彼資料片段或交易部分的雜湊進行簽章。
若
Tx
1 中之解除鎖定指令碼符合
Tx
0 之鎖定指令碼中所指定的一或多個條件(因此在所展示之實例中,若愛麗絲之簽章經提供於
Tx
1 中且經鑑認),則區塊鏈節點104將
Tx
1 視為有效的。此意謂區塊鏈節點104將添加
Tx
1 至交易之有序集合154。區塊鏈節點104將亦轉遞交易
Tx
1 至網路106中之一或多個其他區塊鏈節點104,使得該交易將在整個網路106中傳播。一旦
Tx
1 已經驗核且包括於區塊鏈150中,則此將來自
Tx
0 之
UTXO
0 定義為已支出。應注意,
Tx
1 可僅在其支出未支出交易輸出203之情況下為有效的。若其嘗試支出已由另一交易152支出之輸出,則
Tx
1 將為無效的,即使符合所有其他條件亦如此。因此,區塊鏈節點104亦需要檢查是否已支出先前交易
Tx
0 中所參考之UTXO (亦即,其是否已形成另一有效交易之有效輸入)。此為區塊鏈150將所定義次序強加於交易152上很重要的一個原因。實務上,給定區塊鏈節點104可維護單獨資料庫,其標記已支出哪些交易152中之哪些UTXO 203,但最終定義是否已支出UTXO的係其是否已形成區塊鏈150中之另一有效交易的有效輸入。
若給定交易152之所有輸出203中所指定的總金額大於由所有其輸入202所指向之總金額,則此為大多數交易模型中無效之另一基礎。因此,此類交易將不被傳播,亦不包括於區塊151中。
應注意,在基於UTXO之交易模型中,需要將給定UTXO整個支出。其不能「留下」在UTXO中定義為支出之一小部分金額,而另一小部分已支出。然而,來自UTXO之金額可在下一交易之多個輸出之間劃分。例如,
Tx
0 中之
UTXO
0 中所定義的金額可在
Tx
1 中之多個UTXO之間劃分。因此,若愛麗絲不想將
UTXO
0 中所定義之所有金額皆給予鮑勃,則其可使用剩餘金額在
Tx
1 之第二輸出中給自身找零,或支付給另一方。
實務上,愛麗絲通常亦將需要包括比特幣節點之費用,該比特幣節點公佈愛麗絲之交易104。若愛麗絲不包括此費用,則區塊鏈節點104可拒絕
Tx
0 ,且因此儘管技術上有效,但
Tx
0 可能不會被傳播且包括於區塊鏈150中(若區塊鏈節點104不想接受交易152,則節點協定不會強迫區塊鏈節點接受)。在一些協定中,交易費用不需要其自身的單獨輸出203 (亦即,不需要單獨UTXO)。實情為,由給定交易152之輸入202所指向的總金額與給定交易之輸出203中所指定的總金額之間的任何差額被自動地給予公佈該交易之區塊鏈節點104。例如,假設指向
UTXO
0 之指標為
Tx
1 之唯一輸入,且
Tx
1 僅具有一個輸出
UTXO
1 。若
UTXO
0 中所指定之數位資產的金額大於
UTXO
1 中所指定之金額,則差額可由公佈含有
UTXO
1 之區塊的節點104指派。然而,替代地或另外,未必排除可在交易152之其自身的UTXO 203中之一者中明確地指定交易費用。
愛麗絲及鮑勃之數位資產由在區塊鏈150中任何位置處之任何交易152中鎖定至愛麗絲及鮑勃的UTXO組成。因此,給定方103之資產通常遍及整個區塊鏈150中之各種交易152的UTXO而散佈。區塊鏈150中之任何位置處皆未儲存定義給定方103之總餘額的一個數字。用戶端應用程式105中之錢包功能的作用為將鎖定至各別方且尚未在另一後續交易中支出之所有各種UTXO的值一起核對。其可藉由查詢如儲存於比特幣節點104中之任一者處的區塊鏈150之複本來實現此操作。
應注意,常常示意性地表示指令碼(亦即,不使用確切語言)。舉例而言,吾人可使用操作碼(運算碼)來表示特定函式。「OP_…」係指Script語言之特定運算碼。作為實例,OP_RETURN為Script語言之運算碼,當在鎖定指令碼之開頭加上OP_FALSE時,該運算碼創建交易之不可支出輸出,該輸出可儲存交易內之資料,且藉此將資料不可變地記錄於區塊鏈150中。例如,資料可包含需要儲存於區塊鏈中之文件。
通常,交易之輸入含有對應於公開金鑰
P
A 之數位簽章。在實施例中,此係基於使用橢圓曲線secp256k1之ECDSA。數位簽章對特定資料片段進行簽章。在一些實施例中,對於給定交易,簽章將對交易輸入之部分及交易輸出中之一些或全部進行簽章。數位簽章所簽章之輸出之特定部分取決於SIGHASH旗標。SIGHASH旗標通常為4位元組碼,其被包括在簽章之末尾,以選擇對哪些輸出進行簽章(且因此在簽章時固定)。
鎖定指令碼有時被稱為「scriptPubKey」,其係指其通常包含各別交易被鎖定至的一方之公開金鑰。解除鎖定指令碼有時被稱為「scriptSig」,其係指其通常供應對應簽章的事實。然而,更一般而言,在區塊鏈150之所有應用中,兌換UTXO之條件不一定包含鑑認簽章。更一般而言,指令碼處理語言可用於定義任何一或多個條件。因此,「鎖定指令碼」及「解除鎖定指令碼」二個更一般的詞可為較佳的。
如圖1中所展示,愛麗絲及鮑勃之電腦裝備102a、120b中之各者上的用戶端應用程式可分別包含額外通訊功能性。此額外功能性使得愛麗絲103a能夠與鮑勃103b建立單獨的旁側通道301 (在任一方或第三方之推動下)。旁側通道301使得能夠與區塊鏈網路分離地進行資料交換。此通訊有時被稱作「鏈外」通訊。舉例而言,此可用以在愛麗絲與鮑勃之間交換交易152,而無需(尚未)將交易註冊至區塊鏈網路106上或使其進入鏈150,直至多方中之一者選擇將其廣播至網路106。以此方式共用交易有時被稱作共用「交易範本」。交易範本可能缺乏形成完整交易所需之一或多個輸入及/或輸出。替代地或另外,旁側通道301可用以交換任何其他交易相關資料,諸如金鑰、協商的金額或條款、資料內容等。
可經由與區塊鏈網路106相同之封包交換網路101建立旁側通道301。替代地或另外,可經由諸如行動蜂巢式網路之不同網路或諸如區域無線網路之區域網路或甚至愛麗絲之裝置102a與鮑勃之裝置102b之間的直接有線或無線鏈路來建立旁側通道301。通常,在本文中任何位置處被提及之旁側通道301可包含經由一或多種網路連接技術或通訊媒體之任何一或多個鏈路,以用於「鏈外」(亦即,與區塊鏈網路106分離地)交換資料。在使用多於一個鏈路的情況下,鏈外鏈路之集束或集合作為整體可被稱作旁側通道301。因此,應注意,若據稱愛麗絲及鮑勃經由旁側通道301交換某些資訊或資料片段或其類似者,則此未必暗示必須經由完全相同的鏈路或甚至相同類型之網路來發送所有此等資料片段。
用戶端軟體
圖3A繪示用於實施本發明所揭露方案之實施例的用戶端應用程式105之例示性實施方案。用戶端應用程式105包含交易引擎351及使用者介面(UI)層352。交易引擎351經組配以根據上文所論述且稍後將進一步詳細論述之方案來實施用戶端105之底層的交易相關功能性,諸如制定交易152、經由旁側通道301接收及/或發送交易及/或其他資料,及/或將交易發送至一或多個節點104以經由區塊鏈網路106進行傳播。根據本文中所揭露之實施例,各用戶端105之交易引擎351包含函式353。
UI層352經組配以經由各別使用者之電腦裝備102之使用者輸入/輸出(I/O)構件來呈現使用者介面,包括經由裝備102之使用者輸出構件將資訊輸出至各別使用者103,及經由裝備102之使用者輸入構件自各別使用者103接收回輸入。舉例而言,使用者輸出構件可包含用於提供視覺輸出之一或多個顯示螢幕(觸控式或非觸控式螢幕)、用於提供音訊輸出之一或多個揚聲器,及/或用於提供觸覺輸出之一或多個觸覺輸出裝置等。使用者輸入構件可包含例如以下各者之輸入陣列:一或多個觸控式螢幕(與用於輸出構件之彼/彼等觸控式螢幕相同或不同);一或多個基於游標之裝置,諸如滑鼠、軌跡墊或軌跡球;一或多個麥克風及語音或話音辨識演算法,其用於接收語音或聲音輸入;一或多個基於示意動作之輸入裝置,其用於接收呈手勢或身體示意動作之形式的輸入;或一或多個機械按鈕、開關或操縱桿等。
應注意:雖然本文中之各種功能性可描述為整合至同一用戶端應用程式105中,但此未必為限制性的,且實情為,該等功能性可實施於二個或多於二個相異應用程式之套件中,例如一個應用程式為另一應用程式之外掛程式或經由應用程式設計介面(API)介接。舉例而言,交易引擎351之功能性可實施於與UI層352分離之應用程式中,或諸如交易引擎351之給定模組之功能性可在多於一個應用程式之間進行劃分。亦不排除可在比如作業系統層處實施所描述功能性中之一些或全部。在本文中任何位置提及單個或給定應用程式105或其類似者的情況下,應瞭解,此僅作為實例,且更一般而言,所描述功能性可以任何形式之軟體實施。
圖3B提供使用者介面(UI) 360之實例的模型,該使用者介面可由愛麗絲之裝備102a上之用戶端應用程式105a的UI層352呈現。應瞭解,類似UI可由鮑勃之裝備102b或任何其他方之裝備上的用戶端105b呈現。
作為說明,圖3B自愛麗絲之視角展示UI 360。UI 360可包含經由使用者輸出構件呈現為相異UI元素之一或多個UI元素362、362、363。
舉例而言,UI元素可包含一或多個使用者可選擇元素362,其可諸如不同螢幕上按鈕或選單中之不同選項或其類似者。使用者輸入構件經配置以使得使用者103 (在此狀況下為愛麗絲103a)能夠選擇或以其他方式操作選項中之一者,諸如藉由點選或觸碰螢幕上的UI元素,或說出所要選項的名稱(注意:如本文中所使用之「手動」一詞僅意謂與自動相對,且未必限於使用手)。
替代地或另外,UI元素可包含一或多個資料鍵入欄位362,使用者可經由該一或多個資料鍵入欄位。此等資料鍵入欄位經由使用者輸出構件例如在螢幕上呈現,且資料可經由例如鍵盤或觸控式螢幕之使用者輸入構件鍵入至欄位中。替代地,可例如基於語音辨識而口頭接收資料。
替代地或另外,UI元素可包含一或多個資訊元素363,其經輸出以將資訊輸出至使用者。例如,可在螢幕上或有聲地呈現此/此等元素。
應瞭解,呈現各種UI元素、選擇選項以及鍵入資料之特定方式並不重要。稍後將更詳細地論述此等UI元素之功能性。亦應瞭解,圖3中所展示之UI 360僅為示意性模型,且實務上,其可包含出於簡明起見而未繪示之一或多個其他UI元素。
節點軟體
圖4繪示在基於UTXO或基於輸出之模型之實例中的在網路106之各區塊鏈節點104上運行的節點軟體450之實例。應注意,另一實體可運行節點軟體450,而不被分類為網路106上之節點104,亦即,不執行節點104所需的動作。節點軟體450可含有但不限於協定引擎451、指令碼引擎452、堆疊453、應用程式層級決策引擎454,及一或多個區塊鏈相關功能模組455之集合。各節點104可運行節點軟體,該節點軟體含有但不限於所有以下三者:共識模組455C (例如,工作量證明)、傳播模組455P及儲存模組455S (例如,資料庫)。協定引擎351通常經組配以辨識交易152之不同欄位,且根據節點協定處理該等欄位。當接收到具有指向另一先前交易152i (
)之輸出(例如,UTXO)之輸入的交易152j (
)時,協定引擎451接著識別
中之解除鎖定指令碼且將其傳遞至指令碼引擎452。協定引擎451亦基於
之輸入中的指標而識別及擷取
。可在區塊鏈150上公佈
,在此狀況下,協定引擎可自儲存於節點104處之區塊鏈150的區塊151之複本擷取
。替代地,
可能尚未在區塊鏈150上公佈。在彼狀況下,協定引擎451可自藉由節點104維護之未公佈交易的有序集合154擷取
。無論如何,指令碼引擎451皆會識別
之參考輸出中的鎖定指令碼且將此傳遞至指令碼引擎452。
指令碼引擎452因此具有
之鎖定指令碼及來自
之對應輸入的解除鎖定指令碼。舉例而言,圖2中繪示標示為
及
之交易,但此可適用於任一對交易。指令碼引擎452如先前所論述一起運行二個指令碼,其將包括根據正使用之基於堆疊之指令碼處理語言(例如,Script)而將資料置放至堆疊453上及自該堆疊擷取資料。
藉由一起運行該等指令碼,指令碼引擎452判定解除鎖定指令碼是否符合鎖定指令碼中所定義之一或多個準則,亦即,其是否「解除鎖定」包括鎖定指令碼之輸出?指令碼引擎452將此判定之結果傳回至協定引擎451。若指令碼引擎452判定解除鎖定指令碼符合對應鎖定指令碼中所指定之一或多個準則,則其傳回結果「真」。否則,其傳回結果「假」。
在基於輸出之模型中,來自指令碼引擎452之結果「真」為交易有效條件中之一者。通常,亦存在藉由協定引擎451評估的亦必須符合之一或多個其他協定層級條件;諸如
之輸出中指定之數位資產的總金額不超過由其輸入指向的總金額,及
之所指向輸出尚未由另一有效交易支出。協定引擎451評估來自指令碼引擎452之結果連同一或多個協定層級條件,且其僅在該結果及該等條件皆為真之情況下驗核交易
。協定引擎451將交易是否有效的指示輸出至應用程式層級決策引擎454。僅在確實驗核了
之條件下,決策引擎454才可選擇控制共識模組455C及傳播模組455P二者以執行其關於
之各別區塊鏈相關功能。此包含共識模組455C將
添加至節點之交易的各別有序集合154以用於併入區塊151中,及傳播模組455P將
轉遞至網路106中之另一區塊鏈節點104。任擇地,在實施例中,應用程式層級決策引擎454可在觸發此等功能中之任一者或二者之前應用一或多個額外條件。例如,決策引擎可僅在交易有效且留下足夠交易費用之條件下選擇公佈交易。
亦應注意,本文中之「真」及「假」二個詞未必限於傳回以僅單個二進位數字(位元)之形式表示的結果,但當然此為一個可能的實施方案。更一般而言,「真」可指指示成功或肯定結果之任何狀態,且「假」可指指示不成功或非肯定結果之任何狀態。舉例而言,在基於帳戶之模型中,結果「真」可由簽章之隱式協定層級驗核及智慧型合約之額外肯定輸出之組合指示(若二個個別結果為真,則總體結果被視為發信真)。
一旦給定本文中之揭露內容,所揭露技術之其他變體或使用狀況對於熟習此項技術者可變得顯而易見。本揭露內容之範圍不受所描述實施例限制而僅受隨附申請專利範圍限制。
舉例而言,上文的一些實施例已關於比特幣網路106、比特幣區塊鏈150及比特幣節點104進行了描述。然而,應瞭解,比特幣區塊鏈為區塊鏈150之一個特定實例,且以上描述通常可適用於任何區塊鏈。亦即,本發明絕不限於比特幣區塊鏈。更一般而言,上文對比特幣網路106、比特幣區塊鏈150及比特幣節點104之任何提及皆可分別用對區塊鏈網路106、區塊鏈150及區塊鏈節點104之提及來替換。區塊鏈、區塊鏈網路及/或區塊鏈節點可共用如上文所描述之比特幣區塊鏈150、比特幣網路106及比特幣節點104之所描述特性中之一些或全部。
在本發明之較佳實施例中,區塊鏈網路106為比特幣網路,且比特幣節點104執行創建、公佈、傳播及儲存區塊鏈150之區塊151的所描述功能中之至少全部。不排除可存在僅執行此等功能中之一者或一些而非全部的其他網路實體(或網路元件)。亦即,網路實體可執行傳播及/或儲存區塊而不創建及公佈區塊之功能(前已述及,此等實體不被視為較佳比特幣網路106之節點)。
在本發明之非較佳實施例中,區塊鏈網路106可能並非比特幣網路。在此等實施例中,不排除節點可執行創建、公佈、傳播及儲存區塊鏈150之區塊151的功能中之至少一者或一些而非全部。舉例而言,在彼等其他區塊鏈網路上,「節點」可用於指網路實體,該網路實體經組配以創建及公佈區塊151,而非儲存及/或傳播彼等區塊151至其他節點。
甚至更一般而言,對上文「比特幣節點」 104一詞之任何提及可用「網路實體」或「網路元件」一詞來替換,其中此實體/元件經組配以執行創建、公佈、傳播及儲存區塊之角色中之一些或全部。此網路實體/元件之功能可以上文參考區塊鏈節點104所描述之相同方式實施於硬體中。
有序且僅可附加之資料儲存技術
近年來,區塊鏈在大容量、面向資料之應用程式中的使用已顯著增加。隨著此增加,對用於結構化、編碼及格式化公佈至區塊鏈之資料酬載之穩固的第2層協定之需求亦相應地增加。此處,第2層意謂在一或多個現有區塊鏈系統之上建置的二級協定、架構、資料結構等。本文中所描述的態樣將被視為第2層協定。第1層將指比特幣、比特幣SV或其他基礎區塊鏈技術。
涉及大量資料之基於區塊鏈之應用程式通常需要一種資料方案或結構化機制,以允許許多資料載體交易彼此連結。此尤其與許多事件及/或資料可能需要以線性化序列彼此連結之應用程式(例如,在供應鏈中)相關。
可藉由唯一參考來輔助對事件及/或有序資料項目之序列的維護及追蹤,由此,一個資料載體交易將明確地參考另一交易,以確保區塊鏈之觀察者可將二個交易彼此相關。
圖5A係關於本揭露內容之第一態樣,且繪示有序且僅可附加之資料儲存系統之資料結構及範例的概述。此亦可描述為資料記錄系統。系統500包含儲存數個日誌條目506a至506d之鏈外(亦即,不在區塊鏈上)資料儲存系統504。此等日誌條目經由使用區塊鏈交易508a至508d在鏈上反映(502)。鏈外資料儲存系統較佳為資料庫。熟習此項技術者應瞭解,可替代地使用任何資料儲存系統,包括硬碟機上之儲存器。
圖5A之系統500較佳用作用於記錄事件之事件串流系統之部分。作為實例,展示將各事件映射至一交易。任擇地,僅將僅可附加之日誌中的事件之子集映射至區塊鏈交易。作為實例,出於說明之目的,貫穿本說明書使用事件串流。特定而言,圖11至圖13提供在事件串流系統內操作之不同伺服器及服務的特定實例,該事件串流系統將接收用戶端資料,建構交易且將其提交至區塊鏈。熟習此項技術者應瞭解,本文中描述之所提議實施例可與任何用戶端資料項目一起使用,而不僅僅與相關聯於事件串流之彼等資料項目一起使用。熟習此項技術者應瞭解,依序且僅可附加之基於區塊鏈之記錄(或資料儲存)方法及系統亦可用於其他目的。
將鏈外資料儲存器504中之各事件506a至506d映射至一區塊鏈交易508a至508d,且使用「承諾鏈」來排序及連結區塊鏈交易之序列。承諾鏈可被視為包含資訊之交易之集合,使得該等交易可彼此相關聯及/或可遍歷。如本文中所描述,交易集合經建構為「鏈」,此係因為各交易包含對前一交易之參考及對下一交易之參考(或包含基於該等參考之資料)。較佳地,各交易之酬載512a至512d包含或係基於對前一交易及下一交易之參考。
各交易較佳包含用以支付待挖掘至區塊鏈上之區塊中之交易的「資金輸入」輸入510a至510d。各交易較佳包含資料酬載512a至512d。資料酬載保存於交易之不可支出輸出中。較佳地,該輸出前置有OP_RETURN運算碼。此為指令碼運算碼,該指令碼運算碼可用以將任意資料寫入區塊鏈上以及將交易輸出標記為無效(亦即,不可支出),且藉此將資料不可變地記錄於區塊鏈上。任擇地,資料酬載前置有OP_0及OP_RETURN指令碼運算碼。
參看圖5B,將交易添加至區塊鏈之例示性方法520,其中交易為交易集合之部分且特定而言,該集合為承諾鏈。
在第一步驟中,接收(522)將資料添加至區塊鏈之請求。特定而言,對於此實例,該請求觸發將交易添加至如本文中所描述之承諾鏈,若承諾鏈尚未被創建,則任擇地,此亦創建承諾鏈。較佳地,該請求來自希望將資料之表示儲存於區塊鏈上且更佳地,將用戶端資料之雜湊儲存於區塊鏈上的用戶端。替代地,該請求來自希望鏈外建立事件串流之用戶端,藉此觸發呈承諾鏈形式之事件串流的鏈上表示。
接下來,獲得(524)對前一交易及下一交易之參考。此等參考,如下文在其各別標題「前一交易參考」及「下一交易參考」下所描述,係基於該等交易之分量。
在獲得參考後,基於該等參考產生(526)交易。該交易較佳包含狀態摘要,如下文在其各別標題「狀態摘要(S)」下所描述。任擇地,該交易亦基於自用戶端接收到之資料,如下文在其各別標題「資料摘要(H
D)」下所描述。
接著提交(528)交易以供包括至區塊鏈。
參看圖8A,展示較佳的例示性「一般狀況」交易,其包含資料摘要(H
D)及狀態摘要(S)(如下文在其各別標題下所論述)。較佳地,在如參看圖5B所描述之步驟526中產生的交易具有此形式。此一般狀況交易具有已知大小(且特定狀況亦係如此)。此係因為所有交易分量具有已知且恆定的大小。舉例而言,交易輸入經選擇為具有特定設計及大小,其具有已知且不變的scriptSig且因此具有不變的scriptSigLen。類似地,輸出包含具有已知大小之二個運算碼及具有已知且恆定之大小(在本實例中為32個位元組)的二個雜湊,與其所基於之資料無關。可根據下表概括此一般化交易設計之總大小。值得注意地,此為一般形式比特幣及/或比特幣中本聰願景(BSV)交易,且僅作為實例提供(一般交易佈局亦描述於此:https://wiki.bitcoinsv.io/index.php/Bitcoin_Transactions)。其他區塊鏈可具有不同形式。熟習此項技術者應瞭解,對於不同區塊鏈,其確切值及大小可不同,且亦可針對不同區塊鏈交易計算已知大小。
欄位 | 內容 | 大小 ( 位元組 ) |
版本 | -- | 4 |
In_Count | 1 | 1 |
TxIn | ||
輸出點 | -- | 36 |
scriptSigLen | 148 | 1 |
scriptSig | < > < > | 148 |
序列 | -- | 4 |
Out_Count | 1 | 1 |
TxOut | ||
值 | -- | 8 |
scriptPubKeyLen | 66 | 1 |
scriptPubKey | OP_0 OP_RETURN < > < > | 66 |
鎖定時間 | -- | 4 |
總計: | 274 |
熟習此項技術者應瞭解,此為較佳交易之表。若在不同例示性實施例中,資料摘要並不存在於輸出上,則scriptPubKey將替代地具有OP_0 OP_RETURN<
>之形式且具有34之大小。
在已知交易大小之情況下,可精確地計算資金輸入且可預先產生為其提供資金之UTXO。因此,經組配以為承諾鏈中之交易提供資金的資金服務可產生中本聰恰好足以支付待包括於區塊鏈中之交易之274個位元組的一組UTXO。
為了說明起見,其中另一區塊鏈為基於帳戶之區塊鏈,諸如以太坊,相同或類似資料亦可例如經由使用任擇的「資料」欄位儲存於交易上,該欄位允許任意資料與交易相關聯或附接至交易。更具體而言,以太坊交易上之「資料」欄位包含狀態摘要(S)且任擇地包含資料摘要(H
D)。
資料摘要 (H
D)
任擇地,各酬載512a至512d包含資料項目,該資料項目係基於如自用戶端接收且任擇地鏈外儲存之各相關聯事件506a至506d。較佳地,已自希望將事件之表示儲存於區塊鏈上的用戶端接收到事件資料,以供稍後驗證及/或證明事件存在。較佳地,基於相關聯事件之資料項目係基於與各事件相關聯之資料的雜湊。因此,資料項目亦可描述為資料摘要。較佳地,對資料摘要進行加鹽值。更佳地,對事件資料進行雜湊二次。雜湊二次有利地提供對雜湊函數之長度擴展特性的保護。甚至更佳地,對事件資料進行雜湊二次,接著基於經二次雜湊之事件資料以及鹽值產生原像。較佳地,對鹽值進行雜湊且更佳地,進行雜湊二次。接著對原像進行雜湊。仍更佳地,對該原像進行雜湊二次。因此,最佳地,資料摘要具有以下形式:
其中||為其前後成員之串連,且H
2為雙雜湊函數。
雜湊提供為本文中之單向函數的主要實例。熟習此項技術者應瞭解,亦可使用其他單向函數。
較佳地,在與資料摘要(H
D)相關之此實施例中且貫穿本說明書,所使用的雜湊函數為SHA-256密碼編譯雜湊函數。如貫穿本說明書所使用,「雜湊」較佳意謂雜湊至少一次,且更佳地,多於一次。雜湊多於一次可抵抗長度擴展攻擊。替代雜湊二次(或多於二次),使用不易受到長度擴展攻擊之不同雜湊函數或方法。舉例而言,SHA-3及/或HMAC (任擇地使用與金鑰相同的鹽值或不同的鹽值)提供此功能性。另一替代例將為產生具有葉項目{事件資料,鹽值}之默克爾樹,且資料摘要將為默克爾樹根。
對雜湊進行加鹽值意謂使用為任何任意資料之「鹽值」作為雜湊函數之輸入(連同經雜湊之資料)之部分。較佳地,該鹽值與雜湊函數之其他輸入串連。任擇地,該鹽值為隨機的。
較佳地,為經雜湊之各資料項目,亦即,各甚至在事件串流中,選擇不同鹽值。較佳地,儲存該鹽值以供稍後資料驗證使用。如下文在「狀態摘要(S)」標題下所論述,在產生狀態用戶端資料摘要(H
D')時較佳使用各資料項目之不同鹽值。對雜湊進行加鹽值可抵抗基於預先運算之「彩虹表」的攻擊,藉此為希望將潛在敏感資料儲存於區塊鏈上之用戶端提供增加之安全性。
資料摘要(H
D)可被視為用戶端資料(在主要實例中,已提交至事件串流)之項目的唯一指紋。藉由儲存資料摘要(相較於用戶端資料自身),使用此系統之用戶端能夠在區塊鏈上儲存具有已知一致大小(與用戶端資料之大小不相關)之存在證明,而無需展示用戶端資料之內容。
狀態摘要 (S)
如上文所提及,酬載512a至512d包含或係基於對與事件相關聯之系列中的前一交易及下一交易之參考。藉由提供至少基於如本文中結合區塊鏈之不可變性所描述之前一交易及下一交易的資料,形成連續親代-子代交易之間的安全、不可延展且不可分叉的連結。此處,「不可分叉」係指如下特性:對於給定交易,在集合中可能僅存在一個(或零個)下一交易及一個(或零個)前一交易。承諾鏈不可能具有由交易集合中之交易表示的多於一個可能的下一或前一交易及/或事件。
較佳地,酬載512包含基於前一交易之分量及下一交易之分量的狀態資料。較佳地,此等分量充當參考且被稱為參考。其中前一交易係指在時間上緊接在正產生之當前交易之前產生(且任擇地,提交)的交易,且下一交易係指在時間上緊接在正產生之當前交易之後產生及提交的交易。值得注意地,可能尚未產生下一交易,且下一交易之許多內容為未知的(此係因為不可能展望未來用戶端可能提交何內容以儲存於區塊鏈交易上)。任擇地,狀態資料亦係基於在區塊鏈上表示之用戶端資料。任擇地,狀態資料係基於被稱為如上文所描述之資料摘要(H
D)的用戶端資料之摘要。任擇地,狀態資料亦係基於關於事件之元資料及/或關於事件串流之元資料。
狀態資料結構
如本文中所論述,狀態資料係基於數個特徵。其中在本文中關於狀態資料使用「基於」,較佳地,此係指狀態資料基於所有的前一交易參考、下一交易參考及用戶端資料之雜湊。更佳地,狀態資料為摘要且替代地被稱為狀態摘要。甚至更佳地,狀態摘要為默克爾樹根,其中默克爾樹之葉係基於前一交易參考、下一交易參考及用戶端資料。
在較佳實施例中,默克爾樹係基於前一交易參考、下一交易參考及狀態用戶端資料摘要(H
D')。狀態用戶端資料摘要係基於資料摘要(H
D)且任擇地係基於與事件及/或事件串流相關聯之任何元資料。下文在標題「狀態用戶端資料摘要(H
D')」下更詳細地描述狀態用戶端資料摘要。 因此,狀態摘要(S)可根據以下公式描述(以前一交易參考、狀態用戶端資料摘要(H
D')及下一交易參考為例):
其中「默克爾化(Merklize)」函式自作為葉之資料元素之有序集合產生默克爾根,且其中
為基於元素之葉的有序集合。葉中之各者最初在Merklize函式中經雙雜湊。值得注意地,由於雜湊及默克爾樹之作用方式,其輸入集合之次序很重要,因此不論何時創建、重新創建或驗證默克爾樹,輸入之次序皆必須相同,使得針對相同輸入資料產生相同樹(及因此相同狀態摘要)。
任擇地,狀態摘要係基於版本號碼。若為叫用Merklize函式指定了版本號碼,如下文所闡述,則各葉節點係基於版本號碼。較佳地,各葉節點原像前置有版本號碼。替代地,各葉節點原像後置有版本號碼。較佳地,版本號碼與葉節點原像之確切次序並不重要,只要其在產生與稍後使用之間一致即可。有利地,版本號碼之使用允許狀態摘要系結至特定版本(此係因為不同版本號碼將不同地導致不同默克爾樹根,即便使用相同輸入資料亦如此)。較佳地,版本號碼改變之使用與現建構默克爾樹之規格的任何改變(例如,新的及/或不同的葉節點)相協調地使用。較佳地,各版本號碼皆與所產生的默克爾樹之唯一規格相關聯。
Merklize函式任擇地根據以下公式採用版本號碼(v)作為另一引數:
Merklize函式較佳如下:
:1. 若
,則: 1.1. 將默克爾樹
產生為:
1.2. 獲得樹
之根
。 1.3. 傳回
2. 否則: 2.1. 藉由將版本號碼前置來更新葉清單中之各葉: 2.1.1.
2.1.2.
2.1.3.
2.2. 使用經更新之葉集合產生默克爾樹
:
2.3. 獲得樹
之根
。 2.4. 傳回
函式GenMerkleTree較佳用以意謂用於在給定葉資料項目之集合的情況下產生默克爾樹的標準方法。較佳地,GenMerkleTree中之第一步驟為對葉集合(在本實例中為
)中之各項目進行雜湊且更佳地,對各項目進行雜湊二次。
參看圖6,展示具有葉節點前一(PREV) 602、H
D' 604及下一(NEXT) 606之例示性產生的默克爾樹600。默克爾樹根608為狀態摘要(S)且較佳為在交易上使用之值。此例示性默克爾樹建構為二元樹,其中各節點具有二個子代(除葉以外)。由於存在奇數個輸入資料項目(且因此存在奇數個葉),因此使最後一個未配對的葉節點加倍。熟習此項技術者應瞭解,嚴格遵守默克爾樹之此呈現形式並非必要的,且存在亦可起作用之其他形式。如上文所論述,輸入集合之各項目經雜湊二次(610),且各經雜湊二次之項目用作默克爾樹之葉。
作為默克爾樹結構之替代例,狀態摘要可藉由對原像進行雜湊來產生,其中原像係藉由串連狀態資料所基於之物件而建構。因此,在狀態摘要係基於前一交易參考、狀態用戶端資料摘要及下一交易參考之實例中,公式可具有以下形式:
任擇地,鹽值亦可併入至原像。舉例而言,鹽值可串連在原像之開頭或結尾處。
作為默克爾樹根之另一替代例,狀態摘要可藉由使用雜湊鏈來產生。雜湊鏈經建構以使得各中間雜湊結果前置有狀態摘要所基於之項目。舉例而言,在狀態摘要係基於前一交易參考、狀態用戶端資料摘要(H
D')及下一交易參考之情況下,公式可具有以下形式:
任擇地,將鹽值併入至雜湊鏈中。任擇地,藉由將鹽值前置於各中間原像來併入鹽值。
前一交易參考 (PREV)
如上文所論述,狀態摘要較佳係基於對前一交易之參考。較佳地,對承諾鏈中之前一交易的參考係基於所參考之該前一交易的狀態資料。更佳地,對前一交易之參考係在當前交易儲存於區塊鏈上時所參考之該前一交易的狀態資料。前一交易參考任擇地被稱為親代交易參考,且當前交易為其子代。
在不存在前一交易供參考(亦即,當前交易為承諾鏈中之第一交易)的情況下,前一交易參考可被視為空參考。較佳地,空參考為零字串。較佳地,若前一交易參考不為空,則零字串之大小與前一交易參考之大小相同。更佳地,字串為32位元組長。下表描述前一交易參考之較佳實施例。
選項 | 名稱 | 描述 |
前一狀態摘要 | 包括於前一Tx中之狀態摘要,此Tx為連結至前一Tx之子代 | |
[0x00; 32] | 空親代或前一 | 32位元組字串指示不存在親代或前一Tx |
任擇地或替代地,PREV原像為JSON結構及/或可使用JSON結構表示。JSON結構包含上文所提及的資料選項。有利地,JSON物件之使用提供以下能力:若將添加更多資料元素,則可容易地添加及參考該等資料元素。
下一交易參考 (NEXT)
如上文所論述,狀態摘要較佳係基於對下一交易之參考。較佳地,對承諾鏈中之下一交易的參考係基於下一交易之輸入。有利地,雖然下一交易之許多分量並未知曉(由於其在未來存在及由用戶端提交之資料)且因此該等未知分量不可用作參考,但用於為交易提供資金之一或多個輸入UTXO可經預先判定且在彼交易被提承至區塊鏈時將僅對該交易為唯一的。較佳地,輸入UTXO由輸出點參考。輸出點包含UTXO所屬之交易的交易id (被稱為TxID)及該參考交易上之輸出的索引(被稱為vout)。下一交易參考任擇地被稱為子代交易參考,且當前交易為親代。
雖然基於UTXO之區塊鏈(諸如,比特幣)始終用作主要的說明性實例,但熟習此項技術者應瞭解,本發明亦可適用於其他區塊鏈。舉例而言,在區塊鏈使用基於帳戶之模型(諸如,以太坊)的情況下,可基於發送者之帳戶位址及臨時亂數來參考交易。值得注意地,可在產生交易及/或將其提交至區塊鏈之前判定發送者帳戶位址及臨時亂數二者,且另外,發送者帳戶位址及臨時亂數對係唯一的。此等二個特性使得該對能夠充當未來參考,該未來參考類似於本文中所描述之基於UTXO之輸出點參考(O
NEXT)。
類似於前一交易參考,若不存在下一交易供參考(亦即,當前交易為承諾鏈中之最後交易),則下一交易參考可被視為空參考。較佳地,空參考為零字串。較佳地,若下一交易參考不為空,則零字串之大小與下一交易參考之大小(亦即,交易輸出點之大小)相同。更佳地,字串為32位元組長。下表描述下一交易參考之較佳實施例。
選項 | 名稱 | 描述 | |
下一輸出點 | 為子代Tx保留之UTXO的輸出點 | ||
下一輸出點TxID | 經保留輸出點之TxID | ||
下一輸出點索引 | 經保留輸出點之輸出索引 | ||
[0x00; 32] | 空子代 | 32位元組字串指示可能無子代Tx |
任擇地或替代地,NEXT原像為JSON結構及/或可表示為JSON結構。JSON結構包含上文所提及的資料選項。有利地,JSON物件之使用提供以下能力:若將添加更多資料元素,則可容易地添加及參考該等資料元素。
狀態用戶端資料摘要 (H
D ' )
如上文所論述,狀態摘要較佳基於用戶端資料,且更佳地,基於用戶端資料之雜湊。甚至更佳地,狀態摘要係基於與當前交易相關之事件及/或事件串流的元資料。
下表描述狀態用戶端資料摘要(H
D')所基於的較佳內容。
元素 | 名稱 | 描述 |
資料摘要 | 與此Tx相關聯之客戶資料 的資料摘要 | |
鹽值 | 用於對 進行遮罩之鹽值,其與標題「資料摘要」下所描述相同或類似 | |
元資料元素 | 與此Tx相關的任意數目個元資料元素。元素之數目將取決於所儲存之內容。 | |
協定版本號碼 | 版本號碼指示所使用之承諾鏈協定之版本。 |
較佳地,較佳使用相同加鹽值及雙雜湊方法與上文在標題「資料摘要(H
D)」下相同地定義及產生資料摘要H
D。
若存在數個元資料元素,則其經列舉為M
1、M
2等。
例示性元資料元素可包括以下各者中之任何一或多者: ●
whenRecorded-自用戶端接收到事件及/或將事件儲存於鏈外日誌中的時間, ●
appVersion-承諾鏈的版本號碼, ●
seed-在開始產生事件串流時使用之種子值, ●
delWriteIV-用於產生委派授權符記以供寫入至事件串流之初始值, ●
delWriteH0-用於驗核委派授權符記以供寫入至事件串流之最終雜湊值, ●
timeAC-事件串流被視為開放以供寫入之開始及/或結束時間, ●
delAuthIndex-用戶端用以提交事件之委派符記的索引, ●
TxIDcreate-承諾鏈中之第一交易的交易ID,及/或 ●
index-事件串流中之當前事件的索引(未必與承諾鏈中之索引相同,此係因為未必將所有事件皆記錄於承諾鏈上) ●
nextHashSalt-如用於下一事件中之鹽值之雜湊。較佳地,可針對承諾鏈中之下一事件預先產生鹽值,此鹽值經雜湊且用於產生狀態用戶端資料摘要默克爾樹
熟習此項技術者應瞭解,亦可使用其他元資料元素。
參看圖7,展示例示性默克爾樹700,其中根係狀態用戶端資料摘要(H
D') 604 (且較佳用於如上文參看圖6所描述之狀態資料默克爾樹600中)。
較佳地,葉節點706、708、710、712、714之集合經配置以使得資料(H
D)摘要及元資料葉節點與鹽值交錯。此交錯藉由使第三方強行使用默克爾樹之成本過高來增強默克爾樹中之資料的安全性。若第三方獲得針對承諾鏈的協定描述,且鑒於H
D(資料摘要)較佳可公開地儲存於交易上,則第三方可強行使用M
1、...、M
m之值,只要此等元資料值在許多狀況下可為可預測的或易於列舉的(例如,若元資料元素中之一者為時戳,則給定交易提交至區塊鏈之時間,此可為可猜測的,或元資料元素中之一者可為單調遞增索引,此可根據前一狀態猜測)。若第三方能夠強行使用此等值且正確地重建構值H
D' (亦即,樹之根),則其將成功確認其已知曉元資料值M
1、...、M
m。在一些狀況下,此等元資料可為敏感的,例如
whenRecorded或
writeAccessControl.
region特性在事件串流交易中用作元資料且可能對惡意第三方很重要。
較佳地,葉節點所基於之原像前置有協定版本號碼。
因此,可如下編寫創建例示性默克爾樹700之程序:
: 1. 產生
之
個複本 2. 將資料項目排序為
3. 產生
4. 傳回
值得注意地,此處使用與創建如上文所論述之狀態摘要相同的函式
。由於使用了相同Merklize函式,因此任擇地以類似方式對葉節點之原像進行雜湊二次。
類似於上文對默克爾樹產生之論述,默克爾樹之數個替代例係可能的,包括串連輸入及對結果進行雜湊以及產生雜湊鏈。
為了產生狀態用戶端資料摘要H
D',較佳使用協定版本號碼(相較於上文所論述之狀態摘要(S),其較佳提供
)。由於狀態摘要(S)取決於狀態用戶端資料摘要(H
D'),因此藉由使H
D'取決於協定版本號碼(
),S最終亦取決於
(即使未直接用於其產生)。此處,「取決於」意謂,若除在產生H
D'時使用的不同協定版本號碼以外,使用相同輸入,則S將不同。此藉此使得S能夠取決於協定版本號碼,而無需在產生二個默克爾樹時使用二次協定版本號碼。
參看圖9,展示二個不同的狀態用戶端資料默克爾樹900、902。第一狀態用戶端資料默克爾樹900包含默克爾樹根904 (其為如在狀態摘要608中所使用的狀態用戶端資料摘要),該默克爾樹根係基於數個葉節點及中間節點。第一默克爾樹係利用協定版本
v
0 產生。如上文所論述,所有葉節點之原像前置有協定版本號碼。第二默克爾樹經類似地建構,但利用新的唯一規格,前置有版本號碼
v
1 。第二默克爾樹亦包含新(相較於版本
v
0 )葉節點「新(NEW)」。因此,用以證明資料項目用於創建H
D' 904、906之任何默克爾證明亦將證明哪一協定版本用以產生含有資料酬載之承諾鏈交易。應注意,此將需要在產生及驗證此證明時知曉
v之值。
任擇地,使用JSON結構來表示如在產生用戶端狀態資料摘要(H
D')時使用的默克爾樹,及/或反之亦然。由於JSON結構及默克爾樹之階層性質,此係可能的。此處,JSON結構之各元素為對應默克爾樹之葉節點。各元素將具有可經雜湊之相關聯值,此經雜湊值為對應默克爾樹中之葉節點。在JSON元素具有子代元素(亦即,該值包含其他金鑰-值對)之情況下,彼JSON元素具有與其相關聯之另一默克爾樹。例示性替代JSON物件具有三個頂層元素: ● hashData-H
D,與此資料集相關聯之資料塊的雜湊 ● hashedNextSalt-待由下一鏈接資料集使用之原始鹽值的雜湊 ● metadata-特定於此資料集項目之資料,其可取決於使用狀況而採用不同形式。
各JSON元素係根據其路徑進行參考。例示性JSON可如下所示: { "hashedData": "w6uP8Tcg6K2QR905Rms8iXTlksL6OD1KOWBxTK7wxPI=", "metadata": { "appVersion": "v1.0.4.30", "esId": "eyJsIjoiZnJhbmtmdXJ0IiwibyI6IjAzNzQ3NjNmMTE5YzQ2OGQ5ODY1ZjQ1NGY5ODQxMDFiIiwicyI6IkVTIiwidiI6IjEifQ", "index": 42, "sequenceNumber": false, "delegatedAuthIndex": 0, "delegatedAuth": null, "tags": [ "foo", "bar" ], "whenReceived": "2022-02-13T13:23:52Z" }, "hashedNextSalt": "oYGilj+52yoDqdrpGYnBgPLn3FmSdaST2evGeogQMs4=" }
由於metadata為包含子代元素之JSON元素,因此metadata之子代元素用於產生另一從屬默克爾樹,該從屬默克爾樹之葉節點係基於metadata之子代元素(亦即,appVersion、esId等)。對於tags元素亦係如此,此係因為該元素亦具有從屬元素。
元素之路徑為點分隔之字串,其由經遍歷以到達該元素之節點之名稱(名稱亦描述為金鑰)建置。陣列內之元素由[]及其在陣列內自零開始之索引表示。因此,可看出,根據以下路徑參考數個元資料元素: ● hashedData-(如本文中所使用的H
D) ● metadata.index ● metadata.tags[1]
例示性實施例
參看圖8A,展示特定例示性交易800,其包含如上文所論述之資料摘要(H
D)及狀態資料(S)。該交易為儲存於區塊鏈上之交易鏈中的第n交易。該交易包含交易id TxIDn 802。該交易包含儲存於具有運算碼(如上文所論述)之交易輸出上的酬載804,使得該輸出不可支出且能夠儲存資料。較佳地,使用二個運算碼OP_0及OP_RETURN。由「資金輸入」輸入818為交易TxIDn提供資金,該輸入包含交易輸出點以識別為其提供資金之交易。
酬載804亦包含資料摘要H
Dn及狀態摘要(S) Sn 810。在本實施例中,狀態摘要(S)為默克爾樹根,其中默克爾樹係基於(如由「M」函式表示)所有的前一交易參考、用戶端資料及下一交易參考。
參看圖8B,展示承諾鏈820之三個例示性交易806a、802、808a。如同圖8A,交易TxIDn 802包含資金輸入818及資料酬載804a,其中資料酬載包含資料摘要(H
Dn)及狀態摘要(Sn) 810a,且狀態摘要為基於對前一交易806a之參考812a、狀態用戶端資料摘要816a及對下一交易808a之參考814a的樹之默克爾樹根。可看出,狀態用戶端資料摘要816a為基於資料摘要(
H
Dn )、鹽值(
SALT)、承諾鏈中之第一交易的TxID (
TxID 創建 ) (此為事件、事件串流及/或承諾鏈之例示性元資料)及如由「…」表示之其他元資料的默克爾樹之默克爾樹根。
對前一交易之參考812a為前一交易806a之狀態摘要(S)。對下一交易之參考814a為下一交易808a之資金輸入的輸出點。
參看圖8C,展示承諾鏈830之第一交易822及第二交易808b。第一及第二交易包含資金輸入818及酬載804b。
第一交易之酬載包含皆索引為「0」之資料摘要(H
D)及狀態摘要(S) 810b,此係因為該等摘要為承諾鏈之第一(或第零)資料摘要及狀態摘要。狀態摘要為默克爾樹根,其中默克爾樹係基於前一交易參考、狀態用戶端資料摘要816b及下一交易參考814b。由於此交易為第一交易,因此前一交易參考為空參考且包含32個位元組之零。如同前一實例,下一交易參考係基於為承諾鏈中之下一交易提供資金的輸出點。狀態用戶端資料摘要亦為基於默克爾樹之默克爾樹根,該默克爾樹包含資料摘要(
H
Dn )、鹽值(
SALT)、應用程式版本元資料(
appVersion)以及其他元資料(…)。
參看圖8D,展示承諾鏈832之例示性的最後交易842及倒數第二交易806b。二個交易包含資金輸入818及酬載804c。
最後交易834之酬載804c包含資料摘要(H
D)及狀態摘要(S) 810c。狀態摘要為默克爾樹根,其中默克爾樹係基於前一交易參考812b、狀態用戶端資料摘要816c及下一交易參考。由於此交易為最後交易,因此下一交易參考為空參考且包含32個位元組之零。如同圖8B之實例,前一交易參考為前一交易806b之狀態摘要。狀態用戶端資料摘要亦為基於默克爾樹之默克爾樹根,該默克爾樹包含資料摘要(
H
Dn )、鹽值(
SALT)、應用程式版本元資料(
appVersion)以及其他元資料(…)。
參看圖8E,展示經由使用如本文中所描述之承諾鏈實施例在區塊鏈上接收及儲存用戶端資料之表示的例示性方法840。此處之例示性方法為如參看圖5B所描述之方法520的特定實例。熟習此項技術者應瞭解,嚴格遵守之次序並非必要的。舉例而言,可在接收(842)用戶端資料之前完成與獲得前一交易及下一交易846、846相關的步驟。
在第一步驟中,直接地或間接地自用戶端接收請求。該請求包含用戶端希望在區塊鏈上儲存表示之資料,其被稱為用戶端資料。
接下來,獲得(844)用戶端資料摘要(H
D)。較佳地,獲得用戶端資料摘要,如上文在標題「資料摘要」下所描述,使得用戶端資料經雜湊、加鹽值且接著再次雜湊,且較佳地,雜湊為雙雜湊。
接下來,獲得前一交易及下一交易(846、848)。對於前一交易參考,獲得承諾鏈中之前一交易的狀態摘要(S)。任擇地,此係自區塊鏈獲得,或替代地,此儲存於鏈外資料庫中且在必要時重新叫用。對於下一交易參考,獲得用於為下一交易提供資金之輸出點。任擇地,此係自管理用於提供資金之UTXO之產生及儲存的資金服務獲得。任擇地,資金服務為產生承諾鏈交易之相同服務。
在獲得用戶端資料摘要(H
D)後,獲得狀態用戶端資料摘要(H
D')。較佳地,獲得狀態用戶端資料摘要(H
D'),如上文在標題「狀態用戶端資料摘要」下所描述,使得基於用戶端資料摘要、鹽值、協定版本號碼及其他元資料建構默克爾樹。狀態用戶端資料摘要H
D'為該默克爾樹之根。
利用所有的狀態用戶端資料摘要(H
D')、下一交易參考及前一交易參考,產生(850)目前交易之狀態摘要(S)。較佳地,狀態摘要(S)係藉由基於用戶端資料摘要、下一交易參考及前一交易參考來建構默克爾樹而產生。該默克爾樹之根為狀態摘要(S)。
產生(854)交易,該交易具有包含用戶端資料摘要(H
D)及狀態摘要(S)之輸出。
將交易傳輸至區塊鏈節點以供包括於區塊鏈上。
會合交易
亦可能需要產生跨多個不同承諾鏈存在的交易。跨多個不同承諾鏈存在之此類交易被稱為「會合交易」。會合交易提供以原子方式同步多個承諾鏈之方式。若單個事件與數個承諾鏈(或其表示之事件串流)相關且事件需要跨不同鏈以原子方式記錄,則此可能為相關的。
參看圖10A,例示性會合交易1002經展示為多個承諾鏈1000之一部分。可看出,每承諾鏈使用一個輸出1004、1006、1008,會合交易為該等承諾鏈之一部分。舉例而言,若會合交易為三個承諾鏈之一部分,則會合交易包含三個輸出。各交易輸出包含與各別承諾鏈相關之酬載。
較佳地,會合交易之各輸出1004、1006、1008具有與上文參考非會合承諾鏈交易所描述相同的形式,此係因為輸出包含資料摘要及狀態摘要(S) (狀態摘要係基於對鏈中之前一交易及下一交易的參考,以及狀態用戶端資料)。
會合交易之各輸出1004、1006、1008亦具有對應資金輸入。任擇地,此資金輸入具有與非會合承諾鏈交易相同的形式及金額。有利地,藉由使用相同的UTXO資金輸入參考方法,非會合交易仍可在下一交易參考中參考會合交易而無需任何其他修改(此係因為會合交易將仍具有資金輸入以供參考)。類似地,會合交易仍在各輸出上包含狀態摘要(S),使得參考會合交易之承諾鏈中之下一交易仍可使用相同的較佳前一交易參考。
因此,如圖中可看出,各會合交易輸出1004、1006、1008係基於經由使用狀態摘要(S
n1-1、S
n2-1、S
nk-1)對其對應的前一非會合交易1010、1012、1014之參考。亦可看出,各會合交易輸出係基於使用下一非會合交易參考(O
n1+1、O
n2+1、O
nk+1)之資金輸入參考對其對應的下一非會合交易1016、1018、1020之參考。
參考圖10B,展示建構會合交易之替代方法。此處,替代TxIDi所屬之每承諾鏈使用不同輸入及輸出(如圖10A中所展示),使用單個交易輸入及輸出。
實情為,TxIDi之資料摘要(H
D)係基於跨所有不同鏈提交之所有用戶端資料D。較佳地,資料摘要為默克爾樹根,其中產生默克爾樹,各葉節點係基於各鏈之用戶端提交資料。較佳地,使用各用戶端資料之雜湊。以此方式,儲存於區塊鏈上的資料摘要之大小保持相同,而與承諾鏈之數目無關,交易TxIDi為該承諾鏈之一部分。
類似地,狀態摘要係基於所有的前一交易參考以及所有的下一交易參考。替代僅包含PREV、HD及NEXT作為至葉節點之原像的默克爾樹,跨不同承諾鏈之所有PREV參考、跨不同承諾鏈之所有HD及跨所有不同承諾鏈之所有NEXT參考為葉節點。此提供類似優點,即TxIDi之單個輸出的大小不會增加,即使其係基於潛在地實質上更大量的資料亦如此。
替代如前二個段落中所描述之默克爾樹,跨不同承諾鏈之所有所接收用戶端資料經串連及雜湊以得到最終資料摘要,且跨所有不同承諾鏈之所有PREV、HD及NEXT經串連及雜湊以得到最終狀態摘要。
作為上文所描述之默克爾樹的另一替代例,跨所有交易鏈之所有的所接收用戶端資料、PREV及NEXT資料經串連及雜湊。因此,可根據以下運算式判定狀態摘要:
其中除了參考不同交易鏈以外,PREV_1、NEXT_1、PREV_2、NEXT_2為相同形式或格式之交易參考,如在標題「前一交易參考(PREV)」及「下一交易參考(NEXT)」下所描述。資料摘要之存在為任擇的且取決於經由會合交易連結之交易鏈的性質。
多分支交易鏈
轉向圖10C,展示例示性分支交易鏈資料結構1050。提供於圖10C中之實例係用於繪示之目的,且熟習此項技術者應瞭解,許多不同分支佈局係可能的。較佳地,分支資料結構利用與在標題「會合交易」下所描述相同的交易佈局。舉例而言,在交易e11參考交易e12及e20二者之情況下,e11交易針對各分支包含一個輸入及一個輸出(如圖10A中所闡述),或e11交易包含基於對e12及e20二者之NEXT參考的一個狀態摘要(如圖10B中所闡述)。
值得注意地,引入分支之交易(被稱為分支交易) e11、e14、eroot包含比PREV參考更多的NEXT參考。熟習此項技術者應瞭解,此可經由使用空PREV參考、對二個分支使用同一PREV參考(例如,e10在e11分支交易中二次用作PREV參考)來實施,及/或資料結構根本不包括第二PREV參考。在後一實例中,相較於PREV參考存在較大數目個NEXT參考可用以指示當前交易為分支交易。
任擇地,多分支交易鏈包含計數分支1052。計數分支係自eroot交易進行分支且用以對交易鏈具有之分支數目進行計數。較佳地,計數分支上之各交易e00、e01、e02包含指示分支數目之資料。
為了說明計數分支如何操作,提供關於如圖10C中所展示之分支佈局的描述。熟習此項技術者應瞭解,其他分支佈局可為可能的。首先利用二個參考產生eroot交易:對與計數分支相關聯之e00的一個NEXT參考及對與另一交易鏈相關聯之e10的一個NEXT參考。e00包含能夠認證僅存在開始於e10之1個其他分支的資料。在稍後的某個時刻,發生二個事件使得交易鏈需要在e11處進行分支。產生交易e01,其包含能夠認證現存在自e11開始之二個分支的資料。任擇地,交易亦係基於對第二分支e20之參考。再次在稍後的時間點處,事件發生,其中需要自e14進行另外二個分支。產生交易e02,其包含可用以認證分支數目現總計為四個的資料。
為了驗證多分支交易鏈,驗證者自計數分支開始以判定存在多少分支且分支在何處開始。藉由進行此操作,驗證者可確保各交易鏈為唯一的且不存在隱藏分支或隱藏版本。因此,計數分支增強交易鏈之安全性,同時仍維護儲存於區塊鏈上之佈局及資料的隱私/秘密性。
跨鏈區塊鏈參考
如關於在標題為「下一交易參考(NEXT)」之章節中所論述,可對任何基於UTXO之區塊鏈交易(經由使用輸出點)或對任何基於帳戶之區塊鏈交易(經由使用發送者之帳戶位址及臨時亂數)進行NEXT參考。此概念任擇地描述為「跨鏈參考」,此係因為一個區塊鏈上之交易可包含基於對不同區塊鏈上之交易之參考的資料。
因此,可看出,NEXT參考可指向不同區塊鏈,包括不具有相同格式之交易的區塊鏈。舉例而言,在交易鏈(其可與事件串流相關聯)記錄於諸如比特幣SV之基於UTXO之區塊鏈上的情況下,例示性交易TxIDn可包含狀態摘要,該狀態摘要係基於正參考尚未提承至以太坊區塊鏈(且交易ID尚不可知)之以太坊交易TxID
n+1的NEXT參考。如上文所論述,以太坊交易參考係基於發送者之帳戶位址及臨時亂數。以此方式,交易鏈可在第二(或任何其他數目個)區塊鏈上繼續。
較佳地,TxID
n+1交易亦包含基於對另一交易TxID
n+2之NEXT參考的狀態摘要,使得交易鏈繼續(除非TxID
n+1為完成事件之結果且因此結束交易鏈)。
任擇地,當使用跨鏈參考時,NEXT參考包含區塊鏈識別符以指示正參考哪一區塊鏈。較佳地,區塊鏈識別符呈三字母識別符之形式,類似於ISO 4217識別符之形式。區塊鏈識別符之存在可用以指示已使用跨鏈參考。替代地,區塊鏈識別符存在於每個交易中。例示性區塊鏈識別符可為用於比特幣之BTC、用於比特幣SV之BSV、用於以太坊之ETH、用於Monero之XMR等。
替代地,如在標題「狀態資料結構」下所描述,H
2雜湊函數可替代地為採用輸入清單作為葉節點之Merklize函式。應注意,與在「狀態資料結構」下所描述相同或類似之關於加鹽值、排序及其他特徵之相同或類似特徵類似地適用於包含多於2個交易參考之狀態摘要資料結構。
有利地,跨鏈參考為創建交易鏈之使用者(及/或相關聯事件串流之擁有者)提供了更大的靈活性。
更有利地,跨鏈參考提供了交易鏈利用不同區塊鏈之技術特徵的能力。舉例而言,若不同區塊鏈實施有利的交易類型及/或改良的安全性特徵,則跨鏈參考確保交易鏈甚至在移動至該不同區塊鏈時亦保持安全連結。類似地,若當前使用之區塊鏈經分叉且將資料儲存於OP_RETURN運算碼中之能力被移除,則跨鏈參考可用以維護交易鏈跨越至允許適當資料儲存(如以太坊之「資料」欄位或BSV之OP_RETURN)之不同區塊鏈的安全連結。
更有利地,跨鏈參考提供了交易鏈利用不同區塊鏈之較低交易費用的能力,即使臨時地。
進一步有利地,跨鏈參考提供了參考可僅能夠在特定區塊鏈上進行認證或參考之交易的能力。舉例而言,若需要在當前交易鏈中包括及/或安全地參考與以太坊智慧型合約相關聯之事件,則可參考適當的智慧型合約交易。
熟習此項技術者應瞭解,跨鏈區塊鏈參考亦可與如此處所描述之會合交易及/或多分支鏈一起使用,使得可將交易鏈分支至不同區塊鏈及/或以原子方式關聯在使用不同區塊鏈之二個交易鏈上發生的事件。
區塊鏈資料提交頻率
如本文中所描述,使用所接收之所有用戶端資料皆用於提承至區塊鏈的實例。然而,替代地,提供僅將所接收資料之子集傳輸至區塊鏈的不同選項。
如本文中所描述,使用至少二個資料集:鏈外儲存及鏈上儲存(如參看圖5A所論述)。鏈上儲存包含鏈外資料集之子集(但未必為嚴格的子集)。存在用戶端可選擇以使事件在區塊鏈中反映之次數變化的三種不同方法:onFinalise、checkpoint及onEvent。
對於onFinalise方法,除創建交易及完成交易以外,不將任何交易提交至區塊鏈。因此,onFinalise方法之觸發條件為接收到結束串流之訊息。因此,鏈上資料集僅包含二個項目。
在事件串流中之事件不應公開的情形中(諸如,在僅延長短時間之投票系統中),可使用onFinalise方法。除創建交易及完成交易以外,onFinalise方法將不在區塊鏈上儲存任何事件相關資料。一旦結束,最終交易便可包含關於投票之元資料或統計(諸如,總數)。如上文所論述,完成交易中之最終streamDigest可用以驗證整個鏈尚未被篡改。
對於onEvent方法,添加至鏈外資料庫之每個事件亦將在區塊鏈上具有代表其之資料。對於onEvent,觸發條件為在接收到事件時。因此,每當接收到或創建事件時或在更新事件串流之任何時間,觸發平台處理器以將事件添加至區塊鏈。平台處理器產生適當資料以添加至區塊鏈。
在發生事件之存在及/或事件之實際內容與公眾相關的情況下,可使用onEvent方法。此方法之例示性使用為誠實的招標程序。在此例示性狀況下,知曉招標已提交以及由誰提交符合公眾利益。在公開區塊鏈中存在事件達成此目的。
對於checkpoint方法,提供二個例示性實施例觸發條件。第一條件係基於時間且第二條件係基於接收到之事件的數目(不同於onEvent方法,除了其為每第n事件而非每個事件)。此實施例中之鏈上資料集包含鏈外資料集中之至少一些(或任擇地,所有)項目。
除上述內容以外,減小交易之大小及較不頻繁地將資料提交至區塊鏈(例如,根據checkpoint或onFinalise)會導致減少該等交易集合之相關聯碳足跡。大量交易導致需要更多處理。在使用工作量證明共識機制(諸如,比特幣及其衍生物)之情況下,此能量節省尤其重要,此係因為該共識機制為運算密集的且因此為可導致較大碳足跡之能量密集型程序。
在每當將交易提交至區塊鏈時便觸發事件之狀況下,若使用onEvent方法(及/或當檢查點方法經組配以使臨限值為0或1時,此會導致將與onEvent方法相同或類似的資料提交至區塊鏈),則可能會發生循環迴路。導致循環迴路係因為當提交第一交易(無論為何原因)時,onEvent機制觸發將另一交易提交至區塊鏈,此又觸發將又一事件提交至區塊鏈,一直循環下去。此問題可藉由使用如下文所描述之觸發機制來避免。藉由使用下文所描述之觸發機構中之任一者,解決了此問題。
基於時間之觸發條件為使得以給定時間間隔更新區塊鏈事件串流。該時間間隔由用戶端設定且為創建訊息中之參數。較佳地,該時間間隔為恆定的且在事件串流之壽命期間不會改變。
任擇地,使用例如Java Timer及TimerTask之語言級計時器來實施基於計時器之觸發條件。繼續Java實例,接收創建訊息,該創建訊息包含待使用基於計時器之觸發條件的指示且在至區塊鏈之事件提交之間等待的特定時間亦存在(例如,每分鐘)。建立以根據在事件提交之間等待的特定時間的週期觸發的Timer。亦建立TimerTask以獲得當前事件串流狀態且安排將彼當前事件串流狀態提交至區塊鏈。每當Timer觸發時,運行TimerTask。例示性偽Java程式碼可呈現為: final long period = 1000L * 60L; //1分鐘,來自創建訊息 public void updateBlockchain_timerBasedTrigger() { TimerTask repeatedTask = new TimerTask() { public void run() { //獲得指示串流之狀態的資料 //產生包含該資料之交易 //將交易廣播至該區塊鏈 }; } Timer timer = new Timer(“Event Stream Update”); timer.scheduleAtFixedRate(repeatedTask, new Date(), period); }
替代地,使用作業系統層級排程器,諸如cron。設定為每5分鐘運行之例示性crontab可呈現為: */5 * * * * /usr/bin/java MyClass.TimerTask()
熟習此項技術者應瞭解,除此處所提供的二個實例以外,亦存在建立基於計時器之執行的其他方式。此等僅作為實例提供,以供熟習此項技術者理解實施基於計時器之觸發的可能方式。
作為替代例或除以上基於計時器之觸發條件以外,亦使用基於接收到之事件之數目的觸發條件。在創建訊息中設定事件之給定數目(例如,10個)。此給定數目被視為觸發對區塊鏈之更新的事件之臨限數目。每當接收到事件時,將自先前鏈上串流更新以來(或若尚未進行鏈上串流更新,則自接收到創建訊息以來)接收到之事件的總數與事件之臨限數目進行比較。基於彼比較,更新鏈上資料集。該比較較佳係基於接收到之事件之數目是否等於或大於事件之臨限數目。例示性偽Java程式碼可如下呈現(其中每當接收到事件或以其他方式更新事件串流時皆叫用numberOfEventsBasedTrigger): final int thresholdEventReceived = 10; //來自創建訊息 static int numberEventsReceived = 0; public void numberOfEventsBasedTrigger() { Task repeatedTask = new Task() { public void run() { //獲得指示串流之狀態的資料 //產生包含該資料之交易 //將交易廣播至該區塊鏈 }; }; numberEventsReceived += 1; if (numberEventsReceived >= thresholdEventReceived) { repeatedTask.run(); numberEventsReceived = 0; } }
較佳地,僅一個觸發條件係可能的(基於計時器或基於事件數目)。替代地,可使用二個觸發條件且接著每當符合觸發條件中之任一者時,便更新鏈上資料集。
以上實例中之「獲得指示串流之狀態的資料」的步驟較佳將獲得最新事件及提取或產生資料摘要(H
D)及狀態摘要(S)。「產生包含該資料之交易」及「廣播交易」的步驟較佳包含將訊息發送至訊息匯流排以供平台服務與以上方法非同步地且在不同執行緒、程序或裝置中將交易提交至區塊鏈。較佳地,此等步驟與如在圖5B中所論述之產生步驟526及提交步驟528相同或類似。
若使用checkpoint或onFinalise方法,則任擇地使用任擇的checkpointNow旗標。當接收到新事件以儲存於鏈外資料集中(且潛在地,若符合適當觸發條件,則儲存於鏈上資料集中)時,可任擇地設定checkpointNow旗標。若設定旗標,則無關於是否已符合任何觸發條件,皆將迫使與所接收事件相關聯之資料儲存於鏈上資料集上。檢查可被視為覆寫旗標,此係因為其覆寫檢查點方法以迫使將資料添加至鏈上資料集。
因此,在接收到待添加至事件串流之事件後,若設定旗標,則將事件資料或基於事件資料之資料添加至鏈上資料集。
有利地,此使用戶端更自由地將資料提交至事件串流以允許或要求將重要資料或事件提承至鏈上資料集以供稽核。重要事件可包括傳遞事件串流之特定里程碑,使得所儲存的資料導致在相關聯之有限狀態機或智慧型合約中達到特定狀態。
此技術特徵可實現之另一有利用途可為允許在checkpoint方法可能無法捕獲之特定重要時間結算串流。舉例而言,若使用checkpoint方法在每日中午將資料添加至鏈上資料集,但用戶端希望在財政年度最後一日午夜記錄當前事件(出於財務報告目的),則用戶端僅將checkpointNow旗標添加至其在午夜之前提交的最後事件,且其將被添加至鏈上資料集以供稽核者審查,而無關於設定的任何先前checkpoint觸發條件。
事件串流平台系統
根據另一態樣,先前態樣之方法及系統中之任何一或多者可與如下文所描述之平台處理器一起使用,該平台處理器用於提供如描述於第一態樣中之鏈上及鏈外資料儲存及/或第二態樣中之鏈上及鏈外資料儲存的驗證。此另一態樣可為平台即服務(PaaS)及軟體即服務(SaaS),其有利地使得能夠使用諸如BSV區塊鏈之區塊鏈網路來快速遞送有用的真實世界企業及技術應用,諸如經軟體控制的技術系統或智慧型合約之管理。
平台服務之概述可見於圖11中,其展示系統之高層級示意圖。平台服務具有提供API 1508之平台處理器1500,一或多個用戶端可經由該API存取服務。
如此圖中所示之平台服務1500由三個服務系列構成,且旨在允許使用者及組織容易且安全地利用由區塊鏈之特有特性提供的優點,而實際上無需在用戶端處實施任何基於區塊鏈之軟體、知識或庫。此等服務為: - 資料服務1502,其旨在簡化鏈作為商品資料分類帳之使用。資料服務較佳使用本文中所提供之資料結構及方法以用於實施將資料寫入至區塊鏈及自區塊鏈讀取資料。 - 運算服務1504,其旨在提供由諸如比特幣SV之數位資產所支援的通用運算架構。 - 商務服務1506,其提供使用諸如比特幣SV之數位資產進行交易的企業級能力。
可在API處經由或使用HTTPS協定自用戶端接收請求,此係因為API被實施為網路服務。接著由一或多個服務模組或處理資源1502至1506使用基礎軟體1510實施所請求服務,此基礎軟體1510與區塊鏈相關聯,亦即,以實施資源、庫及/或金鑰管理錢包實施方案以用於創建、處理及提交與區塊鏈相關聯之交易。一旦經處理,便可將交易提交至區塊鏈網路1512 (而非實施任何此功能性或交易庫之用戶端)。至多,用戶端可實施或能夠實施與密碼貨幣或某一其他數位資產相關聯之數位錢包或其類似者,但此並非必需的,此係因為平台服務1500亦可能夠提供及管理用於用戶端之數位資產。
圖12提供與區塊鏈相關聯之多個服務的更精細示意圖,且該等服務可由與API相關聯之平台1600實施,經由該API可存取所提供服務中之任何一或多者。如此圖12中所見,資料服務1602可包括資料寫入器1602a及資料讀取器服務1602b。事件串流及/或資料寫入器任擇地實施如描述於圖8E中的方法840。類似地,希望存取其已使用本文中所描述之實施例寫入之資料的用戶端及/或第三方可使用資料讀取器1602b。參考英國專利申請案第2002285.1號(在2020年2月19日以nChain Holdings Limited之名義申請且特此以引用之方式併入)之圖4至圖8論述事件串流之其他細節。資料寫入器服務1602a使得用戶端能夠以簡單、安全且最佳化之方式將資料寫入至區塊鏈中。資料讀取器服務1602b使得用戶端能夠發送查詢,該等查詢傳回儲存於區塊鏈中之資料。此可使用經濾波串流,其中用戶端可預定義其希望臨時或定期地(亦即,在某一時間範圍內)自區塊鏈讀取的資料之類型,或與在區塊鏈1610中處理的相關或不相關事件或文件之集合相關聯的彼等資料類型。資料存檔特徵允許存取指定事件或合約之先前交易的日誌。
平台1600之運算服務1606包括與智慧型合約相關聯的應用程式1606a及架構1606b,其在一些實施例中可表示為區塊鏈1610中之狀態機。運算服務1606與資料服務1602互動,此係因為資料將需要被輸入且結果需要被提供至用戶端以用於任何此運算。
商務服務1604負責經由企業錢包1604a佈建企業級能力,以用於基於一流的安全實踐及技術在區塊鏈1610上進行交易。舉例而言,在一些實施例中,企業錢包可實施在多於一個人員或使用者或帳戶可能需要對符合所定義準則,亦即與高於某一預定義限值之較大密碼貨幣值相關聯之交易進行簽章時實現區塊鏈交易處理的功能性。企業錢包亦可包括實施臨限數目及/或類型之簽章以移動大量數位資產,諸如密碼貨幣或表示另一資源之符記的功能性。可接著基於由此企業錢包實施方案應用之準則在處理之後在區塊鏈上表示此等資產之移動。
SPV服務1608 (簡化之支付驗證)為需要來自區塊鏈之資訊但並不包括至區塊鏈之直接鏈路的應用程式,此係因為該等服務並不運行挖掘者節點。此SPV服務1608允許輕型用戶端驗證交易是否包括於區塊鏈中,而無需下載整個區塊鏈1610。
裝置
現轉向圖13,提供運算裝置2600之說明性簡化方塊圖,該運算裝置可用以實踐本揭露內容之至少一個實施例。在各種實施例中,運算裝置2600可用以實施上文所說明及描述之系統或方法中之任一者。舉例而言,運算裝置2600可經組配以用作圖11或圖12之系統1500、1600中的一或多個組件,或運算裝置2600可經組配為與給定使用者相關聯的用戶端實體、發出資料庫請求及/或提交之用戶端實體、平台處理器及/或資料庫管理器。作為另一實例,運算裝置2600可經組配以進行圖5B及圖8E之方法520、840。又另外,運算裝置2600可經組配以產生鏈上及鏈外結構504、502、600、700、800、820、830、832、900、902、1000、1050,如描述於圖5、圖6、圖7、圖8A至圖8D、圖9及圖10A至圖10B中。因此,運算裝置2600可為攜帶型運算裝置、個人電腦,或任何電子運算裝置。如圖13中所展示,運算裝置2600可包括具有快取記憶體之一或多個層級的一或多個處理器以及可經組配以與包括主記憶體2608及持久性儲存器2610之儲存子系統2606通訊的記憶體控制器(共同地標記為2602)。主記憶體2608可包括如所展示之動態隨機存取記憶體(DRAM) 2618及唯讀記憶體(ROM) 2620。儲存子系統2606及快取記憶體2602且可用於儲存資訊,諸如與如本揭露內容中所描述之交易及區塊相關聯的細節。處理器2602可用以提供如本揭露內容中所描述之任何實施例的步驟或功能性。
處理器2602亦可與一或多個使用者介面輸入裝置2612、一或多個使用者介面輸出裝置2614及網路介面子系統2616進行通訊。
匯流排子系統2604可提供用於使運算裝置2600之各種組件及子系統能夠按預期彼此通訊的機制。儘管匯流排子系統2604經示意性地展示為單個匯流排,但匯流排子系統之替代實施例可利用多個匯流排。
網路介面子系統2616可提供至其他運算裝置及網路之介面。網路介面子系統2616可充當用於自其他系統接收資料及將資料自運算裝置2600傳輸至其他系統之介面。舉例而言,網路介面子系統2616可使得資料技術員能夠將裝置連接至網路,使得資料技術員可能夠在處於諸如資料中心之遠端位置中時將資料傳輸至裝置及自裝置接收資料。
使用者介面輸入裝置2612可包括一或多個使用者輸入裝置,諸如鍵盤;指標裝置,諸如整合式滑鼠、軌跡球、觸控板或圖形平板電腦;掃描器;條形碼掃描器;併入至顯示器中之觸控螢幕;音訊輸入裝置,諸如語音辨識系統、麥克風;以及其他類型之輸入裝置。一般而言,「輸入裝置」一詞之使用意欲包括用於將資訊輸入至運算裝置2600之所有可能類型的裝置及機構。
一或多個使用者介面輸出裝置2614可包括顯示子系統、印表機或諸如音訊輸出裝置之非視覺顯示器等。顯示子系統可為陰極射線管(CRT)、諸如液晶顯示器(LCD)之平板裝置、發光二極體(LED)顯示器,或投影裝置或其他顯示裝置。一般而言,「輸出裝置」一詞之使用意欲包括用於輸出來自運算裝置2600之資訊的所有可能類型的裝置及機構。舉例而言,一或多個使用者介面輸出裝置2614可用以呈現使用者介面,以在使用者與執行所描述程序及其中之變化的應用程式之互動可為適當的時促進此互動。
儲存子系統2606可提供電腦可讀儲存媒體,其用於儲存可提供本揭露內容之至少一個實施例之功能性的基本程式設計及資料構造。應用程式(程式、程式碼模組、指令)在由一或多個處理器執行時可提供本揭露內容之一或多個實施例的功能性,且可儲存於儲存子系統2606中。此等應用程式模組或指令可由一或多個處理器2602執行。儲存子系統2606可另外提供用於儲存根據本發明所使用之資料的儲存庫。舉例而言,主記憶體2608及快取記憶體2602可提供用於程式及資料之依電性儲存器。持久性儲存器2610可提供對程式及資料之持久性(非依電性)儲存且可包括快閃記憶體、一或多個固態驅動機、一或多個磁性硬碟驅動機、具有相關聯之抽取式媒體的一或多個軟碟驅動機、具有相關聯之抽取式媒體的一或多個光學驅動機(例如,CD-ROM或DVD或藍光光碟(Blue-Ray))驅動機以及其他類似儲存媒體。此程式及資料可包括用於進行如本揭露內容中所描述之一或多個實施例之步驟的程式以及與如本揭露內容中所描述之交易及區塊相關聯的資料。
運算裝置2600可為各種類型,包括攜帶型電腦裝置、平板電腦、工作站或下文所描述之任何其他裝置。另外,運算裝置2600可包括可經由一或多個埠(例如,USB、頭戴式耳機插口、Lightning連接器等)連接至運算裝置2600之另一裝置。可連接至運算裝置2600之裝置可包括經組配以接受光纖連接器之多個埠。因此,此裝置可經組配以將光學信號轉換成可經由將裝置連接至運算裝置2600之埠傳輸的電氣信號以供處理。由於電腦及網路不斷改變之本質,出於說明裝置之較佳實施例之目的,圖12中所描繪之運算裝置2600的描述僅意欲作為特定實例。具有比圖12中所描繪之系統多或少之組件的許多其他組態係可能的。
例示性的說明性應用 銀行機構
在本實例中,第一銀行A正使用區塊鏈A且第二銀行B正使用區塊鏈B。二家銀行均正使用事件串流(其正使用本文中所描述之交易鏈技術)來捕獲其客戶之帳戶活動以實現反洗錢(AML)合規性,且為一個法律實體/身分使用一個事件串流。愛麗絲為在各家銀行皆具有一個帳戶之客戶。
經由使用跨鏈區塊鏈參考,單個事件串流(及因此,單個交易鏈)可用以追蹤愛麗絲與能夠在區塊鏈A與區塊鏈B之間跳躍的二個機構的互動。此愛麗絲保持唯一事件串流,從而簡化其財務管理以及改良可審計效率(例如,出於AML之目的),此係因為其與各家銀行之所有相關交易皆儲存於單個交易鏈中且稽核者不需要遍歷多個區塊鏈、多個帳戶及多個事件串流。
文件簽章
在本實例中,目標為捕獲文件簽章作為區塊鏈交易中之事件。預期簽章者將事件包括於區塊鏈交易中。請求籤章之實體(請求者)可準備事件串流交易,該事件串流交易包括指定簽章者選擇之區塊鏈交易的承諾。此允許簽章者選擇其偏好之任何區塊鏈(若其可能不具有加密貨幣及/或在請求者之區塊鏈上產生交易的手段)。此實例展示交叉鏈參考通常可為事件串流及交易鏈之使用者提供的靈活性。
家畜追蹤
如此處參看圖5A至圖13所描述之有序且僅可附加之資料儲存技術的例示性應用係用於家畜追蹤。為了遵守國際家畜市場規則及法規,需要對家畜之所有的所有權、使用及其他管理進行安全追蹤。特定而言,當前動物病變之存在及對新出現病變之感知風險通常突出了增加家畜管理之安全性的重要性。因此,可看出,使用本文中所描述之有序、不可變的基於區塊鏈之資料儲存系統可有利地輔助涉及家畜之管理、銷售、購買、使用的任何人驗證與正與其互動之任何動物相關聯的資訊為正確且不可變的。
疫苗接種狀態及所有權追蹤特別重要,且使用依序事件(如本文所闡述)之防篡改及隱私保護記錄可達成或輔助達成安全的疫苗接種狀態追蹤。需要維持事件發生之順序,以證明事件發生的時間流次序及相依性或干擾。
轉向系統之特定實例,圖14提供如由系統中之不同部件進行的數個可能的資料流及程序之示意圖1400。如此處可看到,處理平台部件1408進行若干基於事件串流(ES)區塊鏈寫入之動作1420、1422、1424、1426、1428、1430。此處提供事件串流作為與區塊鏈之互動的API處理層之特定實例。熟習此項技術者應瞭解,根據本文中所描述之實施例,類似地維護事件之有序且僅可附加之清單且將其儲存於區塊鏈上的其他API可為可能的。處理平台部件亦可描述為區塊鏈介面系統或伺服器。亦展示基於區塊鏈之驗證程序1434,其使用區塊鏈資料協同區塊鏈1408、處理平台1406及家畜資料庫1404中之任一者或全部。
所提議之家畜追蹤系統1400包含數個硬體元件及軟體元件。系統之使用者具有智慧型手機,該智慧型手機具有家畜管理軟體應用程式1402。該應用程式經組配以與家畜資料庫(或其他伺服器) 1404通訊。家畜資料庫經組配以與處理平台1406互動,該處理平台在圖中被稱為nChain平台。處理平台經組配以根據如本文中所描述之交易鏈將認證資料記錄至區塊鏈1408。
各動物具有相關聯之識別標籤。識別標籤唯一地識別家畜當中之各動物。識別標籤較佳具有與標籤相關聯及/或儲存於標籤上之唯一識別符。
識別標籤較佳呈嵌入於動物內之射頻識別(RFID)標籤的形式。替代地,識別標籤為實體牛耳標籤,該標籤具有印刷於其上之QR碼、編碼唯一識別符之QR碼以及QR碼。
較佳地,使用具有1 m至12 m之讀取範圍的超高頻(UHF) RFID。UHF-RFID標籤為被動的,意謂其不需要額外電源。被動標籤為低成本的且因此農民更容易獲得。
提供家畜資料庫1404,其包含與各動物相關聯之所有唯一識別符且較佳儲存與各動物相關聯之額外資訊。舉例而言,具有相關聯唯一識別符之給定動物的擁有者儲存於家畜資料庫中。各擁有者亦藉由唯一
帳戶 ID來識別。與各動物唯一識別符相關聯之其他資訊為性別、狀態、體重及其他描述。更佳地,可以階層及/或關係方式(如在經由外來金鑰或其類似者使用關係資料庫管理系統時)連結至動物親代之唯一識別符。
在所提議之家畜追蹤系統中亦提供智慧型手機應用程式1402 (或包含與智慧型手機應用程式相同或類似之應用程式碼的其他硬體裝置),該應用程式經組配以與識別標籤讀取器(諸如,上文所論述之RFID掃描器)互動或包含識別標籤讀取器,以及經組配以與家畜資料庫系統互動。
圖14展示數個事件1420、1422、1424、1426、1428、1430,該等事件使用處理平台1406將用於稍後驗證1432之資料儲存於區塊鏈1410上。較佳地,儲存於區塊鏈上之資料呈如本文中所描述之資料摘要(H
D)及/或狀態摘要(S)的形式。儲存於區塊鏈上之該資料充當鏈上之「簽章」及/或「公證」。此等術語用以描述資料摘要及/或狀態摘要之功能,即為驗證者提供存在證明以驗證關於與動物相關聯之事件的資料。
數個事件1420、1424、1426、1428、1430包含、使用附加事件或與附加事件相關聯。附加事件較佳涉及將交易儲存於區塊鏈上使得交易與如本文中所描述之交易鏈相關聯的程序。創建事件1422較佳涉及創建事件串流及/或創建交易鏈,如本文中所描述。
較佳地,向家畜資料庫平台註冊(1420)的使用者觸發將資料儲存於區塊鏈1408上。家畜資料庫1404產生、創建使用者之帳戶及相關聯之唯一
帳戶 ID。使用者帳戶創建之公證資料儲存於區塊鏈上。以此方式,
帳戶 ID及與帳戶相關聯之任何元資料係以不可變安全方式儲存。任擇地,帳戶亦具有與其相關聯之事件串流(及因此,交易鏈),使得亦可追蹤涉及使用者之任何事件。
在註冊諸如乳牛之新動物1422後,產生新事件串流使得與動物相關之任何其他資訊可安全地關聯於區塊鏈上以供稍後驗證。
亦可記錄於區塊鏈上之例示性事件包括對動物執行藥浴1424、1430及對動物執行疫苗接種1426。表示此等事件之公證資料儲存於區塊鏈上且經由使用「附加事件」與同一動物之事件串流相關聯,如圖14中所闡述。
若動物之所有權自一方轉移至另一方(1428) (例如,經由銷售),則另一附加事件可用以記錄新擁有者之認證資料。任擇地,在擁有者具有相關聯事件串流之情況下,會合交易用以確保與賣方、買方及動物相關聯之所有事件串流皆在區塊鏈上以原子方式同步,且自儲存於區塊鏈上之資料的視角,在交易歷史中從不存在動物具有二個擁有者、不具有擁有者或處於任何其他不正確中間狀態之任何時刻。
在動物不再需要由家畜資料庫1404追蹤之情況下,將完成事件提供至處理平台1406。在具有完成事件之情況下,事件串流完成,且儲存於區塊鏈上之最終交易包含空NEXT參考使得不可附加其他事件。
在動物之一生中,存在需要事件(諸如,疫苗接種)之證明的許多時刻。交易鏈為與該動物相關之已發生的所有事件提供存在證明,該等事件包括疫苗接種事件。如本文中所描述,此存在證明儲存於區塊鏈上因此提供不可變的安全存在證明。在驗證者希望判定疫苗接種事件之有效性的情況下,驗證者獲得與疫苗接種事件相關聯之狀態摘要及/或資料摘要以及疫苗接種事件資料自身。較佳地,驗證者自家畜資料庫1404獲得疫苗接種資料。
藉由對疫苗接種資料進行雜湊,獲得本端資料摘要。藉由比較出本端資料摘要與區塊鏈儲存資料摘要相同,驗證者驗證出其已接收之疫苗接種資料與儲存於區塊鏈上之資料相同且未發生資料竄改。
可使用基於資料摘要之狀態摘要進行相同或類似程序。使用狀態摘要之驗證需要默克爾證明,或在狀態摘要係基於經雜湊之值的串連之情況下,則使用其他資料中之一些或全部以產生雜湊。較佳地,默克爾證明或其他資料由家畜資料庫1404及/或處理平台1406提供。
值得注意地,交易鏈之使用亦可用以向稽核者展示,除了所呈現之事件以外,無其他事件改變了串流及/或未發生與動物相關之其他事件。
上文所描述之各種方法可由電腦程式實施。電腦程式可包括電腦程式碼,其經配置以指示電腦實施上文所描述之各種方法中之一或多者的功能。用於執行此類方法之電腦程式及/或程式碼可在一或多個電腦可讀媒體上,或更一般而言,在電腦程式產品上被提供至諸如電腦的設備。電腦可讀媒體可為暫時性或非暫時性的。舉例而言,一或多個電腦可讀媒體可為電子、磁性、光學、電磁、紅外線或半導體系統,或用於資料傳輸,例如用於經由網際網路下載程式碼之傳播媒體。替代地,一或多個電腦可讀媒體可能呈一或多個實體電腦可讀媒體之形式,諸如半導體或固態記憶體、磁帶、抽取式電腦磁片、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、剛性磁碟,及光碟,諸如CD-ROM、CD-R/W或DVD。
在一實施方案中,本文中所描述之模組、組件及其他特徵可實施為離散組件,或整合於諸如ASICS、FPGA、DSP或類似裝置之硬體組件的功能性中。
「硬體組件」或「硬體模組」係有形(例如,非暫時性)實體組件(例如,一或多個處理器之集合),其能夠執行某些操作且可以某一實體方式進行組配或配置。硬體組件可包括永久地經組配以執行某些操作之專用電路系統或邏輯。硬體組件可為或包括專用處理器,諸如場可規劃閘陣列(FPGA)或ASIC。硬體組件亦可包括由軟體暫時地組配以執行某些操作之可規劃邏輯或電路系統。
因此,應將片語「硬體組件」或「硬體模組」理解為涵蓋有形實體,其可經實體建構、永久組配(例如,固線式)或暫時組配(例如,經規劃)來以某一方式操作或執行本文中所描述之某些操作。
此外,模組及組件可實施為硬體裝置內之韌體或功能電路系統。另外,模組及組件可實施於硬體裝置及軟體組件之任何組合中,或僅實施於軟體中(例如,儲存或以其他方式體現於機器可讀媒體中或傳輸媒體中之程式碼)。
除非另外具體地陳述,否則如自以下論述顯而易見,應瞭解,貫穿描述,利用諸如「判定」、「提供」、「計算」、「運算」、「識別」、「組合」、「建立」、「發送」、「接收」、「儲存」、「估計」、「檢查」、「獲得」或其類似者之術語的論述係指電腦系統或類似電子運算裝置之動作及程序,該電腦系統或類似電子運算裝置將電腦系統之暫存器及記憶體內的表示為物理(電子)量之資料操縱及變換成電腦系統記憶體或暫存器或其他此類資訊儲存、傳輸或顯示裝置內的類似地表示為物理量之其他資料。
如本說明書及申請專利範圍中所使用之「包含」一詞意謂「至少部分地由……組成」。當解譯本說明書及申請專利範圍中之包括「包含」一詞的各語句時,亦可能存在除前面有該術語之彼或彼等特徵以外的特徵。諸如「包含(comprise及comprises)」之相關術語將以相同方式解釋。
預期對本文中所揭露之數字範圍(例如,1至10)的參考亦併有對彼範圍內之所有有理數(例如,1、1.1、2、3、3.9、4、5、6、6.5、7、8、9及10)以及彼範圍內之任何有理數範圍(例如,2至8、1.5至5.5及3.1至4.7)的參考,且因此,特此明確地揭露本文中明確地揭露之所有範圍的所有子範圍。此等僅為具體預期之內容的實例,且所列舉之最低值與最高值之間的數值的所有可能組合被視為以類似方式明確地陳述於本申請案中。
如本文中所使用,「及/或」一詞意謂「及」或「或」或其二者。
如本文中所使用,名詞之後的「(等)(s)」意謂該名詞之複數及/或單數形式。
對元件之單數參考並不排除對此類元件之複數參考,且反之亦然。
應理解,上文描述意欲為說明性而非限制性的。熟習此項技術者在閱讀及理解上文描述後將顯而易見許多其他實施方案。儘管本揭露內容已參考特定實例實施方案進行描述,但應認識到,本揭露內容不限於所描述之實施方案但可在具有在隨附申請專利範圍之範圍內之修改及更改的情況下進行實踐。因此,應在說明性意義上而非限制性意義上看待本說明書及圖式。因此,應參考隨附申請專利範圍連同此申請專利範圍所授權之等效物的完整範圍來判定本揭露內容之範圍。
100,500:系統 101:封包交換網路 102a,102b:電腦裝備/裝置 103:使用者/給定方/代理/實體 103a:原始使用者/實體/愛麗絲/第一方 103b:新使用者/實體/鮑勃/第二方 104:第一區塊鏈節點/比特幣節點/新區塊 105:用戶端應用程式/軟體/用戶端 105a:用戶端應用程式 105b:用戶端 106:區塊鏈網路/同級間(P2P)網路/比特幣網路 150:比特幣區塊鏈 151:資料區塊 151n-1:先前創建區塊 151n:新區塊 152:先前交易/原始交易 152i:先前交易 152j:目前交易/新接收交易/後續交易 153:起源區塊(Gb) 154:有序集合/池 155:區塊指標 201:標頭 202:輸入/輸入欄位 203:輸出欄位/未支出交易輸出/UTXO 301:旁側通道 351:交易引擎 352:使用者介面(UI)層 353:功能 360:使用者介面(UI) 362:UI元素/使用者可選擇元素/資料鍵入欄位 363:UI元素/資訊元素 450:節點軟體 451:協定引擎 452:指令碼引擎 453:堆疊 454:應用程式層級決策引擎 455:區塊鏈相關功能模組 455C:共識模組 455P:傳播模組 455S:儲存模組 502:反映在鏈上/結構 504:鏈外資料儲存系統/結構/鏈外資料儲存器 506a,506b,506c,506d:日誌條目/相關聯事件 508a,508b,508c,508d:區塊鏈交易 510a,510b,510c,510d:「資金輸入」輸入 512,804,804b,804c:酬載 512a,512b,512c,512d,804a:資料酬載 520,840:方法 522,842:接收步驟 524,844,846,848:獲得步驟 526,850,854:產生步驟 528:提交步驟 600:狀態資料默克爾樹/結構 602:葉節點PREV 604,816a,816b,816c:狀態用戶端資料摘要(H
D') 606:NEXT 608:默克爾樹根/狀態摘要 610:雜湊兩次 700:默克爾樹/結構 706,708,710,712,714:葉節點 800:交易/結構 802:交易id TxIDn/交易TxIDn 806a:前一交易 806b:倒數第二交易/前一交易 808a:下一交易 808b:第二交易 810,810a,810b,810c:狀態摘要(S) Sn 812a:對前一交易之參考 812b:前一交易參考 814a:對下一交易之參考 814b:下一交易參考 818:「資金輸入」輸入/資金輸入 820,830,832,1000:承諾鏈/結構 822:第一交易 834:最後交易 900,902:狀態用戶端資料默克爾樹/結構 904:默克爾樹根/H
D' 906:H
D' 1002:會合交易 1004,1006,1008:會合交易輸出 1010,1012,1014:前一非會合交易 1016,1018,1020:下一非會合交易 1050:分支交易鏈資料結構/結構 1052:計數分支 1400:示意圖/家畜追蹤系統 1402:家畜管理軟體應用程式/智慧型手機應用程式 1404:家畜資料庫 1406:處理平台 1408:區塊鏈/處理平台部件 1410,1610:區塊鏈 1420:基於事件串流(ES)區塊鏈寫入之動作/事件/註冊 1422:新動物/基於事件串流(ES)區塊鏈寫入之動作/創建事件 1424,1430:藥浴/基於事件串流(ES)區塊鏈寫入之動作/事件 1426:疫苗接種/基於事件串流(ES)區塊鏈寫入之動作/事件 1428:基於事件串流(ES)區塊鏈寫入之動作/事件 1432:稍後驗證 1434:基於區塊鏈之驗證程序 1500:平台處理器/平台服務 1502:資料服務/服務模組/處理資源 1504:運算服務/服務模組/處理資源 1506:商務服務/服務模組/處理資源 1508:API 1510:基礎軟體 1512:區塊鏈網路 1600:平台/系統 1602:資料服務 1602a:資料寫入器/資料寫入器服務 1602b:資料讀取器服務/資料讀取器 1604:商務服務 1604a:企業錢包 1606:運算服務 1606a:應用程式 1606b:架構 1608:SPV服務 2600:運算裝置 2602:記憶體控制器/快取記憶體/處理器 2604:匯流排子系統 2606:儲存子系統 2608:主記憶體 2610:持久性儲存器 2612:使用者介面輸入裝置 2614:使用者介面輸出裝置 2616:網路介面子系統 2618:動態隨機存取記憶體(DRAM) 2620:唯讀記憶體(ROM) e20:第二分支/交易 eroot,e00,e01,e02,e10,e11,e12,e14:交易
圖1描繪用於實施區塊鏈之例示性系統。
圖2繪示例示性交易協定。
圖3A及圖3B繪示用戶端應用程式及其使用者介面之例示性實施方案。
圖4繪示在網路之各區塊鏈節點上運行的節點軟體之實例。
圖5A為描繪儲存日誌條目之交易鏈及對應日誌條目的概述之示意圖。
圖5B為描繪用於實施有序且僅可附加之資料儲存系統的例示性方法之流程圖。
圖6及圖7為描繪供在本文中所描述之各種實施例內使用的默克爾樹之建構的示意圖。
圖8A至圖8D為描繪根據各種實施例之例示性資料結構的示意圖。
圖8E為描繪用於實施有序且僅可附加之資料儲存系統的例示性方法之流程圖。
圖9為描繪基於二個不同協定之二個默克爾樹的示意圖。
圖10A、圖10B及圖10C為描繪根據各種實施例之例示性資料結構的示意圖。
圖11為根據一態樣的描繪用於與區塊鏈相關聯之多個服務的平台之概述的示意圖。
圖12為根據一態樣的描繪與區塊鏈相關聯之多個服務的平台之組件的示意圖。
圖13為繪示可實施本揭露內容之各種態樣及實施例的運算環境之示意圖。
圖14為繪示與實施例相關之多個服務的平台之組件的示意圖。
500:系統
502:反映在鏈上/結構
504:鏈外資料儲存系統/結構/鏈外資料儲存器
506a,506b,506c,506d:日誌條目/相關聯事件
508a,508b,508c,508d:區塊鏈交易
510a,510b,510c,510d:「資金輸入」輸入
512a,512b,512c,512d:資料酬載
Claims (74)
- 一種用於在一區塊鏈系統中添加與一交易集合相關聯之一當前交易的電腦實施方法,該方法包含以下步驟: 產生一第一狀態資料,其中該第一狀態資料係基於對一第一交易之一第一交易參考及/或對一第二交易之一第二交易參考, 產生包含該第一狀態資料之該當前交易,以及 將該當前交易提交至區塊鏈。
- 如請求項1之方法,其中該第一交易參考係基於該第一交易之一輸出。
- 如請求項1或請求項2之方法,其中該第一交易參考係基於該第一交易之一第二狀態資料。
- 如前述請求項中任一項或多項之方法,該第二交易參考係基於對該第二交易之一輸入的一參考及/或該第二交易參考係基於對一發送者帳戶位址及一臨時亂數之一參考。
- 如前述請求項中任一項或多項之方法,其中該第二交易參考包含一未支出交易輸出點。
- 如請求項5之方法,其中該未支出交易輸出點要成為該第二交易之一輸入。
- 如前述請求項中任一項或多項之方法,其中該第一狀態資料具有與該第一狀態資料所基於之資料不相關的一已知狀態大小。
- 如請求項7之方法,其中該當前交易具有一已知交易大小。
- 如請求項8之方法,其進一步包含計算將該當前交易包括於該區塊鏈上之一交易費用的步驟,其中該交易費用係被準確地計算。
- 如前述請求項中任一項或多項之方法,其中該第一交易參考及/或該第二交易參考在該區塊鏈上被隱藏而不被公眾看到。
- 如前述請求項中任一項或多項之方法,其中該當前交易與該區塊鏈上之任何其他交易無法區分。
- 如前述請求項中任一項或多項之方法,其中該第一狀態資料係基於一單向函數之一輸出,該函數採用該第一交易參考及/或該第二交易參考作為一輸入。
- 如前述請求項中任一項或多項之方法,其中該第一狀態日期經PUSHDATA編碼。
- 如前述請求項中任一項或多項之方法,其中該第一狀態資料係基於一基於雜湊之資料結構,該資料結構係基於該第一交易參考及/或該第二交易參考。
- 如前述請求項中任一項或多項之方法,其中該第一狀態資料為一狀態默克爾樹之一第一默克爾樹根,且其中產生該第一狀態資料之該步驟包含產生該狀態默克爾樹。
- 如請求項15之方法,其中該狀態默克爾樹包含基於該第一交易參考之一第一葉節點及/或基於該第二交易參考之一第二葉節點。
- 如請求項16之方法,其中該第一葉節點係藉由使該第一交易參考通過一單向函數至少一次來產生。
- 如請求項16或請求項17之方法,其中該第一葉節點係藉由使對該第一交易之該參考通過一單向函數至少二次來產生。
- 如請求項16至18中任一項或多項之方法,其中該第二葉節點係藉由使該第二交易參考通過一單向函數至少一次來產生。
- 如請求項16至19中任一項或多項之方法,其中該第二葉節點係藉由使該第二交易參考通過一單向函數至少二次來產生。
- 如請求項12或16至20中任一項或多項之方法,其中該單向函數為一雜湊函數。
- 如請求項16至21中任一項或多項之方法,其中該狀態默克爾樹包含一第一資料項目作為一葉節點。
- 如請求項22之方法,其中該第一資料項目係基於以下各者中之任何一或多者:自一用戶端接收到之資料、關於該交易集合之一元資料集合、一版本號碼以及一鹽值。
- 如請求項23之方法,其中該第一資料項目為一資料默克爾樹之一第二默克爾樹根,且其中產生該第一資料項目之步驟包含產生該資料默克爾樹。
- 如請求項24之方法,其中該資料默克爾樹包含數個資料葉節點,且該等資料葉節點各自係基於以下各者中之一者:自該用戶端接收到之該資料、來自關於該交易集合之該元資料集合的一項目、該版本號碼及/或該鹽值。
- 如請求項25之方法,其中該等資料葉節點中之至少一者係基於與該版本號碼之一串連。
- 如前述請求項中任一項或多項之方法,其中該第一狀態資料儲存於該當前交易之一輸出上。
- 如請求項27之方法,其中該輸出為一不可支出輸出。
- 如前述請求項中任一項或多項之方法,其中該當前交易包含一第二資料項目。
- 如請求項29之方法,其中該第二資料項目儲存於該當前交易之一輸出上。
- 如請求項30之方法,其中該第二資料項目係儲存於該交易上,在一OP_RETURN運算碼及/或一OP_0運算碼之後。
- 如請求項29至31中任一項或多項之方法,其中該第二資料項目經PUSHDATA編碼。
- 如請求項29至32中任一項或多項之方法,其中該第二資料項目係基於所接收之用戶端資料。
- 如請求項29至33中任一項或多項之方法,其中該第二資料項目係基於使基於該所接收之用戶端資料的一資料項目通過一單向函數至少一次的輸出。
- 如請求項34之方法,其中該第二資料項目係基於使基於該所接收之用戶端資料的該資料項目通過一單向函數至少二次的輸出。
- 如請求項35之方法,其中基於該所接收之用戶端資料的該資料項目經加鹽值。
- 如請求項35或36之方法,其中基於該所接收之用戶端資料的該資料項目係藉由使該所接收之用戶端資料通過一單向函數至少一次來獲得。
- 如請求項37之方法,其中基於該所接收之用戶端資料的該資料項目係藉由使該所接收之用戶端資料通過一單向函數至少二次來獲得。
- 如請求項34至39中任一項或多項之方法,其中該單向函數確保一第三方不能自該第二資料項目計算該用戶端資料。
- 如請求項34至40中任一項或多項之方法,其中該單向函數為一雜湊函數。
- 如請求項33至39中任一項或多項之方法,其中該用戶端資料在該區塊鏈上被隱藏而不被公眾看到。
- 如請求項33至41中任一項或多項之方法,其中該用戶端資料之一表示不可變地儲存於該區塊鏈上。
- 如請求項33至42中任一項或多項之方法,其中該第二資料項目提供該所接收之用戶端資料的一存在證明。
- 如請求項39至43中任一項或多項之方法,其中該第二資料項目具有與該第二資料項目所基於之資料不相關的一已知大小。
- 如請求項44之方法,其中該當前交易具有一已知交易大小。
- 如請求項45之方法,其進一步包含計算要將該當前交易包括於該區塊鏈上之一交易費用的步驟,其中該交易費用係在給定該已知交易大小之情況下被準確地計算。
- 如前述請求項中任一項或多項之方法,其中該當前交易屬於一第二交易集合,且一第三狀態資料係基於一第三交易參考及/或一第四交易參考而產生。
- 如請求項47之方法,其中該第三狀態資料儲存於該當前交易之另一輸出上。
- 如前述請求項中任一項或多項之方法,其中該當前交易屬於一第二交易集合,且該第一狀態資料係進一步基於一第三交易參考及/或一第四交易參考。
- 如請求項49之方法,其中該第一狀態資料為一默克爾樹之一默克爾樹根,其中該默克爾樹係基於該第三交易參考及/或第四交易參考而被建構包含一葉節點或多個葉節點。
- 如前述請求項中任一項或多項之方法,其進一步包含在產生該第二交易之前判定該第二交易參考。
- 如前述請求項中任一項或多項之方法,其中該第一交易參考包含指示該當前交易為該交易集合中之一第一交易的資料,及/或該第二交易參考包含指示該當前交易為該交易集合中之一最後交易的資料。
- 如請求項52之方法,其中指示該當前交易為該交易集合中之一第一交易的該資料及/或指示該當前交易為該交易集合中之一最後交易的該資料為一零之位元組字串。
- 如前述請求項中任一項或多項之方法,其中該第一交易參考為一空參考及/或該第二交易參考為一空參考。
- 如請求項54之方法,其中該空參考包含一零之位元組字串。
- 如請求項53或55之方法,其中該零之位元組字串為32位元組長。
- 一種裝置,其包含一處理器及記憶體,該記憶體包括可執行指令,由於該處理器之執行該等可執行指令,致使該裝置執行如前述請求項中任一項或多項之電腦實施方法。
- 一種非暫時性電腦可讀儲存媒體,其包含電腦程式碼指令,該等電腦程式碼指令可由一電腦執行以進行如請求項1至56中任一項或多項之方法。
- 一種電腦程式,其包含多數個指令,當該程式由一電腦執行時致使該電腦進行如前述請求項1至56中任一項或多項之方法。
- 一種系統,其包含: 如請求項57之一裝置,以及 一用戶端裝置,其經組配以將資料提交至該裝置使得所提交之該資料之一表示被包括於一區塊鏈上。
- 如請求項1至56中任一項或多項之方法,其供用於在該區塊鏈上儲存及追蹤家畜相關資料,該方法包含以下步驟: 接收一附加事件訊息,該附加事件訊息包含:一動物唯一識別符及與一動物相關聯之一事件的一描述符,該動物與該動物唯一識別符相關聯,且 其中該第一狀態資料係基於該動物唯一識別符以及該事件之該描述符。
- 如請求項61之方法,其中該附加事件訊息與對與該動物唯一識別符相關聯之該動物執行的一疫苗接種相關。
- 如請求項62之方法,其中該動物唯一識別符係使用一RFID標籤來判定。
- 如請求項61至63中任一項或多項之方法,其進一步包含以下步驟: 判定與該動物唯一識別符相關聯之一事件串流。
- 如請求項61至64中任一項或多項之方法,其中前一區塊鏈交易參考為對與該事件串流相關聯之一交易的一參考,該事件串流與在該動物唯一識別符中所參考之該動物相關聯。
- 如請求項61至65中任一項或多項之方法,其進一步包含以下步驟: 接收包含一動物唯一識別符及一事件參考之一驗證請求, 獲得由該事件參考所參考之一事件的一驗證證明, 將該驗證證明傳輸至該驗證請求之一發送者。
- 如請求項66之方法,其中該驗證證明為一默克爾證明。
- 一種驗證與一動物相關聯之一事件的方法,其包含以下步驟: 獲得與該事件相關之事件資料; 自來自一區塊鏈之一交易獲得一存在值證明,其中該交易與一交易集合相關聯,且其中根據如請求項61至65中任一項或多項之一方法,該交易儲存於該區塊鏈上; 獲得一驗證證明;以及 基於該驗證證明及該存在值證明而判定該事件資料之有效性。
- 一種家畜管理系統,其包含: 一使用者裝置; 一家畜管理資料庫; 一區塊鏈介面系統; 其中該使用者裝置經組配以在一動物相關事件期間捕獲與一動物相關聯之一唯一識別符且將與該事件相關之資料以及該唯一識別符傳輸至該家畜管理資料庫; 其中該家畜管理資料庫經組配以接收該唯一識別符及與該事件相關之該資料,且其中該家畜管理資料庫經進一步組配以將該唯一識別符及與該事件相關之該資料傳輸至該區塊鏈介面系統; 其中該區塊鏈介面系統經組配以進行如請求項1至56或61至67中任一項或多項之方法。
- 如請求項1至56或61至67中任一項或多項之方法,其中該第一狀態資料係基於一第三交易參考,其中該第三交易參考係基於對一第三交易之一參考。
- 如請求項70之方法,其進一步包含以下步驟: 獲得對交易之一計數分支之一參考, 產生一計數狀態資料,其中該計數狀態資料係基於該交易集合中之分支的一數目及對該等交易之計數分支中之一最近的交易的一參考, 產生包含該計數狀態資料之一計數狀態交易,以及 將該當前交易提交至該區塊鏈。
- 如請求項1至56、61至67、70或71中任一項或多項之方法,其中該第一交易參考及/或該第二交易參考為對儲存於或待儲存於另一區塊鏈上之一交易的一參考,其中該另一區塊鏈不同於該區塊鏈。
- 如請求項72之方法,其中該第一交易參考及/或第二交易參考為對一基於帳戶之區塊鏈的一參考。
- 如請求項73之方法,其中該第一交易參考及/或第二交易參考包含一帳戶位址及一臨時亂數。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB2204293.1A GB202204293D0 (en) | 2022-03-25 | 2022-03-25 | A computer implemented method and system |
GB2204293.1 | 2022-03-25 | ||
GB2206682.3 | 2022-05-06 | ||
GB202206682 | 2022-05-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202341044A true TW202341044A (zh) | 2023-10-16 |
Family
ID=85800260
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112111256A TW202341044A (zh) | 2022-03-25 | 2023-03-24 | 有序且僅可附加之資料儲存技術 |
TW112111268A TW202341706A (zh) | 2022-03-25 | 2023-03-24 | 使用有序且僅可附加之資料儲存的選擇性存在證明技術 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112111268A TW202341706A (zh) | 2022-03-25 | 2023-03-24 | 使用有序且僅可附加之資料儲存的選擇性存在證明技術 |
Country Status (2)
Country | Link |
---|---|
TW (2) | TW202341044A (zh) |
WO (2) | WO2023180486A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201915443D0 (en) * | 2019-10-24 | 2019-12-11 | Nchain Holdings Ltd | Data Structure for efficiently verifying data |
WO2021250045A1 (en) * | 2020-06-10 | 2021-12-16 | Elas Holdings PTY LTD | Computer implemented systems and methods |
GB2596347A (en) * | 2020-06-26 | 2021-12-29 | Nchain Holdings Ltd | Methods and devices for validating data in a blockchain network |
-
2023
- 2023-03-23 WO PCT/EP2023/057562 patent/WO2023180486A1/en active Application Filing
- 2023-03-23 WO PCT/EP2023/057563 patent/WO2023180487A1/en active Application Filing
- 2023-03-24 TW TW112111256A patent/TW202341044A/zh unknown
- 2023-03-24 TW TW112111268A patent/TW202341706A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023180486A1 (en) | 2023-09-28 |
TW202341706A (zh) | 2023-10-16 |
WO2023180487A1 (en) | 2023-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11451530B2 (en) | Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment | |
US20190236562A1 (en) | Systems, methods, and apparatuses for implementing document interface and collaboration using quipchain in a cloud based computing environment | |
CN115152177B (zh) | 提供机密知识的专门证明的系统和方法 | |
US20240323018A1 (en) | A computer implemented system and method | |
TW202215828A (zh) | 用以同步及基元追蹤之方法及系統 | |
CN117652124A (zh) | 区块链区块和存在证明 | |
TW202341044A (zh) | 有序且僅可附加之資料儲存技術 | |
US20240320681A1 (en) | A computer implemented method and system | |
CN118648008A (zh) | 使用有序的仅追加数据存储的选择性存在证明 | |
TW202304183A (zh) | 電腦實行方法及系統 | |
TW202312057A (zh) | 電腦實施方法及系統 | |
JP2024540057A (ja) | コンピュータ実装システムおよび方法 | |
KR20220143864A (ko) | 정렬된 데이터 로깅을 위한 방법, 데이터 구조, 및 시스템 | |
TW202329668A (zh) | 證明及驗證有序事件序列之技術 | |
CN118525484A (zh) | 区块链区块和存在证明 | |
CN117693926A (zh) | 区块链区块和存在证明 |