TW202034199A - 用於智慧合約的軟體介面 - Google Patents
用於智慧合約的軟體介面 Download PDFInfo
- Publication number
- TW202034199A TW202034199A TW108144252A TW108144252A TW202034199A TW 202034199 A TW202034199 A TW 202034199A TW 108144252 A TW108144252 A TW 108144252A TW 108144252 A TW108144252 A TW 108144252A TW 202034199 A TW202034199 A TW 202034199A
- Authority
- TW
- Taiwan
- Prior art keywords
- smart contract
- call
- blockchain network
- contract
- interface
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q10/00—Administration; Management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/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/3297—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 time stamps, e.g. generation of time stamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Business processing using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Strategic Management (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Telephonic Communication Services (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本文的實施方式包括從區塊鏈網路檢索智慧合約定義,所述智慧合約定義包括來自多個智慧合約的多個合約函數,所述多個智慧合約儲存在由區塊鏈網路維護的區塊鏈中;產生表示智慧合約定義的智慧合約介面,所述智慧合約介面包括與多個合約函數相對應的多個介面函數,所述智慧合約介面允許軟體應用程式透過調用相應的介面函數來調用每個合約函數;從軟體應用程式接收對特定介面函數的調用,所述調用包括調用參數;產生包括調用參數的對特定合約函數的智慧合約調用;以及向區塊鏈網路發送所述智慧合約調用。
Description
本文涉及提供用於調用智慧合約的軟體介面。
分散式帳本系統(DLS),也可以被稱為共識網路和/或區塊鏈網路,使得參與的實體能夠安全地並且不可篡改地儲存資料。在不引用任何特定用例的情況下,DLS通常被稱為區塊鏈網路。區塊鏈網路的類型的示例可以包括公有區塊鏈網路、私有區塊鏈網路和聯盟區塊鏈網路。聯盟區塊鏈網路針對選擇的實體組群提供,該實體組群控制共識過程,並且聯盟區塊鏈網路包括存取控制層。
智慧合約是具有用於區塊鏈網路上的各方的預定義規則集的軟體指令集。智慧合約由區塊鏈網路的節點執行,並且設置智慧合約的所有各方同意彼此互動的條件。另外,如果並當滿足智慧合約的每個條件時,可以執行智慧合約。雖然智慧合約減輕了對可信第三方的需要,但是執行來自軟體應用程式的智慧合約或智慧合約的一個或多個函數也是冗長、謹慎且易出錯的處理。允許軟體應用程式的開發者以更透明且較不繁重的方式執行智慧合約函數是所期望的。
本文的實施方式包括電腦實現的提供用於調用智慧合約的軟體介面的方法。更具體地說,本文的實施方式涉及產生用於智慧合約調用的簡化框架。分析區塊鏈結構,並產生一個或多個軟體庫,所述軟體庫包括與儲存在區塊鏈中的智慧合約相對應的函數。這些函數可從軟體應用程式中調用以啟動智慧合約函數(functionality)的執行,從而大大簡化了從標準軟體應用程式存取智慧合約函數的處理。
本文還提供了耦接到一個或多個處理器並且其上儲存有指令的一個或多個非暫態電腦可讀儲存媒體,當所述指令由一個或多個處理器執行時,所述指令促使所述一個或多個處理器根據本文提供的方法的實施方式執行操作。
本文還提供了一種用於實現本文提供的方法的系統。所述系統包括一個或多個處理器,以及耦接到所述一個或多個處理器並且其上儲存有指令的電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令促使所述一個或多個處理器根據本文提供的方法的實施方式執行操作。
應當理解,根據本文的方法可以包括本文描述的方面和特徵的任何組合。也就是說,根據本文的方法不限於本文具體描述的方面和特徵的組合,還包括所提供的方面和特徵的任何組合。
在附圖和以下描述中闡述了本文的一個或多個實施方式的細節。從說明書和附圖以及申請專利範圍來看,本文的其他特徵和優點將顯而易見。
本文的實施方式包括電腦實現的用於智慧合約的方法。更具體地說,本文的實施方式涉及產生用於智慧合約調用的簡化框架。在一些實施方式中,動作包括:從區塊鏈網路檢索智慧合約定義,所述智慧合約定義包括來自多個智慧合約的多個合約函數,所述多個智慧合約儲存在由區塊鏈網路維護的區塊鏈中;產生表示所述智慧合約定義的智慧合約介面,所述智慧合約介面包括與所述多個合約函數相對應的多個介面函數,所述智慧合約介面被配置為允許軟體應用程式透過調用相應的介面函數來調用每個所述合約函數;從軟體應用程式接收對特定介面函數的調用,所述調用包括與對應於所述特定介面函數的特定合約函數的參數相對應的調用參數;回應於接收到對特定介面函數的調用,產生包括調用參數的對特定合約函數的智慧合約調用;向所述區塊鏈網路發送所述智慧合約調用;以及接收由所述區塊鏈網路執行所述智慧合約調用得到的結果,並向所述軟體應用程式提供所述結果。
為本文的實施方式提供進一步的背景,並且如上所述,分散式帳本系統(DLS),也可以被稱為共識網路(例如,由點對點節點組成)和區塊鏈網路,使得參與的實體能夠安全地、不可篡改地進行交易、儲存資料、以及與智慧合約通訊。在不參考任何特定用例的情況下,本文所用術語“區塊鏈”通常指DLS。如上所述,區塊鏈網路可被提供為公有區塊鏈網路、私有區塊鏈網路或者聯盟區塊鏈網路。
在公有區塊鏈網路中,共識處理由共識網路的節點控制。例如,數百、數千、甚至數百萬個實體可以協作公有區塊鏈網路,每個實體操作公有區塊鏈網路中的至少一個節點。因此,公有區塊鏈網路可以被認為是關於參與實體的公有網路。在一些示例中,大多數實體(節點)必須對每個區塊簽名以使該區有效,並被添加到區塊鏈網路的區塊鏈(分散式帳本)中。公有區塊鏈網路的示例包括為點對點支付網路的加密貨幣網路。加密貨幣網路利用被稱為區塊鏈的分散式帳本。然而,如上所述,術語“區塊鏈”通常是指分散式帳本,而不特別指代加密貨幣網路。
通常,公有區塊鏈網路支援公開交易。公開交易為公有區塊鏈網路內的所有節點共用,並且被儲存在全域區塊鏈中。全域區塊鏈是跨所有節點複製的區塊鏈。也就是說,所有節點相對於全域區塊鏈處於完全共識狀態。為了達成共識(例如,同意向區塊鏈添加區塊),在公有區塊鏈網路內實施共識協議。共識協議的示例包括但不限於,在加密貨幣網路中實施的工作量證明(POW)。
通常,為特定實體提供私有區塊鏈網路,該特定實體集中控制讀寫權限。實體控制哪些節點能夠參與到區塊鏈網路中。因此,私有區塊鏈網路通常被稱為許可網路,其限制允許誰參與網路,以及他們的參與級別(例如,僅在某些交易中)。可以使用各種類型的存取控制機制(例如,現有參與者投票添加新實體,管理機構可以控制准入)。
通常,聯盟區塊鏈網路在參與的實體之間是私有的。在聯盟區塊鏈網路中,共識處理由一組被授權的節點控制,一個或多個節點由相應實體(例如,金融機構、保險公司)操作。例如,由十(10)個實體(例如,金融機構、保險公司)組成的聯盟可以操作聯盟區塊鏈網路,每個實體操作聯盟區塊鏈網路中的至少一個節點。因此,關於參與的實體,聯盟區塊鏈網路可以被認為是私有網路。在一些示例中,每個區塊必須經每個實體(節點)簽名才能有效並被添加到區塊鏈中。在一些示例中,每個區塊必須經至少實體(節點)的子集(例如,至少7個實體)簽名才能有效並被添加到區塊鏈中。
本文參考公有區塊鏈網路進一步詳細描述本文的實施方式,所述公有區塊鏈網路在參與的實體之間是公有的。然而,可以預期,本文的實施方式可以在任何適當類型的區塊鏈網路中實現。
在一些實施方式中,區塊鏈網路可包括一個或多個智慧合約。通常,智慧合約是儲存在區塊鏈中並由區塊鏈網路中的節點執行的一個或多個電腦指令集(作為智慧合約定義)。智慧合約的代碼通常被轉換成可由區塊鏈網路中的節點執行的形式(例如,位元組碼),並且所述位元組碼本身或被配置成檢索所述智慧合約位元組碼的位元組碼被儲存在區塊鏈中。然後,在智慧合約代碼中定義的函數可以被區塊鏈網路中的參與者調用,使得節點執行所調用的函數中的指令。對智慧合約的“調用”是由區塊鏈網路中的參與者(例如,用戶、用戶端、區塊鏈節點或其他實體)對執行智慧合約的請求。
當區塊鏈網路中的參與者調用儲存在區塊鏈中的智慧合約時,區塊鏈網路以共識方式執行智慧合約的每個指令。例如,回應於對智慧合約的調用,區塊鏈網路中的每個節點執行智慧合約的第一指令。區塊鏈網路中的完成執行智慧合約的第一指令的第一節點將執行結果(例如,智慧合約的更新執行狀態)寫入區塊鏈。區塊鏈網路中的其他節點可以驗證第一節點執行第一指令的結果。如果區塊鏈網路中的其他節點驗證了第一節點執行第一指令的結果(例如,其他節點根據執行第一指令產生相同的結果),則每個節點繼續執行智慧合約的第二指令。重複該處理,直到智慧合約的每個指令都已被執行和驗證。
如下所述,本文描述了用於產生允許在軟體程式的執行期間調用智慧合約的軟體庫的技術。特別地,軟體庫可以被結合到開發者的應用程式中,供開發者調用一個或多個相應的智慧合約調用,如同開發者正在調用本地函式呼叫一樣。例如,智慧合約調用可以看起來類似於“FunctionName(int 1, int 2, char “input,” char “input2”)”。軟體庫可以包括執行智慧合約的函式呼叫和執行智慧合約的一個或多個函數的函式呼叫。這樣,開發者不是必須產生要在網路間發送的網路訊息,以在區塊鏈網路上執行智慧合約函數或智慧合約本身;而是開發者可僅產生對在區塊鏈網路上執行智慧合約的軟體庫中的函數的本地調用。軟體庫可以將本地調用轉換為網路調用,並將該網路調用發送到區塊鏈網路以執行智慧合約的函數。軟體庫中所包含的函數可以與區塊鏈網路上的智慧合約的函式定義相匹配。
這對於開發者可以是有益的。庫(例如,智慧合約介面)是基於區塊鏈中的定義產生的,並且可以回應於區塊鏈中的變化(例如,正在創建新智慧合約)頻繁地或自動地更新。因此,這些庫可以輕鬆地與區塊鏈的狀態保持同步。此外,透過將包括對智慧合約的函式呼叫和對對應於智慧合約的函數的函式呼叫的軟體庫合併到應用程式中,開發者可以調用用於智慧合約和對應函數的軟體庫的函數。開發者可以在他/她的應用程式中進行智慧合約調用和智慧合約函式呼叫,就像開發者正在進行本地調用一樣。
此外,當在軟體庫中組織對智慧合約和智慧合約函數的調用時,開發者可以將這些軟體庫快速合併到開發者期望的任何應用程式中。這在各種應用程式中在區塊鏈網路上執行智慧合約方面給予用戶靈活性。
圖1描繪了可以用於執行本文實施方式的環境100的示例。在一些示例中,環境100使得實體能夠參與到聯盟區塊鏈網路102中。環境100包括計算系統106、108和網路110。在一些示例中,網路110包括區域網路(LAN)、廣域網路(WAN)、網際網路或其組合,並且連接網站、使用者設備(例如,計算設備)和後台系統。在一些示例中,網路110可以透過有線和/或無線通訊鏈路存取。在一些示例中,網路110使得與區塊鏈網路102通訊以及在區塊鏈網路102內部進行通訊成為可能。通常,網路110表示一個或多個通訊網路。在一些情況下,計算系統106、108可以是雲端計算系統(未示出)的節點,或者每個計算系統106、108可以是單獨的雲端計算系統,包括透過網路互連的多個電腦並且作為分散式處理系統起作用。
在所描述的示例中,計算系統106、108可以各自包括能夠作為節點參與至聯盟區塊鏈網路102中的任何適當計算系統。計算設備的示例包括但不限於伺服器、台式電腦、膝上型電腦、平板計算設備和智慧型電話。在一些示例中,計算系統106、108承載一個或多個由電腦實施的服務,用於與聯盟區塊鏈網路102互動。例如,計算系統106可以承載第一實體(例如,使用者A)的由電腦實施的、例如交易管理系統的服務,第一實體使用該交易管理系統管理其與一個或多個其他實體(例如,其他使用者)的交易。計算系統108可以承載第二實體(例如,使用者B)的由電腦實施的、例如交易管理系統的服務,第二實體使用該交易管理系統管理其與一個或多個其他實體(例如,其他使用者)的交易。在圖1的示例中,聯盟區塊鏈網路102被表示為節點的點對點網路(Peer-to-Peer network),並且計算系統106、108分別提供參與聯盟區塊鏈網路102的第一實體和第二實體的節點。
圖2描繪了根據本文實施方式的概念性架構200的示例。概念性架構200包括實體層202、承載服務層204和區塊鏈網路層206。在所描述的示例中,實體層202包括三個實體,實體1(E1)、實體2(E2)和實體3(E3),每個實體具有各自的交易管理系統208。
在所描述的例子中,承載服務層204包括用於每個交易管理系統208的介面210。在一些示例中,相應的交易管理系統208使用協議(例如,超文字傳輸協議安全(HTTPS))透過網路(例如,圖1的網路110)與相應的介面210通訊。在一些示例中,每個介面210提供相應交易管理系統208與區塊鏈網路層206之間的通訊連接。更具體地說,介面210與區塊鏈網路層206的區塊鏈網路212通訊。在一些示例中,介面210與區塊鏈網路層206之間的通訊是使用遠端程序呼叫(RPC)進行的。在一些示例中,介面210“承載”用於各自的交易管理系統208的區塊鏈網路節點。例如,介面210提供用於存取區塊鏈網路212的應用程式設計介面(API)。
如本文所述,提供作為點對點網路的區塊鏈網路212,包括將資訊不可篡改地記錄在區塊鏈216中的多個節點214。儘管示意性地描述了單個區塊鏈216,但在區塊鏈網路212上提供並維護了區塊鏈216的多個副本。例如,每個節點214儲存區塊鏈的副本。在一些實施方式中,區塊鏈216儲存與交易相關聯的資訊,該交易是在參與聯盟區塊鏈網路的兩個或多個實體之間執行的。
圖3描繪了可被用於產生用於執行智慧合約調用的框架的環境300的示例。環境300可包括一個或多個軟體應用程式302、智慧合約介面304、介面產生器308、區塊鏈網路212、區塊鏈網路212中的多個節點214、以及單個區塊鏈216。環境300可以在用戶端設備上實現,或者跨本地連接或透過網際網路連接的一個或多個電腦實現。
在一些實施方式中,介面產生器308與區塊鏈網路212通訊。在開啟用戶端設備電力時,介面產生器308從區塊鏈網路212檢索資料。例如,介面產生器308檢索表示一個或多個智慧合約的資料、用於調用來自區塊鏈網路212的智慧合約的一個或多個定義、用於調用來自區塊鏈網路212的智慧合約函數的一個或多個定義、以及描述區塊鏈網路212的特性。例如,表示一個或多個智慧合約的資料可以包括智慧合約的數量和智慧合約的類型。所述特性可以包括多個節點214的數量、每個節點的位址、以及由多個節點214使用的帳本。
介面產生器308從區塊鏈網路212檢索該資訊,且作為回應,產生智慧合約介面304以向開發者提供在他/她的各自應用程式中調用智慧合約調用。智慧合約介面304可以包括例如一個或多個軟體庫、使用者介面、或至軟體函式呼叫位置的連結。介面產生器308為智慧合約介面304載入函式定義,以供開發者用來在他/她自己的例如軟體應用程式302的軟體中產生實體智慧合約調用。
智慧合約介面304可以包括一個或多個軟體庫,從而例如可以允許開發者調用在區塊鏈網路212上找到的智慧合約的一個或多個函數。這樣,開發者可透過調用智慧合約介面304的一個或多個函數306,與在區塊鏈網路212上找到的一個或多個智慧合約互動。
開發者可以將對智慧合約的一個或多個調用或對智慧合約函數的調用合併到他/她的軟體應用程式302中。特別地,軟體應用程式302可以是開發者期望的任何應用程式,例如,多媒體軟體、演示軟體、模擬軟體、以及用於工程和產品開發的軟體,僅舉幾例。另外,軟體可與諸如供應鏈、電子政府(eGoverment)、遊戲、銀行和保險、能源部門、物聯網(IoT)、數位身份和法律技術等應用程式相關,僅舉幾例。軟體應用程式302可以以C++、C、JavaScript、Python、Perl或其他軟體語言來編寫,僅舉幾例。
在一些實施方式中,開發者可以將對智慧合約介面304的函數306的調用併入軟體應用程式302中。例如,開發者可以將智慧合約介面304的庫、智慧合約介面304的多個庫、或智慧合約介面304本身導入到軟體應用程式302中。透過將這些庫併入軟體應用程式302中,開發者可根據他/她的需要調用由這些庫(例如,智慧合約介面304)提供的一個或多個函數。開發者可查閱由所導入的智慧合約介面304提供的一個或多個函數306的函式定義,以確定如何在他/她的軟體應用程式302中進行函式呼叫。另外,智慧合約介面304可以指示開發者可以如何進行位於區塊鏈網路212上的智能合約調用。
智慧合約介面304可以包括對應於函數306的類定義的集合。這些類定義示出了開發者如何能夠調用他/她的軟體應用程式302中的代碼以調用函數306。例如,對於試圖調用智慧合約調用的開發者,開發者不必分析區塊鏈網路212上的智能合約來確定產生智能合約調用所需的參數和參數的類型。而是,開發者可查看智慧合約介面304中的智慧合約定義,例如透過其標頭檔,來確定如何調用位於區塊鏈網路212上的智能合約調用。一旦開發者分析了智慧合約介面304中的智慧合約定義,開發者就可以將該智慧合約定義作為一個函式呼叫併入他/她的軟體應用程式中,以執行所需函數。例如,智慧合約介面304允許開發者透過使用他/她的軟體應用程式302執行所需函數,包括產生新智慧合約、創建智慧合約的一個或多個新函數/方法、調用區塊鏈網路212上先前部署的智慧合約、以及調用區塊鏈網路212上先前部署的智慧合約的一個或多個函數/方法,僅舉幾例。
在一些實施方式中,開發者可透過與智慧合約介面304介接(interface)在他/她的軟體應用程式302中創建智能合約。具體地,智慧合約介面304允許開發者編寫執行對智慧合約介面304的本地調用的軟體,以執行一個或多個函數306。例如,一個或多個函數306可包括調用存在於區塊鏈網路212上的先前部署的智慧合約、在區塊鏈網路212上找到的智慧合約的一個或多個函數、或調用區塊鏈網路212上的新智能合約。在一些實施方式中,區塊鏈網路212可包括多個智慧合約,每個智慧合約具有其自己的函數306的集。智慧合約介面304允許使用者調用在區塊鏈網路212上找到的每個智慧合約以及每個智慧合約的每個函數。
如智慧合約介面304所定義的,在區塊鏈網路212上找到的每個智慧合約可以包括開發者可以調用的可變數量的函數和/或方法。為了使開發者存取先前部署的智慧合約及其相應函數,開發者必須提供用於智慧合約調用的輸入。例如,智慧合約介面304可以使用應用程式二進位介面(ABI)來調用區塊鏈網路212上的智慧合約,以使用區塊鏈網路212上的智慧合約的函數進行通訊,並接收來自智慧合約的資料。透過利用ABI軟體,開發者可以指定在其軟體應用程式中調用智慧合約中的哪個函數,以及保證該函數將以開發者期望的格式返回資料。
為了執行智慧合約調用,用戶在他/她的軟體應用程式302中指定智能合約的參數。智慧合約參數可具有不同的資料類型。例如,智慧合約參數可以包括加密簽名、布林值、整數值、雜湊值、位元組陣列、金鑰、字串值、資料位址、網路位址、埠號、使用者識別項、函數識別字和其他類型的參數。
在一些實施方式中,智慧合約介面304説明開發者調用一個或多個函數306。智慧合約介面304可以預填充來自軟體應用程式302的智慧合約調用的一個或多個輸入。例如,智慧合約調用可要求開發者輸入五個輸入:所述輸入包括如該智慧合約調用的函式定義所描述的字串類型、int類型、char類型、int*類型和char*類型。智慧合約介面304可以指示開發者只需要輸入字串類型和char*類型的輸入。字串類型可以對應於智慧合約的名稱,char*類型對應於被用於儲存要被傳遞到區塊鏈網路212上的智慧合約的資料的緩衝器。智慧合約介面304可以自動填充剩餘的三個輸入。
在一些實施方式中,智慧合約介面304可以向開發者顯示智慧合約函數的定義及一個或多個智慧合約的定義的代表性形式。例如,所述代表性形式可包括解釋檔、標頭檔、供開發者查閱的庫檔、以及指示開發者如何調用智慧合約及其相應函數的手冊。
在一些實施方式中,智慧合約介面304可以對開發者在軟體應用程式302中輸入的參數執行參數轉換。智慧合約介面304將開發者輸入的由標頭檔中的函式定義所定義的參數轉換成例如調用區塊鏈網路212上的智慧合約所需的輸入。例如,智慧合約介面304可以將使用者在介面304上輸入的每個串值或字元值轉換成輸入智慧合約調用所需的位元組u_int8和u_int32值。智慧合約介面304可以執行參數轉換,以減少開發者需要在他/她的軟體應用程式302中輸入的輸入數量。例如,智慧合約介面304可以只要求開發者輸入五個輸入以調用區塊鏈網路212上的智能合約。當智慧合約介面304接收到針對該智慧合約的具有五個輸入的調用時,智慧合約介面304可以產生新命令以調用區塊鏈網路212上的智能合約。例如,智慧合約介面304向區塊鏈網路中的每個節點發送具有十個輸入的函式呼叫。另外的五個輸入可以是由智慧合約介面304輸入的標準化的輸入,其包括一個或多個位址、埠號、用戶名以及與智慧合約調用有關的其他資訊。
另外,智慧合約介面304可以回應於接收到來自軟體應用程式302的對智慧合約的調用,執行表查找以產生在區塊鏈網路212上的智能合約調用。例如,開發者可在軟體應用程式302中提供智慧合約調用,且在執行時,智慧合約介面304可從資料庫中檢索對區塊鏈網路212的智慧合約調用所需的一個或多個參數。這允許開發者在他/她的軟體應用程式302中輸入最少量的用於智慧合約調用的參數,並且不必採取任何附加步驟或添加額外輸入。開發者不必處理使輸入位元組對齊(byte-aligning)的困難,並且確保在正確的位置為智慧合約調用提供正確的輸入。
此外,智慧合約介面304可以對軟體應用程式302的執行進行編譯檢查和錯誤檢查。例如,智慧合約介面304可以執行軟體應用程式302的代碼,並分析每個指令。例如,對於與智慧合約函式呼叫相對應的指令,智慧合約介面304可以確定用戶輸入的輸入類型是否正確,每個輸入的拼寫是否正確、以及輸入的輸入數目是否正確。如果智慧合約介面304確定使用者在輸入上輸入了錯誤,則智慧合約介面304可以向開發者指定通知以糾正錯誤。因此,智慧合約介面304可以在向區塊鏈網路212廣播智慧合約調用之前對智慧合約調用執行第一層錯誤檢查。
另外,智慧合約介面304允許開發者在調用區塊鏈網路212之前輸入他/她的簽名(例如,他/她的私鑰)。開發者可以在執行軟體應用程式302時透過用戶端設備輸入他/她的簽名和公鑰。另外,開發者可以在軟體應用程式302中輸入他/她的簽名和公鑰作為對智慧合約調用的輸入。或者,開發者的簽名和公鑰可被附加到智慧合約調用的末端,以驗證該智慧合約調用來自具有存取授權以與區塊鏈網路212互動以及隨後與智慧合約互動的開發者。另外,區塊鏈網路212將比照區塊鏈網路212的帳本驗證開發者的簽名和公鑰,以驗證開發者的真實性。
回應於智慧合約介面304認證並編譯開發者的軟體應用程式302,智慧合約介面304產生智慧合約訊息以向區塊鏈網路212廣播。特別地,智慧合約介面304可以將來自智慧合約調用的參數以區塊鏈網路212可接受的形式打包在軟體應用程式302中。例如,資訊可以以應用程式二進位介面(ABI)格式編碼,以便傳遞到區塊鏈網路上的智慧合約。特別地,智慧合約介面304可以產生JavaScript物件表示(JavaScript Object Notation(JSON))格式的函數和引數的清單。智慧合約介面304可以對作為智慧合約調用而輸入到軟體應用程式302中的資料以及從資料庫中檢索到的資料進行雜湊處理,以創建智慧合約函式呼叫。ABI格式允許智慧合約介面304編碼用於區塊鏈網路212上的智慧合約調用的有意義的格式,以便在位元組級別上理解該調用。另外,區塊鏈網路212可以從以前部署的ABI格式的智慧合約中接收資料。
智慧合約介面304向區塊鏈網路212提供智慧合約調用。特別地,智慧合約介面304將智慧合約調用廣播至區塊鏈網路212上的多個節點214中的每個節點。區塊鏈網路212上的多個節點214中的每個節點執行雜湊計算,以驗證來自智慧合約介面304的智能合約調用的真實性。特別地,每個節點驗證當前請求智慧合約調用的開發者與在智慧合約調用中找到的開發者的簽名(例如,私鑰)和開發者的公鑰對應。
另外,多個節點214中的每個節點驗證開發者已被授權與先前部署的特定智慧合約通訊或者能夠產生新智慧合約。特別地,每個節點將開發者的簽名與在每個節點處找到的帳本比較。如果每個節點證實開發者的簽名,並且證實開發者能夠與先前部署的智慧合約通訊,或者能夠產生新智慧合約,則每個節點彼此通訊成功。特別地,每個節點將對接收到的智慧合約調用的接受(acceptance)發送給每個其他節點。或者,如果至少一個節點確定智慧合約調用中找到的資料存在錯誤,則這一個節點可以通知所有其他節點該智慧合約調用存在錯誤。然後,區塊鏈網路212可以通知智慧合約介面304智慧合約調用中存在錯誤。智慧合約介面304可以向開發者的用戶端設備發送通知,從而通知開發者該錯誤。
如果多個節點向每個其他節點傳送對所接收到的智慧合約調用的接受,則每個節點執行智慧合約介面304所請求的函數。所述函數可以包括:執行用於先前部署的智慧合約的函數/方法、產生新智慧合約、或調用先前部署的智能合約。例如,響應於多個節點中的每個節點接受所接收到的智慧合約調用,區塊鏈網路212中的每個節點以共識方式執行智慧合約調用。區塊鏈網路中的每個節點執行智慧合約調用的第一指令。如前所述,區塊鏈網路中完成執行第一指令的第一節點將第一指令的執行結果寫入區塊鏈網路212的記憶體中。區塊鏈網路中的其他節點可以驗證第一節點執行第一指令的結果。如果每個節點驗證了結果,則每個節點繼續執行智慧合約調用的第二指令。重複該處理,直到每個節點執行並驗證智慧合約調用的每個指令。跨多個節點214的這種共識驗證確保了智慧合約調用的結果被區塊鏈網路212中的每個節點驗證。
響應於多個節點214對智慧合約調用的結果執行共識驗證,區塊鏈網路212可以將智慧合約調用的結果發送回智慧合約介面304。例如,智慧合約調用的結果可以表示新智慧合約被創建並且被儲存在區塊鏈網路212上。在另一示例中,智慧合約調用的結果可以表示區塊鏈網路212上先前部署的智慧合約函數已被執行,諸如將錢從第一節點轉帳到第二節點。在另一示例中,智慧合約調用的結果可以表示諸如車輛或房屋之類的產品的所有權的變化,已經將權利從一個用戶轉移給不同用戶。智慧合約介面304可以在用戶端設備的顯示器上向開發者顯示結果。開發者可以查看所執行的軟體應用程式302的結果,並繼續執行另一軟體應用程式302或使系統斷電。
圖4描繪了可以根據本文實施方式執行的處理400的示例。在一些實施方式中,可以使用由一個或多個計算設備執行的一個或多個電腦可執行程式來執行處理400。
在402,從區塊鏈網路檢索智慧合約定義,所述智慧合約定義包括多個合約函數,所述多個合約函數來自儲存在由區塊鏈網路維護的區塊鏈中的多個智慧合約。在示例中,智慧合約定義是區塊鏈中的條目,包括當智慧合約例如被用戶端、使用者或區塊鏈網路中的區塊鏈節點調用時要由區塊鏈網路執行的軟體指令。智慧合約定義還可以包括定義智慧合約可以被調用的各種方式的函式定義(例如,將兩個帳號位址作為參數的智慧合約函數稱為“pay()”)。所述函數包括當所述函數被調用時由區塊鏈網路執行的一個或多個軟體指令。在一些情況下,智慧合約定義中的一個或多個軟體指令可以表示為與特定程式設計語言相關聯的位元組碼。在一些情況下,檢索智慧合約定義包括檢索與儲存在區塊鏈中的智慧合約相關聯的位元組碼。
在404,基於智慧合約定義產生智慧合約介面。智慧合約介面可以包括與多個合約函數相對應的多個介面函數。智慧合約介面可以被配置成允許軟體應用程式透過調用相應的介面函數來調用每個合約函數。在一些情況下,產生包括調用參數的對特定合約函數的智慧合約調用包括:從對介面函數的調用中檢索調用參數;以及將該調用參數轉換為智慧合約參數,以便與區塊鏈網路上的相應智慧合約進行通訊。在一些實施方式中,檢索智慧合約定義和產生智慧合約介面是回應於儲存在區塊鏈中的智慧合約定義的變化而自動執行的。
在406,從軟體應用程式接收對特定介面函數的調用,所述調用包括與對應於特定介面函數的特定合約函數的參數相對應的調用參數。
在408,回應於接收到對特定介面函數的調用,產生包括調用參數的對特定合約函數的智慧合約調用。在一些情況下,每個調用參數具有與特定合約函數的對應參數的合約參數類型匹配的參數類型。該參數類型可以包括整數、字串或位元組陣列中的至少一個。
在410,向區塊鏈網路發送智慧合約調用。在一些情況下,智慧合約調用可以透過網路向區塊鏈網路中的節點廣播。
在412,由區塊鏈網路執行智慧合約調用得到的結果被接收並被提供給軟體應用程式。
圖5描繪了根據本文實施方式的裝置500的模組的示例。裝置500可以是被配置成在諸如聯盟區塊鏈網路之類的區塊鏈網路上實現智慧合約調用的軟體處理的實施方式。裝置500可以對應於上述實施方式,並且裝置500包括以下:檢索器或檢索模組502,用於從區塊鏈網路檢索智慧合約定義,所述智慧合約定義包括多個合約函數,所述多個合約函數來自儲存在由區塊鏈網路維護的區塊鏈中的多個智慧合約;第一產生器或第一產生模組504,用於產生表示智慧合約定義的智慧合約介面,所述智慧合約介面包括與多個合約函數相對應的多個介面函數,所述智慧合約介面被配置成允許軟體應用程式透過調用相應的介面函數來調用每個合約函數;接收器或接收模組506,用於從軟體應用程式接收對特定介面函數的調用,所述調用包括與對應於特定介面函數的特定合約函數的參數相對應的調用參數;第二產生器或產生模組508,用於回應於接收到對特定介面函數的調用,產生包括調用參數的對特定合約函數的智慧合約調用;發送器或發送模組510,用於向區塊鏈網路發送智慧合約調用。
在前述實施方式中所示出的系統、裝置、模組或單元可以透過使用電腦晶片或實體來實現,或者可以透過使用具有特定功能的產品來實現。典型的實施設備是電腦,電腦可以是個人電腦、膝上型電腦、行動電話、相機電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、可穿戴設備或這些設備的任意組合。
對於裝置中每個單元的功能和角色的實施處理,可以參考先前方法中相應步驟的實施處理。為了簡明,這裡省略了細節。
由於裝置實施方式基本上對應於方法實施方式,因此對於相關部分,可以參考方法實施方式中的相關描述。先前描述的裝置實施方式僅僅是示例。被描述為單獨組件的單元可以是或不是物理上分離的,並且被顯示為單元的組件可以是或不是物理單元,可以位於一個位置,或者可以分佈在多個網路單元上。基於實際需求可以選擇一些或所有模組,以實現本文的方案的目的。本領域普通技術人員無需付出創造性勞動就可以理解和實現本文的實施方式。
再次參考圖5,它可以被解釋為示出了被配置成在區塊鏈網路上實現智慧合約調用的軟體處理的內部功能模組和結構。執行主體實質上可以是電子設備,該電子設備包括以下:一個或多個處理器;以及儲存所述一個或多個處理器的可執行指令的記憶體。
本文中描述的技術產生一個或多個技術效果。在一些實施例中,透過自動產生用於區塊鏈中的智慧合約的軟體介面庫,所述技術產生可供執行的智慧合約和智慧合約函數的最新定義。在其他實施例中,使用所產生的庫的軟體應用程式將對智慧合約和函數作出較少的錯誤調用(例如,對不存在的函數、無效參數等的調用)。因為這種錯誤調用導致區塊鏈網路和執行產生錯誤調用的軟體應用程式的設備中的額外開銷(例如,透過處理錯誤、處理失敗調用的重試等),所以透過軟體介面庫減少或消除這些錯誤調用可以使調用設備和區塊鏈網路的效率增加以及性能提高。
所描述的主題的實施例可單獨地或組合地包括一個或多個特徵。
例如,在一些實施例中,動作包括:從區塊鏈網路檢索智慧合約定義,所述智慧合約定義包括多個合約函數,所述多個合約函數來自儲存在由區塊鏈網路維護的區塊鏈中的多個智慧合約;產生表示智慧合約定義的智慧合約介面,所述智慧合約介面包括與多個合約函數相對應的多個介面函數,所述智慧合約介面被配置為允許軟體應用程式透過調用相應的介面函數來調用每個合約函數;從軟體應用程式接收對特定介面函數的調用,所述調用包括與對應於特定介面函數的特定合約函數的參數相對應的調用參數;回應於接收到對特定介面函數的調用,產生包括調用參數的對特定合約函數的智慧合約調用;向區塊鏈網路發送智慧合約調用;以及接收來自由區塊鏈網路執行所述智慧合約調用得到的結果,並向所述軟體應用程式提供所述結果。
其他實施方式包括被配置成執行所述方法的動作的對應的系統、裝置、編碼在電腦儲存裝置上的電腦程式。
前述和其他描述的實施例可以各自可選地包括一個或多個以下特徵:
在一些實施例中,檢索智慧合約定義包括檢索與儲存在區塊鏈中的智慧合約相關聯的位元組碼。
在一些實施例中,產生包括調用參數的對特定合約函數的智慧合約調用包括:從對介面函數的調用中檢索調用參數;以及將調用參數轉換為智慧合約參數,以與區塊鏈網路上的相應智慧合約進行通訊。
在一些實施例中,每個調用參數具有與特定合約函數的對應參數的合約參數類型匹配的參數類型。
在一些實施例中,參數類型包括整數、字串或位元組陣列中的至少一個。
在一些實施例中,向區塊鏈網路發送智慧合約調用包括向區塊鏈網路中的多個節點廣播智慧合約調用。
在一些實施例中,檢索智慧合約定義以及產生智慧合約介面是回應於儲存在區塊鏈中的智慧合約定義的變化而自動執行的。
本文中描述的主題、動作和操作的實施方式可以在數位電子電路中、有形體現的電腦軟體或韌體中、電腦硬體中實現,包括本文中公開的結構及其結構等同物,或者它們中的一個或多個的組合。本文中描述的主題的實施方式可以實現為一個或多個電腦程式,例如,一個或多個電腦程式指令模組,編碼在電腦程式載體上,用於由資料處理裝置執行或控制資料處理裝置的操作。載體可以是有形的非暫態電腦可讀媒體,諸如磁片、磁光碟或光碟、固態驅動器、隨機存取記憶體(RAM)、唯讀記憶體(ROM)或其他類型的媒體。可選地或附加地,載體可以是人工產生的傳播訊號,例如,機器產生的電訊號、光訊號或電磁訊號,其被產生來編碼資訊用於傳輸到合適的接收器裝置以供資料處理裝置執行。電腦儲存媒體可以是或部分是機器可讀儲存裝置、機器可讀儲存基板、隨機或串列存取記憶體設備或它們中的一個或多個的組合。電腦儲存媒體不是傳播訊號。
電腦程式也可以被稱為或描述為程式、軟體應用程式、App、模組、軟體模組、引擎、腳本或代碼,可以以任何形式的程式設計語言編寫,包括編譯或演繹性語言、說明或程式性語言;並且它可以配置為任何形式,包括作為獨立程式,或作為模組、元件、引擎、子常式或適於在計算環境中執行的其他單元,所述環境可以包括位於一個或多個位置透過資料通訊網路互連的一個或多個電腦。
電腦程式可以但非必須對應於檔案系統中的檔。電腦程式可以儲存在:保存其他程式或資料的檔的一部分中,例如,儲存在標記語言文檔中的一個或多個腳本;專用於所討論的程式的單個檔;或者多個協調檔,例如,儲存一個或多個模組、副程式或代碼部分的檔。
用於執行電腦程式的處理器包括:例如通用微處理器和專用微處理器,以及任何類型的數位電腦的任何一個或多個處理器。通常,處理器將接收用於執行的電腦程式的指令以及來自耦接到該處理器的非暫態電腦可讀媒體的資料。
術語“資料處理裝置”包括用於處理資料的所有種類的裝置、設備和機器,例如包括可程式設計處理器、電腦或多個處理器或電腦。資料處理裝置可以包括專用邏輯電路,例如FPGA(現場可程式設計閘陣列)、ASIC(專用積體電路)或GPU(圖形處理單元)。除了硬體,所述裝置還可以包括創建電腦程式的執行環境的代碼,例如,構成處理器韌體、協定疊、資料庫管理系統、作業系統或它們中的一個或多個的組合的代碼。
本文中描述的過程和邏輯流程可以由一台或多台電腦或處理器執行一個或多個電腦程式來執行,以進行透過對輸入資料進行運算並產生輸出的操作。過程和邏輯流程也可以由例如FPGA、ASIC或GPU等的專用邏輯電路,或者由專用邏輯電路和一個或多個程式設計電腦的組合來執行。
適合於執行電腦程式的電腦可以基於通用和/或專用微處理器,或任何其他種類的中央處理單元。通常,中央處理單元將從唯讀記憶體和/或隨機存取記憶體接收指令和資料。電腦的元件可包括用於執行指令的中央處理單元和用於儲存指令和資料的一個或多個記憶體設備。中央處理單元和記憶體可以補充有專用邏輯電路或整合在專用邏輯電路中。
通常,電腦還將包括或可操作地耦接至一個或多個儲存裝置,以從一個或多個儲存裝置接收資料或向一個或多個儲存裝置傳送資料。儲存裝置可以是例如磁片、磁光碟或光碟、固態驅動器或任何其他類型的非暫態電腦可讀媒體。然而,電腦不需要具有這樣的設備。因此,電腦可以耦接到一個或多個本地和/或遠端的儲存裝置,例如一個或多個記憶體。例如,電腦可以包括作為電腦的組成部分的一個或多個本機存放區器,或者電腦可以耦接到雲端網路中的一個或多個遠端記憶體。此外,電腦可以嵌入在另一設備中,例如行動電話、個人數位助理(PDA)、移動音訊或視訊播放機、遊戲控制台、全球定位系統(GPS)接收器或例如通用序列匯流排(USB)快閃記憶體驅動器的可擕式儲存裝置,這裡僅舉幾例。
組件可以透過直接或經由一個或多個中間組件彼此可互換地(例如,彼此電連接或光學連接)“耦接”。如果組件中的一個組件被整合到另一個中,則組件也可以被彼此“耦接”。例如,整合到處理器中的儲存組件(例如,L2快取記憶體組件)“耦接到”處理器。
為了提供與用戶的互動,本文中描述的主題的實施方式可以在電腦上實現或配置為與該電腦通訊,該電腦具有:顯示裝置(例如,LCD(液晶顯示器)監視器),用於向使用者顯示資訊;以及輸入裝置,使用者可以透過該輸入裝置向該電腦提供輸入的輸入,例如鍵盤以及例如滑鼠、軌跡球或觸控板等的指標裝置。其他類型的設備也可用於提供與用戶的互動;例如,提供給用戶的回饋可以是任何形式的感官回饋,例如視覺回饋、聽覺回饋或觸覺回饋;並且可以接收來自用戶任何形式的輸入,包括聲音、語音輸入或觸覺輸入。另外,電腦可以透過向使用者使用的設備發送文檔和從使用者使用的設備接收文檔來與用戶互動;例如,透過向使用者設備的web瀏覽器傳送網頁以回應從web瀏覽器接收的請求,或者透過與使用者設備(例如,智慧型電話或電子平板電腦)上運行的應用程式(App)互動。此外,電腦可以透過向個人設備(例如,運行訊息應用程式的智慧型電話)發送文本訊息或其他形式的訊息並反過來從使用者接收回應訊息來與用戶互動。
本文結合系統、裝置和電腦程式元件使用術語“配置為”。對於被配置為執行特定操作或動作的一個或多個電腦的系統,意味著系統已經在其上安裝了在運行中使得該系統執行所述操作或動作的軟體、韌體、硬體或它們的組合。對於被配置為執行特定操作或動作的一個或多個電腦程式,意味著一個或多個程式包括當由資料處理裝置執行時促使所述裝置執行操作或動作的指令。對於被配置為執行特定操作或動作的專用邏輯電路,意味著所述電路具有執行操作或動作的電子邏輯。
雖然本文包含許多具體實施細節,但是這些細節不應被解釋為由申請專利範圍本身限定的對要求保護的範圍的限制,而是作為對特定實施例的具體特徵的描述。在本文中的多個單獨實施方式的上下文中描述的多個特定特徵也可以在單個實施方式中組合實現。相反,在單個實施方式的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合在多個實施方式中實現。此外,儘管上面的特徵可以描述為以某些組合起作用並且甚至最初也如此要求保護,但是在一些情況下,可以從要求保護的組合中刪除來自該組合的一個或多個特徵,並且要求保護可以針對子組合或子組合的變體。
類似地,雖然以特定順序在附圖中描繪了操作並且在申請專利範圍中敘述了操作,但是這不應該被理解為:為了達到期望的結果,要求以所示的特定順序或依次執行這些操作,或者要求執行所有示出的操作。在一些情況下,多工和並行處理可能是有利的。此外,上述實施方式中的各種系統模組和元件的分離不應被理解為在所有實施方式中都需要這種分離,應當理解,所描述的程式元件和系統通常可以一起整合在單個軟體產品中在或者打包成多個軟體產品。
已經描述了主題的特定實施方式。其他實施方式在以下申請專利範圍的範圍內。例如,申請專利範圍中記載的動作可以以不同的循序執行並且仍然實現所期望的結果。作為一個示例,附圖中描繪的過程不一定需要所示的特定順序或次序以實現所期望的結果。在一些情況下,多工和並行處理可能是有利的。
100:環境
102:區塊鏈網路
106,108:計算系統
110:網路
200:概念性架構
202:實體層
204:承載服務層
206:區塊鏈網路層
208:交易管理系統
210:介面
212:區塊鏈網路
214:節點
216:區塊鏈
300:環境
302:軟體應用程式
304:智慧合約介面
306:介面產生器
308:介面產生器
400:處理
500:裝置
502:檢索器
504:第一產生器
506:接收器
508:第二產生器
510:發送器
[圖1]描繪了可用於執行本文實施方式的環境的示例。
[圖2]描繪了根據本文實施方式的概念性架構的示例。
[圖3]描繪了可被用於產生用於執行智慧合約調用的框架的環境的示例。
[圖4]描繪了可以根據本文實施方式執行的處理的示例。
[圖5]描繪了根據本文實施方式的裝置的模組的示例。
在各個附圖中,相同的元件符號表示相同的元件。
212:區塊鏈網路
214:節點
216:區塊鏈
300:環境
302:軟體應用程式
304:智慧合約介面
306:介面產生器
308:介面產生器
Claims (10)
- 一種電腦實現的用於在區塊鏈網路上實現智慧合約調用的方法,所述方法包括: 從所述區塊鏈網路檢索一個或多個智慧合約定義,所述智慧合約定義包括來自多個智慧合約的多個合約函數,所述多個智慧合約儲存在由所述區塊鏈網路維護的區塊鏈中; 產生表示所述智慧合約定義的智慧合約介面,所述智慧合約介面包括與所述多個合約函數相對應的多個介面函數,所述智慧合約介面被配置為允許軟體應用程式透過調用相應的介面函數來調用每個所述合約函數; 從軟體應用程式接收對特定介面函數的調用,所述調用包括與對應於所述特定介面函數的特定合約函數的參數相對應的調用參數; 回應於接收到對所述特定介面函數的所述調用,產生包括所述調用參數的對所述特定合約函數的智慧合約調用;以及 向所述區塊鏈網路發送所述智慧合約調用。
- 如請求項1所述的方法,還包括: 接收由所述區塊鏈網路執行所述智慧合約調用得到的結果,並 向所述軟體應用程式提供所述結果。
- 如請求項1所述的方法,其中,檢索所述智慧合約定義,包括: 檢索與儲存在所述區塊鏈中的智慧合約相關聯的位元組碼。
- 如請求項1所述的方法,其中,產生包括所述調用參數的對所述特定合約函數的智慧合約調用,包括: 從對所述介面函數的所述調用中檢索所述調用參數;以及 將所述調用參數轉換成智慧合約參數,用於與所述區塊鏈網路上的相應智慧合約通訊。
- 如請求項1所述的方法,其中,每個調用參數的參數類型與所述特定合約函數的對應參數的合約參數類型相匹配。
- 如請求項1所述的方法,其中,所述參數類型至少包括整數、字串或位元組陣列。
- 如請求項1所述的方法,其中,向所述區塊鏈網路發送所述智慧合約調用,包括: 將所述智慧合約調用廣播至所述區塊鏈網路中的多個節點。
- 如請求項1所述的方法,其中,回應於儲存在所述區塊鏈中的所述智慧合約定義的變化,自動執行檢索所述智慧合約定義以及產生所述智慧合約介面。
- 一種用於在區塊鏈網路上實現智慧合約調用的系統,包括: 一個或多個處理器;和 一個或多個電腦可讀記憶體,所述電腦可讀記憶體耦接到所述一個或多個處理器,並且其上儲存有指令,所述指令能由所述一個或多個處理器執行以執行請求項1至8中任一項所述的方法。
- 一種用於在區塊鏈網路上實現智慧合約調用的裝置,所述裝置包括用於執行請求項1到8中任一項所述的方法的多個模組。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/CN2019/076887 | 2019-03-04 | ||
PCT/CN2019/076887 WO2019101236A2 (en) | 2019-03-04 | 2019-03-04 | Software interface for smart contracts |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202034199A true TW202034199A (zh) | 2020-09-16 |
TWI706284B TWI706284B (zh) | 2020-10-01 |
Family
ID=66631232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108144252A TWI706284B (zh) | 2019-03-04 | 2019-12-04 | 用於智慧合約的軟體介面 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10812255B2 (zh) |
EP (1) | EP3610630B1 (zh) |
CN (1) | CN110959282B (zh) |
ES (1) | ES2870919T3 (zh) |
PL (1) | PL3610630T3 (zh) |
SG (1) | SG11201909076VA (zh) |
TW (1) | TWI706284B (zh) |
WO (1) | WO2019101236A2 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11270383B1 (en) * | 2017-05-24 | 2022-03-08 | State Farm Mutual Automobile Insurance Company | Blockchain subrogation claims with arbitration |
US11706280B2 (en) * | 2019-03-18 | 2023-07-18 | Red Hat, Inc. | Methods and system for auditing batch jobs using blockchain |
CN110532115B (zh) | 2019-09-04 | 2021-03-05 | 北京海益同展信息科技有限公司 | 用于开发智能合约的系统、方法和装置 |
CN110633076B (zh) * | 2019-09-16 | 2021-05-04 | 杭州趣链科技有限公司 | 一种自动生成Solidity智能合约Java客户端程序的方法 |
CN111581077A (zh) * | 2020-04-08 | 2020-08-25 | 腾讯科技(深圳)有限公司 | 智能合约测试方法、装置 |
CN112270160A (zh) * | 2020-10-10 | 2021-01-26 | 中国信息通信研究院 | 一种基于智能合约分配标识符的方法及装置 |
CN112583608B (zh) * | 2021-02-24 | 2021-05-28 | 浙江口碑网络技术有限公司 | 协作处理方法、装置及设备 |
CN113472512A (zh) * | 2021-06-10 | 2021-10-01 | 东软集团股份有限公司 | 智能合约执行方法、装置、存储介质及电子设备 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9858401B2 (en) * | 2011-08-09 | 2018-01-02 | Biogy, Inc. | Securing transactions against cyberattacks |
US11130042B2 (en) * | 2016-02-02 | 2021-09-28 | Bao Tran | Smart device |
US9849364B2 (en) * | 2016-02-02 | 2017-12-26 | Bao Tran | Smart device |
WO2017153495A1 (en) * | 2016-03-08 | 2017-09-14 | Appii Pty Ltd | A system and method for creating a database of independently validated educational and work experience profiles (curricula vitae) using blockchain smart contracts |
US10022613B2 (en) * | 2016-05-02 | 2018-07-17 | Bao Tran | Smart device |
US10046228B2 (en) * | 2016-05-02 | 2018-08-14 | Bao Tran | Smart device |
CN106919419A (zh) * | 2017-02-03 | 2017-07-04 | 中钞信用卡产业发展有限公司北京智能卡技术研究院 | 区块链上的智能合约程序的更新方法及装置 |
US10158479B2 (en) * | 2017-02-06 | 2018-12-18 | Northern Trust Corporation | Systems and methods for generating, uploading and executing code blocks within distributed network nodes |
US10356102B2 (en) * | 2017-02-24 | 2019-07-16 | Verizon Patent And Licensing Inc. | Permissions using blockchain |
US20180293578A1 (en) * | 2017-04-07 | 2018-10-11 | Blossom Llc | System and methods for implementing secure financial transactions |
CN107147704B (zh) * | 2017-04-21 | 2019-12-13 | 杭州趣链科技有限公司 | 一种面向区块链的通用服务中间件系统 |
CN107274186A (zh) * | 2017-05-11 | 2017-10-20 | 上海点融信息科技有限责任公司 | 在区块链中获得智能合约接口的方法和设备 |
US10146792B1 (en) * | 2017-05-31 | 2018-12-04 | Symbiont.Io, Inc. | Systems and methods for implementing a programming model for smart contracts within a decentralized computer network |
US11461768B2 (en) * | 2017-08-21 | 2022-10-04 | American Express Travel Related Services Company, Inc. | Systems and methods for data file transfer balancing and control on blockchain |
US20190058582A1 (en) * | 2017-08-21 | 2019-02-21 | NIIT Technology Ltd | Accessing blockchain data from applications |
CN107688927A (zh) * | 2017-09-19 | 2018-02-13 | 中国银行股份有限公司 | 一种调用区块链上的智能合约的方法及系统 |
US10528551B2 (en) * | 2017-09-29 | 2020-01-07 | Oracle International Corporation | System and method for providing a representational state transfer proxy service for a blockchain cloud service |
US20190102163A1 (en) * | 2017-10-04 | 2019-04-04 | Dispatch Labs, LLC | System and Method for a Blockchain-Supported Programmable Information Management and Data Distribution System |
US11256712B2 (en) * | 2018-02-05 | 2022-02-22 | Accenture Global Solutions Limited | Rapid design, development, and reuse of blockchain environment and smart contracts |
US20190303926A1 (en) * | 2018-03-30 | 2019-10-03 | Exposition Park Holdings SEZC | Blockchain loan transaction systems and methods |
CA3098182A1 (en) * | 2018-03-30 | 2019-10-03 | Exposition Park Holdings SEZC | Digital asset exchange |
CN108510389B (zh) * | 2018-03-30 | 2020-12-18 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
US20190361917A1 (en) * | 2018-05-25 | 2019-11-28 | Bao Tran | Smart device |
CN108765158B (zh) | 2018-05-31 | 2020-11-24 | 杭州溪塔科技有限公司 | 一种基于区块链的智能合约引擎系统及其合约执行方法 |
CN109274524B (zh) * | 2018-08-28 | 2021-12-24 | 广东工业大学 | 一种基于联盟区块链的设备管理与共享系统 |
-
2019
- 2019-03-04 WO PCT/CN2019/076887 patent/WO2019101236A2/en unknown
- 2019-03-04 EP EP19725889.0A patent/EP3610630B1/en active Active
- 2019-03-04 SG SG11201909076V patent/SG11201909076VA/en unknown
- 2019-03-04 ES ES19725889T patent/ES2870919T3/es active Active
- 2019-03-04 PL PL19725889T patent/PL3610630T3/pl unknown
- 2019-03-04 CN CN201980003036.6A patent/CN110959282B/zh active Active
- 2019-09-30 US US16/587,371 patent/US10812255B2/en active Active
- 2019-12-04 TW TW108144252A patent/TWI706284B/zh active
Also Published As
Publication number | Publication date |
---|---|
TWI706284B (zh) | 2020-10-01 |
WO2019101236A2 (en) | 2019-05-31 |
SG11201909076VA (en) | 2019-10-30 |
US20200287706A1 (en) | 2020-09-10 |
CN110959282A (zh) | 2020-04-03 |
US10812255B2 (en) | 2020-10-20 |
EP3610630B1 (en) | 2021-03-03 |
CN110959282B (zh) | 2022-05-31 |
EP3610630A4 (en) | 2020-06-17 |
WO2019101236A3 (en) | 2020-01-02 |
EP3610630A2 (en) | 2020-02-19 |
PL3610630T3 (pl) | 2021-07-26 |
ES2870919T3 (es) | 2021-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI706284B (zh) | 用於智慧合約的軟體介面 | |
US10678597B2 (en) | Event-driven blockchain workflow processing | |
US20230419319A1 (en) | Duplicating smart contracts with termination condition | |
CN110945550B (zh) | 在可信执行环境下处理和存储区块链数据 | |
EP3769490B1 (en) | Implementing a blockchain-based web service | |
EP3837652B1 (en) | Distributed blockchain data storage under account model | |
US20210232558A1 (en) | Data isolation in a blockchain network | |
US20210216522A1 (en) | Distributed blockchain data storage under account model | |
CN110622488B (zh) | 用于管理用户与区块链的交互的系统和方法 | |
WO2018177124A1 (zh) | 业务处理方法、装置、数据共享系统及存储介质 | |
CN111066047B (zh) | 实现基于区块链的工作流 | |
JP2022520656A (ja) | ブロックチェーンネットワークを介した移転を実施するためのコンピュータで実施されるシステムおよび方法 | |
KR20210003234A (ko) | 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것 | |
TW202121226A (zh) | 區塊鏈區塊的非同步處理 | |
WO2020128814A1 (en) | Computer-implemented systems and methods for controlling or enforcing performance of transfers conducted over a blockchain | |
CN110598481B (zh) | 数据存储方法、装置、设备及存储介质 | |
KR20240005957A (ko) | 양자 내성 해싱 스킴을 위한 방법 및 시스템 |