CN116757843A - 用于执行不同类型区块链合约的系统和方法 - Google Patents
用于执行不同类型区块链合约的系统和方法 Download PDFInfo
- Publication number
- CN116757843A CN116757843A CN202310715683.8A CN202310715683A CN116757843A CN 116757843 A CN116757843 A CN 116757843A CN 202310715683 A CN202310715683 A CN 202310715683A CN 116757843 A CN116757843 A CN 116757843A
- Authority
- CN
- China
- Prior art keywords
- blockchain
- virtual machine
- bytecode
- blockchain contract
- contract
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 112
- 230000015654 memory Effects 0.000 claims description 27
- 230000001960 triggered effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000012795 verification Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
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)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & 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示出了根据一些实施例的用于执行区块链合约的系统。
图2A和图2B示出了根据一些实施例的用于执行区块链合约的框架。
图3A示出了根据一些实施例的用于部署区块链合约的字节码。
图3B示出了根据一些实施例的用于调用区块链合约的字节码。
图4A示出了根据一些实施例的用于添加指示符的方法的流程图。
图4B示出了根据一些实施例的用于添加指示符的另一方法的流程图。
图5A示出了根据一些实施例的用于执行区块链合约的方法的流程图。
图5B示出了根据一些实施例的用于执行区块链合约的另一方法的流程图。
图6A示出了根据一些实施例的用于执行区块链合约的装置的框图。
图6B示出了根据一些实施例的用于执行区块链合约的另一装置的框图。
图7示出了可以实现本文描述的任一实施例的计算机系统的框图。
具体实施方式
图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))来访问。
某些操作的性能可以在处理器之间分配,不仅驻留在单个机器中,而且跨多个机器被部署。在一些实施例中,处理器或处理器实现的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他实施例中,处理器或处理器实现的引擎可以分布在多个地理位置。
在本文中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管一个或多个方法的各个操作被示出并描述为独立的操作,但是可以同时执行一个或多个独立的操作,并且不需要以所示的顺序执行所述操作。在配置中作为独立组件呈现的结构和功能可以实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以实现为独立的组件。这些和其他变化、修改、添加和改进都落入本文中的主题的范围内。此外,本文使用的相关术语(诸如“第一”、“第二”、“第三”等)不表示任何顺序、高度或重要性,而是用于将一个元件与另一元件区分开。此外,术语“一”、“一个”和“多个”在本文中并不表示对数量的限制,而是表示存在至少一个所述的对象。
尽管已经参考具体实施例描述了主题的概述,但是在不脱离本文的实施例的较宽范围的情况下,可以对这些实施例进行各种修改和改变。具体实施方式不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求以及这些权利要求所享有的等同物的全部范围限定。
Claims (30)
1.一种计算机实现的用于执行区块链合约的方法,包括:
获得区块链合约的字节码,所述字节码包括一个或多个指示符;所述一个或多个指示符包括:指示用于执行所述区块链合约的虚拟机类型的第一指示符;以及,
使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约。
2.根据权利要求1所述的方法,其中:
所述一个或多个指示符还包括:指示用于执行所述区块链合约的所述虚拟机的版本的第二指示符;以及,
使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约,包括:使用与所述第一指示符和所述第二指示符相关联的虚拟机类型的虚拟机来执行所述区块链合约。
3.根据权利要求1所述的方法,其中,获得所述区块链合约的字节码包括:
从客户端设备获得所述区块链合约的字节码,其中所述字节码是从所述区块链合约的源代码编译的,并且所述源代码包括所述一个或多个指示符。
4.根据权利要求1所述的方法,其中,获得所述区块链合约的字节码包括:
从客户端设备获得所述区块链合约的源代码,所述源代码包括所述一个或多个指示符;以及
编译所述源代码以获得所述区块链合约的字节码。
5.根据权利要求1所述的方法,其中,获得所述区块链合约的字节码包括:
从客户端设备获得用于执行所述区块链合约的原始字节码,其中所述原始字节码是从用于执行所述区块链合约的原始源代码编译的;以及
将所述一个或多个指示符添加到所述原始字节码以获得所述区块链合约的字节码。
6.如权利要求1所述的方法,其中,获得所述区块链合约的字节码包括:
从客户端设备获得用于执行所述区块链合约的原始源代码;
编译所述原始源代码以获得原始字节码;以及
将所述一个或多个指示符添加到所述原始字节码以获得所述区块链合约的字节码。
7.根据权利要求2所述的方法,
所述第二指示符与所述区块链合约的字节码中第二个字节对应。
8.根据权利要求1所述的方法,
所述第一指示符与所述区块链合约的字节码中第一个字节对应。
9.根据权利要求1所述的方法,
所述区块链合约的字节码中第三个到第n个字节与用于执行所述区块链合约的代码对应,n是不小于3的自然数,并且所述区块链合约的字节码中第一个到第n个字节指定应用二进制接口ABI格式。
10.根据权利要求1所述的方法,其中,使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约包括:
触发与所述第一指示符相关联的虚拟机类型的虚拟机以在相应的区块链上部署所述区块链合约,所述部署的区块链合约与所述虚拟机类型相关联。
11.根据权利要求10所述的方法,其中,使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约还包括:
触发与所述第一指示符相关联的虚拟机类型的虚拟机以调用部署的区块链合约。
12.根据权利要求1所述的方法,其中:
用于执行所述区块链合约的所述虚拟机类型包括:用于执行用c++编程语言编写的区块链合约的GNU编译器集合GCC虚拟机、用于执行用java编程语言编写的区块链合约的Java虚拟机JVM、用于执行用solidity编程语言编写的区块链合约的以太网虚拟机EVM或用于执行用python编程语言编写的区块链合约的python虚拟机PVM。
13.根据权利要求1所述的方法,其中:
所述第一指示符包括十六进制数。
14.一种用于执行区块链合约的系统,包括:
一个或多个处理器;以及
耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求1至13中任一项所述的方法。
15.一种用于执行区块链合约的装置,包括用于执行权利要求1至13中任一项所述的方法的多个模块。
16.一种存储有指令的非暂时性计算机可读介质,所述指令在由设备的处理器执行时,促使所述设备执行权利要求1至13中任一项所述的方法。
17.一种计算机实现的用于执行区块链合约的方法,包括:
生成区块链合约的字节码,所述字节码包括一个或多个指示符;所述一个或多个指示符包括:指示用于执行所述区块链合约的虚拟机类型的第一指示符;以及,
将所述区块链合约的字节码发送到区块链节点,以供所述区块链节点触发与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约。
18.根据权利要求17所述的方法,其中:
所述一个或多个指示符还包括指示用于执行所述区块链合约的所述虚拟机的版本的第二指示符;以及
将所述区块链合约的字节码发送到所述区块链节点,以供所述区块链节点触发与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约包括:
将所述区块链合约的字节码发送到所述区块链节点,以供所述区块链节点触发与所述第一指示符和所述第二指示符相关联的虚拟机类型的虚拟机执行所述区块链合约。
19.根据权利要求17所述的方法,其中,生成所述区块链合约的字节码包括:
编译所述区块链合约的源代码以获得所述区块链的所述字节码,所述源代码包括所述一个或多个指示符。
20.根据权利要求17所述的方法,其中,生成所述区块链合约的字节码包括:
编译用于执行所述区块链合约的原始源代码,以获得用于执行所述区块链合约的原始字节码;以及
将所述一个或多个指示符添加到所述原始字节码以获得所述区块链合约的字节码。
21.根据权利要求18所述的方法,其中:
所述第二指示符与所述区块链合约的字节码中第二个字节对应。
22.根据权利要求17所述的方法,其中:
所述第一指示符与所述区块链合约的字节码中第一个字节对应。
23.根据权利要求17所述的方法,其中:
所述区块链合约的字节码中第三个到第n个字节与用于执行所述区块链合约的代码对应,n是不小于3的自然数,并且所述区块链合约的字节码中第一个到第n个字节指定应用二进制接口ABI格式。
24.根据权利要求17所述的方法,其中,将所述区块链合约的字节码发送到所述区块链节点,以供所述区块链节点触发与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约包括:
将所述区块链合约的字节码发送到所述区块链节点,以供所述区块链节点触发与所述第一指示符相关联的虚拟机类型的虚拟机将所述区块链合约部署在对应区块链上,所述部署的区块链合约与所述虚拟机类型相关联。
25.根据权利要求24所述的方法,其中,将所述区块链合约的字节码发送到所述区块链节点,以供所述区块链节点触发与所述第一指示符相关联的虚拟机类型的虚拟机执行区块链合约,还包括:
将所述区块链合约的字节码发送到所述区块链节点,以供所述区块链节点触发与所述第一指示符相关联的虚拟机类型的虚拟机调用部署的区块链合约。
26.根据权利要求17所述的方法,其中:
用于执行所述区块链合约的所述虚拟机类型包括:用于执行用c++编程语言编写的区块链合约的GNU编译器集合GCC虚拟机、用于执行用java编程语言编写的区块链合约的Java虚拟机JVM、用于执行用solidity编程语言编写的区块链合约的以太网虚拟机EVM或用于执行用python编程语言编写的区块链合约的python虚拟机PVM。
27.根据权利要求17所述的方法,其中:
所述第一指示符包括十六进制数。
28.一种用于执行区块链合约的系统,包括:
一个或多个处理器;以及
耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求17至27中任一项所述的方法。
29.一种用于执行区块链合约的装置,包括用于执行权利要求17至27中任一项所述的方法的多个模块。
30.一种存储有指令的非暂时性计算机可读介质,所述指令在由设备的处理器执行时,促使所述设备执行权利要求17至27中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310715683.8A CN116757843A (zh) | 2019-06-28 | 2019-06-28 | 用于执行不同类型区块链合约的系统和方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201980004167.6A CN111095338B (zh) | 2019-06-28 | 2019-06-28 | 用于执行不同类型区块链合约的系统和方法 |
CN202310715683.8A CN116757843A (zh) | 2019-06-28 | 2019-06-28 | 用于执行不同类型区块链合约的系统和方法 |
PCT/CN2019/093591 WO2019170175A2 (en) | 2019-06-28 | 2019-06-28 | System and method for executing different types of blockchain contracts |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980004167.6A Division CN111095338B (zh) | 2019-06-28 | 2019-06-28 | 用于执行不同类型区块链合约的系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116757843A true CN116757843A (zh) | 2023-09-15 |
Family
ID=67847528
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310715683.8A Pending CN116757843A (zh) | 2019-06-28 | 2019-06-28 | 用于执行不同类型区块链合约的系统和方法 |
CN201980004167.6A Active CN111095338B (zh) | 2019-06-28 | 2019-06-28 | 用于执行不同类型区块链合约的系统和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980004167.6A Active CN111095338B (zh) | 2019-06-28 | 2019-06-28 | 用于执行不同类型区块链合约的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10705866B2 (zh) |
EP (1) | EP3701383B1 (zh) |
CN (2) | CN116757843A (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 |
CN116757843A (zh) * | 2019-06-28 | 2023-09-15 | 创新先进技术有限公司 | 用于执行不同类型区块链合约的系统和方法 |
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 | 北京艾鸥科技有限公司 | 一种区块链虚拟机装置、虚拟机创建方法及交易方法 |
CN111768183B (zh) * | 2020-08-31 | 2024-04-19 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN111770204B (zh) | 2020-08-31 | 2021-10-22 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN111768184A (zh) | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法及区块链节点 |
CN111770202B (zh) | 2020-08-31 | 2021-10-29 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN112346820B (zh) * | 2020-11-16 | 2024-07-30 | 上海可东网络科技有限公司 | 区块链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 | 杭州趣链科技有限公司 | 一种用于执行智能合约的方法及装置 |
Family Cites Families (53)
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 |
US9495180B2 (en) * | 2013-05-10 | 2016-11-15 | Fireeye, Inc. | Optimized resource allocation for virtual machines within a malware content detection system |
CN103593262B (zh) * | 2013-11-15 | 2016-05-25 | 上海爱数信息技术股份有限公司 | 一种基于类别的虚拟机备份方法 |
ES2836139T3 (es) * | 2013-11-19 | 2021-06-24 | Circle Line International Ltd | Procedimientos y aparatos de minería de bloques |
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 |
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 |
WO2017148527A1 (en) * | 2016-03-03 | 2017-09-08 | Nec Europe Ltd. | Method for managing data in a network of nodes |
AU2017240796A1 (en) | 2016-03-31 | 2018-10-25 | 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 |
US10445698B2 (en) * | 2016-06-30 | 2019-10-15 | Clause, Inc. | System and method for forming, storing, managing, and executing contracts |
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 |
WO2018085558A2 (en) | 2016-11-03 | 2018-05-11 | Visa International Service Association | Systems and methods for creating a universal record |
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 |
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 | 众安信息技术服务有限公司 | 智能合约处理方法及装置 |
US20190050831A1 (en) | 2017-08-03 | 2019-02-14 | Liquineq AG | System and method for multi-tiered distributed network transactional database |
US11146380B2 (en) | 2017-08-03 | 2021-10-12 | Parity Technologies Ltd. | Methods and systems for a heterogeneous multi-chain framework |
US10552556B2 (en) | 2017-08-03 | 2020-02-04 | Liquineq AG | System and method for performance testing of scalable distributed network transactional databases |
WO2019055585A1 (en) | 2017-09-12 | 2019-03-21 | Kadena Llc | PARALLEL CHAIN ARCHITECTURE FOR BLOCK CHAIN 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 |
CN117640170A (zh) * | 2017-11-09 | 2024-03-01 | 区块链控股有限公司 | 用于简化可执行指令以优化可验证计算的系统 |
CN107833060B (zh) * | 2017-11-13 | 2020-12-25 | 中国银行股份有限公司 | 一种区块链中智能合约交易的验证方法以及系统 |
US11182780B2 (en) | 2017-11-13 | 2021-11-23 | American Express Travel Related Services Company, Inc. | Secured account provisioning and payments for NFC-enabled devices |
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 |
CN109241359A (zh) * | 2018-08-18 | 2019-01-18 | 深圳市网心科技有限公司 | 区块链节点设备、区块链系统、区块数据处理系统和方法 |
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 | 杭州复杂美科技有限公司 | 交易分类方法、设备和存储介质 |
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 |
CN111033468B (zh) | 2019-03-26 | 2024-04-19 | 创新先进技术有限公司 | 实施不同类型的区块链合约的系统和方法 |
CN116757843A (zh) * | 2019-06-28 | 2023-09-15 | 创新先进技术有限公司 | 用于执行不同类型区块链合约的系统和方法 |
-
2019
- 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-06-28 EP EP19764927.0A patent/EP3701383B1/en active Active
- 2019-06-28 CN CN201980004167.6A patent/CN111095338B/zh active Active
- 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
Also Published As
Publication number | Publication date |
---|---|
WO2019170175A2 (en) | 2019-09-12 |
EP3701383B1 (en) | 2021-08-04 |
WO2019170175A3 (en) | 2020-04-30 |
US10705866B2 (en) | 2020-07-07 |
CN111095338B (zh) | 2023-06-30 |
TWI737233B (zh) | 2021-08-21 |
EP3701383A4 (en) | 2020-10-28 |
EP3701383A2 (en) | 2020-09-02 |
US20200117493A1 (en) | 2020-04-16 |
CN111095338A (zh) | 2020-05-01 |
US20200293346A1 (en) | 2020-09-17 |
TW202101199A (zh) | 2021-01-01 |
US10942756B2 (en) | 2021-03-09 |
SG11202004455UA (en) | 2020-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111095338B (zh) | 用于执行不同类型区块链合约的系统和方法 | |
CN111033468B (zh) | 实施不同类型的区块链合约的系统和方法 | |
CN110249307B (zh) | 用于在区块链上执行原生合约的系统和方法 | |
CN111095198B (zh) | 用于数据处理的系统和方法 | |
US10733152B2 (en) | System and method for implementing native contract on blockchain | |
CN111179086A (zh) | 一种基于WebAssembly的智能合约虚拟机 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |