TW202101198A - 實施不同類型的區塊鏈合約的系統和方法 - Google Patents

實施不同類型的區塊鏈合約的系統和方法 Download PDF

Info

Publication number
TW202101198A
TW202101198A TW108145069A TW108145069A TW202101198A TW 202101198 A TW202101198 A TW 202101198A TW 108145069 A TW108145069 A TW 108145069A TW 108145069 A TW108145069 A TW 108145069A TW 202101198 A TW202101198 A TW 202101198A
Authority
TW
Taiwan
Prior art keywords
blockchain
contract
byte code
blockchain contract
virtual machine
Prior art date
Application number
TW108145069A
Other languages
English (en)
Other versions
TWI720724B (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
Application filed by 開曼群島商創新先進技術有限公司 filed Critical 開曼群島商創新先進技術有限公司
Publication of TW202101198A publication Critical patent/TW202101198A/zh
Application granted granted Critical
Publication of TWI720724B publication Critical patent/TWI720724B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本文提供了用於實施區塊鏈合約的方法、系統和裝置,包括編碼在計算機儲存媒體上的計算機程式。所述方法之一包括:獲取區塊鏈合約的位元組碼,其中位元組碼包括指示區塊鏈合約的類型的指示符;至少基於指示符確定與類型相對應的虛擬機;以及觸發所確定的虛擬機以執行區塊鏈合約。

Description

實施不同類型的區塊鏈合約的系統和方法
本申請一般涉及用於實施不同類型的區塊鏈合約的方法和設備。
區塊鏈藉由將資料保存在彼此之間具有先後關係的一系列資料區塊中而以去中心化方式提供資料儲存。區塊鏈由節點網路維護並更新,所述節點也用於驗證資料。最近,區塊鏈已經擴展為提供用於執行區塊鏈合約(例如,智慧合約)的框架,所述區塊鏈合約包括以代碼行編寫的用戶之間的合約條款。區塊鏈合約可以是一種計算機協定,其旨在以數位方式促進、驗證或施行合約的談判或履行。為了處理區塊鏈合約,區塊鏈網路的每個節點運行對應的虛擬機(VM)並執行相同的指令。VM是基於提供實體計算機功能的計算機架構的計算機系統的軟體仿真。在區塊鏈背景下的VM可以理解為設計為作為區塊鏈合約的運行環境運行的系統。 目前,每個區塊鏈系統通常支援一種VM和相應的程式語言。例如,以太坊(Ethereum)支援需要以solidity(面向合約的程式語言,用於編寫由EVM實施的區塊鏈合約)程式化的以太坊虛擬機(EVM)。以太坊區塊鏈系統不支援諸如c++、Java、Python等其他程式語言的合約語言。這阻止了以其他程式語言編寫的區塊鏈合約的接受,並拒絕了尚未掌握solidity語言的用戶。這種缺陷抑制了創新,並限制了區塊鏈系統的應用。
本文的不同實施例包括但不限於用於實施不同類型的區塊鏈合約的系統、方法和非暫態計算機可讀媒體。 根據一些實施例,一種計算機實現的用於實施區塊鏈合約的方法包括:獲得區塊鏈合約的位元組碼,其中,位元組碼包括指示區塊鏈合約的類型的指示符;至少基於指示符來確定與類型相對應的虛擬機;以及觸發所確定的虛擬機以執行區塊鏈合約。 根據一個實施例,獲得區塊鏈合約的位元組碼包括:從客戶端設備獲得區塊鏈合約的位元組碼,其中,位元組碼是從區塊鏈合約的原始碼編譯的,原始碼包括指示符。 根據另一實施例,獲得所述區塊鏈合約的位元組碼包括:從客戶端設備獲得區塊鏈合約的原始碼,原始碼包括指示符;以及編譯原始碼以獲得區塊鏈合約的位元組碼。 根據另一實施例,獲得所述區塊鏈合約的位元組碼包括:從客戶端設備獲得用於執行區塊鏈合約的原始位元組碼,其中,原始位元組碼是從用於執行區塊鏈合約的原始原始碼編譯的;以及將指示符添加至原始位元組碼以獲得區塊鏈合約的位元組碼。 根據另一實施例,獲得區塊鏈合約的位元組碼包括:從客戶端設備獲得用於執行區塊鏈合約的原始原始碼;編譯原始原始碼以獲得原始位元組碼;以及將指示符添加至原始位元組碼以獲得區塊鏈合約的位元組碼。 根據一些實施例,指示符對應於區塊鏈合約的位元組碼的第一位元組。 根據其他實施例,區塊鏈合約的類型為solidity合約或者原生合約。 根據其他實施例,類型與程式語言相關聯。 根據其他實施例,編程式言包括c++、java、solidity或者python;與c++相對應的虛擬機為GNU編譯器集合(GCC);與Java相對應的虛擬機是Java虛擬機(JVM);與solidity相對應的虛擬機是以太坊虛擬機(EVM);以及與python相對應的虛擬機是python虛擬機(PVM)。 根據一些實施例,一種用於實施區塊鏈合約的系統包括:一個或多個處理器;以及一個或多個非暫態計算機可讀記憶體,其耦接至一個或多個處理器並且配置有可由一個或多個處理器執行的指令,以使該系統執行操作,所述操作包括:獲得區塊鏈合約的位元組碼,其中,位元組碼包括指示區塊鏈合約的類型的指示符;至少基於指示符來確定與類型相對應的虛擬機;以及觸發所確定的虛擬機以執行區塊鏈合約。 根據其他實施例,一種用於實施區塊鏈合約的非暫態計算機可讀儲存媒體,所述儲存媒體配置有可由一個或多個處理器執行的指令,以使一個或多個處理器執行操作,所述操作包括:獲得區塊鏈合約的位元組碼,其中,位元組碼包括指示區塊鏈合約的類型的指示符;至少基於指示符來確定與類型相對應的虛擬機;以及觸發所確定的虛擬機以執行區塊鏈合約。 根據其他實施例,一種用於實施區塊鏈合約的裝置包括:獲得模組,用於獲得區塊鏈合約的位元組碼,其中,位元組碼包括指示區塊鏈合約的類型的指示符;確定模組,用於至少基於指示符來確定與類型相對應的虛擬機;以及觸發模組,用於觸發所確定的虛擬機以執行區塊鏈合約。 根據一些實施例,一種計算機實現的用於實施區塊鏈合約的方法包括:生成區塊鏈合約的位元組碼,其中,位元組碼包括指示區塊鏈合約的類型的指示符;以及將區塊鏈合約的位元組碼傳送至區塊鏈節點,以使區塊鏈節點基於指示符觸發與類型相對應的虛擬機從而執行區塊鏈合約。 根據其他實施例,生成區塊鏈合約的位元組碼包括:編譯區塊鏈合約的原始碼以獲得區塊鏈合約的位元組碼,原始碼包括指示符。 根據其他實施例,生成區塊鏈合約的位元組碼包括:編譯用於執行區塊鏈合約的原始原始碼以獲得用於執行區塊鏈合約的原始位元組碼;以及添加指示符至原始位元組碼以獲得區塊鏈合約的位元組碼。 根據一些實施例,一種用於實施區塊鏈合約的系統包括:一個或多個處理器;以及一個或多個非暫態計算機可讀記憶體,其耦接至一個或多個處理器並且配置有可由一個或多個處理器執行的指令,以使該系統執行操作,所述操作包括:生成區塊鏈合約的位元組碼,其中,位元組碼包括指示區塊鏈合約的類型的指示符;以及將區塊鏈合約的位元組碼傳送至區塊鏈節點,以使區塊鏈節點基於指示符觸發與類型相對應的虛擬機從而執行區塊鏈合約。 根據其他實施例,一種用於實施區塊鏈合約的非暫態計算機可讀儲存媒體,所述儲存媒體配置有可由一個或多個處理器執行的指令以使一個或多個處理器執行操作,所述操作包括:生成區塊鏈合約的位元組碼,其中,位元組碼包括指示區塊鏈合約的類型的指示符;以及將區塊鏈合約的位元組碼傳送至區塊鏈節點,以使區塊鏈節點基於指示符觸發與類型相對應的虛擬機從而執行區塊鏈合約。 根據其他實施例,一種用於實施區塊鏈合約的裝置包括:生成模組,用於生成區塊鏈合約的位元組碼,其中,位元組碼包括指示區塊鏈合約的類型的指示符;以及傳送模組,用於將區塊鏈合約的位元組碼傳送至區塊鏈節點,以使區塊鏈節點基於指示符觸發與類型相對應的虛擬機從而執行區塊鏈合約。 根據一些實施例,一種用於實施區塊鏈合約的系統包括:一個或多個處理器;以及一個或多個計算機可讀記憶體,其耦接至一個或多個處理器並且其上儲存有指令,所述指令可由一個或多個處理器執行以執行前述實施例的任一方法。 根據其他實施例,一種用於實施區塊鏈合約的裝置包括多個模組,用於執行前述實施例的任一方法。 本文中公開的實施例具有一種或多種技術效果。在一些實施例中,位元組碼包含區塊鏈合約(例如,solidity合約、原生合約)的類型的指示符。因此,當區塊鏈節點嘗試執行(例如,部署、調用)區塊鏈合約時,可以根據指示符而觸發相對應的虛擬機。在其他實施例中,作為位元組碼格式,指示符採用位元組碼的第一位元組以便於識別。在一些實施例中,藉由採用這種格式,區塊鏈系統可以容易地以低成本整合不同類型的虛擬機,同時具有可兼容的資料交換。區塊鏈節點(例如,全節點)可以藉由合併不同類型的虛擬機來提高其效率。為了與區塊鏈系統互動,客戶端設備(例如,輕節點)可以不再局限於特定類型的程式語言。在其他實施例中,區塊鏈節點的硬體機器可以存取各種虛擬機(例如,從硬體機器或系統配置中的先前安裝)。區塊鏈節點可以基於接收到的合約的位元組碼來確定合約類型並觸發相對應的虛擬機以執行合約。在其他實施例中,區塊鏈系統可以支援以不同程式語言編寫並對應於不同虛擬機的區塊鏈合約。區塊鏈合約不再需要以專用程式語言編寫。在其他實施例中,不同的虛擬機可以整合到區塊鏈節點的硬體機器上並點擊以部署、調用或以其他方式操作以任何程式語言編寫的區塊鏈合約。在其他實施例中,區塊鏈系統的通信性和兼容性得到了顯著擴展。 在參照附圖考慮以下描述和所附申請專利範圍時,本文公開的系統、方法和非暫時性計算機可讀媒體的這些和其他特徵,以及結構的相關元件的操作的方法和功能以及部件的組合和製造的經濟情況將變得更為明顯,本文的所有附圖形成本說明書的一部分,在不同的附圖中,相同的附圖標記指代相應的部件。然而,應該明確理解,附圖僅用於示例性和說明性,而不旨在限制。
圖1示出根據一些實施例的區塊鏈網路100的示例。如圖所示,區塊鏈網路100可以包括耦接至區塊鏈系統112的一個或多個客戶端設備(例如,節點A、節點B等)。客戶端設備可以包括輕節點。輕節點可以不下載完整的區塊鏈,而是可以只下載區塊頭以驗證區塊鏈交易的真實性。輕節點可以由全節點(例如,區塊鏈系統112中的節點)服務並有效地依賴於全節點以存取區塊鏈的更多功能。輕節點可以藉由安裝適當的軟體在諸如筆記本電腦、行動電話等電子設備中實現。 區塊鏈系統112可以包括多個區塊鏈節點(例如,節點1、節點2、節點3、節點4、節點i等),這些節點可以包括全節點。全節點可以下載每個區塊和區塊鏈交易,並根據區塊鏈的共識規則檢查他們。區塊鏈節點可以形成網路(例如,點對點網路(peer-to-peer network)),一個區塊鏈節點與另一個區塊鏈節點通信。如圖所示的區塊鏈節點的順序和數量只是示例性的並且是為了簡單說明。區塊鏈節點可以在伺服器、計算機等中實現。例如,區塊鏈節點可以在伺服器的集群中實現。伺服器的集群可以採用負載平衡。每個區塊鏈節點可以對應經由各種類型的通信方法諸如TCP/IP耦接在一起的一個或多個實體硬體設備或虛擬設備。根據分類,區塊鏈節點也可以稱為全節點、Geth節點、共識節點等。 客戶端設備和區塊鏈節點中的每一個可以安裝有適當的軟體(例如,應用程式介面)及/或硬體(例如,有線、無線連接)以存取區塊鏈網路100的其他設備。通常,客戶端設備和區塊鏈節點可以透過一個或多個有線或無線網路(例如,網際網路)相互通信,資料可以透過所述一個或多個有線或無線網路傳輸。客戶端設備和區塊鏈節點中的每一個可以包括一個或多個處理器和耦接至所述一個或多個處理器的一個或多個記憶體。記憶體可以是非暫態的且計算機可讀的,並且配置有可由一個或多個處理器執行的指令,以使所述一個或多個處理器執行本文所述的操作。指令可以儲存在記憶體中,或者可以透過通信網路下載,而無需儲存在記憶體中。儘管客戶端設備和區塊鏈節點在此附圖中示出為單獨的組件,但應認識到,這些系統和設備可以作為單個設備或耦接在一起的多個設備來實現。也就是說,客戶端設備(例如,節點A)可以交替整合到區塊鏈節點(例如,節點1)中。 客戶端設備諸如節點A和節點B可以安裝有適當的區塊鏈軟體以啟動、轉發或存取區塊鏈交易。節點A可以透過與節點1或者一個或多個其他區塊鏈節點的通信來存取區塊鏈,節點B可以透過與節點2或者一個或多個其他區塊鏈節點的通信來存取區塊鏈。節點A可以通過節點1或類似節點向區塊鏈提交區塊鏈交易,以請求將區塊鏈交易添加到區塊鏈中。提交的區塊鏈交易可以包括用於部署在區塊鏈上的區塊鏈合約(例如,智慧合約)。在一些實施例中,術語“區塊鏈交易”(或者簡稱“交易”)可以經由區塊鏈系統實施並記錄到區塊鏈。區塊鏈交易可以包括,例如,金融交易、用於部署或調用區塊鏈合約的區塊鏈合約交易、更新區塊鏈的狀態(例如,世界狀態)的區塊鏈交易等。區塊鏈交易並非必需涉及金融交易。 區塊鏈可由區塊鏈節點維護,區塊鏈節點可各自包括記憶體或耦接到記憶體。在一些實施例中,記憶體可以儲存池資料庫(pool database)。池資料庫可以以分布式被多個區塊鏈節點存取。例如,池資料庫可以分別儲存在區塊鏈節點的記憶體中。池資料庫可以儲存由類似於節點A的一個或多個客戶端設備提交的多個區塊鏈交易。 在一些實施例中,在接收到未確認的區塊鏈交易的區塊鏈交易請求後,接收方區塊鏈節點可以對區塊鏈交易進行一些初步驗證。例如,節點1可以在從節點A接收到區塊鏈交易後進行初步驗證。一旦驗證,區塊鏈交易就可以被儲存在接收方區塊鏈節點(例如,節點1)的池資料庫中,該接收方區塊鏈節點也可以將該區塊鏈交易轉發給一個或多個其他區塊鏈節點(例如,節點3、節點4)。一個或多個其他區塊鏈節點可以重複接收方節點進行的過程。 一旦對應池資料庫中的區塊鏈交易達到一定水平(例如,閾值數量),區塊鏈節點就可以各自根據共識規則或其他規則來驗證對應池資料庫中的一批區塊鏈交易。如果區塊鏈交易涉及區塊鏈合約(例如,智慧合約),區塊鏈節點可以在本地執行區塊鏈合約。區塊鏈合約可以包括用戶編寫的合約代碼。例如,區塊鏈交易可以將資料編碼為合約代碼,用於資料儲存(藉由合約部署)或檢索(藉由調用部署的合約)。 根據共識規則成功驗證其批次的區塊鏈交易的特定區塊鏈節點可以將區塊鏈交易打包到其區塊鏈的本地副本中,並將結果多播到其他區塊鏈節點。該特定區塊鏈節點可以是首先成功完成驗證、獲得驗證權限、或者基於其他共識規則等確定的區塊鏈節點。然後,其他區塊鏈節點可以在本地執行區塊鏈交易,相互驗證執行結果(例如,藉由執行哈希計算),以及將其區塊鏈的副本與特定區塊鏈節點的副本同步。藉由更新其區塊鏈的本地副本,其他區塊鏈節點可以將區塊鏈交易中的此類資訊寫入各自的本地記憶體中。因此,區塊鏈合約可以部署在區塊鏈上。如果驗證在某些點失敗,則區塊鏈交易被拒絕。 部署的區塊鏈合約可以具有位址,根據該位址可以存取部署的合約。區塊鏈節點可以藉由向區塊鏈合約輸入某些參數來調用部署的區塊鏈合約。在一個實施例中,節點B可以請求調用部署的區塊鏈合約來執行各種操作。例如,可以檢索儲存在部署的區塊鏈合約中的資料。另一示例,資料可以被添加到部署的區塊鏈合約。再一個示例,可以執行在部署的區塊鏈合約中指定的金融交易。儘管上文所述,其他類型的區塊鏈系統和相關的共識規則可應用於所公開的區塊鏈系統。參照圖2A和圖2B,下面提供部署和調用區塊鏈合約的示例。 圖2A和圖2B示出根據一些實施例的用於實施區塊鏈合約的框架。圖2A示出根據一些實施例部署區塊鏈合約。在一些實施例中,區塊鏈合約可以從其在原始碼中的構造開始。例如,用戶A可以將區塊鏈合約程式化為原始碼,並將原始碼輸入到用戶端應用211的介面。在此附圖中,用戶端應用211被安裝在節點A中。原始碼可以用Java、c++、python、solidity等程式語言編寫。為了部署區塊鏈合約,節點A可以使用相應的編譯器212編譯區塊鏈合約原始碼,編譯器212將原始碼轉換成位元組碼。位元組碼可以是從原始碼編譯成為軟體解釋器設計的低級代碼的程式代碼。在接收到位元組碼後,用戶端應用可以生成包括位元組碼的區塊鏈交易A,並將該區塊鏈交易提交給一個或多個區塊鏈節點。例如,區塊鏈交易可以包括以下資訊:nonce(例如,區塊鏈交易序列號)、from(例如,用戶A的帳號的位址)、to(例如,如果部署區塊鏈合約,則為空)、GasLimit(例如,為區塊鏈交易所消費的區塊鏈交易費用的上限)、GasPrice(例如,由發送方提供的區塊鏈交易費用)、value(例如,金融交易數量)、data(例如,位元組碼)等。節點A可以用各種加密方式對區塊鏈交易進行簽名,以表示節點A的認可。 節點A可以透過遠程過程調用(RPC)介面213將區塊鏈交易發送到區塊鏈節點(例如,節點1)。RPC是一種協定,第一程式(例如,用戶端應用)可以使用該協定從位於網路上的另一台計算機(例如,區塊鏈節點)的第二程式請求服務,而無需瞭解網路的細節。當第一程式使得過程在不同的位址空間(例如,在節點1上)執行時,就如同正常(本地)過程調用,而無需程式員明確地編碼遠程互動的細節。 儘管編譯器被示出為包括在客戶端設備節點A中,但在一些實施例中,編譯器可以備選地包括在客戶端設備可存取的另一設備中。客戶端設備可以遠程耦接到編譯器以將原始碼編譯成位元組碼。在一些其他實施例中,編譯器可以備選地包括在區塊鏈節點(例如,節點1)中或者在區塊鏈節點可存取的另一設備中。區塊鏈節點可以從客戶端設備獲取原始碼,並使用編譯器將原始碼編譯成位元組碼。在其他實施例中,客戶端設備(例如,無論是否包括編譯器的節點A)可以與區塊鏈節點(例如,節點1)整合。然後,由客戶端設備執行的步驟可以由區塊鏈節點執行。 在一些實施例中,由區塊鏈節點(例如,節點1)獲得的位元組碼可以遵循下文參照圖3A描述的格式。例如,位元組碼可以包括指示區塊鏈合約的類型的指示符等。對於區塊鏈節點,有多種方式來獲得包括指示符的位元組碼。在一個示例中,指示符的原始碼版本可以包括在原始碼中,然後原始碼被編譯為位元組碼,使得位元組碼包括指示符的位元組碼版本。用戶、客戶端設備或區塊鏈節點可以將指示符的原始碼版本添加到原始碼。在另一示例中,原始碼不包括指示符,在原始碼被編譯成位元組碼之後,指示符的位元組碼版本可以被包括在位元組碼中。用戶、客戶端設備或區塊鏈節點可以將指示符的位元組碼版本添加到位元組碼。 在接收到區塊鏈交易時,如上文所述,節點1可以驗證區塊鏈交易是否有效。例如,可以驗證節點A的簽名和其他格式。如果驗證成功,節點1可以將區塊鏈交易廣播到包括其他各種區塊鏈節點的區塊鏈網路。一些區塊鏈節點可以參與區塊鏈交易的挖掘過程。由節點A發送的區塊鏈交易可以被特定節點取來進行共識驗證,以打包成新區塊。該特定節點可以為區塊鏈合約創建與合約帳號位址相關的合約帳號。該特定節點可以觸發其本地虛擬機(VM)執行區塊鏈合約,從而將區塊鏈合約部署到其區塊鏈的本地副本,並更新區塊鏈中的帳號狀態。如果該特定節點成功挖掘新區塊,則該特定節點可以將新區塊廣播至其他區塊鏈節點。其他區塊鏈節點可以驗證由該特定區塊鏈節點挖掘的新區塊。如果達成共識,區塊鏈交易被分別打包到由區塊鏈節點維護的區塊鏈的本地副本中。區塊鏈節點可以類似地觸發其本地虛擬機(例如,本地VM 1、本地VM i、本地VM 2)執行區塊鏈合約,從而調用部署在區塊鏈的本地副本(例如,本地區塊鏈副本1、本地區塊鏈副本i、本地區塊鏈副本2)上的區塊鏈合約,並進行相應的更新。每個區塊鏈節點的硬體機器可以存取一個或多個虛擬機,所述虛擬機可以是相應區塊鏈節點的一部分或耦接到相應區塊鏈節點。每次,相應的本地VM可以被觸發來執行區塊鏈合約。同樣,將執行新區塊中的所有其他區塊鏈交易。輕節點也可以同步到更新後的區塊鏈。 圖2B示出根據一些實施例的調用部署的區塊鏈合約。這些步驟類似於上述區塊鏈合約部署,但對傳輸的資料進行了某些更改。在一些實施例中,用戶B可以程式化指令以調用原始碼中的區塊鏈合約,並將原始碼輸入到用戶端應用221的介面。在此附圖中,用戶端應用221被安裝在節點B中。原始碼可以用java、c++、python、solidity等程式語言編寫。為了調用區塊鏈合約,節點B可以使用相應編譯器222編譯指令,編譯器222將原始碼轉換成位元組碼。在接收到位元組碼後,用戶端應用可以生成包括位元組碼的區塊鏈交易B,並將區塊鏈交易提交給一個或多個區塊鏈節點。例如,區塊鏈交易可以包括以下資訊:諸如nonce(例如,區塊鏈交易序列號)、from(例如,用戶B的帳號的位址)、to(例如,部署的區塊鏈合約的位址)、GasLimit(例如,為區塊鏈交易所消費的區塊鏈交易費用的上限)、GasPrice(例如,由發送方提供的區塊鏈交易費用)、value(例如,金融交易數量)、data(例如,位元組碼)等。節點B可以用各種加密方法對區塊鏈交易進行簽名,以表示節點B的認可。節點B可以透過遠程過程調用(RPC)介面223將區塊鏈交易發送到區塊鏈節點(例如,節點2)。 類似於上文描述,雖然編譯器被示出為包括在客戶端設備節點B中,但在一些實施例中,編譯器可以備選地包括在客戶端設備可存取的另一設備中、區塊鏈節點(例如,節點2)中、或區塊鏈節點可存取的另一設備中。在一些實施例中,由區塊鏈節點(例如,節點2)獲得的位元組碼可遵循下文參照圖3B描述的格式。位元組碼可包括或不包括指示區塊鏈合約的類型的指示符。 在接收到區塊鏈交易時,節點2可以驗證區塊鏈交易是否有效。例如,可以驗證節點B的簽名和其他格式。如果驗證成功,節點2可以將區塊鏈交易廣播到包括其他各種區塊鏈節點的區塊鏈網路。一些區塊鏈節點可以參與區塊鏈交易的挖掘過程中。由節點B發送的區塊鏈交易可以被特定節點選取來進行共識驗證,以打包成新區塊。該特定節點可以觸發其本地虛擬機以執行區塊鏈合約,從而調用部署在其區塊鏈的本地副本上的區塊鏈合約,並更新區塊鏈中的帳號狀態。如果該特定節點成功挖掘新區塊,則該特定節點可以將新區塊廣播給其他區塊鏈節點。其他區塊鏈節點可以驗證由該特定區塊鏈節點挖掘的新區塊。如果達成共識,區塊鏈交易將被分別打包到由區塊鏈節點維護的區塊鏈的本地副本中。區塊鏈節點可以類似地觸發其本地虛擬機(例如,本地VM 1、本地VM i、本地VM 2)以執行區塊鏈合約,從而調用部署在區塊鏈的本地副本(例如,本地區塊鏈副本1、本地區塊鏈副本i、本地區塊鏈副本2)上的區塊鏈合約,並進行相應的更新。每個區塊鏈節點的硬體機器可以存取一個或多個虛擬機,所述虛擬機可以是相應區塊鏈節點的一部分或耦接至相應區塊鏈節點。每次,相應的本地VM可以被觸發來執行區塊鏈合約。同樣,將執行新區塊中的所有其他區塊鏈交易。輕節點也可以同步到更新的區塊鏈。 圖3示出根據一些實施例的用於實施區塊鏈合約的位元組碼。下文給出的操作旨在說明性的。取決於實施方式,示例性步驟可以包括以不同順序執行或並行執行的附加步驟、較少步驟或替代步驟。 在一些實施例中,用戶可以用各種程式語言(例如,java、c++、python、solidity等)構造區塊鏈合約。區塊鏈合約可以用各種程式語言編寫成人類可讀的原始碼編寫,前端軟體加載到客戶端設備。然後,編譯器可被觸發來將原始碼編譯成位元組碼。編譯器可以是計算機軟體,其將用一種程式語言編寫的計算機代碼轉換成另一種程式語言。編譯器可以將原始碼從高級程式語言轉換為低級語言(例如,位元組碼),以創建可執行程式。位元組碼,也稱為可移植代碼、P代碼、目標代碼或機器代碼,是為了軟體解釋器有效執行而設計的指令集的形式。不同於人類可讀的原始碼,位元組碼可以包括壓縮數位代碼、常量和參數(例如,數位位址),其對編譯器解析和執行程式對象的語義分析的結果進行編碼。位元組碼可以由相應的VM讀取和執行。 在一些實施例中,客戶端設備(例如,安裝有區塊鏈平臺軟體的行動電話)可以提示用戶輸入、選擇或以其他方式識別區塊鏈合約的合約類型(例如,java編寫的合約、c++編寫的合約、python編寫的合約等)。基於用戶提供的資訊,客戶端設備可以應用指示符來表示合約類型。可選地,客戶端設備藉由分析原始原始碼自動檢測區塊鏈合約的類型,並添加指示符來表示合約類型。例如,“01”(二進制表示)或“0x01”(十六進制表示)可以表示solidity語言的合約,“02”或“0x02”可以代表java語言的合約,“03”或“0x03”可以代表c++語言的合約,“04”或“0x04”可以表示python語言的合約,等等。指示符可以不限於上述表示的示例。指示符可以被添加到區塊鏈合約的編譯位元組碼的前面或其他位置。在一個示例中,指示符可以佔用一個位元組的資料。位元組碼可以作為二進制文件存在,也可以用十六進制表示來表達。本領域的普通技術人員將理解使用各種其他類型的指示符表示、將指示符添加到位元組碼中的其他可選位置以及使用其他位元組空間表示指示符。 在一些實施例中,區塊鏈節點可以存取一個或多個虛擬機。如上所述,當區塊鏈節點獲得包括指示區塊鏈合約的類型的指示符的位元組碼時,區塊鏈節點可以提取該位元組碼的一部分(例如,第一位元組),並啟動相應的虛擬機以基於所提取的位元組碼部分執行區塊鏈合約。指示符可以由用戶、客戶端設備或區塊鏈節點添加。指示符可以作為原始碼被添加到原始原始碼,然後帶有該指示符的原始原始碼被編譯到位元組碼中。備選地,指示符可以作為位元組碼被添加到從原始原始碼編譯而不包括指示符的原始位元組碼中,以獲得位元組碼。單詞“原始(raw)”可以表示相應的代碼不包括指示符。 在一些實施例中,虛擬機可以將位元組碼轉換為由處理器運行的指令。例如,如果合約代碼是c++,則GNU編譯器集合(GCC)可被調用來執行區塊鏈合約;如果合約代碼是java,則java虛擬機(JVM)可被調用來執行區塊鏈合約;如果合約代碼是solidity,則以太坊虛擬機(EVM)可被調用來執行區塊鏈合約;如果合約代碼是python,則python虛擬機(PVM)可被調用來執行區塊鏈合約。區塊鏈節點可以解析位元組碼的一部分(例如,第一位元組和第二位元組),並觸發相應的虛擬機來執行區塊鏈合約。例如,區塊鏈節點可以部署區塊鏈合約。被觸發的VM可以將位元組碼轉換為可以由處理器運行的匯編語言或其他指令集。例如,可以調用GCC、JVM、EVM、PVM或其他相應的VM來執行區塊鏈合約。 圖4A示出根據一些實施例的用於添加指示符的方法的流程圖。下文給出的操作旨在說明性的。取決於實施方式,示例性步驟可以包括以不同順序執行或並行執行的附加步驟、較少步驟或替代步驟。雖然圖4A使用java作為示例性程式語言,但是可以使用各種其他程式語言來編寫區塊鏈合約。 在步驟411,用戶可以在客戶端設備上以java程式化區塊鏈合約。示例性原始java原始碼的一部分被示出。原始java原始碼可以不包括指示符。 在步驟412,用戶或用戶的客戶端設備可以在java原始碼中添加區塊鏈合約的類型的指示符。 在步驟413,編譯器可以將帶有指示符的原始碼編譯成區塊鏈合約的位元組碼。例如,編譯後的java位元組碼的前幾個位元組被示出。編譯後的java位元組碼可以包括在二進制資料文件中,作為JVM執行區塊鏈合約的指令。 圖4B示出根據一些實施例的用於添加指示符的方法的流程圖。下文給出的操作旨在說明性的。取決於實施方式,示例性步驟可以包括以不同順序執行或並行執行的附加步驟、較少步驟或替代步驟。雖然圖4B使用java作為示例性程式語言,但是可以使用各種其他程式語言來編寫區塊鏈合約。 在步驟421,用戶可以在客戶端設備上以java程式化區塊鏈合約。示例性原始java原始碼的一部分被示出。原始java原始碼可以不包括指示符。 在步驟422,編譯器可以將原始原始碼編譯成區塊鏈合約的原始位元組碼。作為示例,編譯後的原始java位元組碼的前幾個位元組被示出。 在步驟423,客戶端設備可以在編譯後的原始java位元組碼中***區塊鏈合約的類型的指示符,以獲得區塊鏈合約的java位元組碼。作為本文所示的示例,指示符可以被添加到位元組碼的最前面。在此示例中,指示符是02,其表示JVM。 圖5A示出根據本文的一些實施例的用於實施區塊鏈合約的示例性方法510的流程圖。方法510可由圖1的系統100的一個或多個組件(例如,上文所述的節點1、節點2……或節點i或類似設備,或任何節點和一個或多個附加設備諸如節點A的組合)實施。方法510可由包括各種硬體機器及/或軟體的系統或設備(例如,計算機、伺服器)實施。例如,系統或設備可以包括一個或多個處理器和一個或多個非暫態計算機可讀儲存媒體(例如,一個或多個記憶體),所述一個或多個非暫態計算機可讀儲存媒體耦接至所述一個或多個處理器並且配置有可由所述一個或多個處理器執行的指令,以使系統或設備(例如,處理器)執行方法510。下文給出的方法510的操作旨在說明性的。根據實施方式,方法510可以包括以不同順序執行或並行執行的附加步驟、更少步驟或可選步驟。方法510的進一步細節可參考圖1至圖4B和上述相關說明。 在一些實施例中,節點1可以執行方法510。塊511包括獲得區塊鏈合約的位元組碼,其中,該位元組碼包括指示區塊鏈合約的類型的指示符。在一些實施例中,指示符對應於區塊鏈合約的位元組碼的第一個位元組。該指示符可以包括二進制數、十六進制數等。在一些實施例中,區塊鏈合約的類型為solidity合約或原生合約。塊512包括至少基於指示符確定與類型相對應的虛擬機。塊513包括觸發確定的虛擬機以執行區塊鏈合約。 在一個實施例中,獲取區塊鏈合約的位元組碼包括:從客戶端設備獲取區塊鏈合約的位元組碼,其中,該位元組碼由區塊鏈合約的原始碼編譯,原始碼包括指示符(原始碼中)。例如,原始碼可以由客戶端設備編譯以生成位元組碼。 在另一實施例中,獲取區塊鏈合約的位元組碼包括:從客戶端設備獲取區塊鏈合約的原始碼,所述原始碼包括指示符(在原始碼中);編譯原始碼以獲取區塊鏈合約的位元組碼。例如,區塊鏈節點可以包括編譯器或以其他方式存取編譯器來編譯原始碼。 在又一實施例中,獲取區塊鏈合約的位元組碼包括:從客戶端設備獲取用於執行區塊鏈合約的原始位元組碼,其中,原始位元組碼是從用於執行區塊鏈合約的原始原始碼編譯的;以及添加指示符(在位元組碼中)到原始位元組碼以獲得區塊鏈合約的位元組碼。原始原始碼和原始位元組碼可以不包括指示符。原始碼可以由客戶端設備編譯以生成位元組碼。 在又一實施例中,獲取區塊鏈合約的位元組碼包括:從客戶端設備獲取用於執行區塊鏈合約的原始原始碼;編譯原始原始碼以獲取原始位元組碼;以及將指示符(在位元組碼中)添加到原始位元組碼以獲得區塊鏈合約的位元組碼。原始原始碼和原始位元組碼可以不包括指示符。區塊鏈節點可以包括編譯器或以其他方式存取編譯器以編譯原始碼。 在一些實施例中,區塊鏈合約的類型與程式語言相關聯。在一些實施例中,程式語言包括c++、java、solidity或python;對應於c++的虛擬機是GNU編譯器集合(GCC);對應於java的虛擬機是java虛擬機(JVM);對應於solidity的虛擬機是以太坊虛擬機(EVM);對應於python的虛擬機是python虛擬機(PVM)。 圖5B示出根據本文的一些實施例的用於實施區塊鏈合約的示例性方法520的流程圖。方法520可由圖1的系統100的一個或多個組件(例如,節點A、節點B或類似設備,或任何節點和一個或多個附加設備諸如節點1、節點2的組合)實施。方法520可由包括各種硬體機器及/或軟體的系統或設備(例如,計算機、伺服器)實施。例如,系統或設備可以包括一個或多個處理器和一個或多個非暫態計算機可讀儲存媒體(例如,一個或多個記憶體),所述一個或多個非暫態計算機可讀儲存媒體耦接至所述一個或多個處理器並且配置有可由所述一個或多個處理器執行的指令,以使系統或設備(例如,處理器)執行方法520。下文給出的方法520的操作旨在說明性的。根據實施方式,方法520可以包括以不同順序執行或並行執行的附加步驟、更少步驟或可選步驟。方法520的進一步細節可參考圖1至圖4B和上述相關說明。參照圖5A描述的各種實施例也可以應用於圖5B。 在一些實施例中,節點A可以執行方法520。塊521包括:生成區塊鏈合約的位元組碼,其中,該位元組碼包括指示區塊鏈合約的類型的指示符。塊522包括:將區塊鏈合約的位元組碼傳送到區塊鏈節點,以使區塊鏈節點基於指示符觸發與類型相對應的虛擬機以執行區塊鏈合約。 節點A可以包括編譯器或以其他方式存取編譯器以編譯原始碼。在一個實施例中,生成區塊鏈合約的位元組碼包括:編譯區塊鏈合約的原始碼以獲得區塊鏈合約的位元組碼,該原始碼包括指示符。在另一實施例中,生成區塊鏈合約的位元組碼包括:編譯用於執行區塊鏈合約的原始原始碼,以獲得用於執行區塊鏈合約的原始位元組碼;以及將指示符添加至原始位元組碼,以獲得區塊鏈合約的位元組碼。 圖6A示出根據一些實施例的用於實施區塊鏈合約的系統610的方塊圖。系統610(例如,計算機系統)可以是上述節點1、節點2、節點3、...、或節點i或者類似設備或者是所述節點中的任一個和附加設備(例如,節點A)的組合的實施的示例。例如,方法510可由系統610實施。系統610可以包括一個或多個處理器和一個或多個非暫態計算機可讀儲存媒體(例如,一個或多個記憶體),所述一個或多個非暫態計算機可讀儲存媒體耦接至所述一個或多個處理器並且配置有可由所述一個或多個處理器執行的指令,以使系統或設備(例如,處理器)執行上述方法和操作,例如方法510。系統610可包括與指令(例如,軟體指令)相對應的各種單元/模組。 在一些實施例中,系統610可被稱為用於實施區塊鏈合約的裝置。該裝置可以包括:獲得模組611,用於獲取區塊鏈合約的位元組碼,其中該位元組碼包括指示區塊鏈合約的類型的指示符;確定模組612,用於至少基於指示符確定與類型相對應的虛擬機;以及觸發模組613,用於觸發確定的虛擬機以執行區塊鏈合約。 圖6B示出根據一些實施例的用於實施區塊鏈合約的系統620的方塊圖。系統620(例如,計算機系統)可以是節點A、節點B或類似設備或者是所述節點中的任一個和附加設備(例如,節點1、節點2)的組合的實施的示例。例如,方法520可由系統620實施。系統620可以包括一個或多個處理器和一個或多個非暫態計算機可讀儲存媒體(例如,一個或多個記憶體),所述一個或多個非暫態計算機可讀儲存媒體耦接至所述一個或多個處理器並且配置有可由所述一個或多個處理器執行的指令,以使系統或設備(例如,處理器)執行上述方法和操作,例如方法520。系統620可包括與指令(例如,軟體指令)相對應的各種單元/模組。 在一些實施例中,系統620可被稱為用於實施區塊鏈合約的裝置。該裝置可以包括:生成模組621,用於生成區塊鏈合約的位元組碼,其中該位元組碼包括指示區塊鏈合約的類型的指示符;以及傳送模組622,用於將區塊鏈合約的位元組碼傳送至區塊鏈節點,以使區塊鏈節點基於指示符觸發與類型相對應的虛擬機以執行區塊鏈合約。 本文所述的技術由一台或多台專用計算設備實施。專用計算設備可以是桌上型計算機系統、伺服器計算機系統、便攜式計算機系統、手持設備、網路設備、或者結合硬接線及/或程式邏輯以實現所述技術的任何其他設備或設備的組合。專用計算設備可實現為個人計算機、膝上型電腦、行動電話、照相手機、智慧電話、個人數位助理、媒體播放器、導航設備、電子郵件設備、遊戲機、平板電腦、可穿戴設備或其組合。計算設備一般由操作系統軟體控制和協調。常規的操作系統控制和調度計算機處理以執行、進行記憶體管理、提供文件系統、網路、I/O服務,以及提供用戶界面功能,諸如圖形用戶界面(“GUI”),等等。本文所述的各種系統、裝置、儲存媒體、模組和單元可以在專用計算設備、或者一台或多台專用計算設備的一個或多個計算晶片中實現。在一些實施例中,本文所述的指令可以在專用計算設備上的虛擬機中實現。在執行時,所述指令可以使專用計算裝置執行本文所述的各種方法。虛擬機可以包括軟體、硬體或其組合。 圖7是示出計算機系統700的方塊圖,在計算機系統700上可以實施本文所述的任何實施例。系統700可以執行本文所述的方法中的任一種(例如,用於實施區塊鏈合約的方法510或520)。系統700可以在本文所述的系統中的任一種(例如,用於實施區塊鏈合約的系統610或620)中實現。系統700可以在本文所述的節點中的任一個中實現,並配置為執行用於實施區塊鏈合約的相應步驟。計算機系統700包括用於通信資訊的匯流排702或其他通信機制,與匯流排702耦接以處理資訊的一個或多個硬體處理器704。例如,硬體處理器704可以是一個或多個通用微處理器。 計算機系統700還包括耦接至匯流排702的用於儲存資訊和由處理器704可執行的指令的主記憶體706,諸如隨機存取記憶體(RAM)、緩存及/或其他動態儲存設備。主記憶體706也可被用於在由處理器704可執行的指令的執行期間儲存臨時變量或其他中間資訊。當這些指令儲存在處理器704可存取的儲存媒體中時,將計算機系統700呈現到為了執行指令中指定的操作而定制的專用機器中。計算機系統700還包括唯讀記憶體(ROM)708或耦接至匯流排702的用於儲存靜態資訊和處理器704的指令的其他靜態儲存設備。提供儲存設備710,諸如磁碟、光碟或USB拇指驅動器(快閃驅動器)等,並耦接至匯流排702以儲存資訊和指令。 計算機系統700可以使用定制的硬接線邏輯、一個或多個ASIC或FPGA、韌體及/或程式邏輯,其與計算機系統結合而使計算機系統700成為專用機器或將計算機系統700程式化為專用機器,來實施本文所述的技術。根據一個實施例,本文所述的操作、方法和過程由計算機系統700反應於處理器704執行主記憶體706中包含的一個或多個指令的一個或多個序列來執行。這些指令可以從另一儲存媒體諸如儲存設備710讀取到主記憶體706中。執行主記憶體706中包含的指令序列導致處理器704執行本文所述的處理步驟。在替代的實施例中,可以使用硬接線電路代替軟體指令或與軟體指令結合使用。 主記憶體706、ROM 708及/或儲存設備710可包括非暫態儲存媒體。術語“非暫態媒體”和類似術語,在本文中使用時,是指儲存使機器以特定方式運行的資料及/或指令的媒體,所述媒體不包括暫態信號。這種非暫態媒體可包括非揮發性媒體及/或揮發性媒體。例如,非揮發性媒體包括光碟或磁碟,例如儲存設備710。揮發性媒體包括動態記憶體,諸如主記憶體706。非暫態媒體的常見形式包括例如軟碟、軟磁碟、硬碟、固態驅動器、磁帶或任何其他磁資料儲存媒體、CD-ROM、任何其他光學資料儲存媒體、具有孔圖案的任何實體媒體、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他儲存晶片或內存盒、以及他們的網路版本。 計算機系統700還包括耦接至匯流排702的網路介面718。網路介面718為連接到一個或多個本地網路的一個或多個網路鏈接提供雙向資料通信耦合。例如,網路介面718可以是綜合業務數位網路(ISDN)卡、電纜數據機、衛星數據機、或向相應類型的電話線提供資料通信連接的數據機。作為另一示例,網路介面718可以是區域網路(LAN)卡,以提供資料通信連接至可兼容的LAN(或與WAN通信的WAN組件)。也可以實現無線鏈接。在任何這樣的實現中,網路介面718發送和接收攜帶代表各種類型資訊的數位資料流的電信號、電磁信號或光信號。 計算機系統700可以透過網路、網路鏈接和網路介面718發送訊息和接收包括程式代碼的資料。在網際網路示例中,伺服器可以透過網際網路、ISP、本地網路和網路介面718來傳輸應用程式的請求代碼。 接收到的代碼可以在接收時由處理器704執行,及/或儲存在儲存設備710或其他非揮發性記憶體中,以供以後執行。 上述部分所述的每個過程、方法和算法可以被包含在代碼模組中並全部或部分由代碼模組自動執行,所述代碼模組由包括計算機硬體的一個或多個計算機系統或者計算機處理器執行。這些過程和算法可以部分或全部在專用電路中實施。 上述各種特徵和過程可彼此獨立使用,或者可以以各種方式組合使用。所有可能的組合和子組合均應落入本文的範圍內。此外,在一些實施方式中可以省略某些方法或過程方塊。本文所述的方法和過程也不限於任何特定的順序,與其相關的方塊或狀態可以以適當的其他順序執行。例如,所述方塊或狀態可以以不同於具體公開的順序執行,或者多個方塊或狀態可以組合成單個方塊或狀態。方塊或狀態的示例可以串行、並行或以一些其他方式執行。塊或狀態可被添加到所公開實施例或從所公開實施例移除。本文所述的系統和組件的示例可以被配置為不同於所描述的。例如,與所公開的實施例相比,可以將元件添加、移除或重新排列。 本文所述的方法的各種操作可由臨時配置(例如,藉由軟體)或永久配置以執行相關操作的一個或多個處理器至少部分地執行。無論臨時配置或永久配置,這些處理器可以構成處理器實現的引擎,其操作以執行本文所述的一個或多個操作或功能。 類似地,本文所述的方法可以至少部分為處理器實施,一個或多個特定處理器是硬體的示例。例如,方法的至少一些操作可以由一個或多個處理器實現的引擎執行。此外,一個或多個處理器還可以操作以支援 “雲端計算”環境中的相關操作的性能或作為“軟體即服務”(SaaS)。例如,至少一些操作可以由一組計算機(例如,包括處理器的機器)執行,這些操作經由網路(例如,網際網路)和一個或多個適當的介面(例如,應用程式化介面(API))可存取。 某些操作的性能可以分佈在處理器之間,不僅駐留在單個機器內,而且部署在多台機器上。在一些實施例中,處理器或處理器實現的引擎可以位於單個地理位置(例如,在家庭環境、辦公室環境或伺服器場中)。在其他實施例中,處理器或處理器實現的引擎可以分佈在多個地理位置上。 在本文中,多個實例可以實現描述為單個實例的組件、操作或結構。雖然一種或多種方法的單個操作被示出並描述為單獨的操作,但是一個或多個單個操作可以同時執行,而不需要按照所示的順序執行操作。在配置中作為單獨組件呈現的結構和功能可以作為組合結構或組件實現。同樣,作為單個組件呈現的結構和功能可以作為單獨的組件實現。這些和其他變更、修改、添加和改進落入本文主題的範圍內。此外,本文中使用的相關術語(諸如“第一”、“第二”、“第三”等)不表示任何順序、高度或重要性,而是被用於區分一個元件和另一元件。此外,術語“一個”和“多個”在本文中不表示數量限制,而是表示至少一種所述物品的存在。 儘管參考具體實施例描述了主題的概況,但可以對這些實施例進行各種修改和更改,而不背離本文的實施例的更廣泛範圍。詳細說明不應以限制性的意義來理解,各種實施方案的範圍僅由所附的申請專利範圍以及這些申請專利範圍的主題等同的全部範圍來限定。
100:區塊鏈網路 A:節點 B:節點 1~i:節點 211:用戶端應用 212:編譯器 213:遠程過程調用(RPC)介面 VM1~VMi:虛擬機 610:系統 611:獲得模組 612:確定模組 613:觸發模組 620:系統 621:生成模組 622:傳送模組 700:計算機系統 702:匯流排 704:處理器 706:主記憶體 708:唯讀記憶體 710:儲存設備 718:網路介面
[圖1]示出根據一些實施例的用於實施區塊鏈合約的系統。 [圖2A]和[圖2B]示出根據一些實施例的用於實施區塊鏈合約的框架。 [圖3]示出根據一些實施例的用於實施區塊鏈合約的位元組碼。 [圖4A]示出根據一些實施例的用於添加指示符的一種方法的流程圖。 [圖4B]示出根據一些實施例的用於添加指示符的另一種方法的流程圖。 [圖5A]示出根據一些實施例的用於實施區塊鏈合約的一種方法的流程圖。 [圖5B]示出根據一些實施例的用於實施區塊鏈合約的另一種方法的流程圖。 [圖6A]示出根據一些實施例的用於實施區塊鏈合約的一種裝置的方塊圖。 [圖6B]示出根據一些實施例的用於實施區塊鏈合約的另一種裝置的方塊圖。 [圖7]示出計算系統的方塊圖,在該計算機系統中可以實現本文描述的任一實施例。

Claims (20)

  1. 一種計算機實現的用於實施區塊鏈合約的方法,包括: 獲得區塊鏈合約的位元組碼,其中,該位元組碼包括指示該區塊鏈合約的類型的指示符; 至少基於該指示符來確定與該類型相對應的虛擬機;以及 觸發所確定的虛擬機以執行該區塊鏈合約。
  2. 根據請求項1所述的方法,其中,獲得該區塊鏈合約的該位元組碼包括: 從客戶端設備獲得該區塊鏈合約的該位元組碼,其中該位元組碼是從該區塊鏈合約的原始碼編譯的,該原始碼包括該指示符。
  3. 根據請求項1所述的方法,其中,獲得該區塊鏈合約的該位元組碼包括: 從客戶端設備獲得該區塊鏈合約的原始碼,該原始碼包括該指示符;以及 編譯該原始碼以獲得該區塊鏈合約的該位元組碼。
  4. 根據請求項1所述的方法,其中,獲得該區塊鏈合約的該位元組碼包括: 從客戶端設備獲得用於執行該區塊鏈合約的原始位元組碼,其中該原始位元組碼是從用於執行該區塊鏈合約的原始原始碼編譯的;以及 將該指示符添加至該原始位元組碼以獲得該區塊鏈合約的該位元組碼。
  5. 根據請求項1所述的方法,其中,獲得該區塊鏈合約的該位元組碼包括: 從客戶端設備獲得用於執行該區塊鏈合約的原始原始碼; 編譯該原始原始碼以獲得原始位元組碼;以及 將該指示符添加至該原始位元組碼以獲得該區塊鏈合約的該位元組碼。
  6. 根據前述任一請求項該的方法,其中,該指示符對應於該區塊鏈合約的該位元組碼的第一位元組。
  7. 根據前述任一請求項所述的方法,其中,該區塊鏈合約的類型為solidity合約或者原生合約。
  8. 根據前述任一請求項所述的方法,其中,該類型與程式語言相關聯。
  9. 根據請求項8所述的方法,其中: 該編程式語言包括c++、java、solidity或者python; 與c++相對應的該虛擬機為GNU編譯器集合GCC; 與Java相對應的該虛擬機是Java虛擬機JVM; 與solidity相對應的該虛擬機是以太坊虛擬機EVM;以及 與python相對應的該虛擬機是python虛擬機PVM。
  10. 一種用於實現區塊鏈合約的系統,包括: 一個或多個處理器;以及 一個或多個計算機可讀記憶體,耦接至該一個或多個處理器並且其上儲存有指令,該指令能夠由所述一個或多個處理器執行以執行請求項1至9中的任一項所述的方法。
  11. 一種用於實施區塊鏈合約的裝置,包括用於執行請求項1至9中的任一項所述的方法的多個模組。
  12. 一種計算機實現的用於實施區塊鏈合約的方法,包括: 生成區塊鏈合約的位元組碼,其中,該位元組碼包括指示該區塊鏈合約的類型的指示符;以及 將該區塊鏈合約的該位元組碼傳送至區塊鏈節點,以使該區塊鏈節點基於該指示符觸發與該類型相對應的虛擬機從而執行該區塊鏈合約。
  13. 根據請求項12所述的方法,其中,生成該區塊鏈合約的該位元組碼包括: 編譯該區塊鏈合約的原始碼以獲得該區塊鏈合約的位元組碼,該原始碼包括該指示符。
  14. 根據請求項12所述的方法,其中,生成該區塊鏈合約的該位元組碼包括: 編譯用於執行該區塊鏈合約的原始原始碼,以獲得用於執行該區塊鏈合約的原始位元組碼;以及 添加該指示符至該原始位元組碼,以獲得該區塊鏈合約的該位元組碼。
  15. 根據請求項12-14中的任一項所述的方法,其中,該指示符對應於該區塊鏈合約的該位元組碼的第一位元組。
  16. 根據請求項12-14中的任一項所述的方法,其中,該區塊鏈合約的類型為solidity合約或原生合約。
  17. 根據請求項12-14中的任一項所述的方法,其中,該類型與程式語言相關。
  18. 根據請求項17所述的方法,其中: 該編程式語言包括c++、java、solidity或者python; 與c++相對應的該虛擬機為GNU編譯器集合GCC; 與Java相對應的該虛擬機是Java虛擬機JVM; 與solidity相對應的該虛擬機是以太坊虛擬機EVM;以及 與python相對應的該虛擬機是python虛擬機PVM。
  19. 一種用於實施區塊鏈合約的系統,包括: 一個或多個處理器;以及 一個或多個計算機可讀記憶體,其耦接至該一個或多個處理器並且其上儲存有指令,該指令能夠由該一個或多個處理器執行以執行請求項12至18中的任一項所述的方法。
  20. 一種用於實施區塊鏈合約的裝置,包括用於執行請求項12至18中的任一項所述的方法的多個模組。
TW108145069A 2019-03-26 2019-12-10 實施不同類型的區塊鏈合約的系統和方法 TWI720724B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
WOPCT/CN2019/079712 2019-03-26
PCT/CN2019/079712 WO2019120316A2 (en) 2019-03-26 2019-03-26 System and method for implementing different types of blockchain contracts

Publications (2)

Publication Number Publication Date
TW202101198A true TW202101198A (zh) 2021-01-01
TWI720724B TWI720724B (zh) 2021-03-01

Family

ID=66994196

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108145069A TWI720724B (zh) 2019-03-26 2019-12-10 實施不同類型的區塊鏈合約的系統和方法

Country Status (6)

Country Link
US (4) US10866823B2 (zh)
EP (1) EP3612930A4 (zh)
CN (2) CN118193137A (zh)
SG (1) SG11201908890XA (zh)
TW (1) TWI720724B (zh)
WO (1) WO2019120316A2 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11605059B2 (en) * 2018-08-03 2023-03-14 Sap Se Software system utilizing blockchain for transactions
EP3542494B1 (en) 2018-12-29 2021-02-17 Advanced New Technologies Co., Ltd. System and method for implementing native contract on blockchain
US10733152B2 (en) 2018-12-29 2020-08-04 Alibaba Group Holding Limited System and method for implementing native contract on blockchain
CN118193137A (zh) 2019-03-26 2024-06-14 创新先进技术有限公司 实施不同类型的区块链合约的***和方法
GB2583738B (en) * 2019-05-07 2021-05-05 Arm Ip Ltd Content distribution integrity control
CN111095338B (zh) * 2019-06-28 2023-06-30 创新先进技术有限公司 用于执行不同类型区块链合约的***和方法
CN110543407B (zh) * 2019-08-21 2021-11-05 杭州趣链科技有限公司 一种Solidity智能合约性能静态分析方法
US10783082B2 (en) 2019-08-30 2020-09-22 Alibaba Group Holding Limited Deploying a smart contract
CN110569110B (zh) * 2019-09-11 2022-01-11 杭州秘猿科技有限公司 支持可交互的多虚拟机的区块链方法、电子设备
CN110659907B (zh) * 2019-09-24 2021-11-12 北京海益同展信息科技有限公司 用于执行智能合约的方法和装置
US11341192B2 (en) * 2020-01-28 2022-05-24 Sap Se Cross platform collaborative document management system
CN111340491B (zh) * 2020-02-25 2023-08-29 中国工商银行股份有限公司 一种松散耦合的区块链自主交易方法、装置和***
CN111338639B (zh) * 2020-03-27 2023-05-16 象链网络科技(上海)有限公司 区块链智能合约虚拟机指令集的实现方法
CN111770202B (zh) 2020-08-31 2021-10-29 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111768184A (zh) 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法及区块链节点
CN111770204B (zh) 2020-08-31 2021-10-22 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111768183B (zh) * 2020-08-31 2024-04-19 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN113872948A (zh) 2020-08-31 2021-12-31 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和节点设备
CN112765676B (zh) * 2020-12-03 2024-07-12 杭州趣链科技有限公司 一种智能合约执行方法、智能合约执行装置及节点设备
CN112527466A (zh) * 2020-12-22 2021-03-19 上海万向区块链股份公司 基于EVM与Wasm虚拟机的多语言智能合约兼容方法及***
CN112685136A (zh) * 2021-01-07 2021-04-20 腾讯科技(深圳)有限公司 一种智能合约运行方法、装置、设备及存储介质
CN113220326B (zh) * 2021-05-11 2022-09-16 支付宝(杭州)信息技术有限公司 智能合约升级方法及区块链***
CN113973115B (zh) * 2021-10-28 2024-02-27 南方电网科学研究院有限责任公司 一种自定义通证流通方法及其相关装置
CN113903219A (zh) * 2021-11-22 2022-01-07 创盛视联数码科技(北京)有限公司 一种编程教学的展示方法、装置、电子设备及存储介质

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092147A (en) * 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
US20050114829A1 (en) * 2003-10-30 2005-05-26 Microsoft Corporation Facilitating the process of designing and developing a project
DE602006004049D1 (de) 2006-09-07 2009-01-15 Research In Motion Ltd Vermittelte Registrierung von Kundenanwendungen und Dienstanbietern mit einem Push-Inhaltsbereitstellungssystem
US20080115125A1 (en) * 2006-11-13 2008-05-15 Cingular Wireless Ii, Llc Optimizing static dictionary usage for signal compression and for hypertext transfer protocol compression in a wireless network
US9164749B2 (en) * 2008-08-29 2015-10-20 Red Hat, Inc. Differential software provisioning on virtual machines having different configurations
US9274919B2 (en) * 2011-04-29 2016-03-01 Dynatrace Software Gmbh Transaction tracing mechanism of distributed heterogenous transactions having instrumented byte code with constant memory consumption and independent of instrumented method call depth
US9495180B2 (en) * 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9942250B2 (en) * 2014-08-06 2018-04-10 Norse Networks, Inc. Network appliance for dynamic protection from risky network activities
US11159599B2 (en) * 2014-10-10 2021-10-26 Dynatrace Llc Method and system for real-time modeling of communication, virtualization and transaction execution related topological aspects of monitored software applications and hardware entities
US9967334B2 (en) * 2015-03-02 2018-05-08 Dell Products Lp Computing device configuration and management using a secure decentralized transaction ledger
EP3350759B2 (en) * 2015-09-17 2023-05-10 Washlava, Inc. System for commercial laundry services and facilities
US10437585B2 (en) 2015-10-23 2019-10-08 Oracle International Corporation Managing highly scalable continuous delivery pipelines
US20170230285A1 (en) * 2015-10-28 2017-08-10 Fractal Industries, Inc. Regulation based switching system for electronic message routing
US11130042B2 (en) 2016-02-02 2021-09-28 Bao Tran Smart device
EP3423999A1 (en) 2016-03-03 2019-01-09 NEC Laboratories Europe GmbH Method for managing data in a network of nodes
WO2017173399A1 (en) 2016-03-31 2017-10-05 Clause, Inc. System and method for creating and executing data-driven legal contracts
US10521775B2 (en) 2016-04-18 2019-12-31 R3 Ltd. Secure processing of electronic transactions by a decentralized, distributed ledger system
US20170345011A1 (en) 2016-05-26 2017-11-30 Hitfin, Inc. System and method executed on a blockchain network
US10447478B2 (en) * 2016-06-06 2019-10-15 Microsoft Technology Licensing, Llc Cryptographic applications for a blockchain system
US11829998B2 (en) * 2016-06-07 2023-11-28 Cornell University Authenticated data feed for blockchains
WO2018006072A1 (en) * 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
US10755327B2 (en) * 2016-07-18 2020-08-25 Royal Bank Of Canada Distributed ledger platform for vehicle records
US11153092B2 (en) 2016-08-30 2021-10-19 Commonwealth Scientific And Industrial Research Organisation Dynamic access control on blockchain
AU2017329089A1 (en) 2016-09-19 2019-04-04 Financial & Risk Organisation Limited Systems and methods for interception of smart contracts
WO2018094297A2 (en) * 2016-11-19 2018-05-24 COSTANZ, Mario A System and method for interaction object reconciliation in a public ledger blockchain environment
CN106598579B (zh) * 2016-12-06 2020-12-25 北京果仁宝科技有限公司 区块链上集成动态类型编程语言方法和装置
CN106598549B (zh) 2016-12-08 2019-02-01 天津米游科技有限公司 一种基于区块链的智能合约***及实现方法
US10243731B2 (en) 2017-01-27 2019-03-26 Accenture Global Solutions Limited Hardware blockchain acceleration
US11349666B2 (en) * 2017-01-27 2022-05-31 Meta Platforms, Inc. Electronically signing and distributing identification data as a service that provides proof of identity, integrity, validity and origin of data for non-repudiation and ID validation methods
EP3355225B1 (en) 2017-01-31 2022-07-27 Sony Group Corporation Apparatus and method for providing a ethereum virtual device
US10742393B2 (en) * 2017-04-25 2020-08-11 Microsoft Technology Licensing, Llc Confidentiality in a consortium blockchain network
US20180365201A1 (en) 2017-06-14 2018-12-20 Clause, Inc. System and method for compound data-driven contracts and documentation
WO2019023286A1 (en) * 2017-07-24 2019-01-31 Martino William SYSTEMS, METHODS AND APPARATUS BASED ON BLOCK CHAIN TO SECURE ACCESS TO INFORMATION STORES
CN107392619B (zh) * 2017-07-31 2020-12-29 众安信息技术服务有限公司 智能合约处理方法及装置
US11146380B2 (en) * 2017-08-03 2021-10-12 Parity Technologies Ltd. Methods and systems for a heterogeneous multi-chain framework
US20190050831A1 (en) * 2017-08-03 2019-02-14 Liquineq AG System and method for multi-tiered distributed network transactional database
US10552556B2 (en) * 2017-08-03 2020-02-04 Liquineq AG System and method for performance testing of scalable distributed network transactional databases
US20190066101A1 (en) 2017-08-22 2019-02-28 Sap Se Transaction Platform Providing Unified View on Multiple Heterogeneous Blockchains
CN109426949B (zh) 2017-08-29 2021-02-09 华为技术有限公司 一种跨链交易方法及装置
US10938567B2 (en) 2017-09-12 2021-03-02 Kadena Llc Parallel-chain architecture for blockchain systems
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
US20190108576A1 (en) 2017-10-11 2019-04-11 Capital One Services, Llc Blockchain systems and methods for procurement
US11568505B2 (en) 2017-10-18 2023-01-31 Docusign, Inc. System and method for a computing environment for verifiable execution of data-driven contracts
WO2019090342A1 (en) 2017-11-06 2019-05-09 Velo Holdings Limited Blockchain system
US11182780B2 (en) 2017-11-13 2021-11-23 American Express Travel Related Services Company, Inc. Secured account provisioning and payments for NFC-enabled devices
CN107833060B (zh) * 2017-11-13 2020-12-25 中国银行股份有限公司 一种区块链中智能合约交易的验证方法以及***
CN107943469B (zh) * 2017-11-17 2022-01-11 深圳圣马歌科技有限公司 一种智能合约的发布方法及装置
WO2019109003A1 (en) 2017-11-30 2019-06-06 Visa International Service Association Blockchain system for confidential and anonymous smart contracts
WO2019113495A1 (en) 2017-12-08 2019-06-13 Solana Labs, Inc. Systems and methods for cryptographic provision of synchronized clocks in distributed systems
GB201720767D0 (en) 2017-12-13 2018-01-24 Barker Trevor Computer-implemented system and method
US11544708B2 (en) 2017-12-29 2023-01-03 Ebay Inc. User controlled storage and sharing of personal user information on a blockchain
CN108833460B (zh) 2018-04-10 2021-05-25 平安科技(深圳)有限公司 基于区块链的音乐发布方法、装置及终端设备
US10833865B2 (en) * 2018-04-30 2020-11-10 Dell Products L.P. Blockchain-based method and system for immutable resource allocation in a cloud computing environment
CN108765158B (zh) 2018-05-31 2020-11-24 杭州溪塔科技有限公司 一种基于区块链的智能合约引擎***及其合约执行方法
US10896195B2 (en) 2018-07-29 2021-01-19 International Business Machines Corporation Automatic generation of smart contracts
US11182379B2 (en) 2018-08-24 2021-11-23 Oracle International Corporation DAG based methods and systems of transaction processing in a distributed ledger
CN109034814B (zh) * 2018-09-14 2020-10-16 百度在线网络技术(北京)有限公司 基于以太坊虚拟机的智能合约处理方法和装置
CN109493042A (zh) 2018-10-24 2019-03-19 南京邮电大学 一种拥有访问控制功能的智能合约可信存证方法和***
EP3542494B1 (en) 2018-12-29 2021-02-17 Advanced New Technologies Co., Ltd. System and method for implementing native contract on blockchain
CN118193137A (zh) * 2019-03-26 2024-06-14 创新先进技术有限公司 实施不同类型的区块链合约的***和方法

Also Published As

Publication number Publication date
CN111033468B (zh) 2024-04-19
US20200142722A1 (en) 2020-05-07
WO2019120316A2 (en) 2019-06-27
EP3612930A2 (en) 2020-02-26
US10860350B2 (en) 2020-12-08
US20200019421A1 (en) 2020-01-16
US10949231B2 (en) 2021-03-16
TWI720724B (zh) 2021-03-01
US11010184B2 (en) 2021-05-18
US20210026668A1 (en) 2021-01-28
EP3612930A4 (en) 2020-06-24
WO2019120316A3 (en) 2020-02-20
CN111033468A (zh) 2020-04-17
US10866823B2 (en) 2020-12-15
SG11201908890XA (en) 2019-10-30
CN118193137A (zh) 2024-06-14
US20210042137A1 (en) 2021-02-11

Similar Documents

Publication Publication Date Title
TWI720724B (zh) 實施不同類型的區塊鏈合約的系統和方法
TWI737233B (zh) 用於執行不同類型區塊鏈合約之系統及方法
US11086847B2 (en) System and method for implementing native contract on blockchain
TWI714483B (zh) 用於資料處理之系統及方法
US10733152B2 (en) System and method for implementing native contract on blockchain