TW202220411A - 默克爾證明實體 - Google Patents
默克爾證明實體 Download PDFInfo
- Publication number
- TW202220411A TW202220411A TW110138158A TW110138158A TW202220411A TW 202220411 A TW202220411 A TW 202220411A TW 110138158 A TW110138158 A TW 110138158A TW 110138158 A TW110138158 A TW 110138158A TW 202220411 A TW202220411 A TW 202220411A
- Authority
- TW
- Taiwan
- Prior art keywords
- blockchain
- transaction
- target
- transactions
- proof
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 88
- 238000013515 script Methods 0.000 claims description 49
- 238000012545 processing Methods 0.000 claims description 21
- 238000013138 pruning Methods 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 2
- 238000001914 filtration Methods 0.000 claims description 2
- 230000001419 dependent effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 17
- 238000012795 verification Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 230000000644 propagated effect Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 244000141353 Prunus domestica Species 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000005065 mining Methods 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013479 data entry Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/3236—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 using cryptographic hash functions
- H04L9/3239—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 using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
一種提供在一區塊鏈上存在一區塊鏈交易之一資料項之證明的電腦實施方法,其中該方法包含:自一請求當事方獲得一目標區塊鏈交易的目標資料項;獲得該目標區塊鏈交易;獲得該目標區塊鏈交易之一目標默克爾證明,其中一對應目標默克爾根含於該區塊鏈之一區塊內,且其中獲得該目標默克爾證明包含計算該目標區塊鏈交易的一目標交易識別符在一對應目標默克爾樹之一葉層內之一索引;以及至少輸出該目標默克爾證明以供該請求當事方用作在該區塊鏈上存在該目標資料項作為該目標區塊鏈交易的部分之證明。
Description
發明領域
本揭露內容係關於提供及獲得在區塊鏈上存在區塊鏈交易之資料的證明之方法,或換言之,提供及獲得在區塊鏈上存在含有該資料之區塊鏈交易的證明之方法。
發明背景
區塊鏈係指分散式資料結構之形式,其中區塊鏈之複本被維持在分散式同級間(P2P)網路(在下文被稱作「區塊鏈網路」)中之多個節點中之各者處且被廣泛公佈。區塊鏈包含資料區塊鏈,其中各區塊包含一或多個交易。除所謂的「coinbase交易」以外,各交易亦指回至序列中之先前交易,該序列可橫跨追溯至一或多個coinbase交易之一或多個區塊。下文進一步論述coinbase交易。經提交至區塊鏈網路之交易包括於新區塊中。新區塊係藉由通常被稱作「挖掘」之過程而創建,其涉及多個節點中之各者競相執行「工作量證明」,亦即,基於等待包括於區塊鏈的新區塊中之有序及經驗核待決交易之經界定集合的表示而解決密碼難題。應注意,可在一些節點處修剪區塊鏈,且可經由僅公佈區塊標頭來達成區塊之公佈。
區塊鏈中之交易可用於以下目的中之一或多者:傳送數位資產(亦即,數個數位代幣(token));對虛擬化分類帳或註冊表中之條目集合進行排序;接收及處理時戳條目;及/或按時間對索引指標進行排序。亦可利用區塊鏈以便對區塊鏈之頂部上的額外功能性分層。舉例而言,區塊鏈協定可允許將額外使用者資料或資料之索引儲存於交易中。對於可儲存於單個交易內之最大資料容量不存在預先指定之限制,且因此可併入愈來愈複雜之資料。舉例而言,此可用於將電子文件或音訊或視訊資料儲存於區塊鏈中。
區塊鏈網路之節點(其通常被稱作「挖掘者」)執行稍後將更詳細地描述之分散式交易登記及驗證過程。總之,在此過程期間,節點驗核交易且將其插入至區塊範本中,針對該區塊範本,該等交易嘗試識別有效的工作量證明解決方案。一旦找到有效解決方案,便將新區塊傳播至網路之其他節點,因此使得各節點能夠在區塊鏈上記錄新區塊。為了使交易經記錄於區塊鏈中,使用者(例如,區塊鏈用戶端應用程式)將交易發送至網路之節點中之一者以供傳播。接收交易之節點可競相找到將經驗核交易併入至新區塊中之工作量證明解決方案。各節點經組配以實行相同節點協定,其將包括交易有效之一或多個條件。無效交易將不被傳播或併入至區塊中。假設交易經驗核且由此在區塊鏈上被接受,則交易(包括任何使用者資料)將因此在區塊鏈網路中之節點中之各者處保持被登記及索引化為不可變的公用記錄。
成功地解決工作量證明難題以創建最新區塊之節點通常係以被稱為「coinbase交易」之新交易被獎勵,該新交易分配一定金額之數位資產,亦即,數個代幣。對無效交易之偵測及拒絕係藉由競爭節點之動作實行,該等競爭節點充當網路之代理且經激勵以報告且阻止不法行為。資訊之廣泛公佈允許使用者連續地稽核節點之效能。對僅區塊標頭之公佈允許參與者確保區塊鏈之持續完整性。
在「基於輸出」之模型(有時被稱作基於UTXO之模型)中,給定交易之資料結構包含一或多個輸入及一或多個輸出。任何可用輸出皆包含一元素,該元素指定可自進行中之交易序列導出之一定金額的數位資產。可用輸出有時被稱作UTXO (「未用交易輸出」)。該輸出可進一步包含鎖定指令碼,其指定用於未來兌換該輸出之條件。鎖定指令碼係界定驗核及轉移數位代幣或資產所必需之條件的述詞。交易(除coinbase交易以外)之各輸入包含指向先前交易中之此輸出的指標(亦即,參考),且可進一步包含用於解鎖所指向輸出之鎖定指令碼的解鎖指令碼。因此,考慮一對交易,將其被稱為第一交易及第二交易(或「目標」交易)。第一交易包含至少一個輸出,其指定一定金額之數位資產且包含界定解鎖該輸出之一或多個條件的鎖定指令碼。第二目標交易包含至少一個輸入,其包含指向第一交易之輸出的指標,及用於解鎖第一交易之輸出的解鎖指令碼。
在此模型中,當將第二目標交易發送至區塊鏈網路以在區塊鏈中傳播及記錄時,在各節點處應用之有效性準則中之一者將係解鎖指令碼滿足第一交易之鎖定指令碼中所界定的所有一或多個條件。另一準則將係第一交易之輸出尚未由另一較早有效交易兌換。根據此等條件中之任一者發現目標交易為無效的任何節點將不會傳播該目標交易(作為有效交易,但可能登記無效交易),亦不將該目標交易包括於新區塊中以記錄在區塊鏈中。
交易模型之替代類型為基於帳戶之模型。在此情況下,各交易皆不會藉由返回參考一連串過去交易中之先前交易之UTXO來界定待轉移的金額,而係參考絕對帳戶餘額。所有帳戶之當前狀態由與區塊鏈分離之節點儲存,且不斷更新。
發明概要
默克爾證明通常用於驗證在區塊鏈上是否存在交易。希望驗證在區塊鏈上是否存在特定交易之當事方(例如使用者)可搜尋來自區塊鏈節點之默克爾證明。若使用接收到的默克爾證明,可將交易追溯至與區塊鏈之區塊中所包括之默克爾根匹配的值,則使用者可確信在區塊鏈上存在該交易。應注意,可能額外檢查才能絕對確定。
當前,只有提供默克爾證明之實體係區塊鏈節點(亦被稱為挖掘者)。如上文所提及,區塊鏈節點主要涉及交易驗核以及區塊建構及公佈。
區塊鏈技術的使用不斷增加,因而區塊鏈系統需要能夠按比例調整以便與增加的使用及需求匹配。一種按比例調整區塊鏈系統之方法係擴大區塊之大小、交易率,且將區塊鏈技術用作各種資料應用程式的不可變分類帳。此將大大增加區塊鏈之大小及用於交易驗核之處理量。因此,對於最終使用者及服務提供商而言,用於儲存完整區塊鏈、驗核交易且對交易查詢作出回應之資源可能過於昂貴(就儲存及處理要求而言)。
因此,需要一種可提供在區塊鏈上存在交易之證明之更具資源效率的實體。此外,若此實體能夠提供經儲存(亦即,嵌入)於交易中之資料完整性之證明,則此將為合乎需要的。此在無信任環境中尤其合乎需要。
根據本文中所揭露之一個態樣,提供一種提供在區塊鏈上存在區塊鏈交易之資料項的證明之電腦實施方法,其中該方法藉由經組配以儲存各別區塊鏈交易之交易識別符集合但不向區塊鏈網路公佈新區塊鏈區塊之默克爾證明實體執行,且其中該方法包含:自請求當事方獲得目標區塊鏈交易的目標資料項;獲得目標區塊鏈交易;獲得目標區塊鏈交易之目標默克爾證明,其中對應目標默克爾根含於區塊鏈之區塊內,且其中獲得目標默克爾證明包含計算目標區塊鏈交易的目標交易識別符在對應目標默克爾樹之葉層內之索引;以及至少輸出目標默克爾證明以供請求當事方用作在區塊鏈上存在目標資料項作為目標區塊鏈交易的部分之證明。
默克爾證明實體不執行建構及/或公佈區塊鏈上之區塊之操作。換言之,默克爾證明實體並非係區塊鏈節點(根據此項技術中用於此類節點之一個術語,並非係「挖掘者」)。在下文亦被稱作默克爾證明伺服器(MPS)之默克爾證明實體能夠將默克爾證明提供至請求當事方,但不參與交易驗核或區塊建構,因此與區塊鏈節點相比為不太資源密集型的。資料儲存、資料搜尋以及資料擷取藉由僅儲存相關資訊來最佳化,在此情況下,相關資訊為經儲存交易集合。
在一些實例中,MPS可在不必儲存整個區塊鏈之情況下伺服於默克爾證明,因此與區塊鏈節點相比,具有顯著降低的儲存要求。舉例而言,MPS可僅以原始格式儲存感興趣的彼等交易。經儲存交易可與特定應用程式或服務相關。作為特定實例,經儲存交易可含有一或多個患者之醫療資料。作為另一實例,經儲存交易可含有任何交易,該等交易含有特定資料項(例如公用密鑰散列)。MPS支援藉由交易中之諸如位址、公用密鑰、資料協定旗標等的資料欄位或任何部分交易資料進行查詢。
在其他實例中,MPS可在區塊鏈交易之整個區域內提供其服務。雖然就交易而言具有與區塊鏈節點相同之儲存要求,但MPS具有降低的處理要求,此係由於其不需要驗核交易。為提供默克爾證明,MPS可僅根據交易資料或對應TxID構建默克爾樹,而不明確地驗證彼等交易。
MPS識別含有所查詢的資料之交易且輸出含有該資料之交易的默克爾證明。默克爾證明證明了在區塊鏈上存在交易。因此,若在交易中存在所查詢的資料,則在區塊鏈上之交易中存在所查詢的資料。應注意,此係由於如下事實:原始交易中之資料之任何更改皆將意謂默克爾證明將係無效的。換言之,原始交易中之最輕微的變化將意謂交易之交易識別符(TxID)將發生變化,且由於TxID為用於生成默克爾證明之默克爾樹的葉散列,因而默克爾證明不會導致所需默克爾根(亦即,經儲存於含有交易之區塊中之默克爾根)。
藉由判定目標交易識別符之索引,亦即,目標交易之葉散列,MPS可正確地識別正確散列以提供為默克爾證明的部分。
此外,若提供了交易之默克爾證明或若交易之輸出中的一者已用且使用交易之默克爾證明與原始使用交易一起提供,則可證明交易存在於區塊鏈上。此觀察結果可用於使相關交易鏈所需的證明之數目最小化。下文提供更多細節。
較佳實施例之詳細說明
實例系統概述
圖1展示用於實施區塊鏈150之實例系統100。系統100可包含封包交換網路101,其通常為諸如網際網路之廣域網際網路。封包交換網路101包含多個區塊鏈節點104,該等區塊鏈節點可經配置以在封包交換網路101內形成同級間(P2P)網路106。雖然未示出,但區塊鏈節點104可經配置為接近完整的圖。各區塊鏈節點104因此高度連接至其他區塊鏈節點104。
各區塊鏈節點104包含同級者之電腦裝備,其中節點104中之不同者屬於不同同級者。各區塊鏈節點104包含:處理設備,其包含一或多個處理器,例如一或多個中央處理單元(CPU)、加速器處理器、特殊應用處理器及/或場可規劃閘陣列(FPGA);以及其他裝備,諸如特殊應用積體電路(ASIC)。各節點亦包含記憶體,亦即,呈一或多個非暫時性電腦可讀媒體之形式的電腦可讀儲存裝置。記憶體可包含一或多個記憶體單元,其採用一或多個記憶體媒體,例如,諸如硬碟之磁性媒體;諸如固態驅動機(SSD)、快閃記憶體或EEPROM之電子媒體;及/或諸如光碟驅動機之光學媒體。
區塊鏈150包含資料區塊鏈151,其中在分散式或區塊鏈網路106中之多個區塊鏈節點104中之各者處維持區塊鏈150之各別複本。如上文所提及,維持區塊鏈150之複本未必意謂完整地儲存區塊鏈150。實情為,只要各區塊鏈節點150儲存各區塊151之區塊標頭(下文所論述),即可修剪區塊鏈150之資料。該鏈中之各區塊151包含一或多個交易152,其中在此上下文中之交易係指一種資料結構。資料結構之性質將取決於用作交易模型或方案之部分的交易協定之類型。給定區塊鏈將始終使用一個特定交易協定。在一個常見類型之交易協定中,各交易152之資料結構包含至少一個輸入及至少一個輸出。各輸出指定表示如財產之數位資產之數量的金額,其實例為輸出以密碼方式鎖定至之使用者103 (需要彼使用者之簽名或其他解決方案以便解鎖且由此兌換或使用)。各輸入均指回至先前交易152之輸出,由此鏈接交易。
各區塊151亦包含區塊指標155,該區塊指標155指回至該鏈中之先前創建的區塊151以便界定區塊151之順序次序。各交易152 (除了coinbase交易以外)包含指回至先前交易之指標,以便界定交易序列之次序(注意:允許交易152之序列進行分支)。區塊151之鏈一直追溯至起源區塊(Gb) 153,該起源區塊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中之各者處辨識及維持該區塊151。區塊指標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之任何動作可藉由在各別電腦裝備之處理設備上運行的軟體執行。節點軟體可實施於應用層或諸如作業系統層或協定層之下部層或應用層及下部層之任何組合處的一或多個應用程式中。
亦連接至網路101的係充當消費使用者之角色的多個當事方103中之各者的電腦裝備102。此等使用者可與區塊鏈網路106互動,但不參與驗核交易或建構區塊。此等使用者或代理103中之一些可在交易中充當發送者及接收者。其他使用者可與區塊鏈150互動,而未必充當發送者或接收者。舉例而言,一些當事方可充當儲存實體,其儲存區塊鏈150之複本(例如,已自區塊鏈節點104獲得區塊鏈之複本)。
當事方103中之一些或全部可作為不同網路,例如覆蓋於區塊鏈網路106的頂部上之網路之部分而連接。區塊鏈網路之使用者(通常被稱作「用戶端」)可據稱包括區塊鏈網路106之系統的部分;然而,此等使用者並非區塊鏈節點104,此係因為其不執行區塊鏈節點之所需角色。實情為,各當事方103可與區塊鏈網路106互動,且由此,藉由連接至區塊鏈節點106 (亦即,與該區塊鏈節點106通訊)而利用區塊鏈150。出於例示性目的展示二個當事方103及其各別裝備102:第一當事方103a及其各別電腦裝備102a以及第二當事方103b及其各別電腦裝備102b。將理解,更多此類當事方103及其各別電腦裝備102可存在且參與系統100,但出於方便起見不對其加以說明。各當事方103可為個人或組織。僅僅作為說明,第一當事方103a在本文中被稱作Alice,且第二當事方103b被稱作Bob,但將瞭解,此不具限制性,且在本文中對Alice或Bob之任何引用可分別用「第一當事方」及「第二當事方」替換。
各當事方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能夠針對一或多個比特幣節點104創建、授權(例如,簽名)及發送交易152以接著在區塊鏈節點104之整個網路中傳播且由此包括於區塊鏈150中。另一功能性為將其當前擁有之數位資產之金額報告給各別當事方。在基於輸出之系統中,此第二功能性包含核對各種散佈在整個區塊鏈150中之交易152的輸出中所界定之金額,該等金額屬於所討論的當事方。
應注意:雖然各種用戶端功能性可經描述為整合至給定用戶端應用程式105中,但此未必為限制性的,且實情為,本文中所描述之任何用戶端功能性可替代地實施於一套二個或更多個不同應用程式中,例如經由API介接,或一個應用程式為另一應用程式之外掛程式。更一般而言,用戶端功能性可實施於應用層或諸如作業系統之下部層或應用層及下部層之任何組合處。下文將關於用戶端應用程式105進行描述,但將瞭解,此並非限制性的。
各電腦裝備102上之用戶端應用程式或軟體105的例項可操作地耦合至網路106之區塊鏈節點104中之至少一者。此使得用戶端105之電子錢包功能能夠將交易152發送至網路106。用戶端105亦能夠接觸區塊鏈節點104以便針對各別當事方103為接收者之任何交易而查詢區塊鏈150 (或實際上檢驗區塊鏈150中之其他當事方之交易,此係由於在實施例中,區塊鏈150係部分地經由其公用可見性而提供交易信任之公用設施)。各電腦裝備102上之電子錢包功能經組配以根據交易協定來制定及發送交易152。如上文所闡述,各區塊鏈節點104運行軟體,該軟體經組配以根據區塊鏈節點協定來驗核交易152,且轉遞交易152以便在整個區塊鏈網路106中傳播該等交易。交易協定及節點協定彼此對應,且給定交易協定與給定節點協定相配,其一起實施給定交易模型。相同交易協定用於區塊鏈150中之所有交易152。相同節點協定由網路106中之所有節點104使用。
當給定當事方103,比如Alice,希望發送待包括於區塊鏈150中之新交易152j時,其接著根據相關交易協定來制定新交易(使用其用戶端應用程式105中之電子錢包功能)。其接著將交易152自用戶端應用程式105發送至其連接至的一或多個區塊鏈節點104。例如,此可為最佳地連接至Alice之電腦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將解決包括Alice之交易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,該標頭201可包含輸入欄位202及輸出欄位203之大小之指示符。標頭201亦可包括交易之ID。在實施例中,交易ID為交易資料(不包括交易ID本身)之散列,且儲存於經提交至節點104之原始交易152的標頭201中。
假設Alice 103a希望創建將所討論之一定金額之數位資產轉移至Bob 103b的交易152j。在圖2中,Alice之新交易152j經標記為「
Tx
1 」。該交易需要一定金額之數位資產且將該數位資產中的至少一些轉移至Bob,該數位資產在序列中之先前交易152i之輸出203中鎖定至Alice。在圖2中,先前交易152i經標記為「
Tx
0 」。
Tx
0 及
Tx
1 僅係任意標記。其未必意謂
Tx
0 係區塊鏈151中之第一交易,或
Tx
1 係集區154中之緊接著的下一交易。
Tx
1 可指回至任何先前(亦即,前期)交易,其仍具有鎖定至Alice之未用輸出203。
在Alice創建其新交易
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,例如Alice的簽名之要求。解鎖指令碼出現在交易之輸出中。解鎖指令碼(亦稱為scriptSig)為用區域特定語言編寫的一段程式碼,該區域特定語言提供滿足鎖定指令碼準則所需之資訊。舉例而言,其可含有Bob之簽名。解鎖指令碼出現在交易之輸入202中。
因此,在所說明實例中,
Tx
0 之輸出203中之
UTXO
0 包含鎖定指令碼[Checksig
P
A ],該鎖定指令碼需要Alice之簽名Sig
P
A 以便兌換
UTXO
0 (嚴格地,以便使嘗試兌換
UTXO
0 之後續交易係有效的)。[Checksig
P
A ]含有來自Alice之公用-私用密鑰對之公用密鑰
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 >,其包含Alice的密碼簽名,該密碼簽名藉由Alice將其來自密鑰對之私用密鑰應用於資料之預定義部分(在密碼學中有時被稱為「訊息」)而創建。需要由Alice簽名以提供有效簽名之資料(或「訊息」)可由鎖定指令碼或由節點協定或由此等之組合來界定。
當新交易
Tx
1 到達區塊鏈節點104時,該節點應用節點協定。此包含一起運行鎖定指令碼及解鎖指令碼以檢查解鎖指令碼是否滿足鎖定指令碼中所界定之條件(其中此條件可包含一或多個準則)。在實施例中,此涉及串接二個指令碼:
<Sig
P
A > <
P
A > || [Checksig
P
A ]
其中「||」表示串接,且「<…>」意謂將資料置放於堆疊上,且「[…]」係鎖定指令碼所包含之函式(在此實例中係基於堆疊之語言)。等效地,指令碼可使用共同堆疊一個接一個地運行,而非串接指令碼。無論如何,當一起運行時,指令碼使用如包括於
Tx
0 之輸出中之鎖定指令碼中的Alice之公用密鑰
P
A ,以鑑認
Tx
1 之輸入中的解鎖指令碼含有對資料之預期部分進行簽名的Alice之簽名。亦需要包括資料自身(「訊息」)之預期部分,以便執行此鑑認。在實施例中,經簽名資料包含整個
Tx
1 (因此不需要包括單獨元素來明確指定資料之經簽名部分,此係因為其已固有地存在)。
藉由公用-私用密碼學之鑑認的細節將為熟習此項技術者所熟悉。基本上,若Alice已使用其私用密鑰對訊息進行簽名,則明確給定了Alice的公用密鑰及訊息,諸如節點104之另一實體能夠鑑認該訊息一定已由Alice簽名。簽名通常包含對訊息進行散列、對散列進行簽名以及將此標記至訊息上作為簽名,因此使得公用密鑰之任何持有者能夠鑑認該簽名。因此,應注意,本文中對特定資料片段或交易之部分或其類似者進行簽名之任何參考在實施例中可意謂對彼資料片段或交易之部分的散列進行簽名。
若
Tx
1 中之解鎖指令碼滿足
Tx
0 之鎖定指令碼中指定的一或多個條件(因此在所展示實例中,若Alice的簽名經提供於
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之情況下為有效的。若
Tx
1 嘗試使用已由另一交易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之間經劃分。因此,若Alice不想將
UTXO
0 中所界定之所有金額給予Bob,則其可使用其餘部分在
Tx
1 之第二輸出中給自己零錢,或付錢給另一當事方。
實務上,Alice通常亦將需要包括比特幣節點104之費用,該比特幣節點成功地將Alice之交易104包括於區塊151中。若Alice不包括此費用,則區塊鏈節點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 中所指定之金額,則差額可由贏得工作量證明競賽之節點104指派以創建含有
UTXO
1 之區塊。然而,替代地或另外,不一定排除可在交易152之其自身的UTXO 203中之一者中明確指定交易費用。
Alice及Bob之數位資產由區塊鏈150中任何位置處之任何交易152中鎖定至Alice及Bob的UTXO組成。因此,給定當事方103之資產通常遍及整個區塊鏈150中之各種交易152的UTXO而散佈。區塊鏈150中之任何位置都未儲存界定給定當事方103之總餘額的一個數字。用戶端應用程式105中之電子錢包功能的作用係將鎖定至各別當事方且尚未在另一向前交易中使用之所有各種UTXO的值在一起核對。其可藉由查詢如儲存於比特幣節點104中之任一者處的區塊鏈150的複本來進行此操作。
應注意,通常示意性地表示指令碼程式碼(亦即,不使用確切語言)。舉例而言,吾人可使用操作碼(作業碼)來表示特定函式。「OP_…」係指指令碼語言之特定作業碼。作為實例,OP_RETURN為指令碼語言之作業碼,其會在鎖定指令碼的開始處以OP_FALSE開頭時創建可在交易內儲存資料的交易之不可用輸出,且由此將資料不可變地記錄在區塊鏈150中。例如,資料可包含需要儲存於區塊鏈中之文件。
通常,交易之輸入包含對應於公用密鑰
P
A 之數位簽名。在實施例中,此係基於使用橢圓曲線secp256k1之ECDSA。數位簽名對特定資料片段進行簽名。在一些實施例中,對於給定交易,簽名會對交易輸入之部分及交易輸出中之一些或全部進行簽名。數位簽名所簽名之輸出之特定部分取決於SIGHASH旗標。SIGHASH旗標通常係4位元組程式碼,其包括於簽名之末尾,以選擇對哪些輸出進行簽名(且因此在簽名時固定)。
鎖定指令碼有時被稱為「scriptPubKey」,其係指其通常包含各別交易所鎖定至之當事方的公用密鑰之事實。解鎖指令碼有時被稱為「scriptSig」,其係指其通常供應對應簽名之事實。然而,更一般而言,在區塊鏈150之所有應用程式中,兌換UTXO之條件不一定包含鑑認簽名。更一般而言,指令碼處理語言可用於界定任何一或多個條件。因此,更一般術語「鎖定指令碼」及「解鎖指令碼」可為較佳的。
用戶端軟體
圖3A示出用於實施本發明所揭露方案的實施例之用戶端應用程式105之實例實施方式。用戶端應用程式105包含交易引擎401及使用者介面(UI)層402。交易引擎401經組配以根據上文所論述且稍後將進一步詳細論述之方案實施用戶端105之與基礎交易相關之功能性,以便制定交易152、經由側頻道301接收及/或發送交易及/或其他資料,及/或將交易發送至一或多個節點104以經由區塊鏈網路106進行傳播。
UI層402經組配以經由各別使用者之電腦裝備102之使用者輸入/輸出(I/O)構件來呈現使用者介面,包括將經由裝備102的使用者輸出構件將資訊輸出至各別使用者103,及經由裝備102的使用者輸入構件自各別使用者103接收回輸入。舉例而言,使用者輸出構件可包含用於提供視覺輸出之一或多個顯示螢幕(觸控式或非觸控式螢幕)、用於提供音訊輸出之一或多個揚聲器,及/或用於提供觸覺輸出之一或多個觸覺輸出裝置等。使用者輸入構件可包含例如以下各者之輸入陣列:一或多個觸控式螢幕(與用於輸出構件之觸控式螢幕相同或不同);一或多個基於游標之裝置,諸如滑鼠、軌跡墊或軌跡球;一或多個麥克風及語音或話音辨識演算法,其用於接收語音或聲音輸入;一或多個基於姿勢之輸入裝置,其用於接收呈手勢或身體姿勢之形式的輸入;或一或多個機械按鈕、開關或操縱桿等。
應注意:雖然本文中之各種功能性可描述為整合至相同用戶端應用程式105中,但此未必為限制性的,且實情為,其可實施於一套二個或更多個不同應用程式中,例如一個應用程式為另一應用程式之外掛程式或經由應用程式設計介面(API)介接。舉例而言,交易引擎401之功能性可實施於與UI層402分離之應用程式中,或諸如交易引擎401的給定模組之功能性可在多於一個應用程式之間進行劃分。亦不排除可能在比如作業系統層處實施所描述功能性中之一些或全部。在本文中任何位置皆參考單個或給定應用程式105等等的情況下,應瞭解,此僅作為實例,且更一般而言,所描述功能性可以任何形式之軟體實施。
圖3B提供使用者介面(UI) 500之實例的模型,該使用者介面500可由Alice之裝備102a上之用戶端應用程式105a的UI層402呈現。應瞭解,類似UI可由Bob的裝備102b或任何其他當事方之裝備上之用戶端105b呈現。
作為說明,圖3B自Alice之視角展示UI 500。UI 500可包含經由使用者輸出構件呈現為不同UI元件之一或多個UI元件501、502、502。
舉例而言,UI元件可包含一或多個使用者可選擇元件501,其可為諸如不同螢幕上按鈕或選單中之不同選項等等。使用者輸入構件經配置以使得使用者103 (在此情況下為Alice 103a)能夠選擇或以其他方式操作選項中之一者,諸如藉由點擊或觸碰螢幕上的UI元件,或說出所需選項的名稱(應注意:如本文中所使用之術語「手動」僅意指與自動相對,且未必限於使用手)。
替代地或另外,UI元件可包含一或多個資料鍵入欄位502。此等資料鍵入欄位經由使用者輸出構件例如在螢幕上呈現,且資料可經由使用者輸入構件,例如鍵盤或觸控式螢幕而經鍵入至欄位中。替代地,可例如基於語音辨識而口頭接收資料。
替代地或另外,UI元件可包含一或多個資訊元件503,其經輸出以將資訊輸出至使用者。例如,可在螢幕上或有聲地呈現此/此等元件。
應瞭解,呈現各種UI元件、選擇選項以及鍵入資料之特定構件並不重要。稍後將更詳細地論述此等UI元件之功能性。亦應瞭解,圖3中所展示之UI 500僅為圖示模型,且在實踐中,其可包含一或多個其他UI元件,出於簡明起見不對其加以說明。
默克爾樹
根據此等等式建構之二進位默克爾樹展示於圖4中。如所展示,我們可以看到,
情況對應於葉節點,其僅為對應之第
個資料封包
。
情況對應於內部或父級節點,其藉由遞歸地散列及串接子級節點而生成,直至找到一個父級(默克爾根)為止。
默克爾樹之主要功能為驗證某一資料封包
為
個資料封包
之清單或集合的成員。用於驗證之機制被稱為默克爾證明,且涉及獲得被稱為給定資料封包
及默克爾根
之默克爾路徑的散列集合。資料封包之默克爾證明僅為藉助於重複散列及串接重構根
所需的最小散列清單,通常被稱作『鑑認證明』。
若給定默克爾根
,則我們希望證明資料區塊
屬於由
表示之有序清單
,我們可執行默克爾證明如下:
i. 自受信任源獲得默克爾根
。
ii. 自源獲得默克爾證明
。在此情況下,
係散列集合:
。
iii. 使用
及
計算默克爾證明如下:
a. 散列資料區塊以獲得:
。
b. 與
串接且散列以獲得:
。
c. 與
串接且散列以獲得:
。
d. 與
串接且散列以獲得根:
,
。
e. 將所計算的根
與在(i)中獲得之根
進行比較:
1. 若
,則確認在樹中存在
且因此確認資料集
。
2. 若
,則證明已失敗且
未經確認為係
之成員。
當建構單個葉之默克爾證明時,所需最少資訊為
1. 葉之索引:葉在默克爾樹中之葉層中的位置。
2. 散列值之有序清單:計算默克爾根所需之散列值。
為了解釋葉之索引如何工作,考慮圖5中之默克爾樹。Bob知道根
R但不知道樹之所有葉。
D
0 之默克爾分支由一個索引0及三個散列值(帶圓圈)組成。索引將指示所提供的散列值是應串接至所計算的散列值之左側抑或是應串接至所計算的散列值之右側。
假設默克爾樹具有
個葉。在層0處給定索引
,讓
、
、
,亦即
係索引為
之葉節點之對葉節點的索引。我們將其稱作對,此係由於該等對經串接且散列以計算其在默克爾樹中之父級散列節點(參見上文)。索引為
之節點亦被稱作「所提供的散列」或「所需資料」,此係由於其必須在計算
葉節點之默克爾根時經提供。
以上等式假設索引在0處開始。
圖6A示出用於實施本發明之實施例的實例系統600。系統包含默克爾證明實體(或默克爾證明伺服器(MPS)) 601。應注意,術語「默克爾證明實體」僅用作經組配以執行本文中所描述的動作之實體的方便標記。類似地,術語「默克爾證明伺服器」未必意謂所描述的動作藉由伺服器(亦即,專用或傳統的伺服器單元或系統,比如機架或資料中心)執行,但此係一種可能的實施方式。亦展示的係區塊鏈節點104、請求當事方603以及SPV用戶端604。雖然僅展示此等實體中之各者中之一者,但應瞭解,一般而言,系統600可包含此等實體中的各者中之任何數目。
MPS 601經組配以提供在區塊鏈150上存在交易之特定資料項的證明,亦即,提供在區塊鏈上存在包含分量之交易的證明。MPS 601經組配以儲存交易集合。在一些實例中,MPS 601僅儲存經儲存於區塊鏈(亦即,並非整個區塊鏈150)上之交易子集。舉例而言,MPS 601可儲存感興趣的交易、與特定應用程式或服務相關之交易、含有特定鎖定指令碼、協定旗標、公用密鑰等之交易、含有媒體內容的交易等。在一些實例中,所有經儲存交易具有共同點,例如來自特定區塊之所有交易、在某一時間之後或在二個時間(時間可以UNIX時間或區塊高度量測)之間公佈的所有交易、來自由特定區塊鏈節點104公佈之一或多個區塊之所有交易等。替代地,MPS 601可儲存完整區塊鏈,亦即,所有已公佈交易。
MPS 601並非係區塊鏈節點104。亦即,MPS 601並非係挖掘節點或「挖掘者」。MPS 601可由區塊鏈節點操作或連接至區塊鏈節點,但MPS 601本身不執行以下步驟之操作:驗核交易、執行工作量證明、建構區塊、公佈區塊、實行共識規則等。
MPS 601經組配以獲得目標交易之目標資料項,亦即交易之資料項或與交易相關聯的資料項。舉例而言,系統600可包含一或多個請求當事方603。請求當事方603可將目標資料項發送至MPS 601作為對含有目標資料項之交易之默克爾證明的請求之部分。在一些實例中,僅將目標資料項發送至MPS 601被視為對默克爾證明之請求。
MPS 601經組配以獲得目標交易。可自儲存裝置(亦即,含有目標交易之經儲存交易集合)獲得目標交易。舉例而言,MPS 601可基於目標資料項來識別目標交易,以例如用於搜尋包含目標資料項之交易。作為特定實例,目標資料項可為交易識別符(TxID)。TxID唯一地識別交易。MPS 601可使用TxID執行查找。作為另一實例,目標資料項可為公用密鑰或公用密鑰散列。MPS 601可搜尋包含交易之輸入及/或輸出中之公用密鑰或公用密鑰散列之交易。或可將目標交易與目標資料項一起提供至MPS 601。
在獲得目標交易後,MPS 601亦經組配以獲得目標交易之「目標默克爾證明」,亦即,用於證明在區塊鏈上存在目標交易之默克爾證明。目標默克爾證明包含散列值之至少一個有序集合。散列值之有序集合中之散列值的數目係基於默克爾樹中之葉的數目,亦即,含有目標交易之區塊151中之交易的數目。默克爾證明亦可包括葉之索引,該索引指示散列值之有序集合中的第一散列值是應串接至目標TxID (亦即,目標交易之TxID)之左側抑或是應串接至目標TxID之右側。
MPS 601可儲存各經儲存交易之各別默克爾證明。亦即,可儲存目標默克爾證明以供稍後在需要時使用。
獲得目標默克爾證明包含自儲存裝置提取目標默克爾證明或計算即時目標默克爾證明。舉例而言,MPS 601可預先計算一或多個交易之默克爾證明,或替代地回應於接收到來自請求當事方之請求而計算默克爾證明。應注意,為了計算目標默克爾證明,需要給定區塊之所有交易以使得可生成默克爾樹。MPS 601可獲得交易之完整區塊,計算該區塊之默克爾樹且接著修剪不需要的交易。或MPS 601可自不同源獲得默克爾樹。MPS 601接著可儲存默克爾樹或僅儲存感興趣的交易之默克爾證明。當獲得目標交易時,MPS 601查找來自記憶體之對應默克爾證明(各默克爾證明可與儲存裝置中之各別交易或TxID相關聯)。
目標默克爾證明可包含對應默克爾樹之一或多個內部散列或內部節點。在彼情況下,有用的係,為請求當事方提供彼等內部散列之索引,使得請求當事方知道是將先前散列(例如目標TxID)串接至內部散列之左側抑或是串接至內部散列之右側。因此,當提取目標默克爾證明時,MPS 601使用葉散列之索引計算內部散列在目標默克爾證明中之索引,亦即,目標交易之TxID。MPS需要計算此等索引以便自經儲存樹提取默克爾證明,亦即,MPS儲存了樹,且葉索引允許其判定自樹中挑選哪些內部節點以提取正確的默克爾證明。
應注意,至少在一些實例中,MPS 601僅需要計算目標TxID之索引。此單個索引可能足以判定所需內部散列。
除了儲存各交易之各別默克爾證明的選項之外,MPS可預先計算及儲存一或多個默克爾樹。各默克爾樹包含多個經儲存TxID集合、內部散列值(或內部節點)集合以及默克爾根。在此實例中,獲得目標默克爾證明包含使用目標TxID之所計算的索引自含有目標TxID之默克爾樹提取目標默克爾證明(亦即,所需散列值)。
作為另一實例,MPS 601可回應於獲得目標TxID而計算目標默克爾證明。亦即,MPS 601可使用經儲存TxID集合中之一或多者計算目標默克爾證明(例如藉由計算完整默克爾樹且使用目標TxID之索引提取所需散列值)。應注意,此方法需要MPS 601在儲存裝置中具有來自包含目標交易之區塊151的所有交易。
用於獲得目標默克爾證明之另一選項用於使MPS 601接收及儲存來自例如區塊鏈節點104或SPV用戶端應用程式的不同實體之一或多個默克爾證明。取決於給予此實體之信任程度,MPS 601可驗證是否已正確地計算所獲得的默克爾證明。舉例而言,可針對含有默克爾證明意欲一起使用之各別交易之各別區塊的各別區塊標頭驗證默克爾證明。在此情況下,MPS 601可選擇僅儲存已驗證之接收到的默克爾證明。
MPS 601亦經組配以輸出目標默克爾證明。舉例而言,目標默克爾證明可直接傳輸至請求當事方603。或可例如在網頁上公佈目標默克爾證明。目標默克爾證明可用作在區塊鏈上存在目標交易之證明。MPS 601亦可將目標交易輸出至請求當事方603。若請求當事方603具有對目標交易之存取權,則此並非係必要的。
圖8示出可藉由MPS 601執行之實例方法800。在步驟801中,MPS 601儲存選定交易(例如具有至少一個未用交易輸出之彼等交易)集合。在步驟802中,MPS 601獲得目標資料項(例如協定旗標、公用密鑰等)。在步驟803中,MPS 601獲得包含目標資料項之一或多個目標交易。在步驟804中,MPS 601獲得一或多個默克爾證明,例如各目標交易具有一個默克爾證明。在步驟805中,MPS 601輸出默克爾證明。
區塊鏈150之各區塊151包含各別區塊標頭。MPS 601可儲存一或多個區塊標頭。舉例而言,MPS 601可儲存每一已公佈區塊151之區塊標頭。區塊標頭可經儲存於有序清單中。區塊標頭之次序可與區塊鏈150中之對應區塊151的次序匹配。在一些實例中,來自給定區塊151之交易可與彼區塊151之區塊標頭相關聯地經儲存。並非儲存完整區塊標頭,在一些示例中,MPS 601可僅儲存區塊標頭之一或多個而非全部資料欄位。舉例而言,MPS 601可僅儲存含於區塊標頭內之默克爾根。或MPS 601可儲存默克爾根及含於區塊標頭內之先前散列(經儲存於區塊標頭n中之先前散列等於第n-1個區塊標頭)。
在一些實例中,MPS 601亦可自含有目標交易之區塊151之區塊標頭中輸出默克爾根。默克爾根可作為含有默克爾根之區塊標頭之部分輸出,或單獨輸出,或與區塊標頭的一或多個其他資料欄位組合輸出,例如先前區塊散列。默克爾根可直接輸出至請求當事方603或以其他方式公佈。
MPS 601可基於公佈對應交易之區塊來將交易儲存於群組中。亦即,來自區塊n之交易可經儲存於一個群組中、來自區塊n-1之交易可經儲存於不同群組中,等等。各群組中之交易可經儲存於有序清單中,其中清單中之交易的次序與給定區塊151中之交易的次序匹配。應注意,經儲存交易之清單可比對應區塊151含有更少的交易,此係由於MPS 601不儲存完整區塊鏈150。
MPS 601可自區塊鏈網路106,例如自區塊鏈節點104獲得經儲存交易中之一些或全部。可自單個區塊鏈節點104獲得所有交易。替代地,可自多個節點獲得交易,例如一些交易來自一個區塊鏈節點104、一些交易來自不同區塊鏈節點104等。同樣的情況亦適用於區塊標頭。亦即,可自單個區塊鏈節點104或跨多個節點104獲得經儲存區塊標頭中之一些或全部(或僅經儲存默克爾根及/或先前區塊散列)。在一些實例中,MPS 601可自來自相同區塊鏈節點104之給定區塊(且任擇地,該區塊之區塊標頭)獲得所有交易(或至少獲得感興趣的彼等交易)。MPS 601可自節點104獲得完整交易區塊,且接著過濾或修剪交易區塊以獲得感興趣的交易(例如含有特定資料欄位或資料項之彼等交易)。其餘交易由MPS儲存。
在一些實例中,MPS 601可藉由自多個節點104獲得相同交易及/或區塊標頭來驗證所獲得的交易及/或區塊標頭中之一些或全部。
亦不排除MPS 601可自除區塊鏈節點104以外的實體獲得經儲存交易中之一或多者。舉例而言,MPS 601可自應用程式提供商獲得交易,例如應用程式提供商發送與對MPS 601之對應應用相關的交易。作為另一實例,實體(例如服務提供商)可將由該實體生成之所有交易發送至MPS 601。
在一些實例中,MPS 601可請求對應於各別TxID之原始交易資料。亦即,MPS 601可儲存一或多個TxID,且接著自例如區塊鏈節點104或SPV用戶端之不同實體獲得對應交易。一旦MPS 601已獲得原始交易資料,其接著便可刪除TxID,此係由於該等TxID可根據原始資料再生。
類似地,MPS 601可自除區塊鏈節點104以外的實體獲得一或多個區塊標頭。舉例來說,MPS 601可自一或多個SPV用戶端獲得區塊標頭。
在一些實例中,MPS 601可儲存各區塊之coinbase交易(前已述及,按區塊僅存在一個coinbase交易)。在此等實例中,MPS 601可獲得在與目標交易相同的區塊中公佈之coinbase交易的默克爾證明。MPS 601接著可將coinbase交易之默克爾證明以及coinbase交易本身例如輸出至請求當事方603。此可由請求當事方603用於驗證目標默克爾證明是否具有正確長度。舉例而言,若coinbase交易之默克爾證明之長度為十(亦即,十個散列值),則目標默克爾證明的長度亦應為十。
在一些實例中,由MPS 601儲存之交易可包含一或多個交易鏈。目標交易之默克爾證明可用於證明存在一或多個父級交易,且因此存在彼等交易中之資料。在此情況下,若目標交易為子級交易,則目標默克爾證明證明了已在區塊鏈150上公佈父級交易中之各者(在沒有在區塊鏈150上公佈父級交易中之各者的情況下,可能尚未在區塊鏈150上公佈子級交易)。一般而言,交易鏈中之大多數最近公佈之交易的默克爾證明證明了存在該鏈中之所有其他交易。MPS 601可將交易鏈中之各交易以及目標交易之目標默克爾證明例如直接輸出使用者。
在MPS 601儲存經儲存交易之默克爾證明以減少儲存的實例中,MPS 601可僅儲存目標交易之默克爾證明而不儲存交易鏈中之其他交易。
在一些情況下,目標資料項可存在於多於一個交易中。亦即,在區塊鏈150上可存在多個交易。若MPS 601識別含有目標資料項之多於一個交易,則MPS 601可獲得且輸出所識別的交易中之各者的各別默克爾證明。MPS 601亦可輸出所識別的交易中之各者。或如上文所描述,若所識別的交易中之各者形成交易鏈,則MPS 601可輸出所識別的交易中之各者且僅輸出交易中之最新一者(亦即,目標交易)的默克爾證明。
MPS 601採取計算設備(例如與圖1中所展示之計算設備類似)的形式,該計算設備包含一或多個使用者終端機,諸如桌上型電腦、膝上型電腦、平板電腦、智慧型電話、諸如智慧型手錶之可穿戴式智慧型裝置,或諸如汽車之運載工具之板上電腦等。另外或替代地,計算設備可包含伺服器。本文中之伺服器係指邏輯實體,該邏輯實體可包含位於一或多個地理站點處之一或多個實體伺服器單元。視需要,分散式或「雲端」計算技術本身在此項技術中已知。一或多個使用者終端機及/或伺服器之一或多個伺服器單元可經由封包交換網路彼此連接,該封包交換網路可包含例如諸如網際網路之廣域網際網路、諸如3GPP網路的移動蜂巢式網路、諸如乙太網路之有線區域網路(LAN)或諸如Wi-Fi、Thread或6LoWPAN網路之無線LAN。計算設備包含控制器及介面。控制器可操作地耦合至介面204。控制器經組配以執行歸因於MPS之動作。介面經組配以傳輸及接收資料,例如交易、區塊標頭、默克爾證明等。
控制器及介面中之各者可以體現於電腦可讀儲存裝置上之軟體程式碼的形式實施且在處理設備上運行,該處理設備包含諸如CPU的一或多個處理器、諸如GPU之工作加速器共處理器及/或其他特殊應用處理器,該等處理器實施於一或多個地理站點處的一或多個電腦終端機或單元上。儲存程式碼之儲存裝置可包含採用一或多個記憶體媒體(例如電子或磁性媒體)之一或多個記憶體裝置,該等記憶體裝置同樣實施於一或多個地理站點處之一或多個電腦終端機或單元上。在實施例中,控制器及/或介面可實施於伺服器上。替代地,此等資料項中之一或二者之各別例項可部分或甚至全部地實施於一或多個使用者終端機中之一者、一些或全部中之各者上。在其他實例中,上述資料項之功能性可在使用者終端機及伺服器的任何組合之間劃分。此外應注意,視需要,分散式計算技術本身在此項技術中已知。亦不排除此等資料項中之一或多者可實施於專用硬體中。
現將描述請求當事方603。請求當事方603經組配以將對默克爾證明之請求發送至MPS 601。請求當事方603可將目標資料項及/或目標交易發送至MPS 601。作為回應,請求當事方經組配以接收或以其他方式獲得目標默克爾證明。請求當事方603可使用目標默克爾證明來證明在區塊鏈150上存在包含目標資料項之目標交易。舉例而言,請求當事方603可例如將目標默克爾證明以及目標交易發送至輔助接收當事方。請求當事方603亦可將基於目標交易之默克爾樹的默克爾根(例如作為區塊標頭之部分)發送至輔助接收當事方。可自MPS 601獲得默克爾根。請求當事方603可為(或操作)SPV用戶端。SPV用戶端為經組配以執行SPV方法之用戶端應用程式。詳情請參見例如https://wiki.bitcoinsv.io/index.php/Simplified_Payment_Verification。亦即,SPV用戶端(例如由使用者操作)可使用用於執行SPV方法之目標默克爾證明,亦即,藉由為另一當事方(例如接收器)提供目標默克爾證明。在此情況下,目標交易可包含UTXO (目標資料項),該UTXO鎖定至使用者且由包含鎖定至接收器之UTXO之使用交易引用。
簡而言之,為了使用UTXO,使用SPV電子錢包之發送者將關於以下資訊之內容傳遞至接收器:
1. 含有UTXO作為輸出之交易
Tx
0 ,
2.
Tx
0 之默克爾證明,
3. 含有源於默克爾證明之默克爾根之區塊標頭(或其識別符,例如區塊高度),
4. 使用UTXO之交易
T x
1 。
為了驗核資訊,接收器根據
Tx
0 之默克爾證明計算默克爾根。接收器接著將其與在區塊標頭中所指定之默克爾根進行比較。若他們相同,則接收器接受區塊鏈中之該
Tx
0 。
請求當事方603可採取Alice 103a或Bob 103b之形式。
現在返回至MPS 601。MPS 601可被稱作輔助MPS或「完整性MPS」。在此等實施例中,完整性MPS 601可自主MPS或「通用MPS」602獲得目標默克爾證明。通用MPS係經組配以儲存各別交易之交易識別符集合之實體。通用MPS 602不整體地儲存完整區塊鏈資料,亦即,每一單個已公佈交易。通用MPS 602經組配以獲得目標交易之目標交易識別符,獲得目標區塊鏈交易之目標默克爾證明且輸出目標默克爾證明,其中目標默克爾證明係基於經儲存交易識別符集合中之一或多者。因此,完整性MPS 601可將目標交易或目標交易TxID發送至通用MPS 602,且作為交換接收目標默克爾證明。
圖6B示出展示完整性MPS 601與通用MPS 602之間的互動之示例系統600B。如所展示,系統600B包含一或多個區塊鏈節點104、完整性MPS 601、通用MPS 602、請求當事方603以及SPV用戶端604。系統600B可包含多個請求當事方及/或SPV用戶端。
自通用MPS 602開始,主要涉及提供給定交易識別符(TxID)之默克爾證明。通用MPS 602可將默克爾證明輸出至請求當事方603或完整性MPS 601。舉例而言,請求當事方603或完整性MPS 601可將TxID發送至通用MPS 602,且通用MPS 602作為交換提供默克爾證明。通用MPS 602可獲得產生來自一或多個源之默克爾證明所需的資料。舉例而言,可自區塊鏈節點104獲得默克爾證明本身。或通用MPS 602可自區塊鏈節點104或SPV用戶端604獲得TxID及對應區塊標頭。通用MPS 602可使用TxIDs及對應區塊標頭計算默克爾證明。
關於完整性MPS 601,主要涉及將默克爾證明提供給請求當事方603。完整性MPS 601可自請求當事方603接收交易分量(或交易資料欄位或資料項)且作為交換提供含有彼分量之交易的默克爾證明。請求當事方603繼而可將交易及默克爾證明發送至另一當事方,例如SPV用戶端604。完整性MPS 601可自區塊鏈節點104及/或SPV用戶端604獲得交易。完整性MPS 601亦可自區塊鏈節點104及/或SPV用戶端604獲得區塊標頭以用作默克爾證明的部分,但在足夠資料可用之情況下,區塊標頭可由完整性MPS計算。
一般而言,完整性MPS 601可自通用MPS 602獲得多個默克爾證明,例如,針對經儲存交易中之各者獲得一個。舉例而言,當完整性MPS接收及儲存新交易時,完整性MPS 601可將對新交易之默克爾證明之請求發送至通用MPS 602。
現將描述本發明之一些實施例之實例實施方式。
通用MPS
通用MPS 602充當專用伺服器以將默克爾證明提供至接收當事方,例如使用者。亦即,通用MPS 602為伺服器,若在區塊鏈上公佈交易,則該伺服器提供給定交易或交易ID之默克爾證明。通用MPS 602不儲存完整交易資料。其可被視為對具有默克爾樹之儲存裝置之區塊鏈網路中的SPV用戶端的補充。更精確地,通用MPS具有儲存要求之以下清單:
1. 表示具有最多工作量證明之鏈的區塊標頭之有序清單(任擇要求)
2. 各區塊標頭之交易ID之有序清單(核心要求)
3. 各區塊標頭之預先計算的默克爾樹,其中默克爾根與在區塊標頭中所指定的一個默克爾根匹配(任擇要求)
4. 各區塊中之coinbase交易之原始資料或各區塊標頭的區塊中之交易之任何原始資料(任擇要求)
第一要求為確保通用MPS 602之資料完整性。區塊標頭中之默克爾根可用作對交易ID清單之完整性檢查。亦即,區塊標頭可用於檢查來自給定區塊之TxID在形成默克爾樹之葉時在區塊標頭中產生默克爾根。舉例而言,若TxID受信任或若通用MPS 602具有對受信任SPV用戶端或受信任以儲存具有最多工作量證明之鏈的區塊標頭之任何實體之安全存取權,則可丟棄第一要求。
第二要求為按默克爾葉在默克爾樹中出現的次序提供默克爾葉,使得吾人可重構默克爾樹。應注意,coinbase交易ID始終係清單中之第一葉或第一散列。葉之次序藉由建構獲勝區塊之區塊鏈節點判定。在比特幣SV中,次序應反映拓樸次序及第一可見規則。
第三要求提供計算與儲存之間的折衷的選項。圖7示出儲存要求,其中實線方塊係必需的(在一些實例中),而虛線方塊係任擇的。應注意,區塊標頭含有除了所展示的彼等欄位之外的額外欄位,但一般而言,默克爾證明僅需要根散列。先前散列可用於索引根散列。關鍵點在於通用MPS 602不需要儲存內部節點。
第四要求為提供默克爾樹之深度之證明。此係可藉由通用MPS 602提供給其使用者之額外服務。在呈現交易之原始資料後,任何驗證者皆可確信其默克爾證明中之第一散列實際上係葉,此係因為對於不係葉之給定散列值建構有意義的交易在計算上為不可行的。此外,由於默克爾證明之長度暗示默克爾樹之深度,因此來自相同樹的所有默克爾證明具有相同長度。當使用者不擁有感興趣的交易之原始資料時,此服務尤為有用。
在交易ID,比如
之情況下,通用MPS 602通過交易ID之有序清單。若通用MPS 602找到
,則其建構或提取
之默克爾證明且輸出該默克爾證明。否則,通用MPS 602輸出例如「未找到交易」。在給定交易之原始資料的情況下,通用MPS 602可散列資料以獲得對應交易ID且繼續進行如上。
當公佈新區塊時,通用MPS 602獲得以下:
1. 新區塊標頭,
2. 新區塊之交易ID之有序清單,以及
3. 原始coinbase交易。
通用MPS 602可任擇地檢查:
1. 新區塊標頭具有有效的工作量證明,
2. 根據交易ID計算的默克爾根等於區塊標頭中之默克爾根,以及
3. coinbase交易之散列等於葉中之第一元素。
注意——不存在用於使伺服器獲得原始交易或在交易上運行簽名驗證之要求。
以下描述提供默克爾樹之深度係有價值的服務之原因。SPV用戶端將交易ID及默克爾證明當作輸入,且若默克爾根與區塊標頭中之一者中的默克爾根匹配,則輸出真,否則輸出假。然而,由於缺少必要資訊,因此此驗證不檢查默克爾證明之長度是否與默克爾樹之長度匹配。在一些情況下,對手可提交縮短的默克爾證明以試圖證明不存在的交易ID存在。可藉由完全移除葉或後續散列來獲得此縮短的默克爾證明。
作為默克爾證明提供商之通用MPS 602位於最佳位置中以提供所需資訊來驗證默克爾證明之長度。代替明確地提供默克爾樹之深度,通用MPS 602提供coinbase交易之原始資料及其默克爾證明。偽造原始交易資料及默克爾證明在計算上為不可行的。因此,其充當默克爾樹之深度的證明。知道樹之深度可減少上文所提及之致命漏洞。應注意,若為SPV提供感興趣的交易之原始資料及默克爾證明,則相對於此漏洞其為安全的。當SPV不具有感興趣的交易之原始資料時,我們可使用coinbase交易之原始資料及其默克爾證明來相對於此默克爾樹建立默克爾樹之深度或默克爾證明之正確長度。
理論上,此漏洞亦可用於欺騙通用MPS 602接受葉或任何後續層級皆被完全移除之默克爾樹。然而,通用MPS 602可連接至多個區塊鏈節點104以確保接收到的資訊之一致性及正確性。此外,通用MPS 602亦可選擇下載coinbase交易之原始資料以驗證新區塊之默克爾樹的深度。
通用MPS 602有時可能必須處理競爭區塊、重組以及孤立區塊,此在存在針對相同區塊高度同時找到之多於一個區塊時發生。有利的係,此情況不會發生,不同之處在於在最新標頭中,且其很少發生。區塊鏈150通常將在一或二個區塊之後收斂至競爭鏈中之一者。因此,當通用MPS 602在相同高度下接收到多於一個區塊151時,其將保持所有區塊,直至區塊鏈網路收斂至具有最多工作量證明之鏈。
僅 TxID MPS 之限制
如所描述之通用MPS 602具有一些限制。在給定未公佈交易,比如
之情況下,通用MPS 602將無法驗證輸入中引用之出點是否存在。原因在於出點為交易ID與索引之串接。通用MPS 602能夠判定交易ID是否存在,但該通用MPS 602不具有關於該交易具有之輸出的數目之資訊或輸出是否可用之資訊。一種克服此情形之方式為將在
中引用之交易的原始資料提供給通用MPS 602作為輸入之部分。替代方式用於使通用MPS 602儲存未用交易之原始資料。(此處之未用交易係指具有至少一個未用輸出及可用輸出之交易)。
應注意,若通用MPS 602僅儲存交易ID及對應索引,則通用MPS 602無法驗證或證明索引尚未被篡改。通用MPS 602需要完整的原始資料以便驗證或證明索引之完整性。
此外,將無法為使用者提供搜尋交易內部之諸如鎖定指令碼或旗標的特定資料元素之功能。因此,將無法支援例如使用布隆過濾器(Bloom Filter)之使用者,此係由於該等布隆過濾器通常將基於交易中所包括之鎖定指令碼及公用密鑰來過濾交易。
此導致需要可提供更細粒度之資訊之MPS。我們將此情形稱作完整性MPS 601。完整性MPS 601將儲存一些交易之原始資料。應注意,若完整交易由使用者給定,則通用MPS 602可用於證明已公佈交易之完整性。完整性MPS 601可用於藉由儲存感興趣的完整交易來證明自已公佈交易提取的一些資料之完整性。不需要使用者呈現完整交易。
完整性MPS
完整性MPS 601儲存感興趣的交易集合之原始交易及其對應默克爾證明。對於關於該集合中之交易的查詢,該伺服器可提供原始交易及其默克爾證明作為其完整性之證明。其亦允許在交易內容中搜尋部分交易或資料元素。可基於諸如天氣SV、代幣化、元網路或任何其他資料協定之資料應用程式或甚至諸如鎖定指令碼、公用密鑰、出點等等之資料串來判定感興趣的交易。因此,可存在僅用於天氣SV應用程式之完整性MPS,該天氣SV應用程式經組配以儲存僅攜載天氣SV之交易。
感興趣的原始交易集合被傳遞至完整性MPS 601上且在公佈該等原始交易之情況下保留在伺服器上。完整性MPS 601可被視為閘道器或具有對閘道器之存取權以用於進行應用程式特定的交易。當區塊鏈系統擴展至兆位元組區塊時,此將為用以維持完整性MPS 601之最高效方式。對於諸如完全非集中式同級間資料應用程式之其他例項,我們必須求助於下載完整交易區塊之機制,且如同在比特幣改良提議37 (BIP37)中使用布隆過濾器修剪不感興趣的彼等交易或過濾該等交易。
在操作期間
在一些實施例中,維持感興趣的原始交易及其在默克爾樹中之默克爾證明之完整性MPS 601進行以下步驟:
步驟1:獲得感興趣的原始交易。
步驟2:散列原始交易以獲得交易ID。
步驟3:向通用MPS 602查詢其默克爾證明。
步驟4:若並未在區塊中公佈交易,則等待10 min且再次嘗試。
在步驟3中對通用MPS 602之相依性可由下載及修剪之機制替換,但此將為效率低的。可在預定義時間限制於避免擁塞之後丟棄步驟4中之未公佈交易。限制可因對應用程式之應用而不同。
實例使用案例
WeatherSV (WSV)為允許使用者將天氣資料記錄於比特幣分類帳上之應用程式。為各位置給定獨特公用密鑰(亦即,獨特鎖定指令碼)。其具有以下特徵:
● 激活位置幾乎每隔1小時即可開始上傳WSV交易,其含有當時對該位置之天氣測量。
● 各WSV交易具有一個輸入及二個輸出,參見表3。
● 輸出由以下組成:
o 0 satoshi之非可用輸出。其具有OP_FALSE OP_RETURN,其後為以下之串接:
■ 對於所有WSV交易恆定之旗標
,
■ 及位置之天氣讀取
o 發送至該位置之該獨特公用密鑰位址之可用輸出。位址被稱為頻道。各位置具有其自身的位址。
● 輸入使用該位置之先前WSV交易之可用輸出
注意——此意謂公用密鑰再次用於各位置
版本 | 1 | 鎖定時間 | 0 | |
入計數 | 1 | 出計數 | 2 | |
輸入清單 | 輸出清單 | |||
出點 | 解鎖指令碼 | 值 | 鎖定指令碼 | |
satoshi | OP_FALSE OP_RETURN | |||
satoshi | OP_DUP OP_HASH_160 OP_EQUALVERIFY OP_CHECKSIG | |||
WeatherSV之完整性MPS 601可經設計成達成以下:
● 當用WSV交易或來自WSV交易之部分提取的資料查詢時,完整性MPS 601可提供具有完整性證明之完整資料。
應注意,部分提取的資料可為交易之OP_RETURN酬載中之資料串,或可為表示位置之公用位址,或僅為交易ID。
觀察到單個位置之WSV交易為交易鏈,我們可修剪父級交易之默克爾證明。舉例而言,若我們具有10個交易
之鏈,則我們僅必須保持
之默克爾證明。然而,若要求完整性MPS給出
之完整性證明,則我們必須給出
之所有原始資料及
之默克爾證明。此為頻寬與儲存之間的折衷。為使其平衡,吾人可在鏈中每隔一個交易進行修剪。亦即,我們可修剪
之默克爾證明。這樣,當查詢鏈中之任何交易時,完整性MPS將在最壞情況下提供二個原始交易及一個默克爾證明。
我們藉由檢查以下來識別WSV交易之真實性:
● 出點(交易輸入)為先前WSV交易之可用輸出。
● 交易輸入及可用輸出二者用於相同WSV電子錢包位址。
因此,真實交易為可僅由實體生成之交易,該實體知道該特定天氣SV位址之鎖定指令碼的公用密鑰之秘密密鑰。
針對各天氣位址(亦即,天氣頻道或鎖定指令碼),MPS 601保持:
● 最新挖掘交易及其相關聯的默克爾樹
● 與該位址相關聯的所有已用交易之原始交易資料。在WSV協定之情況下不需要保存先前已用交易之默克爾樹。
如圖9中所展示,將針對各位置儲存WSV交易之完整性MPS 601之例項:
● 其相關聯的位址,且針對各位址
● 具有未用的可用輸出
||1之原始交易
,
● 與
相關聯之區塊標頭,以及
● 該區塊標頭之默克爾證明,
● ID為
之原始父級交易
針對當前區塊大小、速率等,我們需要至少最後6個區塊中之各者的默克爾樹,該默克爾樹為約128千位元組×6=768 Kb。各頻道在30天之原始資料交易當前為300×30×24=0.2 Mb。對於所有6240個頻道,僅需要1.26 Gb之儲存。然而,最後一個月之區塊鏈僅為4.8 Gb,且完整區塊鏈為200 Gb。總之,WSV應用程式之完整性MPS 601在同一時段將只需要儲存區塊鏈之四分之一。
當資料應用程式生成大量交易時,有可能藉由具有將該等交易分區之多個完整性MPS 601來並行處理該過程。基於區塊高度之分區可為良好解決方案。若區塊高度為未知的,則查詢接著將被發送至所有MPS。折衷係在大資料集中之一個查找與幾個小得多的資料集中之幾個查找之間進行。
結論
一旦給定本文中之揭露內容,所揭露技術之其他變型或使用案例對於熟習此項技術者可變得顯而易見。本揭露內容之範疇不受所描述實施例限制,而係僅受隨附申請專利範圍限制。
舉例而言,以上一些實施例已關於比特幣網路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所描述之相同方式實施於硬體中。
將瞭解,已僅藉助於實例描述以上實施例。更一般而言,可提供根據以下陳述項中之任何一或多者的方法、設備或程式。
陳述項1.一種提供在區塊鏈上存在區塊鏈交易之資料項之證明的電腦實施方法,其中該方法藉由經組配以儲存各別區塊鏈交易之交易識別符集合但不向區塊鏈網路公佈新區塊鏈區塊之默克爾證明實體執行,且其中該方法包含:自請求當事方獲得目標區塊鏈交易的目標資料項;獲得目標區塊鏈交易;獲得目標區塊鏈交易之目標默克爾證明,其中對應目標默克爾根含於區塊鏈之區塊內,且其中獲得目標默克爾證明包含計算目標區塊鏈交易的目標交易識別符在對應目標默克爾樹之葉層內之索引;以及至少輸出目標默克爾證明以供請求當事方用作在區塊鏈上存在目標資料項作為目標區塊鏈交易的部分之證明。
換言之,該方法提供在區塊鏈上存在包含目標資料項之區塊鏈交易之證明。
在一些實施例中,多個區塊鏈交易可包含目標資料項。默克爾證明實體可獲得彼等多個目標交易,獲得多個目標交易中之各者的各別目標默克爾證明且至少將用於供請求當事方使用之各別目標默克爾證明輸出至例如請求當事方。默克爾證明實體亦可輸出多個目標區塊鏈交易中之各者。
含於區塊鏈之區塊內的默克爾根可包含含於區塊鏈之區塊之區塊標頭內的默克爾根。
陳述項2.如陳述項1之方法,其包含將索引輸出至請求當事方。
陳述項3.如陳述項2之方法,其中默克爾證明包含索引。
陳述項4. 如前述陳述項中任一項之方法,其中默克爾證明實體不儲存完整區塊鏈。
換言之,區塊鏈交易集合不含有在區塊鏈上公佈之每一交易。
陳述項5.如前述陳述項中任一項之方法,其包含輸出目標區塊鏈交易以供請求當事方用作在區塊鏈上存在目標資料項作為目標區塊鏈交易之部分的證明。
陳述項6.如前述陳述項中任一項之方法,其中自一或多個區塊鏈節點獲得經儲存區塊鏈交易集合。
陳述項7.如陳述項5之方法,其包含:
自一或多個區塊鏈節點獲得多個區塊鏈交易;以及
修剪及/或過濾多個區塊鏈節點以獲得經儲存區塊鏈交易集合中之一或多者。
陳述項8.如前述陳述項中任一項之方法,其中自服務提供商獲得經儲存區塊鏈交易集合中之一或多者,且其中經儲存區塊鏈交易集合與由服務提供商提供的服務相關。
陳述項9.如前述陳述項中任一項之方法,其中該獲得目標區塊鏈交易包含自經儲存區塊鏈交易集合獲得目標區塊鏈交易。
例如,藉由搜尋包含目標資料項之區塊鏈交易。
陳述項10.如前述陳述項中任一項之方法,其中該獲得目標區塊鏈交易包含自請求當事方接收目標區塊鏈交易。
陳述項11.如前述陳述項中任一項之方法,其中該獲得目標默克爾證明包含:
將目標區塊鏈交易或目標區塊鏈交易之目標交易識別符發送至主默克爾證明實體,該主默克爾證明實體經組配以儲存各別區塊鏈交易之交易識別符集合;以及
自主默克爾證明實體接收目標默克爾證明,其中該目標默克爾證明係基於經儲存交易識別符集合中之一或多者。
陳述項12.如陳述項11之方法,其中在自請求實體獲得目標資料項之前獲得目標默克爾證明。
陳述項13.如陳述項11或陳述項12之方法,其包含獲得經儲存區塊鏈交易集合中之各者的各別默克爾證明。
陳述項14.如前述陳述項中任一項之方法,其中該獲得目標默克爾證明包含計算目標默克爾證明。
陳述項15.如前述陳述項中任一項之方法,其中該輸出目標默克爾證明包含將目標默克爾證明傳輸至請求當事方及/或公佈目標默克爾證明。
陳述項16.如陳述項5或其任一附屬陳述項之方法,其中該輸出目標區塊鏈交易包含將目標區塊鏈交易傳輸至請求當事方及/或公佈目標區塊鏈交易。
陳述項17.如前述陳述項中任一項之方法,其中經儲存區塊鏈交易集合包含多個區塊鏈交易子集,其中各區塊鏈交易子集來自區塊鏈之各別區塊。
各交易識別符子集可經儲存於有序清單中,該有序清單對應於經儲存於各別區塊中之區塊鏈交易的次序。
陳述項18.如陳述項17之方法,其中各區塊鏈交易子集與區塊鏈之各別區塊之各別區塊標頭相關聯地儲存。
各別區塊標頭可經儲存於有序清單中,該有序清單對應於在區塊鏈上公佈之區塊之次序。
陳述項19.如前述陳述項中任一項之方法,其中自一或多個區塊鏈節點獲得各別區塊標頭。
可自單個節點獲得所有區塊標頭。替代地,可自多個節點獲得區塊標頭,例如一些區塊標頭來自一個節點、一些區塊標頭來自不同節點等。
在一些實例中,默克爾證明實體可藉由自多個節點獲得相同區塊標頭來驗證所獲得的區塊標頭中之一些或全部。
另外或替代地,可自一或多個簡化支付驗證(SPV)用戶端獲得區塊標頭中之一些或全部。
陳述項20.如陳述項17或其任一附屬陳述項之方法,其中默克爾證明實體針對各區塊鏈交易子集儲存來自含有該區塊鏈交易子集之各別區塊的生成區塊鏈交易。
陳述項21.如陳述項20之方法,其包含:
獲得生成區塊鏈交易之默克爾證明;以及
至少輸出默克爾證明以供請求當事方用於證明目標默克爾證明之長度與對應目標默克爾樹之長度匹配。
陳述項22.如陳述項21之方法,其中該輸出默克爾證明包含輸出生成區塊鏈交易。
陳述項23.如前述陳述項中任一項之方法,其中目標資料項包含以下中之至少一者:
目標區塊鏈交易之交易識別符,
目標區塊鏈交易之輸入,
目標區塊鏈交易之輸出,
目標區塊鏈交易之輸入的資料欄位,及/或
目標區塊鏈交易之輸出的資料欄位。
陳述項24.如陳述項23之方法,其中目標區塊鏈交易之輸入及/或輸出的資料欄位包含以下中之至少一者:區塊鏈位址、公用密鑰、協定旗標、鎖定指令碼及/或媒體內容。
陳述項25.如前述陳述項中任一項之方法,其中經儲存區塊鏈交易集合包含區塊鏈交易鏈,且其中目標區塊鏈為區塊鏈交易鏈中之最新一者。
陳述項26.如陳述項25之方法,其包含輸出區塊鏈交易鏈中之各交易以供請求當事方用作在區塊鏈上存在區塊鏈交易鏈中的各交易之證明。
陳述項27.如陳述項25或陳述項26之方法,其包含僅儲存目標默克爾證明而不儲存區塊鏈交易鏈中之任何其他交易的默克爾證明。
陳述項28.如前述陳述項中任一項之方法,其中請求當事方為最終使用者。
陳述項29.一種電腦裝備,其包含:
記憶體,其包含一或多個記憶體單元;以及
處理設備,其包含一或多個處理單元,其中記憶體儲存經配置以在處理設備上運行之程式碼,該程式碼經組配以便在處於處理設備上時執行如前述陳述項中任一項之方法。
陳述項30.一種電腦程式,其體現於電腦可讀儲存裝置上且經組配以便在一或多個處理器上運行時執行如前述陳述項中任一項之方法。
100,600,600B:系統
101:封包交換網路
102:電腦終端機
102a,102b:裝備
103,103a:使用者
103b:實體
104:區塊鏈節點
105,105a:用戶端應用程式
105b:用戶端
106:同級間網路
150:區塊鏈
151,151n-1:區塊
151n:新區塊
152:交易
152i:先前交易
152j:目前交易
153:起源區塊
154:有序集區
155:區塊指標
201:標頭
202:輸入
203:輸出
204:介面
301:側頻道
401:交易引擎
402:使用者介面層
500:使用者介面
501,502:UI元件
503:資訊元件
601:默克爾證明實體
602:通用MPS
603:請求當事方
604:SPV用戶端
800:方法
801,802,803,804,805:步驟
為了輔助理解本揭露內容之實施例且展示此類實施例可如何付諸實施,僅藉助於實例隨附圖式附圖,在隨附圖式中:
圖1為用於實施區塊鏈之系統的示意性方塊圖,
圖2示意性地示出可記錄在區塊鏈中之交易的一些實例,
圖3A為用戶端應用程式之示意性方塊圖,
圖3B為可藉由圖3A之用戶端應用程式呈現之實例使用者介面的示意性模型,
圖4示意性地示出實例默克爾樹,
圖5示意性地示出實例默克爾證明,
圖6A及圖6B示意性地示出根據本發明之一些實施例的實例系統,
圖7示意性地示出根據本發明之一些實施例的由輔助默克爾證明實體儲存之資料,
圖8示出根據本發明之一些實施例的實例方法,以及
圖9示出映射至天氣SV默克爾證明實體中之各位置的資料。
104:區塊鏈節點
600A:系統
601:默克爾證明實體
603:請求當事方
604:SPV用戶端
Claims (30)
- 一種提供在一區塊鏈上存在一區塊鏈交易之一資料項之證明的電腦實施方法,其中該方法藉由經組配以儲存各別區塊鏈交易之一交易識別符集合但不向區塊鏈網路公佈新區塊鏈區塊之一默克爾證明實體執行,且其中該方法包含: 自一請求當事方獲得一目標區塊鏈交易之目標資料項; 獲得該目標區塊鏈交易; 獲得該目標區塊鏈交易之一目標默克爾證明,其中一對應目標默克爾根含於該區塊鏈之一區塊內,且其中獲得該目標默克爾證明包含計算該目標區塊鏈交易的一目標交易識別符在一對應目標默克爾樹之一葉層內之一索引;以及 至少輸出該目標默克爾證明以供該請求當事方用作在該區塊鏈上存在該目標資料項作為該目標區塊鏈交易之部分的證明。
- 如請求項1之方法,其包含將該索引輸出至該請求當事方。
- 如請求項2之方法,其中該默克爾證明包含該索引。
- 如前述請求項中任一項之方法,其中該默克爾證明實體不儲存完整區塊鏈。
- 如前述請求項中任一項之方法,其包含輸出該目標區塊鏈交易以供該請求當事方用作在該區塊鏈上存在該目標資料項作為該目標區塊鏈交易之部分的證明。
- 如前述請求項中任一項之方法,其中自一或多個區塊鏈節點獲得經儲存區塊鏈交易集合。
- 如請求項5之方法,其包含: 自一或多個區塊鏈節點獲得多個區塊鏈交易;以及 修剪及/或過濾該等多個區塊鏈節點以獲得該經儲存區塊鏈交易集合中之一或多者。
- 如前述請求項中任一項之方法,其中自一服務提供商獲得該經儲存區塊鏈交易集合中之一或多者,且其中該經儲存區塊鏈交易集合與由該服務提供商提供的一服務相關。
- 如前述請求項中任一項之方法,其中該獲得該目標區塊鏈交易包含自該經儲存區塊鏈交易集合獲得該目標區塊鏈交易。
- 如前述請求項中任一項之方法,其中該獲得該目標區塊鏈交易包含自該請求當事方接收該目標區塊鏈交易。
- 如前述請求項中任一項之方法,其中該獲得該目標默克爾證明包含: 將該目標區塊鏈交易或該目標區塊鏈交易之一目標交易識別符發送至一主默克爾證明實體,該主默克爾證明實體經組配以儲存各別區塊鏈交易之一交易識別符集合;以及 自該主默克爾證明實體接收該目標默克爾證明,其中該目標默克爾證明係基於經儲存交易識別符集合中之一或多者。
- 如請求項11之方法,其中在自請求實體獲得該目標資料項之前獲得該目標默克爾證明。
- 如請求項11或請求項12之方法,其包含獲得該經儲存區塊鏈交易集合中之各者的一各別默克爾證明。
- 如前述請求項中任一項之方法,其中該獲得該目標默克爾證明包含計算該目標默克爾證明。
- 如前述請求項中任一項之方法,其中該輸出該目標默克爾證明包含將該目標默克爾證明傳輸至該請求當事方及/或公佈該目標默克爾證明。
- 如請求項5或其任一附屬請求項之方法,其中該輸出該目標區塊鏈交易包含將該目標區塊鏈交易傳輸至該請求當事方及/或公佈該目標區塊鏈交易。
- 如前述請求項中任一項之方法,其中該經儲存區塊鏈交易集合包含多個區塊鏈交易子集,其中各區塊鏈交易子集來自該區塊鏈之一各別區塊。
- 如請求項17之方法,其中各區塊鏈交易子集與該區塊鏈之該各別區塊之一各別區塊標頭相關聯地儲存。
- 如前述請求項中任一項之方法,其中自一或多個區塊鏈節點獲得該各別區塊標頭。
- 如請求項17或其任一附屬請求項之方法,其中該默克爾證明實體針對各區塊鏈交易子集儲存來自含有該區塊鏈交易子集之該各別區塊的一生成區塊鏈交易。
- 如請求項20之方法,其包含: 獲得該生成區塊鏈交易之一默克爾證明;以及 至少輸出該默克爾證明以供該請求當事方用於證明該目標默克爾證明之一長度與該對應目標默克爾樹之一長度匹配。
- 如請求項21之方法,其中該輸出該默克爾證明包含輸出該生成區塊鏈交易。
- 如前述請求項中任一項之方法,其中該目標資料項包含以下中之至少一者: 該目標區塊鏈交易之一交易識別符, 該目標區塊鏈交易之一輸入, 該目標區塊鏈交易之一輸出, 該目標區塊鏈交易之一輸入的一資料欄位,及/或 該目標區塊鏈交易之一輸出的一資料欄位。
- 如請求項23之方法,其中該目標區塊鏈交易之該輸入及/或該輸出的該資料欄位包含以下中之至少一者:一區塊鏈位址、一公用密鑰、一協定旗標、一鎖定指令碼及/或媒體內容。
- 如前述請求項中任一項之方法,其中該經儲存區塊鏈交易集合包含一區塊鏈交易鏈,且其中該目標區塊鏈為該區塊鏈交易鏈中之一最新一者。
- 如請求項25之方法,其包含輸出該區塊鏈交易鏈中之各交易以供該請求當事方用作在該區塊鏈上存在該區塊鏈交易鏈中的各交易之證明。
- 如請求項25或請求項26之方法,其包含僅儲存該目標默克爾證明而不儲存該區塊鏈交易鏈中之任何其他交易的該默克爾證明。
- 如前述請求項中任一項之方法,其中該請求當事方為一最終使用者。
- 一種電腦裝備,其包含: 記憶體,其包含一或多個記憶體單元;以及 處理設備,其包含一或多個處理單元,其中該記憶體儲存經配置以在該處理設備上運行之程式碼,該程式碼經組配以便在處於該處理設備上時執行如前述請求項中任一項之方法。
- 一種電腦程式,其體現於電腦可讀儲存裝置上且經組配以便在一或多個處理器上運行時執行如前述請求項中任一項之方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2017731.7A GB2600770A (en) | 2020-11-10 | 2020-11-10 | Merkle proof entity |
GB2017731.7 | 2020-11-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202220411A true TW202220411A (zh) | 2022-05-16 |
Family
ID=74046369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110138158A TW202220411A (zh) | 2020-11-10 | 2021-10-14 | 默克爾證明實體 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20230394063A1 (zh) |
EP (1) | EP4245010A1 (zh) |
JP (1) | JP2023547715A (zh) |
KR (1) | KR20230101843A (zh) |
CN (1) | CN116547945A (zh) |
GB (1) | GB2600770A (zh) |
TW (1) | TW202220411A (zh) |
WO (1) | WO2022100946A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024097406A1 (en) * | 2022-11-04 | 2024-05-10 | Interdigital Patent Holdings, Inc. | Methods, architectures, apparatuses and systems directed to application-aware computing and communication management in a blockchain system |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113874898A (zh) * | 2019-02-15 | 2021-12-31 | 区块链控股有限公司 | 用于通过区块链网络实现转账的计算机实现的系统和方法 |
-
2020
- 2020-11-10 GB GB2017731.7A patent/GB2600770A/en active Pending
-
2021
- 2021-10-12 US US18/034,028 patent/US20230394063A1/en active Pending
- 2021-10-12 EP EP21790483.8A patent/EP4245010A1/en active Pending
- 2021-10-12 WO PCT/EP2021/078213 patent/WO2022100946A1/en active Application Filing
- 2021-10-12 CN CN202180074369.5A patent/CN116547945A/zh active Pending
- 2021-10-12 KR KR1020237018022A patent/KR20230101843A/ko unknown
- 2021-10-12 JP JP2023527771A patent/JP2023547715A/ja active Pending
- 2021-10-14 TW TW110138158A patent/TW202220411A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
GB2600770A (en) | 2022-05-11 |
JP2023547715A (ja) | 2023-11-13 |
KR20230101843A (ko) | 2023-07-06 |
GB202017731D0 (en) | 2020-12-23 |
EP4245010A1 (en) | 2023-09-20 |
CN116547945A (zh) | 2023-08-04 |
US20230394063A1 (en) | 2023-12-07 |
WO2022100946A1 (en) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115997369A (zh) | 用于在区块链网络中验证数据的方法和装置 | |
KR20220139871A (ko) | 블록체인 네트워크에서 사용하기 위한 증명 서비스 | |
TW202220410A (zh) | 默克爾證明實體 | |
TW202231012A (zh) | 敏感資料攔阻技術 | |
US20230308292A1 (en) | Digital signatures | |
TW202226019A (zh) | 區塊鏈交易產生及驗證技術 | |
GB2606195A (en) | Methods and devices for enabling single page retrieval of merkle tree data | |
TW202145039A (zh) | 用以經由區塊鏈有效且安全地處理、存取及傳輸資料之電腦實行系統及方法 | |
TW202220411A (zh) | 默克爾證明實體 | |
CN117280653A (zh) | 多方区块链地址方案 | |
JP2023537698A (ja) | ブロックチェーンネットワークとの接続 | |
JP2023529467A (ja) | カスタムトランザクションスクリプト | |
TW202215828A (zh) | 用以同步及基元追蹤之方法及系統 | |
TW202308351A (zh) | 電腦實施方法及系統 | |
GB2606194A (en) | Methods and devices for pruning stored merkle tree data | |
CN117693926A (zh) | 区块链区块和存在证明 | |
CN117652124A (zh) | 区块链区块和存在证明 | |
GB2606196A (en) | Subtree-based storage and retrieval of merkle tree data | |
CN117121440A (zh) | 统一资源标识符 | |
TW202329668A (zh) | 證明及驗證有序事件序列之技術 | |
CN117678193A (zh) | 区块链区块和存在证明 | |
TW202318444A (zh) | 對區塊鏈交易施行條件之技術(二) | |
TW202306368A (zh) | 對區塊鏈交易施行條件之技術(一) | |
TW202334847A (zh) | 用於安全且有效之資料儲存之電腦實現方法及系統 | |
WO2024017786A1 (en) | Proving and verifying input data |