TW201901575A - 基於指令碼之區塊鏈互動 - Google Patents

基於指令碼之區塊鏈互動 Download PDF

Info

Publication number
TW201901575A
TW201901575A TW107117888A TW107117888A TW201901575A TW 201901575 A TW201901575 A TW 201901575A TW 107117888 A TW107117888 A TW 107117888A TW 107117888 A TW107117888 A TW 107117888A TW 201901575 A TW201901575 A TW 201901575A
Authority
TW
Taiwan
Prior art keywords
block
transaction
blockchain
instruction code
data
Prior art date
Application number
TW107117888A
Other languages
English (en)
Other versions
TWI784002B (zh
Inventor
茵 陳
狄恩 克拉馬
Original Assignee
安地卡及巴布達商區塊鏈控股有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GBGB1708493.0A external-priority patent/GB201708493D0/en
Priority claimed from GBGB1708491.4A external-priority patent/GB201708491D0/en
Priority claimed from GBGB1708488.0A external-priority patent/GB201708488D0/en
Application filed by 安地卡及巴布達商區塊鏈控股有限公司 filed Critical 安地卡及巴布達商區塊鏈控股有限公司
Publication of TW201901575A publication Critical patent/TW201901575A/zh
Application granted granted Critical
Publication of TWI784002B publication Critical patent/TWI784002B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/3236Cryptographic 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
    • 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/3236Cryptographic 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/3239Cryptographic 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Finance (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Eye Examination Apparatus (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本發明可提供一種電腦實施方法。該電腦實施方法包括:i)在一區塊鏈網路中之一節點處接收與一數位資產相關聯的一第一交易,該第一交易包括指定關於用以轉移對該數位資產之控制的一第二交易之一約束集合的一第一指令碼,該約束集合包括由該節點獲得的一資料集合所包括自與該區塊鏈網路相關聯之一區塊鏈獲得的資訊之一約束;ii)獲得該第二交易,該第二交易包括一第二指令碼,該第二指令碼由於被執行而使得該節點獲得該資料集合;及iii)藉由執行該第一指令碼及該第二指令碼來驗證該第二交易。

Description

基於指令碼之區塊鏈互動
本發明大體上係關於包括區塊鏈交易之分散式總帳技術,且更特定言之係關於使得來自區塊鏈、區塊標頭、區塊以及區塊鏈交易的欄位插入至交易指令碼中。本發明特別地適合,但不限於,基於區塊鏈之狀態在交易中之使用。
在此文件中,吾人使用術語「區塊鏈」來包括所有形式的基於電腦之電子分散式總帳。此等總帳包括基於共識之區塊鏈及交易鏈技術、許可及未許可總帳、共用總帳及其變化。區塊鏈技術之最廣泛已知應用為比特幣總帳,儘管已提議並開發了其他區塊鏈實施。雖然出於便利及說明之目的,術語「比特幣」可被稱為本發明中所描述之技術的有用應用,但比特幣僅係本發明中所描述之技術可應用的許多應用中之一者。然而,應注意,本發明不限於與比特幣區塊鏈一起使用;包括非商業應用之替代性區塊鏈實施及協定亦在本發明之範疇內。舉例而言,本發明中所描述之技術將提供優點至正在利用的區塊鏈實施及具有類似於比特幣之限制的其他密碼貨幣,該等限制係關於何種約束可在密碼貨幣交易內編碼,不管密碼貨幣之兌換是否發生。
如本文中所使用,「數位資產」係由區塊鏈管理之資源的單位。數位資產係由區塊鏈管理之資源的單位。儘管數位資產在一些實施 例中可用作密碼貨幣,但預期數位資產在實施例中另外或替代地可用於其他內容背景中。應注意,雖然適用於數位資產之控制,但本發明在本質上係技術性的且可用於利用區塊鏈資料結構而未必涉及數位資產轉移的其他內容背景中。如本發明中所使用,「數位資產」可指一或多個數位資產。舉例而言,交易可具有多個輸入,且彼等輸入中之每一者可表示不同數位資產。控制經轉移的數位資產在此實例中可為多個數位資產之集合,該集合本身為數位資產。類似地,交易可細分或組合彼等多個輸入以產生一或多個輸出,使得例如輸入之數目與輸出之數目不同。在一實施例中,密碼貨幣係基於符記的密碼貨幣,其中每一符記表示資產之份額(例如,公司之份額)且單一交易涉及多個類型的符記(例如,涉及一或多個不同公司中之份額)。
本發明描述一或多個基於區塊鏈之電腦程式之技術態樣。基於區塊鏈之電腦程式係記錄於區塊鏈交易中的機器可讀且可執行之程式。基於區塊鏈之電腦程式可包含可處理輸入以便產生結果之規則,該等規則可接著使動作視彼等結果而執行。若鎖定指令碼能夠存取解除鎖定交易及先前交易兩者,則區塊鏈可用以啟用高度靈活及複雜的基於區塊鏈之電腦程式。當前研究之一個領域係使用基於區塊鏈之電腦程式來實施「智慧型合約」。不同於以自然語言書寫的傳統合約,智慧型合約係經設計以使機器可讀合約或協議之條款之執行自動化的電腦程式。
在實施例中,儘管可在智慧型合約中之特定步驟處編碼與特定實體之互動,但智慧型合約可另外自動地執行且自我強制實行。在一些實例中,自動執行係指成功地執行以實現UTXO之轉移的智慧型合約之執行。應注意,在此等實例中,能夠致使UTXO轉移之「實體」係指能夠 在無需證明對某個秘密之瞭解的情況下建立解除鎖定指令碼的實體。換言之,可驗證解除鎖定交易而無需證實資料源(例如,建立解除鎖定交易之實體)能夠存取密碼編譯秘密(例如,私用不對稱金鑰、對稱金鑰等)。又,在此等實例中,自我強制實行係指致使區塊鏈網路之驗證節點根據約束來強制實行解除鎖定交易。在一些實例中,「解除鎖定」UTXO係在技術意義上使用,指代建立引用UTXO且有效執行之解除鎖定交易。解除鎖定UTXO在此項技術中亦可被稱為花費UTXO。
區塊鏈交易輸出包括鎖定指令碼及關於諸如比特幣之數位資產之所有權的資訊。亦可被稱為負擔(encumbrance)之鎖定指令碼藉由指定需要滿足以便轉移UTXO之條件來「鎖定」數位資產。舉例而言,鎖定指令碼可需要某些資料提供於解除鎖定指令碼中以解除鎖定相關聯之數位資產。在比特幣中,鎖定指令碼亦被稱為「scriptPubKey」。需要鎖定方提供資料以解除鎖定數位資產之技術涉及將資料之雜湊嵌入鎖定指令碼內部。然而,若在建立鎖定指令碼時資料未經判定(例如,未知且固定),則此嵌入呈現問題。
另外,若鎖定指令碼以區塊鏈本身之態樣(例如,區塊中之其他交易或區塊標頭之內容)為基礎,則當建立鎖定指令碼時,資料不存在,且區塊鏈內不存在現有操作碼用以查詢區塊鏈之狀態以獲得彼資料。因此,鎖定指令碼不能要求某一區塊標頭,不能要求區塊鏈之某一狀態,且不能要求交易應位於區塊鏈之某些區塊內。
因此,需要提供改良此等態樣中之一或多者中的區塊鏈技術之方法及系統。因此,根據本發明,提供一種如所附申請專利範圍中所定義之方法。
如下述將更詳細地描述,電腦實施方法及電子裝置經組態 以實施關於解除鎖定指令碼中之資料的約束,以要求解除鎖定指令碼包括區塊標頭、區塊鏈或區塊標頭之鏈。藉由實施關於解除鎖定指令碼中之資料的此等約束,且藉由在執行階段將此資料插入至解除鎖定指令碼中,交易可基於區塊鏈之態樣。
因此,根據本發明,可提供如所附申請專利範圍中所定義之一種電腦實施方法(及對應系統)。該方法可描述為區塊鏈資料約束方法。該電腦實施方法包括:i)在一區塊鏈網路中之一節點處接收一第一交易,該第一交易包括指定關於一第二交易之一約束集合的一第一指令碼,該約束集合包括由該節點獲得的一資料集合所包括自與該區塊鏈網路相關聯之一區塊鏈獲得的資訊之一約束;ii)獲得該第二交易,該第二交易包括一第二指令碼,該第二指令碼由於被執行而使得該節點獲得該資料集合;及iii)藉由執行該第一指令碼及該第二指令碼來驗證該第二交易。
如下述將更詳細地描述,電腦實施方法及電子裝置經組態以實施關於解除鎖定指令碼中之資料的約束,以要求在解除鎖定指令碼可用以解除鎖定鎖定指令碼及存取交易之數位資產之前,區塊鏈應處於某一狀態。藉由實施關於鎖定指令碼之約束以要求解除鎖定指令碼包括區塊標頭、區塊鏈或區塊標頭之鏈,且藉由在執行階段將此資料插入至解除鎖定指令碼中,交易可基於區塊鏈之態樣。
該約束集合可包括該資料集合所包括該區塊鏈之一區塊的一區塊標頭之一約束。
該節點可藉由至少進行以下操作來判定該資料集合包括該區塊鏈之該區塊的該區塊標頭之該約束是否得到滿足:證實該區塊標頭具有一預定大小。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合包括該區塊鏈之該區塊的該區塊標頭之該約束是否得到滿足:證 實該區塊標頭包括大於或等於一難度值的一難度值。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合包括該區塊鏈之該區塊的該區塊標頭之該約束是否得到滿足:證實該區塊標頭之一雜湊小於或等於自包括於該區塊標頭中的該難度值計算的一目標值。
該約束集合可包括該資料集合所包括來自該區塊鏈之一區塊的一第三交易之一約束。
該資料集合可包括該區塊鏈之該區塊的一區塊標頭。另外或替代地,該約束集合可包括該第三交易所包括於該區塊中之一約束。另外或替代地,該節點可至少部分地基於該區塊鏈之該區塊的該區塊標頭來判定該第三交易包括於該區塊中之該約束是否得到滿足。
該節點可藉由至少進行以下操作來判定該第三交易包括於該區塊中之該約束是否得到滿足:至少部分地基於藉由該區塊標頭識別之該區塊中的交易之一編碼來計算該第三交易之一雜湊值。另外或替代地,該節點可藉由至少進行以下操作來判定該第三交易包括於該區塊中之該約束是否得到滿足:證實該第三交易之該雜湊值等於儲存於該區塊標頭中之一雜湊值。
該約束集合可包括該資料集合包括一區塊標頭鏈之一約束,該區塊標頭鏈包括一有序區塊標頭集合,該有序區塊標頭集合包括複數個區塊標頭,該有序區塊標頭集合指定與該複數個區塊標頭相關聯之一次序。
該節點可藉由至少進行以下操作來判定該第二指令碼包括該區塊標頭鏈之該約束是否得到滿足:至少部分地基於與該複數個區塊標頭相關聯之該次序而選擇一對區塊標頭,該對區塊標頭包含該對區塊標頭中之一第一區塊標頭及該對區塊標頭中之一第二區塊標頭。另外或替代 地,該節點可藉由至少進行以下操作來判定該第二指令碼包括該區塊標頭鏈之該約束是否得到滿足:證實,對於該對區塊標頭,該對區塊標頭中之該第一區塊標頭的一雜湊等於儲存於該對區塊標頭中之該第二區塊標頭中的一雜湊值。
該約束集合可包括該資料集合係自該區塊鏈網路的一公用區塊鏈獲得之一約束。
該區塊鏈網路之一或多個性質可在執行該第一指令碼及該第二指令碼之前提供至該節點。
驗證該第二交易可成功地執行,而無需證實建立該第二交易之一實體能夠存取秘密資訊。
該第一指令碼可為該第一交易之一鎖定指令碼且該第二指令碼為用於該第一指令碼之一解除鎖定指令碼。
該電腦實施方法可進一步包含至少部分地基於該驗證之一結果而轉移一數位資產。因此,根據本發明,可提供如所附申請專利範圍中所定義之一種電腦實施方法(及對應系統)。該方法可描述為區塊鏈狀態確認方法。該電腦實施方法包括:i)在一區塊鏈網路中之一節點處接收一第一交易,該第一交易至少指定:a)關於一第二交易之一第一約束集合,該第一約束集合包括致使該第二交易含有來自一區塊鏈之一資料集合的一或多個約束;及b)關於該第二交易之一第二約束集合,該第二約束集合包括與該資料集合之資料項目相關聯的一或多個約束;及ii)由於證實該第一約束集合及該第二約束集合得到滿足,致使該第二交易被儲存至該區塊鏈。
如下述將更詳細地描述,電腦實施方法及電子裝置經組態以實施關於解除鎖定指令碼中之資料的約束,以要求在解除鎖定指令碼可 用以解除鎖定鎖定指令碼且基於狀態來調節對交易之數位資產的存取之前,區塊鏈應處於某一狀態。藉由實施關於鎖定指令碼之約束以要求解除鎖定指令碼包括區塊標頭、區塊鏈或區塊標頭之鏈,且藉由在執行階段將此資料插入至解除鎖定指令碼中,交易之結果可基於區塊鏈之態樣。
該資料集合可在該第二交易中在該節點處接收。
該電腦實施方法可進一步包含作為該證實之結果而驗證該第二交易。
驗證該第二交易可成功地執行,而無需證實建立該第二交易之一實體能夠存取秘密資訊。
該第一約束集合可包括該資料集合包括該區塊鏈之一區塊標頭之一約束。
該第一約束集合可包括該資料集合包括來自該區塊鏈之一區塊的一第三交易之一約束。
該第一約束集合可包括該資料集合包括一區塊標頭鏈之一約束,該區塊標頭鏈包括一有序區塊標頭集合,該有序區塊標頭集合包括複數個區塊標頭,該有序區塊標頭集合指定與該複數個區塊標頭相關聯之一次序。
該第二約束集合可包括關於該資料集合之一資料項目的一值之一約束。
該第二約束集合可包括自與該資料集合之該等資料項目相關聯的一或多個值導出之一約束。
該第一約束集合可包括於該第一交易之一鎖定指令碼中。
該第二約束集合可包括於該第一交易之一鎖定指令碼中。
該第一約束集合可包括該資料集合係接收自一公用區塊鏈 之一約束。
該節點可藉由至少進行以下操作來判定該資料集合係接收自該公用區塊鏈之該約束是否得到滿足:在該第二交易中接收包括在接收自該區塊鏈網路的一區塊之前之區塊的一第一區塊集合及包括在接收自該區塊鏈網路的該區塊之後之區塊的一第二區塊集合。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合係接收自該公用區塊鏈之該約束是否得到滿足:證實該第一區塊集合經鏈結至自該區塊鏈網路接收的該區塊。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合係接收自該公用區塊鏈之該約束是否得到滿足:證實該第二區塊集合經鏈結至自該區塊鏈網路接收的該區塊。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合係接收自該公用區塊鏈之該約束是否得到滿足:證實該第一區塊集合及該第二區塊集合係有效的。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合係接收自該公用區塊鏈之該約束是否得到滿足:證實該第一區塊集合及該第二區塊集合之每一區塊具有大於一預定值的一難度值。
因此,根據本發明,可提供如所附申請專利範圍中所定義之一種電腦實施方法(及對應系統)。該方法可描述為區塊鏈狀態認知方法。該電腦實施方法包括:i)在一區塊鏈網路中之一節點處接收一第一交易,該第一交易至少指定:a)關於一第二交易之一第一約束集合,該第一約束集合包括致使該第二交易含有來自該區塊鏈網路的一資料集合之一或多個約束;及b)關於該第二交易之一第二約束集合,該第二約束集合包括該資料集合包括一區塊之一約束,該區塊包括該第一交易,該區塊包括於相關聯於該區塊鏈網路之一區塊鏈中;及ii)由於成功地證實該第一約束集合及該第二約束集合得到滿足,致使該第二交易被記錄至該區塊鏈網路。
該資料集合可在該第二交易中在該節點處接收。
該第一約束集合可包括該資料集合包括該區塊鏈之一區塊標頭之一約束。
該第一約束集合可包括該資料集合包括來自該區塊鏈之一區塊的一第三交易之一約束。
該第一約束集合可包括該資料集合包括一區塊標頭鏈之一約束,該區塊標頭鏈包括一有序區塊標頭集合,該有序區塊標頭集合包括複數個區塊標頭,該有序區塊標頭集合指定與該複數個區塊標頭相關聯之一次序。
由於證實該第一約束集合及該第二約束集合得到滿足,可將該區塊鏈網路的一組性質提供至該節點。
該區塊鏈網路的該組性質可包括與該區塊鏈網路之一區塊鏈的每一區塊相關聯之一對應時戳。
該第一約束集合可包括該第二交易包括相對於該區塊的一時戳之一約束。另外或替代地,證實該第二交易包括相對於該區塊的該時戳之該約束可至少部分地基於該區塊鏈網路的該組性質。
該第一約束集合可包括該資料集合包括一區塊標頭之一約束。另外或替代地,該第二約束集合可包括該第二交易包括該第一交易的一識別符之一約束。另外或替代地,該第二約束集合可包括該第一交易的該識別符相關聯於該區塊標頭之一值之一約束。
該第一約束集合及該第二約束集合可包括於該交易之一鎖定指令碼中。
該第一交易可指定關於該第二交易之約束之一第三集合,約束之該第三集合包括關於該資料集合之一資料項目的一值之一約束。
該第一交易可指定關於該第二交易之約束之一第三集合,約束之該第三集合包括自相關聯於該資料集合的資料項目之一或多個值導出之一約束。
該電腦實施方法可進一步包含作為該證實該第一約束集合及該第二約束集合得到滿足的結果而驗證該第二交易,其中驗證該第二交易成功地執行,而無需證實建立該第二交易之一實體能夠存取秘密資訊。因此,根據本發明,可提供如所附申請專利範圍中所定義之一種電腦實施方法(及對應系統)。該方法可描述為區塊鏈資料約束方法。該電腦實施方法包括:i)在一區塊鏈網路中之一節點處接收與一數位資產相關聯的一第一交易,該第一交易包括指定關於用以轉移對該數位資產之控制的一第二交易之一約束集合的一第一指令碼,該約束集合包括由該節點獲得的一資料集合所包括自與該區塊鏈網路相關聯之一區塊鏈獲得的資訊之一約束;ii)獲得該第二交易,該第二交易包括一第二指令碼,該第二指令碼由於被執行而使得該節點獲得該資料集合;及iii)藉由執行該第一指令碼及該第二指令碼來驗證該第二交易。
該約束集合可包括該資料集合包括該區塊鏈之一區塊的一區塊標頭之一約束。
該節點可藉由至少進行以下操作來判定該資料集合包括該區塊鏈之該區塊的該區塊標頭之該約束是否得到滿足:證實該區塊標頭具有一預定大小。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合包括該區塊鏈之該區塊的該區塊標頭之該約束是否得到滿足:證實該區塊標頭包括大於或等於一難度值的一難度值。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合包括該區塊鏈之該區塊的該區塊標頭之該約束是否得到滿足:證實該區塊標頭之一雜湊小於或等於自 包括於該區塊標頭中的該難度值計算的一目標值。
該約束集合可包括該資料集合包括來自該區塊鏈之一區塊的一第三交易之一約束。
該資料集合可包括該區塊鏈之該區塊的一區塊標頭。另外或替代地,該約束集合可包括該第三交易包括於該區塊中之一約束。另外或替代地,該節點可至少部分地基於該區塊鏈之該區塊的該區塊標頭來判定該第三交易包括於該區塊中之該約束是否得到滿足。
該節點可藉由至少進行以下操作來判定該第三交易包括於該區塊中之該約束是否得到滿足:至少部分地基於藉由該區塊標頭識別之該區塊中的交易之一編碼來計算該第三交易之一雜湊值。另外或替代地,該節點可藉由至少進行以下操作來判定該第三交易包括於該區塊中之該約束是否得到滿足:證實該第三交易之該雜湊值等於儲存於該區塊標頭中之一雜湊值。
該約束集合可包括該資料集合包括一區塊標頭鏈之一約束,該區塊標頭鏈包括一有序區塊標頭集合,該有序區塊標頭集合包括複數個區塊標頭,該有序區塊標頭集合指定與該複數個區塊標頭相關聯之一次序。
該節點可藉由至少進行以下操作來判定該第二指令碼包括該區塊標頭鏈之該約束是否得到滿足:至少部分地基於與該複數個區塊標頭相關聯之該次序而選擇一對區塊標頭,該對區塊標頭包含該對區塊標頭中之一第一區塊標頭及該對區塊標頭中之一第二區塊標頭。另外或替代地,該節點可藉由至少進行以下操作來判定該第二指令碼包括該區塊標頭鏈之該約束是否得到滿足:證實,對於該對區塊標頭,該對區塊標頭中之該第一區塊標頭的一雜湊等於儲存於該對區塊標頭中之該第二區塊標頭中 的一雜湊值。
該約束集合可包括該資料集合係自該區塊鏈網路的一公用區塊鏈獲得之一約束。
該區塊鏈網路之一或多個性質可在執行該第一指令碼及該第二指令碼之前提供至該節點。
驗證該第二交易可成功地執行,而無需證實建立該第二交易之一實體能夠存取秘密資訊。
該第一指令碼可為該第一交易之一鎖定指令碼且該第二指令碼為用於該第一指令碼之一解除鎖定指令碼。
該電腦實施方法可進一步包含至少部分地基於該驗證之一結果而轉移該數位資產。
因此,根據本發明,可提供如所附申請專利範圍中所定義之一種電腦實施方法(及對應系統)。該方法可描述為區塊鏈狀態確認方法。該電腦實施方法包括:i)在一區塊鏈網路中之一節點處接收與一數位資產相關聯的一第一交易,該第一交易至少指定:a)關於用以轉移對該數位資產之控制的一第二交易之一第一約束集合,該第一約束集合包括致使該第二交易含有來自一區塊鏈之一資料集合的一或多個約束;及b)關於該第二交易之一第二約束集合,該第二約束集合包括與該資料集合之資料項目相關聯的一或多個約束;ii)證實該第一約束集合及該第二約束集合得到滿足;及iii)至少部分地基於該驗證而重新關聯該數位資產。
該資料集合可在該第二交易中在該節點處接收。
該電腦實施方法可進一步包含作為該證實之結果而驗證該第二交易。
驗證該第二交易可成功地執行,而無需證實建立該第二交 易之一實體能夠存取秘密資訊。
該第一約束集合可包括該資料集合包括該區塊鏈之一區塊標頭之一約束。
該第一約束集合可包括該資料集合包括來自該區塊鏈之一區塊的一第三交易之一約束。
該第一約束集合可包括該資料集合包括一區塊標頭鏈之一約束,該區塊標頭鏈包括一有序區塊標頭集合,該有序區塊標頭集合包括複數個區塊標頭,該有序區塊標頭集合指定與該複數個區塊標頭相關聯之一次序。
該第二約束集合可包括關於該資料集合之一資料項目的一值之一約束。
該第二約束集合可包括自與該資料集合之該等資料項目相關聯的一或多個值導出之一約束。
該第一約束集合可包括於該第一交易之一鎖定指令碼中。
該第二約束集合可包括於該第一交易之一鎖定指令碼中。
該第一約束集合可包括該資料集合係接收自一公用區塊鏈之一約束。
該節點可藉由至少進行以下操作來判定該資料集合係接收自該公用區塊鏈之該約束是否得到滿足:在該第二交易中接收包括在接收自該區塊鏈網路的一區塊之前之區塊的一第一區塊集合及包括在接收自該區塊鏈網路的該區塊之後之區塊的一第二區塊集合。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合係接收自該公用區塊鏈之該約束是否得到滿足:證實該第一區塊集合經鏈結至自該區塊鏈網路接收的該區塊。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集 合係接收自該公用區塊鏈之該約束是否得到滿足:證實該第二區塊集合經鏈結至自該區塊鏈網路接收的該區塊。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合係接收自該公用區塊鏈之該約束是否得到滿足:證實該第一區塊集合及該第二區塊集合係有效的。另外或替代地,該節點可藉由至少進行以下操作來判定該資料集合係接收自該公用區塊鏈之該約束是否得到滿足:證實該第一區塊集合及該第二區塊集合之每一區塊具有大於一預定值的一難度值。
因此,根據本發明,可提供如所附申請專利範圍中所定義之一種電腦實施方法(及對應系統)。該方法可描述為區塊鏈狀態認知方法。該電腦實施方法包括:i)在一區塊鏈網路中之一節點處接收與一數位資產相關聯的一第一交易,該第一交易至少指定:a)關於用以轉移對該數位資產之控制的一第二交易之一第一約束集合,該第一約束集合包括致使該第二交易含有來自該區塊鏈網路的一資料集合之一或多個約束;及b)關於該第二交易之一第二約束集合,該第二約束集合包括該資料集合包括一區塊之一約束,該區塊包括該第一交易,該區塊包括於相關聯於該區塊鏈網路之一區塊鏈中;ii)證實該第一約束集合及該第二約束集合得到滿足;及iii)至少部分地基於該驗證而轉移對該數位資產之控制。
該資料集合可在該第二交易中在該節點處接收。
該第一約束集合可包括該資料集合包括該區塊鏈之一區塊標頭之一約束。
該第一約束集合可包括該資料集合包括來自該區塊鏈之一區塊的一第三交易之一約束。
該第一約束集合可包括該資料集合包括一區塊標頭鏈之一約束,該區塊標頭鏈包括一有序區塊標頭集合,該有序區塊標頭集合包括 複數個區塊標頭,該有序區塊標頭集合指定與該複數個區塊標頭相關聯之一次序。
由於證實該第一約束集合及該第二約束集合得到滿足,可將該區塊鏈網路的一組性質提供至該節點。
該區塊鏈網路的該組性質可包括與該區塊鏈網路之一區塊鏈的每一區塊相關聯之一對應時戳。
該第一約束集合可包括該第二交易包括相對於該區塊的一時戳之一約束。另外或替代地,證實該第二交易包括相對於該區塊的該時戳之該約束可至少部分地基於該區塊鏈網路的該組性質。
該第一約束集合可包括該資料集合包括一區塊標頭之一約束。另外或替代地,該第二約束集合可包括該第二交易包括該第一交易的一識別符之一約束。另外或替代地,該第二約束集合可包括該第一交易的該識別符相關聯於該區塊標頭之一值之一約束。
該第一約束集合及該第二約束集合可包括於該交易之一鎖定指令碼中。
該第一交易可指定關於該第二交易之約束之一第三集合,約束之該第三集合包括關於該資料集合之一資料項目的一值之一約束。
該第一交易可指定關於該第二交易之約束之一第三集合,約束之該第三集合包括自相關聯於該資料集合的資料項目之一或多個值導出之一約束。
該電腦實施方法可進一步包含作為該證實該第一約束集合及該第二約束集合得到滿足的結果而驗證該第二交易,其中驗證該第二交易成功地執行,而無需證實建立該第二交易之一實體能夠存取秘密資訊。
亦希望提供一種系統,其包含:一處理器;及包括可執行 指令之記憶體,該等可執行指令由於藉由該處理器執行而使得該系統執行所主張方法中之任一者。
亦希望提供一種非暫時性電腦可讀儲存媒體,其上儲存有可執行指令,該等可執行指令由於藉由由一電腦系統之一處理器執行而使得該電腦系統至少執行所主張方法中之任一者。
亦希望提供一種系統,其包含:一處理器;及包括可執行指令之記憶體,該等可執行指令由於藉由該處理器執行而使得該系統執行所主張方法中之任一者。
根據本發明,可提供一種電子裝置。該電子裝置包括一介面裝置、耦接至該該介面裝置之一處理器及耦接至該處理器之一記憶體。該記憶體在其上儲存有電腦可執行指令,該等電腦可執行指令在執行時組態該處理器以執行本文中所描述之方法。
根據本發明,可提供一種電腦可讀儲存媒體。該電腦可讀儲存媒體包括電腦可執行指令,該等電腦可執行指令在執行時組態一處理器以執行本文中所描述之方法。
100‧‧‧區塊鏈網路
102‧‧‧節點
104‧‧‧挖掘者
200‧‧‧電子裝置
210‧‧‧處理器
220‧‧‧記憶體
230‧‧‧介面裝置
240‧‧‧匯流排
250‧‧‧TEE
300‧‧‧實例實施例
302‧‧‧先前交易
304‧‧‧解除鎖定交易
306‧‧‧第一狀態
308‧‧‧第二狀態
400‧‧‧實例問題
402‧‧‧交易
404‧‧‧區塊鏈
406‧‧‧鎖定指令碼
408‧‧‧第一區塊
410‧‧‧區塊
412‧‧‧最新區塊
500‧‧‧實例問題
502‧‧‧交易
504‧‧‧區塊
506‧‧‧鎖定指令碼
508‧‧‧區塊標頭
510‧‧‧交易
512‧‧‧交易
600‧‧‧實例環境
602~610‧‧‧步驟流程
700‧‧‧實例程序
702~720‧‧‧步驟流程
800‧‧‧實例環境
802~814‧‧‧步驟流程
900‧‧‧實例程序
902~924‧‧‧步驟流程
1000‧‧‧實例環境
1002‧‧‧第一區塊標頭
1004‧‧‧第二區塊標頭
1006‧‧‧第三區塊標頭
1008‧‧‧最後一個區塊標頭
1010‧‧‧區塊標頭鏈
1100‧‧‧實例程序
1102~1124‧‧‧步驟流程
1200‧‧‧實例環境
1202‧‧‧區塊標頭
1204‧‧‧默克爾樹
1206‧‧‧交易
1208‧‧‧雜湊
1210‧‧‧交易
1212‧‧‧雜湊
1214‧‧‧在進行雜湊之前將左邊值與右邊值串連
1216‧‧‧雜湊
1218‧‧‧交易
1220‧‧‧雜湊
1222‧‧‧雜湊
1224‧‧‧雜湊
1226‧‧‧雜湊
1228‧‧‧雜湊
1230‧‧‧雜湊
1232‧‧‧雜湊
1300‧‧‧實例環境
1302~1300‧‧‧步驟流程
1400‧‧‧實例程序
1402~1422‧‧‧步驟流程
1500‧‧‧實例環境
1502‧‧‧交易
1504‧‧‧區塊鏈
1506‧‧‧鎖定指令碼
1508‧‧‧區塊
1510‧‧‧交易
1600‧‧‧實例環境
1602‧‧‧區塊鏈
1604‧‧‧第一區塊
1606‧‧‧狀態
1608‧‧‧區塊
1610‧‧‧狀態
1612‧‧‧最新區塊
1614‧‧‧狀態
1700‧‧‧實例環境
1702~1724‧‧‧步驟流程
1800‧‧‧實例程序
1802~1822‧‧‧步驟流程
1900‧‧‧實例問題
1902‧‧‧先前交易
1904‧‧‧解除鎖定交易
1906‧‧‧鎖定指令碼
2000‧‧‧實例環境
2002‧‧‧先前交易
2004‧‧‧解除鎖定交易
2006‧‧‧鎖定指令碼
2008‧‧‧解除鎖定指令碼
2100‧‧‧實例環境
2108~2118‧‧‧步驟流程
2200‧‧‧實例程序
2202~2210‧‧‧步驟流程
2300‧‧‧實例問題
2304‧‧‧交易
2306‧‧‧鎖定指令碼
2400‧‧‧實例環境
2402A‧‧‧先前交易
2402B‧‧‧先前交易
2404‧‧‧解除鎖定交易
2406‧‧‧解除鎖定指令碼
2408‧‧‧解除鎖定指令碼
2500‧‧‧實例環境
2504A‧‧‧解除鎖定交易
2504B‧‧‧解除鎖定交易
2600‧‧‧實例環境
2610‧‧‧串列化交易
2620‧‧‧雜湊
2700‧‧‧實例程序
2702~2714‧‧‧步驟流程
2800‧‧‧實例環境
2802~2818‧‧‧步驟流程
2900‧‧‧實例程序
2902~2922‧‧‧步驟流程
3000‧‧‧實例實施
3002‧‧‧押注交易
3004‧‧‧比特幣
3006‧‧‧比特幣
3008‧‧‧兩個比特幣
3010‧‧‧區塊鏈
3012‧‧‧區塊標頭
3014‧‧‧區塊標頭
圖1說明一實例區塊鏈網路之圖,各種實施例可在該實例區塊鏈網路中實施;圖2根據一實施例說明一實例電子裝置之圖,該實例電子裝置可充當區塊鏈網路中之節點;圖3說明與基於指令碼之區塊鏈互動相關聯的交易之一實例實施例的圖;圖4說明藉由一實施例解決的關於存取與基於指令碼之區塊鏈互動相 關聯的區塊鏈之一實例問題的圖;圖5說明藉由一實施例解決的關於存取與基於指令碼之區塊鏈互動相關聯的區塊鏈中之區塊之一實例問題的圖;圖6說明用於根據一實施例的基於指令碼之區塊鏈互動的一實例環境之圖,在該實例環境中,資料經證實為區塊標頭;圖7說明根據一實施例的基於指令碼之區塊鏈互動中的用於證實資料為區塊標頭之一實例程序之流程圖;圖8說明用於根據一實施例的基於指令碼之區塊鏈互動的一實例環境之圖,在該實例環境中,資料經證實為前一區塊之區塊標頭;圖9說明根據一實施例的基於指令碼之區塊鏈互動中的用於證實資料為前一區塊之區塊標頭之一實例程序的流程圖;圖10說明用於根據一實施例的基於指令碼之區塊鏈互動的一實例環境之圖,在該實例環境中,資料經證實為區塊標頭鏈;圖11說明根據一實施例的基於指令碼之區塊鏈互動中的用於證實資料為區塊標頭鏈之一實例程序的流程圖;圖12說明一實例環境之圖,其所示在根據一實施例的基於指令碼之區塊鏈互動中可用的區塊標頭之默克爾樹;圖13說明用於根據一實施例的基於指令碼之區塊鏈互動的一實例環境之圖,在該實例環境中,交易經證實為包括於區塊標頭中;圖14說明根據一實施例的基於指令碼之區塊鏈互動中的用於證實交易包括於區塊標頭中之一實例程序的流程圖;圖15根據一實施例說明一實例環境之圖,其所示可如何使用本文中所描述之方法解決關於存取與基於指令碼之區塊鏈互動相關聯的區塊鏈之問題; 圖16說明一實例環境之圖,其所示與根據一實施例的基於指令碼之區塊鏈互動相關聯的區塊鏈之狀態;圖17說明根據一實施例的基於指令碼之區塊鏈互動中的一實例環境之圖,在該實例環境中,區塊鏈之狀態經確認;圖18說明根據一實施例的基於指令碼之區塊鏈互動中的用於確認區塊鏈之狀態之一實例程序的流程圖;圖19說明藉由一實施例解決的關於基於指令碼之區塊鏈互動中的鎖定指令碼之一實例問題的圖;圖20說明根據一實施例的基於指令碼之區塊鏈互動中的藉由解除鎖定指令碼之一實例資料存取的圖;圖21說明根據一實施例的基於指令碼之區塊鏈互動中的一實例環境之圖,在該實例環境中,簽名自串列化交易欄位集合產生;圖22說明根據一實施例的基於指令碼之區塊鏈互動中的用於使得串列化解除鎖定交易欄位集合插入之一實例程序的流程圖;圖23說明藉由一實施例解決的關於基於指令碼之區塊鏈互動中的鎖定指令碼之一實例問題的圖;圖24說明根據一實施例的基於指令碼之區塊鏈互動中的一實例環境之圖,在該實例環境中,導致先前串列化交易之插入。
圖25說明根據一實施例的基於指令碼之區塊鏈互動中的視簽名雜湊類型而變得可用的欄位集合之一實例的圖;圖26說明根據一實施例的基於指令碼之區塊鏈互動中的自串列化交易提取交易識別符之一實例的圖;圖27說明根據一實施例示的基於指令碼之區塊鏈互動中的用於使得先前串列化交易插入之一實例程序的圖; 圖28說明用於根據一實施例的基於指令碼之區塊鏈互動中的一實例環境之圖,在該實例環境中,使用區塊鏈之狀態;圖29說明根據一實施例的在基於指令碼之區塊鏈互動中使用區塊鏈之狀態之一實例程序的流程圖;及圖30說明根據一實施例的基於指令碼之區塊鏈互動中的使用區塊鏈之狀態之一實例實施的圖。
現在參看圖1,其以圖式形式說明與區塊鏈相關聯之實例區塊鏈網路100,各種實施例可在該實例區塊鏈網路中實施。執行區塊鏈網路100操作所根據之區塊鏈協定之執行個體的分散式電子裝置可參與區塊鏈網路100。此等分散式電子裝置可被稱為節點102。舉例而言,區塊鏈協定可為比特幣協定。
執行區塊鏈協定且形成區塊鏈網路100之節點102的電子裝置可屬於各種類型,包括例如電腦(諸如,桌上型電腦、膝上型電腦、平板電腦)、伺服器、行動裝置(諸如,智慧型電話)、可穿戴式電腦(諸如,智慧型手錶),或其他電子裝置。
區塊鏈網路100之節點102係使用可包括有線及無線通信技術之合適通信技術彼此耦接。此通信遵循與區塊鏈相關聯之協定。舉例而言,在區塊鏈係比特幣區塊鏈之情況下,可使用比特幣協定。節點102維持區塊鏈上之所有交易的全域總帳。因此,全域總帳為分散式總帳。每一節點102可儲存全域總帳之完整複本或部分複本。由影響全域總帳之節點102進行之交易係藉由其他節點102證實,使得維持全域總帳之有效性。當區塊鏈係基於工作量證明之區塊鏈時,區塊亦藉由檢查隨區塊提交之工作量證明來證實。
節點102中之至少一些作為區塊鏈網路100之挖掘者104操作。圖1之區塊鏈網路100係工作量證明區塊鏈,其中挖掘者104執行昂貴計算以便促進區塊鏈上之交易。舉例而言,工作量證明區塊鏈可能需要挖掘者解決密碼編譯問題。在比特幣中,挖掘者104找到隨機數(nonce),使得區塊標頭藉由雙SHA256雜湊至小於由當前難度定義之值的數字。工作量證明演算法所需之雜湊能力意謂在已在交易上挖掘某數目個區塊之後,該交易被視為實際上不可逆。解決密碼編譯問題之挖掘者104建立用於區塊鏈之新區塊,且將新區塊廣播至其他節點102。其他節點102證實,挖掘者104實際上已解決密碼編譯問題,且因此在接受應將區塊新增至區塊鏈之前已表明足夠工作量證明。其他節點102亦在接受應將區塊新增至區塊鏈之前證實,區塊本身有效(例如,交易及區塊之區塊標頭有效)。區塊係藉由節點102之共識新增至區塊鏈(即,新增至分散式全域總帳)。
由挖掘者104建立之區塊包括已由節點102廣播至區塊鏈之交易。舉例而言,區塊可包括自與節點102中之一者相關聯的位址至與節點102中之另一者相關聯的位址之交易。以此方式,區塊充當自一個位址至另一位址之交易的記錄。請求交易應包括於區塊中之合作對象藉由使用對應於其公用金鑰之私用金鑰對請求進行簽署來證明其經授權以起始轉帳(例如,在比特幣狀況下,花費比特幣)。僅在該請求經有效簽署之情況下將轉帳新增至區塊。
在比特幣之狀況下,公用金鑰與位址之間存在一對一對應。亦即,每一公用金鑰與單一位址相關聯。因此,本文中對轉移數位資產至或自公用金鑰(例如,轉移至與公用金鑰相關聯之位址)及轉移數位資產至或自與公用金鑰相關聯之位址的任何提及係指共同操作。
節點102中之一些可不作為挖掘者而操作,且可替代地作為驗證節點而參與。交易之驗證可涉及檢查鎖定指令碼中所指定之簽名或其他條件、確認對有效UTXO之引用等。圖1之實例包括六個節點102,其中兩個作為挖掘者104而參與。實務上,節點102或挖掘者104之數目可不同。在許多區塊鏈網路中,節點102及挖掘者104之數目可遠大於圖1中所說明之數目。
圖2根據一實施例以圖式形式說明一實例電子裝置200,其可充當區塊鏈網路(例如,諸如關於圖1所示之區塊鏈網路100的區塊鏈網路)中之節點(例如,諸如關於圖1所示之節點102中之一者的節點)。實例電子裝置200可充當區塊鏈網路(諸如關於圖1所示之區塊鏈網路100的區塊鏈網路)中之節點(諸如關於圖1所示之節點102中之一者的節點)。在一實施例中,區塊鏈網路為同級間區塊鏈網路。
電子裝置可採取各種形式,包括例如桌上型電腦、膝上型電腦、平板電腦、伺服器、諸如智慧型電話之行動裝置、諸如智慧型手錶之可穿戴式電腦或另一類型之形式。
電子裝置200包括處理器210、記憶體220及介面裝置230。此等組件可直接地或間接地耦接至彼此,且可彼此通信。舉例而言,處理器210、記憶體220及介面裝置230可經由匯流排240彼此通信。記憶體220儲存包含機器可讀指令及資料之電腦軟體程式,其用於執行本文中所描述之功能。舉例而言,記憶體可包括處理器可執行指令,該等處理器可執行指令在由處理器210執行時使電子裝置執行本文中所描述之方法。該等處理器可執行指令可包括在由處理器210執行時致使電子裝置實施與區塊鏈網路(例如,關於圖1所描述之區塊鏈網路100)相關聯之協定的指令。舉例而言,該等指令可包括用於實施比特幣協定之指令。
記憶體220可儲存區塊鏈網路(例如,關於圖1所描述之區塊鏈網路100)的全域總帳或其一部分。亦即,記憶體220可儲存區塊鏈之所有區塊或該等區塊之一部分,諸如最近區塊或一些區塊中之資訊之一部分。
雖然記憶體220在圖2中用單一區塊示出,但實務上,電子裝置200可包括多個記憶體組件。記憶體組件可屬於各種類型,包括例如RAM、HDD、SSD、隨身碟等。不同類型之記憶體可適合於不同目的。另外,雖然記憶體220示出為與處理器210分開,但處理器210可包括嵌入式記憶體。
如圖2中所示,處理器210可包括諸如受信任執行環境(trusted execution environment,TEE)之安全區域。TEE 250(受信任執行環境)係隔離之執行環境,其向電子裝置200提供額外安全性,諸如隔離之執行、受信任應用程式之完整性及資產機密性。TEE 250提供執行空間,其確保就機密性及完整性而言,載入TEE 250內之電腦指令及資料受到保護。TEE 250可用以保護諸如密碼編譯金鑰之重要資源的完整性及機密性。TEE 250至少部分地在硬體層級實施,使得保護在TEE 250內執行之指令及資料以免電子裝置200之剩餘部分及諸如電子裝置之擁有者的外部合作對象進行存取及操縱。TEE 250內之資料及計算不受操作包括TEE 250之節點102(例如,關於圖1所描述之節點102)的合作對象危害。
TEE 250可操作以執行個體化安全執行環境(在本文中亦被稱為「工作區域(enclave)」),接著一次一個地添加記憶體之頁面,同時累積地雜湊添加之記憶體頁面。在一實施例中,記憶體頁面之雜湊係在遠端機器(例如,顯影器機器或另一機器)上執行,使得遠端機器判定且儲存預期之雜湊。因此,工作區域之內容可藉由任何遠端機器證實以確保工作區 域正執行核准之演算法。此證實可藉由比較雜湊來執行。當工作區域經完全建置時,其被鎖定。有可能在TEE 250中執行程式碼且將秘密發送至程式碼,但一旦工作區域被鎖定,程式碼便不能改變。最終雜湊可藉由認證金鑰簽署,且可供資料擁有者使用以在資料擁有者將任何秘密發送至工作區域之前證實該最終雜湊。
TEE 250可用以保護儲存於TEE 250內之密碼編譯金鑰之機密性及完整性。舉例而言,TEE 250可用於產生及儲存私用金鑰份額。TEE 250意欲確保無成員能夠自成員間通信或工作區域間通信直接獲得保持於TEE 250工作區域內之私用金鑰份額或關於其他私用金鑰份額之資訊。協定對於對工作區域臨限值之危害亦具有穩健性。此外,TEE 250可使得可由節點102(例如,諸如關於圖1所示之節點102中之一者的節點)使用的遠端認證能夠向其他節點證明,TEE 250可靠且正在執行用於藉由區塊鏈網路100實施之協定的經核准之電腦可執行指令。遠端認證可由TEE 250藉由執行特定程式碼片段及發送在工作區域內部、由用於工作區域之內部認證金鑰簽署的程式碼之雜湊來提供。
TEE 250可配備有安全隨機數產生器,其在TEE之工作區域內部,該安全隨機數產生器可用以產生私用金鑰、隨機挑戰或其他隨機資料。TEE 250亦可經組態以自外部記憶體讀取資料且可經組態以將資料寫入至外部記憶體。此資料可用僅保持於工作區域內部之秘密金鑰來加密。
TEE 250可使用諸如受信任平台模組(TPM)或Intel軟體防護擴充(SGX)之各種平台來實施。舉例而言,SGX支援遠端認證,其使得工作區域能夠自正執行特定工作區域之處理器獲取經簽署聲明,其中成員具有之給定者被稱為引述。諸如Intel認證服務(IAS)之第三方認證服務可 證明源自可靠CPU之此等經簽署聲明符合SGX規範。
本發明可提供經配置以使用提供於另一交易之解除鎖定指令碼中的未判定資料來修改嵌入於區塊鏈交易(Tx)之鎖定指令碼中之密碼編譯公用金鑰的方法(及對應系統)。當在例如使用串列化交易作為訊息之比特幣協定中結合簽名檢查操作碼(例如,OP_CHECKSIG)使用時,交易及資料兩者需要來自公用金鑰之擁有者的批准或授權。此保證其安全以免更改。
本文中所描述之方法使用一或多個數位簽名方案來證實各種交易。數位簽名方案可為橢圓曲線數位簽名演算法(Elliptic Curve Digital Signature Algorithm,ECDSA)方案。數位簽名方案亦可為雙方ECDSA方案。數位簽名方案亦可為臨限值ECDSA方案。該方案可用以建構有效簽名而不必重構私用金鑰且任何合作對象無需向另一方顯露其金鑰份額。在一實例中,雙方ECDSA方案,有兩個合作對象且要求兩個合作對象重構私用金鑰。
此ECDSA方案包括可由諸如關於圖1所描述之節點102的節點使用以識別惡意或不合作合作對象之各種機制。舉例而言,可證實秘密共用(VSS)可用以共用沙米爾(Shamir)秘密共用(SSS)所需之多項式。SSS係一形式之秘密共用,其中將秘密分成多個部分且將其在每一參與者自身之獨特部分中提供至該參與者。此等部分可用以重構秘密。若不一致份額提供至不同節點或若份額秘密地發送至不同於廣播至所有節點的盲份額之節點,則VSS可由節點使用以識別惡意節點或成員。不一致份額可藉由節點中之任一者來識別。可藉由包括允許節點證實其份額一致之輔助資訊來使得可證實秘密共用。
不正確份額至個別節點(即,不同於所廣播之盲份額之份 額)的發送可藉由該份額之預期接收者節點來識別。可使用可公開證實秘密共用(PVSS)之技術使得可公開地證實不正確份額被秘密地發送至節點的識別。此類技術可避免欺騙發送者之識別中的可能延遲,該延遲可在不使用PVSS且不正確份額之接收者離線或在發送不正確份額時自網路之大部分斷開的情況下出現。
諸如將不一致份額提供至不同節點之不當行為可由網路解決以阻止惡意行為。舉例而言,當節點被其他節點識別為惡意合作對象時,許多節點可合作以懲罰該惡意合作對象。舉例而言,節點可採取涉及由惡意合作對象存放至區塊鏈網路之數位資產(諸如數位貨幣、符記或其他權益或值)的動作。舉例而言,區塊鏈網路可藉由將數位貨幣、符記、權益或值轉移至不可贖回位址來使用數位貨幣、符記、權益或值,或區塊鏈網路可藉由與其他節點達成拒絕之共識來沒收此等數位資產。並非不當行為節點之節點亦可藉由協作以排除不當行為節點(例如,藉由有效地使金鑰份額無效;例如,藉由排除節點參與會議協定,或藉由重新共用私用金鑰且不向不當行為節點分配份額)來阻止不當行為。
可經由使用TEE來增強上述所描述的ECDSA技術。舉例而言,基於Ibrahim等之臨限ECDSA簽名技術預期強形式之敵人,在本文中被稱為拜占庭敵人。此類型之敵人可任意地作出行為,例如,其不僅拒絕參與簽署程序或中途制止合作對象,而且可假裝誠實地參與且發送不正確資訊。然而,藉由使用TEE及產生用於儲存有秘密私用金鑰份額之TEE之工作區域內的簽署,可提供額外安全性,此係因為工作區域可能大量受損係極不可能的。假定n充分大,若每一TEE經分配不超過一個金鑰份額,則例如可能受損TEE之數目可合理地預期為不會接近對抗拜占庭敵人之穩固性臨限值。若相對於金鑰份額之總數,協定耐受小比例之惡意敵 人,則此認可協定係安全的。
舉例而言,若所有節點具有TEE,則可僅藉由對節點進行實體存取且僅以巨大的努力及費用獲取儲存於工作區域內之秘密,其限制條件為TEE之製造商未受到損害。預期此製造商層級損害係可管理的。舉例而言,若製造商錯誤地主張數個公用金鑰對應於真正的TEE,則其可直接存取私用金鑰份額且潛在地發起攻擊。然而,此攻擊將需要足夠數目個金鑰份額以允許製造商在無其他節點輔助之情況下產生有效簽名。此將意謂累積總權益之大部分,其將係相當昂貴的。此外,藉由實施攻擊,權益持有量之值之大百分比將被毀壞。
當使用TEE時,涵蓋協定對「損毀節點」之穩固性係有用的。損毀節點係使得TEE外部之硬體受到損毀但TEE之完整性未受到損害的節點。損毀節點可控制工作區域接收及不接收何資訊。詳言之,損毀節點可制止,即抑制參與協定。若提供至協定之資訊需要由秘密地保持於工作區域中之私用金鑰(其中對應公用金鑰在認證期間經鑑認)來簽署,則私用金鑰如光阻區域自身般值得信任。因此,損毀節點無法將任意(經鑑認)資訊發送至協定,且可僅藉由制止或試圖矇騙工作區域不恰當地作用(例如,藉由向其提供過時資訊)來試圖進行干擾。因此,對於損毀節點,成功攻擊將需要搜集足夠數目個部分簽名以產生完整簽名。
在一些實施例中,可使用其他臨限值方案,包括非ECDSA簽名方案。
圖3以圖式形式說明與基於指令碼之區塊鏈互動相關聯的交易之實例實施例300。圖3中所示之實例實施例300描繪編碼區塊鏈之第一狀態306(當前狀態)的前一先前交易302(區塊鏈交易)及編碼區塊鏈之第二狀態308(下一狀態)的解除鎖定區塊鏈交易304。在實例實施例300 中,在第一時間之第一狀態306(當前狀態)係表示為嵌入於先前交易302中之參數。在一實施例中,解除鎖定交易304包括表示下一第二狀態308(下一狀態)之參數。
在實例實施例300中,先前交易302及解除鎖定交易304係含有一或多個輸入及一或多個輸出之欄位值的集合。在一些實施例中,該等輸入及該等輸出反映將對數位資產之控制自至少一個實體轉移至至少另一實體的意圖。在實例實施例300中,先前交易302係包括於區塊鏈中之最新的經確認交易。在實例實施例300中,解除鎖定交易304係尚待確認且尚未包括於區塊鏈中之最接近的未來交易。解除鎖定交易304之輸入中之每一者接收先前交易302的輸出。
如比特幣之一些區塊鏈技術使用橢圓曲線數位簽名演算法(ECDSA)作為用於數位簽名之數學方案。在實施例中,ECDSA係用以確保UTXO僅轉移至其合法擁有者的加密數位簽名。比特幣中之橢圓曲線數位簽名(ECDS)通常呈現為具有附加至末尾之簽名雜湊旗標(SIGHASH類型);然而,預期本發明之技術可接合不實施SIGHASH類型之區塊鏈技術使用。在此等區塊鏈技術中,預期ECDS符合特定區塊鏈技術之簽名產生原理。
在實施例中,SIGHASH類型係指在進行串列化(例如,正準化)及雜湊之前自交易提取的欄位集合。舉例而言,SIGHASH類型可影響交易之哪些欄位包括於簽名中。在一些實例中,SIGHASH類型可為SIGHASH_ALL、SIGHASH_NONE、SIGHASH_SINGLE或SIGHASH_ANYONECANPAY中之一或多者。在一實施例中,類型SIGHASH_ALL指示除輸入指令碼外,交易中之所有欄位待雜湊及簽署。在一實施例中,類型SIGHASH_NONE指示輸出無需經簽署,此可允許其 他人更新交易。在一實施例中,類型SIGHASH_SINGLE指示輸入經簽署,但序號空白,使得其他人可建立交易之新版本,但經簽署之唯一輸出係與輸入在同一位置的輸出。在一實施例中,類型SIGHASH_ANYONECANPAY與其他類型組合且指示包括SIGHASH_ANYONECANPAY之輸入經簽署,但其他輸入無需經簽署。SIGHASH類型可由指示SIGHASH類型之值表示。舉例而言,在一些實施中,SIGHASH_ALL由具有值1的位元組表示,SIGHASH_NONE由具有值二(例如,「00000010」)的位元組表示,SIGHASH_SINGLE由具有值三(例如,「00000011」)的位元組表示,且SIGHASH_ANYONECANPAY由具有值80(例如,「01010000」)的位元組表示。在一些實施中,組合SIGHASH類型係藉由將位元組值加在一起來執行。
在一些實例中,由SIGHASH類型判定之交易欄位集合係指以位元組編碼之對應交易的如由SIGHASH類型判定之子集。舉例而言,在SIGHASH類型SIGHASH_ANYONECANPAY之情況下,僅一個交易輸入包括於簽名內。
在一實施例中,ECDS係由以可區別編碼規則(distinguished encoding rule;DER)格式編碼之一對256位元數字(r,s)表示。然而,應注意,本發明之技術可接合諸如基本編碼規則(BER)或正準編碼規則(CER)的其他編碼格式使用。ECDSA中所使用之參數包括K(座標(x,y)的橢圓曲線點)、k(256位元數字;通常為隨機的,以保護私用金鑰)、G(橢圓曲線上之基點,階數為n:n×G=0,其中0表示恆等橢圓曲線點),n為用作橢圓曲線有限域中之參數的大質數,r(ECDS中之256位元數字中的一者),s(簽名中之256位元數字中的另一者,k -1 (k的模組化乘法逆元素;即,k -1 k≡1 mod n)),m(經簽署之訊息或資料;在實施例中,其藉由雜湊函數重 新設定大小為256個位元),a(私用金鑰;例如,256位元數字)。在實施例中,如下產生ECDS:首先,藉由將k乘以產生器來判定橢圓曲線點KK=k×G。接著,自K判定點x,且根據公式r=x mod n來判定ECDS中之256位元數字中的第一個,r。接著,根據公式s=k -1 (m+r×a)mod n來判定ECDS中之256位元數字中的第二個,s。最後,以DER格式對(r,s)編碼。給定簽名(r,s)、訊息或資料m及對應於私用金鑰a之公用金鑰A,簽名係可驗證的。為了驗證簽名,計算v=s -1 ×(m×G+r×y)。若v=r,則簽名有效。
比特幣使用被稱作「指令碼(Script)」之指令碼處理系統。在本發明中,參考各種指令碼操作碼及關鍵字以用於執行各種操作。然而,預期其他區塊鏈技術可實施不同的指令集,且因此,認為本發明中所描述之操作碼說明藉由操作碼執行的操作,而非指令碼中之特定操作碼。在一些實施例中,指令碼處理系統係圖靈(Turing)不完整指令集(例如,不支援迴圈、遞迴、「轉至」陳述式等)。在其他實施例中,指令碼處理系統係圖靈完整指令集。
本發明之某些實施例在如下假設下操作:用於實施所描述之指令集的指令碼處理系統或其他系統允許單一指令碼中超過200條指令(例如,操作碼),在比特幣之一些實施中,此係禁止極限。同樣地,本發明之某些實施例進一步假設,藉由本發明中所參考之操作碼提供的功能性存在且在執行操作碼指令碼指令集之系統中經啟用。在比特幣之一些實施中,此等操作碼中之一或多者可停用或受預設值限制。
本發明中所參考之操作碼之實例包括:OP_ECPX,其傳回橢圓曲線點之x座標
OP_ADD,其將堆疊上之頂部兩個項目相加
OP_BIGMOD,其傳回在將堆疊上之頂部兩個項目相除之後的餘數
OP_BIGMODADD,其執行堆疊之頂部兩個項目模堆疊之第三項目的模數加法
OP_BIGMODINVERSE,其執行模數負指數運算
OP_BIGMODMUL,其執行堆疊之頂部兩個項目模堆疊之第三項目的模數乘法
OP_ADD,其將堆疊上之頂部兩個項目串連
OP_CHECKSIG,其中公用金鑰及簽名自堆疊彈出且對照根據SIGHASH類型之交易欄位之簽名進行證實。若簽名有效,則傳回1,否則傳回0。
OP_CHECKSIGVERIFY,其與OP_CHECKSIG起相同作用,但OP_VERIFY在之後被執行
OP_DERENCODE,其以DER格式編碼堆疊上之頂部兩個項目
OP_DUP,其複製頂部堆疊項目
OP_ECPMULT,其執行堆疊上之頂部兩個項目的橢圓曲線乘法
OP_ELSE,若未執行先前OP_IF或OP_NOTIF或OP_ELSE,則執行此等陳述式;否則,若已執行先前OP_IF或OP_NOTIF或OP_ELSE,則不執行此等陳述式
OP_ENDIF,其結束if/else區塊
OP_EQUAL,若輸入完全相等,則傳回1,否則傳回0
OP_EQUALVERIFY,其與OP_EQUAL相同,但之後運行OP_VERIFY
OP_FROMALTSTACK,其將輸入置於主堆疊之頂部上且將輸入自替代堆疊移除
OP_HASH256,其中輸入經雜湊兩次:第一次用SHA-256且接著用RIPEMD-160
OP_IF,若頂部堆疊值並非假,則執行陳述式且移除頂部堆疊值
OP_NOTIF,若頂部堆疊值係假,則執行陳述式且移除頂部堆疊值
OP_ROLL,其中將堆疊中深至n個項目之項目移動至頂部
OP_SUBSTR,其傳回字串區段
OP_SWAP,其中調換堆疊上之頂部兩個項目
OP_TOALTSTACK,其將輸入置於替代堆疊之頂部上且將輸入自主堆疊移除
OP_VERIFY,其在頂部堆疊值並非真之情況下將交易標記為無效
在一實施例中,可使用操作碼建立ECDS產生指令碼,其可藉由將SIGHASH位元組附加至末尾而擴展以建立簽名產生指令碼OP_GENSIG。
在表1中所示之以上指令碼中,<SIGHASH Byte>、訊息<m>、私用金鑰<a>及數字<k>係按照上述次序輸入至主(例如,後進先出) 堆疊中(例如,在插入四個項目之後,數字<k>在堆疊頂部,後接私用金鑰<a>,後接訊息<m>,且最終後接<SIGHASH Byte>。
執行指令碼操作「OP_DUP OP_TOALTSTACK<PubK G>OP_ECPMULT」使數字<k>複製至替代堆疊,其中<k>與橢圓曲線產生器<PubK G>相乘以在主堆疊之頂部產生橢圓曲線點。
執行指令碼操作「OP_ECPX<N>OP_BIGMOD OP_DUP OP_TOALTSTACK」使自Kx座標模n計算出r。將r之複本推送至替代堆疊。
執行指令碼操作「<N>OP_BIGMODMUL<N>OP_BIGMODADD」、「OP_FROMALTSTACK OP_SWAP OP_FROMALTSTACK<N>」及「OP_BIGMODINVERSE<N>OP_BIGMODMUL」根據k -1 (m+r×a)mod n計算s。最終,執行指令碼操作「OP_DERENCODE OP_SWAP OP_CAT」使rs以DER格式編碼且與<SIGHASH Byte>串連。
在本發明中,此指令碼被稱為OP_GENSIG。因此,在本發明之實施例中對OP_GENSIG的參考應被視為在以上指令碼中執行之操作的速記。
圖4以圖式形式說明藉由一實施例解決的關於存取與基於指令碼之區塊鏈互動相關聯的區塊鏈之一實例問題400。在圖4所示之實例問題400中,交易402(例如,諸如先前交易302的先前交易,或關於圖3所描述之解除鎖定交易304)中的鎖定指令碼406不能存取區塊鏈404。
如所述,在一些實施例中,交易402係包括於區塊鏈中之最新的經確認交易。類似地,在一些實施例中,交易402係未來交易,其尚待確認且尚未包括於區塊鏈中且表示試圖轉移對由先前交易控制之數位 資產之至少一部分的控制。
在一些實施例中,鎖定指令碼406係藉由指定為了轉移輸出需要滿足之條件來阻礙交易的指令碼。更特定言之,作為藉由區塊鏈系統之驗證節點執行的結果,執行鎖定指令碼406經組態以接受來自所執行的解除鎖定指令碼之資料,且基於該資料而執行某些操作,且傳回指示解除鎖定指令碼之執行是否成功地「解除鎖定」該鎖定指令碼(即,滿足設定於鎖定指令碼內之條件集合)的結果。在一些實施例中,鎖定指令碼406定義為了驗證交易成功所必須滿足(例如,藉由經由解除鎖定指令碼提供之資料)的一或多個資料約束。舉例而言,鎖定指令碼406可需要某些資料提供於解除鎖定指令碼中以解除鎖定交易402之相關聯數位資產。
如實例問題400中所說明,交易402之鎖定指令碼406不能查詢區塊鏈404以例如判定區塊之數目。交易402之鎖定指令碼406亦不能查詢區塊鏈404之區塊,包括區塊鏈404的第一區塊408(亦稱作「成因區塊」)、區塊鏈404的內部區塊中之任一者(例如,區塊410)或區塊鏈404的最新區塊412。本文中所描述之方法使得交易402之鎖定指令碼406能夠查詢區塊鏈404之區塊,包括第一區塊408、內部區塊中之任一者(例如,區塊410)或區塊鏈404之最新區塊412。
圖5以圖式形式說明藉由一實施例解決的關於存取與基於指令碼之區塊鏈互動相關聯的區塊鏈中之區塊之一實例問題500。在圖5中所示之實例問題500中,交易502(例如,諸如關於圖3所描述之先前交易302的先前交易,或諸如關於圖3所描述之解除鎖定交易304的解除鎖定交易)中的鎖定指令碼506不能存取區塊鏈中之區塊,諸如區塊504(即,第一區塊、內部區塊或最新區塊)。
如所述,在一些實施例中,交易502係包括於區塊鏈中之 最新的經確認交易。類似地,在一些實施例中,交易502係未來交易,其尚待確認且尚未包括於區塊鏈中且表示試圖轉移對由先前交易控制之數位資產之至少一部分的控制。
如本文中所描述,在一些實施例中,鎖定指令碼506係藉由指定為了轉移輸出需要滿足之條件來阻礙交易的指令碼。如實例問題500中所說明,交易502之鎖定指令碼506不能查詢區塊鏈之區塊504以例如判定交易之數目或存取特定交易。如實例問題500中所說明,交易502之鎖定指令碼506不能查詢區塊鏈之區塊504,不能查詢區塊504之區塊標頭508,且不能查詢區塊504之交易510。在區塊504包括交易502(表示為區塊504之交易510之交易512(Txi))的一實施例中,交易502之鎖定指令碼506亦不能查詢交易512(Txi)(例如,不能查詢包括鎖定指令碼506之交易)。本文中所描述之方法使得交易502之鎖定指令碼506能夠查詢區塊鏈之區塊504、查詢區塊504的區塊標頭508、查詢區塊504之交易510以及查詢區塊504之交易510的交易512(Txi)(例如,使得鎖定指令碼能夠查詢包括鎖定指令碼506的交易)。
圖6以圖式形式說明用於根據一實施例的基於指令碼之區塊鏈互動的一實例環境600,其中資料經證實為區塊標頭。區塊標頭係含有關於區塊之資料的區塊鏈之區塊之片段。舉例而言,步驟602之區塊標頭係80位元組之資料,其中第一4個位元組儲存區塊鏈實施之版本(「nVersion」),接下來32個位元組(或256個位元)儲存區塊鏈之前一區塊的雜湊(「HashPrevBlock」),接下來32個位元組儲存區塊之交易之默克爾樹的雜湊(本文中詳細描述之「HashMerkleRoot」),接下來4個位元組儲存區塊的建立時間(「nTime」),接下來4個位元組儲存區塊的32位元難度值(「nBits」),且最後4個位元組儲存區塊之隨機種子 (「nNonce」)。
如可觀察到的,若步驟602之區塊標頭係用作鎖定指令碼之輸入的資料(例如,作為解除鎖定指令碼提供),則藉由將關於步驟602之區塊標頭之約束編碼為鎖定指令碼,解除鎖定指令碼資料必須含有有效區塊標頭或其並非有效解除鎖定指令碼。關於諸如步驟602之區塊標頭之區塊標頭的三個約束為:i)區塊標頭應長80個位元組;ii)區塊標頭之nBits欄位必須大於或等於某一難度值;以及iii)區塊標頭之雙SHA256可小於或等於該難度值。此等約束中之每一者在本文中說明為單獨指令碼,並且為了易於說明,省略了連結指令碼之細節(例如,分支約束及維持堆疊)。
三個指令碼在與連結指令碼之省略細節組合在一起時形成單一指令碼,其為用以證實解除鎖定指令碼中之<Data>係有效區塊標頭的OP_CHECKBLOCKVERIFY指令碼之一實例。在所說明之實例中,三個指令碼傳回真或假,但當連結在一起作為用以產生OP_CHECKBLOCKVERIFY指令碼的單一指令碼時,通常將OP_VERIFY加至每一指令碼的末尾。如可預期的,OP_CHECKBLOCKVERIFY指令碼之其他實施可經實施且可被視為在本發明之範疇內。
在步驟604中,提供一自認區塊標頭作為一解除鎖定指令碼,其表示為<Data>。
在步驟606中,執行一第一指令碼,其驗證<Data>之大小為80個位元組(例如,第一約束)。驗證<Data>之大小為80個位元組的第一指令碼所示於表2中。
在步驟608中,執行一第二指令碼,其驗證區塊標頭之「nBits」欄位大於或等於區塊鏈難度值。驗證區塊標頭之「nBits」欄位大於或等於區塊鏈難度值的第二指令碼所示於表3中。應注意,所示於表3中的指令碼中之難度值「<0x1D00FFFF>」係根據比特幣規範之最小值難度。在一實施例中,難度值係作為解除鎖定指令碼之資料項目來提供。在一實施例中,較高難度值(例如,大於0x1D00FFF之值)被用作目標難度。在一實施例中,較低難度值(例如,小於0x1D00FFF之值)被用作目標難度。
在步驟610中,執行一第三指令碼,其驗證區塊標頭之雙SHA256(用操作碼OP_HASH256實施,如上所述)小於或等於所指示的難度值。驗證區塊標頭之雙SHA256小於或等於所指示的難度值之第三指令碼所示於表4中。所示於表4中之第三指令碼引入兩個額外操作碼:OP_LBYTESHIFT,其對任意大小之資料執行左邊位元組移位
OP_BIGLESSTHANOREQUAL,其將任意大小之資料解譯為數字且比較兩個數字以判定第一數字是否小於或等於第二數字
表4:
圖7以流程圖形式說明根據一實施例的基於指令碼之區塊鏈互動中的用於證實資料為區塊標頭之一實例程序700。實例程序700之一些或全部可在經組態具有可執行指令或其他資料的一或多個電腦系統之控制下執行,且可實施為集體地在一或多個處理器上執行之可執行指令。可執行指令或其他資料可儲存於一非暫時性電腦可讀儲存媒體上(例如,永久地儲存於磁性、光學或快閃媒體上之電腦程式)。實例程序700可由諸如關於圖1所描述之區塊鏈網路100之節點102(諸如關於圖1所描述之節點102中之一者)執行。亦即,諸如關於圖1所描述之節點102中之一者的節點可執行關於圖7所描述的基於指令碼之區塊鏈互動中的用於證實資料為區塊標頭之實例程序700。此節點可由任何合適的計算裝置組成(例如,藉由資料中心中之伺服器,藉由用戶端計算裝置,藉由計算資源服務提供者之分散式系統中的多個計算裝置,或藉由任何合適的電子用戶端裝置,諸如關於圖2所描述之電子裝置200)。
在實例程序700之步驟702中,系統接收<Data>。在實例程序700之步驟704中,系統開始OP_CHECKBLOCKVERIFY指令碼, 如上述關於圖6所描述。在實例程序700之步驟706中,系統藉由執行例如上述所示於表2中的指令碼來驗證<Data>之大小為80個位元組。在實例程序700之步驟708中,判定先前指令碼(例如,上述所示於表2中的指令碼)是否通過。
若在實例程序700之步驟708中,判定先前指令碼未通過,則在實例程序700之步驟718中,<Data>並非有效區塊標頭且鎖定指令碼之解除鎖定失敗。
若在實例程序700之步驟708中,判定先前指令碼通過,則在實例程序700之步驟710中,系統藉由執行例如上述所示於表3中的指令碼來驗證<Data>之「nBits」欄位大於或等於區塊鏈難度。在實例程序700之步驟712中,判定先前指令碼(例如,上述所示於表3中的指令碼)是否通過。
若在實例程序700之步驟712中,判定先前指令碼未通過,則在實例程序700之步驟718中,<Data>並非有效區塊標頭且鎖定指令碼之解除鎖定失敗。
若在實例程序700之步驟712中,判定先前指令碼通過,則在實例程序700之步驟714中,系統藉由執行例如上述所示於表4中的指令碼來驗證<Data>之SHA256小於或等於所需目標。在實例程序700之步驟716中,判定先前指令碼(例如,上述所示於表4中的指令碼)是否通過。
若在實例程序700之步驟716中,判定先前指令碼未通過,則在實例程序700之步驟718中,<Data>並非有效區塊標頭且鎖定指令碼之解除鎖定失敗。
若在實例程序700之步驟716中,判定先前指令碼通過, 則在實例程序700之步驟720中,<Data>為有效區塊標頭且鎖定指令碼之解除鎖定成功。
應注意,圖7中所示之實例程序700中所執行的操作中之一或多者可按各種次序及組合執行,包括同時執行。
圖8以圖式形式說明用於根據一實施例的基於指令碼之區塊鏈互動的一實例環境800,其中資料經證實為前一區塊之區塊標頭。如本文中所描述,區塊標頭係含有關於區塊之資料的區塊鏈之區塊之片段。區塊標頭之一個部分為前一區塊標頭之雜湊(「HashPrevBlock」)。若第一區塊標頭係作為鎖定指令碼之輸入而提供(例如,作為解除鎖定指令碼之一部分而提供)且自認用於區塊鏈中之下一區塊的第二區塊標頭亦係作為輸入提供至鎖定指令碼(例如,作為解除鎖定指令碼之一部分而提供),則藉由對第一區塊標頭之雜湊係鎖定指令碼中的第二區塊之HashPrevBlock的約束編碼,若第一區塊標頭之雜湊並非第二區塊之HashPrevBlock,則該兩個區塊標頭並非有效解除鎖定指令碼。
在步驟804中,提供步驟802之第一區塊標頭作為解除鎖定指令碼之資料(表示為<Data 1>),且在步驟810中,提供步驟808之第二區塊標頭作為下述所說明的解除鎖定指令碼之資料(表示為<Data 2>)。在步驟806中,使用諸如上述關於圖6及圖7所描述之OP_CHECKBLOCKVERIFY指令碼的指令碼來驗證<Data 1>為區塊標頭。在步驟812中,使用諸如上述關於圖6及圖7所描述之OP_CHECKBLOCKVERIFY指令碼的指令碼來驗證<Data 2>為區塊標頭。
在步驟814中,執行一指令碼,其驗證第一區塊標頭<Data 1>之雙SHA256等於第二區塊標頭<Data 2>之HashPrevBlock欄位。驗證第一區塊標頭<Data 1>之雙SHA256等於第二區塊標頭<Data 2>之 HashPrevBlock欄位的指令碼之一實例所示於表5中。所示於表5中之指令碼係用以證實<Data 1>係<Data 2>之有效的緊接在前之區塊的OP_CHECKCHAINVERIFY指令碼之一實例。如可預期的,OP_CHECKCHAINVERIFY指令碼之其他實施可經實施且可被視為在本發明之範疇內。應注意,所示於表5中的OP_CHECKCHAINVERIFY指令碼之最後操作碼為OP_EQUAL,此係因為「真」值在執行之後應保持在堆疊上。在OP_CHECKCHAINVERIFY指令碼與其他指令碼組合使用之一實施例中,指令碼之最後OP_EQUAL操作碼將變為OP_EQUALVERIFY操作碼。
圖9以流程圖形式說明根據一實施例的基於指令碼之區塊鏈互動中的用於證實資料為前一區塊之區塊標頭之實例程序900。實例程序900之一些或全部可在經組態具有可執行指令或其他資料的一或多個電腦系統之控制下執行,且可實施為集體地在一或多個處理器上執行之可執行指令。可執行指令或其他資料可儲存於一非暫時性電腦可讀儲存媒體上 (例如,永久地儲存於磁性、光學或快閃媒體上之電腦程式)。實例程序900可由諸如關於圖1所描述之區塊鏈網路100之節點102(諸如關於圖1所描述之節點102中之一者)執行。亦即,諸如關於圖1所描述之節點102中之一者的節點可執行關於圖9所描述的基於指令碼之區塊鏈互動中的用於證實資料為前一區塊之區塊標頭之實例程序900。此節點可由任何合適的計算裝置組成(例如,藉由資料中心中之伺服器,藉由用戶端計算裝置,藉由計算資源服務提供者之分散式系統中的多個計算裝置,或藉由任何合適的電子用戶端裝置,諸如關於圖2所描述之電子裝置200)。
在實例程序900之步驟902中,系統接收<Data 1>及<Data 2>,該兩者為兩個自認區塊標頭。在實例程序900之步驟904中,系統對<Data 1>及<Data 2>開始OP_CHECKCHAINVERIFY程序,如上述關於圖8所描述。在實例程序900之步驟906中,如上述關於圖6及圖7所描述,系統藉由對<Data 1>執行OP_CHECKCHAINVERIFY指令碼來驗證<Data 1>為區塊標頭。
在實例程序900之步驟908中,判定先前指令碼(例如,關於<Data 1>之OP_CHECKBLOCKVERIFY指令碼)是否通過(即,OP_CHECKBLOCKVERIFY指令碼傳回真)。若在實例程序900之步驟908中,判定先前指令碼未通過,則在實例程序900之步驟910中,<Data 1>並非有效區塊標頭,且在實例程序900之步驟922中,<Data 1>並非<Data 2>之前一區塊且因此鎖定指令碼之解除鎖定失敗。
若在實例程序900之步驟908中,判定先前指令碼通過,則在實例程序900之步驟912中,如上述關於圖6及圖7所描述,系統藉由對<Data 2>執行OP_CHECKBLOCKVERIFY指令碼來驗證<Data 2>為區塊標頭。
在實例程序900之步驟914中,判定先前指令碼(例如,關於<Data 2>之OP_CHECKBLOCKVERIFY指令碼)是否通過(即,OP_CHECKBLOCKVERIFY指令碼傳回真)。若在實例程序900之步驟914中,判定先前指令碼未通過,則在實例程序900之步驟916中,<Data 2>並非有效區塊標頭,且在實例程序900之步驟922中,<Data 1>並非<Data 2>之前一區塊且因此鎖定指令碼之解除鎖定失敗。
若在實例程序900之步驟914中,判定先前指令碼通過,則在實例程序900之步驟918中,系統驗證<Data 1>之雙SHA256等於<Data 2>之「HashPrevBlock」欄位。
在實例程序900之步驟920中,判定<Data 1>之雙SHA256是否等於<Data 2>之「HashPrevBlock」欄位。若在實例程序900之步驟920中,判定<Data 1>之雙SHA256不等於<Data 2>之「HashPrevBlock」欄位,則在實例程序900之步驟922中,<Data 1>並非<Data 2>之前一區塊且因此鎖定指令碼之解除鎖定失敗。
若在實例程序900之步驟920中,判定<Data 1>之雙SHA256等於<Data 2>之「HashPrevBlock」欄位,則在實例程序900之步驟924中,<Data 1>為<Data 2>之前一區塊且因此鎖定指令碼之解除鎖定成功。
應注意,圖9中所示之實例程序900中所執行的操作中之一或多者可按各種次序及組合執行,包括同時執行。
圖10以圖式形式說明用於根據一實施例的基於指令碼之區塊鏈互動的一實例環境1000,其中資料經證實為區塊標頭鏈。圖10中所示之實例環境1000係關於圖8及圖9所描述之操作的擴展。在圖10中所示之實例環境1000中,比較區塊標頭鏈1010(即,區塊標頭之鏈)的第一 區塊標頭1002之雙SHA256與區塊標頭鏈1010的第二區塊標頭1004之HashPrevBlock,比較區塊標頭鏈1010的第二區塊標頭1004之雙SHA256與區塊標頭鏈1010的第三區塊標頭1006之HashPrevBlock,等,直至比較區塊標頭鏈1010的倒數第二個區塊(未示出)之雙SHA256與區塊標頭鏈1010的最後一個區塊標頭1008之HashPrevBlock。
實例環境1000說明,所示於表5中的OP_CHECKCHAINVERIFY指令碼可藉由針對每一對區塊重複所示於表5中的指令碼而一般化至額外區塊。此指令碼在本文中被稱作OP_CHECKBLOCKCHAINVERIFY。
作為一實例,OP_CHECKBLOCKCHAINVERIFY指令碼可選取區塊標頭鏈中之區塊標頭的數目及區塊標頭鏈之區塊標頭作為輸入參數,且重複地執行OP_CHECKCHAINVERIFY。表6所示此指令碼可如何用以證實六個區塊標頭之鏈的實例。
表7所示對大量區塊重複OP_CHECKCHAINVERIFY之操作的OP_CHECKBLOCKCHAINVERIFY之一實施的實例。在表7中所說明之OP_CHECKBLOCKCHAINVERIFY之實例實施中,重複片段以覆蓋遍及區塊標頭之<d-1>次循環(例如,用於<d>個區塊標頭之<d-1>次循環)的值之範圍,且使用替代堆疊保留及保持次序,對該等區塊標頭對中之每一者執行OP_CHECKCHAINVERIFY操作。
表7:
圖11以流程圖形式說明根據一實施例的基於指令碼之區塊鏈互動中的用於證實資料為區塊標頭鏈之實例程序1100。實例程序1100之一些或全部可在經組態具有可執行指令或其他資料的一或多個電腦系統之控制下執行,且可實施為集體地在一或多個處理器上執行之可執行指令。可執行指令或其他資料可儲存於一非暫時性電腦可讀儲存媒體上(例如,永久地儲存於磁性、光學或快閃媒體上之電腦程式)。實例程序1100可由諸如關於圖1所描述之區塊鏈網路100之節點102(諸如關於圖1所描述之節點102中之一者)執行。亦即,諸如關於圖1所描述之節點102中之一者的節點可執行關於圖11所描述的基於指令碼之區塊鏈互動中的用於證實資料為區塊標頭之實例程序1100。此節點可由任何合適的計算裝置組成(例如,藉由資料中心中之伺服器,藉由用戶端計算裝置,藉由計算資源 服務提供者之分散式系統中的多個計算裝置,或藉由任何合適的電子用戶端裝置,諸如關於圖2所描述之電子裝置200)。
在實例程序1100之步驟1102中,系統接收資料<Data 1>至<Data n>之有序集合。在實例程序1100之步驟1104中,系統對資料之有序集合開始OP_CHECKBLOCKCHAINVERIFY指令碼,如上述關於圖10所描述。
在實例程序1100之步驟1106中,系統至少部分地基於資料之有序集合的次序而自資料之有序集合選擇第一資料項目(例如,<Data 1>)。在實例程序1100之步驟1108中,系統至少部分地基於資料之有序集合的次序而自資料之有序集合選擇第二資料項目(例如,<Data 2>)。在一實施例中,系統使用例如上述關於圖6及圖7所描述之OP_CHECKBLOCKVERIFY指令碼來驗證第一資料項目及第二資料項目係有效的區塊標頭。
在實例程序1100之步驟1110中,如表5中所示且關於圖8及圖9所描述,系統藉由對第一資料項目及第二資料項目執行OP_CHECKCHAINVERIFY來驗證第一資料項目係第二資料項目之前一區塊。
在實例程序1100之步驟1112中,判定關於第一資料項目及第二資料項目之OP_CHECKCHAINVERIFY指令碼是否通過(即,第一資料項目是否為第二資料項目中之區塊標頭的前一區塊標頭)。
若在實例程序1100之步驟1112中,判定關於第一資料項目及第二資料項目之OP_CHECKCHAINVERIFY指令碼未通過,則在實例程序1100之步驟1114中,第一資料項目並非第二資料項目中之區塊標頭的前一區塊標頭,且在實例程序1100之步驟1116中,資料之有序集合 並非有效的區塊標頭鏈。
若在實例程序1100之步驟1112中,判定關於第一資料項目及第二資料項目之OP_CHECKCHAINVERIFY指令碼通過,則在實例程序1100之步驟1118中,判定資料之有序集合是否存在更多資料。
若在實例程序1100之步驟1118中,判定資料之有序集合中存在更多資料,則在實例程序1100之步驟1120中,第二資料項目變為實例程序1100中之第一資料項目,在實例程序1100之步驟1122中,至少部分地基於資料次序而自資料之有序集合選擇新的第二資料項目,且在實例程序1100之步驟1110中,如表5中所示且關於圖8及圖9所描述,系統藉由對新的第一資料項目及的新第二資料項目執行OP_CHECKCHAINVERIFY來驗證新的第一資料項目係新的第二資料之前一區塊。
若在實例程序1100之步驟1118中,判定資料之有序集合沒有更多資料,則在實例程序1100之步驟1124中,資料之有序集合係有效的區塊標頭鏈。
應注意,圖11中所示之實例程序1100中所執行的操作中之一或多者可按各種次序及組合執行,包括同時執行。
圖12以圖式形式說明一實例環境1200,其所示在根據一實施例的基於指令碼之區塊鏈互動中可用的區塊標頭之默克爾樹。默克爾樹(亦被稱為「二進位雜湊樹」)為用以證實區塊中之交易集合的資料結構。默克爾樹為含有交易之密碼編譯雜湊的二進位樹。然而,藉由重複地雜湊及串連資料,默克爾樹可儲存為單一雜湊值(例如,單一32位元組或256位元值)。
在實例環境1200中,默克爾樹1204係藉由以下操作產 生:i)計算區塊之交易中之每一者的雜湊;ii)選擇一對雜湊且將其串連在一起;iii)計算串連之值的雜湊;及iv)在樹之連續較高層級重複該程序,直至最後雜湊值(「默克爾根」)產生。接著將此默克爾根插入至區塊標頭1202中作為「HashMerkleRoot」值。
舉例而言,自交易1206開始,計算彼交易之雜湊1208。如本文中所使用,交易1206將被稱為TA且交易1206之雜湊1208將被稱為H(TA)。類似地,交易1210(TB)具有雜湊1212 H(TB)。為了產生雜湊1216,在進行雜湊之前將左邊值與右邊值串連1214,且因此雜湊1216為H(H(TA)+H(TB)),其中「+」運算符在此情況下過載以表示串連(例如,若H(TA)為「1234」且H(TB)為「5678」,則H(TA)+H(TB)為「12345678」且H(H(TA)+H(TB))為「12345678」之雜湊)。
實例環境1200亦說明默克爾分支,其為默克爾樹中之節點的集合,該等節點與默克爾根組合可用以證實特定葉節點(即,特定交易)之資料在默克爾樹中。給定默克爾根及默克爾分支,可如下所述地證實給定交易(例如,交易1218)在默克爾樹中之存在。首先,計算該交易之雜湊1220。接著,計算默克爾樹中之下一層級處的雜湊1224。然而,如上所述,默克爾樹之下一層級處的雜湊1224需要另一交易(例如,作為交易1218在默克爾樹中之伴侶的交易)之雜湊1222。此雜湊1222為默克爾分支中之第一節點。
給定雜湊1224,計算默克爾樹之下一層級處的雜湊1226。此計算需要默克爾樹之另一交易(例如,另一分支)之雜湊1216。此雜湊1216為默克爾分支中之第二節點。如可預期的,在默克爾樹之每一層級處,默克爾分支需要樹之「其他」分支中的交易集合的雜湊。因此,假設雜湊1230之左邊分支為含有交易1218之分支(其可如所描述地計算),則 為了計算雜湊1230,需要右邊分支之雜湊1228,其為默克爾分支中之另一節點。最後,為了計算默克爾根,需要默克爾樹之整個右側的雜湊1232。可用以證實交易1218在默克爾樹1204中之默克爾分支為雜湊1230、雜湊1228、雜湊1216以及雜湊1222。因為樹具有深度4,所以四個節點在默克爾分支中。應注意,默克爾樹之深度取決於區塊中之交易之數目且為交易之數目的log2(即,對於512個交易,樹具有深度9且用以證實節點之默克爾分支具有9個節點,對於1024個交易,樹具有深度10且用以證實節點之默克爾分支具有10個節點,對於2048個交易,樹具有深度11且用以證實節點之默克爾分支具有11個節點,等)。若舉例而言,比特幣區塊中之每個區塊的交易之平均數目為約2000,則典型區塊將具有深度11之默克爾樹。
圖13以圖式形式說明用於根據一實施例的基於指令碼之區塊鏈互動的一實例環境1300,其中交易經證實為包括於區塊標頭中。如本文中所描述,區塊標頭係含有關於區塊之資料的區塊鏈之區塊之片段。區塊標頭之一個部分為可用以證實區塊中之交易的默克爾樹之默克爾根(「HashMerkleRoot」)。若區塊標頭係作為鎖定指令碼之輸入與交易之默克爾分支及交易一起提供(例如,作為解除鎖定指令碼提供),則藉由對區塊標頭之HashMerkleRoot與自默克爾分支及交易計算出的默克爾根相同之約束編碼,若區塊標頭之HashMerkleRoot與計算的默克爾根不相同,則區塊標頭、默克爾分支以及交易並非為有效的解除鎖定指令碼。
在步驟1304中,提供步驟1302之第一區塊標頭作為解除鎖定指令碼之資料(表示為<Data 1>)。在步驟1306中,使用諸如上述關於圖6及圖7所描述之OP_CHECKBLOCKVERIFY指令碼的指令碼來驗證<Data 1>為區塊標頭。在步驟1308中,自有效區塊標頭提取 HashMerkleRoot。
在步驟1312中,提供步驟1310之默克爾分支作為解除鎖定指令碼之資料(表示為<Data 2>)。儘管本文中未說明,但可為近似10個、11個或12個節點之步驟1310之默克爾分支係以如本文中所描述的指示特定節點為串連操作之左輸入端或串連操作之右輸入的經編碼格式提供。
表8說明OP_CALCMERKLEROOT之實例實施,其中步驟1310之默克爾分支係以經編碼格式提供,該經編碼格式包括對<hash1>、<x1>、<hash2>、<x2>、……、<hashd>、<xd>之集合及值<d>,其中<d>指示對之集合中有多少對,每一<hashi>為來自默克爾樹之值的雜湊,且每一<xi>為指示係左串連或右串連的值(例如,0或1)。在表8中所說明的OP_CALCMERKLEROOT之實例實施中,<xi>中之值1指示左串連且<xi>中之值0指示右串連。
在步驟1316中,提供步驟1314之交易作為解除鎖定指令碼之資料(表示為<Data 3>)。在步驟1318中,使用本文中未說明的OP_CALCMERKLEROOT指令碼來自默克爾根<Data 2>及交易<Data 3>計算默克爾根。
在步驟1320中,執行一指令碼以驗證自<Data 1>提取之HashMerkleRoot與自對<Data 2>及<Data 3>執行之OP_CALCMERKLEROOT指令碼計算之默克爾根相同。驗證自<Data 1>提取之HashMerkleRoot與自<Data 2>及<Data 3>計算之默克爾根相同的指令碼之實例所示於表9中。表9中所示之指令碼為用以證實區塊標頭<Data 1>之區塊含有使用<Data 2>之默克爾分支的<Data 3>之交易的OP_CHECKBLOCKTXVERIFY指令碼之實例。如可預期的,CHECKBLOCKTXVERIFY指令碼之其他實施可經實施且可被視為在本發明之範疇內。在表9中所示之OP_CHECKBLOCKTXVERIFY指令碼中,為了易於說明,省略OP_CHECKBLOCKVERIFY操作。
圖14以流程圖形式說明根據一實施例的基於指令碼之區塊鏈互動中的用於證實交易包括於區塊標頭中之實例程序1400。實例程序1400之一些或全部可在經組態具有可執行指令或其他資料的一或多個電腦系統之控制下執行,且可實施為集體地在一或多個處理器上執行之可執行指令。可執行指令或其他資料可儲存於一非暫時性電腦可讀儲存媒體上(例如,永久地儲存於磁性、光學或快閃媒體上之電腦程式)。實例程序1400可由諸如關於圖1所描述之區塊鏈網路100之節點102(諸如關於圖1所描述之節點102中之一者)執行。亦即,諸如關於圖1所描述之節點102中之一者的節點可執行關於圖14所描述的基於指令碼之區塊鏈互動中的用於證實交易包括於區塊標頭中的實例程序1400。此節點可由任何合適的計算裝置組成(例如,藉由資料中心中之伺服器,藉由用戶端計算裝置,藉由計算資源服務提供者之分散式系統中的多個計算裝置,或藉由任何合適的電子用戶端裝置,諸如關於圖2所描述之電子裝置200)。
在實例程序1400之步驟1402中,系統接收<Data 1>、<Data 2>及<Data 3>,如上述關於圖13所描述。在實例程序1400之步驟1404中,系統開始對<Data 1>、<Data 2>及<Data 3>執行OP_CHECKBLOCKTXVERIFY指令碼,亦如上述關於圖13所描述。
在實例程序1400之步驟1406中,系統使用例如上述關於圖6及圖7所描述之OP_CHECKBLOCKVERIFY指令碼證實<Data 1>為有效區塊標頭。
在實例程序1400之步驟1408中,判定關於<Data 1>之 OP_CHECKBLOCKVERIFY指令碼是否通過。若在實例程序1400之步驟1408中,判定關於<Data 1>之OP_CHECKBLOCKVERIFY指令碼未通過,則在實例程序1400之步驟1410中,<Data 1>並非有效區塊標頭且在實例程序1400之步驟1412中,未證實<Data 3>之交易處於具有<Data 1>中之區塊標頭的區塊中。
若在實例程序1400之步驟1408中,判定關於<Data 1>之OP_CHECKBLOCKVERIFY指令碼通過,則在實例程序1400之步驟1414中,系統自<Data 1>提取HashMerkleRoot欄位,如上述關於圖13所描述。在實例程序1400之步驟1416中,系統自<Data 2>及<Data 3>計算默克爾根,亦如上述關於圖13所描述。
在實例程序1400之步驟1418中,系統驗證自<Data 1>提取之HashMerkleRoot等於自<Data 2>及<Data 3>計算之默克爾根,亦如上述關於圖13所描述。
在實例程序1400之步驟1420中,判定自<Data 1>提取之HashMerkleRoot是否等於自<Data 2>及<Data 3>計算之默克爾根。若在實例程序1400之步驟1420中,判定自<Data 1>提取之HashMerkleRoot不等於來自<Data 2>及<Data 3>的計算之默克爾根,則實例程序1400之步驟1412,未證實<Data 3>之交易處於具有<Data 1>中之區塊標頭的區塊中。
若在實例程序1400之步驟1420中,判定自<Data 1>提取之HashMerkleRoot等於自<Data 2>及<Data 3>計算之默克爾根,則在實例程序1400之步驟1422中,<Data 3>之交易經證實處於具有<Data 1>中之區塊標頭的區塊中。
應注意,圖14中所示之實例程序1400中所執行的操作中之一或多者可按各種次序及組合執行,包括同時執行。
圖15根據一實施例以圖式形式說明一實例環境1500,其所示可如何使用本文中所描述之方法解決關於存取與基於指令碼之區塊鏈互動相關聯的區塊鏈之問題。在實例環境1500中,交易1502(例如,先前交易,諸如關於圖3所描述之先前交易302或解除鎖定交易304)中的鎖定指令碼1506能夠使用關於圖6至圖14所描述之方法中之一或多者查詢區塊鏈1504。此與關於圖4所描述之實例問題400形成對比。類似地,在實例環境1500中,交易1502中之鎖定指令碼1506能夠使用關於圖6至圖14所描述之方法中之一或多者查詢區塊鏈1504之區塊1508。此與關於圖5所描述之實例問題500形成對比。在一實施例中,區塊1508之交易1510與交易1502相同(例如,係交易Txi)。
圖16以圖式形式說明一實例環境1600,其所示與根據一實施例的基於指令碼之區塊鏈互動相關聯的區塊鏈之狀態。區塊鏈含有自區塊鏈開始起的所有區塊。在實例環境1600中,區塊鏈1602之第一區塊1604的區塊標頭為區塊鏈1602在最小nTime(例如,最快或最早時間)處的狀態1606之記錄。使用本文中所描述之方法,交易之鎖定指令碼可查詢區塊鏈1602,可查詢第一區塊1604,且因此可查詢區塊鏈1602在最小nTime處的狀態1606。使用本文中所描述之方法,交易之鎖定指令碼可查詢區塊鏈1602,可查詢區塊鏈1602之區塊1608(其可為含有交易之區塊),且因此,可查詢區塊鏈1602在區塊之nTime處的狀態1610。使用本文中所描述之方法,交易之鎖定指令碼可查詢區塊鏈1602,可查詢區塊鏈1602之最新區塊1612,且因此,可查詢區塊鏈1602在最新區塊之nTime處的狀態1614(例如,可查詢區塊鏈之當前狀態)。在圖17及圖18中詳細地描述了此等狀態查詢之使用。
圖17以圖式形式說明根據一實施例的基於指令碼之區塊鏈 互動中的一實例環境1700,其中區塊鏈之狀態經確認。如本文中所描述,區塊標頭係含有關於區塊之資料的區塊鏈之區塊之片段。區塊標頭之一個部分為可用以證實區塊中之交易的默克爾樹之默克爾根(「HashMerkleRoot」)。若區塊標頭係作為鎖定指令碼之輸入與交易之默克爾分支及交易一起提供(例如,作為解除鎖定指令碼提供),則藉由對區塊標頭之HashMerkleRoot與自默克爾分支及交易計算出的默克爾根相同之約束編碼,若區塊標頭之HashMerkleRoot與計算的默克爾根不相同,則區塊標頭、默克爾分支以及交易並非為有效的解除鎖定指令碼。
在一實施例中,檢查區塊鏈之狀態或確認區塊鏈之狀態包括檢查區塊鏈之其他態樣,包括但不限於檢查區塊鏈之一或多個區塊的區塊標頭、檢查區塊鏈之一或多個區塊之間的關係、檢查區塊鏈之區塊的數目、檢查區塊鏈之單一區塊中的一或多個交易或檢查區塊鏈之多個區塊中的複數個交易。
在步驟1708中,提供步驟1706之區塊標頭作為解除鎖定指令碼之資料(表示為<Data 1>)。在一實施例中,使用諸如上述關於圖6及圖7所描述之OP_CHECKBLOCKVERIFY指令碼的指令碼來驗證<Data 1>為區塊標頭。在步驟1712中,提供步驟1710之默克爾分支作為解除鎖定指令碼之資料(表示為<Data 2>),如上述關於圖13及圖14所描述。在步驟1716中,提供步驟1714之交易作為解除鎖定指令碼之資料(表示為<Data 3>)。在一實施例中,使用OP_CALCMERKLEROOT指令碼自默克爾根<Data 2>及交易<Data 3>計算默克爾根,如上述關於圖13及圖14所描述。
在步驟1718,執行OP_CHECKBLOCKTXVERIFY指令碼以驗證自<Data 1>提取之HashMerkleRoot與來自對<Data 2>及<Data 3>執 行之OP_CALCMERKLEROOT指令碼的計算之默克爾根相同,如上述在表9中所示。
應注意,步驟1718說明可在諸如實例環境1700之環境中執行的一類型之指令碼之實例,其中區塊鏈之狀態係在根據一實施例的基於指令碼之區塊鏈互動中確認。步驟1718說明使用操作碼使來自區塊鏈的資料集合插入至交易中的約束之第一集合。在一實施例中,OP_CHECKBLOCKVERIFY用以如本文中所描述地證實資料集合包括區塊標頭。在一實施例中,OP_CHECKBLOCKTXVERIFY(即,如步驟1718中所說明)用以證實資料集合包括交易且該交易包括於區塊標頭中。如可預期的,本文中所描述的約束之第一集合中之約束的實例係說明性實例,且約束之第一集合的其他類型之約束可被視為在本發明之範疇內。關於下述所描述的步驟1722來描述約束之第二集合。
在實例環境1700中,在步驟1704中,使用一指令碼以藉由使用諸如OP_CHECKBLOCKCHAINVERIFY之驗證指令碼來證實區塊標頭<Data 1>係作為公用區塊鏈之部分的區塊之區塊標頭,而非特別地建立以模仿公用區塊鏈之區塊的區塊之區塊標頭,如上所述。在一實施例中,指令碼用以證實區塊標頭<Data 1>為一區塊之區塊標頭,該區塊為公用區塊鏈之部分,可具備步驟1702之區塊鏈或具備完全或部分區塊標頭鏈,如上所述。
在實例環境1700中,在步驟1722中,使用一指令碼來驗證交易之其他態樣。在步驟1720中,提供步驟1714之交易作為步驟1722中的解除鎖定指令碼之資料(表示為<Data 3>)。應注意,在一些實施例中,當例如步驟1718中之OP_CHECKBLOCKTXVERIFY指令碼消耗步驟1716中之交易<Data 3>時,步驟1720中的交易<Data 3>為步驟1716中 的交易<Data 3>之複本。
如同上述所述之步驟1718,應注意,步驟1722說明可在諸如實例環境1700之環境中執行的一類型之指令碼之實例,其中區塊鏈之狀態係在根據一實施例的基於指令碼之區塊鏈互動中確認。步驟1722說明約束之第二集合,該等約束與使用操作碼插入至交易中的來自區塊鏈的資料集合相關聯,如上述關於步驟1718所描述。在一實施例中,約束之第二集合包括關於資料集合的資料項目之值的約束(即,包括資料集合的資料項目例如小於、等於或大於該值的約束)。在一實施例中,約束之第二集合包括自資料判定之約束(例如,如下約束:若與區塊標頭相關聯之區塊中的交易之數目超過100,則採取動作「A」,否則,採取動作「B」)。如可預期的,本文中所描述的約束之第二集合中之約束的實例係說明性實例,且約束之第二集合的其他類型之約束可被視為在本發明之範疇內。
若在步驟1704中,用以證實區塊標頭<Data 1>係作為公用區塊鏈之部分的區塊之區塊標頭,而非特別地建立以模仿公用區塊鏈之區塊的區塊之區塊標頭的指令碼通過,則在步驟1718中,OP_CHECKBLOCKTXVERIFY指令碼驗證自<Data 1>提取之HashMerkleRoot與來自對<Data 2>及<Data 3>執行之OP_CALCMERKLEROOT指令碼的計算之默克爾根相同,且在步驟1722中,用以驗證交易之其他態樣之指令碼通過,則在步驟1724中,鎖定指令碼成功。在一實施例中,步驟1704說明約束之第三集合,該等約束與使用操作碼插入至交易中的來自區塊鏈的資料集合相關聯(例如,區塊為公用區塊鏈之區塊的約束)。
應注意,如上所述,在步驟1722中,用以驗證交易之其他態樣之指令碼包括約束之第二集合的約束,該等約束與使用操作碼插入至 交易中的來自區塊鏈的資料集合相關聯。因而,在一實施例中,約束之第二集合包括驗證交易之許多態樣,該等態樣包括但不限於交易之受讓人、讓與人、量或交易之其他態樣。另外,應注意,在步驟1722中,用以驗證交易之其他態樣之指令碼可包括區塊鏈的態樣、區塊標頭鏈的態樣、區塊的態樣或區塊鏈環境之其他態樣。舉例而言,在步驟1722中,用以驗證交易之其他態樣且包括約束之第二集合的約束之指令碼可包括用以驗證區塊之nTime、驗證區塊中的交易之數目、判定兩個區塊之間的經過時間之量、判定最小區塊高度或判定區塊鏈環境之其他此等態樣的約束。亦應注意,藉由在步驟1722的用以驗證交易之其他態樣之指令碼的末尾不包括「證實」操作碼,可引入分支條件(例如,若區塊中存在超過1000個交易,則Alice可解除鎖定,且若區塊中存在不超過1000個交易,則Bob可解除鎖定)。在下述關於圖30更詳細地描述分支條件之實例。
與步驟1704,用以證實區塊標頭<Data 1>係作為公用區塊鏈之部分的區塊之區塊標頭,而非特別地建立以模仿公用區塊鏈之區塊的區塊之區塊標頭的指令碼,相關聯之一個問題為,在一些實施例中,特別地建立一區塊以模仿公用區塊鏈之一區塊在計算上可以相當簡單。考慮例如表10之鎖定指令碼,其需要解除鎖定指令碼中之資料包括區塊標頭(例如,解除鎖定指令碼可不只是包括區塊標頭<Data 1>)。
在比特幣實施中,若難度(nBits)經設定至最小值,則資料可為公用區塊鏈中之區塊的區塊標頭,但資料亦可為完全無關的區塊,此 係因為其不需要大量計算能力用以產生具有最小難度之區塊。為了阻止此實踐,鎖定指令碼建立者應使關於鎖定指令碼之約束足夠困難,使得建立模仿公用區塊鏈之替代性區塊鏈所需的計算能力的成本顯著大於解除鎖定能夠獲得之價值。在比特幣中,此可藉由增加難度(例如,在所示於表3中且關於圖6及圖7所描述之指令碼)或藉由需要區塊標頭之長鏈(例如,在所示於表6中且關於圖10及圖11所描述之指令碼)來實現。
表11說明用以在步驟1724中驗證交易之其他態樣(即,判定約束之第二集合或約束之第一集合的態樣是否得到滿足)的指令碼之實例。在表11中所說明的用以驗證交易之其他態樣之實例指令碼,資料<Data 1>經約束為含有交易<Data 3>之區塊標頭,且將交易付給Bob之公用金鑰。應注意,出於說明目的,此處省略<Script to Check Output of Data 3 is to P2KH of Bob>。
圖18以流程圖形式說明根據一實施例的基於指令碼之區塊鏈互動中的用於確認區塊鏈之狀態之實例程序1800。實例程序1800之一 些或全部可在經組態具有可執行指令或其他資料的一或多個電腦系統之控制下執行,且可實施為集體地在一或多個處理器上執行之可執行指令。可執行指令或其他資料可儲存於一非暫時性電腦可讀儲存媒體上(例如,永久地儲存於磁性、光學或快閃媒體上之電腦程式)。實例程序1800可由諸如關於圖1所描述之區塊鏈網路100之節點102諸如關於圖1所描述之節點102中之一者)執行。亦即,諸如關於圖1所描述之節點102中之一者的節點可執行關於圖18所描述的基於指令碼的區塊鏈互動中的用於確認區塊鏈之狀態的實例程序1800。此節點可由任何合適的計算裝置組成(例如,藉由資料中心中之伺服器,藉由用戶端計算裝置,藉由計算資源服務提供者之分散式系統中的多個計算裝置,或藉由任何合適的電子用戶端裝置,諸如關於圖2所描述之電子裝置200)。
在實例程序1800之步驟1802中,系統接收<Data 1>、<Data 2>及<Data 3>,如上述關於圖17所描述。
在實例程序1800之步驟1804中,使用OP_CHECKBLOCKCHAINVERIFY證實<Data 1>為公用區塊鏈之區塊,如上述關於圖17所描述。如上所述,OP_CHECKBLOCKCHAINVERIFY係可用以判定關於資料集合的約束(例如,上述所述的約束之第三集合)是否得到滿足的指令碼之實例。
在實例程序1800之步驟1806中,判定<Data 1>是否為公用區塊鏈之區塊。若在實例程序1800之步驟1806中,判定<Data 1>並非公用區塊鏈之區塊,則在實例程序1800之步驟1808中,未證實<Data 3>之交易處於具有<Data 1>之區塊標頭的區塊中,且在實例程序1800之步驟1810中,鎖定指令碼失敗。
若在實例程序1800之步驟1806中,判定<Data 1>為公用 區塊鏈之區塊,則在實例程序1800之步驟1812中,系統使用諸如表9中所示之實例的OP_CHECKBLOCKTXVERIFY指令碼證實<Data 3>之交易處於具有<Data 1>之區塊標頭的區塊中。如上所述,OP_CHECKBLOCKTXVERIFY係可用以判定關於資料集合的約束(例如,上述所述的約束之第一集合)是否得到滿足的指令碼之實例。在一實施例中,OP_CHECKBLOCKTXVERIFY用以證實資料集合包括交易以及證實該交易包括於藉由區塊標頭識別之區塊中。在一實施例中,OP_CHECKBLOCKVERIFY用以證實資料集合包括區塊標頭。
在實例程序1800之步驟1814中,判定OP_CHECKBLOCKTXVERIFY是否通過。若在實例程序1800之步驟1814中,判定OP_CHECKBLOCKTXVERIFY不通過,則在實例程序1800之步驟1816中,<Data 3>之交易不在具有<Data 1>之區塊標頭的區塊中,且在實例程序1800之步驟1810中,鎖定指令碼失敗。
若在實例程序1800之步驟1814中,判定OP_CHECKBLOCKTXVERIFY通過,則在實例程序1800之步驟1818中,系統如本文中所描述地驗證交易之一或多個其他態樣(即,證實與資料集合相關聯的約束之第二集合的約束得到滿足)。
在實例程序1800之步驟1820中,判定交易之一或多個其他態樣是否經驗證。若在實例程序1800之步驟1820中,判定交易之一或多個其他態樣未經驗證,則在實例程序1800之步驟1810中,鎖定指令碼之解除鎖定失敗。
若在實例程序1800之步驟1820中,判定交易之一或多個其他態樣經驗證,則在實例程序1800之步驟1822中,鎖定指令碼之解除鎖定成功。
應注意,圖18中所示之實例程序1800中所執行的操作中之一或多者可按各種次序及組合執行,包括同時執行。
圖19以圖式形式說明藉由一實施例解決的關於基於指令碼之區塊鏈互動中的鎖定指令碼之實例問題1900。在圖19中所說明的實例問題1900中,先前交易1902中之鎖定指令碼1906不能直接地讀取解除鎖定交易1904的欄位。
如所述,在一些實施例中,先前交易1902係包括於區塊鏈中之最新的經確認交易。類似地,在一些實施例中,解除鎖定交易1904係未來交易,其尚待確認且尚未包括於區塊鏈中且表示試圖轉移對由先前交易1902控制之數位資產之至少一部分的控制。
如本文提及,在一些實施例中,鎖定指令碼1906係藉由指定為了轉移輸出需要滿足之條件來阻礙交易的指令碼。更特定言之,作為藉由區塊鏈系統之驗證節點執行的結果,執行鎖定指令碼1906經組態以接受來自所執行的解除鎖定指令碼之資料,且基於該資料而執行某些操作,且傳回指示解除鎖定指令碼之執行是否成功地「解除鎖定」該鎖定指令碼(即,滿足設定於鎖定指令碼內之條件集合)的結果。在一些實施例中,鎖定指令碼1906定義為了驗證交易成功所必須滿足(例如,藉由經由解除鎖定指令碼提供之資料)的一或多個資料約束。舉例而言,鎖定指令碼1906可需要某些資料提供於解除鎖定指令碼中以解除鎖定先前交易1902之相關聯數位資產。
圖20以圖式形式說明實例環境2000,其中所示根據一實施例的基於指令碼之區塊鏈互動中的藉由解除鎖定指令碼之資料存取。圖20描繪實例環境2000,其說明不同於先前交易2002之鎖定指令碼2006,本發明之解除鎖定指令碼2008在一實施例中能夠存取解除鎖定交易2004 之欄位(例如,根據SIGHASH類型判定的解除鎖定交易欄位集合)。在一些實施例中,先前交易2002類似於圖19之先前交易1902。在一些實施例中,解除鎖定交易2004類似於圖19之解除鎖定交易1904。在一些實施例中,鎖定指令碼2006具有類似於圖19之鎖定指令碼1906的特性。
在一些實施例中,解除鎖定指令碼2008係置放於交易之輸入上的可執行指令碼,該等輸入試圖滿足藉由鎖定指令碼置放於交易之輸出上的一組條件。解除鎖定指令碼亦被稱為「scriptSig」。如上述所提及,解除鎖定指令碼2008已經設計以提供根據SIGHASH類型判定的解除鎖定交易欄位集合作為鎖定指令碼之輸入,藉此使鎖定指令碼能夠存取解除鎖定交易之欄位。關於串列化交易之內容及構造的其他細節可見於下述圖21之描述中。
圖21以圖式形式說明根據一實施例的基於指令碼之區塊鏈互動中的一實例環境2100,其中簽名自串列化交易欄位集合產生。如圖21中所說明,步驟2110之串列化交易(即,以特定格式之一系列位元組表示的交易)包含交易之一組欄位值。在步驟2112中,簽署者選擇SIGHASH類型及數字k。數字k通常為隨機或偽隨機數以便遮罩或保護私用金鑰且因此在本發明中有時被稱為「遮罩數字(mask number)」。步驟2114之交易之經修改複本係步驟2110之串列化交易的根據指定SIGHASH類型(例如,在實例環境2100中為SIGHASH_NONE+ANYONECANPAY)選擇的欄位集合之實例。簽署者對步驟2114之交易之經修改複本進行雜湊(例如,執行OP_HASH256),其步驟2116之產生訊息m。簽署者接著諸如以上述關於圖3所描述的方式,如步驟2118使用SIGHASH類型、訊息m、簽署者之私用金鑰(例如,a)以及數字k建立步驟2108之簽名。
表12說明典型的解除鎖定及解除鎖定指令碼之實例,由此 使用OP_CHECKSIG操作碼對照實體A之公用金鑰檢查在解除鎖定指令碼中所指定的實體A之推測簽名。
因此,在理解圖21之簽名產生的情況下,表13說明在實例環境2100中所說明之程序之部分移至解除鎖定指令碼內的情況下的解除鎖定指令碼及鎖定指令碼之實例。
可進一步修改解除鎖定指令碼以包括計算解除鎖定指令碼中之訊息m的步驟,如表14中所示。
然而,應注意,除了SIGHASH類型及根據SIGHASH類型判定的解除鎖定交易欄位集合之外,程序的其他操作可移至鎖定指令碼,如表15中所示。
因此,藉由將操作「OP_HASH256<a><k>OP_GENSIG」移至鎖定指令碼內部,使解除鎖定指令碼含有SIGHASH類型及根據SIGHASH類型判定的解除鎖定交易欄位集合以便為有效的。
以此方式,使得將串列化先前交易插入至鎖定指令碼中。表16說明鎖定指令碼及解除鎖定指令碼如何執行實例環境2100之每一步驟程序且驗證交易。
然而,應注意,提供SIGHASH類型及根據SIGHASH類型判定的解除鎖定交易欄位集合的任何實體可接收交易輸出。此可成為本文中所描述之方法的有用特徵。舉例而言,智慧型合約之實施可允許合約被實施為區塊鏈交易,此使合約之建立者或合約的任何其他合作對象自由地確保合約得以履行,而無需要求彼等合作對象信任彼此且無需要求彼等合作對象管理或監視合約。在一實施例中,需要與合約之一些互動。在一實施例中,合約係自動地執行,沒有與合約之互動。
智慧型合約可自動地(或部分自動地)執行,此係因為提供SIGHASH類型及根據SIGHASH類型判定的解除鎖定交易欄位集合的任何實體可接收交易輸出,如上所述。在一實施例中,可藉由對解除鎖定交易 加以額外約束來限制此性質,使得僅提供SIGHASH類型及根據SIGHASH類型判定的解除鎖定交易欄位集合的一些實體可接收交易輸出。另外,可對智慧型合約寫碼,使得提供SIGHASH類型及根據SIGHASH類型判定的解除鎖定交易欄位集合的實體僅可以特定方式獲得交易輸出。
在一實施例中,智慧型合約包含充當可由電腦系統偵測以使其他電腦系統驗證交易之信號的值。亦即,藉由提供在執行對與智慧型合約相關聯之交易的驗證後有條件地可獲得的數位資產之至少一部分,可引起驗證實體驗證交易。舉例而言,可建立與1.0之數位資產相關聯的智慧型合約,以使得0.9之數位資產轉至指定接收者且剩餘的0.1之數位資產可由驗證實體認領。智慧型合約以此方式執行。如可預期的,影響實體獲得交易輸出或執行智慧型合約之其他方法可被視為在本發明之範疇內。
如本文中所使用,智慧型合約具有自動執行性質及自我強制執行性質兩者。智慧型合約之自動執行性質為兩種要素之組合。智慧型合約之自動執行性質的第一要素為任何實體可有效地解除鎖定鎖定指令碼。當任何實體可有效地解除鎖定鎖定指令碼時,任何實體可建立引用UTXO或鎖定指令碼之有效解除鎖定交易。此係因為不存在需要實體證明其瞭解某一秘密(例如,私用金鑰或將產生特定雜湊之值)的約束。然而,應注意,智慧型合約之自動執行性質的此第一要素如本文中所描述地受到限制。智慧型合約之自動執行性質的第二要素為智慧型合約係自動的,原因在於可存在引發其他合作對象解除鎖定鎖定指令碼的刺激(例如,比特幣獎勵,如本文中所描述)。智慧型合約之自我強制執行性質亦為兩種要素之組合。智慧型合約之自我強制執行性質的第一要素為可對串列化解除鎖定交易欄位集合施加約束,且此等約束接著在解除鎖定交易反映出來。智慧 型合約之自我強制執行性質的第二要素為鎖定指令碼中之約束係由區塊鏈網路強制執行。
圖22以流程圖形式說明根據一實施例的基於指令碼之區塊鏈互動中的用於使得串列化解除鎖定交易欄位集合插入之實例程序2200。程序2200之一些或全部可在經組態具有可執行指令或其他資料的一或多個電腦系統之控制下執行,且可實施為集體地在一或多個處理器上執行之可執行指令。可執行指令或其他資料可儲存於一非暫時性電腦可讀儲存媒體上(例如,永久地儲存於磁性、光學或快閃媒體上之電腦程式)。實例程序2200可由諸如關於圖1所描述之區塊鏈網路100之節點102諸如關於圖1所描述之節點102中之一者)執行。亦即,諸如關於圖1所描述之節點102中之一者的節點可執行關於圖22所描述的基於指令碼之區塊鏈互動中的用於使得串列化解除鎖定交易欄位集合插入之實例程序2200。此節點可由任何合適的計算裝置組成(例如,藉由資料中心中之伺服器,藉由用戶端計算裝置,藉由計算資源服務提供者之分散式系統中的多個計算裝置,或藉由任何合適的電子用戶端裝置,諸如關於圖2所描述之電子裝置200)。
實例程序2200包括一系列操作,其中執行實例程序2200之系統以圖21中所描述之方式聯合地執行未經驗證交易之解除鎖定指令碼及鎖定指令碼,且結果,獲得SIGHASH類型及一組交易欄位值,產生簽名且驗證簽名。
在實例程序2200之步驟2202中,系統自試圖轉移對數位資產之控制的實體獲得未經驗證交易。未經驗證交易包括鎖定指令碼及解除鎖定指令碼。解除鎖定指令碼由系統在執行鎖定指令碼之前執行。解除鎖定指令碼可類似於上述表15及表16中所示之解除鎖定指令碼,且指示SIGHASH類型及未經驗證交易之欄位的串列化集合。在實例程序2200之 步驟2204中,執行實例程序2200之系統獲得所指示的SIGHASH類型,且在實例程序2200之步驟2206中獲得未經驗證交易之交易欄位值的串列化集合。在一實施例中,在成功完成解除鎖定指令碼之執行後,系統使用在完成解除鎖定指令碼之執行時主堆疊的狀態(且在一些實施中,替代堆疊的狀態)開始鎖定指令碼之執行。鎖定指令碼可類似於上述表15及表16中所示之鎖定指令碼。
在實例程序2200之步驟2208中,根據鎖定指令碼,系統至少使用SIGHASH類型及作為執行解除鎖定指令碼及與公用-私用金鑰對相關聯的私用金鑰之結果而置放於主堆疊上的該組交易欄位值產生簽名。在實例程序2200之步驟2210中,根據鎖定指令碼,系統對照金鑰對之公用金鑰成功地驗證簽名。以此方式,使得交易欄位集合藉由解除鎖定指令碼插入至鎖定指令碼中。
應注意,圖22中所示之實例程序2200中所執行的操作中之一或多者可按各種次序及組合執行,包括同時執行。
圖23以圖式形式說明藉由一實施例解決的關於基於指令碼之區塊鏈互動中的鎖定指令碼之實例問題2300。在圖23中所說明之實例問題2300中,鎖定指令碼2306不能讀取其嵌入所在之交易的輸入,且因此不能直接地讀取先前交易之欄位。
在一些實施例中,交易2304類似於本文中所描述的解除鎖定交易,其表示轉移對由先前交易控制之數位資產的至少一部分之控制的嘗試。如上述所提及,在一些實施例中,類似於本文中所描述之鎖定指令碼,鎖定指令碼2306係藉由指定為了轉移輸出需要滿足之條件來阻礙交易的指令碼。
圖24以圖式形式說明根據一實施例的基於指令碼之區塊鏈 互動中的實例環境2400,其中導致先前串列化交易之插入。圖24中所說明之實例環境2400描繪具有解除鎖定指令碼2408之解除鎖定交易2404,其利用來自先前交易2402A至先前交易2402B之輸出。如可見,解除鎖定指令碼使得擷取串列化先前交易。在一些實例中,串列化先前交易係指先前交易之一組欄位值的未經修改版本。
圖24中所描繪之實施例可藉由觀察到交易ID係串列化交易之雙SHA256且交易ID與交易具有一對一映射來理解。因此,可藉由應用表17中所示之約束來使得將交易插入至解除鎖定指令碼中。
本發明之實施例藉由以下操作來進一步改良此插入:不僅僅使得插入任何串列化交易,而且使得插入在解除鎖定交易2404之輸入中參考的一或多個串列化先前交易(例如,先前交易2402A至先前交易2402B)。如上述參看圖21所描述,可經由解除鎖定指令碼2406使得將根據SIGHASH類型判定的解除鎖定交易欄位集合插入至鎖定指令碼中,且圖25說明取決於所指定之SIGHASH類型將哪些欄位包括於串列化交易中。
圖25以圖式形式說明根據一實施例的基於指令碼之區塊鏈互動中的實例環境2500,其中欄位集合視簽名雜湊類型而變得可用。然而,應注意,圖25意欲為說明性的,且在各種實施例中,存在比圖25中所描繪更多的SIGHASH類型。如圖25中所示,藉由不同SIGHASH類型,先前交易ID之不同集合包括於根據SIGHASH類型判定的解除鎖定交 易欄位集合中(應注意,「雜湊」欄位表示呈大端序格式之交易ID)。在一些實施例中,嵌入鎖定指令碼之先前交易之交易ID始終可用而不管指定哪一SIGHASH類型。
因此,可導致某些欄位存在於藉由按以下方式約束SIGHASH類型判定的解除鎖定交易欄位集合中:首先,複製SIGHASH type。接下來,將SIGHASH類型推入至堆疊中(例如,SIGHASH_ALL)。最後,調用OP_EQUALVERIFY。如在圖25中可見,SIGHASH_ALL(如藉由解除鎖定交易2504A所示)包括如所提到表示先前交易「y」及「z」之交易ID的雜湊。相比而言,SIGHASH_ALL+ANYONECANPAY(如藉由解除鎖定交易2504B所示)僅包括緊接在前之交易「y」的雜湊。在一些實施例中,解除鎖定交易2504A至解除鎖定交易2504B類似於圖19之解除鎖定交易1904,其表示試圖轉移對由先前交易(例如,交易y或x)控制的數位資產之至少一部分之控制。提取交易ID可藉由使用子串操作碼剖析串列化交易直至達到所要欄位來實現,其說明於圖26中。
圖26以圖式形式說明根據一實施例的基於指令碼之區塊鏈互動中的實例環境2600,其中交易識別符係自串列化交易提取。在圖26中所說明之實例環境2600中,由呈大端序格式之交易ID組成之雜湊2620係可藉由使用指令碼內之子串操作碼提取的串列化交易2610之子串。在一些實施例中,在可提取交易ID之前,首先剖析串列化交易2610以識別雜湊2620之位置,此係因為一些欄位(例如,#vin、scriptSigLen、scriptSig、scriptPubKeyLen及scriptPubKey)具有可變位元組長度。然而,預期在欄位具有固定長度之實施中,剖析可能不必要。
因此,在一些實施例中,藉由建置使得以參看圖22所描述之方式插入在解除鎖定交易中所參考之特定串列化先前交易的鎖定指令 碼,可使得可存取先前交易ID。舉例而言,首先判定SIGHASH類型約束,提取交易ID,且複製串列化先前交易且對照自欄位之解除鎖定交易串列化集合提取(根據SIGHASH類型)的交易ID檢查串列化先前交易。應注意,可執行此程序以使得插入多個不同的串列化先前交易。作為一實例,表18呈現使得插入對應於交易之輸入X的先前交易的指令碼。表18中所示之指令碼為使得插入對應於解除鎖定交易之輸入X的先前交易之OP_PREVTXINJECTION指令碼之實例。
然而,應注意,提供SIGHASH類型、根據SIGHASH類型判定的解除鎖定交易欄位集合及串列化先前交易的任何實體可獲得交易輸出,如本文中所描述。
作為一實例,表19呈現使得插入對應於經簽署之輸入之先前交易的指令碼。表19中所示之指令碼為使得插入對應於經簽署之輸入 之先前交易的OP_SELFTXINJECTION指令碼之實例。
應注意,提供SIGHASH類型、根據SIGHASH類型判定的解除鎖定交易欄位集合及串列化先前交易的任何實體可接收交易輸出,如本文中所描述。
圖27以流程圖形式說明根據一實施例示的基於指令碼之區塊鏈互動中的用於使得先前串列化交易插入之實例程序2700。實例程序2700之一些或全部可在經組態具有可執行指令或其他資料的一或多個電腦系統之控制下執行,且可實施為集體地在一或多個處理器上執行之可執行指令。可執行指令或其他資料可儲存於一非暫時性電腦可讀儲存媒體上(例如,永久地儲存於磁性、光學或快閃媒體上之電腦程式)。實例程序2700可由諸如關於圖1所描述之區塊鏈網路100之節點102(諸如關於圖1所描述之節點102中之一者)執行。亦即,諸如關於圖1所描述之節點102中之一者的節點可執行關於圖27所描述的基於指令碼之區塊鏈互動中的用於使得插入先前串列化交易之實例程序2700。此節點可由任何合適的計算裝置組成(例如,藉由資料中心中之伺服器,藉由用戶端計算裝置,藉由計算資源服務提供者之分散式系統中的多個計算裝置,或藉由任何合適的電子 用戶端裝置,諸如關於圖2所描述之電子裝置200)。
實例程序2700包括一系列操作,其中執行實例程序2700之系統聯合地執行未經驗證交易之解除鎖定指令碼及鎖定指令碼,且結果,獲得對應於自未經驗證交易提取之交易ID的串列化先前交易。
在實例程序2700之步驟2702中,系統自試圖轉移對數位資產之控制的實體獲得未經驗證交易。未經驗證交易包括鎖定指令碼及解除鎖定指令碼。鎖定指令碼及解除鎖定指令碼可類似於表18及表19中所示之鎖定指令碼及解除鎖定指令碼。亦即,鎖定指令碼包括諸如藉由解除鎖定指令碼獲取作為儲存於主堆疊及替代堆疊中之輸入值的指令集。指令集之執行若評估為真,則成功地驗證未經驗證交易。因此,在鎖定指令碼之前執行解除鎖定指令碼,從而在主堆疊及替代堆疊中設置待由鎖定指令碼使用之值。圖27之實施例中的未經驗證交易之解除鎖定指令碼指示串列化先前交易、SIGHASH類型及串列化解除鎖定交易欄位集合。
作為執行解除鎖定指令碼、接著鎖定指令碼之結果,在實例程序2700之步驟2704中,系統獲得在解除鎖定指令碼中指定的串列化先前交易、SIGHASH類型及串列化解除鎖定交易欄位集合。在實例程序2700之步驟2706中,系統基於SIGHASH產生未經驗證交易之欄位值的串列化集合之簽名。應注意,SIGHASH類型影響哪些欄位用於簽名產生中,且所要SIGHASH可取決於所搜尋之特定先前交易。舉例而言,表18利用SIGHASH類型SIGHASH_ALL,該表說明用於提取先前交易,但未必提取含有相同指令碼之先前交易的鎖定指令碼及解除鎖定指令碼。如圖25中所說明,SIGHASH_ALL類型使得能夠擷取解除鎖定交易之其他先前交易的輸入。相比而言,表19利用SIGHASH類型SIGHASH_ALL|ANYONECANPAY,該表說明用於提取具有相同鎖定指令 碼之先前交易(亦即,對應於經簽署之輸入之先前交易)的鎖定指令碼及解除鎖定指令碼。如圖25中所說明,SIGHASH類型SIGHASH_ALL|ANYONECANPAY移除了除具有經簽署之輸入之先前交易外的其他先前交易之輸入。
在實例程序2700之步驟2708中,系統驗證先前產生之簽名。在實例程序2700之步驟2710中,系統藉由執行所獲得的串列化先前交易之雙SHA256來產生應匹配解除鎖定交易(即,串列化欄位值集合)之交易ID的值。使用子串操作碼,在實例程序2700之步驟2712中,系統擷取串列化欄位值集合的交易ID,且在實例程序2700之步驟2714中,系統判定藉由串列化先前交易之雙SHA256產生的交易ID是否匹配串列化欄位值集合的交易ID。應注意,在各種實施例中,匹配未必需要相等。舉例而言,若兩個值不相等但在數學上等效,則其可匹配。作為另一實例,若兩個值對應於共同物件(例如值)或以某一預定方式互補或其滿足一或多個匹配準則,則其可匹配。一般而言,可使用判定是否存在匹配之任何方式。
應注意,圖27中所示之實例程序2700中所執行的操作中之一或多者可按各種次序及組合執行,包括同時執行。
圖28以圖式形式說明用於根據一實施例的基於指令碼之區塊鏈互動中的實例環境2800,其中使用區塊鏈之狀態。如本文中所描述,區塊標頭係含有關於區塊之資料的區塊鏈之區塊之片段。
在步驟2804中,提供步驟2802之區塊標頭作為解除鎖定指令碼之資料(表示為<Data 1>),如本文中所描述。在一實施例中,使用諸如上述關於圖6及圖7所描述之OP_CHECKBLOCKVERIFY指令碼的指令碼來驗證<Data 1>為區塊標頭。在步驟2808中,提供步驟2806默克 爾分支作為解除鎖定指令碼之資料(表示為<Data 2>),如上述關於圖13及圖14所描述。在步驟2812中,提供步驟2810之交易作為解除鎖定指令碼之資料(表示為<Data 3>)。在一實施例中,使用OP_CALCMERKLEROOT指令碼自默克爾根<Data 2>及交易<Data 3>計算默克爾根,如上述關於圖13及圖14所描述。
在步驟2814中,執行OP_CHECKBLOCKTXVERIFY指令碼以驗證自<Data 1>提取之HashMerkleRoot與來自對<Data 2>及<Data 3>執行之OP_CALCMERKLEROOT指令碼的計算之默克爾根相同,如上述表9中所示且如關於圖13、圖14及圖17所描述。
在步驟2816中,執行OP_SELFTXINJECTION指令碼以驗證<Data 3>之交易的解除鎖定指令碼包括含有鎖定指令碼之串列化交易,如上述表18及表19中所示且如關於圖26、圖27及圖28所描述。
在步驟2818中,若2814之OP_CHECKBLOCKTXVERIFY指令碼及步驟2816之OP_SELFTXINJECTION成功,則會知道,具有<Data 1>之區塊標頭的區塊包括交易<Data 3>,<Data 3>之解除鎖定指令碼包括鎖定指令碼之串列化交易,且鎖定指令碼能夠存取區塊鏈狀態,如上所述。此鎖定指令碼可能能夠存取資訊,包括但不限於時間(即,來自一或多個區塊標頭之nTime欄位)、偽隨機數(即,來自nNonce或HashMerkleRoot,兩者為偽隨機數之良好源)或其他資訊,其中之一些或全部可在鎖定指令碼中使用。在圖30中所呈現之實例中說明此額外資訊之實例。
在一實施例中,使用一指令碼以藉由使用諸如OP_CHECKBLOCKCHAINVERIFY之驗證指令碼來證實區塊標頭<Data 1>係作為公用區塊鏈之部分的區塊之區塊標頭,而非特別地建立以模仿公用 區塊鏈之區塊的區塊之區塊標頭,如上所述。在一實施例中,指令碼用以證實區塊標頭<Data 1>為一區塊之區塊標頭,該區塊為公用區塊鏈之部分,可具備區塊鏈或具備完全或部分區塊標頭鏈,如上所述。
在一實施例中,指令碼亦可用以驗證交易之其他態樣或區塊鏈狀態,如上述關於圖17所描述。如上所述,用以驗證交易之其他態樣之指令碼可包括驗證交易之許多態樣,該等態樣包括但不限於交易之受讓人、讓與人、量或交易之其他態樣。另外,應注意,用以驗證交易之其他態樣之指令碼可包括區塊鏈的態樣、區塊鏈狀態的態樣、區塊標頭鏈的態樣、區塊之態樣或區塊鏈環境之其他態樣。舉例而言,用以驗證交易之其他態樣之指令碼可驗證區塊之nTime、區塊中的交易之數目、兩個區塊之間經過的時間之量、最小區塊高度或區塊鏈環境之其他態樣。亦應注意,藉由在用以驗證交易之其他態樣之指令碼的末尾不包括「證實」操作碼,可引入分支條件(例如,若區塊中存在超過1000個交易,則Alice可解除鎖定,且若區塊中存在不超過1000個交易,則Bob可解除鎖定)。在下述關於圖30更詳細地描述分支條件之實例。
儘管實例環境2800中未說明,但在一實施例中,用以驗證交易之其他態樣的額外指令碼(諸如在表11中所示且關於圖17所描述的指令碼)可作為圖28中所描述的實例環境2800之部分而執行。
圖29以流程圖形式說明根據一實施例的在基於指令碼之區塊鏈互動中使用區塊鏈之狀態之實例程序2900。實例程序2900之一些或全部可在經組態具有可執行指令或其他資料的一或多個電腦系統之控制下執行,且可實施為集體地在一或多個處理器上執行之可執行指令。可執行指令或其他資料可儲存於非暫時性電腦可讀儲存媒體上(例如,永久地儲存於磁性、光學或快閃媒體上之電腦程式)。實例程序2900可由諸如關於圖 1所描述之區塊鏈網路100之節點102(諸如關於圖1所描述之節點102中之一者)執行。亦即,諸如關於圖1所描述之節點102中之一者的節點可執行關於圖29所描述的在基於指令碼之區塊鏈互動中使用區塊鏈之狀態之實例程序2900。此節點可由任何合適的計算裝置組成(例如,藉由資料中心中之伺服器,藉由用戶端計算裝置,藉由計算資源服務提供者之分散式系統中的多個計算裝置,或藉由任何合適的電子用戶端裝置,諸如關於圖2所描述之電子裝置200)。
在實例程序2900之步驟2902中,系統接收<Data 1>、<Data 2>及<Data 3>,如上述關於圖17所描述。
在實例程序2900之步驟2904中,使用OP_CHECKBLOCKCHAINVERIFY證實<Data 1>為公用區塊鏈之區塊,如上述關於圖17所描述。
在實例程序2900之步驟2906中,判定<Data 1>是否為公用區塊鏈之區塊。若在實例程序2900之步驟2906中,判定<Data 1>並非公用區塊鏈之區塊,則在實例程序2900之步驟2908中,未證實<Data 3>之交易處於具有<Data 1>之區塊標頭的區塊中,且在實例程序2900之步驟2910中,鎖定指令碼不能存取區塊鏈狀態。
若在實例程序2900之步驟2906中,判定<Data 1>為公用區塊鏈之區塊,則在實例程序2900之步驟2912中,系統使用諸如表9中所示之實例的OP_CHECKBLOCKTXVERIFY指令碼證實<Data 3>之交易處於具有<Data 1>之區塊標頭的區塊中。
在實例程序2900之步驟2914中,判定OP_CHECKBLOCKTXVERIFY是否通過。若在實例程序2900之步驟2914中,判定OP_CHECKBLOCKTXVERIFY不通過,則在實例程序 2900之步驟2916中,<Data 3>之交易不在具有<Data 1>之區塊標頭的區塊中,且在實例程序2900之步驟2910中,鎖定指令碼不能存取區塊鏈狀態。
若在實例程序2900之步驟2914中,判定OP_CHECKBLOCKTXVERIFY通過,則在實例程序2900之步驟2918中,系統使用諸如表19中所示之指令碼的OP_SELFTXINJECTION指令碼驗證<Data 3>中之交易之解除鎖定指令碼包括鎖定指令碼之串列化交易。
在實例程序2900之步驟2920中,判定<Data 3>中之交易之解除鎖定指令碼是否包括鎖定指令碼之串列化交易。若在實例程序2900之步驟2920中,判定<Data 3>中之交易之解除鎖定指令碼不包括鎖定指令碼之串列化交易,則在實例程序2900之步驟2910中,鎖定指令碼不能存取區塊鏈狀態。
若在實例程序2900之步驟2920中,判定<Data 3>中之交易之解除鎖定指令碼包括鎖定指令碼之串列化交易,則在實例程序2900之步驟2922中,鎖定指令碼能夠存取區塊鏈狀態。
應注意,圖29中所示之實例程序2900中所執行的操作中之一或多者可按各種次序及組合執行,包括同時執行。
圖30以圖式形式說明根據一實施例的基於指令碼之區塊鏈互動中的使用區塊鏈之狀態之實例實施3000。實例實施3000說明本文所描述之方法之若干態樣。在實例實施3000中,已經決定,人們想要關於將包括其賭注之交易的區塊增加至公用區塊鏈3010要用多久打賭,其基於包括其賭注之交易的區塊與緊接前一區塊之間的時間差。每人提供單一比特幣,且若時間差小於10分鐘,則兩個比特幣付給Alice。相反地,若 時間差不小於10分鐘,則兩個比特幣付給Bob。
Alice用比特幣3004作為押注交易3002之一半資金,且Bob用比特幣3006作為押注交易3002之一半資金。押注交易3002陳述,若時間差(t2-t1)小於10分鐘,則Alice得到兩個比特幣3008。相反地,若時間差(t2-t1)不小於10分鐘,則Bob得到兩個比特幣3008。
使用本文所描述之方法,可判定押注交易3002是否處於具有區塊標頭3014之區塊B2中。類似地,使用本文所描述之方法,可判定具有區塊標頭3012之區塊B1是否為緊接在前之區塊。最後,可判定區塊標頭3014之nTime是否小於在區塊標頭3012之nTime之後十分鐘,且兩個比特幣3008可相應地轉移至Alice或Bob。
表20說明用於此押注交易3002之實例鎖定指令碼。表20中所示之指令碼中所使用的OP_EXTRACTTIME指令碼在本文中未說明,但如可預期的,其為用以自區塊標頭提取時間輸入項的指令碼,類似於表3中所示的用以提取nBits之指令碼。
因此,應在說明性意義上而非限制性意義上看待說明書及圖式。然而,顯而易見,可在不背離如申請專利範圍中所闡述的本發明之更廣精神及範疇之情況下對本發明做出各種修改及改變。
其他變化在本發明之精神內。因此,儘管所揭示技術易受各種修改及替代構造影響,但其某些所說明實施例已所示於圖式中且在上述中已詳細地描述。然而,應理解,不存在將本發明限於所揭示之一或多個具體形式之意圖,而相反,如所附申請專利範圍中定義,意圖為涵蓋屬於本發明之精神及範疇之所有修改、替代構造及等效物。
除非本文中另外指示或明顯與內容相矛盾,否則在描述所揭示實施例之內容中(尤其在以下申請專利範圍之內容中)所使用的術語「一」及「該」及類似指示物應解釋為涵蓋單數與複數兩者。除非另外指出,否則術語「包含」、「具有」、「包括」以及「含有」應解釋為開放式術語(即,意謂「包括但不限於」。術語「連接」在未修改且指實體連接時應解釋為部分或全部地含於……內、附接至……或接合在一起,即使存 在介入之某物。除非本文中另外指示,否則本文中數值範圍之列舉僅意欲充當個別提及屬於該範圍內之每一獨立值之簡寫方法,且每一獨立值併入本說明書中,如同在本文中個別敍述一般。除非另外指出或與上下所述相矛盾,否則術語「集合」(例如,「項目集合」)或「子集」之使用應解釋為包含一或多個成員之非空集合。另外,除非另外指出或與上下所述相矛盾,否則對應集合之術語「子集」未必表示對應集合之恰當子集,而子集與對應集合可相等。
除非另外特定陳述或另外明顯與上下所述相矛盾,否則諸如形式「A、B及C中之至少一者」或「A、B及C中之至少一者」之片語的連接性語言另外藉由如一般用以呈現項目、術語等可為A或B或C或A及B及C之集合之任何非空子集的上下所述來理解。舉例而言,在具有三個成員之集合的說明性實例中,連接性片語「A、B及C中之至少一者」及「A、B及C中之至少一者」係指以下集合中之任一者:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,此連接性語言一般並不意欲暗示某些實施例需要A中之至少一者、B中之至少一者及C中之至少一者各自皆存在。
除非本文中另有指示或另外明顯與上下所述相矛盾,否則本文中所描述之程序之操作可以任何合適次序執行。本文中所描述之程序(或其變化及或組合)可在經組態有可執行指令之一或多個電腦系統的控制下執行,且可實施為由硬體或其組合共同地在一或多個處理器上執行之程式碼(例如,可執行指令、一或多個電腦程式或一或多個應用程式)。程式碼可儲存於電腦可讀儲存媒體上,例如,其形式為包含可由一或多個處理器執行之複數個指令的電腦程式。電腦可讀儲存媒體可為非暫時性的。
除非另有主張,否則使用本文中提供之任何及所有實例或 例示性語言(例如,「諸如」)僅意欲較好地闡明本發明之實施例,而不對本發明之範疇造成限制。本說明書中之語言不應解釋為指示任何未主張之要素對於實踐本發明而言必不可少。
本發明之實施例係描述於本文中,包括本發明人已知之進行本發明的最佳模式。在閱讀先前描述之後,彼等實施例之變化對於一般熟習此項技術者而言可變得顯而易見。本發明人期望熟練的技術人員適當地採用此等變化,且本發明人意欲以不同於本文中具體描述之其他方式來實踐本發明之實施例。因此,本發明之範疇包括如由可適用之法律准許的在隨附於此之申請專利範圍中敍述的標的之所有修改及等效內容。此外,除非本文中另有指示或明顯與上下所述相矛盾,否則本發明之範疇涵蓋以上描述之要素在其所有可能變化中之任何組合。
應注意,在描述所揭示實施例之上下所述中,除非另外指定,否則使用關於執行「指令」通常不獨立執行之操作(例如,傳輸資料、計算等)的可執行指令(亦被稱為程式碼、應用程式、代理程式等)之表達指示該等指令係由機器執行,藉此使機器執行指定操作。
應注意,上述所提及之實施例說明而非限制本發明,且熟習此項技術者將能夠設計許多替代實施例而不背離如由所附申請專利範圍界定的本發明之範疇。在申請專利範圍中,置放於圓括號中之任何參考符號不應解釋為限制申請專利範圍。詞語「包含」及類似者並不排除除任何技術方案或說明書中整體列出之彼等元件或步驟外的元件或步驟之存在。在本說明書中,「包含」意謂「包括或由……組成」。元件之單數參考並不排除此等元件之複數參考,反之亦然。本發明可藉助於包含若干相異元件之硬體且藉助於經合適程式化之電腦實施。在枚舉若干構件之裝置技術方案中,此等構件中之若干者可由硬體之同一項目體現。某些措施敍述於 相互不同的附屬技術方案中之純粹事實並不指示此等措施不能有利地組合使用。

Claims (15)

  1. 一種基於指令碼之區塊鏈互動之電腦實施方法,其包含:在一區塊鏈網路中之一節點處接收與一數位資產相關聯的一第一交易,該第一交易包括指定關於用以轉移對該數位資產之控制的一第二交易之一約束集合的一第一指令碼,該約束集合包括由該節點獲得的一資料集合所包括自與該區塊鏈網路相關聯之一區塊鏈獲得的資訊之一約束;獲得該第二交易,該第二交易包括一第二指令碼,該第二指令碼由於被執行而使得該節點獲得該資料集合;及藉由執行該第一指令碼及該第二指令碼來驗證該第二交易。
  2. 如申請專利範圍第1項所述之基於指令碼之區塊鏈互動之電腦實施方法,其中該約束集合包括該資料集合所包括該區塊鏈之一區塊的一區塊標頭之一約束。
  3. 如申請專利範圍第2項所述之基於指令碼之區塊鏈互動之電腦實施方法,其中該節點藉由至少進行以下操作來判定該資料集合包括該區塊鏈之該區塊的該區塊標頭之該約束是否得到滿足:證實該區塊標頭具有一預定大小;證實該區塊標頭包括大於或等於一難度值的一難度值;及證實該區塊標頭之一雜湊小於或等於自包括於該區塊標頭中的該難度值計算的一目標值。
  4. 如申請專利範圍第1項至第3項中任一項所述之基於指令碼之區塊鏈互動之電腦實施方法,其中該約束集合包括該資料集合所包括來自該區塊鏈之一區塊的一第三交易之一約束。
  5. 如申請專利範圍第4項所述之基於指令碼之區塊鏈互動之電腦實施方 法,其中:該資料集合包括該區塊鏈之該區塊的一區塊標頭;該約束集合包括該第三交易包括於該區塊中之一約束;且該節點至少部分地基於該區塊鏈之該區塊的該區塊標頭來判定該第三交易包括於該區塊中之該約束是否得到滿足。
  6. 如申請專利範圍第5項所述之基於指令碼之區塊鏈互動之電腦實施方法,其中該節點藉由至少進行以下操作來判定該第三交易所包括於該區塊中之該約束是否得到滿足:至少部分地基於藉由該區塊標頭識別之該區塊中的交易之一編碼來計算該第三交易之一雜湊值;及證實該第三交易之該雜湊值等於儲存於該區塊標頭中之一雜湊值。
  7. 如申請專利範圍第第1項至第6項中任一項所述之基於指令碼之區塊鏈互動之電腦實施方法,其中該約束集合包括該資料集合所包括一區塊標頭鏈之一約束,該區塊標頭鏈包括一有序區塊標頭集合,該有序區塊標頭集合包括複數個區塊標頭,該有序區塊標頭集合指定與該複數個區塊標頭相關聯之一次序。
  8. 如申請專利範圍第7項所述之基於指令碼之區塊鏈互動之電腦實施方法,其中該節點藉由至少進行以下操作來判定該第二指令碼包括該區塊標頭鏈之該約束是否得到滿足:至少部分地基於與該複數個區塊標頭相關聯之該次序而選擇一對區塊標頭,該對區塊標頭包含該對區塊標頭中之一第一區塊標頭及該對區塊標頭中之一第二區塊標頭;及證實對於該對區塊標頭,該對區塊標頭中之該第一區塊標頭的一雜湊等於儲存於該對區塊標頭中之該第二區塊標頭中的一雜湊值。
  9. 如申請專利範圍第1項至第8項中任一項所述之基於指令碼之區塊鏈互動之電腦實施方法,其中該約束集合包括該資料集合係自該區塊鏈網路的一公用區塊鏈獲得之一約束。
  10. 如申請專利範圍第1項至第9項中任一項所述之基於指令碼之區塊鏈互動之電腦實施方法,其中該區塊鏈網路之一或多個性質係在執行該第一指令碼及該第二指令碼之前提供至該節點。
  11. 如申請專利範圍第1項至第10項中任一項所述之基於指令碼之區塊鏈互動之電腦實施方法,其中驗證該第二交易成功地執行,而無需證實建立該第二交易之一實體能夠存取秘密資訊。
  12. 如申請專利範圍第1項至第11項中任一項所述之基於指令碼之區塊鏈互動之電腦實施方法,其中該第一指令碼為該第一交易之一鎖定指令碼,且該第二指令碼為用於該第一指令碼之一解除鎖定指令碼。
  13. 如申請專利範圍第1項至第12項中任一項所述之基於指令碼之區塊鏈互動之電腦實施方法,其進一步包含至少部分地基於該驗證之一結果而轉移該數位資產。
  14. 一種基於指令碼之區塊鏈互動之系統,其包含:一處理器;及包括可執行指令之記憶體,該等可執行指令由於藉由該處理器執行而使得該系統執行如申請專利範圍第1項至第13項中任一項所述之電腦實施方法。
  15. 一種非暫時性電腦可讀儲存媒體,其上儲存有可執行指令,該等可執行指令由於藉由一電腦系統之一處理器執行而使得該電腦系統至少執行如申請專利範圍第1項至第13項中任一項所述之基於指令碼之區塊鏈互動之電腦實施方法。
TW107117888A 2017-05-26 2018-05-25 基於指令碼之區塊鏈互動之電腦實施方法、系統、及非暫時性電腦可讀儲存媒體 TWI784002B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
??1708493.0 2017-05-26
GB1708491.4 2017-05-26
GBGB1708493.0A GB201708493D0 (en) 2017-05-26 2017-05-26 Computer-Implemented system and method
GBGB1708491.4A GB201708491D0 (en) 2017-05-26 2017-05-26 Computer-implemented system and method
GBGB1708488.0A GB201708488D0 (en) 2017-05-26 2017-05-26 Computer-implemented system and method
GB1708493.0 2017-05-26
??1708488.0 2017-05-26
??1708491.4 2017-05-26
GB1708488.0 2017-05-26

Publications (2)

Publication Number Publication Date
TW201901575A true TW201901575A (zh) 2019-01-01
TWI784002B TWI784002B (zh) 2022-11-21

Family

ID=62597818

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107117888A TWI784002B (zh) 2017-05-26 2018-05-25 基於指令碼之區塊鏈互動之電腦實施方法、系統、及非暫時性電腦可讀儲存媒體

Country Status (8)

Country Link
US (2) US20200151165A1 (zh)
EP (6) EP4191494A1 (zh)
JP (7) JP7262402B2 (zh)
KR (5) KR20240014591A (zh)
CN (3) CN111247547A (zh)
TW (1) TWI784002B (zh)
WO (3) WO2018215949A1 (zh)
ZA (1) ZA201907921B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI725728B (zh) * 2019-06-28 2021-04-21 開曼群島商創新先進技術有限公司 基於區塊鏈的分級儲存方法及裝置、電子設備
US11036720B2 (en) 2019-06-28 2021-06-15 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
US11042518B2 (en) 2019-06-28 2021-06-22 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
TWI788989B (zh) * 2021-09-01 2023-01-01 中華電信股份有限公司 一種基於區塊鏈的行動支付整合系統、方法及其電腦可讀媒介
TWI789971B (zh) * 2020-05-15 2023-01-11 華南商業銀行股份有限公司 交互判斷合法性的交易驗證系統及方法
US11792022B2 (en) 2020-02-21 2023-10-17 International Business Machines Corporation Resolution of conflicting data

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109345388B (zh) * 2018-09-20 2020-09-08 百度在线网络技术(北京)有限公司 区块链智能合约验证方法、装置及存储介质
JP2020127100A (ja) * 2019-02-03 2020-08-20 株式会社bitFlyer Blockchain 複数のノードを有する分散ネットワークに資産の移転を表すトランザクションを記憶する方法及びそのためのプログラム並びに当該分散ネットワークを構成するためのノード
EP3610450A4 (en) 2019-03-28 2020-06-10 Alibaba Group Holding Limited SYSTEM AND METHOD FOR PARALLEL PROCESSING OF BLOCK CHAIN TRANSACTIONS
US20200334677A1 (en) * 2019-04-16 2020-10-22 Nokia Solutions And Networks Oy Transparent blockchain sidechains to support blockchain processing heterogeneity
GB201907347D0 (en) * 2019-05-24 2019-07-10 Nchain Holdings Ltd In-script functions within a blockchain transaction
WO2020252753A1 (zh) * 2019-06-20 2020-12-24 深圳市网心科技有限公司 区块链节点设备及其认证方法、装置、存储介质
JP6651042B1 (ja) * 2019-08-28 2020-02-19 株式会社bitFlyer Blockchain 複数のノードを有する分散ネットワークに資産の移転を表すトランザクションを記憶する方法及びそのためのプログラム並びに当該分散ネットワークを構成するためのノード
GB201913143D0 (en) * 2019-09-12 2019-10-30 Nchain Holdings Ltd Running a program from a blockchain
GB201915443D0 (en) * 2019-10-24 2019-12-11 Nchain Holdings Ltd Data Structure for efficiently verifying data
US20210182840A1 (en) * 2019-12-17 2021-06-17 Paypal, Inc. Token processing to facilitate storage of transaction data in a blockchain
GB2592225A (en) * 2020-02-19 2021-08-25 Nchain Holdings Ltd Attestation service for use with a blockchain network
GB2594684A (en) 2020-02-19 2021-11-10 Nchain Holdings Ltd Layered network
EP3907644B1 (en) 2020-05-07 2022-10-05 Cambridge Cryptographic Ltd Blockchain
CN111737256A (zh) * 2020-06-12 2020-10-02 北京众享比特科技有限公司 一种基于可信执行环境和区块链的数据库表操作方法和系统
CN112215707B (zh) * 2020-09-21 2024-01-09 上海泼墨网络科技有限公司 一种基于区块链的定制化的资产交易智能合约的使用方法
GB2599735A (en) 2020-10-12 2022-04-13 Cambridge Cryptographic Ltd Blockchain
US20240013213A1 (en) 2020-12-02 2024-01-11 Stanislav TROCK Blockchain
GB2609194A (en) * 2021-07-19 2023-02-01 Nchain Licensing Ag Enforcing conditions on blockchain transactions
WO2023233013A1 (en) * 2022-06-02 2023-12-07 Nchain Licensing Ag Methods and systems for freezing digital assets
WO2024116092A1 (en) 2022-11-29 2024-06-06 Trock Stanislav Full-fledged smart contracts for utxo based blockchains

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912530B1 (en) * 2000-02-01 2005-06-28 Unisys Corporation Special device access to distributed data
US20120095911A1 (en) * 2009-06-16 2012-04-19 Smart Hub Pte. Ltd. Transaction system and method
FR3018378A1 (fr) * 2014-03-12 2015-09-11 Enrico Maim Systeme et procede transactionnels a architecture repartie fondees sur des transactions de transferts d'unites de compte entre adresses
US11270298B2 (en) * 2014-04-14 2022-03-08 21, Inc. Digital currency mining circuitry
US10230526B2 (en) * 2014-12-31 2019-03-12 William Manning Out-of-band validation of domain name system records
KR101660627B1 (ko) * 2015-02-03 2016-09-28 한양대학교 에리카산학협력단 암호화 화폐의 거래를 보호하는 방법 및 장치
JP6364132B2 (ja) * 2015-03-31 2018-07-25 ナスダック, インコーポレイテッドNasdaq, Inc. ブロックチェーン取引記録のシステムおよび方法
US20160342977A1 (en) * 2015-05-20 2016-11-24 Vennd.io Pty Ltd Device, method and system for virtual asset transactions
JP6636058B2 (ja) * 2015-07-02 2020-01-29 ナスダック, インコーポレイテッドNasdaq, Inc. 分散トランザクションデータベースにおける出所保証のシステムおよび方法
US10339523B2 (en) * 2015-07-14 2019-07-02 Fmr Llc Point-to-point transaction guidance apparatuses, methods and systems
US20170085545A1 (en) * 2015-07-14 2017-03-23 Fmr Llc Smart Rules and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
US20170046689A1 (en) * 2015-07-14 2017-02-16 Fmr Llc Crypto Voting and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
US11347876B2 (en) * 2015-07-31 2022-05-31 British Telecommunications Public Limited Company Access control
US20180331832A1 (en) * 2015-11-05 2018-11-15 Allen Pulsifer Cryptographic Transactions System
CN105279090B (zh) * 2015-11-17 2018-07-03 中国建设银行股份有限公司 应用于金融领域的测试脚本生成方法和装置
EP3424179B1 (en) * 2016-03-04 2022-02-16 Ping Identity Corporation Method and system for authenticated login using static or dynamic codes
US10095653B2 (en) * 2016-04-02 2018-10-09 Intel Corporation Apparatuses, systems, and methods for accurately measuring packet propagation delays through USB retimers
CN105956923B (zh) * 2016-04-20 2022-04-29 上海如鸽投资有限公司 资产交易系统以及资产的数字化认证和交易方法
KR101701131B1 (ko) * 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템
CN106130728B (zh) * 2016-04-29 2019-07-26 北京太一云科技有限公司 一种基于区块链的数字资产登记方法及其服务器
KR102050129B1 (ko) * 2016-05-03 2019-11-28 안규태 블록 검증을 위한 복수의 일방향 함수를 지원하는 블록 체인
CN106056373A (zh) * 2016-05-19 2016-10-26 北京太云科技有限公司 一种基于区块链的可分割的数字资产转账方法
CN106022741A (zh) * 2016-05-19 2016-10-12 北京太云科技有限公司 一种基于区块链的不可分割的数字资产转账方法
US10198325B2 (en) * 2016-05-24 2019-02-05 Mastercard International Incorporated Method and system for desynchronization recovery for permissioned blockchains using bloom filters
US10204341B2 (en) * 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
US10417188B2 (en) * 2016-05-27 2019-09-17 Mastercard International Incorporated Method and system for transferring trust across block chain segments
CN106445993A (zh) * 2016-07-11 2017-02-22 天津米游科技有限公司 一种基于区块链的数据指纹查询方法及装置
US10097344B2 (en) * 2016-07-15 2018-10-09 Mastercard International Incorporated Method and system for partitioned blockchains and enhanced privacy for permissioned blockchains
KR101727525B1 (ko) * 2016-09-05 2017-04-17 주식회사 스케일체인 블록체인 기반 분산 저장 방법 및 이를 이용한 장치
CN106385319B (zh) * 2016-09-29 2020-11-27 江苏通付盾科技有限公司 区块链网络中信息的验证方法及系统
US10719771B2 (en) * 2016-11-09 2020-07-21 Cognitive Scale, Inc. Method for cognitive information processing using a cognitive blockchain architecture
CN106504094B (zh) * 2016-11-25 2021-06-15 中国银行股份有限公司 基于区块链技术的分布式总账系统的交易撮合方法及系统
US10862959B2 (en) * 2016-11-28 2020-12-08 Keir Finlow-Bates Consensus system and method for adding data to a blockchain

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI725728B (zh) * 2019-06-28 2021-04-21 開曼群島商創新先進技術有限公司 基於區塊鏈的分級儲存方法及裝置、電子設備
US11036720B2 (en) 2019-06-28 2021-06-15 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
US11042518B2 (en) 2019-06-28 2021-06-22 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
US11386054B2 (en) 2019-06-28 2022-07-12 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
US11792022B2 (en) 2020-02-21 2023-10-17 International Business Machines Corporation Resolution of conflicting data
TWI789971B (zh) * 2020-05-15 2023-01-11 華南商業銀行股份有限公司 交互判斷合法性的交易驗證系統及方法
TWI788989B (zh) * 2021-09-01 2023-01-01 中華電信股份有限公司 一種基於區塊鏈的行動支付整合系統、方法及其電腦可讀媒介

Also Published As

Publication number Publication date
JP2023072051A (ja) 2023-05-23
KR102627000B1 (ko) 2024-01-19
CN111247546A (zh) 2020-06-05
EP3631719A1 (en) 2020-04-08
JP2023036794A (ja) 2023-03-14
WO2018215947A1 (en) 2018-11-29
EP4184404A1 (en) 2023-05-24
JP7247107B2 (ja) 2023-03-28
EP4191494A1 (en) 2023-06-07
JP2020522053A (ja) 2020-07-27
ZA201907921B (en) 2023-05-31
US20200151714A1 (en) 2020-05-14
CN111247547A (zh) 2020-06-05
KR20200013679A (ko) 2020-02-07
KR20240014591A (ko) 2024-02-01
TWI784002B (zh) 2022-11-21
JP2020522051A (ja) 2020-07-27
KR20200013680A (ko) 2020-02-07
KR20230170820A (ko) 2023-12-19
JP7262402B2 (ja) 2023-04-21
JP2023179743A (ja) 2023-12-19
WO2018215949A1 (en) 2018-11-29
JP7486630B2 (ja) 2024-05-17
EP4184405A1 (en) 2023-05-24
JP2023089101A (ja) 2023-06-27
JP7372434B2 (ja) 2023-10-31
KR102612793B1 (ko) 2023-12-13
US20200151713A1 (en) 2020-05-14
US20200151165A1 (en) 2020-05-14
EP3631720A1 (en) 2020-04-08
KR102627490B1 (ko) 2024-01-19
WO2018215951A1 (en) 2018-11-29
JP2020522049A (ja) 2020-07-27
CN110692071A (zh) 2020-01-14
EP3631721A1 (en) 2020-04-08
KR20200016238A (ko) 2020-02-14
JP7201622B2 (ja) 2023-01-10

Similar Documents

Publication Publication Date Title
TWI784002B (zh) 基於指令碼之區塊鏈互動之電腦實施方法、系統、及非暫時性電腦可讀儲存媒體
JP7289298B2 (ja) 低エントロピーパスワードを用いてブロックチェーントランザクションを許可するためのコンピュータ実装されたシステム及び方法
KR102580509B1 (ko) 복수의 스토리지 노드를 통해 대규모 블록체인의 안전한 저장을 가능하게 하는 컴퓨터 구현 시스템 및 방법
JP2023099091A (ja) セキュア・ダイナミック閾値署名スキームのための方法、記憶媒体及び電子デバイス
KR20210008516A (ko) 블록체인을 사용하여 원자 스왑을 수행하기 위한 컴퓨터-구현된 시스템 및 방법
US12033146B2 (en) Script based blockchain interaction