TWI737233B - 用於執行不同類型區塊鏈合約之系統及方法 - Google Patents
用於執行不同類型區塊鏈合約之系統及方法 Download PDFInfo
- Publication number
- TWI737233B TWI737233B TW109109767A TW109109767A TWI737233B TW I737233 B TWI737233 B TW I737233B TW 109109767 A TW109109767 A TW 109109767A TW 109109767 A TW109109767 A TW 109109767A TW I737233 B TWI737233 B TW I737233B
- Authority
- TW
- Taiwan
- Prior art keywords
- blockchain
- blockchain contract
- virtual machine
- byte code
- contract
- Prior art date
Links
Images
Classifications
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- 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
-
- 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
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
- H04L9/0844—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols with user authentication or key authentication, e.g. ElGamal, MTI, MQV-Menezes-Qu-Vanstone protocol or Diffie-Hellman protocols using implicitly-certified keys
-
- 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/3247—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 digital 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/80—Wireless
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Retry When Errors Occur (AREA)
Abstract
提供了用於執行區塊鏈合約的方法、系統和裝置,包括在電腦儲存媒體上編碼的電腦程式。其中一個方法包括:獲得區塊鏈合約的位元組碼,其中所述位元組碼包括一個或多個指示符,並且所述一個或多個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符;以及使用與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約。
Description
本發明一般相關於用於執行不同類型區塊鏈合約的方法和設備。
區塊鏈透過將資料保存在彼此之間具有優先關係的一系列資料區塊中,以去中心化的方式提供資料儲存。區塊的鏈由節點網路維護並更新,該節點網路也負責驗證資料。最近,區塊鏈已經擴展到提供用於執行區塊鏈合約(例如,智慧合約)的框架,區塊鏈合約包括用程式碼行編寫的使用者之間的合約條款。區塊鏈合約可以是一種電腦協定,其旨在以數位方式促進、驗證或施行合約的協商或履行。為了處理區塊鏈合約,區塊鏈網路的每個節點運行相應的虛擬機器(VM)並執行相同的指令。虛擬機器是基於電腦架構的電腦系統的、提供實體電腦的功能的軟體模擬。區塊鏈背景下的虛擬機器可以理解為被設計用作區塊鏈合約的運行時環境的系統。
目前,每個區塊鏈系統通常支援一種類型的虛擬機器和一種相應的程式設計語言。例如,以太坊支援以太坊虛擬機器(EVM),它需要用solidity(面向合約的程式設計語言,用於編寫由EVM實現的區塊鏈合約)程式設計。這會阻止接受用諸如c++、java和python的其他程式設計語言編寫的區塊鏈合約,並且拒絕尚未掌握solidity語言的使用者。如果區塊鏈系統試圖整合多個虛擬機器,則不可避免地提高了成本並且資料格式相容性成為問題。因此,期望提供一種支援以不同程式設計語言編寫並且對應於不同虛擬機器的區塊鏈合約的機制。
本文的各種實施例包括但不限於用於執行不同類型的區塊鏈合約的系統、方法和非暫態電腦可讀媒體。
根據一些實施例,電腦實現的用於執行區塊鏈合約的方法包括:獲得區塊鏈合約的位元組碼,其中所述位元組碼包括一個或多個指示符,並且所述一個或多個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符;以及使用與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約。
根據其他實施例,所述一個或多個指示符還包括指示用於執行所述區塊鏈合約的所述虛擬機器的版本的第二指示符;以及使用與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約包括:使用與所述第一指示符和所述第二指示符相關聯的虛擬機器類型的所述虛擬機器來執行所述區塊鏈合約。
根據一個實施例,獲得所述區塊鏈合約的位元組碼包括:從用戶端設備獲得所述區塊鏈合約的位元組碼,其中所述位元組碼是從所述區塊鏈合約的原始碼編譯的,並且所述原始碼包括所述一個或多個指示符。
根據另一實施例,獲得所述區塊鏈合約的位元組碼包括:從用戶端設備獲得所述區塊鏈合約的原始碼,所述原始碼包括所述一個或多個指示符;以及編譯所述原始碼以獲得區塊鏈合約的位元組碼。
根據又一實施例,獲得所述區塊鏈合約的位元組碼包括:從用戶端設備獲得用於執行所述區塊鏈合約的原始位元組碼,其中所述原始位元組碼是從用於執行所述區塊鏈合約的原始原始碼編譯的;以及將所述一個或多個指示符添加到所述原始位元組碼以獲得所述區塊鏈合約的位元組碼。
根據還一實施例,獲得所述區塊鏈合約的位元組碼包括:從用戶端設備獲得用於執行所述區塊鏈合約的原始原始碼;編譯所述原始原始碼以獲得原始位元組碼;以及將所述一個或多個指示符添加到所述原始位元組碼以獲得所述區塊鏈合約的位元組碼。
根據一些實施例,所述第一指示符與所述區塊鏈合約的位元組碼中第一個位元組對應。
根據一些實施例,所述第二指示符與所述區塊鏈合約的位元組碼中第二個位元組對應。
根據其他實施例,所述區塊鏈合約的位元組碼中第三個到第n個位元組與用於執行所述區塊鏈合約的程式碼對應,n是不小於3的自然數,並且所述區塊鏈合約的位元組碼中第一個到第n個位元組指定應用二進位介面(ABI)格式。
根據其他實施例,使用與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約包括:觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器以在相應的區塊鏈上部署所述區塊鏈合約,所述部署的區塊鏈合約與所述虛擬機器類型相關聯。
根據一些實施例,使用與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約還包括:觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器以調用部署的區塊鏈合約。
根據其他實施例,用於執行所述區塊鏈合約的虛擬機器類型包括:用於執行用c++程式設計語言編寫的區塊鏈合約的GNU編譯器集合(GCC)虛擬機器、用於執行用java程式設計語言編寫的區塊鏈合約的Java虛擬機器(JVM)、用於執行用solidity程式設計語言編寫的區塊鏈合約的以太網虛擬機器(EVM)或用於執行用python程式設計語言編寫的區塊鏈合約的python虛擬機器(PVM)。
根據其他實施例,所述第一指示符包括十六進位數。
根據其他實施例,用於執行區塊鏈合約的系統包括一個或多個處理器以及耦接到所述一個或多個處理器且配置有指令的一個或多個非暫態電腦可讀記憶體,所述指令能由所述一個或多個處理器執行以促使該系統執行操作,這些操作包括:獲得區塊鏈合約的位元組碼,其中所述位元組碼包括一個或多個指示符,並且所述一個或多個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符;以及使用與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約。
根據其他實施例,用於執行區塊鏈合約的非暫態電腦可讀儲存媒體,該儲存媒體配置有能由一個或多個處理器執行的指令,以促使所述一個或多個處理器執行操作,這些操作包括:獲得區塊鏈合約的位元組碼,其中所述位元組碼包括一個或多個指示符,並且所述一個或多個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符;以及使用與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約。
根據其他實施例,用於執行區塊鏈合約的裝置包括:用於獲得區塊鏈合約的位元組碼的獲得模組,其中所述位元組碼包括一個或多個指示符,並且所述一個或多個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符;以及用於使用與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約的執行模組。
根據一些實施例,電腦實現的用於執行區塊鏈合約的方法包括:生成區塊鏈合約的位元組碼,其中所述位元組碼包括一個或多個指示符,並且所述一個或多個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符;以及將所述區塊鏈合約的位元組碼發送到區塊鏈節點,以供所述區塊鏈節點觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約。
根據其他實施例,所述一個或多個指示符還包括指示用於執行所述區塊鏈合約的所述虛擬機器的版本的第二指示符;以及將所述區塊鏈合約的位元組碼發送到所述區塊鏈節點,以供所述區塊鏈節點觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約包括:將所述區塊鏈合約的位元組碼發送到所述區塊鏈節點,以供所述區塊鏈節點觸發與所述第一指示符和所述第二指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約。
根據其他實施例,生成所述區塊鏈合約的位元組碼包括:編譯所述區塊鏈合約的原始碼以獲得所述區塊鏈的所述位元組碼,所述原始碼包括所述一個或多個指示符。
根據其他實施例,生成所述區塊鏈合約的位元組碼包括:編譯用於執行所述區塊鏈合約的原始原始碼,以獲得用於執行所述區塊鏈合約的原始位元組碼;以及將所述一個或多個指示符添加到所述原始位元組碼以獲得所述區塊鏈合約的位元組碼。
根據一些實施例,所述第一指示符與所述區塊鏈合約的位元組碼中第一個位元組對應,所述第二指示符與所述區塊鏈合約的位元組碼中第二個位元組對應,以及所述區塊鏈合約的位元組碼中第三個到第n個位元組與用於執行所述區塊鏈合約的程式碼對應,n是不小於3的自然數,並且所述區塊鏈合約的位元組碼中第一個到第n個位元組指定應用二進位介面(ABI)格式。
根據其他實施例,將所述區塊鏈合約的位元組碼發送到所述區塊鏈節點,以供所述區塊鏈節點觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約包括:將所述區塊鏈合約的位元組碼發送到所述區塊鏈節點,以供所述區塊鏈節點觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器將所述區塊鏈合約部署在對應區塊鏈上,所述部署的區塊鏈合約與所述虛擬機器類型相關聯。
根據其他實施例,將所述區塊鏈合約的位元組碼發送到所述區塊鏈節點,以供所述區塊鏈節點觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行區塊鏈合約,還包括:將所述區塊鏈合約的位元組碼發送到所述區塊鏈節點,以供所述區塊鏈節點觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器調用部署的區塊鏈合約。
根據一些實施例,用於執行區塊鏈合約的系統包括一個或多個處理器以及耦接到所述一個或多個處理器且配置有指令的一個或多個非暫態電腦可讀記憶體,所述指令能夠由所述一個或多個處理器執行以促使所述系統執行操作,這些操作包括:生成區塊鏈合約的位元組碼,其中所述位元組碼包括一個或多個指示符,並且所述一個或多個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符;以及將所述區塊鏈合約的位元組碼發送到區塊鏈節點,以供所述區塊鏈節點觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約。
根據其他實施例,用於執行區塊鏈合約的非暫態電腦可讀儲存媒體,該儲存媒體配置有能由一個或多個處理器執行的指令,以促使所述一個或多個處理器執行操作,這些操作包括:生成區塊鏈合約的位元組碼,其中所述位元組碼包括一個或多個指示符,並且所述一個或多個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符;以及將所述區塊鏈合約的位元組碼發送到區塊鏈節點以供所述區塊鏈節點觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約。
根據其他實施例,用於執行區塊鏈合約的裝置包括用於生成區塊鏈合約的位元組碼的生成模組,其中所述位元組碼包括一個或多個指示符,並且所述一個或多個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符;以及發送模組,所述發送模組用於將所述區塊鏈合約的位元組碼發送到區塊鏈節點,以供所述區塊鏈節點觸發與所述第一指示符相關聯的虛擬機器類型的虛擬機器執行所述區塊鏈合約。
根據其他實施例,用於執行區塊鏈合約的系統包括:一個或多個處理器;以及耦接到所述一個或多個處理器並其上儲存有指令的一個或多個電腦可讀記憶體,所述指令能由所述一個或多個處理器執行以執行前述實施例中任一所述的方法。
根據一些實施例,用於執行區塊鏈合約的裝置包括用於執行前述實施例中任一所述的方法的多個模組。
根據一些實施例,非暫態電腦可讀媒體具有儲存在其上的指令,當所述指令由設備的處理器執行時,促使設備執行前述實施例中任一所述的方法。
本文揭露的實施例具有一個或多個技術效果。在一些實施例中,位元組碼包括用於執行相應的區塊鏈合約的虛擬機器類型的第一指示符。因此,當區塊鏈節點嘗試部署區塊鏈合約時,可以根據位元組碼的這種格式識別要觸發的正確虛擬機器。在其他實施例中,位元組碼還包括用於執行相應的區塊鏈合約的虛擬機器版本的第二指示符。因此,觸發適當版本的虛擬機器以部署區塊鏈合約。在其他實施例中,第一指示符佔據位元組碼中第一個位元組,第二指示符佔據第二個位元組,位元組碼中第三個位元組至第n個位元組對與用於執行區塊鏈合約的程式碼對應,區塊鏈合約的位元組碼中第一個到第n個位元組指定應用二進位介面(ABI)格式。在一些實施例中,透過採用這種格式,區塊鏈系統可以以低成本容易地整合不同類型的虛擬機器,同時具有相容的資料交換。區塊鏈節點(例如,全節點)可以透過合併不同類型的虛擬機器來提高其效率。用戶端設備(例如,輕節點)可以不再限於特定類型的程式設計語言,以便與區塊鏈系統互動。在其他實施例中,區塊鏈系統可以支援以不同程式設計語言編寫並且對應於不同虛擬機器的區塊鏈合約。區塊鏈合約不再需要用獨家程式設計語言編寫。在其他實施例中,可以將不同的虛擬機器整合到區塊鏈節點的硬體機器上,並用於部署、調用或以其他方式操作以任何程式設計語言編寫的區塊鏈合約,而不會產生對不同的虛擬機器單獨開發位元組碼系統的成本。因此,區塊鏈系統的通信性和相容性得到顯著擴展。
本文揭露的系統、方法和非暫態電腦可讀媒體的這些和其他特徵,以及相關結構元件的操作方法和功能,以及部件和製造經濟的組合,將在參考圖式考慮以下描述和所附請求項時變得更加明顯,所有這些形成本說明書的一部分,其中,相同的圖式標記表示各圖式中的對應部分。然而,應該清楚地理解,圖式僅用於說明和描述的目的,而不是限制性的。
圖1示出根據一些實施例的區塊鏈網路100的示例。如圖所示,區塊鏈網路100可以包括耦接到區塊鏈系統112的一個或多個用戶端設備(例如,節點A、節點B等)。用戶端設備可以包括輕節點。輕節點可能無法下載完整的區塊鏈,而是可以只下載區塊頭以驗證區塊鏈交易的真實性。輕節點可以由全節點(例如,區塊鏈系統112中的那些節點)服務並且有效地依賴於全節點來存取區塊鏈中更多函數。透過安裝適當的軟體,可以在諸如膝上型電腦、行動電話等的電子設備中實現輕節點。
區塊鏈系統112可以包括多個區塊鏈節點(例如,節點1、節點2、節點3、節點4、節點i等),這多個區塊鏈節點可以包括全節點。全節點可以下載每個區塊和每個區塊鏈交易,並對照區塊鏈的共識規則進行檢查。區塊鏈節點可以形成網路(例如,點對點網路),其中一個區塊鏈節點與另一區塊鏈節點通信。所示的區塊鏈節點的次序和數量僅僅作為示例並且是為了簡化說明。區塊鏈節點可以在伺服器、電腦等中實現。例如,區塊鏈節點可以在伺服器集群中實現。伺服器集群可以使用負載均衡。每個區塊鏈節點可以對應於一個或多個實體硬體設備或者虛擬裝置,這些實體硬體設備或者虛擬裝置透過諸如TCP/IP的各種類型的通信方法耦接在一起。根據分類,區塊鏈節點還可以被稱為全節點、Geth節點、共識節點等。
用戶端設備和區塊鏈節點中的每一個可以安裝有適當的軟體(例如,應用程式設計介面)及/或硬體(例如,有線、無線連接)以存取區塊鏈網路100中的其他設備。通常,用戶端設備和區塊鏈節點可以透過一個或多個有線或無線網路(例如,網際網路)彼此通信,透過該有線或無線網路可以傳遞資料。用戶端設備和區塊鏈節點中的每一個可以包括一個或多個處理器以及耦接到該一個或多個處理器的一個或多個記憶體。記憶體可以是非暫態的且電腦可讀的,並且配置有一個或多個處理器可執行以促進所述一個或多個處理器執行本文描述的操作的指令。所述指令可以儲存在記憶體中或透過通信網路下載而不必儲存在記憶體中。儘管在該圖中用戶端設備和區塊鏈節點被示為單獨的元件,但是應當理解,這些系統和設備可以實現為單個設備或耦接在一起的多個設備。也即,用戶端設備(例如,節點A)可以可選地整合到區塊鏈節點(例如,節點1)中。
諸如節點A和節點B的用戶端設備可以安裝有適當的區塊鏈軟體以發起、轉發或存取區塊鏈交易。節點A可以透過與節點1或一個或多個其他區塊鏈節點的通信存取區塊鏈,並且節點B可以透過與節點2或一個或多個其他區塊鏈節點的通信存取區塊鏈。節點A可以透過節點1或類似節點向區塊鏈提交區塊鏈交易以請求將該區塊鏈交易添加到區塊鏈中。所提交的區塊鏈交易可以包括用於在區塊鏈上部署的區塊鏈合約(例如,智慧合約)。在一些實施例中,術語“區塊鏈交易”(或簡稱“交易”)可以透過區塊鏈系統實現並記錄到區塊鏈中。區塊鏈交易可以包括,例如,金融交易、用於部署或調用區塊鏈合約的區塊鏈合約交易、用於更新區塊鏈的狀態(例如,世界狀態)的區塊鏈交易等。區塊鏈交易不一定涉及金融交易。
區塊鏈可以由區塊鏈節點維護,每個區塊鏈節點包括或耦接到記憶體。在一些實施例中,記憶體可以儲存池資料庫。池資料庫可以以分散式方式被多個區塊鏈節點存取。例如,池資料庫可以分別儲存在區塊鏈節點的記憶體中。池資料庫可儲存由與節點A類似的一個或多個用戶端設備提交的多個交易。
在一些實施例中,在接收到未確認區塊鏈交易的區塊鏈交易請求之後,接收方區塊鏈節點可以執行區塊鏈交易的一些初步驗證。例如,節點1可以在接收到來自節點A的區塊鏈交易之後執行初步驗證。一旦被驗證,區塊鏈交易可以儲存在接收方區塊鏈節點(例如,節點1)的池資料庫中,該接收方區塊鏈節點也可以將該區塊鏈交易轉發到一個或多個其他區塊鏈節點(例如,節點3、節點4)。一個或多個其他區塊鏈節點可以重複由接收方節點完成的過程。
一旦相應池資料庫中的交易達到一定水準(例如,臨界值量),每個區塊鏈節點就可以根據共識規則或其他規則驗證相應池資料庫中的一批區塊鏈交易。如果區塊鏈交易涉及區塊鏈合約(例如,智慧合約),則區塊鏈節點可以在本地執行區塊鏈合約。區塊鏈合約可以包括使用者編寫的合約程式碼。例如,區塊鏈交易可以編碼用於資料儲存(透過合約部署)或檢索(透過調用已部署的合約)的合約程式碼中的資料。
根據共識規則成功驗證一批區塊鏈交易的特定區塊鏈節點可以將這批區塊鏈交易打包至區塊鏈中其本地複本內,並將結果組播到其他區塊鏈節點。特定區塊鏈節點可以是首先成功完成驗證、已獲得驗證特權、或者已經基於另一個共識規則確定等的區塊鏈節點。然後,其他區塊鏈節點可以在本地執行區塊鏈交易,彼此驗證執行結果(例如,透過執行雜湊計算),並將區塊鏈中它們的副本與特定區塊鏈節點的副本同步。透過更新區塊鏈中它們的本地複本,其他區塊鏈節點可以類似地將區塊鏈交易中這樣的資訊寫入對應的本地儲存器。因此,區塊鏈合約可以被部署在區塊鏈上。如果在某些點處驗證失敗,則拒絕區塊鏈交易。
部署的區塊鏈合約可以具有位址,根據該位址可以存取部署的合約。區塊鏈節點可以透過向區塊鏈合約輸入某些參數來調用已部署的區塊鏈合約。在一個實施例中,節點B可以請求調用部署的區塊鏈合約以執行各種操作。例如,可以檢索在部署的區塊鏈合約中儲存的資料。另一示例,可以將資料添加到部署的區塊鏈合約中。又一示例,可以執行在部署的區塊鏈合約中指定的金融交易。儘管有上述描述,其他類型的區塊鏈系統和相關的共識規則可以應用於所揭露的區塊鏈系統。下面針對圖2A和圖2B提供部署和調用區塊鏈合約的示例。
圖2A和圖2B示出根據一些實施例的用於執行區塊鏈合約的框架。圖2A示出根據一些實施例部署區塊鏈合約。在一些實施例中,區塊鏈合約可以從其原始碼構建開始。例如,使用者A可以將區塊鏈合約程式設計為原始碼並將原始碼輸入到使用者端應用211的介面。在該圖中,使用者端應用211安裝在節點A中。原始碼可以用諸如java、c++、python、solidity等程式設計語言編寫。為了部署區塊鏈合約,節點A可以使用相應的編譯器212來編譯區塊鏈合約,該編譯器將原始碼轉換為位元組碼。位元組碼可以是已經從原始碼編譯為針對軟體解譯器設計的低級程式碼的程式碼。在接收到位元組碼之後,使用者端應用可以生成包括位元組碼的區塊鏈交易A,並將區塊鏈交易提交給一個或多個區塊鏈節點。例如,區塊鏈交易可以包括諸如nonce(例如,區塊鏈交易序號)、來自(例如,使用者A的帳戶的位址)、至(例如,如果部署區塊鏈合約則為空)、GasLimit(例如,區塊鏈交易所消費的區塊鏈交易費的上限)、GasPrice(例如,發送方提供的區塊鏈交易費)、值(例如,金融交易金額)、資料(例如,位元組碼)等資訊。節點A可以使用各種加密方法對區塊鏈交易進行簽章,以表示節點A的背書(endorsement)。
節點A可透過遠端程式呼叫(RPC)介面213將區塊鏈交易發送到區塊鏈節點(例如,節點1)。RPC是第一程式(例如,使用者端應用)可以使用的協定,第一程式可以使用該協定以從位於網路上的另一電腦(例如,區塊鏈節點)中的第二程式請求服務而不必理解網路的細節。當第一程式促使過程在不同位址空間(例如,在節點1上)中執行時,就好像是正常(本地)程式呼叫,無需程式師明確地編碼遠端互動的細節。
雖然編譯器被示出為包括在用戶端設備節點A中,但是在一些實施例中,編譯器可以可選地包括在用戶端設備可存取的另一設備中。用戶端設備可以遠端耦接到編譯器以將原始碼編譯成位元組碼。在一些其他實施例中,編譯器可以可選地包括在區塊鏈節點(例如,節點1)中或者包括在區塊鏈節點可存取的另一設備中。區塊鏈節點可以從用戶端設備獲得原始碼,並使用編譯器將原始碼編譯成位元組碼。在其他實施例中,用戶端設備(例如,節點A,無論是否包括編譯器)可以與區塊鏈節點(例如,節點1)整合。然後,由用戶端設備執行的步驟可以由區塊鏈節點執行。
在一些實施例中,區塊鏈節點(例如,節點1)獲得的位元組碼可以遵循下面參考圖3A描述的格式。例如,位元組碼可以包括指示用於執行區塊鏈合約的虛擬機器的類型、虛擬機器版本等的一個或多個指示符。區塊鏈節點有多種方式來獲得包括一個或多個指示符的位元組碼。在一個示例中,指示符的原始碼版本可以包括在隨後被編譯成位元組碼的原始碼中,使得位元組碼包括指示符的位元組碼版本。使用者、用戶端設備或區塊鏈節點可以將指示符的原始碼版本添加到原始碼。在另一示例中,原始碼不包括指示符,並且在原始碼被編譯成位元組碼之後,指示符的位元組碼版本可以包括在位元組碼中。使用者、用戶端設備或區塊鏈節點可以將指示符的位元組碼版本添加到位元組碼。
在接收到區塊鏈交易時,如前所述,節點1可以驗證該區塊鏈交易是否有效。例如,可以驗證節點A的簽章和其他格式。如果驗證成功,節點1可將該區塊鏈交易廣播到包括各種其他區塊鏈節點的區塊鏈網路。一些區塊鏈節點可以參與區塊鏈交易的探勘過程。由節點A發送的區塊鏈交易可以被特定節點選中以進行共識驗證從而打包到新區塊中。特定節點可以創建與合約帳戶位址相關聯的區塊鏈合約的合約帳戶。特定節點可以觸發其本地虛擬機器執行區塊鏈合約,從而將區塊鏈合約部署到區塊鏈中其本地複本內並更新區塊鏈中的帳戶狀態。如果特定節點成功挖出新區塊,則特定節點可以將新區塊廣播到其他區塊鏈節點。其他區塊鏈節點可以驗證由該特定區塊鏈節點挖出的新區塊。如果達成共識,則將區塊鏈交易分別打包到由區塊鏈節點維護的區塊鏈中的本地複本內。區塊鏈節點可以類似地觸發它們的本地虛擬機器(例如,本地VM 1、本地VM i、本地VM 2)執行區塊鏈合約,從而調用部署在區塊鏈中本地複本(例如,本地區塊鏈副本1、本地區塊鏈副本i、本地區塊鏈副本2)上的區塊鏈合約並進行相應的更新。每個區塊鏈節點的硬體機器可以存取一個或多個虛擬機器,這些虛擬機器可以是相應的區塊鏈節點的一部分或耦接到相應的區塊鏈節點。每次都可以觸發相應的本地虛擬機器執行區塊鏈合約。同樣,將執行新區塊中的所有其他區塊鏈交易。輕節點也可以與更新的區塊鏈同步。
圖2B示出根據一些實施例調用部署的區塊鏈合約。這些步驟類似於上面描述的區塊鏈合約部署,其中對傳輸的資料進行了特定更改。在一些實施例中,使用者B可以編寫指令以調用原始碼中的區塊鏈合約並將原始碼輸入到使用者端應用221的介面。在該圖中,使用者端應用221安裝在節點B中。原始碼可以用諸如java、c++、python、solidity等程式設計語言編寫。為了調用區塊鏈合約,節點B可以使用相應的編譯器222編譯指令,該編譯器222將原始碼轉換為位元組碼。在接收到位元組碼之後,使用者端應用可以生成包括位元組碼的區塊鏈交易B,並將該區塊鏈交易提交給區塊鏈節點中的一個或多個。例如,區塊鏈交易可以包括諸如nonce(例如,區塊鏈交易序號)、來自(例如,使用者B的帳戶的位址)、至(例如,部署的區塊鏈合約的位址)、GasLimit(例如,區塊鏈交易所消費的區塊鏈交易費的上限)、GasPrice(例如,發送方提供的區塊鏈交易費)、值(例如,金融交易金額)、資料(例如,位元組碼)等資訊。節點B可以使用各種加密方法對區塊鏈交易進行簽章,以表示節點B的背書。節點B可以透過遠端程式呼叫(RPC)介面223將區塊鏈交易發送到區塊鏈節點(例如,節點2)。
與以上描述類似,雖然編譯器被示出為包括在用戶端設備節點B中,但是在一些實施例中,編譯器可以可選地包括在用戶端設備可存取的另一設備中、在區塊鏈節點(例如,節點2)中或區塊鏈節點可存取的另一設備中。在一些實施例中,由區塊鏈節點(例如,節點2)獲得的位元組碼可以遵循下面參考圖3B描述的格式。位元組碼可以或可以不包括指示用於執行區塊鏈合約的虛擬機器的類型、虛擬機器版本等的一個或多個指示符。
在接收到區塊鏈交易時,節點2可以驗證區塊鏈交易是否有效。例如,可以驗證節點B的簽章和其他格式。如果驗證成功,節點2就可將該區塊鏈交易廣播到包括各種其他區塊鏈節點的區塊鏈網路。一些區塊鏈節點可以參與區塊鏈交易的探勘過程。由節點B發送的區塊鏈交易可以被特定節點選中以進行共識驗證從而打包到新區塊中。特定節點可以觸發其本地虛擬機器執行區塊鏈合約,從而調用部署在區塊鏈中其本地複本上的區塊鏈合約並更新區塊鏈中的帳戶狀態。如果特定節點成功挖出新區塊,則特定節點可以將新區塊廣播到其他區塊鏈節點。其他區塊鏈節點可以驗證由該特定區塊鏈節點挖出的新區塊。如果達成共識,則將該區塊鏈交易分別打包到由區塊鏈節點維護的區塊鏈中的本地複本內。區塊鏈節點可以類似地觸發它們的本地虛擬機器(例如,本地VM 1、本地VM i、本地VM 2)執行區塊鏈合約,從而調用部署在區塊鏈中的本地複本(例如,本地區塊鏈副本1、本地區塊鏈副本i、本地區塊鏈副本2)上的區塊鏈合約並進行相應的更新。每個區塊鏈節點的硬體機器可以存取一個或多個虛擬機器,這些虛擬機器可以是相應的區塊鏈節點的一部分或耦接到相應的區塊鏈節點。每次都可以觸發相應的本地虛擬機器來執行區塊鏈合約。同樣,將執行新區塊中的所有其他區塊鏈交易。輕節點也可以與更新的區塊鏈同步。
圖3A示出根據一些實施例的用於部署區塊鏈合約的位元組碼。在一些實施例中,使用者可以用各種程式設計語言(例如,java、c++、python、solidity等)構建區塊鏈合約。可以使用各種程式設計語言將區塊鏈合約編寫為人類可讀原始碼,並在用戶端設備上載入前端軟體。然後,可以觸發編譯器將原始碼編譯成位元組碼。編譯器可以是將以一種程式設計語言編寫的電腦程式碼轉換成另一種程式設計語言的電腦軟體。編譯器可以將原始碼從高級程式設計語言轉換為低階語言(例如位元組碼),以創建可執行程式。位元組碼,也稱為可攜式程式碼、p程式碼、物件程式碼或機器程式碼,是為軟體解譯器的高效執行而設計的指令集的形式。與人類可讀原始碼不同,位元組碼可以包括對編譯器解析和對程式物件進行語義分析的結果進行編碼的壓縮數字程式碼、常量和引用(references)(例如,數字位址)。位元組碼可以由相應的虛擬機器讀取和執行。
如前所述,透過區塊鏈節點獲得的位元組碼可以包括指示用於執行區塊鏈合約的虛擬機器的類型、虛擬機器的版本等的一個或多個指示符。指示符可以由使用者、用戶端設備或者區塊鏈節點添加。可以將指示符作為原始碼添加到原始原始碼,然後將具有指示符的原始原始碼編譯成圖3A所示的位元組碼。下面參考圖4A更詳細地描述這種添加的示例。可選地,指示符可以作為位元組碼添加到原始位元組碼中,以便獲得圖3A所示的位元組碼,該原始位元組碼是從原始原始碼編譯的並且不包括指示符。下面參考圖4B更詳細地描述這種添加的示例。詞語“原始(raw)”可以指示相應的程式碼不包括一個或多個指示符。
仍然參考圖3A,在一些實施例中,用戶端設備(例如,安裝有加密貨幣錢包或其他區塊鏈平臺軟體)可以提示使用者輸入、選擇或以其他方式識別用於執行區塊鏈合約的虛擬機器類型。例如,java編寫的區塊鏈合約可以對應於java虛擬機器(JVM)以用於執行,c++編寫的區塊鏈合約可以對應於GNU編譯器集合(GCC)虛擬機器以用於執行,python編寫的區塊鏈合約可以對應於python虛擬機器(PVM)以用於執行,以及solidity編寫的合約可以對應於以太坊虛擬機器(EVM)以用於執行。依賴於區塊鏈合約的編寫方式,每個區塊鏈合約可以由一個或多個版本的相應虛擬機器執行。使用者可以在原始碼中添加表示虛擬機器類型的第一指示符及/或表示虛擬機器版本的第二指示符。可選地,用戶端設備可以自動分析所編寫的原始原始碼並添加第一及/或第二指示符。
在一些實施例中,如圖3A所示,第一指示符可佔據位元組碼中的第一個位元組,並且第二指示符可佔據位元組碼中的第二個位元組。位元組碼中第三個至第n個位元組可以對應用於執行區塊鏈合約的其他程式碼,其中n是不小於3的自然數。可以有各種方式來表示虛擬機器類型。例如,“01”(二進位表示)或“0x01”(十六進位表示)可以表示GCC、“02”或“0x02”可以表示JVM、“03”或“0x03”可以表示EVM中的合約、並且“04”或“0x04”可表示PVM。位元組碼可以作為二進位檔案存在,也可以用十六進位表示。本領域普通技術人員將理解可使用各種其他類型的指示符表示、將指示符添加到位元組碼中的其他可選位置、以及使用附加位元組空間來表示指示符。
在一些實施例中,區塊鏈節點可以獲得包括一個或多個指示符的位元組碼。區塊鏈節點可以存取一個或多個虛擬機器。區塊鏈節點可以解析位元組碼的一部分(例如,第一個和第二個位元組)並觸發相應的虛擬機器來執行區塊鏈合約。例如,區塊鏈節點可以部署區塊鏈合約。所觸發的虛擬機器可以將位元組碼轉換為可由處理器運行的組合語言或其他指令集。例如,可以調用GCC、JVM、EVM、PVM或其他相應的虛擬機器來執行區塊鏈合約。
圖3B示出根據一些實施例的用於調用區塊鏈合約的位元組碼。如前所述,區塊鏈節點(例如,節點2)可以獲得用於調用區塊鏈合約的位元組碼。如圖所示,用於調用區塊鏈合約的位元組碼的第1個到第4個位元組可以對應於虛擬機器函數(例如,提取部署的區塊鏈合約的資訊的函數、根據部署的區塊鏈合約進行金融交易的函數),並且第5個到第m個位元組可以對應於輸入資料(例如,諸如金融交易金額的參數),其中m是不小於5的自然數。用於調用區塊鏈合約的位元組碼可以不包括一個或多個指示符。這是因為,如前所述,部署的區塊鏈合約與區塊鏈上合約帳戶位址處的合約帳戶對應。合約帳戶位址與一個或多個指示符相關聯。因此,根據合約帳戶位址,區塊鏈節點可以檢索圖3A所示的部署在區塊鏈上的位元組碼,然後將圖3B所示的位元組碼輸入檢索到的位元組碼中以調用部署的區塊鏈合約。由於部署的區塊鏈合約已經包含具有指示符的位元組碼,因此用於調用部署的區塊鏈合約的位元組碼(圖3B)不必包括指示符。用於調用部署的區塊鏈合約的位元組碼(圖3B)可以是圖3A中位元組碼的第三個到第n個位元組的子集。
圖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,且第二指示符是03,它指的是版本3。
圖5A示出根據本文的一些實施例的用於執行區塊鏈合約的示例性方法510的流程圖。方法510可以由圖1的系統100中的一個或多個元件(例如,上述節點1、節點2......或節點i,或類似設備、或任何節點和一個或多個例如節點A的附加設備的組合)實現。方法510可以由包括各種硬體機器及/或軟體的系統或設備(例如,電腦、伺服器)實現。例如,系統或設備可以包括一個或多個處理器以及一個或多個非暫態電腦可讀儲存媒體(例如,一個或多個記憶體),所述一個或多個非暫態電腦可讀儲存媒體耦接到一個或多個處理器並配置有可由一個或多個處理器執行以使得系統或設備(例如,處理器)執行方法510的指令。下面示出的方法510的操作是說明性的。根據實施方式,方法510可以包括以不同的順序或並存執行的附加步驟、較少步驟或可選步驟。方法510的進一步細節可以參考圖1至圖4B以及上面的相關描述。
在一些實施例中,節點1可以執行方法510。方塊511包括:獲得區塊鏈合約的位元組碼,其中位元組碼包括一個或多個指示符,並且一個或多個指示符包括指示用於執行區塊鏈合約的虛擬機器類型的第一指示符。在一些實施例中,一個或多個指示符還包括指示用於執行區塊鏈合約的虛擬機器的版本的第二指示符;以及使用與第一指示符相關聯的虛擬機器類型的虛擬機器執行區塊鏈合約包括:使用與第一指示符和第二指示符相關聯的虛擬機器類型的虛擬機器執行區塊鏈合約。方塊512包括:使用與第一指示符相關聯的虛擬機器類型的虛擬機器來執行區塊鏈合約。
在一個實施例中,獲得區塊鏈合約的位元組碼包括:從用戶端設備獲得區塊鏈合約的位元組碼,其中位元組碼是從區塊鏈合約的原始碼編譯的,並且原始碼包括一個或多個指示符(在原始碼中)。例如,原始碼可以由用戶端設備編譯以生成位元組碼。
在另一實施例中,獲得區塊鏈合約的位元組碼包括:從用戶端設備獲得區塊鏈合約的原始碼,原始碼包括一個或多個指示符(在原始碼中);以及編譯原始碼以獲得區塊鏈合約的位元組碼。例如,區塊鏈節點可以包括或以其他方式存取編譯器以編譯原始碼。
在又一個實施例中,獲得區塊鏈合約的位元組碼包括:從用戶端設備獲得用於執行區塊鏈合約的原始位元組碼,其中原始位元組碼是從用於執行區塊鏈合約的原始原始碼編譯的;以及將一個或多個指示符(在位元組碼中)添加到原始位元組碼,以獲得區塊鏈合約的位元組碼。原始原始碼和原始位元組碼可以不包括一個或多個指示符。原始碼可以由用戶端設備編譯以生成位元組碼。
在又一個實施例中,獲得區塊鏈合約的位元組碼包括:從用戶端設備獲得用於執行區塊鏈合約的原始原始碼;編譯原始原始碼以獲得原始位元組碼;以及將一個或多個指示符(在位元組碼中)添加到原始位元組碼,以獲得區塊鏈合約的位元組碼。原始原始碼和原始位元組碼可以不包括一個或多個指示符。區塊鏈節點可以包括或以其他方式存取編譯器以編譯原始碼。
在一些實施例中,第一指示符與區塊鏈合約的位元組碼中第一個位元組對應。第二指示符與區塊鏈合約的位元組碼中第二個位元組對應。區塊鏈合約的位元組碼中第三個到第n個位元組與用於執行區塊鏈合約的程式碼對應,n是不小於3的自然數,並且區塊鏈合約的位元組碼中第一個到第n個位元組指定應用二進位介面(ABI)格式,這有助於使用者端設備和虛擬機器之間的互動。第一或第二指示符包括二進位數字、十六進位數等。
在其他實施例中,執行區塊鏈合約可以包括在區塊鏈合約上部署、調用或執行另一操作。在一個實施例中,使用與第一指示符相關聯的虛擬機器類型的虛擬機器執行區塊鏈合約包括:觸發與第一指示符相關聯的虛擬機器類型的虛擬機器以在相應的區塊鏈上部署區塊鏈合約,部署的區塊鏈合約與虛擬機器類型相關聯。在另一實施例中,使用與第一指示符相關聯的虛擬機器類型的虛擬機器來執行區塊鏈合約還包括:觸發與第一指示符相關聯的虛擬機器類型的虛擬機器以調用所部署的區塊鏈合約。
在其他實施例中,用於執行區塊鏈合約的虛擬機器類型包括:用於執行用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,用於使用與第一指示符相關聯的虛擬機器類型的虛擬機器來執行區塊鏈合約。
圖6B示出根據一些實施例的用於執行區塊鏈合約的系統620的方塊圖。系統620(例如,電腦系統)可以是由節點A、節點B,或類似設備,或任何節點和附加設備(例如,節點1、節點2)的組合實現的示例。例如,方法520可以由系統620實現。系統620可以包括一個或多個處理器以及一個或多個非暫態電腦可讀儲存媒體(例如,一個或多個記憶體),所述非暫態電腦可讀儲存媒體耦接到一個或多個處理器並配置有可由一個或多個處理器執行以促使系統或設備(例如,處理器)執行上述方法和操作,例如方法520,的指令。系統620可以包括與指令(例如,軟體指令)相對應的各種單元/模組。
在一些實施例中,系統620可以被稱為用於執行區塊鏈合約的裝置。該裝置可以包括生成模組621,用於生成區塊鏈合約的位元組碼,其中,位元組碼包括一個或多個指示符,並且一個或多個指示符包括指示用於執行區塊鏈合約的虛擬機器類型的第一指示符;和發送模組622,用於將區塊鏈合約的位元組碼發送到區塊鏈節點,以供區塊鏈節點觸發與第一指示符相關聯的虛擬機器類型的虛擬機器執行區塊鏈合約。
本文描述的技術由一個或多個專用計算設備實現。專用計算設備可以是桌上型電腦系統、伺服器電腦系統、可攜式電腦系統、手持設備、網路設備或包含硬連線及/或程式邏輯以實現這些技術的任何其他設備或設備的組合。專用計算設備可以被實現為個人電腦、膝上型電腦、蜂巢式電話、照相電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件設備、遊戲主機、平板電腦、可穿戴設備或其組合。計算設備通常由作業系統軟體控制和協調。傳統的作業系統控制和調度用於執行的電腦處理,執行記憶體管理,提供檔案系統、網路、I/O服務,以及提供使用者介面功能,例如圖形化使用者介面(“GUI”)等。本文描述的各種系統、裝置、儲存媒體、模組和單元可以在專用計算設備或者一個或多個專用計算設備的一個或多個計算晶片中實現。在一些實施例中,本文描述的指令可以在專用計算設備上的虛擬機器中實現。當被執行時,指令可以促使專用計算設備執行本文描述的各種方法。虛擬機器可以包括軟體、硬體或其組合。
圖7是示出可以在其上實現本文描述的任何實施例的電腦系統700的方塊圖。系統700可以執行本文描述的任何方法(例如,用於執行區塊鏈合約的方法510或520)。系統700可以在本文描述的任何系統(例如,用於執行區塊鏈合約的系統610或620)中實現。系統700可以在本文描述的任何節點中實現,並且被配置為執行用於執行區塊鏈合約的相應步驟。電腦系統700包括匯流排702或用於傳送資訊的其它通信機制、與匯流排702耦接的用於處理資訊的一個或多個硬體處理器704。硬體處理器704可以是例如一個或多個通用微處理器。
電腦系統700還包括耦接至匯流排702的用於儲存資訊和處理器704可執行指令的主記憶體706,諸如隨機存取記憶體(RAM)、快取記憶體及/或其他動態儲存裝置設備。主記憶體706還可以用於儲存在執行處理器704可執行指令期間的臨時變數或其它中間資訊。當這些指令被儲存在處理器704可存取的儲存媒體中時,這些指令使電腦系統700呈現為專用機器,所述專用機器被定制以執行指令中所指定的操作。電腦系統700還包括耦接至匯流排702的用於儲存針對處理器704的靜態資訊和指令的唯讀記憶體(ROM)708或其他靜態儲存裝置。諸如磁片、光碟或USB隨身行動碟(快閃記憶體驅動器)等的儲存裝置710被提供並耦接至匯流排702,用於儲存資訊和指令。
電腦系統700可以使用定制的硬連線邏輯、一個或多個ASIC或FPGA、韌體及/或程式邏輯實現本文描述的技術,程式邏輯與電腦系統相結合使得電腦系統700成為專用機器或將電腦系統700程式設計為專用機器。根據一個實施例,回應於處理器704執行包含在主記憶體706中的一個或多個指令的一個或多個序列,電腦系統700執行本文描述的操作、方法和步驟。這些指令可以從另一儲存媒體諸如儲存裝置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)(或與WAN通信的WAN元件)提供資料通信連接的LAN卡。還可以實現為無線鏈路。在任何這樣的實現方式中,網路介面718發送和接收電訊號、電磁訊號或光訊號,電訊號、電磁訊號或光訊號承載著表示各種類型資訊的數位資料流程。
電腦系統700可以透過網路、網路鏈路和網路介面718發送消息並接收包括程式碼的資料。在網際網路示例中,伺服器可以透過網際網路、ISP、本地網路和網路介面718傳輸所請求的用於應用的程式碼。
所接收的程式碼可以在被接收時由處理器704執行,及/或儲存在儲存裝置710或其他非揮發性儲存裝置中以供稍後執行。
前面部分中描述的每個步驟、方法和演算法可以體現在程式碼模組中並且由程式碼模組完全或部分地自動化,程式碼模組由包括電腦硬體的一個或多個電腦系統或者電腦處理器執行。步驟和演算法可以部分或全部地在專用電路中實現。
上述各種特徵和步驟可彼此獨立地使用,或者可以各種方式組合。所有可能的組合和子組合都旨在落入本文的範圍內。另外,在一些實施方式中可以省略某些方法或步驟方塊。本文描述的方法和步驟也不限於任何特定順序,與其相關的方塊或狀態可以以適當的其他循序執行。例如,所描述的方塊或狀態可以以不同於具體揭露的循序執行,或者多個方塊或狀態可以在單個方塊或狀態中組合。方塊或狀態的示例可以串列、並行或以某種其他方式執行。可以將框或狀態添加到所揭露的實施例中或從所揭露的實施例中移除。本文描述的系統和元件的示例可以被配置為與所描述的不同。例如,與所揭露的實施例相比,可以添加、移除或重新佈置元件。
本文描述的方法的各種操作可以至少部分地由被臨時配置(例如,透過軟體)或被永久配置為執行相關操作的一個或多個處理器執行。無論是臨時配置還是永久配置,這樣的處理器可以構成處理器實現的引擎,所述處理器實現的引擎用於執行本文描述的一個或多個操作或功能。
類似地,本文描述的方法可以至少部分地由處理器實現,其中特定處理器是硬體的示例。例如,方法的至少一些操作可以由一個或多個處理器或處理器實現的引擎執行。此外,一個或多個處理器還可用於支持“雲端計算”環境中的相關操作的性能,或用作“軟體即服務”(SaaS)。例如,至少一些操作可以由一組電腦(作為包括處理器的機器的示例)執行,其中這些操作可以經由網路(例如,網際網路)並經由一個或多個適當的介面(例如,應用程式設計介面(API))來存取。
某些操作的性能可以在處理器之間分配,不僅駐留在單個機器中,而且跨多個機器被部署。在一些實施例中,處理器或處理器實現的引擎可以位於單個地理位置(例如,在家庭環境、辦公室環境或伺服器群內)。在其他實施例中,處理器或處理器實現的引擎可以分佈在多個地理位置。
在本文中,多個實例可以實現被描述為單個實例的元件、操作或結構。儘管一個或多個方法的各個操作被示出並描述為獨立的操作,但是可以同時執行一個或多個獨立的操作,並且不需要以所示的循序執行所述操作。在配置中作為獨立元件呈現的結構和功能可以實現為組合結構或元件。類似地,作為單個元件呈現的結構和功能可以實現為獨立的元件。這些和其他變化、修改、添加和改進都落入本文中的主題的範圍內。此外,本文使用的相關術語(諸如“第一”、“第二”、“第三”等)不表示任何順序、高度或重要性,而是用於將一個元件與另一元件區分開。此外,術語“一”、“一個”和“多個”在本文中並不表示對數量的限制,而是表示存在至少一個所述的物件。
儘管已經參考具體實施例描述了主題的概述,但是在不脫離本文的實施例的較寬範圍的情況下,可以對這些實施例進行各種修改和改變。具體實施方式不應被視為具有限制意義,並且各種實施例的範圍僅由所附請求項以及這些請求項所享有的等同物的全部範圍限定。
100:區塊鏈網路
112:區塊鏈系統
211:使用者端應用
212:編譯器
213:遠端程式呼叫(RPC)介面
221:使用者端應用
222:編譯器
223:遠端程式呼叫(RPC)介面
411:步驟
412:步驟
413:步驟
421:步驟
422:步驟
423:步驟
510:方法
511:步驟
512:步驟
520:方法
521:步驟
522:步驟
610:系統
611:獲得模組
612:執行模組
620:系統
621:生成模組
622:發送模組
700:電腦系統
702:匯流排
704:處理器
706:主記憶體
708:ROM
710:儲存裝置
718:網路介面
[圖1]示出根據一些實施例的用於執行區塊鏈合約的系統。
[圖2A和圖2B]示出根據一些實施例的用於執行區塊鏈合約的框架。
[圖3A]示出根據一些實施例的用於部署區塊鏈合約的位元組碼。
[圖3B]示出根據一些實施例的用於調用區塊鏈合約的位元組碼。
[圖4A]示出根據一些實施例的用於添加指示符的方法的流程圖。
[圖4B]示出根據一些實施例的用於添加指示符的另一方法的流程圖。
[圖5A]示出根據一些實施例的用於執行區塊鏈合約的方法的流程圖。
[圖5B]示出根據一些實施例的用於執行區塊鏈合約的另一方法的流程圖。
[圖6A]示出根據一些實施例的用於執行區塊鏈合約的裝置的方塊圖。
[圖6B]示出根據一些實施例的用於執行區塊鏈合約的另一裝置的方塊圖。
[圖7]示出可以實現本文描述的任一實施例的電腦系統的方塊圖。
Claims (20)
- 一種電腦實現的用於執行區塊鏈合約的方法,包括:獲得區塊鏈合約的位元組碼,其中所述位元組碼包括複數個指示符,並且所述複數個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符與指示用於執行所述區塊鏈合約的虛擬機器版本的第二指示符;所述第一指示符與所述區塊鏈合約的所述位元組碼的第一位元組對應;所述第二指示符與所述區塊鏈合約的所述位元組碼的第二位元組對應;以及所述區塊鏈合約的所述位元組碼中第三個到第n個位元組與用於執行所述區塊鏈合約的程式碼對應,n是不小於3的自然數,並且所述區塊鏈合約的所述位元組碼中所述第一個到第n個位元組指定應用二進位介面ABI格式;以及使用與所述第一指示符相關聯的所述虛擬機器類型以及與所述第二指示符相關聯的所述虛擬機器版本的虛擬機器執行所述區塊鏈合約。
- 根據請求項1所述的方法,其中,獲得所述區塊鏈合約的所述位元組碼包括:從用戶端設備獲得所述區塊鏈合約的所述位元組碼,其中所述位元組碼是從所述區塊鏈合約的原始碼編譯的,並且所述原始碼包括所述複數個指示符。
- 根據請求項1所述的方法,其中,獲得所述區塊鏈合約的所述位元組碼包括:從用戶端設備獲得所述區塊鏈合約的原始碼,所述原始碼包括所述一個或多個指示符;以及編譯所述原始碼以獲得所述區塊鏈合約的所述位元組碼。
- 根據請求項1所述的方法,其中,獲得所述區塊鏈合約的所述位元組碼包括:從用戶端設備獲得用於執行所述區塊鏈合約的原始位元組碼,其中所述原始位元組碼是從用於執行所述區塊鏈合約的原始原始碼編譯的;以及將所述複數個指示符添加到所述原始位元組碼以獲得所述區塊鏈合約的所述位元組碼。
- 如請求項1所述的方法,其中,獲得所述區塊鏈合約的所述位元組碼包括:從用戶端設備獲得用於執行所述區塊鏈合約的原始原始碼;編譯所述原始原始碼以獲得原始位元組碼;以及將所述複數個指示符添加到所述原始位元組碼以獲得所述區塊鏈合約的位元組碼。
- 根據請求項1所述的方法,其中,使用與所述第一指示符相關聯的所述虛擬機器類型的所述虛擬機器執行所述區塊鏈合約包括:觸發與所述第一指示符相關聯的所述虛擬機器類型的 所述虛擬機器以在相應的區塊鏈上部署所述區塊鏈合約,所述部署的區塊鏈合約與所述虛擬機器類型相關聯。
- 根據請求項6所述的方法,其中,使用與所述第一指示符相關聯的所述虛擬機器類型的所述虛擬機器執行所述區塊鏈合約還包括:觸發與所述第一指示符相關聯的所述虛擬機器類型的所述虛擬機器以調用所述部署的區塊鏈合約。
- 根據請求項1所述的方法,其中:用於執行所述區塊鏈合約的所述虛擬機器類型包括:用於執行用c++程式設計語言編寫的區塊鏈合約的GNU編譯器集合GCC虛擬機器、用於執行用java程式設計語言編寫的區塊鏈合約的Java虛擬機器JVM、用於執行用solidity程式設計語言編寫的區塊鏈合約的以太網虛擬機器EVM或用於執行用python程式設計語言編寫的區塊鏈合約的python虛擬機器PVM。
- 一種用於執行區塊鏈合約的系統,包括:一個或多個處理器;以及耦接到所述一個或多個處理器且其上儲存有指令的一個或多個電腦可讀記憶體,所述指令能由所述一個或多個處理器執行以執行操作,包括:獲得區塊鏈合約的位元組碼,其中所述位元組碼包括複數個指示符,並且所述複數個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符與指示用於 執行所述區塊鏈合約的虛擬機器版本的第二指示符;所述第一指示符與所述區塊鏈合約的所述位元組碼的第一位元組對應;所述第二指示符與所述區塊鏈合約的所述位元組碼的第二位元組對應;以及所述區塊鏈合約的所述位元組碼中第三個到第n個位元組與用於執行所述區塊鏈合約的程式碼對應,n是不小於3的自然數,並且所述區塊鏈合約的所述位元組碼中所述第一個到第n個位元組指定應用二進位介面ABI格式;以及使用與所述第一指示符相關聯的所述虛擬機器類型以及與所述第二指示符相關聯的所述虛擬機器版本的虛擬機器執行所述區塊鏈合約。
- 根據請求項9所述的系統,其中,獲得所述區塊鏈合約的所述位元組碼包括:從用戶端設備獲得所述區塊鏈合約的所述位元組碼,其中所述位元組碼是從所述區塊鏈合約的原始碼編譯的,並且所述原始碼包括所述複數個指示符。
- 根據請求項9所述的系統,其中,獲得所述區塊鏈合約的所述位元組碼包括:從用戶端設備獲得用於執行所述區塊鏈合約的原始位元組碼,其中所述原始位元組碼是從用於執行所述區塊鏈合約的原始原始碼編譯的;以及將所述複數個指示符添加到所述原始位元組碼以獲得 所述區塊鏈合約的所述位元組碼。
- 根據請求項9所述的系統,其中,使用與所述第一指示符相關聯的所述虛擬機器類型的所述虛擬機器執行所述區塊鏈合約包括:觸發與所述第一指示符相關聯的所述虛擬機器類型的所述虛擬機器以在相應的區塊鏈上部署所述區塊鏈合約,所述部署的區塊鏈合約與所述虛擬機器類型相關聯。
- 根據請求項9所述的系統,其中,獲得所述區塊鏈合約的所述位元組碼包括:從用戶端設備獲得所述區塊鏈合約的原始碼,所述原始碼包括所述一個或多個指示符;以及編譯所述原始碼以獲得所述區塊鏈合約的所述位元組碼。
- 根據請求項9所述的系統,其中,獲得所述區塊鏈合約的所述位元組碼包括:從用戶端設備獲得用於執行所述區塊鏈合約的原始原始碼;編譯所述原始原始碼以獲得原始位元組碼;以及將所述複數個指示符添加到所述原始位元組碼以獲得所述區塊鏈合約的位元組碼。
- 一種用於執行區塊鏈合約的非暫態電腦可讀儲存媒體,所述非暫態電腦可讀媒體耦接到一個或多個處理器,並且經組態以具有指令,所述指令能由所述一個或多個處理器執行以執行操作,包括: 獲得區塊鏈合約的位元組碼,其中所述位元組碼包括複數個指示符,並且所述複數個指示符包括指示用於執行所述區塊鏈合約的虛擬機器類型的第一指示符與指示用於執行所述區塊鏈合約的虛擬機器版本的第二指示符;所述第一指示符與所述區塊鏈合約的所述位元組碼的第一位元組對應;所述第二指示符與所述區塊鏈合約的所述位元組碼的第二位元組對應;以及所述區塊鏈合約的所述位元組碼中第三個到第n個位元組與用於執行所述區塊鏈合約的程式碼對應,n是不小於3的自然數,並且所述區塊鏈合約的所述位元組碼中所述第一個到第n個位元組指定應用二進位介面ABI格式;以及使用與所述第一指示符相關聯的所述虛擬機器類型以及與所述第二指示符相關聯的所述虛擬機器版本的虛擬機器執行所述區塊鏈合約。
- 根據請求項15所述的非暫態電腦可讀儲存媒體,其中,獲得所述區塊鏈合約的所述位元組碼包括:從用戶端設備獲得所述區塊鏈合約的所述位元組碼,其中所述位元組碼是從所述區塊鏈合約的原始碼編譯的,並且所述原始碼包括所述複數個指示符。
- 根據請求項15所述的非暫態電腦可讀儲存媒體,其中,獲得所述區塊鏈合約的所述位元組碼包 括:從用戶端設備獲得用於執行所述區塊鏈合約的原始位元組碼,其中所述原始位元組碼是從用於執行所述區塊鏈合約的原始原始碼編譯的;以及將所述複數個指示符添加到所述原始位元組碼以獲得所述區塊鏈合約的所述位元組碼。
- 根據請求項15所述的非暫態電腦可讀儲存媒體,其中,使用與所述第一指示符相關聯的所述虛擬機器類型的所述虛擬機器執行所述區塊鏈合約包括:觸發與所述第一指示符相關聯的所述虛擬機器類型的所述虛擬機器以在相應的區塊鏈上部署所述區塊鏈合約,所述部署的區塊鏈合約與所述虛擬機器類型相關聯。
- 根據請求項15所述的非暫態電腦可讀儲存媒體,其中,使用與所述第一指示符相關聯的所述虛擬機器類型的所述虛擬機器執行所述區塊鏈合約還包括:觸發與所述第一指示符相關聯的所述虛擬機器類型的所述虛擬機器以調用所述部署的區塊鏈合約。
- 根據請求項15所述的非暫態電腦可讀儲存媒體,其中:用於執行所述區塊鏈合約的所述虛擬機器類型包括:用於執行用c++程式設計語言編寫的區塊鏈合約的GNU編譯器集合GCC虛擬機器、用於執行用java程式設計語言編寫的區塊鏈合約的Java虛擬機器JVM、用於執行用solidity程式設計語言編寫的區塊鏈合約的以太網虛擬機器EVM或 用於執行用python程式設計語言編寫的區塊鏈合約的python虛擬機器PVM。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/093591 WO2019170175A2 (en) | 2019-06-28 | 2019-06-28 | System and method for executing different types of blockchain contracts |
WOPCT/CN2019/093591 | 2019-06-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202101199A TW202101199A (zh) | 2021-01-01 |
TWI737233B true TWI737233B (zh) | 2021-08-21 |
Family
ID=67847528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109109767A TWI737233B (zh) | 2019-06-28 | 2020-03-24 | 用於執行不同類型區塊鏈合約之系統及方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10705866B2 (zh) |
EP (1) | EP3701383B1 (zh) |
CN (2) | CN111095338B (zh) |
SG (1) | SG11202004455UA (zh) |
TW (1) | TWI737233B (zh) |
WO (1) | WO2019170175A2 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11341451B2 (en) * | 2018-10-10 | 2022-05-24 | Questaweb Holdings Inc. | Hierarchical blockchain architecture for global trade management |
EP3701383B1 (en) * | 2019-06-28 | 2021-08-04 | Advanced New Technologies Co., Ltd. | System and method for executing different types of blockchain contracts |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
CN110602125B (zh) * | 2019-09-23 | 2021-04-13 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及存储介质 |
CN110659907B (zh) * | 2019-09-24 | 2021-11-12 | 北京海益同展信息科技有限公司 | 用于执行智能合约的方法和装置 |
CN111414159B (zh) * | 2020-03-16 | 2023-07-25 | 北京艾鸥科技有限公司 | 一种区块链虚拟机装置、虚拟机创建方法及交易方法 |
CN111768184A (zh) | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法及区块链节点 |
CN111768183B (zh) * | 2020-08-31 | 2024-04-19 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN111770204B (zh) | 2020-08-31 | 2021-10-22 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN111770202B (zh) | 2020-08-31 | 2021-10-29 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN112346820A (zh) * | 2020-11-16 | 2021-02-09 | 杭州复杂美科技有限公司 | 区块链jvm应用方法、设备和存储介质 |
CN112445543B (zh) * | 2020-11-26 | 2023-03-10 | 杭州趣链科技有限公司 | 智能合约的类调用方法、装置及电子设备 |
CN112306645B (zh) | 2020-12-24 | 2021-05-04 | 北京百度网讯科技有限公司 | 以太坊虚拟机的事务处理方法、装置、设备和介质 |
CN113220326B (zh) * | 2021-05-11 | 2022-09-16 | 支付宝(杭州)信息技术有限公司 | 智能合约升级方法及区块链系统 |
CN113626005B (zh) * | 2021-09-03 | 2023-05-30 | 杭州复杂美科技有限公司 | 一种区块链基础合约开发部署方法、设备及储存介质 |
CN115455457B (zh) * | 2022-11-11 | 2023-03-24 | 北京共识数信科技有限公司 | 基于智慧大数据的链数据管理方法、系统和存储介质 |
CN117093227B (zh) * | 2023-10-10 | 2024-04-02 | 杭州趣链科技有限公司 | 一种用于执行智能合约的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140337836A1 (en) * | 2013-05-10 | 2014-11-13 | Fireeye, Inc. | Optimized resource allocation for virtual machines within a malware content detection system |
US20180005186A1 (en) * | 2016-06-30 | 2018-01-04 | Clause, Inc. | System and method for forming, storing, managing, and executing contracts |
CN109241359A (zh) * | 2018-08-18 | 2019-01-18 | 深圳市网心科技有限公司 | 区块链节点设备、区块链系统、区块数据处理系统和方法 |
TW201923648A (zh) * | 2017-11-09 | 2019-06-16 | 安地卡及巴布達商區塊鏈控股有限公司 | 用於可驗證運算之類c語言智慧合約的算術增強技術 |
CN109906443A (zh) * | 2016-11-03 | 2019-06-18 | 维萨国际服务协会 | 用于形成通用记录的系统和方法 |
WO2019120316A2 (en) * | 2019-03-26 | 2019-06-27 | Alibaba Group Holding Limited | System and method for implementing different types of blockchain contracts |
Family Cites Families (47)
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 |
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 |
CN103593262B (zh) * | 2013-11-15 | 2016-05-25 | 上海爱数信息技术股份有限公司 | 一种基于类别的虚拟机备份方法 |
EP3095044B1 (en) * | 2013-11-19 | 2020-09-23 | Top Galore Limited | Block mining methods and apparatus |
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 |
AU2016324172A1 (en) | 2015-09-17 | 2018-04-19 | Washlava, Inc. | System for commercial laundry services and facilities |
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 |
US11170371B2 (en) * | 2016-03-03 | 2021-11-09 | Nec Corporation | Method for managing data in a network of nodes |
US20170287090A1 (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 |
WO2018014123A1 (en) * | 2016-07-18 | 2018-01-25 | Royal Bank Of Canada | Distributed ledger platform for vehicle records |
US10187368B2 (en) * | 2016-08-03 | 2019-01-22 | Ripple Luxembourg S.A. | Resource transfer setup and verification |
EP3542277A4 (en) * | 2016-11-19 | 2020-08-05 | Costanz, Mario A. | SYSTEM AND METHOD OF CONCILIATION OF INTERACTION OBJECTS IN A LARGE PUBLIC BOOK BLOCKCHAIN ENVIRONMENT |
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 |
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 |
US11055703B2 (en) * | 2017-06-19 | 2021-07-06 | Hitachi, Ltd. | Smart contract lifecycle management |
US20190050855A1 (en) | 2017-07-24 | 2019-02-14 | William Martino | Blockchain-based systems, methods, and apparatus for securing access to information stores |
CN107392619B (zh) * | 2017-07-31 | 2020-12-29 | 众安信息技术服务有限公司 | 智能合约处理方法及装置 |
US10552556B2 (en) | 2017-08-03 | 2020-02-04 | Liquineq AG | System and method for performance testing of scalable distributed network transactional databases |
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 |
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 |
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 | 深圳圣马歌科技有限公司 | 一种智能合约的发布方法及装置 |
EP3718069B1 (en) * | 2017-11-30 | 2024-04-17 | Visa International Service Association | Blockchain system for confidential and anonymous smart contracts |
US11544708B2 (en) * | 2017-12-29 | 2023-01-03 | Ebay Inc. | User controlled storage and sharing of personal user information on a blockchain |
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 |
CN109358859B (zh) * | 2018-09-27 | 2021-07-30 | 上海点融信息科技有限责任公司 | 在区块链网络中安装智能合约的方法、装置及存储介质 |
US11341451B2 (en) * | 2018-10-10 | 2022-05-24 | Questaweb Holdings Inc. | Hierarchical blockchain architecture for global trade management |
CN109933404B (zh) * | 2018-12-12 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 一种基于区块链智能合约的编解码方法及系统 |
CN109687953B (zh) * | 2018-12-24 | 2021-12-31 | 杭州复杂美科技有限公司 | 交易分类方法、设备和存储介质 |
US10733152B2 (en) * | 2018-12-29 | 2020-08-04 | Alibaba Group Holding Limited | System and method for implementing native contract on blockchain |
JP6856749B2 (ja) * | 2018-12-29 | 2021-04-14 | アドバンスド ニュー テクノロジーズ カンパニー リミテッド | ブロックチェーン上のネイティブ契約を実施するためのシステムおよび方法 |
EP3701383B1 (en) * | 2019-06-28 | 2021-08-04 | Advanced New Technologies Co., Ltd. | System and method for executing different types of blockchain contracts |
-
2019
- 2019-06-28 EP EP19764927.0A patent/EP3701383B1/en active Active
- 2019-06-28 CN CN201980004167.6A patent/CN111095338B/zh active Active
- 2019-06-28 CN CN202310715683.8A patent/CN116757843A/zh active Pending
- 2019-06-28 SG SG11202004455UA patent/SG11202004455UA/en unknown
- 2019-06-28 WO PCT/CN2019/093591 patent/WO2019170175A2/en unknown
- 2019-12-16 US US16/716,016 patent/US10705866B2/en active Active
-
2020
- 2020-03-24 TW TW109109767A patent/TWI737233B/zh active
- 2020-05-26 US US16/883,817 patent/US10942756B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140337836A1 (en) * | 2013-05-10 | 2014-11-13 | Fireeye, Inc. | Optimized resource allocation for virtual machines within a malware content detection system |
US20180005186A1 (en) * | 2016-06-30 | 2018-01-04 | Clause, Inc. | System and method for forming, storing, managing, and executing contracts |
CN109906443A (zh) * | 2016-11-03 | 2019-06-18 | 维萨国际服务协会 | 用于形成通用记录的系统和方法 |
TW201923648A (zh) * | 2017-11-09 | 2019-06-16 | 安地卡及巴布達商區塊鏈控股有限公司 | 用於可驗證運算之類c語言智慧合約的算術增強技術 |
CN109241359A (zh) * | 2018-08-18 | 2019-01-18 | 深圳市网心科技有限公司 | 区块链节点设备、区块链系统、区块数据处理系统和方法 |
WO2019120316A2 (en) * | 2019-03-26 | 2019-06-27 | Alibaba Group Holding Limited | System and method for implementing different types of blockchain contracts |
Also Published As
Publication number | Publication date |
---|---|
WO2019170175A3 (en) | 2020-04-30 |
CN111095338A (zh) | 2020-05-01 |
WO2019170175A2 (en) | 2019-09-12 |
EP3701383B1 (en) | 2021-08-04 |
CN111095338B (zh) | 2023-06-30 |
US20200293346A1 (en) | 2020-09-17 |
TW202101199A (zh) | 2021-01-01 |
US20200117493A1 (en) | 2020-04-16 |
EP3701383A2 (en) | 2020-09-02 |
CN116757843A (zh) | 2023-09-15 |
SG11202004455UA (en) | 2020-06-29 |
EP3701383A4 (en) | 2020-10-28 |
US10942756B2 (en) | 2021-03-09 |
US10705866B2 (en) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI737233B (zh) | 用於執行不同類型區塊鏈合約之系統及方法 | |
TWI720724B (zh) | 實施不同類型的區塊鏈合約的系統和方法 | |
CN110249307B (zh) | 用于在区块链上执行原生合约的系统和方法 | |
TWI714483B (zh) | 用於資料處理之系統及方法 | |
US10733152B2 (en) | System and method for implementing native contract on blockchain | |
US8141042B2 (en) | Extending portability of java code through the use of AOP | |
WO2022148390A1 (zh) | 一种在区块链中部署、更新、调用智能合约的方法 |