TW202308351A - 電腦實施方法及系統 - Google Patents
電腦實施方法及系統 Download PDFInfo
- Publication number
- TW202308351A TW202308351A TW111129189A TW111129189A TW202308351A TW 202308351 A TW202308351 A TW 202308351A TW 111129189 A TW111129189 A TW 111129189A TW 111129189 A TW111129189 A TW 111129189A TW 202308351 A TW202308351 A TW 202308351A
- Authority
- TW
- Taiwan
- Prior art keywords
- delegated authorization
- delegated
- chain
- tokens
- authorization token
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (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)」之程序創建,該程序涉及多個節點中之各者競爭以執行「工作量證明」,亦即,基於等待包括於區塊鏈之新區塊中的有序及經驗證之未決交易之所界定集合的表示來解決密碼編譯難題。應注意,可在節點處修剪區塊鏈,且可經由僅公佈區塊標頭來達成區塊之公佈。
區塊鏈中之交易用以執行以下各者中之一或多者:傳達數位資產(亦即,數個數位符記(token)),在虛擬化分類帳或登記表中排序日誌條目集合,接收及處理時戳條目,及/或按時間次序索引指標。亦可利用區塊鏈以便對區塊鏈之頂部上的額外功能性分層。區塊鏈協定可允許將額外使用者資料或資料之索引儲存於交易中。對於可儲存於單個交易內之最大資料容量不存在預先指定之限制,且因此可併入愈來愈複雜之資料。舉例而言,此可用以將電子文件或音訊或視訊資料儲存於區塊鏈中。
區塊鏈網路之節點(其常常被稱作「挖掘者」)執行將在下文詳細描述之分散式交易登記及校驗程序。概言之,在此程序期間,節點驗證交易且將其插入至區塊範本中,針對該區塊範本,其試圖識別有效的工作量證明解決方案。一旦找到有效解決方案,就將新區塊傳播至網路之其他節點,因此使得各節點能夠在區塊鏈上記錄新區塊。為了使交易經記錄於區塊鏈中,使用者(例如,區塊鏈用戶端應用程式)將交易發送至網路之節點中之一者以供傳播。接收交易之節點可競相找到將經驗證交易併入至新區塊中之工作量證明解決方案。各節點經組配以強制執行相同節點協定,其將包括使交易有效之一或多個條件。無效交易將不被傳播或併入至區塊中。假定交易經驗證且藉此經接受至區塊鏈上,則交易(包括任何使用者資料)將因此在區塊鏈網路中之節點中之各者處保持被登記及編索引為不可變的公用記錄。
成功地解決工作量證明難題以創建最新區塊之節點通常係以稱為「鑄幣交易」之新交易被獎勵,該新交易分配一定金額之數位資產,亦即數個符記。對無效交易之偵測及拒絕係藉由競爭節點的動作強制執行,該等競爭節點充當網路之代理並且經激勵以報告且阻止非法行為。資訊之廣泛公佈允許使用者連續地稽核節點之效能。對僅區塊標頭之公佈允許參與者確保區塊鏈之持續完整性。
在「基於輸出之」模型(有時被稱作基於UTXO之模型)中,給定交易之資料結構包含一或多個輸入及一或多個輸出。任何可支出輸出皆包含一元素,該元素指定可自進行中之交易序列導出的一定金額之數位資產。可支出輸出有時被稱作未支出交易輸出(「unspent transaction output;UTXO」)。該輸出可進一步包含鎖定指令碼,其指定用於未來兌換該輸出之條件。鎖定指令碼係定義驗證及轉移數位符記或資產所必需之條件的述語。交易(除鑄幣交易之外)之各輸入包含指向先前交易中之此輸出的指標(亦即,參考),且可進一步包含用於解除鎖定所指向輸出之鎖定指令碼的解除鎖定指令碼。因此,考慮一對交易,將其稱為第一交易及第二交易(或「目標」交易)。第一交易包含至少一個輸出,其指定一定金額之數位資產且包含界定解除鎖定該輸出之一或多個條件的鎖定指令碼。第二目標交易包含至少一個輸入,其包含指向第一交易之輸出的指標,及用於解除鎖定第一交易之輸出的解除鎖定指令碼。
在此模型中,當將第二目標交易發送至區塊鏈網路以在區塊鏈中傳播及記錄時,在各節點處應用之有效性準則中之一者將係解除鎖定指令碼符合第一交易之鎖定指令碼中所界定的所有一或多個條件。另一準則將為第一交易之輸出尚未由另一較早有效交易兌換。根據此等條件中之任一者發現目標交易無效的任何節點將不會傳播該目標交易(作為有效交易,但可能登記無效交易),亦不將該目標交易包括在新區塊中以記錄在區塊鏈中。
交易模型之替代類型係基於帳戶之模型。在此情況下,各交易並不藉由返回參考過去交易序列中之先前交易之UTXO來界定待轉移金額,而是參考絕對帳戶餘額。所有帳戶之當前狀態由與區塊鏈分離之節點儲存,且經不斷地更新。
當前研究之一個領域係使用區塊鏈用於實施「智慧型合約」。此等智慧型合約係經設計以使機器可讀合約或協議之條款之執行自動化的電腦程式。不同於將以自然語言撰寫之傳統合約,智慧型合約係包含可處理輸入以便產生結果之規則的機器可執行程式,該等規則可接著取決於彼等結果而使得執行動作。區塊鏈相關關注之另一領域係使用「符記」(或「彩色幣」)來表示真實世界實體及經由區塊鏈傳送真實世界實體。潛在敏感或秘密之項目可由符記表示,符記不具有可辨別之含義或值。符記因此充當允許自區塊鏈參考真實世界物件之識別符。
上文所提及之實例或情境儘管利用區塊鏈之優點以提供事件之永久性防篡改記錄;但要求用戶端、用戶端實體、運算裝置或與用戶端相關聯之終端機包括或實施軟體及/或硬體,或處理器/模組,諸如數位電子錢包,其用於實施用於管理數位資產、管理用於橢圓曲線數位簽章演算法(ECDSA)之密碼編譯金鑰的功能性,該等密碼編譯金鑰例如由比特幣中本聰願景(Bitcoin Satoshi's Vision;BSV)區塊鏈使用。另外,用戶端裝置亦需要能夠實施區塊鏈交易建構且能夠存取BSV庫。因此,用戶端不僅需要包括實施此功能性之處理,而且需要確保在此類程序可利用區塊鏈網路來發送、接收及檢視資料及/或數位資產之前針對此類程序實施適當的安全性措施,該等數位資產與智慧型合約或表示真實世界資產交易之符記相關。
發明概要
根據一第一態樣,提供一種電腦實施方法,其包含:獲得一預定值;接收一請求,該請求包含一經委派授權符記鏈之一第一經委派授權符記;產生該經委派授權符記鏈之另外經委派授權符記,其中該產生該經委派授權符記鏈中之各另外經委派授權符記係基於該經委派授權符記鏈中之一先前經委派授權符記,基於該經委派授權符記鏈中之該等經委派授權符記中之一者與該預定值的一比較而判定該第一經委派授權符記之一有效性。
根據一第二態樣,提供一種包含產生相關聯之一經委派授權符記鏈的電腦實施方法,其包含:獲得一第一值及一第二值;產生該經委派授權符記鏈之一第一經委派授權符記,該第一經委派授權符記係基於該第一值及該第二值;以及產生該經委派授權符記鏈之至少一個另外經委派授權符記,其中該產生該經委派授權符記鏈中之各另外經委派授權符記係基於該經委派授權符記鏈中之先前經委派授權符記以及該第一值。
根據一第三態樣,提供一種根據該第一態樣驗證該等符記之方法,且其中該第一經委派授權符記已由一用戶端根據該第二態樣產生。
根據第四態樣,提供一種方法,其包含以下步驟:接收根據該第二態樣之該方法產生之一經委派授權符記;產生包含該經委派授權符記之一請求;以及將該請求發送至一伺服器。
根據第五態樣,提供一種系統,其包含:一伺服器;一委派者;以及一用戶端,該用戶端經組配以:根據該第二態樣產生一經委派授權符記鏈及一第一值,將該第一值以及該經委派授權符記鏈中之一最終經委派授權符記傳輸至該伺服器,以及將該經委派授權符記鏈中之該等經委派授權符記中的一者傳輸至該委派者。
現在作為示出參考隨附圖式描述所揭露方法之一些特定組件及實施例,在該等圖式中,相似參考編號指代相似特徵。
較佳實施例之詳細說明
因此,期望實施安全、低複雜度、使用者友好、高效且穩固之技術,該等技術將允許無論運算上是否複雜,任何用戶端皆能夠以運算上及功能上較不繁重之簡單、快速、準確、可靠且安全的方式瞬時存取與區塊鏈相關聯之有用應用程式並與該等應用程式互動。更特定言之,期望允許用戶端審批通過之委派者亦以較佳安全、可靠及/或可撤銷的方式受益於此系統。
現在已設計出此改良之解決方案。本揭露內容藉由提出一或多種技術來解決以上技術問題,藉以可由已委派對與區塊鏈相關聯之寫入、讀取或其他動作之授權(及/或擁有用於與區塊鏈相關聯之寫入、讀取或其他動作之經委派授權符記)的使用者將資料簡單、安全及/或瞬時寫入至區塊鏈中或自區塊鏈獲得資料。方法、裝置及系統提供用於與區塊鏈相關聯之一或多個服務(且尤其是此等服務之委派)之應用程式設計介面(API),而此類用戶端無需實施用於使用該區塊鏈之任何處理或功能性,亦無需實施用於使用者管理之任何處理或功能性,同時仍能夠利用與該區塊鏈及其經委派授權相關聯之所有優點。
根據第一態樣,提供一種電腦實施方法,其包含:獲得預定值;接收請求,該請求包含經委派授權符記鏈之第一經委派授權符記;產生經委派授權符記鏈之另外經委派授權符記,其中產生經委派授權符記鏈中之各另外經委派授權符記係基於經委派授權符記鏈中之先前經委派授權符記;基於經委派授權符記鏈中之經委派授權符記中之一者與預定值的比較而判定第一經委派授權符記之有效性。
採取第一態樣之方法的一或多個裝置可被認為係驗證器,此係因為其驗證經委派授權符記。有利地,僅藉由提供至驗證器之預定值,驗證器仍可驗證任何所接收之經委派授權符記,因此提供了需要最小資料共用且因此需要較小攻擊表面的安全鑑認系統。較小攻擊表面意謂總體較高安全性系統。有利地,驗證器不需要知曉其正驗證之任何經委派使用者的數目或身分,藉此為用戶端及委派者提供較佳隱私。
任擇地,該產生係基於對經委派授權符記鏈中之先前經委派授權符記進行雜湊。
任擇地,產生經委派授權符記鏈之另外經委派授權符記之步驟包含針對各另外經委派授權符記,進行以下步驟:判定中間原像,該中間原像係基於經委派授權符記鏈中之先前經委派授權符記;以及將單向函數應用於該中間原像,至該單向函數之輸出係另外經委派授權符記。較佳地,單向函數係雜湊函數。較佳地,中間原像係額外基於給定值。
有利地,使用單向函數判定經委派授權符記意謂系統之任何構件無法自其當前的符記計算鏈上更高的任何經委派授權符記。
有利地,藉由使原像基於給定值(描述為下文之初始值),在無該給定值的情況下,系統之構件無法計算該鏈上更高的任何其他經委派授權符記。該給定值並不提供至除了運行第一實施例之方法之裝置之外的任何其他裝置,藉此增加了防篡改性及對惡意方攻擊之彈性。
任擇地,產生另外經委派授權符記係基於經委派授權符記鏈中之先前經委派授權符記以及給定值。
任擇地,該方法進一步包含自儲存器獲得給定值之步驟。任擇地,自用戶端接收該給定值。
任擇地,該產生係基於給定值與先前經委派授權符記之串連。較佳地,該產生係基於對給定值與經委派授權符記鏈中之先前經委派授權符記之串連進行雜湊。
有利地,單向函數與給定值之使用的組合不允許具有經委派授權符記之使用者計算經委派授權符記鏈中之任何其他經委派授權符記(藉此提供額外安全性),同時仍使得驗證服務能夠驗證經委派授權符記而無需發送所有有效符記。藉由消除用戶端或其他裝置將有效符記發送至運行根據此第一態樣之方法之驗證器的需求,第三方獲得任何有效符記的機會再次減少且總系統之安全性得以改良。
任擇地,該請求進一步包含索引編號,且經委派授權符記鏈中之經委派授權符記之數目係基於該索引編號。任擇地,該索引可表示距用戶端產生之最終經委派授權符記之距離。
在使用索引並將其提供給委派者以包括在其請求中的情況下,提供一種更高安全性系統,其需要對抗第三方知曉二個資訊片段:雜湊及索引。二者必須正確,以使服務處理請求。
替代地,不使用索引。在不使用索引或不將索引提供至委派者的情況下,有利地,用戶端並不知曉其在鏈中之位置,因此無法識別存在多少其他委派者,藉此增加了正經驗證之所有用戶端及使用者的隱私。
任擇地,判定第一經委派授權符記之有效性的步驟係基於經委派授權符記鏈中之最終經委派授權符記與預定值的比較。
任擇地,判定第一經委派授權符記之有效性的步驟包含:比較經委派授權符記鏈中之最終經委派授權符記與預定值具有相同的值。
任擇地,請求將向一/該區塊鏈提交或自一/該區塊鏈讀取。
任擇地,該請求係將資料提交至基於一區塊鏈之資料記錄服務,使得該請求中所包含之資料之表示經記錄在一/該區塊鏈上。額外地或替代地,該請求係自基於一/該區塊鏈之資料記錄服務讀取資料之表示。較佳地,讀取資料之請求包含對待讀取之資料之參考。較佳地,基於區塊鏈之資料記錄服務為如本文所描述之平台服務之部分。
有利地,基於區塊鏈之資料記錄服務提供了簡化區塊鏈作為商品資料分類帳之使用的方式。另外,經委派授權符記提供了對基於區塊鏈之資料記錄服務之增強的安全性。因此,基於區塊鏈之資料記錄服務的經委派使用者能夠與區塊鏈互動,且以安全方式利用區塊鏈特性(諸如,不可變性、分散式、選用透明度、可追蹤性等)用於其資料儲存需要,而未必需要與交易或區塊鏈自身直接互動。
任擇地,判定請求之有效性係進一步基於包含相同第一經委派授權符記的先前所接收請求之數目。
有利地,此使得用戶端能夠對系統進行較精細粒度控制且限制不良行為者發送垃圾郵件的能力。或若惡意第三方要獲得有效的經委派授權符記,則會限制可能造成的損害,藉此增加總系統之安全性。
較佳地,預定值係用戶端產生之經委派授權符記。較佳地,預定值為經委派授權符記之用戶端產生之鏈中的最後經委派授權符記。較佳地,預定值在接收時經儲存於經儲存之經委派授權符記鏈中。
任擇地,該方法進一步包含基於第一經委派授權符記之有效性儲存經委派授權符記鏈的步驟。較佳地,該方法進一步包含以下步驟:接收包含一另外經委派授權符記之一另外請求;基於該另外經委派授權符記是否存在於經儲存之經委派授權符記鏈中而判定該另外經委派授權符記之有效性。
中間雜湊結果被記錄,從而有利地減少後續校驗之處理時間。若接收到具有比已經接收之符記低的索引(亦即,更接近最終經委派授權符記或H
0)的符記,則無需進行雜湊且節省了電腦處理時間及功率。
任擇地,預定值為經儲存之經委派授權符記鏈之具有最高索引的經委派授權符記。任擇地,進行產生另外經委派授權符記之步驟,直至產生預定值。
任擇地,該方法進一步包含:判定經儲存之經委派授權符記鏈之最高索引;基於所接收之經委派授權符記產生另外經委派授權符記,直至產生具有等於最高索引之索引的經委派授權符記;基於最終產生之經委派授權符記與具有最高索引的經儲存之經委派授權符記的比較而判定所接收經委派授權符記之有效性。
任擇地,各經委派授權符記具有與其相關聯之索引,其中該索引可表示距最終經委派授權符記之距離,各經委派授權符記藉由其關聯索引被儲存且較佳可藉由該索引搜尋。藉由藉由索引儲存各經委派授權符記,有利地,搜尋任何符記之存在變得時間及電腦資源更高效,此係因為藉由索引之搜尋及/或在索引下之搜尋與經由資料集進行反覆且比較各值相比更快且運算資源較不密集。
任擇地,該方法進一步包含提供請求有效性之指示及/或基於經委派授權符記之有效性處理請求的步驟。較佳地,處理意謂以下各者中之任一或多者:轉遞請求、丟棄請求、允許請求、阻斷請求、允許對基於區塊鏈之儲存系統的存取、允許對基於區塊鏈之儲存系統的讀取存取、允許對基於區塊鏈之儲存系統的寫入存取、基於請求而自基於區塊鏈之儲存系統提供資料,及/或基於請求而將資料寫入至基於區塊鏈之儲存系統。
根據一第二態樣,提供一種包含產生相關聯之一經委派授權符記鏈的電腦實施方法,其包含:獲得第一值及第二值;產生經委派授權符記鏈之第一經委派授權符記,該第一經委派授權符記係基於第一值及第二值;及產生經委派授權符記鏈之至少一個另外經委派授權符記,其中產生經委派授權符記鏈中之各另外經委派授權符記係基於該經委派授權符記鏈中之先前經委派授權符記以及第一值。
採取根據第二態樣之方法的一或多個裝置通常將為用戶端,其中用戶端將其之存取委派至委派者或經委派使用者。
任擇地,產生經委派授權符記鏈之另外經委派授權符記之步驟包含針對各另外經委派授權符記,進行以下步驟:判定中間原像,該中間原像係基於經委派授權符記鏈中之先前經委派授權符記以及第一值;以及將單向函數應用於中間原像,至該單向函數之輸出係該另外經委派授權符記。較佳地,單向函數係雜湊函數。較佳地,中間原像係額外基於給定值。
此方法提供與關於第一態樣所論述相同或類似的關於安全性之優點及更多優點。
較佳地,該產生係基於對給定值與經委派授權符記鏈中之先前經委派授權符記之串連進行雜湊。
任擇地,該方法進一步包含將經委派授權符記鏈之經委派授權符記中之一者提供至委派裝置的步驟。較佳地,該委派裝置進一步提供經委派授權符記之索引,該索引表示所提供之經委派授權符記在經委派授權符記鏈中之位置。
任擇地,該方法進一步包含將第一值以及委派授權符記鏈之最終經委派授權符記提供至校驗裝置的步驟。較佳地,校驗裝置進一步提供指示每委派讀取或寫入之最大數目的數目。
任擇地,經委派授權符記鏈中之經委派授權符記之數目係基於委派者之數目。較佳地,經委派授權符記條中之經委派授權符記之數目等於委派者之數目。
如上文關於第一態樣所闡述,任擇地,將經委派授權符記提供至委派者,使得委派者可互動(較佳地藉助於將資料寫入至基於區塊鏈之資料記錄服務或自基於區塊鏈之資料記錄服務讀取資料)。
因此,相同或類似優點藉此適用,上文經委派授權符記在存取基於區塊鏈之資料記錄服務時提供增強之安全性。因此,基於區塊鏈之資料記錄服務的經委派使用者能夠與區塊鏈互動,且以安全方式利用區塊鏈特性(諸如,不可變性、分散式、選用透明度、可追蹤性等)用於其資料儲存需要,而未必需要與交易或區塊鏈自身直接互動。
任擇地,在產生第一經委派授權符記之後刪除第二值。
有利地,藉由刪除第二值,無人能夠建構第一經委派授權符記且因此不能建構整個鏈,藉此藉由移除惡意第三方重新產生符記之任何機會來提供改良之安全性。
任擇地,隨機地產生第一值及第二值。
較佳地,第一或第二態樣之先前經委派授權符記係指緊接在正產生之經委派授權符記之前的經委派授權符記。此亦可為所產生或獲得之最新經委派授權符記。
根據第三態樣,提供一種根據第一態樣驗證符記之方法,且其中第一經委派授權符記已由用戶端根據第二態樣產生。
根據第四態樣,提供一種方法,其包含以下步驟:接收根據第二態樣之方法產生之經委派授權符記;產生包含該經委派授權符記之請求;及將該請求發送至伺服器。
根據第五態樣,提供一種系統,其包含:伺服器;委派者;以及用戶端,該用戶端經組配以:根據第二態樣產生經委派授權符記鏈及第一值,將該第一值以及經委派授權符記鏈中之最終經委派授權符記傳輸至該伺服器,以及將該經委派授權符記鏈中之該等經委派授權符記中的一者傳輸至該委派者。
任擇地,伺服器經組配以根據第一態樣之方法接收並處理來自委派者之請求。
根據先前態樣中之任一或多者,任擇地,請求係經由或使用來自用戶端及/或經委派使用者之HTTPS協定接收。額外地或替代地,請求之接收器將API實施為網路服務。任擇地,經委派授權符記經組配以提供對事件串流及/或資料寫入器服務之經委派存取。有利地,HTTPS及/或API及/或網路服務之使用提供互補安全性特徵,同時仍使得網路請求之接收器能夠提供靈活的基於區塊鏈之資料服務。提供對基於區塊鏈之資料寫入器或讀取器之經委派存取的另外優點包括允許(以安全方式)超出僅第一用戶端之更大數目個使用者能夠存取基於區塊鏈之資料寫入器或讀取器服務。
實例系統綜述
圖1展示用於實施區塊鏈150之實例系統100。該系統100可包含封包交換網路101,通常為諸如網際網路之廣域網際網路。封包交換網路101包含多個區塊鏈節點104,該等區塊鏈節點可經配置以在封包交換網路101內形成同級間(P2P)網路106。雖然未示出,但區塊鏈節點104可經配置為接近完整的圖。各區塊鏈節點104因此高度連接至其他區塊鏈節點104。
各區塊鏈節點104包含同級者之電腦裝備,其中節點104中之不同節點屬於不同同級者。各區塊鏈節點104包含:處理設備,其包含一或多個處理器,例如一或多個中央處理單元(CPU)、加速器處理器、特殊應用處理器及/或場可規劃閘陣列(FPGA);以及其他裝備,諸如特殊應用積體電路(ASIC)。各節點亦包含記憶體,亦即,呈一或多個非暫時性電腦可讀媒體之形式的電腦可讀儲存器。記憶體可包含一或多個記憶體單元,該一或多個記憶體單元使用一或多個記憶體媒體,例如,諸如硬碟之磁性媒體;諸如固態硬碟(SSD)、快閃記憶體或EEPROM之電子媒體;及/或諸如光碟驅動機之光學媒體。
區塊鏈150包含資料區塊鏈151,其中在分散式或區塊鏈網路160中之多個區塊鏈節點104中之各者處維持區塊鏈150之各別複本。如上文所提及,維持區塊鏈150之複本未必意謂完整地儲存區塊鏈150。實情為,只要各區塊鏈節點150儲存各區塊151之(下文論述的)區塊標頭,即可修剪區塊鏈150之資料。鏈中之各區塊151包含一或多個交易152,其中在此上下文中之交易係指一種資料結構。資料結構之性質將取決於用作交易模型或方案之部分的交易協定之類型。給定區塊鏈將始終使用一個特定交易協定。在一種常見類型之交易協定中,各交易152之資料結構包含至少一個輸入及至少一個輸出。各輸出指定表示如財產之數位資產之數量的金額,其實例為使用者103,該輸出以密碼編譯方式鎖定至該使用者(需要彼使用者之簽名或其他解決方案以便解除鎖定且藉此兌換或支出)。各輸入均指回至先前交易152之輸出,藉此鏈接交易。
各區塊151亦包含區塊指標155,該區塊指標指回至該鏈中之先前創建的區塊151以便界定區塊151之依序次序。各交易152 (除鑄幣交易之外)包含指回至先前交易之指標,以便界定交易序列之次序(注意:允許交易152之序列進行分支)。區塊151之鏈一直返回至起源區塊(Gb) 153,該起源區塊係該鏈中之第一區塊。鏈150中較早之一或多個原始交易152指向起源區塊153,而非先前交易。
區塊鏈節點104中之各者經組配以將交易152轉遞至其他區塊鏈節點104,且藉此使得交易152在整個網路106中傳播。各區塊鏈節點104經組配以創建區塊151,且將同一區塊鏈150之各別複本儲存在其各別記憶體中。各區塊鏈節點104亦維持等待併入至區塊151中之交易152的有序集合154。有序集合154常常被稱作「記憶體池」。本文中之此術語不意欲限於任何特定區塊鏈、協定或模型。該術語係指交易之有序集合,節點104將交易之有序集合接受為有效的且用於交易之有序集合的節點104不必接受試圖支出相同輸出之任何其他交易。
在給定之目前交易152j中,該(或各)輸入包含參考交易序列中之先前交易152i之輸出之指標,指定此輸出將在目前交易152j中經兌換或「支出」。一般而言,先前交易可為有序集合154或任何區塊151中之任何交易。當目前交易152j經創建或甚至發送至網路106時無需必定存在先前交易152i,但先前交易152i將需要存在且被驗證以便使目前交易有效。因此,本文中之「先前」係指藉由指標鏈接之邏輯序列中的前置者,未必為時間序列中之創建或發送之時間,且因此,其未必排除無序地創建或發送交易152i、152j (參見下文關於孤立交易之論述)。先前交易152i同樣可被稱為前期或前置交易。
目前交易152j之輸入亦包含輸入授權,例如先前交易152i之輸出鎖定至之使用者103a的簽名。繼而,目前交易152j之輸出可以密碼編譯方式鎖定至新使用者或實體103b。目前交易152j可因此將先前交易152i之輸入中所界定之金額轉移至如目前交易152j之輸出中界定的新使用者或實體103b。在一些情況下,交易152可具有多個輸出以在多個使用者或實體(其中之一者可為原始使用者或實體103a以便產生變化)之間劃分輸入金額。在一些情況下,交易亦可具有多個輸入以將來自一或多個先前交易之多個輸出的金額聚集在一起,且重新分配至當前交易之一或多個輸出。
根據基於輸出之交易協定,諸如比特幣,當諸如使用者或機器之實體103希望實行新交易152j時,實體接著將新交易自其電腦終端102發送至接收者。該實體或接收者將最終將此交易發送至網路106之區塊鏈節點104中之一或多者(該等區塊鏈節點如今通常為伺服器或資料中心,但原則上可為其他使用者終端)。亦不排除實行新交易152j之實體103可將交易發送至區塊鏈節點104中之一或多者,且在一些實例中不發送至接收者。接收交易之區塊鏈節點104根據應用於區塊鏈節點104中之各者處之區塊鏈節點協定來檢查該交易是否為有效的。區塊鏈節點協定通常需要區塊鏈節點104檢查新交易152j中之密碼編譯簽名是否與預期簽名匹配,此取決於交易152之有序序列中之先前交易152i。在此基於輸出之交易協定中,此檢查可包含檢查新交易152j之輸入中所包括的實體103之密碼編譯簽名或其他授權是否與新交易指派之先前交易152i之輸出中所界定的條件匹配,其中此條件通常包含至少檢查新交易152j之輸入中之密碼編譯簽名或其他授權是否解除鎖定新交易之輸入鏈接至的先前交易152i之輸出。該條件可至少部分地由包括於先前交易152i之輸出中的指令碼界定。替代地,其可簡單地由區塊鏈節點協定單獨確定,或其可由此等之組合確定。無論如何,若新交易152j有效,則區塊鏈節點104將其轉遞至區塊鏈網路106中之一或多個其他區塊鏈節點104。此等其他區塊鏈節點104根據相同區塊鏈節點協定應用相同測試,且因此將新交易152j轉遞至一或多個其他節點104上,等等。以此方式,新交易在區塊鏈節點104之整個網路中傳播。
在基於輸出之模型中,是否指派給定輸出(例如,UTXO)之定義係其根據區塊鏈節點協定是否已由另一後續交易152j之輸入有效地兌換。用於交易係有效的另一條件為該交易試圖指派或兌換之先前交易152i之輸出尚未由另一交易指派/兌換。另外,若並非有效,則將不在區塊鏈150中傳播或記錄交易152j (除非該交易經標記為無效的,且經傳播以用於警示)。此防止雙重支出,藉此交易者嘗試多於一次地指派同一交易之輸出。另一方面,基於帳戶之模型藉由維持帳戶餘額來防止雙重支出。因為同樣存在所界定之交易次序,所以帳戶餘額在任何時間皆具有單一所界定狀態。
除了驗證交易以外,區塊鏈節點104亦競相率先在通常被稱作挖掘之程序中創建交易區塊,該程序係由「工作量證明」支援。在區塊鏈節點104處,新交易經添加至有效交易之有序集合154,該等有效交易尚未出現在經記錄在區塊鏈150上之區塊151中。區塊鏈節點接著競相藉由試圖解決密碼編譯難題而自交易之有序集合154組合交易152之新有效區塊151。通常,此包含搜尋「隨機數」值,使得當隨機數與交易之有序集合154之表示串連且經雜湊時,雜湊之輸出接著符合預定條件。例如,預定條件可為雜湊之輸出具有某預定數目個前置零。應注意,此僅為一種特定類型之工作量證明難題,且不排除其他類型。雜湊函數之屬性為其輸出相對於其輸入為不可預測的。因此,此搜尋可僅藉由蠻力執行,因此在正嘗試解決難題之各區塊鏈節點104處消耗了大量的處理資源。
解決難題之第一區塊鏈節點104將此宣佈給網路106,從而提供該解決方案作為證明,其接著可由網路中之其他區塊鏈節點104容易地檢查(一旦給定雜湊之解決方案,即直接檢查其是否使得雜湊之輸出符合該條件)。第一區塊鏈節點104將區塊傳播至接受該區塊且因此強制執行協定規則的其他節點之臨限共識。交易之有序集合154接著藉由區塊鏈節點104中之各者而記錄為區塊鏈150中之新區塊151。區塊指標155亦經指派至指回至鏈中先前創建之區塊151n-1之新區塊151n。創建工作量證明解決方案所需之例如呈雜湊形式的大量工作傳信第一節點104之意圖以遵循區塊鏈協定之規則。此類規則包括在交易將相同輸出指派為先前驗證之交易的情況下,不接受該交易為有效的,除非該交易被稱為雙重支出。一旦創建,則區塊151無法經修改,此係由於其在區塊鏈網路106中之區塊鏈節點104中之各者處經辨識及維持。區塊指標155亦向區塊151強加依序次序。由於交易152經記錄於網路106中之各區塊鏈節點104處的有序區塊中,因此,此提供交易之不可變公用分類賬。
應注意,在任何給定時間競相解決難題之不同區塊鏈節點104可基於在任何給定時間尚待公佈之交易之有序集合154的不同快照而如此操作,此取決於該等節點何時開始搜尋解決方案或接收該等交易之次序。不論誰首先解決其各別難題均界定哪些交易152且以何種次序包括於下一新區塊151n中,且更新未公佈交易之當前集合154。區塊鏈節點104接著繼續競相自未公佈交易之最新界定之未完成的有序集合154創建區塊,等等。亦存在用於解決可能出現之任何「分叉」之協定,該分叉係二個區塊鏈節點104在彼此極短時間內解決其難題以使得區塊鏈的衝突視圖在節點104之間傳播之處。簡言之,無論分叉之哪個支叉生長得最長,皆成為決定性區塊鏈150。應注意,此不應影響網路之使用者或代理,此係因為相同交易將出現在二個分叉中。
根據比特幣區塊鏈(及大部分其他區塊鏈),成功地建構新區塊之節點104經授予在新特殊種類之交易中指派所接受金額之數位資產的能力,該新特定種類之交易分配所界定數量之數位資產(相對於代理間或使用者間交易,其將一定金額之數位資產自一個代理或使用者轉移至另一代理或使用者)。此特殊類型之交易通常被稱作「鑄幣交易」,但亦可被稱為「起始交易」。其通常形成新區塊151n之第一交易。工作量證明傳信建構新區塊之節點遵循協定規則,從而允許稍後兌換此特殊交易的意圖。在可兌換此特殊交易之前,區塊鏈協定規則可能需要成熟期,例如100個區塊。常常,常規(非產生)交易152亦將在其輸出中之一者中指定額外交易費用,以進一步獎勵創建了公佈彼交易之區塊151n的區塊鏈節點104。此費用通常被稱作「交易費用」,且在下文論述。
歸因於交易驗證及公佈中涉及之資源,通常,區塊鏈節點104中之至少各者採用伺服器之形式,該伺服器包含一或多個實體伺服器單元或甚至整個資料中心。然而,原則上,任何給定區塊鏈節點104可採用使用者終端機或經網路連接在一起之使用者終端機之群組的形式。
各區塊鏈節點104之記憶體儲存軟體,該軟體經組配以在區塊鏈節點104之處理設備上運行以便執行其各別一或多個角色且根據區塊鏈節點協定處置交易152。應理解,本文中歸因於區塊鏈節點104之任何動作可由在各別電腦裝備之處理設備上運行的軟體執行。節點軟體可實施於應用程式層或諸如作業系統層或協定層之下部層或應用程式層及下部層之任何組合處的一或多個應用程式中。
充當消費使用者之角色的多方103中之各者的電腦裝備102亦連接至網路101。此等使用者可與區塊鏈網路互動,但不參與驗證、建構或傳播交易及區塊。此等使用者或代理103中之一些可在交易中充當發送者及接收者。其他使用者可與區塊鏈150互動,而未必充當發送者或接收者。舉例而言,一些當事方可充當儲存區塊鏈150之複本的儲存實體(例如,已自區塊鏈節點104獲得區塊鏈之複本)。
各方103中之一些或全部可作為不同網路,例如重疊於區塊鏈網路106之頂部上之網路的部分而連接。區塊鏈網路(常常被稱作「用戶端」)之使用者可被稱為包括區塊鏈網路之系統的部分;然而,此等使用者並非區塊鏈節點104,此係因為其不執行區塊鏈節點所需之角色。實情為,各方103可與區塊鏈網路106互動,且藉此,藉由連接至區塊鏈節點106 (亦即,與區塊鏈節點106通訊)來利用區塊鏈150。出於例示性目的展示二個當事方103及其各別裝備102:第一當事方103a及其各別電腦裝備102a,以及第二當事方103b及其各別電腦裝備102b。應理解,更多此類當事方103及其各別電腦裝備102可存在且參與系統100中,但為方便起見不對其加以示出。各當事方103可為個人或組織。僅僅作為示出,第一當事方103a在本文中被稱作愛麗絲(Alice),且第二當事方103b被稱作鮑勃(Bob),但將瞭解,此不具限制性,且在本文中對愛麗絲或鮑勃之任何參考可分別用「第一當事方」及「第二當事方」替換。
各當事方103之電腦裝備102包含各別處理設備,該處理設備包含一或多個處理器,例如一或多個CPU、GPU、其他加速器處理器、特殊應用處理器及/或FPGA。各當事方103之電腦裝備102進一步包含記憶體,亦即呈一或多個非暫時性電腦可讀媒體之形式的電腦可讀儲存器。此記憶體可包含一或多個記憶體單元,該一或多個記憶體單元使用一或多個記憶體媒體,例如,諸如硬碟之磁性媒體;諸如SSD、快閃記憶體或EEPROM之電子媒體;及/或諸如光碟機之光學媒體。各當事方103之電腦裝備102上之記憶體儲存軟體,該軟體包含經配置以在處理設備上運行之至少一個用戶端應用程式105的各別例項。應理解,本文中歸於給定當事方103之任何動作可使用在各別電腦裝備102之處理設備上運行的軟體來執行。各當事方103之電腦裝備102包含至少一個使用者終端機,例如桌上型或膝上型電腦、平板電腦、智慧型手機或諸如智慧型手錶之可穿戴式裝置。給定當事方103之電腦裝備102亦可包含一或多個其他經網路連接之資源,諸如經由使用者終端機存取之雲端運算資源。
用戶端應用程式105最初可在合適的一或多個電腦可讀儲存媒體上經提供至任何給定當事方103之電腦裝備102,例如自伺服器下載,或經提供於抽取式儲存裝置上,該抽取式儲存裝置諸如抽取式SSD、快閃記憶體鍵、抽取式EEPROM、抽取式磁碟機、磁性軟碟或磁帶、諸如CD或DVD ROM之光碟或抽取式光碟機等。
用戶端應用程式105包含至少一「電子錢包」功能。此具有二個主要功能性。此等功能性中之一者為使得各別當事方103能夠創建、授權(例如,簽名)及發送交易152至一或多個比特幣節點104以接著在區塊鏈節點104之整個網路中傳播且藉此包括於區塊鏈150中。另一功能性為將其當前擁有之數位資產的金額報告給各別當事方。在基於輸出之系統中,此第二功能性包含核對散佈在整個區塊鏈150中之各種交易152的輸出中所界定之金額,該等金額屬於所討論的當事方。
應注意:雖然各種用戶端功能性可經描述為整合至給定用戶端應用程式105中,但此未必為限制性的,且實情為,本文中所描述之任何用戶端功能性可替代地實施於一套二個或多於二個不同應用程式中,該等應用程式例如經由API介接,或一個應用程式為另一應用程式之外掛程式。更一般而言,用戶端功能性可實施於應用程式層或諸如作業系統之下部層或應用程式層及下部層之任何組合處。下文將關於用戶端應用程式105進行描述,但應瞭解,此並非限制性的。
各電腦裝備102上之用戶端應用程式或軟體105的例項可操作地耦合至網路106之區塊鏈節點104中之至少一者。此使得用戶端105之電子錢包功能能夠將交易152發送至網路106。用戶端105亦能夠接觸區塊鏈節點104以便針對各別當事方103為接收者之任何交易查詢區塊鏈150 (或實際上檢測區塊鏈150中之其他當事方之交易,此係由於在實施例中,區塊鏈150為公用設施,其部分地經由其公用可見性而在交易中提供信任)。各電腦裝備102上之電子錢包功能經組配以根據交易協定來制定及發送交易152。如上文所闡述,各區塊鏈節點104運行軟體,該軟體經組配以根據區塊鏈節點協定來驗證交易152,且轉遞交易152以便在整個區塊鏈網路106中傳播該等交易。交易協定及節點協定彼此對應,且給定交易協定與給定節點協定相配,一起實施給定交易模型。同一交易協定用於區塊鏈150中之所有交易152。同一節點協定係由網路106中之所有節點104使用。
當給定當事方103,比如愛麗絲,希望發送待包括於區塊鏈150中之新交易152j時,其接著根據相關交易協定來制定新交易(使用其用戶端應用程式105中之電子錢包功能)。其接著將交易152自用戶端應用程式105發送至其所連接至之一或多個區塊鏈節點104。例如,此可為最佳地連接至愛麗絲之電腦102的區塊鏈節點104。當任何給定區塊鏈節點104接收新交易152j時,該區塊鏈節點根據區塊鏈節點協定及其各別角色來處置該新交易。此包含首先檢查最新接收的交易152j是否符合為「有效的」某一條件,該條件之實例將稍後更詳細地加以論述。在一些交易協定中,可藉由交易152中所包括之指令碼在各交易的基礎上組配驗證條件。替代地,該條件可簡單地為節點協定之內建式特徵,或可由指令碼及節點協定之組合來定義。
只要最新接收之交易152j通過被視為有效的測試(亦即,只要其「經驗證」),接收該交易152j之任何區塊鏈節點104就將會將新的經驗證交易152添加至在彼區塊鏈節點104處維持的交易之有序集合154。另外,接收交易152j之任何區塊鏈節點104將會將經驗證交易152向前傳播至網路106中之一或多個其他區塊鏈節點104。由於各區塊鏈節點104應用相同協定,因此接著假定交易152j係有效的,此意謂該交易將很快在整個網路106中經傳播。
一旦被納入在給定區塊鏈節點104處維持之交易之有序集合154,則彼區塊鏈節點104將開始競爭以解決關於包括新交易152之其各別交易之有序集合154之最新版本的工作量證明難題(前已述及,其他區塊鏈節點104可嘗試基於交易之不同有序集合154解決難題,但率先解決難題者將界定包括於最新區塊151中之交易之有序集合。最終,區塊鏈節點104將解決包括愛麗絲之交易152j的有序集合154之一部分的難題)。一旦針對包括新交易152j之有序集合154進行工作量證明,則其不可變地變為區塊鏈150中之區塊151中之一者的部分。各交易152包含指回至較早交易之指標,因此亦不可變地記錄交易之次序。
不同區塊鏈節點104可首先接收給定交易之不同例項,且因此在一個例項在新區塊151中公佈之前對於哪個例項「有效」具有衝突的觀點,此時,所有區塊鏈節點104同意所公佈例項為唯一有效例項。若區塊鏈節點104將一個例項接受為有效的且接著發現第二例項已經記錄於區塊鏈150中,則彼區塊鏈節點104必須接受此第二例項且將丟棄其最初接受之例項(亦即,尚未在區塊151中公佈之例項) (亦即,將其最初接受之例項視為無效的)。
作為基於帳戶之交易模型之部分,由一些區塊鏈網路操作之交易協定之替代類型可被稱作「基於帳戶之」協定。在基於帳戶之情況下,各交易並不藉由返回參考過去交易序列中之先前交易的UTXO來界定待轉移金額,而是參考絕對帳戶餘額。所有帳戶之當前狀態由與區塊鏈分離的彼網路之節點儲存且經不斷更新。在此系統中,使用賬戶之運行交易計數(亦被稱為「位置」)來對交易進行排序。此值由發送者簽名,作為其密碼編譯簽名之部分,且作為交易參考計算之部分而經雜湊。另外,選用之資料欄位亦可對交易進行簽名。例如,若先前交易ID包括於資料欄位中,則此資料欄位可指回至先前交易。
基於UTXO 之模型
圖2示出實例交易協定。此為基於UTXO之協定之實例。交易152 (簡稱為「Tx」)為區塊鏈150之基本資料結構(各區塊151包含一或多個交易152)。下文將參考基於輸出或基於「UTXO」之協定來描述。然而,此並不限於所有可能的實施例。應注意,雖然參考比特幣描述實例基於UTXO之協定,但其可同樣地實施於其他實例區塊鏈網路上。
在基於UTXO之模型中,各交易(「Tx」) 152包含資料結構,該資料結構包含一或多個輸入202及一或多個輸出203。各輸出203可包含未支出交易輸出(UTXO),其可用作另一新交易之輸入202的源(若該UTXO尚未被兌換)。UTXO包括指定數位資產之金額的值。此表示分散式分類帳上之符記的設定數目。UTXO亦可含有其所來自的交易之交易ID,以及其他資訊。交易資料結構亦可包含標頭201,該標頭可包含(多個)輸入欄位202及(多個)輸出欄位203之大小之指示符。標頭201亦可包括交易之ID。在實施例中,交易ID為交易資料之雜湊(不包括交易ID本身),且儲存於經提交至節點104之原始交易152的標頭201中。
假設愛麗絲103a希望創建將所討論之一定金額之數位資產轉移至鮑勃103b的交易152j。在圖2中,愛麗絲之新交易152j經標記為「
Tx
1 」。該交易獲取在序列中之先前交易152i之輸出203中鎖定至愛麗絲的一定金額之數位資產且將此數位資產中之至少一些轉移至鮑勃。在圖2中,先前交易152i經標記為「
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的情況下係有效的。若
Tx
1 試圖支出已經由另一交易152支出之輸出,則
Tx
1 將為無效的,即使符合所有其他條件亦如此。因此,區塊鏈節點104亦需要檢查是否已經支出先前交易
Tx
0 中之所參考之UTXO (亦即,其是否已經形成至另一有效交易之有效輸入)。此為區塊鏈150將所界定次序強加於交易152上很重要的一個原因。實務上,給定區塊鏈節點104可維持單獨的資料庫,其標記在哪些交易152中支出了哪些UTXO 203,但最終什麼定義了是否已支出UTXO在於其是否已形成至區塊鏈150中之另一有效交易之有效輸入。
若給定交易152之所有輸出203中所指定的總金額大於由所有其輸入202所指向之總金額,則此為大多數交易模型中無效性之另一基礎。因此,此類交易將不被傳播,亦不包括於區塊151中。
應注意,在基於UTXO之交易模型中,需要將給定UTXO作為整體支出。其無法「留下」UTXO中界定為支出之一小部分金額,同時支出另一小部分。然而,來自UTXO之金額可在下一交易之多個輸出之間劃分。例如,
Tx
0 中之
UTXO
0 中所定義的金額可在
Tx
1 中之多個UTXO之間劃分。因此,若愛麗絲不想將
UTXO
0 中所定義之所有金額皆給予鮑勃,則其可使用剩餘金額在
Tx
1 之第二輸出中給自身找零,或付款給另一當事方。
實務上,愛麗絲亦將通常需要包括用於公佈其交易之比特幣節點104的費用。若愛麗絲不包括此費用,則區塊鏈節點104可拒絕
Tx
0 ,且因此儘管技術上有效,但
Tx
0 可能不會被傳播且包括於區塊鏈150中(若區塊鏈節點104不想接受交易152,則節點協定不會強迫區塊鏈節點接受交易)。在一些協定中,交易費用不需要其自身單獨之輸出203 (亦即,不需要單獨之UTXO)。實情為,由給定交易152之輸入202所指向的總金額與給定交易之輸出203中所指定的總金額之間的任何差額被自動地給予公佈該交易之區塊鏈節點104。例如,比如,至
UTXO
0 之指標為至
Tx
1 之唯一輸入,且
Tx
1 僅具有一個輸出
UTXO
1 。若
UTXO
0 中所指定之數位資產之金額大於
UTXO
1 中所指定之金額,則該差額可由公佈含有
UTXO
1 之區塊的節點104指派。然而,替代地或額外地,未必排除可在交易152之其自身的UTXO 203中之一者中明確指定交易費用。
愛麗絲及鮑勃之數位資產由在區塊鏈150中任何位置處之任何交易152中鎖定至愛麗絲及鮑勃的UTXO組成。因此,通常,給定當事方103之資產遍及整個區塊鏈150中之各種交易152的UTXO而散佈。區塊鏈150中任何位置處皆未儲存界定給定當事方103之總餘額的一個數字。用戶端應用程式105中之電子錢包功能的角色為將鎖定至各別當事方且尚未在另一後續交易中支出之所有各種UTXO的值一起核對。其可藉由查詢如儲存於比特幣節點104中之任一者處的區塊鏈150之複本來進行此操作。
應注意,通常示意性地表示指令碼程式碼(亦即,不使用確切語言)。舉例而言,吾人可使用操作碼(作業碼)來表示特定函式。「OP_…」係指Script語言之特定作業碼。作為一實例,OP_RETURN為Script語言的作業碼,其會在鎖定指令碼的開始處以OP_FALSE開頭時創建可在交易內儲存資料的交易之不可支出輸出,且藉此將資料不可變地記錄在區塊鏈150中。例如,資料可包含需要儲存於區塊鏈中之文件。
通常,交易之輸入含有對應於公用金鑰
P
A 之數位簽名。在實施例中,此係基於使用橢圓曲線secp256k1之ECDSA。數位簽名對特定資料片段進行簽名。在一些實施例中,對於給定交易,簽名將對交易輸入之部分及交易輸出中之一些或全部進行簽名。數位簽名所簽名之輸出之特定部分取決於SIGHASH旗標。SIGHASH旗標通常為4位元組程式碼,其包括在簽名之末尾,以選擇對哪些輸出進行簽名(且因此在簽名時固定)。
鎖定指令碼有時被稱作「scriptPubKey」,其係指其通常包含各別交易所鎖定至之當事方的公用金鑰之事實。解除鎖定指令碼有時被稱作「scriptSig」,其係指其通常供應對應簽名之事實。然而,更一般而言,在區塊鏈150之所有應用程式中,兌換UTXO之條件不一定包含鑑認簽名。更一般而言,指令碼處理語言可用於界定任何一或多個條件。因此,更一般術語「鎖定指令碼」及「解除鎖定指令碼」可為較佳的。
如圖1中所展示,愛麗絲及鮑勃之電腦裝備102a、120b中之各者上的用戶端應用程式可分別包含額外通訊功能性。此額外功能性使得愛麗絲103a能夠與鮑勃103b建立單獨之旁側通道301 (在任一方或第三方之推動下)。旁側通道301使得能夠與區塊鏈網路分開地進行資料交換。此類通訊有時被稱作「鏈外」通訊。舉例而言,此可用於在愛麗絲與鮑勃之間交換交易152,而無需(尚未)將交易登記至區塊鏈網路106上或使其進入鏈150,直至雙方中之一者選擇將其廣播至網路106。以此方式共用交易有時被稱作共用「交易範本」。交易範本可能缺乏形成完整交易所需之一或多個輸入及/或輸出。替代地或額外地,旁側通道301可用於交換任何其他交易相關資料,諸如金鑰、協商的金額或條款、資料內容等。
可經由與區塊鏈網路106相同之封包交換網路101建立旁側通道301。替代地或額外地,可經由諸如行動蜂巢式網路之不同網路或諸如區域無線網路之區域網路或甚至愛麗絲之裝置102a與鮑勃之裝置102b之間的直接有線或無線鏈路來建立旁側通道301。通常,在本文中任何位置處被提及之旁側通道301可包含經由一或多個網路連接技術或通訊媒體之任一或多個鏈路,以用於「鏈外」,亦即與區塊鏈網路106分開地,交換資料。在使用多於一個鏈路之情況下,鏈外鏈路之集束或集合可作為整體被稱作旁側通道301。因此,應注意,若據稱愛麗絲及鮑勃經由旁側通道301交換某些資訊或資料片段或其類似者,則此未必暗示必須經由完全相同的鏈路或甚至相同類型之網路來發送所有此等資料片段。
用戶端軟體
圖3A示出用於實施本發明所揭露方案之實施例的用戶端應用程式105之實例實施。用戶端應用程式105包含交易引擎351及使用者介面(UI)層352。交易引擎351經組配以根據上文所論述且稍後將進一步詳細論述之方案實施用戶端105之基礎交易相關功能性,以便制定交易152、經由旁側通道301接收及/或發送交易及/或其他資料,及/或將交易發送至一或多個節點104以經由區塊鏈網路106進行傳播。根據本文中所揭露之實施例,各用戶端105之交易引擎351包含功能353……
UI層352經組配以經由各別使用者之電腦裝備102之使用者輸入/輸出(I/O)構件來呈現使用者介面,包括經由裝備102之使用者輸出構件來將資訊輸出至各別使用者103,及經由裝備102之使用者輸入構件自各別使用者103接收回輸入。舉例而言,使用者輸出構件可包含用於提供視覺輸出之一或多個顯示螢幕(觸控式或非觸控式螢幕)、用於提供音訊輸出之一或多個揚聲器,及/或用於提供觸覺輸出之一或多個觸覺輸出裝置等。使用者輸入構件可包含例如以下各者之輸入陣列:一或多個觸控式螢幕(與用於輸出構件之觸控式螢幕相同或不同);一或多個基於游標之裝置,諸如滑鼠、軌跡墊或軌跡球;一或多個麥克風及話語或語音辨識演算法,其用於接收話語或聲音輸入;一或多個基於示意動作之輸入裝置,其用於接收呈手動或身體示意動作之形式之輸入;或一或多個機械按鈕、開關或操縱桿等。
應注意:雖然本文中之各種功能性可被描述為整合至同一用戶端應用程式105中,但此未必為限制性的,且實情為,其可實施於一套二個或多於二個不同應用程式中,例如一個應用程式為另一應用程式之外掛程式或經由應用程式設計介面(application programming interface;API)介接。舉例而言,交易引擎351之功能性可實施於與UI層352分離之應用程式中,或諸如交易引擎351之給定模組之功能性可在多於一個應用程式之間進行劃分。亦不排除可在比如作業系統層處實施所描述功能性中之一些或全部。在本文中任何位置皆提及單個或給定應用程式105或其類似者的情況下,應瞭解,此僅作為實例,且更一般而言,所描述之功能性可以任何形式之軟體實施。
圖3B提供使用者介面(UI) 360之實例的模型,該使用者介面可由愛麗絲之裝備102a上之用戶端應用程式105a的UI層352呈現。應瞭解,類似UI可由鮑勃之裝備102b或任何其他當事方之裝備上的用戶端105b呈現。
作為示出,圖3B自愛麗絲之視角展示UI 360。UI 360可包含經由使用者輸出構件呈現為不同UI元件的一或多個UI元件362、362、363。
例如,UI元件可包含一或多個使用者可選擇元件362,其可為諸如不同螢幕上按鈕或選單中之不同選項或其類似者。使用者輸入構件經配置以使得使用者103 (在此情況下為愛麗絲103a)能夠選擇或以其他方式操作選項中之一者,諸如藉由點選或觸控螢幕上UI元件,或說出所要選項的名稱(注意:如本文中所使用之「手動」僅意謂與自動相對,且未必限於使用手)。
替代地或額外地,UI元件可包含一或多個資料鍵入欄位362,經由該等資料鍵入欄位使用者可……此等資料鍵入欄位經由使用者輸出構件(例如螢幕上)呈現,且資料可經由用者輸入構件(例如鍵盤或觸控式螢幕)而鍵入至欄位中。替代地,可例如基於話語辨識而口頭接收資料。
替代地或額外地,UI元件可包含一或多個資訊元件363,該一或多個資訊元件經輸出以將資訊輸出至使用者。例如,可在螢幕上或有聲地呈現此/此等元件。
應瞭解,呈現各種UI元件、選擇選項以及鍵入資料之特定構件並非實質性的。稍後將更詳細地論述此等UI元件之功能性。亦應瞭解,圖3中所展示之UI 360僅為示意性模型,且實務上,其可包含出於簡明起見而未示出之一或多個其他UI元件。
節點軟體
圖4示出在基於UTXO或基於輸出之模型之實例中的在網路106之各區塊鏈節點104上運行的節點軟體450之實例。應注意,另一實體可運行節點軟體450,而不被分類為網路106上之節點104,亦即,不執行節點104所需之動作。節點軟體450可含有但不限於協定引擎451、指令碼引擎452、堆疊453、應用程式層級決策引擎454,以及一組一或多個區塊鏈相關功能模組455。各節點104可運行節點軟體,該節點軟體含有但不限於以下各者中之所有三者:共識模組455C (例如,工作量證明)、傳播模組455P及儲存模組455S (例如,資料庫)。協定引擎351通常經組配以辨識交易152之不同欄位,且根據節點協定處理該等欄位。當接收到具有指向另一先前交易152i (
)之輸出(例如,UTXO)的輸入之交易152j (
)時,協定引擎451接著識別
中之解除鎖定指令碼且將其傳遞至指令碼引擎452。協定引擎451亦基於
之輸入中的指標來識別及擷取
。可在區塊鏈150上公佈
,在此情況下,協定引擎可自儲存於節點104處之區塊鏈150的區塊151之複本擷取
。替代地,
可能尚未在區塊鏈150上公佈。在彼情況下,協定引擎451可自藉由節點104維持之未公佈交易之有序集合154擷取
。無論以何種方式,指令碼引擎451皆將識別
之參考輸出中的鎖定指令碼且將此傳遞至指令碼引擎452。
指令碼引擎452因此具有
之鎖定指令碼及來自
之對應輸入的解除鎖定指令碼。舉例而言,圖2中示出標記為
及
之交易,但此可適用於任何一對交易。指令碼引擎452如先前所論述一起運行二個指令碼,其將包括根據正使用之基於堆疊之指令碼處理語言(例如,Script)而將資料置放至堆疊453上及自該堆疊擷取資料。
藉由一起運行指令碼,指令碼引擎452判定解除鎖定指令碼是否符合鎖定指令碼中所定義之一或多個準則-亦即,其是否「解除鎖定」其中包括鎖定指令碼之輸出? 指令碼引擎452將此判定之結果傳回至協定引擎451。若指令碼引擎452判定解除鎖定指令碼確實符合對應鎖定指令碼中指定之一或多個準則,則其傳回結果「真」。否則,其傳回結果「假」。
在基於輸出之模型中,來自指令碼引擎452之結果「真」係交易之有效性的條件中之一者。通常,亦存在藉由協定引擎451評估的亦必須符合之一或多個其他協定層級條件;諸如
之輸出中指定之數位資產的總金額不超過由其輸入指向的總金額,及
之所指向輸出尚未由另一有效交易支出。協定引擎451評估來自指令碼引擎452之結果連同一或多個協定層級條件,且其僅在該結果及該等條件均為真之情況下才驗證交易
。協定引擎451將交易是否有效之指示輸出至應用程式層級決策引擎454。僅在確實驗證了
之條件下,決策引擎454才可選擇控制共識模組455C及傳播模組455P二者以執行其關於
之各別區塊鏈相關功能。此包含共識模組455C將
添加至節點的交易之各別有序集合154以用於併入區塊151中,及傳播模組455P將
轉遞至網路106中之另一區塊鏈節點104。任擇地,在實施例中,應用程式層級決策引擎454可在觸發此等功能中之任一者或二者之前應用一或多個額外條件。例如,決策引擎可僅在交易係有效的且留下足夠交易費用之條件下才選擇公佈交易。
亦應注意,本文中之術語「真」及「假」未必限於傳回以僅單個二進位數字(位元)之形式表示的結果,但當然為一個可能的實施。更一般而言,「真」可指指示成功或肯定結果之任何狀態,且「假」可指指示不成功或否定結果之任何狀態。例如,在基於帳戶之模型中,結果「真」可由簽名之隱式協定層級驗證及智慧型合約之額外肯定輸出之組合指示(總體結果在二個個別結果為真之情況下被視為信號真)。
一旦給定本文中之揭露內容,所揭露技術之其他變體或使用案例對於熟習此項技術者可變得顯而易見。本揭露內容之範疇不受所描述實施例限制而僅受隨附申請專利範圍限制。
舉例而言,以上一些實施例已關於比特幣網路106、比特幣區塊鏈150及比特幣節點104而進行描述。然而,應瞭解,比特幣區塊鏈為區塊鏈150之一個特定實例,且以上描述通常可適用於任何區塊鏈。亦即,本發明絕不限於比特幣區塊鏈。更一般而言,以上對比特幣網路106、比特幣區塊鏈150及比特幣節點104之任何參考可分別用對區塊鏈網路106、區塊鏈150及區塊鏈節點104之參考來替換。區塊鏈、區塊鏈網路及/或區塊鏈節點可共用如上文所描述之比特幣區塊鏈150、比特幣網路106及比特幣節點104之所描述屬性中的一些或全部。
在本發明之較佳實施例中,區塊鏈網路106為比特幣網路,且比特幣節點104執行創建、公佈、傳播以及儲存區塊鏈150之區塊151的所描述功能中之至少全部。不排除可存在僅執行此等功能中之一者或一些而非全部的其他網路實體(或網路元件)。亦即,網路實體可執行傳播及/或儲存區塊而不創建及公佈區塊之功能(前已述及,此等實體不被認為係較佳比特幣網路106之節點)。
在本發明之非較佳實施例中,區塊鏈網路106可能並非比特幣網路。在此等實施例中,不排除節點可執行創建、公佈、傳播及儲存區塊鏈150之區塊151的功能中之至少一者或一些而非全部。舉例而言,在彼等其他區塊鏈網路上,「節點」可用於指網路實體,該網路實體經組配以創建及公佈區塊151,而不儲存彼等區塊151及/或講彼等區塊傳播至其他節點。
甚至更一般而言,對以上術語「比特幣節點」104之任何參考可用術語「網路實體」或「網路元件」替換,其中此實體/元件經組配以執行創建、公佈、傳播以及儲存區塊之角色中的一些或全部。此網路實體/元件之功能可以上文參考區塊鏈節點104所描述之相同方式實施於硬體中。
經委派授權
圖5係關於根據本揭露內容之第一態樣的系統500,其用於供應及使用經委派授權符記,較佳地作為提供與區塊鏈101相關聯之多個服務的平台處理器504之部分。平台處理器504任擇地為如下文關於圖11及圖13更詳細地描述之平台。然而,熟習此項技術者應瞭解,如本文中所描述之經委派授權方法及系統可用於包括不與區塊鏈101相關聯之服務的其他服務中。平台處理器504經組配以與區塊鏈101、用戶端502及/或經委派使用者506進行通訊及/或以其他方式互動。為易於例示性之目的,平台處理器504在本文中被描述為整體伺服器。在使用「用戶端」、「使用者」或類似術語之情況下,應理解,此常常係指由該用戶端或使用者擁有之裝置。熟習此項技術者應瞭解,其可經實施為單個伺服器、大型主機、伺服器之集合、微服務、微服務之集合、雲端服務、先前及/或一或多個其他運算平台之任何組合。如本文中所使用之術語「服務(service/services)」應被理解為運算功能或行為之集合的通用術語,而未嚴格地特定於在一個伺服器上運行之單個應用程式。此處呈現實例及選項之非詳盡清單。服務可為一個應用程式或多個應用程式。服務可在一個硬體伺服器/裝置上或在多個硬體伺服器/裝置上運行。舉例而言,下文提供與服務分離之資料庫,此可同樣替代地被包含作為同一服務之部分。
系統500包含用戶端502,其為對平台504上之服務進行授權的使用者。用戶端之授權允許用戶端502將經委派授權提供至其他使用者506(在下文中被稱為經委派使用者或委派者)。用戶端502可被認為係服務之「擁有者」且較佳被觸發平台504上之服務之創建。用戶端502希望委派授權使得其他使用者能夠存取服務。較佳地,經委派授權准許經委派使用者506與正運行服務之平台504互動512。更佳地,該等互動係待至/自服務讀取、寫入或既讀取又寫入。甚至更佳地,所描述服務為事件串流,其在下文參考圖10A至圖10C、圖11及圖12更詳細地加以描述。熟習此項技術者應理解,與服務之經委派授權相關聯之方法及系統此處亦可與其他服務一起使用。
任擇地,存在經委派使用者可與服務進行之其他互動。所允許互動之類型將取決於服務。舉例而言,若服務正提供財務交易,則經委派使用者可具有創建或簽名交易之經委派授權。較佳地,經委派授權並不准許添加更多經委派使用者或創建經委派授權符記。
如下文參考圖6及圖7更詳細地描述,根據本發明態樣之一實施例,用戶端502產生經委派之授權符記且將其提供508至經委派使用者506。
如下文參考圖8及圖9A至圖9C更詳細地描述,根據本發明態樣之一實施例,經委派使用者506經組配以產生包含此等符記之請求,該等請求經發送512至運行於平台504上之服務。在接收到請求後,服務將驗證該請求,且取決於經委派授權符記之有效性,處理該請求。
經委派授權符記產生
圖6展示根據第一態樣之一實施例之方法600。方法600描述經委派授權符記(其在本文中亦描述為delegatedAuth符記)之產生,且在用戶端502希望授權多於一個經委派使用者與經委派服務互動時使用。較佳地,此方法完全由與系統500中之任何其他實體無互動的用戶端進行。任擇地,經委派授權符記具有可與經委派授權符記一起提供之關聯索引。
產生經委派授權符記使得其形成一組相關符記。較佳地,該組為符記「鏈」,此係因為各經委派授權符記(第一個除外)係基於該鏈中之前一個,如下文所描述。
首先,產生602二個隨機數:初始值(下文參考為IV)及種子值(下文參考為種子)。
任擇地,判定604所需之經委派授權符記之數目。此數目通常等於(或有時大於)用戶端希望將經委派授權提供至之使用者之數目。
接著,基於此等二個值產生606第一經委派授權符記。較佳地,第一經委派授權符記係基於初始值及種子值之串連。更佳地,第一經委派授權符記係基於使用初始值及種子值作為輸入之單向函數。甚至更佳地,第一經委派授權符記係基於初始值及種子值之串連之雜湊。
任擇地,種子值被安全地刪除,使得無實體可再次使用其。
產生608另外經委派授權符記。所產生之各經委派授權符記係至少基於先前產生之經委派授權符記。較佳地,各另外經委派授權符記係基於初始值及先前產生之經委派授權符記而產生。先前產生之授權符記較佳係指緊接在當前正產生之一授權符記之前產生的經委派授權符記且亦可被描述為先前經委派授權符記。更佳地,各另外經委派授權符記係基於初始值及先前產生之經委派授權符記之組合而產生。甚至更佳地,各另外經委派授權符記係基於將初始值及先前產生之經委派授權符記之組合認作輸入的單向函數而產生。仍更佳地,各另外經委派授權符記係基於初始值及先前產生之經委派授權符記之組合的雜湊而產生。仍更佳地,該組合為先前產生之授權符記上之初始值之串連。
初始值與先前產生之經委派授權符記之組合可被描述為前置影像。
將初始值預先添加至先前經委派授權符記(以上串連)的替代方案係根本不使用初始值,且因此先前經委派授權符記係僅基於所產生之先前經委派授權符記。為了以此方式產生下一經委派授權符記,在先前經委派授權符記上使用單向函數且該函數之輸出係下一經委派授權符記。較佳地,單向函數係雜湊函數。
經委派授權符記較佳呈二進位字串及/或位元組字串之形式。二進位字串之長度取決於所使用之單向函數。若所使用之單向函數為SHA256,則經委派授權符記將為256位元長(或32位元組)。任擇地,此二進位字串可經表示及/或編碼為十六進位字串、base64字串或任何其他適當編碼方案。
當產生符記的用戶端502判定其具有足夠的符記時及/或當所產生之符記之數目等於或大於在步驟604中所判定之數目時,停止此產生步驟608。
較佳地,上文所描述方法600用以為經委派使用者與服務之間的每種類型之互動而產生。較佳地,產生一個經委派授權符記鏈以用於對服務之讀取存取,且產生另一經委派授權符記鏈以用於對服務之寫入存取。用戶端想要提供讀取授權的各使用者會接收到讀取委派之授權符記中之一者,且用戶端想要提供寫入授權的各使用者會接收到寫入委派之授權符記中之一者。讀取與寫入委派之授權符記之數目無需相同。
任擇地,經委派使用者可接收多於一個符記。對於諸如此處所論述之寫入的互動受限實例,此將允許經委派使用者更多地寫入。
與產生606、608委派符記之鏈相關的步驟亦可展示於下表中。在此表中,「R」用以表示與「讀取」授權相關之符記及資料,且「W」用以表示與「寫入」授權相關之符記及資料。「H」函數係單向函數,較佳係雜湊函數且「||」符號較佳表示該符號之各側之串連。僅作為實例而創建各者之4個符記。可使用用於各類型之符記的不同數目。
如自上表可看到,經委派授權符記之鏈中的最終經委派授權符記為H0雜湊。
較佳地,對於寫入委派之授權符記,亦存在每符記之最大寫入。此任擇地擴展至用戶端可希望限制各符記能夠進行之互動之數目的其他互動。
參考圖10D描述以上所描述之方法600之實例。展示實例系統1070,其中採用隨機初始值IV及種子的用戶端創建經委派授權符記鏈。接下來,「創建」事件串流訊息經發送至事件串流服務,該創建事件串流訊息包含最終經委派授權符記(H0)及初始值。事件串流服務創建事件串流,使最終符記及初始值與所創建之串流相關聯,且用「esid」-「事件串流識別符」回復所創建訊息。esid用於由用戶端及/或任何經委派使用者進行之任何未來互動。
創建請求較佳係JSON物件且包含以下內容: "readAccessControl" : { "delegatedReadH0" : < RH0 >, "delegatedReadIV" : < RIV > }, "writeAccessControl" : { "maxWritesPerDelegate" : < integer >, "delegatedWriteH0" : < WH0 >, "delegatedWriteIV" : < WIV > }
根據另一實施例,圖7中展示分配用於向使用者提供經委派授權之所需之資訊的方法700。
運用任擇地藉由如圖6所闡明之實施例產生702之經委派授權符記,用戶端將符記提供704至各經委派使用者且提供706平台或服務判定任何經委派符記之有效性所需之任何資料。較佳地,平台或服務判定符記之有效性所需的資料包含經委派授權符記鏈中之最後經委派授權符記(WH0及/或RH0,如在以上實例中可看到)及初始值(WIV及/或RIV,如在以上實例中可看到)。
經委派授權符記固有地具有其序數且因此可被編索引。較佳地,當向各經委派使用者提供704其符記時,亦提供符記之索引。
雖然與將資料提供至經委派使用者及平台相關的步驟704、706呈現為依序的,但其可以任何次序或同時地進行。
由於各符記鏈係按互動(例如讀取或寫入)產生,因此針對用戶端希望委派之每種類型之互動來進行方法700。
可在設置服務之前向委派者提供其經委派之授權符記,或可在服務運行時隨選地提供。
用戶端502可在任何時間撤銷任何數目個或所有此等符記。此撤銷係藉由用戶端創建一請求來進行,該請求包含指示以下各者之資料:用戶端希望從中撤銷符記的服務(在以下所提供之實例中,此意謂識別特定事件串流)、符記待從中被撤銷的互動之類型(例如讀取或寫入)、待撤銷之符記及/或待撤銷之符記之索引。較佳地,使用待撤銷之符記及索引二者,任擇地僅使用一者。較佳地,所有符記皆以經啟用/未撤銷開始且用戶端502必須將其撤銷。撤銷之特定實例提供於圖10C及圖10E中。
能夠撤銷個人符記允許用戶端502在其對服務之存取管理時具有更大的靈活性及控制。另外,由於經委派使用者506並不知曉其他符記且無法計算該等符記,因此當用戶端希望撤銷存取時,不需要通知或更新仍啟用/未撤銷的任何其他經委派使用者,藉此節省了運算資源及時間。
經委派授權符記使用
參看圖8,展示根據另一實施例之方法800,其描述接收804、驗證806及處理808請求以與服務互動的程序。在本實施例中且為了易於描述,此方法800被描述為藉由在平台上運行之服務進行。在替代實施例中,平台正運行經組配以在此處進行方法800之另一程序。此程序可被描述為「鑑認服務」或「存取控制服務」且任擇地在與服務正與之互動之同一個平台504上運行。作為另一替代方案,鑑認服務在服務接收請求之前表現為濾波器。
在接收來自經委派使用者之請求的步驟之前,服務自產生了經委派授權符記之用戶端接收802適當驗證資料。驗證資料至少包含經委派授權符記之鏈中的最終雜湊(或最終經委派授權符記)。此最終符記亦被描述為用戶端接收之最終經委派授權符記,此係因為其來自用戶端。此最終雜湊可表示為H
0、R
H0或W
H0,如本文中所使用。較佳地,驗證資料亦包含如上文參考圖6所描述的在產生經委派授權符記之鏈之程序中所使用的初始值。
服務可在驗證來自經委派使用者之請求之前的任何時候接收802此資料。較佳地,當正創建新事件串流時將驗證資訊提供至服務。
在稍後某一時間,服務將接收804來自經委派使用者的請求以使用服務及/或事件串流。此等請求包含經委派授權符記。若請求不包含經委派授權符記,或不來自用戶端,則其不被認為係有效的。來自用戶端之請求較佳並不需要經委派授權符記,且將使用不同系統予以驗證或鑑認。
服務基於經委派授權符記及驗證資料判定806請求之有效性。此步驟關於圖9A至圖9D更詳細地加以描述。驗證偶爾包含重新創建經委派授權符記鏈之子集,自接收到之經委派授權符記開始直至最終經委派授權符記。若重新創建之最終經委派授權符記與用戶端接收之最終經委派授權符記相同,則所接收之經委派授權符記係有效的。
任擇地,服務進一步基於經委派授權符記是否已被撤銷來判定請求之有效性。若用於此服務及互動之符記及/或索引已被撤銷,則該請求將被認為係無效的。
最終,取決於在步驟806中判定之有效性,處理該請求。若符記並不有效,則不處理請求。
在此方法800藉由鑑認服務運行的情況下,處理步驟806包含將關於驗證結果之指示提供至服務及/或平台的鑑認服務。替代地,在鑑認服務充當濾波器的情況下,處理步驟806包含在符記無效的情況下丟棄請求且其並不將請求轉遞至服務。若符記有效,則其將在服務上傳遞請求,任擇地具有用於指示請求係有效的額外資訊。
圖9A至圖9D中所展示之方法描述服務可如何驗證所接收之經委派授權符記的不同實例情形。第一方法900展示何時接收到第一請求。自所接收之經委派授權符記開始,重新創建經委派授權符記鏈。第二方法展示何時接收到另一請求,但其中索引係使得其在鏈中高於任何先前接收之經委派授權符記且服務並不會計算其。第三方法展示何時接收另一另外請求,且索引係使得其在鏈中較靠後且服務已經計算其。
在關於鏈使用「較高」及「較低」的情況下,此係指所供應之索引。「較高」係關於具有較高索引編號且更遠離最終經委派授權符記且「較低」係相反的。零索引為最低索引且對鏈中之最終/最後產生之經委派授權符記加索引。索引為0的經委派授權符記為由用戶端出於如上文所論述之校驗目的提供的符記。
較佳地,驗證方法使用與用戶端建構經委派授權符記鏈相同的方法。第一、第二及第三實例情形方法900、920、940展示雜湊鏈(或其子集)係使用與其已被創建所使用的方法實質上相同的方法來重建構。
圖9A展示第一驗證方法900,其中第一次由服務接收902符記。第一請求包含第一所接收之經委派授權符記。較佳地,該請求亦包含索引。
由於此為第一個所接收之經委派授權符記,因此服務將尚未產生經委派授權符記鏈之任何其他部分。
接下來,自第一所接收之經委派授權符記開始,重新產生經委派授權符記之鏈。該鏈係使用與如上文所描述其被創建所使用之方法相同的方法來產生。因此,該鏈較佳係藉由以下操作創建:將初始值與第一所接收之經委派授權符記進行串連,接著對其進行雜湊以接收該鏈中之下一經委派授權符記。重複此步驟數次。若索引存在於請求中,則所產生鏈中之經委派授權符記的數目係基於索引。索引可被視為距經委派授權符記之鏈中之最終經委派授權符記的距離。產生另外經委派授權符記直至產生最終經委派授權符記
。舉例而言,若請求中之索引為3,則將產生另外三個雜湊(
,
,
),如下文所展示。
符號用以表示此係基於所接收之經委派授權符記之鏈且可能不同於用戶端產生之鏈。使用尚未使用「R」及「W」,此係因為程序針對讀取(「R」)、寫入(「W」)或任何其他互動皆係相同的。
,
,
,
獲得
亦可藉由單個方程式進行:
較佳地,若符記被發現為有效的,則儲存鏈中之所接收之經委派授權符記(
)以及中間雜湊
及
中之各者(其亦為經委派授權符記且可由未來委派者使用)以供未來使用。此等中間符記之使用係關於下文圖9C中所展示之實例方法940進行進一步描述。甚至更佳地,所接收及產生之經委派授權符記儲存於資料儲存機構(此陣列、資料庫、硬碟機或任何其他類似系統或模組)中,使得該等符記可根據其在鏈中之位置而編索引。有利地,使經委派授權符記與其索引(亦被稱為編索引)相關聯允許如在參考圖9C所描述之情形中更容易地查找。若符記被發現為無效的,則所建構之整個鏈不被儲存及/或被刪除。
第一所接收符記之有效性係基於所產生最終雜湊H0'與自用戶端接收之最終雜湊的比較而判定,該最終雜湊係作為上文所描述驗證方法800之初始步驟802中的驗證資料之部分。若H0與H0'相等,則經委派授權符記係有效的。
替代地,若不使用索引,則修改方法使得連續地產生經委派授權符記且將各所產生符記與H0進行比較。當進行成功比較時或當達到符記之最大數目時,該程序停止。若達到最大數目且未進行成功比較,則第一所接收之經委派授權符記被發現為無效的。
參看圖9B,展示方法920,其中接收922另一請求,該另一請求亦包含經委派授權符記及索引。出於示出之目的,在此實例方法中,經委派授權符記及/或索引之前尚未被服務看到,且其並不存在於任何預先計算的經委派授權符記鏈中。
在接收後,服務判定924經委派授權符記是否已存在於先前產生之鏈中。較佳地,使用編索引之資料儲存機構,基於索引進行查找。若資料儲存機構係陣列,則此意謂存取索引條目處之資料。在本實例中,在索引處不存在經委派授權符記。
替代使用索引來對經委派授權符記編索引,該方法可簡單地遍歷所有經儲存之經委派授權符記且檢查其是否存在。
當符記尚未存在於當前儲存鏈中時,必須產生更多經委派授權符記鏈以確認其存在於由用戶端產生之鏈中。該鏈與先前所描述類似/相同的方式建構(此舉較佳將初始值與另外接收之經委派授權符記串連且將其通過單向函數重複地傳遞)。較佳地,代替一直重複此等步驟至鏈中之最終經委派授權符記(H0),重複此等步驟直至遇到經委派授權符記之鏈中之第一個先前產生或接收之經委派授權符記為止。因為產生符記之方法係確定性的,所以給定相同的起始資料,將產生相同的鏈。自鏈中之任何點開始都是如此-不僅僅是第一經委派授權符記。
因為使用單向函數,所以在鏈建構中,服務(或系統中之包括其他委派者之任何其他裝置)無法自任何給定點計算出鏈中更高的經委派授權符記,即使其之初始值已被預先添加至其符記。此為單向函數之屬性,藉由輸出,計算輸入係不可能的。因此,鏈必須始終自任何接收之經委派授權符記向前建構。
舉例而言,若所接收符記具有索引5,且吾人具有已經儲存於資料儲存機構中的索引3、2、1、0之經委派授權符記(H3、H2、H1、H0),則為了判定另外所接收之經委派授權符記是否有效,則僅需要執行以下計算:
,
因此,在此實例中,所接收之經委派授權符記的有效性係基於當前產生之經委派授權符記中之經委派授權符記中的一者(較佳當前產生之經委派授權符記中的最後者)與經儲存及/或先前產生之經委派授權符記的比較予以判定。較佳地,具有經儲存及/或先前產生之經委派授權符記之最高索引的符記。
具有最高索引之經儲存經委派授權符記很可能為被認為有效的先前所接收之經委派授權符記。因此,此方法亦可被描述為:判定任何先前所接收之經委派授權符記的最高索引;基於所接收之經委派授權符記產生另外經委派授權符記,直至具有等於先前所接收且有效之經委派授權符記之索引的索引之經委派授權符記為止;基於最終產生之經委派授權符記與先前所接收之經委派授權符記的比較而判定所接收之經委派授權符記的有效性。若所接收符記有效,則此符記將接著為具有任何先前所接收符記之最高索引的符記。
參看圖9C,展示一實例方法,其中接收942另一另外請求,該另一另外請求包含另一另外經委派之授權符記及索引。在此實例中,該符記已經為經委派授權符記之經儲存鏈的部分。其可能已經被儲存,此係因為此符記在之前已使用,或因為具有較高索引之有效符記在接收此符記之前已被接收到。
在接收942另一另外經委派授權符記及其索引的情況下,判定944 (對於此實例)存在預先產生並儲存之與彼索引相關聯的經委派授權符記。較佳地,判定包含向資料儲存機構查詢處於給定索引之經委派授權符記。在另一另外所接收之經委派授權符記與所儲存之於索引相關聯的經委派授權符記之間進行比較。符記之有效性係基於此比較。較佳地,若該等符記相同,則所接收符記係有效的。若該等符記不相同,則所接收符記係無效的。
較佳地,第一方法900、第二方法920及第三方法940一起用以驗證經委派授權符記。有利地,此等方法900、920、940提供快取,使得無需每當接收到經委派授權符記時就計算經委派授權符記之鏈,因此節省了電腦處理功率及時間同時仍提供強存取控制安全性。若存在大量委派者,則雜湊程序可同時進行運算。
替代地,僅使用第一方法900。若僅使用第一方法900,則在接收到每一請求後產生經委派授權符記之整個鏈,且鏈中無一者被儲存。此提供以下優點:不需要儲存可能甚至不使用之中間經委派授權符記,且仍維持強存取控制安全性。
參看圖9D,展示總方法960以示出此等方法如何發生及何時發生。當接收962包含經委派授權符記及索引之任何請求時,作出關於其是否已在之前被計算並儲存於資料儲存器中的判定964。
若在之前尚未產生經委派授權符記,則自索引開始,產生966另外經委派授權符記直至產生最終經委派授權符記,或產生先前計算/接收之已知有效經委派授權符記。若所產生之經委派授權符記中之任一者之值及索引二者等於任何先前接收或產生之經委派授權符記,則所接收符記被認為係有效的。較佳地,僅產生足夠的經委派授權符記,使得符合先前接收或產生之經委派授權符記之索引。舉例而言,若先前接收或產生H3,且當前接收到H5',則僅產生H5'、H4'及H3'。當前所接收符記之有效性係藉由比較具有最低索引之當前經委派授權符記與具有最高索引之先前所接收/產生之經委派授權符記予以判定。舉例而言,藉由如上文關於圖9B所描述比較H3與H3'。
當驗證寫入經委派授權符記時,較佳地,用戶端亦提供「最大寫入」值以作為上述驗證方法800之第一步驟802中的驗證資料之一部分。較佳地,另一驗證步驟用以確保無經委派使用者寫入比使用者被允許之資料更多的資料至服務。服務儲存與各經委派授權符記相關聯之「寫入數目」值。此開始於零,且每當經委派使用者寫入至服務時遞增。在驗證符記之後,亦進行「最大寫入」驗證。此驗證比較「寫入數目」與「最大寫入」。若用於經委派授權符記之「寫入數目」等於或大於「最大寫入」值,則不處理請求。若用於經委派授權符記之「寫入數目」低於「最大寫入」值,則「寫入數目」值遞增且處理請求。任擇地,「寫入數目」僅在請求成功地將資料寫入至事件串流及/或區塊鏈的情況下遞增。熟習此項技術者應瞭解,此可應用於除寫入之外的其他互動。寫入已僅用作一實例。
在一些實施例中,請求呈超文字傳送協定(Hypertext Transfer Protocol;HTTP)請求或超文字傳送協定安全(Hypertext Transfer Protocol Secure;HTTPS)請求之形式。任擇地,經委派授權符記儲存於HTTP(S)請求之標頭中。任擇地,標頭呈以下形式: 授權:經委派base64(<delegatedAuthIndex> ":" <delegatedAuth>)
二個值delegatedAuthIndex及delegatedAuth之base64編碼係選用的。替代地,使用二者之二進位表示。
有利地,藉由將經委派授權移動至標頭,授權程序可更與如RFC 7235中所描述之基本HTTP鑑認架構相融。
單個委派者
在僅一個委派者想要讀取及/或寫入之情況下,接著使用如參考圖6所描述之方法600僅產生一個雜湊,該雜湊係基於作為至單向函數之輸入而使用的初始值及種子值之組合。服務出於驗證目的接收此「最終」(且僅)經委派授權符記。將從不使用初始值,此係因為不存在要重建構之經委派授權符記鏈,且因而,用戶端可將其希望之任何隨機資料傳遞至服務或什麼也不傳遞。服務將僅接收最終經委派授權符記且因此,任何所接收請求之驗證係將所接收請求之經委派授權符記與最終經委派授權符記進行比較。任何其他符記將係無效的。
平台系統
根據一態樣,關於用戶端委派之先前態樣中的任一或多者可與如此處所描述之平台處理器一起使用。較佳地,用戶端委派態樣係用於委派對資料服務1502、運算服務1504及/或商務服務1506之存取,經由該等服務之存取係由API 1508提供。經委派存取可呈讀取、寫入、讀取/寫入、提交及/或可與特定服務相關聯之任何其他動作的形式。本發明態樣可為平台即服務(PaaS)及軟體即服務(SaaS),其使得能夠使用諸如BSV區塊鏈之區塊鏈網路來快速遞送有用的真實世界業務及技術應用,諸如經軟體控制的技術系統或智慧型合約之管理。
參看圖10A至圖10E,展示與平台服務(如在下文參考圖11至圖13更詳細地描述)之實例互動。所展示之實例互動為:將事件附加至事件串流、查詢(或讀取)事件串流上之事件、撤銷經委派使用者與事件串流互動、創建事件串流及經委派授權符記,及包含系統之不同實施例及態樣之總體方法。此等互動係藉助於實例提供了如何在事件串流及平台服務之上下文中使用經委派授權符記。
在此等實例實施例中,平台(如先前實例實施例中所描述)包含數個組件,該等組件包括事件串流服務1004、用戶端鑑認服務1006、資料庫1008及訊息匯流排1010。
在此等實例中,平台服務提供數個不同EventStream,且因而用戶端及/或經委派使用者提供關於其希望與之互動之特定事件串流的識別符。因此,請求進一步包含服務識別符。任擇地,若平台僅提供一個此類服務來與之互動,則將不需要識別符。
以圖10A開始,可為如以上所描述之用戶端504或經委派使用者506的用戶端應用程式1002將事件附加至事件串流服務1004。用戶端應用程式1002將「appendEvent」請求發送至事件串流服務。「appendEvent」請求包含與事件相關聯之資料,且若用戶端應用程式為經委派使用者,則為包含經委派授權符記及索引之delegatedAuth資訊。若用戶端應用程式為用戶端502,則使用用戶端鑑認服務1006 (與上文所描述或尤其參考圖8所描述之任何鑑認服務分離)進行不同的用戶端鑑認處理程序。
事件串流服務1004接著驗證資料,若存在與請求相關聯之經委派授權資訊,則將彼資訊傳遞1014至資料庫1008。資料庫經組配以進行如參考圖8至圖9D所描述之驗證方法且儲存任何先前產生之經委派授權符記。資料庫用經委派授權之有效性(未圖示)對所接收之經委派授權資訊做出回應。由於此為寫入服務,因此資料庫亦將驗證與所使用之特定經委派授權符記相關聯的寫入之數目尚未超過先前定義之「最大寫入」。
藉由有效授權之指示符,事件串流服務1004繼續處理附加資訊。此包括將事件插入1016至資料庫1008中,接收1018事件之索引,接著進行經由訊息匯流排1010公佈1020至區塊鏈之事件,完成1022任何計費動作,及最終1024用事件被成功地附加之指示對用戶端應用程式1002作出回應。
移至圖10B,用戶端應用程式1002正請求自事件串流服務1004讀取資料。用戶端應用程式1002將「queryData」請求發送至事件串流服務1004。事件串流服務1004驗證參數且繼續以與「appendEvent」實例1000相同或類似方法授權1014 (其中存在經委派授權符記)或鑑認(若使用替代用戶端鑑認服務)。由於此為讀取服務,因此較佳地不需要記錄最大讀取、寫入或其他最大互動。
在用戶端應用程式1002經鑑認或授權的情況下,使用作為資料查詢之部分的任何濾波器(諸如時間範圍、資料之類型、供應資料之使用者及其他)來建構資料庫查詢。資料庫查詢可呈SQL格式。在查詢經格式化的情況下,將其以選擇之形式提交至資料庫1008。任何計費資訊經提交1034至訊息匯流排1010以供其他服務檢閱及管理。最終,將所請求資料以JSON回應之形式傳回1036至用戶端應用程式。
在圖10C中,用戶端應用程式1002希望撤銷經委派授權符記。較佳地,僅用戶端502能夠採取此類措施,且因而,不存在經委派授權符記將被授權的選項-僅用戶端鑑認方法可用。
用戶端向事件串流服務1004提交1052包含要撤銷之PUT方法的HTTP請求。該請求包含: • esid,其為EventStream之ID, • accessType,其為用戶端希望修改的互動,使得資料庫知曉要引用與EventStream相關聯之哪一鏈-較佳「讀取」或「寫入」, • 索引,其為鏈中之經委派授權符記之索引,及 • 符記,其為經委派授權符記。
此等參數經驗證,且用戶端經鑑認。
事件串流服務1004向資料庫1008提交1054另一請求以更新儲存經委派使用者資訊之資料儲存機構。較佳地,存在與各委派授權符記及/或各索引相關聯的一行、旗標或其他資料片段(此係因為並非所有經委派授權符記可能為已知的)。此資料片段將經更新以反映,即使提供了正確索引及經委派授權符記,符記亦將不被認為係有效的。替代地,若存在與服務相關聯之「最大寫入」,則用於彼經委派授權符記之寫入數目經設定為等於「最大寫入」,此將確保所有未來互動將並不有效。
資料庫1008將向事件串流服務1004傳回1056經委派授權符記已使用的次數。任何計費資訊經提交1058至訊息匯流排1010以供其他服務檢閱及管理。最終,將包含撤銷是否成功的回應較佳以JSON回應之形式傳回1060至用戶端應用程式。任擇地,回應亦包含使用經撤銷之經委派授權符記進行互動的次數。
如上文所描述,圖10D展示系統1070,其中用戶端根據第二態樣及根據圖6之方法創建經委派授權符記鏈,接著在事件串流服務上創建事件串流。
參看圖10E,展示包含如本文所描述之數個實施例及特徵的總系統。用戶端創建經委派授權符記鏈且創建事件串流,如參看圖10D所描述。在稍後某一時間(未必是緊接其後),用戶端提供委派者與事件串流互動之必需之細節。該等細節包括:用以識別要與事件串流服務上之哪一事件串流互動的識別符(圖中之「esid」)、其經委派授權符記(圖中之「H」)及索引(在此實例中為「3」)。藉由此資訊,委派者具有足夠資訊以藉由「appendEvent」請求向事件串流服務提交資料。請求包含自用戶端接收之所有相同細節加上委派者希望向事件串流提交之任何資料。
圖10E亦展示發生之實例撤銷。此處,用戶端提交撤銷經委派授權符記的請求。該請求識別出要從中撤銷符記的事件串流(esid),符記自身與符記之索引,以及要撤銷之互動之類型(在此實例中為「寫入」)。若針對給定事件串流之有效符記與索引匹配,則事件串流服務停用該符記。
平台服務之綜述可見於圖11中,其展示系統之高層級示意圖。平台服務具有提供API 1508之平台處理器1500,一或多個用戶端可經由該API存取服務。
如此圖11中所展示之平台服務1500由三個服務系列構成,且旨在允許使用者及組織容易且安全地利用由區塊鏈之獨特屬性提供的優點,而實際上無需在用戶端末端處實施任何基於區塊鏈之軟體、知識或庫。此等服務為: - 資料服務1502,其旨在簡化鏈作為商品資料分類帳之使用。資料服務較佳使用本文中所提供之資料結構及方法以用於實施將資料寫入至區塊鏈及自區塊鏈讀取資料。 - 運算服務1504,其旨在提供由諸如比特幣SV之數位資產所支援的通用運算架構。 - 商務服務1506,其提供用於使用諸如比特幣SV之數位資產進行交易的企業級能力。
可經由或使用HTTPS協定在API處自用戶端接收請求,此係因為API被實施為網路服務。接著由一或多個服務模組或處理資源1502至1506使用基礎軟體1510實施所請求服務,此基礎軟體1510係與區塊鏈相關聯,亦即以實施資源、庫及/或金鑰管理電子錢包實施以用於創建、處理及提交與區塊鏈相關聯之交易。一旦經處理,就可將交易提交至區塊鏈網路1512 (而非實施任何此類功能性或交易庫之用戶端)。至多,用戶端可實施或能夠實施與密碼貨幣或某其他數位資產相關聯之數位電子錢包或其類似者,但此並非必需的,此係因為平台服務1500亦可能夠提供及管理用於用戶端之數位資產。
圖12提供與區塊鏈相關聯之多個服務的較細化示意圖,且該等服務可由與API相關聯之平台1600實施,經由該API可存取所提供服務中之任一或多者。如此圖12中所看到,資料服務1602可包括資料寫入器1602a及資料讀取器服務1602b。如上文所描述之經委派授權較佳地用以提供對事件串流及/或資料寫入器及/或資料讀取器之經委派存取。類似地,希望經由使用資料讀取器1602b存取資料存檔的經委派使用者根據以上描述較佳地已委派授權。參考英國專利申請案第2002285.1號(在2020年2月19日以nChain Holdings Limited之名義申請且特此以引用之方式併入)之圖4至圖8論述事件串流之其他細節。資料寫入器服務1602a使得用戶端能夠以簡單、安全且最佳化方式將資料寫入至區塊鏈中。資料讀取器服務1602b使得用戶端能夠發送查詢,該查詢傳回儲存於區塊鏈中之資料。此可使用經濾波串流,其中用戶端可預界定其希望臨時或週期性地(亦即,在某一時間範圍內)自區塊鏈讀取的資料類型,或與區塊鏈1610中處理的一組相關或不相關事件或文件相關聯的彼等資料類型。資料存檔特徵允許存取指定事件或合約之先前交易的日誌。
平台1600之運算服務1606包括與智慧型合約相關聯的應用程式1606a及架構1606b,其在一些實施例中可表示為區塊鏈1610中之狀態機。運算服務1606與資料服務1602互動,此係因為資料將需要被輸入且結果需要被提供至用戶端以用於任何此運算。
商務服務1604負責經由企業電子錢包1604a供應企業級能力,以用於基於一流的安全實踐及技術在區塊鏈1610上進行交易。舉例而言,在一些實施例中,企業電子錢包可實施在多於一個人員、使用者或賬戶可能需要在符合所定義準則,亦即與高於某一預定義限值之較大密碼貨幣值相關聯之交易上簽出時實現區塊鏈交易處理的功能性。企業電子錢包亦可包括實施臨限數目及/或類型之簽名以移動大量數位資產,諸如密碼貨幣或表示另一資源之符記的功能性。可接著基於由此企業電子錢包實施方案應用之準則在處理之後在區塊鏈上表示此等資產之移動。
SPV服務1608 (簡化之支付校驗)為需要來自區塊鏈之資訊但並不包括至區塊鏈之直接鏈路的應用程式,此係因為該等服務並不運行挖掘者節點。此SPV服務1608允許輕型用戶端驗證交易是否包括於區塊鏈中,而無需下載整個區塊鏈1610。
實例使用案例
本文中所描述之系統及方法實現關於智慧型合約、區塊鏈及更特定言之關於事件串流之許多不同的使用情境。此處提供之使用案例係作為實例且熟習此項技術者應瞭解,更多使用係可能的。熟習此項技術者應進一步瞭解,雖然特定參考事件串流,但此等案例亦可使用其他智慧型合約技術、其他區塊鏈技術或其類似者來進行。
案例 1- 投票服務
存在以下愈來愈多的例子:其中向公眾提供了對一個主題或另一主題進行投票的機會(例如聲音(The Voice)、Strictly、本月目標、最喜歡的藝術家等)。此類投票涉及潛在大量獨立的個人,其希望在限定時段內投一票(或多票)。此類公眾投票通常使用手機輸入、網路及手機應用程式前端。此處所描述之實施例可提供使用事件串流及經委派授權提供透明度及公眾監督的低成本可擴展後端。
假設投票主(其充當如上文所論述之用戶端502)希望在一組投票者(其充當如上文所論述之經委派使用者506)之間進行投票,其中各投票者可在有限時段內投1至N票。此可使用事件串流服務及經委派授權符記來達成如下: 1. 投票主負責在開啟投票期之前創建並分配一組delegatedAuth符記連同其delegatedAuthIndex值-吾人將此等符記及值集體地稱為「投票者授權符記」(VAT)-至投票者群體。個人投票者在其投票時儲存其VAT以供呈現。 2. 投票主創建事件串流以在特定時間開始及結束。 3. 投票者可在投票期內藉由呼叫appendEvent端點來投票。選票必須與有效VAT一起呈現。 4. 各投票將使用VAT進行授權且將在不使用sequenceNumber的情況下附加至串流。個別事件之次序通常不重要。串流可經組配以經由使用在創建事件串流期間任擇地提供之最大寫入而接受每VAT 1票至N票。 5. 在投票期結束時,投票主將最終確定事件串流並使用queryData端點對投票進行定案。稽核員亦可使用經委派讀取存取使用queryData來經由投票進行反覆,驗證事件資料且視需要校驗鏈上串流狀態。
此投票服務之特性包括: • 投票嚴格地限於擁有有效VAT之投票者群體。 • 每投票者投票之最大數目嚴格地在投票期之前受投票主限制。 • 投票期係在投票主之直接控制下,投票主可在創建串流時建立固定開始及結束時間。 • 事件串流服務不知曉投票者之身分,且因此沒有依據支持一個投票而不是另一投票(其限制條件為可知曉投票者之IP位址)。 • 投票將大致按到達時間次序被記錄。 • 由於特定事件串流技術及更一般而言區塊鏈技術,所有投票之記錄係不可變的及可稽核的。事件訊息自身可能或可能不被混淆(根據由投票主陳述之規則),此將判定公眾稽核之實用性。
在創建事件串流時使用之實例組態資料: "writeAccessControl" : { "maxWritesPerDelegate" : 4, "maxEventLength" : 100, "delegatedWriteH0" : 71625391653146580, "delegatedWriteIV" : 1878608923646284 }, "timeAccessControl" : { "openFrom" : "2020-10-25T20:00:00Z" "openUntil" : "2020-10-25T19:59:59Z" }
此處使用事件串流及區塊鏈技術有利地提供通常在其他「公眾」投票情形中未發現的透明度。投票可配置成使得任何投票者能夠在資料集中看到其自身投票,且計算自身之投票結果。當投票資料以明文儲存時,此投票之結果將即刻可用,但當投票資料混淆時必須等待投票主公佈投票結果。
VAT 分配
為了公平投票,VAT在投票期開啟之前必須分配給投票者。VAT可以對於使用案例實務的任何方式分配。此情形之實例可為將各VAT分配至手機應用程式。VAT可能或可能不與登記之使用者相關聯。
一替代方案將為在帳戶資料中保留VAT,且向帳戶使用者提供網路介面。
一替代方案將為將撥號電話服務連接至驅動程式,該驅動程式將呼叫及/或小鍵盤輸入轉譯成投票資料,且將各者與VAT之快取記憶體相關聯。
各投票者應用程式將接收包含稱為之VAT
N經委派授權符記以及索引N之VAT。每當進行投票時都必須呈現符記及索引二者。
VAT 校驗
在創建事件串流時已具備了WIV及WH0,事件服務將預測對appendEvent之呼叫,其包括VAT
N及N,而非常規用戶端鑑認資料。校驗程序與如上文參考圖8及圖9A至圖9D所描述的相同或類似。若之前可見,則服務將接受或拒絕投票,此取決於每VAT投票之最大數目之組態,以及使用VATN投票的先前投票數。若之前未可見,則服務必須重複對VAT
N雜湊N次,且接著比較最終結果與WH0。若此等相等,則投票經授權且其將被記錄。舉例而言;若N = 3,若WH0等於H( WIV || H( WIV || H( WIV || H( WIV || VAT3 )))),則將接受投票。
投票評估
較佳的是投票主之唯一職責為評估投票且判定結果。
案例 2- 裝備活動日誌
高端裝備製造商希望能夠存取其客戶裝備之重要活動日誌,可作為保修或服務協議之部分。藉由分析日誌,製造商可能夠採取主動步驟以確保裝備以峰值效率執行。經委派授權符記可在工廠裝配至裝備中,從而允許裝備在其壽命期間自動記錄重要事件-開始於登記。
在此情況下,將推薦以下情形: • 製造商可針對各產品線組配個別事件串流。 經委派授權符記將在工廠裝配至裝備中,其中委派索引經記錄於製造商之用戶端資料庫中。 • 裝備將在其壽命期間自動地記錄重要事件-開始於登記。 • 製造商能夠在遠端監測任何活動,包括心跳、運行時間、關鍵組件之更換、合格材料之使用等。
在創建事件串流時使用之實例組態資料: "settleStreamOnChain” : { "method" : "checkpoint", }, "writeAccessControl" : { "maxEventLength" : 100, "delegatedWriteH0" : 71625391653146580, "delegatedWriteIV" : 1878608923646284 } 案例3-經由投標之招標程序
考慮希望進行誠實且公開招標程序的地方委員會。委員會將發佈招標文件,明確地識別成功中標的要求及基礎。
假設20家公司登記了招標意圖。委員會必須針對至少20個元素創建經委派符記並創建事件串流來記錄招標。該等20家公司將在提交其招標文件時各自被給出符記以供使用。亦可提供相同或另一符記以允許各公司在投標期結束後讀取所有投標。
可預先使用串流id (先前實例中之「esid」]以檢查串流之後設資料,以確保投標條件係可接受的。
為了確保無偏見地進行招標程序,事件串流可經組配如下: "settleStreamOnChain" : { "method" : "onEvent" }, "writeAccessControl" : { "maxWritesPerDelegate" : 4, "delegatedWriteH0" : 878736456729829085, "delegatedWriteIV" : 66245284527845350 }, "readAccessControl" : { "delegatedReadH0" : 8932740872364807, "delegatedReadIV" : 557321466740, "readAfterFinalise" : true }, "timeAccessControl" : { "openFrom" : "2021-10-10T00:00:00Z" "openUntil" : "2021-10-20T00:00:00Z" }
組態參數描述:
參數 | 組態效應 |
settleDataOnChain.method | 方法onEvent指示各招標文件將被記錄於鏈上。settleDataOnChain之預設值為notarise,此將使得記錄招標文件之摘要而非整個文件。 |
writeAccessControl.maxWritesPerDelegate | 設定各公司可登記招標的最大次數。 |
writeAccessControl.delegatedWriteH0 | 組配用於經委派寫入授權之串流 |
writeAccessControl.delegatedWriteIV | 組配用於經委派寫入授權之串流 |
readAccessControl.delegatedWriteH0 | 組配用於經委派讀取授權之串流 |
readAccessControl.delegatedWriteIV | 組配用於經委派讀取授權之串流 |
readAccessControl.readAfterFinalise | 防止在招標期結束之前讀取任何資料。 |
timeAccessControl.openFrom | 將招標期之開始時間設定為GMT 2020年10月10日午夜。 |
timeAccessControl.openUntil | 將招標期之結束時間設定為GMT 2020年10月20日午夜。 |
運用此組態,已接收delegatedAuth符記的公司將能夠登記招標文件且將其修正多達3次。招標將嚴格地在指定期內被接受,且直至招標期結束後,吾人才能夠查看標書。記錄關於區塊鏈之此招標資訊提供公開地稽核此投標程序之方式,藉此確保了已遵守總體程序且藉此降低了惡意行為者干擾投標程序的可能性且總體提高了此多方互動之安全性。
公司亦將能夠在提交各招標不久之後監測其鏈上投標之摘要。此類摘要充當存在證明,藉此確保投標之內容在提交與稽核之間尚未改變。有利地,允許記錄投標之存在,而不展示投標多少。
案例 4- 訊息混淆
混淆事件資料(以下ED)之需要係使用案例相依的。為了透明度及公眾稽核容易性,明文事件資料係較佳的。然而,事件資料可如此敏感使得其甚至不應向提供事件串流之服務揭露。在此等情況下,用戶端可指示事件以將允許用戶端讀取各事件而非其他事件之方式進行混淆。用以達成此情形之相對簡單方法係經由共用秘密: • 連同delegatedAuth符記及索引,用戶端亦將另一隨機數IV(下文之fIV)提供至各貢獻者(亦即,應保持私用之共用秘密)。此在加密貢獻者之資料時用作初始向量。 • 各貢獻者ED根據由用戶端指定之規則格式化其自身事件資料。 • ED接著使用諸如AES之共同方法來加密。使用貢獻者之個別iv,使得ED可僅被貢獻者及用戶端讀取。
事件訊息可接著經建構如下: obfuscatedData = base64(AES( ED, fIV ))
當用戶端希望評估貢獻者之資料時,其可使用queryData來獲得事件記錄。此記錄含有委派者之索引,其可用以找到貢獻者之id,且因此找到共用秘密iv。此可接著用以自混淆之資料元素恢復明文事件資料。
平台裝置
現在轉向圖13,提供運算裝置2600之例示性簡化方塊圖,該運算裝置可用於實踐本揭露內容之至少一個實施例。在各種實施例中,運算裝置2600可用以實施上文所示出及描述之系統或方法中之任一者。舉例而言,運算裝置2600可經組配以用作圖5之先前所描述系統500中的一或多個組件。運算裝置2600可經組配為與給定使用者相關聯之用戶端實體;該用戶端實體向平台處理器作出資料庫請求及/或提交。運算裝置2600可經組配為經委派使用者。在接收到其經委派授權符記後,經委派使用者可向平台處理器作出資料請求及/或提交。因此,運算裝置2600可為攜帶型運算裝置、個人電腦,或任何電子運算裝置。如圖13中所展示,運算裝置2600可包括具有快取記憶體之一或多個層級的一或多個處理器以及記憶體控制器(集體地標記為2602),其可經組配以與包括主記憶體2608及持久性儲存器2610之儲存子系統2606通訊。主記憶體2608可包括如所展示之動態隨機存取記憶體(DRAM) 2618及唯讀記憶體(ROM) 2620。儲存子系統2606及快取記憶體2602可用於儲存資訊,諸如與如本揭露內容中所描述之交易及區塊相關聯的細節。處理器2602可用以提供如本揭露內容中所描述之任何實施例的步驟或功能性。
處理器2602亦可與一或多個使用者介面輸入裝置2612、一或多個使用者介面輸出裝置2614及網路介面子系統2616進行通訊。
匯流排子系統2604可提供用於使運算裝置2600之各種組件及子系統能夠按預期彼此通訊的機制。儘管匯流排子系統2604經示意性地展示為單一匯流排,但匯流排子系統之替代實施例可利用多個匯流排。
網路介面子系統2616可提供至其他運算裝置及網路之介面。網路介面子系統2616可充當用於自其他系統接收資料及將資料自運算裝置2600傳輸至其他系統之介面。例如,網路介面子系統2616可使資料技術員能夠將裝置連接至網路,使得資料技術員可能夠在處於諸如資料中心之遠端位置時將資料傳輸至裝置及自裝置接收資料。
使用者介面輸入裝置2612可包括:一或多個使用者輸入裝置,諸如鍵盤;指標裝置,諸如整合式滑鼠、軌跡球、觸控板或圖形平板電腦;掃描器;條形碼掃描器;觸控式螢幕,其併入至顯示器中;音訊輸入裝置,諸如語音辨識系統、麥克風;以及其他類型之輸入裝置。一般而言,使用術語「輸入裝置」意欲包括用於將資訊輸入至運算裝置2600之所有可能類型的裝置及機構。
一或多個使用者介面輸出裝置2614可包括顯示子系統、印表機或諸如音訊輸出裝置之非視覺顯示器等。顯示子系統可為陰極射線管(CRT)、諸如液晶顯示器(LCD)之平板裝置、發光二極體(LED)顯示器,或投影裝置或其他顯示裝置。一般而言,使用術語「輸出裝置」意欲包括用於輸出來自運算裝置2600之資訊的所有可能類型的裝置及機制。舉例而言,一或多個使用者介面輸出裝置2614可用以呈現使用者介面以在使用者與應用程式之互動可係適當的時促進此互動,該等應用程式執行所描述之處理程序及其中之變化。
儲存子系統2606可提供電腦可讀儲存媒體,該電腦可讀儲存媒體用於儲存可提供本揭露內容之至少一個實施例之功能性的基本程式設計及資料建構。應用程式(程式、程式碼模組、指令)在由一或多個處理器執行時可提供本揭露內容之一或多個實施例的功能性,且可儲存於儲存子系統2606中。此等應用程式模組或指令可由一或多個處理器2602執行。儲存子系統2606可額外提供用於儲存根據本揭露內容所使用之資料的儲存庫。舉例而言,主記憶體2608及快取記憶體2602可提供用於程式及資料之依電性儲存器。持久性儲存器2610可提供用於程式及資料之持久性(非依電性)儲存器,且可包括快閃記憶體、一或多個固態硬碟、一或多個磁性硬碟機、具有相關聯抽取式媒體之一或多個軟碟機、具有相關聯抽取式媒體之一或多個光碟機(例如,CD-ROM或DVD或Blue-Ray)驅動機及其他類似儲存媒體。此程式及資料可包括用於進行如本揭露內容中所描述的一或多個實施例之步驟的程式以及與如本揭露內容中所描述之交易及區塊相關聯的資料。
運算裝置2600可具有各種類型,包括攜帶型電腦裝置、平板電腦、工作站或下文所描述之任何其他裝置。額外地,運算裝置2600可包括可經由一或多個埠(例如,USB、頭戴式耳機插口、雷電型連接器等)連接至運算裝置2600的另一裝置。可連接至運算裝置2600之裝置可包括經組配以接受光纖連接器之多個埠。因此,此裝置可經組配以將光信號轉換成可經由將裝置連接至運算裝置2600之埠傳輸的電信號以供處理。歸因於電腦及網路不斷改變之性質,出於示出裝置之較佳實施例之目的,圖13中描繪之運算裝置2600之描述僅意欲作為一特定實例。具有比圖13中描繪之系統多或少之組件的許多其他組態係可能的。
上文所描述之各種方法可由電腦程式實施。電腦程式可包括電腦程式碼 ,其經配置以指示電腦執行上文所描述之各種方法中的一或多者之功能。電腦程式及/或用於執行此類方法之程式碼可在一或多個電腦可讀媒體上,或更一般而言,在電腦程式產品上被提供至諸如電腦之設備。電腦可讀媒體可係暫時性或非暫時性的。舉例而言,一或多個電腦可讀媒體可為電子、磁性、光學、電磁、紅外線或半導體系統,或用於資料傳輸,例如用於跨越網際網路下載程式碼之傳播媒體。替代地,一或多個電腦可讀媒體可能呈一或多個實體電腦可讀媒體之形式,諸如半導體或固態記憶體、磁帶、抽取式電腦磁片、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、剛性磁碟,及光碟,諸如CD-ROM、CD-R/W或DVD。
在實施方案中,本文中所描述之模組、組件及其他特徵可被實施為離散組件,或整合於諸如ASICS、FPGA、DSP或類似裝置之硬體組件之功能性中。
「硬體組件」或「硬體模組」係有形(例如,非暫時性)實體組件(例如,一組一或多個處理器),其能夠執行某些操作且可以某一實體方式經組配或配置。硬體組件可包括永久地經組配以執行某些操作之專用電路系統或邏輯。硬體組件可為或包括特殊用途處理器,諸如場可規劃閘陣列(FPGA)或ASIC。硬體組件亦可包括由軟體暫時地組配以執行某些操作之可規劃邏輯或電路系統。
因此,應將片語「硬體組件」或「硬體模組」理解為涵蓋有形實體,其可經實體建構、永久組配(例如,固線式)或暫時組配(例如,經規劃)來以某一方式操作或執行本文中所描述之某些操作。
另外,模組及組件可被實施為硬體裝置內之韌體或功能性電路系統。另外,模組及組件可實施於硬體裝置及軟體組件之任何組合中,或僅實施於軟體中(例如,儲存或以其他方式體現於機器可讀媒體中或傳輸媒體中之程式碼)。
除非另外特定陳述,否則如自以下論述顯而易見,應瞭解,貫穿描述,利用諸如「判定」、「提供」、「計算」、「運算」、「識別」、「組合」、「建立」、「發送」、「接收」、「儲存」、「估計」、「檢查」、「獲得」或其類似者之術語的論述係指電腦系統或類似電子計算裝置之動作及處理程序,該電腦系統或類似電子計算裝置將電腦系統之暫存器及記憶體內的表示為物理(電子)量之資料操縱及變換成電腦系統記憶體或暫存器或其他此類資訊儲存、傳輸或顯示裝置內的類似地表示為物理量之其他資料。
如本說明書及申請專利範圍中所使用之術語「包含」意謂「至少部分地由……組成」。當解譯本說明書及申請專利範圍中之包括術語「包含」的各陳述時,亦可存在除前面有該術語之彼或彼等特徵之外的特徵。諸如「包含(comprise及comprises)」之相關術語將以相同方式解釋。
希望對本文所揭露之數字之範圍(例如1至10)的參考亦併有對彼範圍內之所有有理數(例如1、1.1、2、3、3.9、4、5、6、6.5、7、8、9及10)以及彼範圍內之有理數之任何範圍(例如2至8、1.5至5.5及3.1至4.7)的參考,且因此,特此明確地揭露本文明確地揭露之所有範圍的所有子範圍。此等僅為特定意欲之實例,且所列舉之最低值及最高值之間的數值的所有可能組合被視為以類似方式明確地陳述於本申請案中。
如本文中所使用,術語「及/或」意謂「及」或「或」或此二者。
如本文中所使用,名詞之後的「(多個) (s)」意謂該名詞之複數及/或單數形式。
元件之單數參考並不排除此等元件之複數參考,且反之亦然。
應理解,以上描述意欲為例示性而非限制性的。熟習此項技術者在閱讀及理解以上描述時將明白許多其他實施。儘管本揭露內容已參考特定實例實施方案予以描述,但應認識到,本揭露內容不限於所描述之實施方案但可在係在所附申請專利範圍之範疇內的修改及變更的情況下實踐。因此,應在例示性意義而非限制性意義上看待本說明書及圖式。因此,應參考所附申請專利範圍連同申請專利範圍所授權之等效物的全部範疇來判定本揭露內容之範疇。
esid:事件串流識別符
Tx
0 ,152i:先前交易
Tx
1 :愛麗絲之新交易 100,500,1070:系統 101:封包交換網路 102:電腦終端/電腦裝備 102a,102b:電腦裝備 103:使用者/實體/當事方/代理 103a:使用者/實體/第一當事方/愛麗絲 103b:新使用者或實體/第二當事方/鮑勃 104:區塊鏈節點/比特幣節點 105:用戶端應用程式/軟體/用戶端 105a,1002:用戶端應用程式 105b,502:用戶端 106:同級間(P2P)網路/比特幣網路 150:區塊鏈/區塊鏈節點/比特幣區塊鏈 151:資料區塊鏈/區塊 151n-1,151n:區塊 152:交易 152j:目前交易 153:起源區塊(Gb) 154:交易之有序集合/集區 155:區塊指標 160:分散式或區塊鏈網路 201:標頭 202:輸入/輸入欄位 203:輸出/輸出欄位/交易輸出 301:旁側通道 351:交易引擎 352:使用者介面(UI)層 353:功能 360:使用者介面(UI) 362,363:使用者介面(UI)元件 450:節點軟體 451:協定引擎 452:指令碼引擎 453:堆疊 454:應用程式層級決策引擎 455:區塊鏈相關功能模組 455C:共識模組 455P:傳播模組 455S:儲存模組 504:平台處理器/平台 506:經委派使用者 508,704,706:提供步驟 512:互動/發送步驟 600,700,800,900,920,940,960:方法 602,606,608,702,966:產生步驟 604,806,924,944,964:判定步驟 802,804,902,922,942,962,1018:接收步驟 808:處理步驟 1000:「appendEvent」實例 1004:事件串流服務 1006:用戶端鑑認服務 1008:資料庫 1010:訊息匯流排 1014:傳遞/授權步驟 1016:插入步驟 1020:公佈步驟 1022:完成步驟 1024:最終步驟 1034:提交步驟 1036,1056,1060:傳回步驟 1052,1054,1058:提交步驟 1500:平台處理器/平台服務 1502:資料服務 1504:運算服務 1506:商務服務 1508:API 1510:基礎軟體 1512:區塊鏈網路 1600:平台 1602:資料服務 1602a:資料寫入器/資料寫入器服務 1602b:資料讀取器服務/資料讀取器 1604:商務服務 1604a:企業電子錢包 1606:運算服務 1606a:應用程式 1606b:架構 1608:SPV服務 1610:區塊鏈 2600:運算裝置 2602:處理器 2604:匯流排子系統 2606:儲存子系統 2608:主記憶體 2610:持久性儲存器 2612:使用者介面輸入裝置 2614:使用者介面輸出裝置 2616:網路介面子系統 2618:動態隨機存取記憶體(DRAM) 2620:唯讀記憶體(ROM)
圖1描繪用於實施區塊鏈之實例系統。
圖2示出實例交易協定。
圖3A及圖3B示出用戶端應用程式及其使用者介面之實例實施。
圖4示出在網路之各區塊鏈節點上運行的節點軟體之實例。
圖5為示出平台處理器、資料庫、區塊鏈網路、用戶端與委派之間的互動之示意圖。
圖6示出用於產生經委派授權符記之方法。
圖7示出用於分配委派者與服務互動所需之資訊的方法。
圖8示出用於驗證經委派授權符記之方法。
圖9A至9D示出與驗證經委派授權符記相關之實例及實施例。
圖10A至10E示出與事件串流服務互動之實例。
圖11為根據一態樣的描繪用於與區塊鏈相關聯之多個服務之平台的綜述之示意圖。
圖12為根據一態樣的描繪與區塊鏈相關聯之多個服務之平台的組件之示意圖。
圖13為示出其中可實施本揭露內容之各種態樣及實施例的運算環境之示意圖。
101:封包交換網路
500:系統
502:用戶端
504:平台處理器/平台
506:經委派使用者
508:提供步驟
510:互動步驟
512:互動/發送步驟
514:通訊/互動步驟
Claims (35)
- 一種電腦實施方法,其包含: 獲得一預定值, 接收一請求,該請求包含一經委派授權符記鏈之一第一經委派授權符記, 產生該經委派授權符記鏈之另外經委派授權符記,其中該產生該經委派授權符記鏈中之各另外經委派授權符記係基於該經委派授權符記鏈中之一先前經委派授權符記, 基於該經委派授權符記鏈中之該等經委派授權符記中之一者與該預定值的一比較而判定該第一經委派授權符記之一有效性。
- 如請求項1之電腦實施方法,其中該產生係基於對該經委派授權符記鏈中之該先前經委派授權符記進行雜湊。
- 如請求項1或請求項2之電腦實施方法,其中產生該經委派授權符記鏈之另外經委派授權符記的步驟包含針對各另外經委派授權符記,進行以下步驟: 判定一中間原像,該中間原像係基於該經委派授權符記鏈中之該先前經委派授權符記,以及 將一單向函數應用於該中間原像,至該單向函數之輸出係該另外經委派授權符記。
- 如請求項3之電腦實施方法,其中該單向函數係一單向函數。
- 如請求項3或請求項4之電腦實施方法,其中該中間原像係額外基於一給定值。
- 如請求項1或請求項2之電腦實施方法,其中該產生另外經委派授權符記係基於該經委派授權符記鏈中之該先前經委派授權符記以及一給定值。
- 如請求項5或請求項6之電腦實施方法,其進一步包含以下步驟: 自一儲存器獲得該給定值。
- 如請求項5至7中任一或多項之電腦實施方法,其中該給定值係自一用戶端接收。
- 如請求項5至8中任一或多項之電腦實施方法,其中產生係基於該給定值與該先前經委派授權符記之一串連。
- 如請求項9之電腦實施方法,其中該產生係基於對該給定值與該經委派授權符記鏈中之該先前經委派授權符記的該串連進行雜湊。
- 如前述請求項中任一項之電腦實施方法,其中該請求進一步包含一索引編號,且該經委派授權符記鏈中的經委派授權符記之數目係基於該索引編號。
- 如前述請求項中任一或多項之電腦實施方法,其中判定該第一經委派授權符記之一有效性的步驟係基於該經委派授權符記鏈中之一最終經委派授權符記與該預定值的一比較。
- 如前述請求項中之任一或多項之電腦實施方法,其中判定該第一經委派授權符記之該有效性的該步驟包含: 比較該經委派授權符記鏈中之該最終經委派授權符記與該預定值具有相同的值。
- 如前述請求項中任一或多項之電腦實施方法,其中該請求將向一/該區塊鏈提交或自一/該區塊鏈讀取。
- 如前述請求項中任一或多項之電腦實施方法,其中該請求之處理係進一步基於包含相同第一經委派授權符記的先前接收之請求的一數目。
- 如前述請求項中任一或多項之電腦實施方法,其進一步包含以下步驟: 儲存該經委派授權符記鏈。
- 如請求項16之電腦實施方法,其進一步包含以下步驟: 接收包含一另外經委派授權符記之一另外請求, 基於該另外經委派授權符記是否存在於該經儲存之經委派授權符記鏈中而判定該另外經委派授權符記之一有效性,以及 基於該另外經委派授權符記之該有效性處理該另外請求。
- 如前述請求項中任一或多項之電腦實施方法,其進一步包含以下步驟: 基於該經委派授權符記之該有效性提供該請求之該有效性之一指示及/或處理該請求。
- 一種用於產生相關聯之一經委派授權符記鏈的電腦實施方法,其包含: 獲得一第一值及一第二值, 產生該經委派授權符記鏈之一第一經委派授權符記,該第一經委派授權符記係基於該第一值及該第二值,以及 產生該經委派授權符記鏈之至少一個另外經委派授權符記,其中產生該經委派授權符記鏈中之各另外經委派授權符記係基於該經委派授權符記鏈中之一先前經委派授權符記以及該第一值。
- 如請求項19之電腦實施方法,其中產生該經委派授權符記鏈之另外經委派授權符記的步驟包含針對各另外經委派授權符記,進行以下步驟: 判定一中間原像,該中間原像係基於該經委派授權符記鏈中之該先前經委派授權符記以及該第一值,以及 將一單向函數應用於該中間原像,至該單向函數之輸出係該另外經委派授權符記。
- 如請求項20之電腦實施方法,其中產生係基於該第一值與該先前經委派授權符記之一串連。
- 如請求項21之電腦實施方法,其中該產生係基於對該給定值與該經委派授權符記鏈中之該先前經委派授權符記的該串連進行雜湊。
- 如請求項19至22中任一或多項之電腦實施方法,其進一步包含以下步驟: 將該經委派授權符記鏈之該等經委派授權符記中的一者提供至一委派裝置。
- 如請求項23之電腦實施方法,其中該委派裝置進一步提供該經委派授權符記之一索引,該索引表示該所提供之經委派授權符記在該經委派授權符記鏈中的位置。
- 如請求項19至24中任一或多項之電腦實施方法,其進一步包含以下步驟: 將該第一值以及該委派授權符記鏈之一最終經委派授權符記提供至一校驗裝置。
- 如請求項25之電腦實施方法,其中該校驗裝置進一步提供指示每委派者讀取或寫入之一最大數目的一數目。
- 如請求項19至26中任一或多項之電腦實施方法,其中該經委派授權符記鏈中的經委派授權符記之數目係基於委派者之數目。
- 如請求項27之電腦實施方法,其中該經委派授權符記鏈中的經委派授權符記之該數目大於或等於委派者之該數目。
- 如請求項19至28中任一或多項之電腦實施方法,其中在產生該第一經委派授權符記之後刪除該第二值。
- 如請求項19至29中任一或多項之電腦實施方法,其中該第一值及該第二值隨機產生。
- 如前述請求項中之任一或多項之電腦實施方法,其中該先前經委派授權符記係指緊接在正產生之該經委派授權符記之前的該經委派授權符記。
- 如請求項1至18中任一或多項之電腦實施方法,其中該第一經委派授權符記已由一用戶端根據請求項19至31中任一或多項之方法而產生。
- 一種電腦實施方法,其包含以下步驟: 接收根據請求項19至31中任一或多項之方法產生的一經委派授權符記, 產生包含該經委派授權符記之一請求,以及 將該請求發送至一伺服器。
- 一種系統,其包含: 一伺服器, 一委派者,以及 一用戶端,該用戶端經組配以: 根據請求項19至31中任一或多項產生一經委派授權符記鏈及一第一值, 將該第一值以及該經委派授權符記鏈之一最終經委派授權符記傳輸至該伺服器,以及 將該經委派授權符記鏈中之該等經委派授權符記中的一者傳輸至該委派者。
- 如請求項34之系統,其中該伺服器經組配以: 根據請求項1至18中任一或多項之方法接收並處理來自該委派者之一請求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB2111189.3A GB202111189D0 (en) | 2021-08-03 | 2021-08-03 | A computer implemented method and system |
GB2111189.3 | 2021-08-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202308351A true TW202308351A (zh) | 2023-02-16 |
Family
ID=77651289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111129189A TW202308351A (zh) | 2021-08-03 | 2022-08-03 | 電腦實施方法及系統 |
Country Status (5)
Country | Link |
---|---|
KR (1) | KR20240041944A (zh) |
CN (1) | CN117795516A (zh) |
GB (1) | GB202111189D0 (zh) |
TW (1) | TW202308351A (zh) |
WO (1) | WO2023012127A1 (zh) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7372938B2 (ja) * | 2018-05-14 | 2023-11-01 | エヌチェーン ライセンシング アーゲー | ブロックチェーンを使って原子的スワップを実行するためのコンピュータ実装されるシステムおよび方法 |
-
2021
- 2021-08-03 GB GBGB2111189.3A patent/GB202111189D0/en not_active Ceased
-
2022
- 2022-08-01 CN CN202280053915.1A patent/CN117795516A/zh active Pending
- 2022-08-01 KR KR1020247004767A patent/KR20240041944A/ko unknown
- 2022-08-01 WO PCT/EP2022/071595 patent/WO2023012127A1/en active Application Filing
- 2022-08-03 TW TW111129189A patent/TW202308351A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN117795516A (zh) | 2024-03-29 |
WO2023012127A1 (en) | 2023-02-09 |
GB202111189D0 (en) | 2021-09-15 |
KR20240041944A (ko) | 2024-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115997369A (zh) | 用于在区块链网络中验证数据的方法和装置 | |
KR20220139871A (ko) | 블록체인 네트워크에서 사용하기 위한 증명 서비스 | |
WO2022258269A1 (en) | Computer-implemented method and system for verifying tokens on a blockchain | |
TW202220410A (zh) | 默克爾證明實體 | |
JP2023554148A (ja) | 機密データのブロック | |
TW202220411A (zh) | 默克爾證明實體 | |
KR20240024113A (ko) | 다중-레벨 블록체인 | |
CN116671061A (zh) | 节点版本控制 | |
JP2023537698A (ja) | ブロックチェーンネットワークとの接続 | |
TW202215828A (zh) | 用以同步及基元追蹤之方法及系統 | |
TW202308351A (zh) | 電腦實施方法及系統 | |
CN117693926A (zh) | 区块链区块和存在证明 | |
TW202312057A (zh) | 電腦實施方法及系統 | |
TW202329668A (zh) | 證明及驗證有序事件序列之技術 | |
CN117678193A (zh) | 区块链区块和存在证明 | |
GB2614077A (en) | Signature-based atomic swap | |
JP2024500923A (ja) | トランザクション署名フラグ | |
CN117652124A (zh) | 区块链区块和存在证明 | |
TW202301833A (zh) | 電腦實行方法及系統 | |
TW202306368A (zh) | 對區塊鏈交易施行條件之技術(一) | |
TW202304183A (zh) | 電腦實行方法及系統 | |
TW202318444A (zh) | 對區塊鏈交易施行條件之技術(二) | |
EP4371266A1 (en) | Message exchange system | |
WO2024115139A1 (en) | Computer implemented methods and systems for public key infrastructure and identity verification | |
WO2024052066A1 (en) | Blockchain state machine |