TW202247626A - 部分安全雜湊演算法(sha)為基礎之雜湊函數 - Google Patents
部分安全雜湊演算法(sha)為基礎之雜湊函數 Download PDFInfo
- Publication number
- TW202247626A TW202247626A TW111115853A TW111115853A TW202247626A TW 202247626 A TW202247626 A TW 202247626A TW 111115853 A TW111115853 A TW 111115853A TW 111115853 A TW111115853 A TW 111115853A TW 202247626 A TW202247626 A TW 202247626A
- Authority
- TW
- Taiwan
- Prior art keywords
- sequence
- blocks
- message
- transaction
- sha
- Prior art date
Links
- 239000013598 vector Substances 0.000 claims abstract description 110
- 238000000034 method Methods 0.000 claims abstract description 79
- 230000006870 function Effects 0.000 claims description 79
- 238000004364 calculation method Methods 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 22
- 101100217298 Mus musculus Aspm gene Proteins 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 2
- 238000013515 script Methods 0.000 description 43
- 230000000644 propagated effect Effects 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000012795 verification Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 239000000463 material Substances 0.000 description 7
- 238000007781 pre-processing Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000003245 working effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 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
- 230000001413 cellular effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
Images
Classifications
-
- 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/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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- 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
-
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一種驗證一原像之對應於藉由用一以SHA為基礎之雜湊函數對該原像進行雜湊而產生之一雜湊摘要的部分之完整性的電腦實施方法,其中該原像包含一第一訊息及一第二訊息,且其中該方法包含:a)產生一迭代輸入向量;b)獲得一第二區塊序列;c)藉由按次序對在該第二區塊序列中具有一各別位置的該第二區塊序列中之每一區塊執行以SHA為基礎之雜湊計算之一迭代來產生一最終迭代輸出向量,其中對該第二區塊序列中之一第一區塊執行的該以SHA為基礎之雜湊計算之該迭代係基於所獲得之迭代輸入向量;以及d)基於該最終迭代輸出向量產生一候選雜湊摘要,該候選雜湊摘要用於與該雜湊摘要進行比較。
Description
發明領域
本發明係關於一種證明及驗證原像之對應於藉由用以SHA為基礎之雜湊函數(亦即,SHA雜湊函數家族中之一者,諸如SHA256)對原像進行雜湊而產生之雜湊摘要的部分之完整性的方法。舉例而言,原像可包含區塊鏈交易之部分或全部。
發明背景
區塊鏈係指分散式資料結構之形式,其中區塊鏈之複本被維持在分散式同級間(P2P)網路(在下文被稱作「區塊鏈網路」)中之多個節點中之各者處且被廣泛公佈。區塊鏈包含一系列資料區塊,其中每一區塊包含一或多個交易。除所謂的「coinbase交易」以外,各交易亦指回至序列中之先前交易,該序列可橫跨追溯至一或多個coinbase交易之一或多個區塊。下文進一步論述coinbase交易。經提交至區塊鏈網路之交易包括於新區塊中。新區塊係藉由常常被稱作「挖掘」之程序而建立,其涉及多個節點中之每一者競爭以執行「工作量證明」,亦即基於等待包括於區塊鏈之新區塊中之有序及經驗核未決交易之經界定集合的表示形態而解決密碼難題。應注意,可在一些節點處修剪區塊鏈,且可經由僅公佈區塊標頭來實現區塊之公佈。
區塊鏈中之交易可用於以下目的中之一或多者:傳送數位資產(亦即,數個數位代幣(token));對虛擬化分類帳或註冊表中之條目集合進行排序;接收及處理時戳條目;以及/或按時間對索引指標進行排序。亦可利用區塊鏈來對區塊鏈之頂部上的額外功能性分層。舉例而言,區塊鏈協定可允許將額外使用者資料或資料之索引儲存於交易中。對於可儲存於單個交易內之最大資料容量不存在預先規定之限制,且因此可併入愈來愈複雜之資料。舉例而言,此可用於將電子文件或音訊或視訊資料儲存於區塊鏈中。
區塊鏈網路之節點(其常常被稱作「挖掘者」)執行稍後將更詳細描述之分散式交易登記及驗核程序。總之,在此程序期間,節點驗核交易且將其插入至區塊範本中,針對該區塊範本,該等交易嘗試識別有效的工作量證明解決方案。一旦找到有效解決方案,便將新區塊傳播至網路之其他節點,因此使得各節點能夠在區塊鏈上記錄新區塊。為了使交易經記錄於區塊鏈中,使用者(例如,區塊鏈用戶端應用程式)將交易發送至網路之節點中之一者以供傳播。接收交易之節點可競相尋找將經驗核交易併入至新區塊中之工作量證明解決方案。各節點經組配以實行相同節點協定,其將包括交易有效之一或多個條件。無效交易將不被傳播或併入至區塊中。假定交易經驗核且藉此經接受至區塊鏈上,則交易(包括任何使用者資料)將因此在區塊鏈網路中之節點中之各者處保持被登記及索引化為不可變的公用記錄。
成功地解決工作量證明難題以建立最新區塊之節點通常獲得被稱為「coinbase交易」之新交易的獎勵,該新交易分發一定金額之數位資產,亦即,數個代幣(token)。對無效交易之偵測及拒絕係藉由競爭節點之動作實行,該等競爭節點充當網路之代理且經激勵以報告且阻止不法行為。資訊之廣泛公佈允許使用者連續地稽核節點之效能。對僅區塊標頭之公佈允許參與者確保區塊鏈之持續完整性。
在「基於輸出」之模型(有時稱作基於UTXO之模型)中,給定交易之資料結構包含一或多個輸入及一或多個輸出。任何可支出輸出皆包含一元素,該元素指定可自進行中之交易序列導出的數位資產之金額。可用輸出有時被稱作UTXO (「未用交易輸出」)。輸出可進一步包含指定用於未來兌換輸出之條件的鎖定指令碼。鎖定指令碼係定義驗核及轉帳數位代幣或資產所必需之條件的述詞。交易(除coinbase交易以外)之各輸入包含指向先前交易中之此輸出的指標(亦即,參考),且可進一步包含用於解除鎖定所指向輸出之鎖定指令碼的解除鎖定指令碼。因此,考慮一對交易,將其稱為第一交易及第二交易(或「目標」交易)。第一交易包含至少一個輸出,該至少一個輸出指定數位資產之金額且包含定義解除鎖定該輸出之一或多個條件的鎖定指令碼。第二目標交易包含至少一個輸入,其包含指向第一交易之輸出的指標,及用於解鎖第一交易之輸出的解鎖指令碼。
在此模型中,當將第二目標交易發送至區塊鏈網路以在區塊鏈中傳播及記錄時,在各節點處應用之有效性準則中之一者將係解鎖指令碼滿足第一交易之鎖定指令碼中所界定的所有一或多個條件。另一準則將係第一交易之輸出尚未由另一較早有效交易兌換。根據此等條件中之任一者發現目標交易為無效的任何節點將不會傳播該目標交易(作為有效交易,但可能登記無效交易),亦不將該目標交易包括於新區塊中以記錄在區塊鏈中。
交易模型之替代類型為基於帳戶之模型。在此情況下,每一交易皆不會藉由返回參考一系列過去交易中之先前交易之UTXO來界定待轉帳的金額,而是參考絕對帳戶餘額。所有帳戶之當前狀態由與區塊鏈分離之節點儲存,且不斷更新。
發明概要
密碼雜湊函數SHA256已廣泛用於許多技術領域,包括區塊鏈技術。舉例而言,SHA256雜湊函數用於驗證交易及計算工作量證明或權益證明。SHA256雜湊函數(及一般而言,密碼雜湊函數)之一個特性為,在給定雜湊摘要(亦即,雜湊函數之輸出)及原像(例如,訊息)的情況下,可藉由將原像輸入至雜湊函數及驗證所輸出雜湊摘要與所提供雜湊摘要完全匹配來驗證原像之完整性。此驗證係可能的,此係因為當所使用之雜湊函數為SHA256時,至同一雜湊摘要之二個不同原像雜湊之可能性近乎為零。相同情況適用於SHA家族中之其他雜湊函數,例如SHA384或SHA512。
迄今為止,SHA雜湊函數(例如SHA256)僅用於證明及驗證原像整體上之完整性。本發明提供一種用於證明及驗證一原像之部分(亦即,一部分原像)的完整性之技術。亦即,原像可包含第一訊息及第二訊息,其中本發明之實施例致能第二訊息形成原像之部分的證明及驗證。應注意,訊息在此處在一般意義上使用,且未必意謂任何類別之通訊,但不排除所述情況。
根據本文所揭露之一個態樣,提供一種驗證原像之對應於藉由用以SHA為基礎之雜湊函數對原像進行雜湊而產生之雜湊摘要的部分之完整性的電腦實施方法。該原像包含第一訊息及第二訊息。該方法係由一驗證方執行,且包含:a)接收一迭代輸入向量,其中該迭代輸入向量係藉由部分地執行該以SHA為基礎之雜湊函數而產生。部分地執行該以SHA為基礎之雜湊函數包含:i)獲得一第一區塊序列,其中該第一區塊序列係藉由填補該原像之一二進位表示形態以產生一第一經填補序列且將該第一經填補序列拆分為一第一區塊序列或藉由將該第一訊息之一二進位表示形態拆分為該第一區塊序列而獲得,及ii)按次序對在該第一區塊序列中具有一各別位置的該第一區塊序列中之每一區塊執行一以SHA為基礎之雜湊計算之一迭代,直至包含表示該第二訊息之一或多個位元的一區塊。該方法進一步包含b)獲得一第二區塊序列,其中該等第二多個區塊係藉由以下操作產生:i)填補該第二訊息之一二進位表示形態以產生一第二經填補序列,ii)將該第二經填補序列拆分為該第二區塊序列。該方法進一步包含:c)藉由按次序對在該第二區塊序列中具有一各別位置的該第二區塊序列中之每一區塊執行該以SHA為基礎之雜湊計算之一迭代來產生一最終迭代輸出向量,其中對該第二區塊序列中之一第一區塊執行的該以SHA為基礎之雜湊計算之該迭代係基於所獲得之迭代輸入向量;以及d)基於該最終迭代輸出向量產生一候選雜湊摘要,該候選雜湊摘要用於與該雜湊摘要進行比較。
根據本文所揭露之另一態樣,提供一種證明原像之對應於藉由用以SHA為基礎之雜湊函數對原像進行雜湊而產生之雜湊摘要的部分之完整性的電腦實施方法。該原像包含第一訊息及第二訊息。該方法係由一證明方執行,且包含:a)產生一迭代輸入向量,其中該迭代輸入向量係藉由部分地執行該以SHA為基礎之雜湊函數而產生,其中部分地執行該以SHA為基礎之雜湊函數包含:i)獲得一第一區塊序列,其中該第一區塊序列係藉由填補該原像之一二進位表示形態以產生一第一經填補序列且將該第一經填補序列拆分為一第一區塊序列或藉由將該第一訊息之一二進位表示形態拆分為該第一區塊序列而獲得,及ii)按次序對在該第一區塊序列中具有一各別位置的該第一區塊序列中之每一區塊執行一以SHA為基礎之雜湊計算之一迭代,直至包含表示該第二訊息之一或多個位元的一區塊。該方法進一步包含b)使該迭代輸入向量可供一驗證方使用。
已公認,SHA256演算法中之中間狀態可用以在等於使用SHA256計算雜湊值之計算成本下對SHA256雜湊值之部分原像提供極其精簡的完整性證明。完整性證明可用於可分割成二個之任何原像,其中部分原像為後一部分。此外,完整性證明並不洩露第一訊息,因此使得第一訊息能夠在必要時保持秘密。相同情況適用於SHA家族中之其他雜湊函數,例如SHA384或SHA512。
一般而言,原像可為任何資料,且不限於本文所述之原像之特定實例。作為說明性實例,原像可為區塊鏈交易之部分或全部。部分原像(亦即,第二訊息)可包含區塊鏈交易之一或多個組成部分,例如,一或多個可用輸出。所描述之完整性證明允許吾人驗證一或多個組成部分(例如,一或多個可用輸出)形成區塊鏈交易之部分,而不需要存取完整交易。此在區塊鏈交易係大的大小(亦即,含有大量資料)時特別有利,此係因為其允許驗證可用輸出(或交易之任何其他重要組成部分)而不必發送大量資料,因此節省頻寬及儲存要求。
作為另一說明性實例,原像可為身分識別文件,諸如駕駛證、護照、出生憑證、居住證等。完整性證明可用於證明構成身分識別文件之一或多個資料項目,例如(在其護照上記錄的個人年齡),而不洩露其他敏感細節(例如,個人性別)。此可一般化至任何文件(不僅為身分識別文件),其中維持文件之至少部分之隱私係有益的。舉例而言,該文件可為合約,其中希望驗證簽署該文件之一方(亦即,部分原像包含簽章),而不洩露合約之完整項。
較佳實施例之詳細說明
1. 實例系統概述
圖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,該起源區塊為該鏈中之第一區塊。鏈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-1之新區塊151n。建立工作量證明解決方案所需之例如呈雜湊形式的大量工作傳信第一節點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。此等使用者可與區塊鏈網路106互動,但不參與驗核交易或建構區塊。此等使用者或代理程式103中之一些可在交易中充當發送者及接收者。其他使用者可與區塊鏈150互動,而未必充當發送者或接收者。舉例而言,一些方可充當儲存實體,其儲存區塊鏈150之複本(例如,已自區塊鏈節點104獲得區塊鏈之複本)。
各方103中之一些或全部可作為不同網路,例如覆蓋於區塊鏈網路106的頂部上之網路之部分而連接。區塊鏈網路之使用者(通常被稱作「用戶端」)可據稱包括區塊鏈網路106之系統的部分;然而,此等使用者並非區塊鏈節點104,此係因為其不執行區塊鏈節點之所需角色。實情為,各方103可與區塊鏈網路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能夠建立、授權(例如,簽章)及發送交易152至一或多個比特幣節點104以接著在區塊鏈節點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包括於資料欄位中,則此資料欄位可指回至先前交易。
2. 基於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中。
假設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)為用網域特定語言編寫的一段程式碼,其提供滿足鎖定指令碼準則所需的資訊。舉例而言,其可含有鮑勃之簽章。解鎖指令碼出現在交易之輸入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之情況下為有效的。若其嘗試支出已由另一交易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之條件不一定包含鑑認簽章。更一般而言,指令碼處理語言可用於界定任何一或多個條件。因此,「鎖定指令碼」及「解除鎖定指令碼」二個更一般的詞可為較佳的。
3. 旁側通道
如圖1中所展示,Alice及Bob的電腦裝備102a、120b中之每一者上的用戶端應用程式可分別包含額外通訊功能性。此額外功能性使得Alice 103a能夠與Bob 103b形成單獨之旁側通道107 (在任一方或第三方之推動下)。旁側通道107使得能夠與區塊鏈網路分離地進行資料交換。此通訊有時被稱作「離鏈」通訊。例如,此可用於在Alice與Bob之間交換交易152,而(尚未)將交易登記至區塊鏈網路106上或使其進入鏈150上,直至若干方中之一者選擇將其廣播至網路106為止。以此方式共用交易有時被稱作共用「交易範本」。交易範本可能缺乏形成完整交易所需之一或多個輸入及/或輸出。替代地或另外,旁側通道107可用於交換任何其他交易相關資料,諸如金鑰、協商的金額或條款、資料內容等。
可經由與區塊鏈網路106相同之封包交換網路101形成旁側通道107。替代地或另外,可經由諸如行動蜂巢式網路之不同網路或諸如區域無線網路之區域網路或甚至Alice之裝置102a與Bob之裝置102b之間的直接有線或無線鏈路來形成旁側通道301。一般而言,在本文中任何位置處被提及之旁側通道107可包含經由一或多個網路連接技術或通訊媒體之任一或多個鏈路,以用於「離鏈」(亦即獨立於區塊鏈網路106)交換資料。在使用多於一個鏈路的情況下,離鏈鏈路之集束或集合可作為整體被稱作旁側通道107。因此,應注意,若據稱Alice及Bob經由旁側通道107交換某些資訊或資料片段等等,則此未必暗示必須經由完全相同的鏈路或甚至相同類型之網路來發送所有此等資料片段。
4. 部分SHA256
本發明之實施例使得能夠證明,在給定用SHA雜湊函數(例如,SHA256、SHA512等)雜湊之原像的雜湊摘要的情況下,訊息(亦即,任何資料片段)形成用於彼雜湊摘要之原像的部分。原像之待證明屬於原像之部分在本文中稱為「部分原像」。其亦稱為「第二訊息」。一般而言,原像由第一訊息(亦即,原像之第一部分)及第二訊息(亦即,訊息之第二部分)構成,其中第一訊息先於第二訊息。應注意,第一訊息及第二訊息(及作為整體的原像)未必為二個或更多個實體之間的通訊意義上之訊息。亦即,訊息一詞用以指任何類型之資料。亦即,如本揭露內容中所使用之「訊息」(不論其為第一訊息、第二訊息抑或原像整體)未必意謂有意義的內容或酬載,但當然不排除此情況。舉例而言,訊息可包含與諸如隨機數或臨時數之另一(非使用者內容)元素串接之使用者酬載及/或內容資料。
圖3說明用於實施本發明之實施例的實例系統300。系統300包含證明方301及驗證方302。證明方301為希望向另一方(驗證方302)證明第二訊息形成原像之對應於雜湊摘要之部分的實體。驗證方302為希望驗證第二訊息形成原像之對應於雜湊摘要之部分的實體。一般而言,雙方可為任何類型之實體,例如,諸如Alice 103a或Bob 103b之使用者、使用者之群組、組織、機器、區塊鏈節點104等等。
無關於實體之特定類型,證明方301及驗證方302操作各別電腦裝備,其包含各別處理設備,該各別處理設備包含一或多個處理器,例如,一或多個CPU、GPU、DSP、密碼處理器、其他加速器處理器、特殊應用處理器及/或FPGA。證明方301及驗證方302之各別電腦裝備進一步包含記憶體,亦即,呈一或多個非暫時性電腦可讀媒體之形式的電腦可讀儲存器。此記憶體可包含一或多個記憶體單元,其使用一或多個記憶體媒體,例如,諸如硬碟或磁帶之磁性媒體;諸如SSD、快閃記憶體或EEPROM、ROM、DRAM、SRAM之電子媒體;以及/或諸如光碟機或玻璃儲存器之光學媒體。各別電腦裝備上之記憶體儲存軟體,該軟體包含經配置以在處理設備上執行之至少一個用戶端應用程式的各別例項。應理解,本文中歸因於證明方301及驗證方302之任何動作可使用在彼方之各別電腦裝備之處理設備上執行的軟體來執行。各別電腦裝備包含至少一個使用者終端機,例如桌上型或筆記本電腦、平板電腦、智慧型手機或諸如智慧型手錶之可穿戴裝置。給定方301、302之電腦裝備亦可包含一或多個其他經網路連接之資源,諸如經由使用者終端存取之雲端計算資源。
本發明之實施例將首先依據為SHA256雜湊函數之以SHA為基礎之雜湊函數來描述。然而,應瞭解,可使用以SHA為基礎之雜湊函數中之任一者。
自能夠存取整個原像(亦即,第一訊息與第二訊息之串連)之證明方301之視角開始,證明方301對原像部分地執行SHA256雜湊函數。亦即,證明方301將原像輸入至SHA256雜湊函數,且執行SHA256雜湊函數中之一些但並非全部(亦即,演算法經組配以實施SHA256雜湊函數)。SHA256雜湊函數本身係熟知的,且在https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf處詳細描述。亦參見https://en.wikipedia.org/wiki/SHA-2。
證明方301部分地執行SHA256雜湊函數以產生迭代輸入向量。迭代輸入向量為在處理表示第一訊息之位元組區塊之後輸出的向量。原像表示為位元組序列。用一或多個位元組填補位元組序列以產生經填補序列。熟習此項技術者將熟悉位元組序列之填補作為SHA256雜湊函數之預處理階段之部分。接著將經填補序列拆分(亦即,剖析)成區塊序列,其中每一區塊之大小為六十四個位元組。此將稱為第一區塊序列。再次,熟習此項技術者將熟悉此拆分。第一區塊序列中之第一多個區塊表示第一訊息,亦即第一多個區塊包含表示第一訊息之位元組。第一多個區塊可替代地藉由將第一訊息之二進位表示形態拆分為多個,即六十四個位元組區塊而直接自第一訊息獲得。第一區塊序列中之第二多個區塊表示第二訊息及任何填補。亦即,第二多個區塊包含表示第二訊息的位元組及填補位元組。接著按次序對第一多個區塊執行SHA256雜湊計算。亦即,對第一區塊序列中的第一區塊執行SHA256雜湊計算的迭代,接著對第一區塊序列中的第二區塊執行SHA256雜湊計算的迭代,以此類推。迭代輸入向量為對第一多個區塊中之最終區塊的SHA256雜湊函數之迭代的輸出。SHA256雜湊計算之每一迭代輸出一各別迭代輸入向量。因此,為方便起見,在對第一多個區塊中的最終區塊的SHA256雜湊計算的最終迭代之後輸出的迭代輸入向量將稱為目標迭代輸入向量。
應注意,稱為以位元組表示的任何資料(例如,原像、第一訊息、第二訊息、經填補序列、區塊等)可等效地以位元表示。
為了證明第二訊息形成原像之部分,證明方301使目標迭代輸入向量可供驗證方302使用。此可涉及例如經由安全通訊通道發送目標迭代輸入向量至驗證方302。在其他實例中,可使目標迭代輸入向量在例如網頁之線上資源處可用,其可或可不為公開可存取的(意即,可能需要密碼或其類似者以存取網頁的內容)。
驗證方302可能已經能夠存取雜湊摘要。若否,則證明方301可將雜湊摘要發送至驗證方302以供在驗證第二訊息為原像之部分時使用。證明方301可以其他方式使雜湊摘要可供驗證方302使用,例如藉由公佈雜湊摘要。亦不排除另一方使雜湊摘要可供驗證方302使用。實際上,另一方可為產生雜湊摘要之一方。
類似地,證明方301可將第二訊息發送至驗證方302或以其他方式使第二訊息可供驗證方使用。
如下文將論述,在一些實例中,驗證方302必須知曉原像之位元長度或位元組長度。在此等實例中,證明方301可將原像之位元長度或位元組長度發送至驗證方302或以其他方式使其可供驗證方使用。另外或替代地,驗證方302可獲得第一訊息之位元長度或位元組長度。
在已例如自證明方301獲得目標迭代輸入向量後,驗證方302執行完整性證明以驗證第二訊息形成原像之部分。驗證方301需要存取表示為位元組序列之第二訊息。用一或多個位元組填補位元組序列以產生經填補序列。接著將經填補序列拆分(亦即,剖析)成區塊序列,其中每一區塊之大小為六十四個位元組。此將稱為第二區塊序列。第二序列中之第一區塊包含第二訊息之第一位元組。驗證方302可執行該填補,或驗證方302可例如自證明方301獲得經填補序列。接著按次序對第二區塊序列執行SHA256雜湊計算。亦即,對第二區塊序列中的第一區塊執行SHA256雜湊計算的迭代,接著對第二區塊序列中的第二區塊執行SHA256雜湊計算的迭代,以此類推。如之前所提及,各別迭代輸入向量係在SHA256雜湊函數之每一迭代結束時輸出。為方便起見,在處理第二區塊序列中之最終區塊之後輸出的各別迭代輸入向量將稱為最終迭代輸出向量。
為了清楚起見,迭代輸入向量及迭代輸出向量採取相同格式,且實際上為同一個。「迭代輸入向量」僅用以指待用作至SHA256雜湊計算之下一迭代之輸入的向量。「迭代輸出向量」僅用以指SHA256雜湊計算之先前迭代的輸出。
驗證方302接著例如藉由將最終迭代輸出向量之元素串接來基於最終迭代輸出向量302產生候選雜湊摘要。若第二訊息實際上為原像之部分,則候選雜湊摘要應匹配聲稱為原像之雜湊的雜湊摘要。驗證部分302可因此比較候選雜湊摘要與所獲得之雜湊摘要,且驗證二個雜湊摘要係相同的。如上文所提及,在原像包含區塊鏈交易之情況下,雜湊摘要可直接自證明方301或別處(例如,自區塊鏈150)獲得。
下文提供所描述實施例之其他特定實例。
假設吾人具有
,其中
為連接
與
之訊息。若
已知,則可藉由檢查
是否等於
來驗證
之完整性。在給定雜湊值
之情況下,亦有可能驗證
之完整性而不洩露
。此可以相當於一次SHA256計算之計算成本來完成。
4.1 SHA256 之內部工作
給定輸入
,其可用位元組序列
表示,第一步驟為填補該輸入。如上文所指出,所描述之實施例適用於資料之任何二進位表示形態(例如原像
),且不限於以位元組表示之資料。
1. 附加一位元組0x80作為
。
2. 附加0x00之
個位元組,直至
,其中
為最小之正整數。
3. 以呈大端序之8個位元組表示輸入
之位元長度且對其進行附加。
接著逐個處理該等區塊。吾人將此過程稱為區塊迭代,或簡稱為迭代。每一區塊迭代採用二個輸入,
1. 具有8個元素之向量,每一元素大小為4位元組,及
2. 區塊自身,由其16個字組之分區表示,每一字組大小為4位元組。
對於第一區塊,輸入向量稱為初始向量(IV)。在SHA256演算法的標準實施中,IV經設定為前八個質數之平方根之分率部分的前32個位元。對於所有後續區塊,輸入向量為來自前一區塊迭代之輸出。當存在不明確性時,吾人將此等輸入向量稱為
迭代輸入向量。
對於第一輪,輸入向量初始化為自區塊迭代之輸入向量。對於所有後續輪次,輸入向量係自前一輪次輸出。為將其與迭代輸入向量區分開來,吾人將其稱為
輪次輸入向量。
在區塊迭代結束時,來自最末輪次之輸出與迭代輸入向量組合以建立此區塊迭代之輸出。
4.2 使用SHA256 的部分原像之完整性
目標為在給定
的情況下證明
之完整性而不洩露
,其中
。SHA256內部工作之描述使吾人能夠在計算雜湊值之任何時刻停止,且算出繼續計算所需之資訊。換言之,吾人可在
被消耗時停止,將所需資訊識別為中間狀態,且繼續使用
進行計算,其中中間狀態並不洩露
之內容。
吾人可導出所需資訊,其包含:
1. 具有8個元素之迭代輸入向量,
2. 具有8個元素之輪次輸入向量(若不同於上文),
3. 在當前區塊迭代中待處理之剩餘字組,及
4. 待迭代之剩餘區塊。
應注意,項目3可由先前經處理16個字組或表示區塊自身之前16個字組替換,此係由於剩餘字組可自其導出。儘管SHA256的安全性可在一定程度上由每一區塊迭代繼承,但可能並非區塊迭代中的每一輪次皆為此情況。因此,若吾人可假定藉由組合項目2及3,在彼區塊迭代中算出前16個字組在計算上係可行的,則吾人可簡化資訊清單為:
1. 具有8個元素的迭代輸入向量,由
表示,及
2. 待迭代的剩餘區塊。
吾人現在可正式描述演算法部分SHA256。吾人使用
表示
之位元長度。
: | |
步驟1: | 將一個位元組 附加至 ,隨後為 個位元組之 ,其中 為滿足 之最小正整數。用呈大端序之8個位元組表示 ,且將其附加至輸入(亦即,經填補 )末端。 |
輸出:區塊清單,每一區塊之大小為64位元組。 | |
步驟2: | 用SHA256迭代該等區塊,其中IV設定為 。 |
輸出:具有8個元素之向量,每一元素大小為4位元組。 | |
步驟3: | 串接來自步驟2的輸出中之8個元素。 |
輸出:32位元組之雜湊值。 |
至此,本發明之實施例已在SHA256之上下文中予以描述。然而,所描述之實施例可易於適合於在安全雜湊標準(https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf) 中涵蓋之任何其他SHA函數[1]。為方便起見,此處重複部分SHA256的描述。
: | |
步驟1: | 將一個位元組 附加至 ,隨後為 個位元組之 ,其中 為滿足 之最小正整數。用呈大端序之8個位元組表示 ,且將其附加至輸入末端。 |
輸出:區塊清單,每一區塊之大小為64位元組。 | |
步驟2: | 用SHA256迭代該等區塊,其中IV設定為 。 |
輸出:具有8個元素之向量,每一元素大小為4位元組。 | |
步驟3: | 串接來自步驟2的輸出中之8個元素。 |
輸出:32位元組之雜湊值。 |
該技術可應用於其他SHA函數,其中僅對此等組成部分中之一些或全部進行改變。首先以SHA-1及SHA-224開始,四個組成部分如下。
SHA-1 | SHA-224 | |
具有5個元素之向量,每一元素大小為4位元組 | 與SHA256相同 | |
填補 | 與SHA256相同 | 與SHA256相同 |
區塊迭代 | 遵從[1]中之章節6.1.2或6.1.3 | 與SHA256相同 |
最終輸出 | 具有5個元素之向量,每一元素大小為4位元組 | 自步驟3中之輸出取最左側224個位元 |
為了涵蓋其他SHA函數,吾人自SHA512開始。
4.3 SHA512 之內部工作
給定輸入
,其可由位元組序列
表示,第一步驟為填補該輸入。如上文所指出,所描述之實施例適用於資料之任何二進位表示形態(例如原像
),且不限於以位元組表示之資料。
1. 附加一位元組0x80作為
。
2. 附加0x00之
個位元組,直至
。
3. 以呈大端序之16個位元組表示輸入
之位元長度且對其進行附加。
接著逐個處理該等區塊。吾人將此過程稱為區塊迭代,或簡稱為迭代。
每一區塊迭代採用二個輸入,
1. 具有8個元素之向量,每一元素大小為8位元組,及
2. 區塊自身,由其16個字組之分區表示,每一字組大小為8位元組。
對於第一區塊,輸入向量稱為初始向量(IV)。在SHA512演算法的標準實施中,IV經設定為前八個質數之平方根之分率部分的前64個位元。對於所有後續區塊,輸入向量為來自前一區塊迭代之輸出。當存在不明確性時,吾人將此等輸入向量稱為
迭代輸入向量。
對於第一輪,輸入向量初始化為自區塊迭代之輸入向量。對於所有後續輪次,輸入向量係自前一輪次輸出。為將其與迭代輸入向量區分開來,吾人將其稱為
輪次輸入向量。
在區塊迭代結束時,來自最末輪次之輸出與迭代輸入向量組合以建立此區塊迭代之輸出。
4.4 使用SHA512 的部分原像之完整性
目標為在給定
的情況下證明
之完整性而不洩露
,其中
。SHA512內部工作之描述使吾人能夠在計算雜湊值之任何時刻停止,且算出繼續計算所需之資訊。換言之,吾人可在
被消耗時停止,將所需資訊識別為中間狀態,且繼續使用
進行計算,其中中間狀態並不洩露
之內容。
吾人可導出所需資訊,其包含:
1. 具有8個元素之迭代輸入向量,
2. 具有8個元素之輪次輸入向量(若不同於上文),
3. 在當前區塊迭代中待處理之剩餘字組,及
4. 待迭代之剩餘區塊。
應注意,項目3可由先前經處理16個字組或表示區塊自身之前16個字組替換,此係由於剩餘字組可自其導出。儘管SHA512的安全性可在一定程度上由每一區塊迭代繼承,但可能並非區塊迭代中的每一輪次皆為此情況。因此,若吾人可假定藉由組合項目2及3,在彼區塊迭代中算出前16個字組在計算上係可行的,則吾人可簡化資訊清單為:
1.具有8個元素的迭代輸入向量,由
表示,及
2. 待迭代的剩餘區塊。
吾人現在可正式描述演算法部分SHA512。吾人使用
表示
之位元長度。
: | |
步驟1: | 將一個位元組 附加至 ,隨後為 個位元組之 ,其中 為滿足 之最小正整數。用呈大端序之16個位元組表示 ,且將其附加至輸入之末端。 |
輸出:區塊清單,每一區塊之大小為128位元組。 | |
步驟2: | 用SHA512迭代該等區塊,其中IV設定為 。 |
輸出:具有8個元素之向量,每一元素大小為8位元組。 | |
步驟3: | 串接來自步驟2的輸出中之8個元素。 |
輸出:64位元組之雜湊值。 |
現在,吾人可覆蓋SHA384、SHA512-224及SHA512-256。
4.5 實例使用情況 1 - 大小較大之原像
SHA384 | SHA512-224 | SHA512-256 | |
與SHA512相同 | 與SHA512相同 | 與SHA512相同 | |
填補 | 與SHA512相同 | 與SHA512相同 | 與SHA512相同 |
區塊迭代 | 與SHA512相同 | 與SHA512相同 | 與SHA512相同 |
最終輸出 | 自步驟3之輸出取最左側384個位元 | 自步驟3之輸出取最左側224個位元 | 自步驟3之輸出取最左側256個位元 |
在比特幣中,交易可在OP_FALSE OP_RETURN輸出中攜載資料。此類輸出之大小限制可藉由比特幣節點來組配,且在寫入時處於100 KB。咸信該限制將在未來完全提昇。交易之所關注部分係可用輸出。為了證明可用輸出之完整性,將必須提供整個交易以計算交易ID。亦即,舉例而言,為了證明標準按公用金鑰支付雜湊輸出(pay-2-public-key-hash output)(包括輸出值之34個位元組)之完整性,將必須提供整個交易,該整個交易在當下可具有超過100千位元組之大小或在未來可具有幾十億位元組。使用吾人之解決方案,大部分交易資料可編輯為
,其大小恆定為32位元組。實例交易展示於圖4中。
為了證明第二輸出之完整性,可簡單地提供
、
及
,其中
為32個位元組,
限於8個位元組,且
為38個位元組,包括來自鎖定時間之4個位元組。亦即,無論交易有多大,證明第二輸出所需之資料大小皆由常數限制,即78位元組。SHA256可採用之最大資料大小受填補中的資料長度編碼限制。最大值為2艾位元組(exabyte),或
位元組。4位元組
可涵蓋大小達4 GB之交易。
可將該想法一般化至最後輸出或最後幾個輸出。當簽章在花費交易中很重要時,其完整性的相關性更加顯而易見。更精確而言,當公用金鑰連結至身分識別或可以特定方式解譯時,需要確保先前鎖定指令碼實際上需要關於給定公用金鑰之簽章。所描述之完整性證明在證明先前鎖定指令碼之完整性時提供顯著節省。該想法可進一步一般化至任何大資料,其中目標部分在資料末端且具有小的大小,例如大電影中含有片尾字幕的最後場景。此可用以證明演員參與了電影而無需共用整個電影。
4.6 實例使用情況 2 - 具有秘密之原像
完整性證明亦可用來隱藏
,因為其為秘密,而非簡單地過大。例如,假定護照含有關於個人之性別及年齡之資訊,且由政府進行數位簽章。為了證明該人超過18歲而不洩露其性別,他們可以提供
、其年齡及護照文件之位元長度。驗證者可基於所提供之資訊計算文件之雜湊,從而驗證來自政府之數位簽章。
5. 結論
一旦給定本文中之揭露內容,所揭露技術之其他變型或使用案例對於熟習此項技術者可變得顯而易見。本揭露內容之範圍不受所描述實施例限制而僅受隨附申請專利範圍限制。
舉例而言,以上一些實施例已關於比特幣網路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. 一種驗證一原像之對應於藉由用一以SHA為基礎之雜湊函數對該原像進行雜湊而產生之一雜湊摘要的部分之完整性的電腦實施方法,其中該原像包含一第一訊息及一第二訊息,且其中該方法係藉由一驗證方執行且包含:
a)接收一迭代輸入向量,其中該迭代輸入向量係藉由部分地執行該以SHA為基礎之雜湊函數而產生,其中部分地執行該以SHA為基礎之雜湊函數包含:
i)獲得一第一區塊序列,其中該第一區塊序列係藉由填補該原像之一二進位表示形態以產生一第一經填補序列且將該第一經填補序列拆分為一第一區塊序列或藉由將該第一訊息之一二進位表示形態拆分為該第一區塊序列而獲得,及
ii)按次序對在該第一區塊序列中具有一各別位置的該第一區塊序列中之每一區塊執行一以SHA為基礎之雜湊計算之一迭代,直至包含表示該第二訊息之一或多個位元的一區塊;
b)獲得一第二區塊序列,其中該等第二多個區塊係藉由以下操作產生:
i)填補該第二訊息之一二進位表示形態以產生一第二經填補序列,
ii)將該第二經填補序列拆分為該第二區塊序列;
c)藉由按次序對在該第二區塊序列中具有一各別位置的該第二區塊序列中之每一區塊執行該以SHA為基礎之雜湊計算之一迭代來產生一最終迭代輸出向量,其中對該第二區塊序列中之一第一區塊執行的該以SHA為基礎之雜湊計算之該迭代係基於所獲得之迭代輸入向量;以及
d)基於該最終迭代輸出向量產生一候選雜湊摘要,該候選雜湊摘要用於與該雜湊摘要進行比較。
以SHA為基礎之雜湊函數為在安全雜湊標準(Secure Hash Standard)中所描述之雜湊函數。
驗證方可能並不瞭解原像,亦不瞭解第一訊息。
2. 如陳述項1之方法,其包含:
獲得該雜湊摘要;以及
基於該候選雜湊摘要與該所獲得之雜湊摘要之一比較驗證該第二訊息為該所獲得之雜湊摘要之該原像的部分。
3. 如陳述項1或陳述項2之方法,其中該迭代輸入向量之該接收包含自一證明方接收該迭代輸入向量。
該雜湊摘要及/或該迭代輸入向量可自該證明方獲得。
4. 如前述陳述項中任一項之方法,其包含獲得該第二訊息。
第二訊息可由該證明方發送至該證明方。
5. 如陳述項4之方法,其中該第二區塊序列之該獲得包含產生該第二區塊序列。
6. 如陳述項4或陳述項5之方法,其包含獲得該原像之長度,且其中該第二經填補序列之該產生係基於該第二訊息及該原像之該長度。
7. 如陳述項4或陳述項5之方法,其包含獲得該第一訊息之長度,且其中該第二經填補序列之產生係基於該第二訊息及該第一訊息之該長度。
8. 如前述陳述項中任一項之方法,其中該第二區塊序列之該獲得包含接收該第二區塊序列。
9. 一種證明一原像之對應於藉由用以SHA為基礎之雜湊函數對該原像進行雜湊而產生之一雜湊摘要的部分之完整性的電腦實施方法,其中該原像包含一第一訊息及一第二訊息,且其中該方法係藉由一證明方執行且包含:
a)產生一迭代輸入向量,其中該迭代輸入向量係藉由部分地執行該以SHA為基礎之雜湊函數而產生,其中部分地執行該以SHA為基礎之雜湊函數包含:
i)獲得一第一區塊序列,其中該第一區塊序列係藉由填補該原像之一二進位表示形態以產生一第一經填補序列且將該第一經填補序列拆分為一第一區塊序列或藉由將該第一訊息之一二進位表示形態拆分為該第一區塊序列而獲得,及
ii)按次序對在該第一區塊序列中具有一各別位置的該第一區塊序列中之每一區塊執行一以SHA為基礎之雜湊計算之一迭代,直至包含表示該第二訊息之一或多個位元的一區塊;
以及
b)使該迭代輸入向量可供一驗證方使用。
10. 如陳述項9之方法,其包含使該雜湊摘要可供該驗證方使用。
11. 如陳述項9或陳述項10之方法,其包含使該第二訊息可供該驗證方使用。
12. 如陳述項9至11中任一項之方法,其包含使該原像之位元長度或該第一訊息可供該驗證方使用。
13. 如前述陳述項中任一項之方法,其中該第一訊息不可供該驗證方使用,使得該第二訊息之該完整性係在不洩露該第一訊息之情況下驗證。
14. 如前述陳述項中任一項之方法,其中該原像包含一區塊鏈交易之至少部分。
15. 如陳述項14之方法,其中該第二訊息包含該區塊鏈交易之一或多個輸出。
16. 如陳述項1至13中任一項之方法,其中該原像包含一身分識別文件之至少部分。
17. 如陳述項16之方法,其中該身分識別文件包含以下各者中之一者:一駕駛證、一護照、一出生憑證及一居住證。
18. 如陳述項16或17之方法,其中該第二訊息包含該識別文件之一或多個資料欄位。
舉例而言,該第二訊息可包含以下各者中的一或多者:姓名、地址、年齡、出生日期、國籍等。
19. 如前述陳述項中任一項之方法,其中該以SHA為基礎之雜湊函數為以下各者中之一者:SHA-1、SHA-224、SHA256、SHA384、SHA512-224、SHA512-256,或SHA512-512。
20. 如陳述項19之方法,其中該以SHA為基礎之雜湊函數為以下各者中之一者:SHA1、SHA224或SHA256,且其中:
該第一經填補序列包含64個位元組之一倍數,
該第二經填補序列包含64個位元組之一倍數,且
每一區塊之大小為64個位元組。
21. 如陳述項19或陳述項20之方法,其中該以SHA為基礎之雜湊函數為SHA224,且其中該候選雜湊摘要包含該最終迭代輸出向量之最左側224個位元。
在以SHA為基礎之雜湊函數為SHA224或SHA256中之一者的實施例中,產生第一經填補序列包含將表示一的一個位元組附加至原像之二進位表示形態。取決原像之長度,第一經填補序列之該產生可進一步包含附加表示零之p個位元組,直至n+1+p = 56 mod 64,其中p為最小正整數,且原像由n個位元組表示(亦即,n為位元組長度)。此外,該產生可進一步包含以呈大端序之八個位元組附加原像之位元長度的表示形態。該迭代輸入向量可包含具有八個元素之向量,每一元素大小為四個位元組。產生第二經填補序列可包含將表示一之一個位元組附加至第二訊息之二進位表示形態。取決第一訊息及第二訊息之長度,第二經填補序列之該產生可進一步包含附加表示零之p個位元組,直至l+1+p = 448 mod 512,其中p為最小正整數,且l為原像之位元長度。等效地,可附加表示零之p個位元組,直至n+1+p = 56 mod 64,其中n為原像之位元組長度。第二經填補序列之該產生可進一步包含以呈大端序之八個位元組附加原像之位元長度的表示形態。該最終迭代輸出向量可包含具有八個元素之向量,每一元素大小為四個位元組。
在以SHA為基礎之雜湊函數為SHA1之實施例中,初始迭代向量為五個元素之向量,每一元素大小為四個位元組。類似地,該最終迭代輸出向量可包含五個元素,每一元素大小為四個位元組。
22. 如陳述項19之方法,其中該以SHA為基礎之雜湊函數為SHA384、SHA512、SHA512-224或SHA512-256中之一者,且其中:
該第一經填補序列包含128個位元組之一倍數,
該第二經填補序列包含128個位元組之一倍數,且
每一區塊之大小為128個位元組。
23. 如陳述項19或陳述項22之方法,其中:
該以SHA為基礎之雜湊函數為SHA384,且其中該候選雜湊摘要包含該最終迭代輸出向量之最左側384個位元;或
該以SHA為基礎之雜湊函數為SHA521-224,且其中該候選雜湊摘要包含該最終迭代輸出向量之最左側224個位元;或
該以SHA為基礎之雜湊函數為SHA521-256,且其中該候選雜湊摘要包含該最終迭代輸出向量之最左側256個位元。
在以SHA為基礎之雜湊函數為一個SHA384、SHA512、SHA512-224或SHA512-256的實施例中,產生第一經填補序列包含將表示一的一個位元組附加至原像之二進位表示形態。取決原像之長度,第一經填補序列之該產生可進一步包含附加表示零之p個位元組,直至n+1+p = 112 mod 128,其中p為最小正整數,且原像由n個位元組表示(亦即,n為位元組長度)。此外,該產生可進一步包含以呈大端序之十六個位元組附加原像之位元長度的表示形態。該迭代輸入向量可包含具有八個元素之向量,每一元素大小為八個位元組。產生第二經填補序列可包含將表示一之一個位元組附加至第二訊息之二進位表示形態。取決第一訊息及第二訊息之長度,第二經填補序列之該產生可進一步包含附加表示零之p個位元組,直至l+1+p = 896 mod 1024,其中p為最小正整數,且l為原像之位元長度。第二經填補序列之該產生可進一步包含以呈大端序之十六位元組附加原像之位元長度的表示形態。該最終迭代輸出向量可包含具有八個元素之向量,每一元素大小為八個位元組。
24. 一種電腦裝備,其包含:
記憶體,其包含一或多個記憶體單元;以及
處理設備,其包含一或多個處理單元,其中該記憶體儲存經配置以在該處理設備上執行之程式碼,該程式碼經組配以便在處於該處理設備上時執行如陳述項1至23中任一項之方法。
25. 一種電腦程式,其體現於電腦可讀儲存器上且經組配以便在於一或多個處理器上執行時執行如陳述項1至23中任一項之方法。
根據本文中所揭露之另一態樣,可提供一種包含驗證方及證明方之動作的方法。
根據本文所揭露之另一態樣,可提供一種包含驗證方及證明方之電腦裝備的系統。
101:封包交換網路
102a、102b:電腦裝備/裝置
103a:第一方
103b:第二方
104:區塊鏈節點
105a、105b:用戶端應用程式
106:同級間(P2P)網路
107:旁側通道
150:區塊鏈
151n-1、151n:區塊
152、152i、152j:交易
153:起源區塊
154:有序集合/有序集區
155:區塊指標
201:標頭
202:輸入欄位
203:輸出欄位
301:旁側通道/證明方
302:驗證方
為了輔助理解本揭露內容之實施例且展示此類實施例可如何付諸實施,僅作為實例參考隨附圖式,在隨附圖式中:
圖1為用於實施區塊鏈之系統的示意性方塊圖,
圖2示意性地說明可記錄於區塊鏈中之交易的一些實例,
圖3示意性地說明用於在部分原像上實施完整性證明之實例系統,
圖4示意性地說明實例區塊鏈交易,及
圖5說明串列化區塊鏈交易之實例格式。
101:封包交換網路
102a、102b:電腦裝備/裝置
103a:第一方
103b:第二方
104:區塊鏈節點
105a、105b:用戶端應用程式
106:同級間(P2P)網路
107:旁側通道
150:區塊鏈
151n-1、151n:區塊
152、152i、152j:交易
153:起源區塊
154:有序集合/有序集區
155:區塊指標
Claims (25)
- 一種驗證對應於藉由用一以SHA為基礎之雜湊函數對一原像進行雜湊而產生之一雜湊摘要的該原像之部分之完整性的電腦實施方法,其中該原像包含一第一訊息及一第二訊息,且其中該方法係藉由一驗證方執行且包含: a)接收一迭代輸入向量,其中該迭代輸入向量係藉由部分地執行該以SHA為基礎之雜湊函數而產生,其中部分地執行該以SHA為基礎之雜湊函數包含: i)獲得一第一區塊序列,其中該第一區塊序列係藉由填補該原像之一二進位表示形態以產生一第一經填補序列且將該第一經填補序列拆分為一第一區塊序列或藉由將該第一訊息之一二進位表示形態拆分為該第一區塊序列而獲得,及 ii)按次序對在該第一區塊序列中具有一各別位置的該第一區塊序列中之每一區塊執行一以SHA為基礎之雜湊計算之一迭代,直至包含表示該第二訊息之一或多個位元的一區塊; b)獲得一第二區塊序列,其中該等第二多個區塊係藉由以下操作產生: i)填補該第二訊息之一二進位表示形態以產生一第二經填補序列, ii)將該第二經填補序列拆分為該第二區塊序列; c)藉由按次序對在該第二區塊序列中具有一各別位置的該第二區塊序列中之每一區塊執行該以SHA為基礎之雜湊計算之一迭代來產生一最終迭代輸出向量,其中對該第二區塊序列中之一第一區塊執行的該以SHA為基礎之雜湊計算之該迭代係基於所獲得之迭代輸入向量;以及 d)基於該最終迭代輸出向量產生一候選雜湊摘要,該候選雜湊摘要用於與該雜湊摘要進行比較。
- 如請求項1之方法,其包含: 獲得該雜湊摘要;以及 基於該候選雜湊摘要與該所獲得之雜湊摘要之一比較驗證該第二訊息為該所獲得之雜湊摘要之該原像的部分。
- 如請求項1或請求項2之方法,其中該迭代輸入向量之該接收包含自一證明方接收該迭代輸入向量。
- 如前述請求項中任一項之方法,其包含獲得該第二訊息。
- 如請求項4之方法,其中該第二區塊序列之該獲得包含產生該第二區塊序列。
- 如請求項4或請求項5之方法,其包含獲得該原像之長度,且其中該第二經填補序列之該產生係基於該第二訊息及該原像之該長度。
- 如請求項4或請求項5之方法,其包含獲得該第一訊息之長度,且其中該第二經填補序列之產生係基於該第二訊息及該第一訊息之該長度。
- 如前述請求項中任一項之方法,其中該第二區塊序列之該獲得包含接收該第二區塊序列。
- 一種證明對應於藉由用以SHA為基礎之雜湊函數對一原像進行雜湊而產生之一雜湊摘要的該原像之部分之完整性的電腦實施方法,其中該原像包含一第一訊息及一第二訊息,且其中該方法係藉由一證明方執行且包含: a)產生一迭代輸入向量,其中該迭代輸入向量係藉由部分地執行該以SHA為基礎之雜湊函數而產生,其中部分地執行該以SHA為基礎之雜湊函數包含: i)獲得一第一區塊序列,其中該第一區塊序列係藉由填補該原像之一二進位表示形態以產生一第一經填補序列且將該第一經填補序列拆分為一第一區塊序列或藉由將該第一訊息之一二進位表示形態拆分為該第一區塊序列而獲得,及 ii)按次序對在該第一區塊序列中具有一各別位置的該第一區塊序列中之每一區塊執行一以SHA為基礎之雜湊計算之一迭代,直至包含表示該第二訊息之一或多個位元的一區塊; 以及 b)使該迭代輸入向量可供一驗證方使用。
- 如請求項9之方法,其包含使該雜湊摘要可供該驗證方使用。
- 如請求項9或請求項10之方法,其包含使該第二訊息可供該驗證方使用。
- 如請求項9至11中任一項之方法,其包含使該原像之位元長度或該第一訊息可供該驗證方使用。
- 如前述請求項中任一項之方法,其中該第一訊息不可供該驗證方使用,使得該第二訊息之該完整性係在不洩露該第一訊息之情況下驗證。
- 如前述請求項中任一項之方法,其中該原像包含一區塊鏈交易之至少部分。
- 如請求項14之方法,其中該第二訊息包含該區塊鏈交易之一或多個輸出。
- 如請求項1至13中任一項之方法,其中該原像包含一身分識別文件之至少部分。
- 如請求項16之方法,其中該身分識別文件包含以下各者中之一者:一駕駛證、一護照、一出生憑證及一居住證。
- 如請求項16或17之方法,其中該第二訊息包含該識別文件之一或多個資料欄位。
- 如前述請求項中任一項之方法,其中該以SHA為基礎之雜湊函數為以下各者中之一者:SHA-1、SHA-224、SHA256、SHA384、SHA512-224、SHA512-256,或SHA512-512。
- 如請求項19之方法,其中該以SHA為基礎之雜湊函數為以下各者中之一者:SHA1、SHA224或SHA256,且其中: 該第一經填補序列包含64個位元組之一倍數, 該第二經填補序列包含64個位元組之一倍數,且 每一區塊之大小為64個位元組。
- 如請求項19或請求項20之方法,其中該以SHA為基礎之雜湊函數為SHA224,且其中該候選雜湊摘要包含該最終迭代輸出向量之最左側224個位元。
- 如請求項19之方法,其中該以SHA為基礎之雜湊函數為SHA384、SHA512、SHA512-224或SHA512-256中之一者,且其中: 該第一經填補序列包含128個位元組之一倍數, 該第二經填補序列包含128個位元組之一倍數,且 每一區塊之大小為128個位元組。
- 如請求項19或請求項22之方法,其中: 該以SHA為基礎之雜湊函數為SHA384,且其中該候選雜湊摘要包含該最終迭代輸出向量之最左側384個位元;或 該以SHA為基礎之雜湊函數為SHA521-224,且其中該候選雜湊摘要包含該最終迭代輸出向量之最左側224個位元;或 該以SHA為基礎之雜湊函數為SHA521-256,且其中該候選雜湊摘要包含該最終迭代輸出向量之最左側256個位元。
- 一種電腦裝備,其包含: 記憶體,其包含一或多個記憶體單元;以及 處理設備,其包含一或多個處理單元,其中該記憶體儲存經配置以在該處理設備上執行之程式碼,該程式碼經組配以便在處於該處理設備上時執行如請求項1至23中任一項之方法。
- 一種電腦程式,其體現於電腦可讀儲存器上且經組配以便在於一或多個處理器上執行時執行如請求項1至23中任一項之方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2107350.7 | 2021-05-24 | ||
GB2107350.7A GB2607283A (en) | 2021-05-24 | 2021-05-24 | Partial SHA-based hash function |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202247626A true TW202247626A (zh) | 2022-12-01 |
Family
ID=76637732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111115853A TW202247626A (zh) | 2021-05-24 | 2022-04-26 | 部分安全雜湊演算法(sha)為基礎之雜湊函數 |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP4348927A1 (zh) |
JP (1) | JP2024519989A (zh) |
KR (1) | KR20240012503A (zh) |
CN (1) | CN117561697A (zh) |
GB (1) | GB2607283A (zh) |
TW (1) | TW202247626A (zh) |
WO (1) | WO2022248130A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230015000A1 (en) * | 2022-09-02 | 2023-01-19 | Intel Corporation | Non-cryptographic hashing using carry-less multiplication |
-
2021
- 2021-05-24 GB GB2107350.7A patent/GB2607283A/en active Pending
-
2022
- 2022-04-25 WO PCT/EP2022/060827 patent/WO2022248130A1/en active Application Filing
- 2022-04-25 EP EP22725223.6A patent/EP4348927A1/en active Pending
- 2022-04-25 JP JP2023572620A patent/JP2024519989A/ja active Pending
- 2022-04-25 CN CN202280037107.6A patent/CN117561697A/zh active Pending
- 2022-04-25 KR KR1020237044177A patent/KR20240012503A/ko unknown
- 2022-04-26 TW TW111115853A patent/TW202247626A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN117561697A (zh) | 2024-02-13 |
JP2024519989A (ja) | 2024-05-21 |
GB2607283A (en) | 2022-12-07 |
WO2022248130A1 (en) | 2022-12-01 |
KR20240012503A (ko) | 2024-01-29 |
GB202107350D0 (en) | 2021-07-07 |
EP4348927A1 (en) | 2024-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230308292A1 (en) | Digital signatures | |
US20220309504A1 (en) | Multi-criteria blockchain protocol | |
TW202247626A (zh) | 部分安全雜湊演算法(sha)為基礎之雜湊函數 | |
WO2024002758A1 (en) | Proof of ownership | |
TW202316844A (zh) | 鎖定腳本傳播技術 | |
US20230224150A1 (en) | Bio-locked seed | |
US20230230078A1 (en) | Custom transaction scripts | |
US20240214179A1 (en) | Blockchain-implemented hash function | |
WO2024052065A1 (en) | Determining shared secrets using a blockchain | |
WO2024041866A1 (en) | Blockchain transaction | |
WO2024041862A1 (en) | Blockchain transaction | |
WO2024002756A1 (en) | Proof of ownership | |
JP2024536272A (ja) | レイヤ2トークンプロトコル | |
WO2023156105A1 (en) | Blockchain transaction | |
WO2023208832A1 (en) | Blockchain transaction | |
WO2023117274A1 (en) | Signature-based atomic swap | |
EP4454195A1 (en) | Signature-based atomic swap | |
WO2024061546A1 (en) | Enforcing constraints on blockchain transactions | |
WO2023156101A1 (en) | Blockchain transaction | |
TW202306368A (zh) | 對區塊鏈交易施行條件之技術(一) | |
WO2023227529A1 (en) | Hash masks | |
WO2024061562A1 (en) | Zero-kowledge proof | |
WO2024061547A1 (en) | Zero-kowledge proof | |
WO2024061617A1 (en) | Atomic swap token trades | |
JP2024525888A (ja) | ブロックチェーントランザクションに対する条件の強制 |