TW202316844A - 鎖定腳本傳播技術 - Google Patents

鎖定腳本傳播技術 Download PDF

Info

Publication number
TW202316844A
TW202316844A TW111133202A TW111133202A TW202316844A TW 202316844 A TW202316844 A TW 202316844A TW 111133202 A TW111133202 A TW 111133202A TW 111133202 A TW111133202 A TW 111133202A TW 202316844 A TW202316844 A TW 202316844A
Authority
TW
Taiwan
Prior art keywords
transaction
primary
script
output
auxiliary
Prior art date
Application number
TW111133202A
Other languages
English (en)
Inventor
米凱拉 佩蒂特
帕特里克 S 考格蘭
Original Assignee
瑞士商區塊鏈授權股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 瑞士商區塊鏈授權股份有限公司 filed Critical 瑞士商區塊鏈授權股份有限公司
Publication of TW202316844A publication Critical patent/TW202316844A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本案提供一種強制在一整個區塊鏈交易鏈中傳播一鎖定腳本的方法。該方法包含產生一主要交易,該主要交易包含經組配以在由一輔助交易之一解除鎖定腳本執行時進行以下操作的一主要鎖定腳本:驗證該解除鎖定腳本包含基於該輔助交易產生之一訊息;以及基於該訊息而驗證該輔助交易之一輸出包含一輔助鎖定腳本。該輔助鎖定腳本經組配以進行以下操作:驗證一第二主要交易之一解除鎖定腳本包含基於該第二主要交易產生之一訊息;驗證該第二主要交易之該解除鎖定腳本包含一資料項目,該資料項目包含該主要交易之一或多個鎖定腳本;以及基於該訊息及該資料項目而驗證該第二主要交易之一輸出包含該主要鎖定腳本。

Description

鎖定腳本傳播技術
發明領域
本揭露內容係關於一種強制在整個區塊鏈交易鏈中傳播鎖定腳本之方法及一種驗證已在整個區塊鏈交易鏈中強制實行鎖定腳本之方法。
發明背景
區塊鏈係指一種形式之分散式資料結構,其中在分散式同級間(P2P)網路(在下文被稱作「區塊鏈網路」)中之多個節點中之各者處維護區塊鏈之複本且廣泛地公佈該等複本。區塊鏈包含資料區塊鏈,其中各區塊包含一或多個交易。除所謂的「比特幣基地(coinbase)交易」以外,各交易亦指回至序列中之先前交易,該序列可向上橫跨一或多個區塊,直至一或多個比特幣基地交易。下文論述比特幣基地交易。經提交至區塊鏈網路之交易包括於新區塊中。新區塊係藉由常常被稱作「挖掘(mining)」之程序創建,該程序涉及多個節點中之各者競爭執行「工作量證明」,亦即,基於等待包括於區塊鏈之新區塊中的有序及經驗核之未決交易之所定義集合的表示而解決密碼編譯難題。應注意,可在一節點處修剪區塊鏈,且可經由僅公佈區塊標頭來達成區塊之公佈。
區塊鏈中之交易用以執行以下操作中之一或多者:轉移數位資產(亦即,數個數位符記);對虛擬化分類帳或註冊表中之一組日記條目進行排序;接收及處理時戳條目;及/或按時間對索引指標進行排序。亦可利用區塊鏈以便對區塊鏈之上的額外功能性進行分層。區塊鏈協定可允許將額外使用者資料或資料之索引儲存於交易中。對於可儲存於單個交易內之最大資料容量不存在預先指定之限制,且因此可併入愈來愈複雜之資料。舉例而言,此可用於將電子文件或音訊或視訊資料儲存於區塊鏈中。
區塊鏈網路之節點(其常常被稱作「挖掘者」)執行下文將詳細描述之分散式交易註冊及驗證程序。總體而言,在此程序期間,節點驗核交易且將其插入至區塊範本中,針對該區塊範本,該等交易嘗試識別有效的工作量證明解決方案。一旦找到有效解決方案,便將新區塊傳播至網路之其他節點,因此使得各節點能夠在區塊鏈上記錄新區塊。為了使交易記錄於區塊鏈中,使用者(例如,區塊鏈用戶端應用程式)將交易發送至網路之節點中之一者以供傳播。接收交易之節點可競相尋找將經驗核交易併入至新區塊中之工作量證明解決方案。各節點經組配以強制實行同一節點協定,其將包括交易有效之一或多個條件。無效交易將不被傳播或併入至區塊中。假定交易經驗核且藉此經接受至區塊鏈上,則交易(包括任何使用者資料)將因此作為不可變的公用記錄在區塊鏈網路中之節點中之各者處保持註冊及編索引。
成功地解決工作量證明難題以創建最新區塊之節點通常獲得被稱為「coinbase交易」之新交易的獎勵,該新交易分發一定金額之數位資產,亦即,數個符記。對無效交易之偵測及拒絕係藉由競爭節點之動作強制實行,該等競爭節點充當網路之代理且經激勵以報告及阻止非法行為。資訊之廣泛公佈允許使用者連續地稽核節點之效能。對僅區塊標頭之公佈允許參與者確保區塊鏈之持續完整性。
在「基於輸出」之模型(有時被稱作基於UTXO之模型)中,給定交易之資料結構包含一或多個輸入及一或多個輸出。任何可支出輸出皆包含一元素,該元素指定可自進行中之交易序列導出的數位資產之金額。可支出輸出有時被稱作UTXO (「未支出交易輸出」)。該輸出可進一步包含指定用於未來兌換該輸出之條件的鎖定腳本。鎖定腳本係定義驗核及轉移數位符記或資產所必需之條件的述詞。交易(除比特幣基地交易以外)之各輸入包含指向先前交易中之此輸出的指標(亦即,參考),且可進一步包含用於解除鎖定所指向輸出之鎖定腳本的解除鎖定腳本。因此,考慮一對交易,將其稱為第一交易及第二交易(或「目標」交易)。第一交易包含至少一個輸出,該至少一個輸出指定數位資產之金額且包含定義解除鎖定該輸出之一或多個條件的鎖定腳本。第二目標交易包含至少一個輸入,該至少一個輸入包含指向第一交易之輸出的指標及用於解除鎖定第一交易之輸出的解除鎖定腳本。
在此模型中,當將第二目標交易發送至區塊鏈網路以在區塊鏈中傳播及記錄時,在各節點處應用之有效性準則中之一者將為解除鎖定腳本符合第一交易之鎖定腳本中所定義的所有一或多個條件。另一準則將為第一交易之輸出尚未由另一較早有效交易兌換。根據此等條件中之任一者發現目標交易為無效的任何節點將不會傳播該目標交易(作為有效交易,但可能註冊無效交易),亦不將該目標交易包括於待記錄於區塊鏈中之新區塊中。
交易模型之替代類型為基於帳戶之模型。在此狀況下,各交易皆不會藉由返回參考過去交易序列中之先前交易之UTXO來定義待轉移之金額,而是藉由參考絕對帳戶餘額。所有帳戶之當前狀態由節點與區塊鏈分離地儲存,且不斷更新。
發明概要
通常已知可對支出交易,亦即,支出(解除鎖定、指派、轉移等)先前交易之輸出的交易之欄位強制實行條件。舉例而言,先前交易可包括將條件強加於支出交易之一或多個輸出上的鎖定腳本。應注意,「支出交易」一詞在此項技術中用以意謂解除鎖定至少一個先前交易之至少一個輸出的當前交易,且未必意謂當前交易與金融交易相關。
想要對支出交易之欄位強制實行條件的一個原因為確保支出交易具有包括與先前交易相同之鎖定腳本的輸出。以彼方式,吾人可確保支出交易對下一支出交易強制實行相同條件。亦即,第n-1個交易包括鎖定腳本,該鎖定腳本迫使第n個交易包括相同鎖定腳本,其因此迫使第n+1個交易包括相同鎖定腳本。以此方式,創建交易鏈,由此各交易包括相同鎖定腳本。此可用於例如數位符記之上下文中,該等數位符記表示真實世界物件或甚至虛擬世界中之物件的所有權。此為有利的,此係因為其意謂符記之各次轉移皆遵循相同規則。
迫使交易鏈包括相同鎖定腳本之先前嘗試遇到以下問題中之至少一者。首先,一些嘗試需要驗證者追溯至鏈中之第一交易(例如,「發佈交易」),以確保正確地創建第一交易(例如,藉由特定授權機構,諸如符記發佈者)或確保包括於最近交易中之鎖定腳本與包括於第一交易及鏈中之每個其他交易中的鎖定腳本相同。此會在驗核鏈中之最新交易時耗用驗證者之資源(就計算資源、時間及工作量而言)。其次,一些嘗試需要第三方參與創建及/或驗核鏈中之下一交易(例如,符記之轉移)以確保正確地創建下一交易。此藉由依賴於第三方而引入安全弱點,且增加必須彼此互動之合作方的數目,此降低效率。第三,迫使交易鏈包括相同鎖定腳本之一些嘗試需要鏈中之最新交易包括鏈中之各先前交易,因此引入交易膨脹問題。此對於交易之傳輸及儲存二者係成問題的。第四,一些嘗試容易受到下文所論述之重放攻擊的影響。
因此,將需要實施一種機制,其強制交易鏈包括相同鎖定腳本以解決所識別問題中之一者、一些或全部。
根據本文中所揭露之一個態樣,提供一種強制在整個區塊鏈交易鏈中傳播鎖定腳本之電腦實施方法。該方法由第一方執行且包含:產生包含第一輸出之第一主要交易,其中該第一輸出包含主要鎖定腳本,其中該主要鎖定腳本經組配以在由第一輔助交易之第一解除鎖定腳本執行時進行以下操作:i)驗證第一解除鎖定腳本包含基於第一輔助交易產生之第一訊息;以及ii)基於第一訊息而驗證第一輔助交易之第一輸出包含輔助鎖定腳本,其中該輔助鎖定腳本經組配以在由第二主要交易之第一解除鎖定腳本執行時進行以下操作:i)驗證第二主要交易之第一解除鎖定腳本包含基於第二主要交易產生之第二訊息;ii)驗證第二主要交易之第一解除鎖定腳本包含第一資料項目,該第一資料項目包含第一主要交易之一或多個鎖定腳本;以及iii)基於第二訊息及第一資料項目而驗證第二主要交易之第一輸出包含主要鎖定腳本。
「主要交易」一詞在本文中用以指交易鏈中被迫使包括相同鎖定腳本之交易,該腳本被稱作「主要鎖定腳本」。舉例而言,主要鎖定腳本可包括與符記相關之資料,諸如財產契約。「輔助交易」一詞用以指用以對主要交易強制實行條件之交易,亦即,主要交易必須包括主要鎖定腳本。此等條件係至少部分地藉由包括於各輔助交易中之「輔助鎖定腳本」強制實行。
輔助交易充當連續主要交易之間的橋樑。亦即,第一輔助交易支出(亦即,解除鎖定)第一主要交易之輸出,且第二主要交易支出(亦即,解除鎖定)第一輔助交易之輸出。主要鎖定腳本將條件強加於下一輔助交易上。舉例而言,主要鎖定腳本迫使下一輔助交易包括輔助鎖定腳本。輔助鎖定腳本將條件強加於下一主要交易上。舉例而言,輔助鎖定腳本迫使下一主要交易包括主要鎖定腳本。
在一些實例中,第一主要交易為鏈中之初始主要交易,亦即,包括主要鎖定腳本之第一交易。此交易可由例如發佈符記之符記發佈者創建。在其他實例中,第一主要交易並非初始主要交易,亦即,交易鏈中存在包括主要鎖定腳本之至少一個其他先前主要交易。舉例而言,在此實例中,第一主要交易可由符記之轉移者創建。
根據本文中所揭露之另一態樣,提供一種驗證已在整個區塊鏈交易鏈中強制實行鎖定腳本之電腦實施方法。該方法由第二方執行且包含:獲得第二主要交易,其中該第二主要交易包含第一輸入及第一輸出,其中該第一輸入包含基於第二主要交易產生之第二訊息、包含解除鎖定第一主要交易之第一輸出之第一輸入的第一輔助交易及包含第一主要交易之一或多個鎖定腳本的第一資料項目,其中第一主要交易之第一輸出包含主要鎖定腳本且第一輔助交易之第一輸出包含輔助鎖定腳本,且其中第二主要交易之第一輸出包含主要鎖定腳本。該方法進一步包含:驗證第一主要交易已記錄於區塊鏈上;以及驗證第一主要交易之主要鎖定腳本經組配以在由第一輔助交易之第一解除鎖定腳本執行時進行以下操作:i)驗證第一解除鎖定腳本包含基於第一輔助交易產生之第一訊息;以及ii)基於第一訊息而驗證第一輔助交易之第一輸出包含輔助鎖定腳本,其中該輔助鎖定腳本經組配以在由第二主要交易之第一解除鎖定腳本執行時進行以下操作:i)驗證第一解除鎖定腳本包含第二訊息;ii)驗證第一解除鎖定腳本包含第一資料項目;以及iii)基於第二訊息及第一資料項目而驗證第二主要交易之第一輸出包含主要鎖定腳本,藉此驗證主要鎖定腳本已在第一及第二主要交易中強制實行。
第二方獲得(例如,自第一方接收)第二主要交易。第二主要交易可為在交易鏈中第二個出現的主要交易,或其可為稍後的交易。亦即,第二交易通常可為交易鏈中之第n個交易。第二主要交易在輸出中包括主要鎖定腳本。第二主要交易具有支出第一輔助交易之輸出的輸入,且因此滿足輔助鎖定腳本之要求。第一輔助交易支出第一主要交易之輸出,且因此滿足主要鎖定腳本之要求。因此,若第一輔助交易成功地解除鎖定第一主要交易之主要鎖定腳本且第二主要交易成功地解除鎖定第一輔助交易之輔助鎖定腳本,則第二主要交易必須包括主要鎖定腳本。此取決於交易鏈中包括的正確主要鎖定腳本。
第二方驗證第一主要交易已記錄於區塊鏈上且因此為有效交易。第二方亦驗證主要鎖定腳本為正確的,例如,其迫使輔助交易包括輔助鎖定腳本,該輔助鎖定腳本接著迫使下一主要交易包括相同的主要鎖定腳本。舉例而言,此可藉由確保主要鎖定腳本包括基於輔助鎖定腳本之雜湊的雜湊難題來達成。在此狀況下,雜湊難題僅可在輔助交易包括輔助鎖定腳本之情況下解決(且因此主要鎖定腳本被解除鎖定)。
第二方可接著產生第二輔助交易及第三主要交易。需要第二輔助交易來解除鎖定第二主要交易之主要鎖定腳本。第二輔助交易亦迫使第三主要交易包括主要鎖定腳本。以相同方式迫使鏈中之各下一交易包括主要鎖定腳本。
應注意,實際上,迫使傳播二個鎖定腳本。迫使主要腳本包括於各主要交易之輸出中,且迫使輔助鎖定腳本包括於各輔助交易之輸出中。
較佳實施例之詳細說明 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,該區塊指標指回至該鏈中之先前創建區塊151以便界定區塊151之順序次序。各交易152 (除了比特幣基地交易以外)包含指回至先前交易之指標,以便界定交易序列之次序(注意:允許交易152之序列進行分支)。區塊151之鏈一直追溯至起源區塊(Gb) 153,該起源區塊為該鏈中之第一區塊。鏈150中早期之一或多個原始交易152指向起源區塊153,而非先前交易。
區塊鏈節點104中之各者經組配以將交易152轉遞至其他區塊鏈節點104,且藉此使交易152在整個網路106中傳播。各區塊鏈節點104經組配以創建區塊151,且將同一區塊鏈150之各別複本儲存於其各別記憶體中。各區塊鏈節點104亦維護等待併入至區塊151中之交易152的有序集合(或「池」) 154。有序池154常常被稱作「記憶體池」。本文中之此術語並不意欲限於任何特定區塊鏈、協定或模型。該術語係指節點104已接受為有效的交易之有序集合,且對於該有序集合,節點104不必接受嘗試支出相同輸出之任何其他交易。
在給定的目前交易152j中,該(或各)輸入包含參考交易序列中之先前交易152i之輸出的指標,指定此輸出待在目前交易152j中兌換或「支出」。支出或兌換未必暗示轉移金融資產,但此肯定為一種常見的應用。更一般而言,支出可描述為耗用輸出或將輸出指派給另一後繼交易中之一或多個輸出。一般而言,先前交易可為有序集合154或任何區塊151中之任何交易。在目前交易152j經創建或甚至發送至網路106時,先前交易152i不一定存在,但先前交易152i將需要存在且經驗核以使目前交易有效。因此,本文中的「先前」係指藉由指標連結之邏輯序列中的前置者,未必為時間序列中之創建或發送時間,且因此,其未必排除無序地創建或發送交易152i、152j (參見下文關於孤立交易之論述)。先前交易152i同樣可被稱為前期或前置交易。
目前交易152j之輸入亦包含輸入授權,例如先前交易152i之輸出被鎖定至的使用者103a之簽章。又,目前交易152j之輸出可以密碼編譯方式鎖定至新使用者或實體103b。目前交易152j因此可將先前交易152i之輸入中所定義的金額轉移至如目前交易152j之輸出中定義的新使用者或實體103b。在一些狀況下,交易152可具有多個輸出以在多個使用者或實體(多個使用者或實體中之一者可為原始使用者或實體103a以便找零)間劃分輸入金額。在一些狀況下,交易亦可具有多個輸入以將來自一或多個先前交易之多個輸出的金額搜集在一起,且重新分發給當前交易之一或多個輸出。
根據基於輸出之交易協定,諸如比特幣,當諸如個別使用者或組織之一方103希望制定新交易152j (手動地或藉由該方所使用之自動化程序)時,則制定方將新交易自其電腦終端機102發送至接收者。該制定方或接收者將最終發送此交易至網路106之區塊鏈節點104中之一或多者(該等區塊鏈節點現今通常為伺服器或資料中心,但原則上可為其他使用者終端機)。亦不排除制定新交易152j之該方103可將交易直接發送至區塊鏈節點104中之一或多者,且在一些實例中不發送至接收者。接收交易之區塊鏈節點104根據應用於區塊鏈節點104中之各者處之區塊鏈節點協定而檢查該交易是否有效。區塊鏈節點協定通常需要區塊鏈節點104檢查新交易152j中之密碼編譯簽章是否匹配預期簽章,此取決於交易152之有序序列中的先前交易152i。在此基於輸出之交易協定中,此可包含檢查包括於新交易152j之輸入中的該方103之密碼編譯簽章或其他授權是否匹配定義於新交易支出(或「指派」)指派之先前交易152i之輸出中的條件,其中此條件通常包含至少檢查新交易152j之輸入中的密碼編譯簽章或其他授權是否解除鎖定新交易之輸入所連結至的先前交易152i之輸出。該條件可至少部分地由包括於先前交易152i之輸出中的腳本定義。替代地,其可簡單地由區塊鏈節點協定單獨確定,或其由此等協定之組合確定。無論如何,若新交易152j有效,則區塊鏈節點104將其轉遞至區塊鏈網路106中之一或多個其他區塊鏈節點104。此等其他區塊鏈節點104根據相同區塊鏈節點協定應用相同測試,且因此將新交易152j轉遞至一或多個其他節點104,等等。以此方式,新交易在區塊鏈節點104之整個網路中傳播。
在基於輸出之模型中,是否指派(或「支出」)給定輸出(例如,UTXO)之定義為其是否已根據區塊鏈節點協定而由另一後繼交易152j之輸入有效地兌換。使交易有效之另一條件為該交易嘗試兌換之先前交易152i之輸出尚未由另一交易兌換。再次,若並非有效的,則將不在區塊鏈150中傳播(除非經標記為無效,且經傳播以用於警示)或記錄交易152j。此防止雙重支出,由此交易者試圖將同一交易之輸出指派多於一次。另一方面,基於帳戶之模型藉由維持帳戶餘額來防止雙重支出。因為同樣存在所定義之交易次序,所以帳戶餘額在任一時間皆具有單個所定義狀態。
除了驗核交易以外,區塊鏈節點104亦競相率先在通常被稱作挖掘之程序中創建交易區塊,該程序由「工作量證明」支援。在區塊鏈節點104處,將新交易添加至有效交易之有序池154,該等新交易尚未出現在記錄於區塊鏈150上之區塊151中。區塊鏈節點接著競相藉由嘗試解決密碼編譯難題而自交易之有序集合154組裝交易152之新有效區塊151。通常,此包含搜尋「臨時亂數」值,使得當臨時亂數與未決交易之有序池154的表示序連且經雜湊時,雜湊之輸出接著符合預定條件。例如,預定條件可為雜湊之輸出具有某一預定數目個前導零。應注意,此僅為一個特定類型之工作量證明難題,且不排除其他類型。雜湊函數之屬性為其輸出相對於其輸入為不可預測的。因此,此搜尋可僅藉由蠻力執行,因此在正試圖解決難題之各區塊鏈節點104處耗用大量處理資源。
解決難題之第一區塊鏈節點104向網路106宣佈此點,從而提供解決方案作為證明,該解決方案接著可由網路中之其他區塊鏈節點104容易地檢查(一旦給定雜湊之解決方案,便直接檢查其是否使得雜湊之輸出符合條件)。第一區塊鏈節點104將區塊傳播至接受該區塊且因此強制實行協定規則之其他節點的臨限共識。交易之有序集合154接著藉由區塊鏈節點104中之各者而記錄為區塊鏈150中之新區塊151。區塊指標155亦經指派給新區塊151n,該指標指回至鏈中之先前創建區塊151n-1。創建工作量證明解決方案所需之例如呈雜湊形式的大量工作量發信第一節點104遵循區塊鏈協定之規則的意圖。此等規則包括若交易支出或指派與先前驗核之交易相同的輸出,則不接受該交易為有效的,否則被稱為雙重支出。一旦經創建,區塊151便無法被修改,此係因為在區塊鏈網路106中之區塊鏈節點104中之各者處辨識及維護該區塊。區塊指標155亦向區塊151強加順序次序。由於交易152記錄於網路106中之各區塊鏈節點104處的有序區塊中,因此,此提供交易的不可變公共分類帳。
應注意,在任何給定時間競相解決難題之不同區塊鏈節點104可基於在任何給定時間尚待公佈之交易的池154的不同快照而如此操作,此取決於該等節點何時開始搜尋解決方案或接收該等交易之次序。不論誰首先解決其各別難題皆定義哪些交易152且以哪一次序包括於下一新區塊151n中,且更新未公佈交易之當前池154。區塊鏈節點104接著繼續競相自未公佈交易之新定義有序池154創建區塊,等等。亦存在用於解決可能出現的任何「分叉」之協定,分叉為二個區塊鏈節點104彼此在極短的時間內解決其難題之情況,使得區塊鏈的衝突觀點在節點104之間傳播。簡言之,無論分叉之哪個支叉生長得最長,皆成為決定性區塊鏈150。應注意,此不應影響網路之使用者或代理,此係因為相同交易將出現在二個分叉中。
根據比特幣區塊鏈(及大部分其他區塊鏈),成功地建構新區塊之節點104被授予在新特殊種類之交易中新指派額外接受金額之數位資產的能力,該新特殊種類之交易分發額外定義數量之數位資產(相較於代理間或使用者間交易,其將一定金額之數位資產自一個代理或使用者轉移至另一代理或使用者)。此特殊類型之交易通常被稱作「比特幣基地交易」,但亦可被稱為「起始交易」或「產生交易」。其通常形成新區塊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在本文中被稱作愛麗絲,且第二方103b被稱作鮑勃,但應瞭解,此不具限制性,且在本文中對愛麗絲或鮑勃之任何提及皆可分別用「第一方」及「第二方」替換。
各方103之電腦裝備102包含各別處理設備,該處理設備包含一或多個處理器,例如一或多個CPU、GPU、其他加速器處理器、特殊應用處理器及/或FPGA。各方103之電腦裝備102進一步包含記憶體,亦即,呈一或多個非暫時性電腦可讀媒體之形式的電腦可讀儲存器。此記憶體可包含一或多個記憶體單元,其使用一或多個記憶體媒體,例如,諸如硬碟之磁性媒體;諸如SSD、快閃記憶體或EEPROM之電子媒體;及/或諸如光碟驅動機之光學媒體。各方103之電腦裝備102上的記憶體儲存軟體,該軟體包含經配置以在處理設備上運行之至少一個用戶端應用程式105的各別執行個體。應理解,可使用在各別電腦裝備102之處理設備上運行的軟體來執行本文中歸於給定方103之任何動作。各方103之電腦裝備102包含至少一個使用者終端機,例如桌上型或膝上型電腦、平板電腦、智慧型手機或諸如智慧型手錶之可穿戴式裝置。給定方103之電腦裝備102亦可包含一或多個其他網路連接資源,諸如經由使用者終端機存取之雲端運算資源。
用戶端應用程式105最初可在合適的一或多個電腦可讀儲存媒體上經提供至任何給定方103之電腦裝備102,例如自伺服器下載,或經提供於抽取式儲存裝置上,該抽取式儲存裝置諸如抽取式SSD、快閃記憶體鑰匙、抽取式EEPROM、抽取式磁碟驅動機、磁性軟碟或磁帶、諸如CD或DVD ROM之光碟,或抽取式光碟機等。
用戶端應用程式105包含至少一「錢包」功能。此具有二個主要功能性。此等功能性中之一者為使得各別方103能夠創建、授權(例如,簽章)及發送交易152至一或多個比特幣節點104,以接著在區塊鏈節點104之整個網路中傳播且藉此包括於區塊鏈150中。另一功能性為將其當前擁有之數位資產的金額報告給各別方。在基於輸出之系統中,此第二功能性包含核對散佈在整個區塊鏈150中屬於所討論的一方之各種交易152之輸出中所定義的金額。
應注意:雖然各種用戶端功能性可描述為整合至給定用戶端應用程式105中,但此未必為限制性的,且實情為,本文中所描述之任何用戶端功能性可替代地實施於二個或多於二個相異應用程式之套件中,例如經由API介接,或一個應用程式為另一應用程式之外掛程式。更一般而言,用戶端功能性可實施於應用層或諸如作業系統之下部層或此等層之任何組合處。下文將關於用戶端應用程式105進行描述,但應瞭解,此並非限制性的。
各電腦裝備102上之用戶端應用程式或軟體105的執行個體操作性地耦接至網路106之區塊鏈節點104中之至少一者。此使得用戶端105之錢包功能能夠將交易152發送至網路106。用戶端105亦能夠聯繫區塊鏈節點104以便查詢區塊鏈150以詢問各別方103為接收者之任何交易(或實際上檢測區塊鏈150中之其他方的交易,此係因為在實施例中,區塊鏈150為公共設施,其部分地經由其公共可見性而在交易中提供信任)。各電腦裝備102上之錢包功能經組配以根據交易協定來制訂及發送交易152。如上文所闡述,各區塊鏈節點104運行軟體,該軟體經組配以根據區塊鏈節點協定來驗核交易152,且轉遞交易152以便在整個區塊鏈網路106中傳播該等交易。交易協定及節點協定彼此對應,且給定交易協定與給定節點協定相配,其一起實施給定交易模型。相同交易協定用於區塊鏈150中之所有交易152。相同節點協定由網路106中之所有節點104使用。
當給定方103,比如Alice,希望發送新交易152j以包括於區塊鏈150中時,其接著根據相關交易協定來制訂新交易(使用其用戶端應用程式105中之錢包功能)。其接著將交易152自用戶端應用程式105發送至與其連接的一或多個區塊鏈節點104。例如,此可為最佳地連接至愛麗絲之電腦102的區塊鏈節點104。當任何給定區塊鏈節點104接收新交易152j時,該區塊鏈節點根據區塊鏈節點協定及其各別角色來處置該新交易。此包含首先檢查新接收交易152j是否符合「有效」的某一條件,稍後將更詳細地論述該條件之實例。在一些交易協定中,可藉由包括於交易152中之腳本基於各交易來組配驗核條件。替代地,該條件可簡單地為節點協定之內置特徵,或可由腳本及節點協定之組合來定義。
若新接收交易152j通過被視為有效的測試(亦即,若其「經驗核」),則接收交易152j之任何區塊鏈節點104將添加新的經驗核交易152至在彼區塊鏈節點104處維護的交易之有序集合154。另外,接收交易152j之任何區塊鏈節點104將經驗核交易152向前傳播至網路106中之一或多個其他區塊鏈節點104。由於各區塊鏈節點104應用相同協定,因此接著假設交易152j有效,此意謂該交易將很快在整個網路106中傳播。
一旦被接納至在給定區塊鏈節點104處維護之未決交易的有序池154,彼區塊鏈節點104便將開始競爭解決其關於包括新交易152之交易的各別池154之最新版本的工作量證明難題(前已述及,其他區塊鏈節點104可能正試圖基於交易之不同池154來解決難題,但不論誰率先完成皆將定義包括於最新區塊151中之交易的集合。最終,區塊鏈節點104將解決包括愛麗絲之交易152j的有序池154之一部分的難題)。一旦已針對包括新交易152j之池154完成工作量證明,則其不可變地成為區塊鏈150中之區塊151中之一者的部分。各交易152包含指回至較早交易之指標,因此亦不變地記錄交易之次序。
不同區塊鏈節點104可首先接收給定交易之不同例項,且因此在新區塊151中公佈一個例項之前對於哪個例項「有效」具有衝突的觀點,此時,所有區塊鏈節點104同意所公佈例項為唯一有效例項。若區塊鏈節點104將一個例項接受為有效的且接著發現第二例項已記錄於區塊鏈150中,則彼區塊鏈節點104必須接受此例項且將捨棄(亦即,視為無效)其最初接受之例項(亦即,尚未在區塊151中公佈之例項)。
作為基於帳戶之交易模型之部分,由一些區塊鏈網路操作之交易協定之替代類型可被稱作「基於帳戶」之協定。在基於帳戶之狀況下,各交易皆不會藉由返回參考過去交易序列中之先前交易之UTXO來定義待轉移的金額,而是參考絕對帳戶餘額。所有帳戶之當前狀態由彼網路之節點與區塊鏈分離地儲存且不斷更新。在此系統中,使用帳戶(亦被稱作「頭寸」)之運行交易計數來對交易進行排序。此值由發送者進行簽章,作為其密碼編譯簽章之部分,且作為交易參考計算之部分而經雜湊。此外,任擇資料欄位亦可對交易進行簽章。舉例而言,若先前交易ID包括於資料欄位中,則此資料欄位可指回至先前交易。 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中。
假設愛麗絲103a希望創建將所討論的一定金額之數位資產轉移至鮑勃103b的交易152j。在圖2中,愛麗絲之新交易152j經標示為「 Tx 1 」。該交易獲取在序列中之先前交易152i之輸出203中鎖定至愛麗絲的一定金額之數位資產且將此數位資產中之至少一些轉移至鮑勃。先前交易152i在圖2中經標示為「 Tx 0 」。 Tx 0 Tx 1 僅為任意標籤。其未必意謂 Tx 0 為區塊鏈151中之第一交易,亦不意謂 Tx 1 為池154中緊接著的下一交易。 Tx 1 可指回至仍具有鎖定至愛麗絲之未支出輸出203的任何先前(亦即,前期)交易。
在愛麗絲創建其新交易 Tx 1 時,或至少至其將新交易發送至網路106時,先前交易 Tx 0 可能已經驗核且包括於區塊鏈150之區塊151中。該交易彼時可能已包括於區塊151中之一者中,或其可能仍在有序集合154中等待,在此狀況下,該交易將很快包括於新區塊151中。替代地,可創建 Tx 0 Tx 1 且將其一起發送至網路106,或若節點協定允許緩衝「孤立」交易,則 Tx 0 甚至可在 Tx 1 之後發送。如本文中所使用之「先前」及「後續」二個詞在交易序列之上下文中係指如由交易中指定之交易指標所定義的序列中之交易的次序(哪一交易指回至哪一其他交易,等等)。該等詞同樣地可用「前置」及「後置」或「前期」及「後期」、「親代」及「子代」或其類似者來替換。其未必暗示該等交易經創建、發送至網路106或到達任何給定區塊鏈節點104之次序。然而,直至且除非親代交易經驗核,否則將不驗核指向先前交易(前期交易或「親代」)之後續交易(後期交易或「子代」)。在親代之前到達區塊鏈節點104之子代被視為孤立的。取決於節點協定及/或節點行為,子代可被捨棄或緩衝一段時間以等待親代。
先前交易 Tx 0 之一或多個輸出203中之一者包含特定UTXO,其在此處標示為 UTXO 0 。各UTXO包含指定由UTXO表示之一定金額之數位資產的值;以及鎖定腳本,其定義後續交易之輸入202中之解除鎖定腳本必須符合的條件,以便驗核後續交易且因此成功地兌換UTXO。通常,鎖定腳本將金額鎖定至特定方(包括該金額之交易的受益人)。亦即,鎖定腳本定義解除鎖定條件,通常包含如下條件:後續交易之輸入中的解除鎖定腳本包含先前交易經鎖定至的一方之密碼編譯簽章。
鎖定腳本(亦稱為scriptPubKey)為以節點協定所辨識之網域特定語言編寫的一段程式碼。此語言之特定實例被稱為「Script」(S為大寫),其由區塊鏈網路使用。鎖定腳本指定需要何資訊來支出交易輸出203,例如愛麗絲之簽章的要求。解除鎖定腳本出現在交易之輸出中。解除鎖定腳本(亦稱為scriptSig)為用網域特定語言編寫的一段程式碼,其提供滿足鎖定腳本準則所需的資訊。舉例而言,其可含有鮑勃之簽章。解除鎖定腳本出現在交易之輸入202中。
因此,在所示出之實例中, Tx 0 之輸出203中的 UTXO 0 包含鎖定腳本[Checksig P A ],該鎖定腳本需要愛麗絲之簽章Sig P A 以便兌換 UTXO 0 (嚴格而言,以便使嘗試兌換 UTXO 0 之後續交易有效)。[Checksig P A ]含有來自愛麗絲之公用-私密金鑰對之公開金鑰 P A 的表示(亦即,雜湊)。 Tx 1 之輸入202包含指回至 Tx 1 之指標(例如,藉助於其交易ID TxID 0 ,其在實施例中為整個交易 Tx 0 之雜湊)。 Tx 1 之輸入202包含識別 Tx 0 內之 UTXO 0 的索引,以在 Tx 0 之任何其他可能輸出中識別 UTXO 0 Tx 1 之輸入202進一步包含解除鎖定腳本<Sig P A >,其包含愛麗絲之密碼編譯簽章,該密碼編譯簽章係藉由愛麗絲將其來自金鑰對之私密金鑰應用於資料(在密碼學中有時被稱為「訊息」)之預定義部分而創建。需要由愛麗絲簽章以提供有效簽章之資料(或「訊息」)可由鎖定腳本或由節點協定或由此等之組合來定義。
當新交易 Tx 1 到達區塊鏈節點104時,該節點應用節點協定。此包含一起運行鎖定腳本及解除鎖定腳本以檢查解除鎖定腳本是否符合鎖定腳本中所定義之條件(其中此條件可包含一或多個準則)。在實施例中,此涉及序連二個腳本: <Sig P A > < P A > || [Checksig P A ] 其中「||」表示序連,且「<…>」意謂將資料置放於堆疊上,且「[…]」為鎖定腳本(在此實例中為基於堆疊之語言)所包含之函式。等效地,腳本可使用共同堆疊一個接一個地運行,而非序連腳本。無論如何,當一起運行時,腳本使用如包括於 Tx 0 之輸出中之鎖定腳本中的愛麗絲之公開金鑰 P A ,以鑑認 Tx 1 之輸入中的解除鎖定腳本含有對資料之預期部分進行簽章的愛麗絲之簽章。亦需要包括資料自身(「訊息」)之預期部分,以便執行此鑑認。在實施例中,經簽章資料包含整個 Tx 1 (因此不需要包括分離的元素來以明文指定資料之經簽章部分,此係因為其已固有地存在)。
藉由公開-私密密碼學進行鑑認之細節將為熟習此項技術者所熟悉的。基本上,若愛麗絲已使用其私密金鑰對訊息進行簽章,則在以明文給出愛麗絲之公開金鑰及訊息的情況下,諸如節點104之另一實體能夠鑑認該訊息必須已由愛麗絲進行簽章。簽章通常包含對訊息進行雜湊、對雜湊進行簽章及將此標誌至訊息上作為簽章,因此使得公開金鑰之任何持有者能夠鑑認該簽章。因此,應注意,本文中對特定資料片段或交易之部分或其類似者之簽章的任何提及在實施例中可意謂對彼資料片段或交易之部分的雜湊進行簽章。
Tx 1 中之解除鎖定腳本符合 Tx 0 之鎖定腳本中所指定的一或多個條件(因此在所展示之實例中,若愛麗絲之簽章經提供於 Tx 1 中且經鑑認),則區塊鏈節點104將 Tx 1 視為有效的。此意謂區塊鏈節點104將添加 Tx 1 至未決交易之有序池154。區塊鏈節點104將亦轉遞交易 Tx 1 至網路106中之一或多個其他區塊鏈節點104,使得該交易將在整個網路106中傳播。一旦 Tx 1 已經驗核且包括於區塊鏈150中,則此將來自 Tx 0 UTXO 0 定義為已支出。應注意, Tx 1 可僅在其支出未支出交易輸出203之情況下為有效的。若其嘗試支出已由另一交易152支出之輸出,則 Tx 1 將為無效的,即使符合所有其他條件亦如此。因此,區塊鏈節點104亦需要檢查是否已支出先前交易 Tx 0 中所參考之UTXO (亦即,其是否已形成另一有效交易之有效輸入)。此為區塊鏈150將所定義次序強加於交易152上很重要的一個原因。實務上,給定區塊鏈節點104可維護分離的資料庫,其標記已支出哪些交易152中之哪些UTXO 203,但最終定義是否已支出UTXO的係其是否已形成區塊鏈150中之另一有效交易的有效輸入。
若給定交易152之所有輸出203中所指定的總金額大於由所有其輸入202所指向之總金額,則此為大多數交易模型中無效之另一基礎。因此,此類交易將不被傳播,亦不包括於區塊151中。
應注意,在基於UTXO之交易模型中,需要將給定UTXO整個支出。其不能「留下」在UTXO中定義為支出之一小部分金額,而另一小部分已支出。然而,來自UTXO之金額可在下一交易之多個輸出之間劃分。例如, Tx 0 中之 UTXO 0 中所定義的金額可在 Tx 1 中之多個UTXO之間劃分。因此,若愛麗絲不想將 UTXO 0 中所定義之所有金額皆給予鮑勃,則其可使用剩餘金額在 Tx 1 之第二輸出中給自身找零,或支付給另一方。
實務上,愛麗絲通常亦將需要包括比特幣節點104之費用,該比特幣節點成功地將愛麗絲之交易104包括於區塊151中。若愛麗絲不包括此費用,則區塊鏈節點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中之一者中明確地指定交易費用。
愛麗絲及鮑勃之數位資產由在區塊鏈150中任何位置處之任何交易152中鎖定至愛麗絲及鮑勃的UTXO組成。因此,給定方103之資產通常遍及整個區塊鏈150中之各種交易152的UTXO而散佈。區塊鏈150中之任何位置處皆未儲存定義給定方103之總餘額的一個數字。用戶端應用程式105中之錢包功能的作用為將鎖定至各別方且尚未在另一後繼交易中支出之所有各種UTXO的值一起核對。其可藉由查詢如儲存於比特幣節點104中之任一者處的區塊鏈150之複本來實現此操作。
應注意,常常示意性地表示腳本(亦即,不使用確切語言)。舉例而言,吾人可使用操作碼(作業碼)來表示特定函式。「OP_…」係指Script語言之特定作業碼。作為實例,OP_RETURN為Script語言之作業碼,當在鎖定腳本之開頭加上OP_FALSE時,該作業碼創建交易之不可支出輸出,該輸出可儲存交易內之資料,且藉此將資料不可變地記錄於區塊鏈150中。例如,資料可包含需要儲存於區塊鏈中之文件。
通常,交易之輸入含有對應於公開金鑰 P A 之數位簽章。在實施例中,此係基於使用橢圓曲線secp256k1之ECDSA。數位簽章對特定資料片段進行簽章。在一些實施例中,對於給定交易,簽章將對交易輸入之部分及交易輸出中之一些或全部進行簽章。數位簽章所簽章之輸出之特定部分取決於SIGHASH旗標。SIGHASH旗標通常為4位元組碼,其被包括在簽章之末尾,以選擇對哪些輸出進行簽章(且因此在簽章時固定)。
鎖定腳本有時被稱為「scriptPubKey」,其係指其通常包含各別交易被鎖定至的一方之公開金鑰。解除鎖定腳本有時被稱為「scriptSig」,其係指其通常供應對應簽章。然而,更一般而言,在區塊鏈150之所有應用中,兌換UTXO之條件不一定包含鑑認簽章。更一般而言,腳本處理語言可用於定義任何一或多個條件。因此,「鎖定腳本」及「解除鎖定腳本」二個更一般的詞可為較佳的。 3.   旁側通道
如圖1中所展示,愛麗絲及鮑勃之電腦裝備102a、120b中之各者上的用戶端應用程式可分別包含額外通訊功能性。此額外功能性使得愛麗絲103a能夠與鮑勃103b建立分離的旁側通道107 (在任一方或第三方之推動下)。旁側通道107使得能夠與區塊鏈網路分離地進行資料交換。此通訊有時被稱作「鏈外」通訊。舉例而言,此可用於在愛麗絲與鮑勃之間交換交易152,而無需(尚未)將交易註冊至區塊鏈網路106上或使其進入鏈150,直至多方中之一者選擇將其廣播至網路106。以此方式共用交易有時被稱作共用「交易範本」。交易範本可能缺乏形成完整交易所需之一或多個輸入及/或輸出。替代地或另外,旁側通道107可用於交換任何其他交易相關資料,諸如金鑰、協商的金額或條款、資料內容等。
可經由與區塊鏈網路106相同之封包交換網路101建立旁側通道107。替代地或另外,可經由諸如行動蜂巢式網路之不同網路或諸如區域無線網路之區域網路或甚至愛麗絲之裝置102a與鮑勃之裝置102b之間的直接有線或無線鏈路來建立旁側通道301。通常,在本文中任何位置處被提及之旁側通道107可包含經由一或多個網路連接技術或通訊媒體之任何一或多個鏈路,以用於「鏈外」(亦即,與區塊鏈網路106分離地)交換資料。在使用多於一個鏈路的情況下,鏈外鏈路之集束或集合作為整體可被稱作旁側通道107。因此,應注意,若據稱愛麗絲及鮑勃經由旁側通道107交換某些資訊或資料片段或其類似者,則此未必暗示必須經由完全相同的鏈路或甚至相同類型之網路來發送所有此等資料片段。 4.   強制實行鎖定腳本之傳播
圖3示出用於強制傳播鎖定腳本,亦即,迫使交易鏈中之各交易包括相同鎖定腳本的實例系統300。系統300包含第一方(例如,愛麗絲103a)及第二方(例如,鮑勃103b)。系統300亦可包含一或多個額外方,例如查理103c。系統300亦包含區塊鏈網路106之一或多個區塊鏈節點104。雖然貫穿以下描述,第一方及第二方被稱作愛麗絲103a及鮑勃103b,但應注意,此僅係出於方便起見。亦即,第一方及第二方未必需要經組配以執行上文參看圖1及圖2描述為由愛麗絲103a及鮑勃103b執行之動作中之一些或全部,但此當然為一種選項。更一般而言,第一方及第二方二者可經組配以執行上文參看圖1及圖2描述為由愛麗絲103a及/或鮑勃103b執行的動作中之一些或全部。應瞭解,描述為由愛麗絲103a、鮑勃103b或查理103c執行之任何操作係由其各別計算裝備執行。
本發明之實施例可用以確保在整個區塊鏈交易鏈中傳播鎖定腳本。一般而言,協定依賴於二種類型之交易:主要交易及輔助交易。主要交易各自包含各別主要鎖定腳本,該主要鎖定腳本對嘗試解除鎖定各別主要鎖定腳本之各別輔助交易強制實行條件。各主要鎖定腳本相同,亦即,其採用相同格式,含有相同資料且實施相同函式。輔助交易各自包含各別輔助鎖定腳本,該輔助鎖定腳本對嘗試解除鎖定各別輔助鎖定腳本之各別主要交易強制實行條件。各輔助鎖定腳本相同。
第一方愛麗絲103a可負責產生發佈交易。發佈交易為交易鏈中之初始主要交易。發佈交易亦可被稱作第一主要交易。在主要交易含有符記相關資料之實例中,愛麗絲103a可為符記之發佈者。在其他實例中,不同方可起始符記鏈。
第一主要交易包含一或多個輸入及一或多個輸出。舉例而言,主要交易之輸入可用以解除鎖定愛麗絲之先前交易中之一者的輸出,且因此可包括進行解除鎖定所需的資料,例如愛麗絲之簽章及公開金鑰。第一主要交易之輸出(例如,第一輸出)包括主要鎖定腳本,亦即,待在未來交易中傳播之相同主要鎖定腳本的執行個體。第一主要交易之另一輸出(例如,第二輸出)可指定支出條件,例如其可被鎖定至由愛麗絲103a或不同方擁有之公開金鑰。舉例而言,第二輸出可包含支付公開金鑰雜湊(P2PKH)輸出。
主要鎖定腳本經組配以對嘗試解除鎖定主要鎖定腳本之交易強制實行若干條件,該交易在此狀況下為第一輔助交易。對輔助交易強制實行之一個條件為第一輔助交易之解除鎖定腳本必須含有基於第一輔助交易自身之第一訊息。亦即,第一訊息係基於第一輔助交易之欄位中之一者、一些或全部。一些欄位可呈其原始形式且一些可能被混淆,例如雜湊。用於迫使解除鎖定腳本含有此訊息之一種技術在此項技術中已知為PUSHTX,其為偽作業碼,亦即,經組配以執行特定函式之作業碼之組合。PUSHTX在此處描述:https://xiaohuiliu.medium.com/op-push-tx-3d3d279174c1。另一實例描述於英國專利申請案GB2112930.9中。迫使解除鎖定腳本含有第一訊息允許對第一輔助交易進行某些檢查。此訊息有時被稱作簽名雜湊原像,此係因為其係在作為區塊鏈簽章協定之部分進行簽章之前經雜湊的原像。換言之,迫使解除鎖定腳本含有第一訊息允許對第一輔助交易強制實行某些條件。強制實行之一個條件為:第一輔助交易之輸出(例如,第一輸出)含有輔助鎖定腳本(下文所描述)。
作為如何強制實行此條件之實例,主要鎖定腳本可包含經組配以基於輔助鎖定腳本之雜湊而實施雜湊難題的子腳本。亦即,雜湊難題包含輔助鎖定腳本之雜湊,且經組配以使得其僅在提供雜湊之原像的情況下才能解決,且因此解除鎖定子腳本,由此原像為輔助鎖定腳本。因此,主要鎖定腳本可經組配以自第一訊息提取鎖定腳本(例如,第一鎖定腳本),對所提取之鎖定腳本進行雜湊,且驗證其雜湊至包括為主要鎖定腳本之部分的輔助鎖定腳本之雜湊。
愛麗絲103a可創建第一輔助交易,或該輔助交易可由不同方產生。如上文所提及,第一輔助交易包含:包含第一訊息之輸入及包含輔助鎖定腳本之輸出。輔助鎖定腳本經組配以對嘗試解除鎖定輔助鎖定腳本之交易強制實行若干條件,該交易在此狀況下為第二主要交易。對第二主要交易強制實行之一個條件為第二主要交易之解除鎖定腳本(例如,第一解除鎖定腳本)必須含有基於第二主要交易之第二訊息。亦即,第二訊息係基於第二主要交易之欄位中之一者、一些或全部。一些欄位可呈其原始形式且一些可能被混淆,例如雜湊。對第二主要交易強制實行之另一條件為:解除鎖定腳本必須亦含有資料項目,該資料項目包含第一主要交易之一個、一些或各鎖定腳本,且因此第一資料項目必須含有主要鎖定腳本。亦即,第一資料項目必須至少包括主要鎖定腳本。在一些實例中,第一資料項目必須亦包括下文所論述之第一主要交易之第二鎖定腳本。藉由使用第二訊息及第一資料項目,輔助鎖定腳本迫使第二主要交易在輸出(例如,第一輸出)中包括主要鎖定腳本。因此,主要鎖定腳本在主要交易之間傳播。由於主要鎖定腳本迫使輔助交易含有輔助鎖定腳本,因此輔助鎖定腳本亦在輔助交易之間傳播。包括為主要鎖定腳本或輔助鎖定腳本之部分的任何資料(例如,符記相關資料)因此分別在主要交易或輔助交易之間傳播。
如上文所提及,第一主要交易可包括第二輸出。輔助鎖定腳本可經組配以迫使第一主要交易之第二輸出由第二主要交易之輸入支出。亦即,在此等實例中,第一主要鎖定腳本之第二輸出及第一輔助交易之第一輸出必須由第二主要交易之各別輸入支出,而非由分離的交易支出。
用於強制實行此條件之一個選項為迫使第二主要交易之第一解除鎖定腳本包括第一輔助交易。亦即,第二資料項目包括於第二主要交易之解除鎖定腳本中,其中彼第二資料項目包含第一輔助交易,例如以串列化形式。輔助鎖定腳本經組配以自第二訊息提取由第二主要交易之第一輸入支出的輸出之各別交易識別符。類似地,輔助鎖定腳本經組配以自第二資料項目提取由第一輔助交易之第一輸入支出的輸出之各別交易識別符。輔助交易經組配以迫使所提取之交易識別符相同。
在此等實例中,第二主要交易包括經組配以解除鎖定第一主要交易之第二輸出的第二輸入,因此創建鏈接的交易鏈。應注意,該等交易可以此方式鏈接,而無需上文所描述的強制第一主要交易之輸出及第一輔助交易之輸出由同一第二主要交易支出。然而,在腳本中強制實行此條件存在益處(下文所論述)。
在一些實例中,可藉由輔助鎖定腳本執行額外驗證以驗證第一資料項目(亦即,包含第一主要交易之鎖定腳本的資料項目)為正確的。第一主要交易具有交易識別符或至少與交易識別符相關聯,該交易識別符係藉由用例如SHA256或SHA512之雜湊函數對交易進行雜湊而產生。可使用任何合適的雜湊函數。第二主要交易之第一解除鎖定腳本可包括第三資料項目,該第三資料項目包含將雜湊函數應用於第一主要交易之中間狀態。熟習此項技術者將熟悉中間狀態自身。一般而言,當對資料進行雜湊(例如,用基於SHA之雜湊函數)時,將資料分成區塊。使用區塊之第一集合執行一系列計算以產生第一中間狀態。使用第一中間狀態及區塊之第二集合執行一系列計算以產生第二中間狀態,依此類推,直至已對所有區塊進行運算以給出雜湊摘要。換言之,雜湊函數不涉及單個運算。確切而言,將雜湊函數之輸入分解成區塊(例如,對於SHA256,分解成64個位元組),且依序處理該等區塊。中間狀態為在處理區塊中之一或多者之後的內部狀態。在處理各區塊之後產生中間狀態。在處理第n個區塊之後計算的中間狀態取決於所有先前區塊,但不取決於後續區塊。SHA256雜湊函數之內部工作實例可見於https://qvault.io/cryptography/how-sha-2-works-step-by-step-sha-256/。
本揭露內容認識到,藉由提供藉由將雜湊函數應用於第一主要交易之不包括鎖定腳本之第一部分而產生的中間狀態,接著可使用第一資料項目在腳本(亦即,鎖定腳本)中繼續計算以產生第一主要交易之候選交易識別符。若候選交易識別符匹配第一主要交易之實際交易識別符,則第一資料項目必須包括第一主要交易之實際鎖定腳本(且因此包括主要鎖定腳本)。
輔助鎖定腳本亦可經組配以迫使第二主要交易包括鏈中之初始主要交易的交易識別符。舉例而言,可能需要第二主要交易在第二輸出中包括交易識別符。若第一主要交易為鏈中之初始交易,則迫使包括第二主要交易之各後續交易包括第一主要交易之交易識別符。在此等實例中,初始主要交易(例如,第一主要交易)將不包括其自身的交易識別符,此係因為其基於整個初始主要交易。可迫使各後續主要交易包括初始主要交易之交易識別符。
第二主要交易可由愛麗絲103a或不同方產生。如上文所論述,第二主要交易包含支出第一輔助交易之第一輸出的第一輸入,且可包含支出第一主要交易之第二輸出的第二輸入。第二主要交易亦包含:包含主要鎖定腳本之第一輸入。第二主要交易可包含例如待由下一主要交易之第二輸出解除鎖定的第二輸出。第二輸出可鎖定至第二方鮑勃103b之公開金鑰。第二輸出可包括初始主要交易之交易識別符。
愛麗絲103a經組配以將第一主要交易提交至一或多個區塊鏈節點104。舉例而言,愛麗絲103a自身可將第一主要交易發送至區塊鏈網路106,或其可經由例如鮑勃103b之中間者將第一主要交易發送至區塊鏈網路。類似地,愛麗絲103a可經組配以使第一輔助交易及/或第二主要交易被提交至一或多個區塊鏈節點104。
在一些實例中,愛麗絲103a可將第二主要交易發送至鮑勃103b。愛麗絲130a亦可將默克爾(Merkle)證明發送至鮑勃103b,其中默克爾證明可用以驗證第一主要交易已記錄於區塊鏈150上。
至此,第一主要交易大多被描述為初始主要交易。然而,第一主要交易一般可為第n個主要交易,在此狀況下,上文所描述之第二主要交易將為第n+1個主要交易。類似地,在此實例中,存在第n-1個主要交易。在此狀況下,愛麗絲130a可能或可能不負責產生發佈交易。
繼續此實例,第一主要交易可包含參考先前輔助交易之第一輸出的第一輸入。類似於第一輔助交易,先前輔助交易之第一輸出含有輔助鎖定腳本(亦即,完全相同輔助腳本之執行個體)。先前輔助交易亦具有參考先前主要交易之第一輸出的輸入。先前主要交易之第一輸出含有主要鎖定腳本。在此實例中,先前主要交易可為初始主要交易,或主要交易鏈中之不同主要交易。
先前輔助交易之輔助鎖定腳本經組配以對第一主要交易執行上文所描述之檢查(亦即,強制實行相同條件),正如第一輔助交易之輔助鎖定腳本對第二主要交易所執行的。舉例而言,迫使第一主要交易包括主要鎖定腳本。
在此等實例中,當第二主要交易具有親代主要交易(亦即,第一主要交易)及祖代主要交易(亦即,先前主要交易)時,第一主要交易之輔助鎖定腳本經組配以迫使第二主要交易之解除鎖定腳本包括第四資料項目,該第四資料項目包含先前主要交易之一個、一些或各鎖定腳本。此將包括主要鎖定腳本。藉由使用包括於第二主要交易之解除鎖定腳本中的第二訊息(亦即,基於第二主要交易產生之訊息)以及第四資料項目,輔助鎖定腳本驗證包括於第二主要交易之第一輸出中的主要鎖定腳本與包括於先前主要交易中之主要鎖定腳本相同。此驗證同一主要鎖定腳本自一個主要交易被傳遞至下一主要交易,且再傳遞至下一主要交易。換言之,證明已執行先前主要交易之主要鎖定腳本。
藉由將雜湊函數(例如,SHA256)應用於先前主要交易而產生的中間狀態可用以驗證第四資料項目為正確的。亦即,可藉由輔助鎖定腳本執行額外驗證以驗證第四資料項目(亦即,包含先前主要交易之鎖定腳本的資料項目)為正確的。先前主要交易具有交易識別符或至少與交易識別符相關聯,該交易識別符係藉由用例如SHA256之雜湊函數對交易進行雜湊而產生。第二主要交易之第一解除鎖定腳本可包括第五資料項目,該第五資料項目包含將雜湊函數應用於先前主要交易之中間狀態。輔助鎖定腳本可使用第四資料項目及第五資料項目產生先前主要交易之候選交易識別符。若候選交易識別符匹配先前主要交易之實際交易識別符,則第四資料項目必須包括先前主要交易之實際鎖定腳本(且因此包括主要鎖定腳本)。
第一主要交易可包括支出先前主要交易之第二輸出的第二輸入。此條件可藉由包括於先前輔助鎖定腳本中之輔助鎖定腳本強制實行。
先前主要交易及/或先前輔助交易可由愛麗絲103a或例如鮑勃103b或查理103c之不同方產生。類似地,雖然以上描述通常已關於愛麗絲103a產生第一主要交易、第一輔助交易及第二主要交易來描述,但彼等交易中之任何一或多者可替代地由鮑勃103b或查理103c產生。
例如鮑勃103b之一方可獲得主要交易,意欲驗證已正確地產生主要交易。舉例而言,鮑勃103b可自愛麗絲103a獲得第二主要交易。第二主要交易已在上文描述。作為簡要回顧,第二主要交易具有包含主要鎖定腳本之第一輸出及至少包含第二訊息(基於第二主要交易產生)之第一輸入(亦即,第一輸入之解除鎖定腳本),以及包含第一主要交易之一個、一些或各鎖定腳本的第一資料項目。鎖定腳本中之一者包括主要鎖定腳本。在以下實例中,第二主要交易之第一輸入亦包括第一輔助交易。
鮑勃103b驗證第一主要交易已記錄於區塊鏈150上且因此為有效交易。如此做的一個選項為獲得默克爾證明(亦即,雜湊集合),該默克爾證明可連同第一主要交易之交易識別符一起用以計算候選區塊標頭。若候選區塊標頭匹配區塊鏈區塊151之區塊標頭,則鮑勃103b可確保區塊含有第一主要交易。另一選項為向區塊鏈節點104請求確認。
如上文所論述,第二主要交易之解除鎖定腳本可包括第三資料項目(應用於第一主要交易之部分的雜湊函數之中間狀態)。鮑勃103b可使用第一資料項目及第三資料項目來產生第一主要交易之候選交易識別符,且使用候選交易識別符執行默克爾證明。
鮑勃103b亦驗證在包括於第一主要交易中之主要鎖定腳本經組配以需要第一輔助交易含有輔助鎖定腳本的意義上,主要鎖定腳本為正確的。鮑勃103b可明確地驗證主要鎖定腳本,亦即,檢查其含有正確函式等。作為更高效選項,如上文所論述,主要鎖定腳本可含有輔助鎖定腳本之雜湊作為雜湊難題之部分。因此,為了解決雜湊難題,輔助交易必須包括輔助鎖定腳本。因此,鮑勃103b可驗證主要鎖定腳本包括輔助鎖定腳本之雜湊。舉例而言,鮑勃103b可預先已知雜湊,例如由愛麗絲103a或產生初始主要交易之一方發送。
作為選項檢查,鮑勃103a可驗證第二主要交易含有(例如,在第二輸出中)主要交易鏈中之初始交易的交易識別符,該初始交易可為第一主要交易。
在已執行驗證後,鮑勃103b可產生第二輔助交易及第三主要交易。舉例而言,此可用以將符記轉移至查理103c。第二輔助交易與第一輔助交易採用相同格式。第二輔助交易具有支出第二主要交易之第一輸出的第一輸入,亦即,含有主要鎖定腳本之輸出。為此,其包括基於第二輔助交易之一些或所有欄位產生的第三訊息。第二輔助交易具有包括輔助鎖定腳本之第一輸入。鮑勃103b直接或經由不同方將第二輔助交易發送至區塊鏈網路106。
鮑勃103b亦產生第三主要交易。第三主要交易類似於第二主要交易。其包括支出第二主要交易之第一輸出的第一輸入。第三主要交易之第一輸入包括基於第三主要交易之一些或所有欄位產生的第三訊息。在此實例中,第一輸入包括第二輔助交易、第一資料項目(亦即,第一主要交易之各鎖定腳本),且第六資料項目包含第二主要交易之一個、一些或各鎖定腳本。第三主要交易可包括鎖定至查理103c之公開金鑰的第二輸出。第三主要交易可包括支出第二主要交易之第二輸出的第二輸入。鮑勃103b直接或經由不同方將第二主要交易發送至區塊鏈網路106。 5.   區塊鏈節點驗核符記
此章節描述上文所描述之實施例的詳細實例。應瞭解,此章節中所呈現之一些特徵為任擇的。此實例專注於交易為符記交易之使用狀況,亦即,該等交易含有符記相關資料。此僅為說明性使用狀況,且其一般可用於需要可證明交易鏈而無需驗證返回至發佈交易之所有交易的其他應用。
此章節描述符合四個要求之符記協定。
1. 符記交易之驗證者無需一直追溯至符記之發佈交易,因此改良效率。 2.   在發佈符記之後,在二個使用者之間轉移符記時不會涉及到受信任的第三方,因此改良安全性及可用性。 3.   符記交易之大小為恆定的。其獨立於歷史交易之數目,因此改良儲存。 4.   此解決方案不受重放攻擊影響,亦即,無法複製符記,因此改良安全性。
在腳本中強制實行而無需驗證者或第三方執行任何符記規則之符記被稱為「挖掘者驗核」符記或「區塊鏈節點驗核」符記。據申請人所知,本申請案揭露區塊鏈150上之第一挖掘者驗核符記協定。
該協定使用以下建置區塊: ●  驗證相同作業碼出現在交易鏈中之祖代交易的二個鎖定腳本中之各者中且此等鎖定腳本已執行的腳本片段, ●  強制交易鏈中接下來之二個子代鎖定腳本含有相同作業碼的腳本片段, ●  實施部分SHA256之腳本片段, ●  將驗證資料自一個符記交易傳遞至其支出交易(以避免自參考)之輔助交易,以及 ●  不可重放的獨特符記ID ( UTID)。為簡單起見,假定此為發佈交易ID。
下文分步驟呈現該協定,一次描述解決方案之一部分。解決方案之每次迭代皆會產生將由解決方案之下一次迭代解決的問題,最終以完整的解決方案結束。吾人將支出交易
Figure 02_image001
作為視點且解釋吾人可如何將
Figure 02_image001
判定為有效符記交易,而無需一直追溯至發佈交易。吾人使用以下術語來指與
Figure 02_image001
相關的交易: ●  親代交易
Figure 02_image003
:由
Figure 02_image001
之第二輸入參考的交易, ●  祖代交易
Figure 02_image005
:由
Figure 02_image003
之第二輸入參考的交易;以及 ●  輔助交易
Figure 02_image007
:在輸入中參考
Figure 02_image009
之第一輸出且由
Figure 02_image001
之第一輸入參考的交易。
此等交易及其關係展示於圖4中。吾人假定祖代、親代及輔助交易皆已被挖掘者接受。支出交易
Figure 02_image011
為最後看到的交易。 5.1 交易結構
該協定考慮符記鏈中最新的三個交易。對於各交易,存在輔助交易。輔助交易對於避免交易膨脹及自參考係必要的。在圖4中給出交易結構之示意性表示,其中交易鏈定義為第二輸入及輸出之鏈。下文更詳細地解釋該交易鏈。
在交易之串列化中,首先出現所有輸入且接著出現所有輸出。輸入及輸出按其索引次序出現。以下論述脫離交易編碼,僅專注於解除鎖定及鎖定腳本。應注意,當參考解除鎖定腳本時,吾人亦可能指對應於彼解除鎖定腳本的所參考之輸出點。此係為了避免與函式之「輸入」混淆。
吾人考慮單個交易鏈,諸如不可替代符記(NFT)之表示。吾人假定不分裂及組合符記,從而創建交易有向無環圖(DAG)。吾人亦假定不存在可添加的其他輸入及輸出。 5.2 記法
吾人指示具有OP首碼OP_CODE之預定義作業碼以及不具有例如CODE之首碼的預定義作業碼之組合。將用括弧CODE
Figure 02_image013
指示取決於諸如公開金鑰之變數的作業碼或作業碼組合。吾人將作業碼組合之組成表示為CODE1+CODE2。 5.3 推送交易及其衍生內容
給定交易
Figure 02_image001
之簽章雜湊原像
Figure 02_image015
作為輸入,在
Figure 02_image009
之鎖定腳本中標示為PUSHTX的作業碼之組合評估為真。在底層,作業碼建構及驗證簽章雜湊原像
Figure 02_image015
上之簽章。若輸入具有對應公開金鑰之簽章,則最終作業碼OP_CHECKSIG評估為真,其中簽章在自交易自身提取之交易訊息
Figure 02_image015
上。
交易訊息
Figure 02_image015
係由
Figure 02_image011
Figure 02_image009
中之各種欄位建構。特別地,吾人將感興趣的欄位為: 1.
Figure 02_image011
之鎖定腳本 2.     輸出點
Figure 02_image017
Figure 02_image019
;以及 3.
Figure 02_image009
之鎖定腳本。
上標A指示交易為輔助交易。
包括PUSHTX之含義為當前交易
Figure 02_image011
簽章雜湊原像可證明在堆疊上。此意謂此等欄位中之任一者可具有對其強制實行之條件,諸如含有作業碼之某些組合或序號。若此等條件不符合,則支出交易無效。
給定
Figure 02_image009
Figure 02_image017
(自
Figure 02_image015
獲取)作為輸入,若
Figure 02_image021
,其中
Figure 02_image023
為雙SHA256雜湊函數,則
Figure 02_image009
中之鎖定腳本中的作業碼PUSHTXPARENT之組合評估為真。在底層,作業碼計算串列化交易
Figure 02_image009
之雜湊且比較結果與
Figure 02_image017
,其中已自輸入至PUSHTX之簽章雜湊原像中之輸出點提取交易ID。若二個值相同,則此評估為真。為確保當前交易之親代交易實際上被推送至堆疊,PUSHTXPARENT含有PUSHTX以自此提取輸出點。由於PUSHTX含有所有輸出點,因此可推送任何親代交易,即使其不對應於其出現之輸入的輸出點亦如此。
串列化交易訊息
Figure 02_image009
係由各種欄位建構。吾人將尤其感興趣的欄位為: 1.
Figure 02_image009
之鎖定腳本;以及 2.     輸出點
Figure 02_image025
結合PUSHTX來包括PUSHTXPARENT的含義為串列化親代交易中之任何欄位皆可具有對其強制實行的條件,如上所述。
類似地,給定
Figure 02_image027
Figure 02_image025
(來自
Figure 02_image009
)作為輸入,若
Figure 02_image029
,則
Figure 02_image009
中之鎖定腳本中的作業碼PUSHTXGRANDPARENT之組合評估為真。如同PUSHTXPARENT及PUSHTX,
Figure 02_image009
為向PUSHTXPARENT給出之輸入以確保此實際上為祖代交易。此可重複以推送任何祖先交易,其限制條件為經由PUSHTXPARENT、PUSHTXGRANDPARENT等以迭代方式進行鏈接。 5.4 SHA256雜湊函數
雜湊函數將具有任意大小
Figure 02_image031
之資料映射至具有固定大小之資料。當輸入資料長於447個位元時,SHA256雜湊函數之執行使用默克爾-達姆加德(Merkle-Damgård)構造的壓縮函數
Figure 02_image033
以迭代方式處理資料。壓縮函數用於按以下方式計算
Figure 02_image035
1. 計算填補原像
Figure 02_image037
,其中
Figure 02_image039
為對訊息的填補,從而確保長度為512個位元之倍數。 2.   將
Figure 02_image041
分成大小為512個位元之
Figure 02_image043
個區塊,其中
Figure 02_image045
。 3.   計算
Figure 02_image047
,其中
Figure 02_image049
為預定義的初始化向量。 4.   計算
Figure 02_image051
。 5.   繼續512個位元之各第
Figure 02_image053
個區塊
Figure 02_image055
,直至處理完整個原像。 6.   輸出
Figure 02_image057
可執行以上步驟之計算直至第
Figure 02_image053
次迭代且停止。可儲存剩餘原像
Figure 02_image059
及中間狀態
Figure 02_image061
,且稍後繼續計算。進一步的「部分SHA」計算將指示為
Figure 02_image063
,其輸出與
Figure 02_image035
相同。 5.5 作業碼中之部分SHA256
Figure 02_image053
次迭代之計算將在鏈外執行。最後的
Figure 02_image065
次迭代將在腳本中執行,需要在作業碼中實施計算。給定
Figure 02_image067
以及剩餘原像
Figure 02_image069
及中間狀態
Figure 02_image071
作為輸入,若
Figure 02_image063
,則此等作業碼PARTIALSHA256將傳回真。在底層,給定
Figure 02_image069
Figure 02_image071
作為輸入,作業碼計算SHA256雜湊函數之剩餘迭代。將此運算之結果與
Figure 02_image067
進行比較。若其相同,則作業碼之此集合傳回真。
在本發明狀況下,吾人將計算串列化交易之部分SHA256,其經雜湊且與給定
Figure 02_image073
進行比較。如所提及,輸入首先出現在串列化交易中。此意謂吾人可使用部分SHA256計算來編校需要作為PUSHTXPARENT或PUSHTXGRANDPARENT之輸入的解除鎖定腳本中之串列化交易的第一輸入。
吾人利用部分SHA256來編校串列化交易之第一解除鎖定腳本。吾人將濫用以上記法,寫為
Figure 02_image075
以意謂計算SHA256雜湊函數之前
Figure 02_image053
次迭代,直至第一輸入之結尾。換言之,以此方式書寫其並不意謂
Figure 02_image077
僅為512個位元(及SHA256雜湊計算之第一次迭代)。其將很可能會更長。 5.6     問題1:執行及傳播之證明
吾人考慮的第一個問題為所謂的「返回起源」問題。此發生在符記之驗核者想要證明其接收之符記交易為引回至發佈交易之交易鏈之一部分時。
單獨使用PUSHTX使得發佈者能夠將任何子代交易強制為某一格式,包括其子代、祖代等中之任一者。舉例而言,其可能需要將序號含於各未來交易中。然而,驗核者仍必須明確地驗核返回至發佈交易之每個交易。此舉增加了每次轉移的證明長度及驗核時間。
為了避免驗核返回起源之各交易的需要,受信任的符記處理器可見證各次轉移。此解決返回起源問題,但由於引入效能瓶頸及安全風險而降低了可用性。其亦引入通訊及基礎架構成本。另外,此違背了以挖掘者驗核符記為目標的目的。受信任的符記處理器亦可處理整個轉移,從而移除腳本複雜度及PUSHTX成本。
考慮含有一個輸入及一個輸出之交易的簡單鏈,如圖5中所展示。
吾人定義PROOFOFEXECUTION,給定簽章雜湊原像
Figure 02_image015
作為輸入,若
Figure 02_image027
Figure 02_image009
之所有(在此狀況下,一個)鎖定腳本相同,亦即,
Figure 02_image009
中之第一鎖定腳本與
Figure 02_image027
中之第一鎖定腳本相同,則PROOFOFEXECUTION評估為真。吾人將此執行證明標示為吾人想要腳本片段以確保作業碼中之相同函式在
Figure 02_image079
Figure 02_image081
中執行。若鎖定腳本含有諸如公開金鑰之變數,則不期望其保持相同且被忽略。作業碼PROOFOFEXECUTION包括以下各者: 1.     PUSHTX,其將
Figure 02_image015
作為輸入且若
Figure 02_image015
為交易
Figure 02_image011
之簽章雜湊原像,則輸出真。 2.     PUSHTXPARENT,其自
Figure 02_image015
Figure 02_image009
獲取輸出點
Figure 02_image017
,且若
Figure 02_image009
Figure 02_image017
之雜湊原像,則輸出真。 3.     PUSHTXGRANDPARENT,其自
Figure 02_image009
獲取
Figure 02_image027
Figure 02_image025
且若
Figure 02_image027
Figure 02_image025
之雜湊原像,則輸出真。 4.     作業碼,其比較來自
Figure 02_image027
Figure 02_image081
中的作業碼與來自
Figure 02_image009
Figure 02_image079
中的作業碼,且若
Figure 02_image027
Figure 02_image083
中之鎖定腳本含有相同作業碼,則輸出真。 5.       確保在親代及祖代交易中僅存在一個輸入及一個輸出的作業碼。
因此,含有PROOFOFEXECUTION之腳本由
Figure 02_image085
解除鎖定。吾人定義PROOFOFPROPAGATION,給定簽章雜湊原像
Figure 02_image015
作為輸入,若
Figure 02_image009
Figure 02_image011
之所有(在此狀況下,一個)鎖定腳本相同,亦即,
Figure 02_image009
中之第一鎖定腳本與
Figure 02_image011
中之第一鎖定腳本相同,則PROOFOFPROPAGATION評估為真,依此類推。吾人將此傳播證明標示為吾人想要腳本片段以確保作業碼中之相同函式在
Figure 02_image079
中執行且將在
Figure 02_image087
中執行。如同PROOFOFEXECUTION,若鎖定腳本含有諸如公開金鑰之變數,則其將被忽略。作業碼PROOFOFPROPAGATION包括以下各者: 1.     PUSHTX,其將
Figure 02_image015
作為輸入且若
Figure 02_image015
為交易
Figure 02_image011
之簽章雜湊原像,則輸出真。 2.     PUSHTXPARENT,其自
Figure 02_image015
Figure 02_image009
獲取輸出點
Figure 02_image017
,且若
Figure 02_image009
Figure 02_image017
之雜湊原像,則輸出真。 3.     作業碼,其比較來自
Figure 02_image009
Figure 02_image079
中的作業碼與來自
Figure 02_image015
Figure 02_image087
中的作業碼,且若第一鎖定腳本中之作業碼相同,則輸出真。 4.       確保在子代交易中僅存在一個輸入及一個輸出的作業碼。
因此,含有PROOFOFPROPAGATION之腳本由
Figure 02_image089
解除鎖定。
吾人將作業碼之集合
Figure 02_image091
定義為
PROOFOFPROPAGATION OP_IF PROOFOFEXECUTION OP_ENDIF
其中若
Figure 02_image093
,則執行PROOFOFEXECUTION。吾人準確地詳述稍後如何俘獲此狀況。
若對於所有
Figure 02_image093
Figure 02_image009
中之鎖定腳本
Figure 02_image079
Figure 02_image091
,則解除鎖定腳本為
Figure 02_image095
,其中:
Figure 02_image097
之簽章雜湊原像,
Figure 02_image099
串列化親代交易;且
Figure 02_image101
串列化祖代交易。
對於
Figure 02_image103
,鎖定腳本為
Figure 02_image105
。由於
Figure 02_image107
為發佈交易,因此
Figure 02_image109
中無相關鎖定腳本。
Figure 02_image107
為此鎖定腳本出現的第一交易。
應注意,
Figure 02_image079
中之作業碼
Figure 02_image091
的組合證明鎖定腳本
Figure 02_image079
中之作業碼
Figure 02_image091
亦含於
Figure 02_image081
Figure 02_image087
中。
PROOFOFEXECUTION及PROOFOFPROPAGATION二者均查找
Figure 02_image091
之存在,其亦含有自身。換言之,含有作業碼之二個此等集合的鎖定腳本為作業碼之二個集合的輸入之部分。
吾人藉由歸納證明,若
Figure 02_image011
含有以上作業碼,則其必須鏈接至發佈交易
Figure 02_image107
命題: 考慮自
Figure 02_image107
Figure 02_image009
之交易的集合,該等交易各自具有至少一個輸入及一個輸出。給定滿足以下條件之
Figure 02_image009
: ●
Figure 02_image009
之一個輸入支出來自
Figure 02_image027
之輸出,其含有如上文所定義之鎖定腳本
Figure 02_image079
中的
Figure 02_image091
,及 ●
Figure 02_image009
被挖掘者接受, 則
Figure 02_image009
鏈接至發佈交易
Figure 02_image107
證明: 吾人藉由歸納來證明主張。當
Figure 02_image103
時,顯然,若
Figure 02_image009
被挖掘者接受,則其藉由
Figure 02_image111
之輸出點鏈接至
Figure 02_image107
基本狀況
Figure 02_image113
Figure 02_image111
含有鎖定腳本
Figure 02_image115
,則解除鎖定腳本
Figure 02_image117
Figure 02_image119
中。若
Figure 02_image119
被挖掘者接受,則根據
Figure 02_image091
之支出條件,其必須為
Figure 02_image107
之孫代。因此,其鏈接至發佈交易。
Figure 02_image121
種狀況:假定第
Figure 02_image121
種狀況為真。
Figure 02_image123
種狀況:給定輸出含有鎖定腳本
Figure 02_image125
之交易
Figure 02_image009
,吾人證明若
Figure 02_image011
被挖掘者接受,則支出具有
Figure 02_image079
之輸出的交易
Figure 02_image011
經由交易鏈鏈接至發佈交易
Figure 02_image107
若吾人具有三個條件: ●
Figure 02_image125
, ●
Figure 02_image011
支出
Figure 02_image009
之輸出;且 ●
Figure 02_image011
被挖掘者接受, 則必須
Figure 02_image127
,以便解除鎖定輸出。由於
Figure 02_image125
,因此由於PROOFOFEXECUTION,必須
Figure 02_image129
,且由於PROOFOFPROPGATION,必須
Figure 02_image131
。因此,
Figure 02_image027
: ●  含有鎖定腳本
Figure 02_image129
●  由
Figure 02_image009
支出(
Figure 02_image133
需要此鏈接以支出
Figure 02_image135
);且 ●  彼
Figure 02_image009
被挖掘者接受(若
Figure 02_image011
為)。
因此,
Figure 02_image009
鏈接至
Figure 02_image107
。吾人亦得知
Figure 02_image011
Figure 02_image009
之子代且因此鏈接至
Figure 02_image009
。因此,
Figure 02_image011
鏈接至
Figure 02_image107
吾人證明鏈中之各交易含有所有先前交易,如圖6中所展示,從而產生交易膨脹問題。
命題: 考慮滿足以上主張之交易
Figure 02_image107
Figure 02_image009
的集合。第
Figure 02_image121
個交易
Figure 02_image009
含有返回至發佈交易
Figure 02_image107
的所有交易。
證明: 交易
Figure 02_image009
之解除鎖定腳本含有其親代及祖代交易,如
Figure 02_image027
之鎖定腳本中的作業碼
Figure 02_image091
所需的。對於所有
Figure 02_image093
,皆為如此。因此,對於給定
Figure 02_image009
,其親代及祖代亦含有其各別的親代及祖代。對於此等交易中之各者皆為如此,且因此
Figure 02_image009
含有返回至發佈交易的所有交易。 5.7 問題2:部分SHA256雜湊函數
在解決問題1時,吾人僅需要
Figure 02_image009
Figure 02_image079
Figure 02_image009
之輸出點的交易ID
Figure 02_image025
以及來自親代及祖代交易之
Figure 02_image133
的輸入中之
Figure 02_image027
Figure 02_image081
,以執行PROOFOFPROPAGATION及PROOFOFEXECUTION。不需要親代及祖代交易之解除鎖定腳本。吾人考慮如何編校交易之此等部分。
考慮具有二個輸入及二個輸出之交易的鏈,如圖7中所展示。額外輸入及輸出對應於P2PKH
Figure 02_image013
腳本。吾人引入第二輸入及輸出以使得能夠編校第一解除鎖定腳本,且使得PROOFOFEXECUTION仍能夠使用第二輸出點來利用祖代交易。在描述以下解決方案之後,吾人將明確地展示第
Figure 02_image121
個交易不再含有返回至發佈交易之所有交易的原因。在高層級處,此係因為未傳播解除鎖定腳本資料,其為交易之攜載關於先前交易之資訊的部分。吾人藉由在鏈外計算交易雜湊(與
Figure 02_image073
進行比較)來防止資料傳播。
吾人定義PUSHTXPARTIALPARENT,給定來自
Figure 02_image011
中之第二輸出點的
Figure 02_image017
以及
Figure 02_image137
Figure 02_image139
作為輸入,若
Figure 02_image141
,則PUSHTXPARTIALPARENT評估為真。
吾人定義PUSHTXPARTIALGRANDPARENT,給定來自
Figure 02_image009
中之第二輸出點的
Figure 02_image025
Figure 02_image143
Figure 02_image145
作為輸入,若
Figure 02_image147
,則PUSHTXPARTIALGRANDPARENT評估為真。
如上文所描述,部分SHA256計算使得能夠分別編校此等二個作業碼中之親代及祖代交易的第一輸入。輸入
Figure 02_image149
Figure 02_image151
因此不出現在
Figure 02_image077
中。
Figure 02_image137
接著含有第二解除鎖定腳本及親代交易之二個鎖定腳本。
Figure 02_image143
含有祖代交易之二個鎖定腳本。親代交易之第二解除鎖定腳本使得能夠提取祖代交易ID。將提取鎖定腳本作為PROOFOFPROPAGATION及PROOFOFEXECUTION之執行的輸入。
吾人重新定義PROOFOFPROPAGATION及PROOFOFEXECUTION以分別含有PUSHTXPARTIALPARENT及PUSHTXPARTIALGRANDPARENT,而非PUSHTXPARENT及PUSHTXGRANDPARENT。重新定義意謂腳本現自
Figure 02_image137
Figure 02_image143
而非如前所述自
Figure 02_image009
Figure 02_image027
提取所需鎖定腳本中之作業碼。因此,含有PROOFOFEXECUTION之腳本現由
Figure 02_image153
解除鎖定,且含有PROOFOFPROPAGATION之腳本由
Figure 02_image155
解除鎖定。
另外,重新定義PROOFOFPROPAGATION及PROOFOFEXECUTION以含有作業碼,該等作業碼比較鎖定腳本之多個集合而非鎖定腳本之僅一個集合中的作業碼。如前所述,其分別比較
Figure 02_image009
中之第一鎖定腳本中的作業碼與
Figure 02_image011
Figure 02_image027
之第一鎖定腳本中的作業碼。其現亦比較此等交易中之第二鎖定腳本之集合。若第一集合鎖定腳本含有相同作業碼且鎖定腳本之第二集合含有相同作業碼,則此等作業碼傳回真。此亦暗示,替代檢查各交易中之一個輸入及輸出,其現確保各交易中僅存在二個輸入及輸出。此等作業碼之任何進一步參考皆指此等新定義。
用重新定義的作業碼將作業碼之集合定義為
Figure 02_image157
PROOFOFEXECUTION + OP_IF     PROOFOFPROPAGATION OP_ENDIF
吾人定義對於所有
Figure 02_image121
,鎖定腳本
Figure 02_image159
係使用
Figure 02_image161
來解除鎖定,其中
Figure 02_image163
之簽章雜湊原像,
Figure 02_image165
Figure 02_image167
Figure 02_image169
Figure 02_image171
各解除鎖定腳本僅包含此等五個分量,其將證明為具有固定長度。將導致膨脹之解除鎖定腳本
Figure 02_image173
已藉由部分
Figure 02_image175
計算來編校。
命題: 令
Figure 02_image009
為來自上文所定義之交易鏈的具有二個輸入及二個輸出之交易,則對於所有
Figure 02_image121
Figure 02_image009
之大小小於一個常數,亦即,
Figure 02_image177
證明: 吾人簡單地展示
Figure 02_image179
不取決於
Figure 02_image121
。在串列化交易及簽章雜湊原像中,大多數欄位之大小具有明確界定之界限。
簽章雜湊原像: 排除鎖定及解除鎖定腳本,吾人具有上界
Figure 02_image181
個位元組。
應注意,因為吾人在解決方案中需要檢測鎖定腳本,所以最後的32個位元組(其為雜湊函數之輸出)將需要替換為其原像。此意謂排除鎖定腳本,上界為
Figure 02_image183
個位元組。 其中
Figure 02_image185
在吾人狀況下具有值2。
Figure 02_image187
為VarInt且因此可為
Figure 02_image189
Figure 02_image187
個位元組之任何位元組。吾人已排除正在支出的鎖定腳本(親代鎖定腳本
Figure 02_image081
)及當前交易中之鎖定腳本
Figure 02_image191
明確地,解除鎖定及鎖定腳本具有在下表中給出的大小。
腳本區段 子腳本區段 子腳本區段之大小 ( 位元組 ) 總腳本大小 ( 上界 )
Figure 02_image193
Figure 02_image195
Figure 02_image197
Figure 02_image199
Figure 02_image201
Figure 02_image203
Figure 02_image205
Figure 02_image207
Figure 02_image209
Figure 02_image211
Figure 02_image213
Figure 02_image215
Figure 02_image217
Figure 02_image219
Figure 02_image221
 or
Figure 02_image223
Figure 02_image225
Figure 02_image227
Figure 02_image229
 or
Figure 02_image231
Figure 02_image233
 
Figure 02_image235
Figure 02_image235
Figure 02_image237
 
Figure 02_image239
Figure 02_image239
排除鎖定及解除鎖定腳本,在串列化交易中,吾人具有上界
Figure 02_image241
個位元組 其中
Figure 02_image243
Figure 02_image185
分別為輸入及輸出之數目,其各自具有值2。應注意,9個位元組中之各者表示VarInt欄位。此等可為1個與9個位元組之間的任何位元組,且可針對各輸入或輸出而不同。
包括鎖定及解除鎖定腳本,使用上表,吾人得知串列化交易具有大小
Figure 02_image245
個位元組。
交易
Figure 02_image009
中之所有欄位取決於腳本
Figure 02_image157
之長度以及親代及祖代交易之中間狀態的長度,其二者之長度為恆定的。因此,交易之大小具有獨立於
Figure 02_image121
之上界。
備註:解除鎖定腳本中存在一些複製,其中
Figure 02_image157
出現四次。此可藉由一次將其作為輸入及複製資料來減少。此將導致大小為
Figure 02_image247
個位元組的串列化交易。
藉由自當前交易編校親代及祖代交易的第一解除鎖定腳本,第
Figure 02_image121
個交易
Figure 02_image009
不再含有返回至發佈交易
Figure 02_image107
的所有交易。第一輸入僅含有第二解除鎖定腳本及二個先前交易之二個輸出,其中不含有關於先前交易之任何資訊,如圖8中所展示。
吾人注意到,對應於
Figure 02_image149
Figure 02_image249
的輸出點不可交換,此係因為此交換將會重新引入交易膨脹問題。含有先前交易的解除鎖定腳本
Figure 02_image149
必須首先出現,以便在
Figure 02_image077
中編校。
雖然吾人已解決膨脹問題,但吾人已引入以下自參考問題。各輪壓縮函數處理64個位元組且必須寫入作業碼中。基於現有作業碼,函數
Figure 02_image251
需要多於64個位元組。
鎖定腳本
Figure 02_image253
包含多輪壓縮函數,其定義為將
Figure 02_image139
Figure 02_image137
作為輸入的
Figure 02_image255
。此意謂作業碼中的
Figure 02_image255
必須處理
Figure 02_image137
,其含有自身(在作業碼中)。考慮其可用65個位元組實施以說明自參考問題的最佳狀況情境。假定
Figure 02_image137
最初僅含有一輪
Figure 02_image257
,使得其具有65個位元組的長度。
為了處理65個位元組之
Figure 02_image137
Figure 02_image137
中之作業碼中必須存在二輪
Figure 02_image257
。因此,
Figure 02_image137
之長度增加至130個位元組。作業碼中現必須存在3輪
Figure 02_image257
以處理
Figure 02_image137
,意謂
Figure 02_image137
實際上為195個位元組。吾人很快發現存在自參考問題。
PUSHTXPARENT不存在此問題,此係因為其長度並不會取決於原像長度而改變。作業碼OP_HASH256可處理任何長度原像,且仍使用單個作業碼來計算。 5.8 解決方案:輔助交易
吾人引入支出
Figure 02_image027
之第一輸出且接著由
Figure 02_image009
之第一輸入參考的輔助交易,如圖4中所展示。替代
Figure 02_image009
,輔助交易中之鎖定腳本含有作業碼中之部分SHA256雜湊函數。包括此交易之結果為部分SHA256雜湊函數永遠不會用作自身的輸入。
給定
Figure 02_image015
Figure 02_image259
作為輸入,若
Figure 02_image261
,則作業碼PUSHTXAUXILIARY之集合評估為真,其中自
Figure 02_image015
之第一輸出點提取
Figure 02_image019
作業碼PUSHTXAUXILIARY包括以下各者: 1.     PUSHTX,其將
Figure 02_image015
作為輸入且若
Figure 02_image015
為交易
Figure 02_image011
之簽章雜湊原像,則輸出真 2.     PUSHTXPARENT,其自
Figure 02_image015
獲取
Figure 02_image259
Figure 02_image019
,且若
Figure 02_image259
Figure 02_image019
之雜湊原像,則輸出真
因此,含有PUSHTXAUXILIARY之腳本由
Figure 02_image263
解除鎖定。
將腳本
Figure 02_image265
定義為
PUSHTXAUXILIARY + PROOFOFPROPAGATION OP_IF PROOFOFEXECUTION OP_ENDIF
如圖1中所展示,鎖定腳本
Figure 02_image267
Figure 02_image269
解除鎖定,其中
Figure 02_image163
之簽章雜湊原像,
Figure 02_image271
串列化輔助交易
Figure 02_image273
Figure 02_image275
Figure 02_image277
;且
Figure 02_image171
吾人亦定義作業碼HASHPUZZLE之集合,給定
Figure 02_image279
作為輸入,若
Figure 02_image281
,則該等作業碼評估為真,其中
Figure 02_image283
為HASHPUZZLE中的固定常數。
將腳本
Figure 02_image285
定義為:
Figure 02_image287
PUSHTX + HASHPUZZLE
對於所有
Figure 02_image121
,將鎖定腳本
Figure 02_image253
重新定義為
Figure 02_image285
,則解除鎖定腳本為
Figure 02_image289
,其中
Figure 02_image291
Figure 02_image259
之簽章雜湊原像。
此鎖定腳本強制
Figure 02_image293
含有如上文所定義的作業碼。藉由強制
Figure 02_image265
解除鎖定
Figure 02_image253
中之雜湊難題,PROOFOFEXECUTION及PROOFOFPROPAGATION之定義無需改變,且輔助交易在各次轉移中皆具有正確格式,而無需明確檢查。自動地強制實行所有輔助交易。
最終,鎖定腳本
Figure 02_image295
為P2PKH
Figure 02_image297
,如前所述。
部分SHA256雜湊函數永遠不會在部分原像
Figure 02_image069
中。其含於作為OP_HASH256之輸入的
Figure 02_image279
中。吾人已解決自參考問題,無新問題出現。 5.9 起始協定
發佈交易不具有祖代交易。此引入需要修改
Figure 02_image265
之特殊狀況。可用至少二種方式識別發佈交易: 1.       根據發佈者擁有之公開金鑰驗核交易上的簽章。 2.    向各符記給定唯一符記ID (
Figure 02_image299
)。
為了避免引入特定問題,吾人選擇第二種方法,其中將
Figure 02_image299
定義為發佈交易之
Figure 02_image073
Figure 02_image301
。定義作業碼UTIDPRESENT,給定
Figure 02_image015
作為輸入,當
Figure 02_image011
中之
Figure 02_image299
存在於
Figure 02_image009
中時,該等作業碼評估為真。亦定義作業碼DEFINEUTID,給定
Figure 02_image015
作為輸入,當
Figure 02_image009
中之
Figure 02_image299
及來自第二輸出點之
Figure 02_image025
Figure 02_image017
相等時,該等作業碼評估為真。應注意,僅當
Figure 02_image103
時為如此狀況,此係因為
Figure 02_image303
。此意謂
Figure 02_image299
不存在於
Figure 02_image107
中。實情為,對於所有
Figure 02_image305
,強制其存在於
Figure 02_image009
之鎖定腳本中。
亦定義SAMEOUTPOINT,給定
Figure 02_image307
之輸出點及
Figure 02_image309
之輸出點,若其含有相同
Figure 02_image073
,則SAMEOUTPOINT評估為真。
將腳本
Figure 02_image311
定義為
PUSHTXAUXILIARY + PROOFOFPROPAGATION + SAMEOUTPOINT + UTIDPRESENT OP_IF   PROOFOFEXECUTION OP_ELSE   DEFINEUTID OP_ENDIF
若執行UTIDPRESENT且輸出1 (亦即,當
Figure 02_image313
時),則執行含有PROOFOFPROPAGATION的「if」語句。若執行UTIDPRESENT且輸出0 (亦即,當
Figure 02_image103
時),則執行含有DEFINEUTID的「else」語句。 重新定義鎖定腳本
Figure 02_image315
,如圖1中所展示,其由解除鎖定腳本
Figure 02_image077
= (
Figure 02_image317
來解鎖鎖定。此連同其他解除鎖定腳本與先前解除鎖定腳本保持不變。鎖定腳本的僅有改變為: ●
Figure 02_image253
現含有
Figure 02_image319
而非
Figure 02_image321
作為雜湊難題中之固定資料;且 ●
Figure 02_image295
另外在結尾含有OP_RETURN <
Figure 02_image299
>。
吾人注意到,與含於作業碼之各集合中的作業碼存在一些重疊,諸如PUSHTX及PUSHTXPARTIALPARENT在PROOFOFPROPAGATION及PROOFOFEXECUTION二者中。此等可利用相同函式且複製任何所需資訊以改良效率。
吾人強制親代交易之二個輸出
Figure 02_image323
Figure 02_image325
分別在輔助交易及當前交易中支出。若不強制以此方式支出輸出,則將有可能使交易鏈分叉且仍看起來如同正確地遵循了協定。此可引入攻擊向量,其中攻擊者可易於支出第一輸出而不支出第二輸出。
就目前而言,有可能藉由支出第二輸出而不支出第一輸出來銷毀符記,此係因為此將鎖定
Figure 02_image259
之輸出,該輸出必須與
Figure 02_image009
之第二輸出一起支出。此無法在不重新引入自參考問題之情況下在腳本中防止,此係因為輔助交易(其含有作業碼中之部分SHA256雜湊函數)將為第二解除鎖定腳本之部分。因此,部分SHA256雜湊函數將必須在作業碼中處理自身,其為自參考問題。由於需要簽章來支出
Figure 02_image009
之第二輸出,因此若符記係以此方式銷毀,則簽章將認證彼情況。
亦將有可能藉由在第二輸出中支出輔助交易來銷毀符記,此係因為其重新引入交易大小放大及部分SHA256之自參考問題。然而,吾人的解決方案藉由要求PROOFOFEXECUTION僅自
Figure 02_image015
中之第二輸出點提取輸出點來防止此情況,使得交易僅在第二輸出點並非輔助交易之情況下有效。
如先前所提及,藉由要求PROOFOFEXECUTION自
Figure 02_image015
中之第二輸出點提取輸出點,其強制
Figure 02_image259
之輸出點必須與
Figure 02_image009
之第二輸出點一起支出。此係因為
Figure 02_image259
之鎖定腳本中的作業碼僅在
Figure 02_image009
Figure 02_image027
中之鎖定腳本含有作業碼之相同集合及已定義為發佈交易之
Figure 02_image073
的相同
Figure 02_image299
之情況下傳回真。僅在第二輸出點為
Figure 02_image009
之第二輸出時將為如此狀況,任何其他輸出點將不含有相同的作業碼及
Figure 02_image299
。因此,
Figure 02_image259
之輸出必須與
Figure 02_image009
之第二輸出一起支出,否則其將無效。
腳本
Figure 02_image311
為上文所描述之輔助鎖定腳本之實例。腳本
Figure 02_image285
為上文所描述之主要鎖定腳本之實例。下標A表示對輔助交易強制實行條件之主要鎖定腳本。 5.10   符記轉移協定
考慮發佈者
Figure 02_image327
向愛麗絲103a發佈符記,且接著二次轉移符記,首先轉移至鮑勃103b,其轉移至查理103c。
1. 發佈者產生
Figure 02_image107
,其中
Figure 02_image329
Figure 02_image331
定義於章節3.3中,將符記支付給愛麗絲之公開金鑰。 2.   愛麗絲產生如定義於章節3.4中之輔助交易
Figure 02_image333
及如定義於章節3.3中之
Figure 02_image111
,且將此等交易發送至鮑勃。 3.   鮑勃使用以下步驟驗核交易。 4.   鮑勃產生
Figure 02_image335
Figure 02_image119
且發送至查理。 5.   查理使用以下步驟驗核交易。
將以與轉移至查理相同的方式執行其他轉移。 5.11   用於第
Figure 02_image121
次轉移的驗核者步驟
1. 接收交易
Figure 02_image009
以及
Figure 02_image027
之默克爾證明。使用
Figure 02_image009
中之資料計算
Figure 02_image337
,且確認默克爾證明有效。 2.   自
Figure 02_image027
中之雜湊難題提取輔助鎖定腳本之雜湊且驗證其對應於此鎖定腳本之熟知雜湊。 3.   提取
Figure 02_image299
且確認其已使用來自發佈者之有效
Figure 02_image299
之清單或使用發佈交易上之簽章進行簽章。
應注意,雖然驗核者執行一些步驟,但此類似於底層的任何現金交換,諸如僅在其具有正確標記之情況下接受票據或僅在其含有正確公開金鑰之P2PKH的情況下接受區塊鏈交易。此為挖掘者驗核符記,此係因為給定正確發佈之交易,任何轉移皆必須始終產生另一有效符記,而無需驗核者之努力。 5.12   詳細實例協定
考慮發佈者
Figure 02_image327
向愛麗絲103a發佈符記,且接著二次轉移符記,首先轉移至鮑勃103b,其轉移至查理103c。將以與轉移至查理103c相同的方式執行其他轉移。 發佈
1. 發佈者產生交易,該交易支出需要其簽章之任意輸出,該簽章表示如圖9中之符記且將此符記發送至愛麗絲。此符記之
Figure 02_image299
Figure 02_image301
。此交易含有P2PKH輸出,其需要愛麗絲103a解除鎖定該輸出。另一輸出強制輔助交易在輸出中含有正確函式。 符記轉移
2 .愛麗絲103a產生支出
Figure 02_image107
之第一輸出的輔助交易,如圖10中所展示。此交易將強制在下一交易中支出
Figure 02_image285
Figure 02_image299
,且其僅與來自
Figure 02_image339
之P2PKH輸出在相同交易中支出。 3.   為了將此符記轉移至鮑勃103b,愛麗絲103a產生及發送在圖11中給出的交易。若其通過驗證(在上文詳述),則鮑勃103b接受此交易。 4.   鮑勃產生支出
Figure 02_image111
之第二輸出的輔助交易,如圖12中所給出。 5.   為了將此符記轉移至查理103c,鮑勃103b產生及將在圖13中給出之交易發送至查理103c。若其通過驗證(上文所詳述),則查理103c接受此交易。
用與圖12及圖13中之交易相同的格式以相同方式執行其他轉移。
Figure 02_image121
次符記轉移之一般格式在圖14中給出。輔助交易
Figure 02_image341
在圖15中給出。 6.   其他備註
一旦給定本文中之揭露內容,所揭露技術之其他變體或使用狀況對於熟習此項技術者可變得顯而易見。本揭露內容之範圍不受所描述實施例限制而僅受隨附申請專利範圍限制。
舉例而言,上文的一些實施例已關於比特幣網路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。    一種強制在一整個區塊鏈交易鏈中傳播一鎖定腳本之電腦實施方法,其中該方法由一第一方執行且包含: 產生包含一第一輸出之一第一主要交易,其中該第一輸出包含一主要鎖定腳本,其中該主要鎖定腳本經組配以在由一第一輔助交易之一第一解除鎖定腳本執行時進行以下操作:i)驗證該第一解除鎖定腳本包含基於該第一輔助交易產生之一第一訊息;以及ii)基於該第一訊息而驗證該第一輔助交易之一第一輸出包含一輔助鎖定腳本,其中該輔助鎖定腳本經組配以在由一第二主要交易之一第一解除鎖定腳本執行時進行以下操作:i)驗證該第二主要交易之該第一解除鎖定腳本包含基於該第二主要交易產生之一第二訊息;ii)驗證該第二主要交易之該第一解除鎖定腳本包含一第一資料項目,該第一資料項目包含該第一主要交易之一或多個鎖定腳本;以及iii)基於該第二訊息及該第一資料項目而驗證該第二主要交易之一第一輸出包含該主要鎖定腳本。
陳述項2。    如陳述項1之方法,其包含: 產生該第一輔助交易,其中該第一輔助交易包含參考該第一主要交易之該第一輸出的一第一輸入,且包含該第一訊息及包含該輔助鎖定腳本之一第一輸出。
陳述項3。    如陳述項1或陳述項2之方法,其中該主要鎖定腳本包含該輔助鎖定腳本之一雜湊,其中該第一訊息包含一候選輔助鎖定腳本,且其中該驗證該第一輔助交易之該第一輸出包含該輔助鎖定腳本包含該主要鎖定腳本對該候選輔助鎖定腳本進行雜湊且驗證該候選輔助鎖定腳本之一雜湊匹配該輔助鎖定腳本之該雜湊。
陳述項4。    如前述陳述項中任一項之方法,其中該第一主要交易包含一第二輸出,且其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:iii)驗證該第一主要交易之該第二輸出由該第二主要交易之一第二輸入解除鎖定。
陳述項5。    如陳述項4之方法,其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:iv)驗證該第二主要交易之該第一解除鎖定腳本包含一第二資料項目,該第二資料項目包含該第一輔助交易,且其中該驗證該第二輸出由該第二主要交易之該第二輸入解除鎖定包含a)自該第二訊息提取由該第二主要交易之該第二輸入解除鎖定的該第二輸出之一各別交易識別符;b)自該第二資料項目提取由該第一輔助交易之該第一輸入解除鎖定的該第一輸出之一各別交易識別符;以及c)驗證在步驟a)期間提取之該各別交易識別符匹配在步驟b)期間提取之該各別交易識別符。
陳述項6。    如前述陳述項中任一項之方法,其中該第一主要交易具有藉由將一雜湊函數應用於該第一主要交易而產生的一各別交易識別符,其中該第二主要交易之該第一解除鎖定腳本包含一第三資料項目,其中該第三資料項目包含應用於該第一主要交易之該雜湊函數的一中間狀態,且其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:iv)基於該第一資料項目及該第三資料項目而產生一候選交易識別符且驗證該候選交易識別符匹配該第一主要交易識別符之該各別交易識別符。
陳述項7。    如前述陳述項中任一項之方法,其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:v)驗證該第二主要交易包含一特定交易識別符。
陳述項8。    如前述陳述項中任一項之方法,其包含: 產生該第二主要交易,其中該第二主要交易包含參考該第一輔助交易之該第一輸出的一第一輸入且包含該第二訊息及該第一資料項目,且其中該第二主要交易包含一第一輸出,該第一輸出包含該主要鎖定腳本。
陳述項9。    如前述陳述項中任一項之方法,其包含將該第一輔助交易及該第二主要第二發送至一第二方。
陳述項10。  如陳述項9之方法,其包含將用於證明該第一主要交易已記錄於區塊鏈之一區塊中的一默克爾證明發送至該第二方。
陳述項11。  如前述陳述項中任一項之方法,其中該主要鎖定腳本及/或該輔助鎖定腳本包含與一符記之所有權相關的資料。
陳述項12。  如前述陳述項中任一項之方法,其中該第一主要交易為該區塊鏈交易鏈中之一初始主要交易。
陳述項13。  如陳述項11及陳述項12之方法,其中該第一方為該符記之一發佈者。
陳述項14。  如陳述項12或陳述項13之方法,當附屬於陳述項7時,其中該特定交易識別符為該第一主要交易之該各別交易識別符。
陳述項15。  如前述陳述項中任一項之方法,其中該第一主要交易包含一第一計數器值,且其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時驗證該第二主要交易包含一第二計數器值,其中該第二計數器值為該計數器值之迭代。
陳述項16。  如陳述項1至11中任一項之方法,其中該第一主要交易並非該區塊鏈交易鏈中之初始交易,且其中該第一主要交易包含一第一輸入,該第一輸入參考包含該輔助鎖定腳本之一先前輔助交易的一第一輸出,其中該先前輔助交易包含一第一輸入,該第一輸入參考包含該主要鎖定腳本之一先前主要交易的一第一輸出,且其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:vi)驗證該第二主要之該第一解除鎖定腳本包含一第四資料項目,該第四資料項目包含該先前主要交易之一或多個鎖定腳本;以及vii)基於該第二訊息及該第四資料項目而驗證該第二主要交易之該第一輸出包含該主要鎖定腳本。
陳述項17。  如陳述項16之方法,其中該先前主要交易具有藉由將一雜湊函數應用於該先前主要交易而產生的一各別交易識別符,其中該第二主要交易之該第一解除鎖定腳本包含一第五資料項目,其中該第五資料項目包含應用於該先前主要交易之該雜湊函數的一中間狀態,且其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:viii)基於該第四資料項目及該第五資料項目而產生一候選交易識別符且驗證該候選交易識別符匹配該先前主要交易識別符之該各別交易識別符。
陳述項18。  如陳述項16或陳述項17之方法,其中該先前主要交易為該區塊鏈交易鏈中之一初始主要交易,且其中該方法包含驗證該初始主要交易已用對應於一預定公開金鑰之一簽章進行簽章。
陳述項19。  如前述陳述項中任一項之方法,其包含將該第一主要交易提交至區塊鏈網路。
陳述項20。  如前述陳述項中任一項之方法,其包含將該第一輔助交易及/或該第二主要交易提交至該區塊鏈網路。
陳述項21。  一種驗證已在一整個區塊鏈交易鏈中強制實行一鎖定腳本之電腦實施方法,其中該方法由一第二方執行且包含: 獲得一第二主要交易,其中該第二主要交易包含一第一輸入及一第一輸出,其中該第一輸入包含基於該第二主要交易產生之一第二訊息、包含解除鎖定一第一主要交易之一第一輸出之一第一輸入的一第一輔助交易以及包含該第一主要交易之一或多個鎖定腳本的一第一資料項目,其中該第一主要交易之該第一輸出包含一主要鎖定腳本且該第一輔助交易之一第一輸出包含一輔助鎖定腳本,且其中該第二主要交易之該第一輸出包含該主要鎖定腳本; 驗證一第一主要交易已記錄於區塊鏈上;以及 驗證該第一主要交易之該主要鎖定腳本經組配以在由該第一輔助交易之一第一解除鎖定腳本執行時進行以下操作:i)驗證該第一解除鎖定腳本包含基於該第一輔助交易產生之一第一訊息;以及ii)基於該第一訊息而驗證該第一輔助交易之一第一輸出包含一輔助鎖定腳本,其中該輔助鎖定腳本經組配以在由該第二主要交易之一第一解除鎖定腳本執行時進行以下操作:i)驗證該第一解除鎖定腳本包含該第二訊息;ii)驗證該第一解除鎖定腳本包含該第一資料項目;以及iii)基於該第二訊息及該第一資料項目而驗證該第二主要交易之該第一輸出包含該主要鎖定腳本,藉此驗證該主要鎖定腳本已在該第一主要交易及該第二主要交易中強制實行。
陳述項22。  如陳述項21之方法,其中該主要鎖定腳本包含該輔助鎖定腳本之一雜湊,其中該第一訊息包含一候選輔助鎖定腳本,且其中該主要鎖定腳本經組配以在由該第一輔助交易之該第一解除鎖定腳本執行時進行以下操作:藉由對該候選輔助鎖定腳本進行雜湊來驗證該第一輔助交易之該第一輸出包含該輔助鎖定腳本;以及驗證該候選輔助鎖定腳本之一雜湊匹配該輔助鎖定腳本之該雜湊,且其中該驗證該主要鎖定腳本經組配以執行步驟i)及ii)包含驗證該主要鎖定腳本包含該輔助鎖定腳本之該雜湊作為一雜湊難題之部分。
陳述項23。  如陳述項21或陳述項22之方法,該驗證該第一主要交易已記錄於該區塊鏈上包含獲得用於證明該第一主要交易已記錄於該區塊鏈之一區塊中的一默克爾證明。
陳述項24。  如陳述項23之方法,其中該第一主要交易具有藉由將一雜湊函數應用於該第一主要交易而產生的一各別交易識別符,其中該第二主要交易之該第一輸入包含一第三資料項目,其中該第三資料項目包含應用於該第一主要交易之該雜湊函數的一中間狀態,且其中該驗證該第一主要交易已記錄於該區塊鏈上包含基於該第一資料項目及該第三資料項目而產生一候選交易識別符以及驗證該默克爾證明對該候選交易識別符有效。
陳述項25。  如陳述項23或陳述項24之方法,其包含獲得該第一主要交易,且其中該驗證該第一主要交易已記錄於該區塊鏈上係基於所獲得之默克爾證明及所獲得之第一主要交易。
陳述項26。  如陳述項19或附屬於其的任何陳述項之方法,其包含驗證該第二主要交易包含一初始主要交易之該各別交易識別符。
陳述項27。  如陳述項19或附屬於其的任何陳述項之方法,其包含: 產生一第二輔助交易,其中該第二輔助交易包含參考該第二主要交易之該第一輸出的一第一輸入且包含基於該第二輔助交易產生之一第三訊息及包含該輔助鎖定腳本之一第一輸出; 產生一第三主要交易,其中該第三主要交易包含參考該第二輔助交易之該第一輸出的一第一輸入且包含基於該第三主要交易產生之一第四訊息、該第一資料項目、該第二輔助交易,且一第六資料項目包含該第二主要交易之一或多個鎖定腳本,且其中該第三主要交易包含一第一輸出,該第一輸出包含該主要鎖定腳本。
陳述項28。  如陳述項27之方法,其中該輔助鎖定腳本經組配以在由該第三主要交易之一第一解除鎖定腳本執行時進行以下操作:vi)驗證該第二主要之該第一解除鎖定腳本包含該第三資料項目;以及vii)基於該第三訊息及該第六資料項目而驗證該第三主要交易之該第一輸出包含該主要鎖定腳本。
陳述項29。  如陳述項27或陳述項28之方法,其包含將該第二輔助交易及該第三主要第二發送至一第三方。
陳述項30。  如陳述項29之方法,其包含將用於證明該第二主要交易已記錄於該區塊鏈之一區塊中的一默克爾證明發送至該第三方。
陳述項31。  如陳述項21或附屬於其的任何陳述項之方法,其中該主要鎖定腳本及/或該輔助鎖定腳本包含與一符記之所有權相關的資料,且其中該第一主要交易及/或該第一輔助鎖定腳本已由一符記發佈者產生。
陳述項32。  如陳述項27或附屬於其的任何陳述項之方法,其包含將該第二輔助交易及該第三主要交易提交至該區塊鏈。
陳述項33。  一種電腦裝備,其包含: 記憶體,其包含一或多個記憶體單元;以及 處理設備,其包含一或多個處理單元,其中該記憶體儲存經配置以在該處理設備上運行之程式碼,該程式碼經組配以便在處於該處理設備上時執行如陳述項1至29中任一項之方法。
陳述項34。  一種電腦程式,其體現於電腦可讀儲存器上且經組配以便在運行於一或多個處理器上時執行如陳述項1至32中任一項之方法。
根據本文中所揭露之另一態樣,可提供一種包含第一方及第二方之動作的方法。根據本文中所揭露之另一態樣,可提供一種包含區塊鏈節點之動作的方法,該區塊鏈節點經組配以至少處理第一主要交易及第一輔助交易。
根據本文中所揭露之另一態樣,可提供一種包含第一方及第二方之電腦裝備的系統。根據本文中所揭露之另一態樣,可提供一種經組配以至少處理第一主要交易及第一輔助交易之區塊鏈節點。
100:系統 101:封包交換網路 102a:電腦裝備/裝置 102b:電腦裝備/裝置 103:使用者/給定方/代理 103a:使用者/實體/愛麗絲/第一方 103b:新使用者/實體/鮑勃/第二方 103c:查理 104:第一區塊鏈節點/比特幣節點 105:用戶端應用程式/軟體/用戶端 106:(分散式或)區塊鏈網路/同級間(P2P)網路/比特幣網路 107:旁側通道 150:比特幣區塊鏈 151:資料區塊 151n-1:先前創建區塊 151n:新區塊 152:先前交易/原始交易 152i:先前交易 152j:目前交易/新接收交易/後繼交易 153:起源區塊(Gb) 154:有序集合/有序池 155:區塊指標 201:標頭 202:輸入/輸入欄位 203:輸出欄位/未支出交易輸出 300:系統
為了輔助理解本揭露內容之實施例且展示此等實施例可如何付諸實施,僅作為實例參看附圖,在附圖中: 圖1為用於實施區塊鏈之系統的示意性方塊圖, 圖2示意性地示出可記錄於區塊鏈中之交易的一些實例, 圖3示意性地示出用於傳播鎖定腳本之實例系統, 圖4為實例符記協定之交易結構的示意性表示, 圖5為具有一個輸入及一個輸出之交易之鏈的示意性表示, 圖6示意性地示出交易膨脹問題, 圖7為具有二個輸入及二個輸出之交易之鏈的示意性表示, 圖8為展示如何藉由實例符記協定防止交易膨脹之示意性表示, 圖9示意性地示出實例發佈交易, 圖10示意性地示出實例輔助交易, 圖11示意性地示出將符記自愛麗絲轉移至鮑勃之實例主要交易, 圖12示意性地示出另一輔助交易之實例, 圖13示意性地示出將符記自鮑勃轉移至查理(Charlie)之主要交易的實例, 圖14示意性地示出第n個主要交易之實例格式,及 圖15示意性地示出第n個輔助交易之實例格式。
103a:使用者/實體/愛麗絲/第一方
103b:新使用者/實體/鮑勃/第二方
103c:查理
106:(分散式或)區塊鏈網路/同級間(P2P)網路/比特幣網路
300:系統

Claims (34)

  1. 一種強制在一整個區塊鏈交易鏈中傳播一鎖定腳本之電腦實施方法,其中該方法由一第一方執行且包含: 產生包含一第一輸出之一第一主要交易,其中該第一輸出包含一主要鎖定腳本,其中該主要鎖定腳本經組配以在由一第一輔助交易之一第一解除鎖定腳本執行時進行以下操作:i)驗證該第一解除鎖定腳本包含基於該第一輔助交易產生之一第一訊息;以及ii)基於該第一訊息而驗證該第一輔助交易之一第一輸出包含一輔助鎖定腳本,其中該輔助鎖定腳本經組配以在由一第二主要交易之一第一解除鎖定腳本執行時進行以下操作:i)驗證該第二主要交易之該第一解除鎖定腳本包含基於該第二主要交易產生之一第二訊息;ii)驗證該第二主要交易之該第一解除鎖定腳本包含一第一資料項目,該第一資料項目包含該第一主要交易之一或多個鎖定腳本;以及iii)基於該第二訊息及該第一資料項目而驗證該第二主要交易之一第一輸出包含該主要鎖定腳本。
  2. 如請求項1之方法,其包含: 產生該第一輔助交易,其中該第一輔助交易包含參考該第一主要交易之該第一輸出的一第一輸入,且包含該第一訊息及包含該輔助鎖定腳本之一第一輸出。
  3. 如請求項1或請求項2之方法,其中該主要鎖定腳本包含該輔助鎖定腳本之一雜湊,其中該第一訊息包含一候選輔助鎖定腳本,且其中該驗證該第一輔助交易之該第一輸出包含該輔助鎖定腳本包含:該主要鎖定腳本對該候選輔助鎖定腳本進行雜湊且驗證該候選輔助鎖定腳本之一雜湊匹配該輔助鎖定腳本之該雜湊。
  4. 如前述請求項中任一項之方法,其中該第一主要交易包含一第二輸出,且其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:iii)驗證該第一主要交易之該第二輸出由該第二主要交易之一第二輸入解除鎖定。
  5. 如請求項4之方法,其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:iv)驗證該第二主要交易之該第一解除鎖定腳本包含一第二資料項目,該第二資料項目包含該第一輔助交易,且其中該驗證該第二輸出由該第二主要交易之該第二輸入解除鎖定包含:a)自該第二訊息提取由該第二主要交易之該第二輸入解除鎖定的該第二輸出之一各別交易識別符;b)自該第二資料項目提取由該第一輔助交易之該第一輸入解除鎖定的該第一輸出之一各別交易識別符;以及c)驗證在步驟a)期間提取之該各別交易識別符匹配在步驟b)期間提取之該各別交易識別符。
  6. 如前述請求項中任一項之方法,其中該第一主要交易具有藉由將一雜湊函數應用於該第一主要交易而產生的一各別交易識別符,其中該第二主要交易之該第一解除鎖定腳本包含一第三資料項目,其中該第三資料項目包含應用於該第一主要交易之該雜湊函數的一中間狀態,且其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:iv)基於該第一資料項目及該第三資料項目而產生一候選交易識別符且驗證該候選交易識別符匹配該第一主要交易識別符之該各別交易識別符。
  7. 如前述請求項中任一項之方法,其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:v)驗證該第二主要交易包含一特定交易識別符。
  8. 如前述請求項中任一項之方法,其包含: 產生該第二主要交易,其中該第二主要交易包含參考該第一輔助交易之該第一輸出的一第一輸入且包含該第二訊息及該第一資料項目,且其中該第二主要交易包含一第一輸出,該第一輸出包含該主要鎖定腳本。
  9. 如前述請求項中任一項之方法,其包含將該第一輔助交易及該第二主要第二發送至一第二方。
  10. 如請求項9之方法,其包含將用於證明該第一主要交易已記錄於區塊鏈之一區塊中的一默克爾(Merkle)證明發送至該第二方。
  11. 如前述請求項中任一項之方法,其中該主要鎖定腳本及/或該輔助鎖定腳本包含與一符記之所有權相關的資料。
  12. 如前述請求項中任一項之方法,其中該第一主要交易為該區塊鏈交易鏈中之一初始主要交易。
  13. 如請求項11及請求項12之方法,其中該第一方為該符記之一發佈者。
  14. 如請求項12或請求項13之方法,當附屬於請求項7時,其中該特定交易識別符為該第一主要交易之該各別交易識別符。
  15. 如前述請求項中任一項之方法,其中該第一主要交易包含一第一計數器值,且其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時驗證該第二主要交易包含一第二計數器值,其中該第二計數器值為該計數器值之迭代。
  16. 如請求項1至11中任一項之方法,其中該第一主要交易並非該區塊鏈交易鏈中之初始交易,且其中該第一主要交易包含一第一輸入,該第一輸入參考包含該輔助鎖定腳本之一先前輔助交易的一第一輸出,其中該先前輔助交易包含一第一輸入,該第一輸入參考包含該主要鎖定腳本之一先前主要交易的一第一輸出,且其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:vi)驗證該第二主要之該第一解除鎖定腳本包含一第四資料項目,該第四資料項目包含該先前主要交易之一或多個鎖定腳本;以及vii)基於該第二訊息及該第四資料項目而驗證該第二主要交易之該第一輸出包含該主要鎖定腳本。
  17. 如請求項16之方法,其中該先前主要交易具有藉由將一雜湊函數應用於該先前主要交易而產生的一各別交易識別符,其中該第二主要交易之該第一解除鎖定腳本包含一第五資料項目,其中該第五資料項目包含應用於該先前主要交易之該雜湊函數的一中間狀態,且其中該輔助鎖定腳本經組配以在由該第二主要交易之該第一解除鎖定腳本執行時進行以下操作:viii)基於該第四資料項目及該第五資料項目而產生一候選交易識別符且驗證該候選交易識別符匹配該先前主要交易識別符之該各別交易識別符。
  18. 如請求項16或請求項17之方法,其中該先前主要交易為該區塊鏈交易鏈中之一初始主要交易,且其中該方法包含驗證該初始主要交易已用對應於一預定公開金鑰之一簽章進行簽章。
  19. 如前述請求項中任一項之方法,其包含將該第一主要交易提交至區塊鏈網路。
  20. 如前述請求項中任一項之方法,其包含將該第一輔助交易及/或該第二主要交易提交至該區塊鏈網路。
  21. 一種驗證已在一整個區塊鏈交易鏈中強制實行一鎖定腳本之電腦實施方法,其中該方法由一第二方執行且包含: 獲得一第二主要交易,其中該第二主要交易包含一第一輸入及一第一輸出,其中該第一輸入包含基於該第二主要交易產生之一第二訊息、包含解除鎖定一第一主要交易之一第一輸出之一第一輸入的一第一輔助交易以及包含該第一主要交易之一或多個鎖定腳本的一第一資料項目,其中該第一主要交易之該第一輸出包含一主要鎖定腳本且該第一輔助交易之一第一輸出包含一輔助鎖定腳本,且其中該第二主要交易之該第一輸出包含該主要鎖定腳本; 驗證一第一主要交易已記錄於區塊鏈上;以及 驗證該第一主要交易之該主要鎖定腳本經組配以在由該第一輔助交易之一第一解除鎖定腳本執行時進行以下操作:i)驗證該第一解除鎖定腳本包含基於該第一輔助交易產生之一第一訊息;以及ii)基於該第一訊息而驗證該第一輔助交易之一第一輸出包含一輔助鎖定腳本,其中該輔助鎖定腳本經組配以在由該第二主要交易之一第一解除鎖定腳本執行時進行以下操作:i)驗證該第一解除鎖定腳本包含該第二訊息;ii)驗證該第一解除鎖定腳本包含該第一資料項目;以及iii)基於該第二訊息及該第一資料項目而驗證該第二主要交易之該第一輸出包含該主要鎖定腳本,藉此驗證該主要鎖定腳本已在該第一主要交易及該第二主要交易中強制實行。
  22. 如請求項21之方法,其中該主要鎖定腳本包含該輔助鎖定腳本之一雜湊,其中該第一訊息包含一候選輔助鎖定腳本,且其中該主要鎖定腳本經組配以在由該第一輔助交易之該第一解除鎖定腳本執行時進行以下操作:藉由對該候選輔助鎖定腳本進行雜湊來驗證該第一輔助交易之該第一輸出包含該輔助鎖定腳本;以及驗證該候選輔助鎖定腳本之一雜湊匹配該輔助鎖定腳本之該雜湊,且其中該驗證該主要鎖定腳本經組配以執行步驟i)及ii)包含:驗證該主要鎖定腳本包含該輔助鎖定腳本之該雜湊作為一雜湊難題之部分。
  23. 如請求項21或請求項22之方法,該驗證該第一主要交易已記錄於該區塊鏈上包含獲得用於證明該第一主要交易已記錄於該區塊鏈之一區塊中的一默克爾證明。
  24. 如請求項23之方法,其中該第一主要交易具有藉由將一雜湊函數應用於該第一主要交易而產生的一各別交易識別符,其中該第二主要交易之該第一輸入包含一第三資料項目,其中該第三資料項目包含應用於該第一主要交易之該雜湊函數的一中間狀態,且其中該驗證該第一主要交易已記錄於該區塊鏈上包含:基於該第一資料項目及該第三資料項目而產生一候選交易識別符以及驗證該默克爾證明對該候選交易識別符有效。
  25. 如請求項23或請求項24之方法,其包含獲得該第一主要交易,且其中該驗證該第一主要交易已記錄於該區塊鏈上係基於所獲得之默克爾證明及所獲得之第一主要交易。
  26. 如請求項19或附屬於其的任何請求項之方法,其包含驗證該第二主要交易包含一初始主要交易之該各別交易識別符。
  27. 如請求項19或附屬於其的任何請求項之方法,其包含: 產生一第二輔助交易,其中該第二輔助交易包含參考該第二主要交易之該第一輸出的一第一輸入,且包含基於該第二輔助交易產生之一第三訊息及包含該輔助鎖定腳本之一第一輸出;以及 產生一第三主要交易,其中該第三主要交易包含參考該第二輔助交易之該第一輸出的一第一輸入且包含基於該第三主要交易產生之一第四訊息、該第一資料項目、該第二輔助交易,且一第六資料項目包含該第二主要交易之一或多個鎖定腳本,且其中該第三主要交易包含一第一輸出,該第一輸出包含該主要鎖定腳本。
  28. 如請求項27之方法,其中該輔助鎖定腳本經組配以在由該第三主要交易之一第一解除鎖定腳本執行時進行以下操作:vi)驗證該第二主要之該第一解除鎖定腳本包含該第三資料項目;以及vii)基於該第三訊息及該第六資料項目而驗證該第三主要交易之該第一輸出包含該主要鎖定腳本。
  29. 如請求項27或請求項28之方法,其包含將該第二輔助交易及該第三主要第二發送至一第三方。
  30. 如請求項29之方法,其包含將用於證明該第二主要交易已記錄於該區塊鏈之一區塊中的一默克爾證明發送至該第三方。
  31. 如請求項21或附屬於其的任何請求項之方法,其中該主要鎖定腳本及/或該輔助鎖定腳本包含與一符記之所有權相關的資料,且其中該第一主要交易及/或該第一輔助鎖定腳本已由一符記發佈者產生。
  32. 如請求項27或附屬於其的任何請求項之方法,其包含將該第二輔助交易及該第三主要交易提交至該區塊鏈。
  33. 一種電腦裝備,其包含: 記憶體,其包含一或多個記憶體單元;以及 處理設備,其包含一或多個處理單元,其中該記憶體儲存經配置以在該處理設備上運行之程式碼,該程式碼經組配以便在處於該處理設備上時執行如請求項1至32中任一項之方法。
  34. 一種電腦程式,其體現於電腦可讀儲存器上且經組配以便在運行於一或多個處理器上時執行如請求項1至32中任一項之方法。
TW111133202A 2021-09-30 2022-09-01 鎖定腳本傳播技術 TW202316844A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2113977.9A GB2611325A (en) 2021-09-30 2021-09-30 Propagating locking scripts
GB2113977.9 2021-09-30

Publications (1)

Publication Number Publication Date
TW202316844A true TW202316844A (zh) 2023-04-16

Family

ID=78497778

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111133202A TW202316844A (zh) 2021-09-30 2022-09-01 鎖定腳本傳播技術

Country Status (4)

Country Link
CN (1) CN118044151A (zh)
GB (1) GB2611325A (zh)
TW (1) TW202316844A (zh)
WO (1) WO2023052019A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2620401A (en) * 2022-07-05 2024-01-10 Elas Holdings PTY LTD Computer implemented systems and methods

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11810018B2 (en) * 2017-05-22 2023-11-07 Nchain Licensing Ag Secure provision of undetermined data from an undetermined source into the locking script of a blockchain transaction
CN112102091A (zh) * 2020-11-09 2020-12-18 南京可信区块链与算法经济研究院有限公司 一种基于双层链式架构的区块链激励方法

Also Published As

Publication number Publication date
GB2611325A (en) 2023-04-05
CN118044151A (zh) 2024-05-14
WO2023052019A1 (en) 2023-04-06
GB202113977D0 (en) 2021-11-17

Similar Documents

Publication Publication Date Title
CN113544722A (zh) 使用区块链的方法
JP2022532889A (ja) 複数インプットトランザクション
CN115997229A (zh) 区块链上的协议
CN113994628A (zh) 通过侧信道流式传输部分数据
US20220309504A1 (en) Multi-criteria blockchain protocol
TW202316844A (zh) 鎖定腳本傳播技術
WO2023117230A1 (en) Blockchain transaction
CN116745794A (zh) 区块链相关验证方法和系统
JP2023529467A (ja) カスタムトランザクションスクリプト
JP7508473B2 (ja) ブロックチェーンの使用方法
KR20240088974A (ko) 잠금 스크립트의 전파
WO2024061546A1 (en) Enforcing constraints on blockchain transactions
WO2024061617A1 (en) Atomic swap token trades
WO2024041866A1 (en) Blockchain transaction
WO2024052065A1 (en) Determining shared secrets using a blockchain
TW202306368A (zh) 對區塊鏈交易施行條件之技術(一)
TW202247626A (zh) 部分安全雜湊演算法(sha)為基礎之雜湊函數
TW202318444A (zh) 對區塊鏈交易施行條件之技術(二)
WO2023160921A1 (en) Data exchange attestation method
TW202329668A (zh) 證明及驗證有序事件序列之技術
GB2614077A (en) Signature-based atomic swap
WO2024041862A1 (en) Blockchain transaction
GB2608840A (en) Message exchange system
WO2024052066A1 (en) Blockchain state machine
WO2024052053A1 (en) Blockchain state machine