CN111478932B - 智能合约数据的处理方法、区块链网络及存储介质 - Google Patents
智能合约数据的处理方法、区块链网络及存储介质 Download PDFInfo
- Publication number
- CN111478932B CN111478932B CN201910068495.4A CN201910068495A CN111478932B CN 111478932 B CN111478932 B CN 111478932B CN 201910068495 A CN201910068495 A CN 201910068495A CN 111478932 B CN111478932 B CN 111478932B
- Authority
- CN
- China
- Prior art keywords
- transaction
- information
- blockchain network
- data
- internal
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Marketing (AREA)
- Signal Processing (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种智能合约数据的处理方法、区块链网络及存储介质;方法包括:通过区块链网络的共识节点解释并执行智能合约的代码;对解释和执行的过程中产生的智能合约数据进行追踪,得到在合约账户之间进行的内部交易的追踪结果;解析追踪结果得到内部交易的信息。
Description
技术领域
本发明涉及电数字数据处理技术,尤其涉及一种智能合约数据的处理方法、区块链网络及存储介质。
背景技术
随着区块链技术的快速发展,以太坊等代表的公链网络以其智能合约、图灵完备、更高的每秒事务处理量(TPS,Transaction Per Second)得到广泛使用
截至2018年11月底,以太坊块高已超过六百八十万块,对应的链上数据在快速同步模式下也已逾百吉(G),对链上数据的处理、分析成为区块链技术领域的一个重要分支。
目前链上数据主要以非结构化数据库的形式保存在众多的全节点中,为了查看链上数据,主要通过调用JS对象表示(JSON,JavaScript Object Notati on)-远程过程调用(RPC,Remote Procedure Call)接口、节点数据解析等方式实现对链上数据的访问。
然而,区块链网络的智能合约在执行过程中所生产的数据(即智能合约数据)并非全部都是链上数据的形式,现有技术难以满足深入、全面获取智能合约数据以进行分析的需求。
发明内容
本发明实施例提供一种智能合约数据的处理方法、区块链网络及存储介质,能够全面地获取智能合约数据。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种智能合约数据的处理方法,所述方法包括:
通过区块链网络的节点解释并执行智能合约的代码;
对解释和执行的过程中产生的智能合约数据进行追踪,得到在合约账户之间进行的内部交易的追踪结果;
解析所述追踪结果得到所述内部交易的信息。
第二方面,本发明实施例提供一种区块链网络,所述区块链网络包括:
至少两个节点;
所述节点用于:
解释并执行智能合约的代码;
对解释和执行的过程中产生的智能合约数据进行追踪,得到在合约账户之间进行的内部交易的追踪结果;
解析所述追踪结果得到所述内部交易的信息。
第三方面,本发明实施例提供一种区块链网络,所述区块链网络包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令,实现本发明实施例提供的智能合约数据的处理方法。
第四方面,本发明实施例提供一种存储介质,存储有可执行指令,当所述可执行指令被执行时,用于引起处理器执行实现本发明实施例提供的智能合约数据的处理方法。
本发明实施例具有以下有益效果:
通过对智能合约的代码的解释和执行过程进行跟踪,在最大程度减小共识节点的计算资源消耗的基础上,准确而及时的提取到内部交易信息,克服现有技术无法获取内部交易信息的问题。
附图说明
图1是本发明实施例提供的基于区块链网络的示例性应用场景示意图;
图2是本发明实施例提供的区块链网络的功能架构示意图;
图3是本发明实施例提供的区块链网络中的共识节点一个可选的结构示意图;
图4A本发明实施例提供的智能合约数据的处理方法的流程图;
图4B是本发明实施例提供的智能合约数据的处理方法的流程图;
图5是本发明实施例提供的以太坊网络的示例性的结构示意图;
图6是本发明实施例提供的以太坊网络的状态跃迁的示意图;
图7是本发明实施例提供的以太坊网络的状态跃迁的流程图;
图8是本发明实施例提供的更新以太坊网络的状态的示意图;
图9是本发明实施例提供的提取智能合约数据的示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)交易(Transaction),等同于计算机术语“事务”,并非单指商业语境中的交易,一般地,可以是在区块链网络的账户之间的转账;鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。
本文中所涉及的交易的类型包括:
1.1)普通交易,是指从一个或多个外部账户(EOA,Externally Owned Accounts)到一个或多个的外部账户的、以数字货币例如以太币(Ether)为对象的交易,其中外部账户是指由自然人使用私钥控制的账户;
1.2)合约交易,是指在由自然人控制的外部账户与智能合约分配/控制的合约账户之间的数字货币的交易;
1.3)内部交易(Internal Transaction),是由智能合约发起的、在由智能合约分配/控制的合约账户(CA,Contract Address)之间进行的、以数字货币为对象的交易。与“内部交易”对应的是“普通交易”,是在由自然人在区块链网络中拥有的外部账户之间进行的交易;
1.4)通证(Token)交易,其中通证是指加密的数字权益证明,例如,在以太坊网络中,可以是基于以太坊发行的各类通证的交易。
2)区块链,区块以顺序相连的方式组合成的一种链式数据结构,在每个区块中引用前一个区块或者其子集的哈希值,从而以密码学的方式保证所记录交易的防篡改和防伪造。
本文中涉及的区块链中的信息包括:前一区块哈希、时间戳、随机数、目标哈希和默克尔基数树(MPT,Merkle Patricia Tree)树的根哈希。MPT树用于保存由账户(地址)和账户状态的映射形成的区块链网络的全局状态(本文中也简称为状态),包括交易树、状态树和收据树,均采用键-值(Key-Value)对的存储方式以优化查询性能,其中交易树中存储交易的日志(包括本次交易执行的各种事件的一系列主题以及与这些事件相关的任何数据),可以用于验证某个交易是否存在于区块中;状态树中存储账户的各种变化(包括账户的余额),收据树用于存储交易的收据,包括方便交易的查询和简历索引或者创建零知识证据。
3)区块链网络,通过共识的方式将新区块纳入区块链的一系列的、无中心的节点的集合,具有部署智能合约的能力。
本文中所记载的区块链网络是指存储有至少两种不同类型交易的区块链平台,例如以太坊(Ethereum),其存储了普通交易、合约交易、内部交易和通证交易等多种交易的记录。
4)智能合约,部署在区块链网络中的、根据条件而触发执行的程序,通过更新状态以完成在不同账户之间的交易,本文中将智能合约在执行过程中产生的数据成为智能合约数据,包括各种交易的数据和区块链的数据。
5)虚拟机,是区块链网络中用于进行智能合约的调用和执行的环境,例如以太坊虚拟机(EVM,Ethereum Virtual Machine)。
6)共识,是区块链网络中的一个过程,用于在区块链网络中的共识节点之间智能合约数据达成一致,实现共识的机制包括工作量证明(PoW)、权益证明(PoS,Proof ofStake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proofof Elapsed Time)等,当然不局限于上述机制。
首先说明实现本发明实施例的区块链网络的示例性应用。
参见图1,图1是本发明实施例提供的基于区块链网络的示例性应用场景示意图,实现本发明实施例的区块链网络包括至少两个共识节点(图1中示例性示出共识节点120-1和共识节点120-2)。终端200通过运行各种生产环境的客户端,例如移动APP、插件和浏览器中的网页等,以接入区块链网络100而成为区块链网络100的一个客户端节点。在以太坊网络中,客户端可以是去中心化的应用程序(DAPP,Decentralized App)。
例如,终端200-1通过网络300接入区块链网络100而成为客户端节点110-1,终端200-2通过网络300接入区块链网络100而成为客户端节点110-2,当然,区块链网络100中可以接入其他类型的设备作为共识节点,例如服务器。
需要指出,实现本发明实施例的共识节点是指维护有完整的区块链并支持智能合约调用的全节点,在以太坊网络中,共识节点是以太坊网络中存储有完整的区块链以及非结构化数据库(本文中也称为KVDB)的全节点。
当拥有外部账户的用户期望交易时,可以在终端200(图1中示例性示出了终端200-1和终端200-2)的客户端的图形界面210(图1中示例性示出了图形界面210-1和图形界面210-2)中通过操作发起交易,客户端在交易中通过调用共识节点120暴露的应用程序接口(API,Application Interface)的方式,与区块链网络100中的共识节点120建立通道,以与共识节点120之间进行交易,并更新区块链网络的状态,这个更新的过程包括:共识节点120首先更新结构化数据库存储的状态树、收据树和交易树,然后计算更新结构化数据库存储的状态树、收据树和交易树的根节点的哈希,进而更新区块链中存储的状态树、收据树和交易树的根节点的哈希。
示例性地,这些交易中通过调用API所完成的操作包括:查看某一个共识节点下的所有账户;查看区块的高度;查看账户的余额;对交易进行签名;发起交易;广播已经签名的交易;根据区块编号或区块哈希(Hash)查询区块信息;根据交易哈希查询交易信息。
典型地,API可以为JS对象表示(JSON,JavaScript Object Notation)-远程过程调用(RPC,Remote Procedure Call)接口。作为示例,JSON-RPC调用的基本参数包括:jsonrpc:定义JSON-RPC版本;method:调用的方法名;params:方法传入的参数,若无参数则为null;id:调用标识符,可以为字符串。
客户端将向区块链网络100中广播交易,并在图形界面210中显示交易结果。
需要指出,以终端200-1为例,由于终端200-1本身也是属于区块链网络100的客户端节点,因此,终端200-1向区块链网络100中的共识节点发送交易时,可以采用广播的形式将交易不加区分的发送到区块链网络100中的所有节点,包括共识节点和除终端200-1之外的客户端节点,或者,以组播或单播的形式将交易发送到区块链网络100中的共识节点。
图1示出的区块链网络100中的共识节点120在执行智能合约时会产生智能合约数据,而对于共识节点120执行智能合约进行在内部交易时,由于内部交易实质是在智能合约控制的合约账户之间进行交易,对应的内部交易的数据并不会存储在区块链中而成为链上数据。
为了从区块链网络100中提取内部交易数据这一特殊类型的智能合约数据,共识节点120可以用于:解释并执行智能合约的代码;对解释和执行的过程进行追踪,得到在合约账户之间进行的内部交易的追踪结果;解析追踪结果得到内部交易的信息。
在一些实施例中,共识节点120具体用于通过如下的方式解释并执行智能合约的代码:当共识节点120接收到交易时,在共识节点120中构造用于执行交易的虚拟机,例如,对于以太坊节点会构造EVM;通过虚拟机构造解释器,通过解释器解释并执行交易中包括的智能合约的代码。
在一些实施例中,共识节点120具体用于通过如下的方式来对解释和执行的过程中产生的智能合约数据的过程进行追踪:通过在共识节点120中的虚拟机来构造追踪器;通过追踪器来对解释器解释和执行的过程进行追踪,以得到在合约账户之间进行的内部交易的追踪结果;通过虚拟机接收来自追踪器的追踪结果。
例如,共识节点120是根据执行所接收到的交易来完成区块链网络100的状态的跃迁,假设当前区块链网络100当前处于状态N(N为大于或等于1的整数),当共识节点120接收到交易时,通过执行交易,根据交易结果更新区块链和非结构化数据库,从而跃迁到状态N+1;在共识节点120驱动区块链网络100跃迁到状态N+1的过程中,共识节点120中会构造用于执行交易的虚拟机;通过虚拟机构造解释器,通过解释器解释并执行交易中包括的智能合约的代码,以根据交易的执行结果来将状态N更新为状态N+1,与此同时,通过追踪器来对解释器解释和执行代码的过程进行追踪。这样,一旦智能合约代码中涉及到内部交易,那么追踪器就会追踪到相应的追踪结果并返回给虚拟机进行解析,从而与能够与交易的执行同步地获得关于内部交易的信息。
在另一些实施例中,为了从智能合约数据中提取链上数据,共识节点120还可以用于:向数据处理引擎发送区块链网络100的区块链进行解析,得到结构化的以下信息至少之一:各区块的信息;各区块的叔块的信息;向数据处理引擎发送通过虚拟机而接收的来自追踪器的内部交易、区块链网络120中非结构化数据库(KVDB)中存储的区块链网络120的状态,以供数据处理引擎进行解析,并得到结构化的以下信息至少之一:普通交易信息;通证交易信息;内部交易信息。上述结构化的信息可以存储到结构化数据库中。
从而,共识节点120不仅可以从智能合约数据中提取内部交易数据,还可以提取结构化的普通交易信息和通证交易信息等智能合约数据,实现了从区块链网络100中全面及时提取智能合约数据的技术效果。
并且,将区块链网络120中的非结构化的数据(非结构化存储是区块链网络120出于优化查询性能的需要),通过数据处理引擎转换为结构化的数据,数据可以会直接进行分析(例如清洗、去重),提升了后续分析数据的效率。
需要指出,数据处理引擎可以是部署在链上(即区块链网络中,例如部署在共识节点中,或者部署为一个独立的数据处理节点)的,从而成为区块链网络的一个功能模块;当然,也可以数据处理引擎也可以独立于区块链网络而部署,例如可以对接多个的区块链网络,存储多个区块链网络的结构化的智能合约数据,以满足链下的生产环境针对智能合约数据的来源的个性化需求。
继续说明实现本发明实施例的区块链网络的示例性的功能架构,参见图2,图2是本发明实施例提供的区块链网络100的功能架构示意图,包括智能合约101、共识层102、网络层103、数据层104和资源层105,下面分别进行说明。
智能合约101用于包括确认转账是否有正确的数值,确认签名的有效性、计算转账需要的费用,并且收取转账费用,执行数字资产转账到特定账户。
共识层102封装了区块链中传播的交易结果达成一致性的机制,例如包括POS和工POW,支持共识机制的可插拔。
网络层103封装了点对点(P2P)网络协议、数据传播机制和数据验证机制、接入和认证机制和业务主体身份。P2P网络协议实现区块链网络中节点之间的通信,数据传播机制保证了交易/交易结果在区块链网络中的传播,数据验证机制用于根据加密学方法(例如数字证书、数字签名、公/私钥对)实现节点之间传输数据的可靠性;接入和认证机制用于根据业务主体身份对终端的接入和认证进行管理。
数据层104封装了实现区块链的各种数据结构,例如以Key-Value对形式存储。
资源层105封装各种可用的计算资源和存储资源,例如计算机、服务器/集群和云中的计算资源和存储资源,进行抽象并向数据层104提供统一的接口以屏蔽实现资源层105的底层硬件的差异性。
计算资源包括各种形式的处理器,例如中央处理器(CPU)、应用专用集成电路(ASIC,Application Specific Integrated Circuit)、专用集成电路和现场可编程门阵列(FPGA,Field-Programmable Gate Array)的各种形式的处理器。
存储资源包括各种易失性存储器和非易失性存储器等各种类型的存储介质。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。
资源层105的计算资源和存储资源可以被映射为区块链网络中的节点,一旦被部署到节点的可执行指令被执行,实现节点的底层资源(例如各种类型的处理器)将实现将响应用于智能合约的调用。
作为示例,可执行指令可以采用软件(包括系统程序和应用程序)、软件模块、脚本、插件等的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件或者适合在计算环境中使用的其它单元。
作为本发明实施例提供的方法采用软硬件结合实施的示例,本发明实施例提供的方法可以直接体现为由处理器执行的不同形式的软件模块,软件模块可以位于存储介质中,存储介质位于资源层,处理器读取存储器软件模块包括的可执行指令,结合必要的硬件完成本发明实施例提供的智能合约数据的处理方法。
下面说明实现本发明实施例的共识节点120的示例性结构,参见图3,图3是本发明实施例提供的区块链网络100中的共识节点120一个可选的结构示意图,共识节点120可以是一个或多个服务器,根据共识节点120的结构,可以预见共识节点120的其他的示例性结构,因此这里所描述的结构不应视为限制,例如可以省略下文所描述的部分组件,或者,增设下文所未记载的组件以适应某些应用场景的特殊需求。
图3所示的共识节点120包括:至少一个处理器121、存储器124和至少一个网络接口122。共识节点120中的各个组件通过总线系统123耦合在一起。可理解,总线系统123用于实现这些组件之间的连接通信。总线系统123除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统123。
存储器124可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。本发明实施例描述的存储器124旨在包括这些和任意其它适合类型的存储器。
处理器121可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器124能够存储可执行指令以支持共识节点120的操作,这些可执行指令的示例包括:用于在共识节点120上操作的程序、插件和脚本等各种形式的软件模块,程序例如可以包括操作系统和应用程序。
作为软件模块的示例,共识节点120中用于实现本发明实施例的方法的模块包括,下面分别进行说明。
解释器1241,用于解释并执行智能合约的代码;追踪器1242,用于对解释和执行的过程进行追踪,得到在合约账户之间进行的内部交易的追踪结果;虚拟机1243,用于解析追踪结果得到内部交易的信息。
在一些实施例中,虚拟机1243具体用于:当接收到交易时,在共识节点120中构造用于执行交易的虚拟机1243;通过虚拟机1243构造解释器1241,通过解释器1241解释并执行交易中包括的智能合约的代码。
在一些实施例中,虚拟机1243具体用于:构造追踪器1242;通过追踪器1242来对解释器1241解释和执行的过程中产生的智能合约数据进行追踪,以得到在合约账户之间进行的内部交易的追踪结果;接收来自追踪器1242的追踪结果。
在一些实施例中,虚拟机1243还用于:通过共识节点120中构造的数据处理引擎,对区块链网络120的区块链进行解析,得到结构化的以下信息至少之一:各区块的信息;各区块的叔块的信息。
在一些实施例中,虚拟机1243还用于:通过共识节点120中构造的数据处理引擎,对区块链网络120的非结构化数据库进行解析,得到结构化的以下信息至少之一:普通交易信息;通证交易信息;内部交易信息。
继续说明实现本发明实施例的智能合约数据的处理流程,参见图4A,图4A本发明实施例提供的智能合约数据的处理方法的流程图,结合图4A进行说明。
在步骤101中,通过区块链网络的共识节点解释并执行智能合约的代码。
在一些实施例中,当共识节点接收到交易时,在共识节点中构造用于执行交易的虚拟机;通过虚拟机构造解释器,通过解释器解释并执行交易中包括的智能合约的代码。
在步骤102中,对解释和执行的过程进行追踪,得到在合约账户之间进行的内部交易的追踪结果。
在一些实施例中,通过在共识节点中的虚拟机来构造追踪器;通过追踪器来对解释器解释和执行的过程中产生的智能合约数据进行追踪,以得到在合约账户之间进行的内部交易的追踪结果。
在步骤103中,解析追踪结果得到内部交易的信息。
在一些实施例中,通过虚拟机接收来自追踪器的追踪结果,并解析出内部交易的信息。通过对智能合约的代码的解释和执行过程进行跟踪,在最大程度减小共识节点的计算资源消耗的基础上,准确而及时的提取到内部交易信息。
在一些实施例中,参见图4B,基于图4A,图4B是本发明实施例提供的智能合约数据的处理方法的流程图,除了获取内部交易数据这一类型的智能合约数据,还可以从区块链网络100的区块链和非结构化数据库中提取其他类型的智能合约数据,例如通证交易信息和普通交易信息等,将结合图4B进行说明。
在步骤104中,向数据处理引擎发送区块链网络的区块链以进行解析,并构建结构化的以下信息至少之一:各区块的信息,例如区块的哈希,区块中交易的数量、数额等;各区块的叔块的信息,例如叔块的哈希,叔块中的交易的数量、数额等。
在步骤105中,向数据处理引擎发送内部交易的信息、以及区块链网络中的非结构化数据库存储的区块链网络的状态,以供所述数据处理引擎进行解析并构建结构化的以下信息至少之一:普通交易信息,例如普通交易的账户地址、时间、数额;通证交易信息,例如通证交易的账户、时间和数额等;合约交易信息,例如账户地址、数额和时间等。
在跟踪解释和执行智能合约代码的过程中得到内部交易信息的同时,还可以对区块链和结构化数据库中存储的区块链网络120的状态进行解析,以得到如普通交易信息和通证交易信息在内的智能合约数据,实现了全面及时提取智能合约数据的技术效果。
下面以以太坊为例进一步进行说明本发明实施例。
以太坊网络的链上数据种类繁多,除了包括基本的区块数据、交易数据外,还包括通证基本信息、通证交易数据以及智能合约交易数据等。针对智能合约发起的交易(即内部交易)的数据,通常所用的JSON-RPC、节点数据解析等方式无法获取,现有技术一般通过由全节点对交易所在区块进行追踪来获取内部交易的数据,在追踪过程中会额外消耗全节点的计算资源,并影响全节点的正常运行。
本发明实施例提供一种解决以太坊链上数据,尤其是内部交易的数据获取困难问题的方案,优化链上数据获取及处理流程,为实现链上数据在出块后的即时、快速处理及准确实时分析提供基础,根据这里的实施可以轻易地应用于其他公链的数据处理当中。
参见图5,图5是本发明实施例提供的以太坊网络的示例性的结构示意图。在以太坊网络中,各个以太坊节点通过以太坊网络实现共识及数据同步,并将数据存储在本地KV数据库(即KVDB)中。本发明实施例将通过以太坊数据处理引擎实现对链上数据的解析,并通过对以太坊节点的改造,在最大限度降低对全节点性能影响的基础上获取通过现有技术的JSON RPC方案无法获取的内部交易的数据,并存储为结构化数据。
智能合约数据是以太坊网络的重要组成部分,通常包括普通交易信息、合约交易信息、内部交易信息以及通证交易信息等。本发明实施例通过以太坊数据处理引擎对链上数据进行解析,从而直接获取包括普通交易、合约交易和通证交易在内的智能合约数据。对于内部交易,其本身并不包含在区块链上,因此无法通过解析获取,这是因为智能合约具有很高的灵活性,虽然提高以太坊网络的适用性,但是也提高了获取其运行结果的难度。针对这个问题,本发明实施例通过对以太坊节点的虚拟机(EVM)执行过程进行改造,实现对智能合约的执行结果(包含内部交易)的直接一次性获取。
参见图6,图6是本发明实施例提供的以太坊网络的状态跃迁的示意图,整个以太坊网络是一个基于点对点(P2P)网络节点的状态机,由交易驱动以太坊网络的状态发生跃迁。其中,各个以太坊节点为每笔需要执行的交易建立一个虚拟机,在虚拟机中执行交易以实现区块链网络的(全局)状态的跃迁。
参见图7,图7是本发明实施例提供的以太坊网络的状态跃迁的流程图,以从第N个状态跃迁到第N+1个状态为例,以太坊节点通过虚拟机执行交易的过程中,首先构造用于运行该交易的解释器(Interpreter),通过解释器运行交易中可能包括的智能合约的代码。在解释器运行时,通过追踪器(Tracer)对解释器解释、执行合约代码的过程进行记录,并在运行结束时将追踪结果(TraceResult)即追踪的合约代码的执行结果返回给虚拟机,然后由虚拟机对运行结果进行解析,以提取出其中包含的内部交易数据等信息。
一个示例参见图9,图9是本发明实施例提供的提取智能合约数据的示意图,作为通过以太坊数据处理引擎对链上数据进行解析的示例,直接从区块头(Block Header)部分中获取区块信息(Block Info),例如区块的哈希和高度;直接从叔块(Uncles)部分中获取叔块信息(Uncle(s)Info),例如叔块的哈希和高度;直接从交易部分中获取交易信息(Transaction(s)Info);直接从交易收据(Transaction Receipt)部分中获取通证交易信息(Token Transaction(s)Info)。作为追踪器对运行结果进行处理的示例,从追踪结果(Trace Result)中解析出内部交易信息(Internal Transaction(s)Info)。
当虚拟机构造的解释器解释并执行完毕合约代码时,根据执行结果对应的交易收据(Transaction Receipt)、交易日志(Transacition)和账户余额来更新以太坊网络的状态,以从状态N跃迁到状态N+1,将结合图8进行说明。
参见图8,图8是本发明实施例提供的更新以太坊网络的状态的示意图,以太坊网络的状态就是由账户地址和账户状态的映射组成,这个映射被保存在MPT树的数据结构中,不同的MPT树分别用于存储状态、交易和收据,即形成了交易树、状态树和收据树。
以太坊区块链是从创世区块开始的,交易会不断改变以太坊网络的区块链的状态,例如存储在状态树中的账户余额会随着转账而改变。
以太坊网络的状态并不是直接存储在区块中,取而代之的,以太坊网络的智能合约的全部数据(在存储树中)以键-值对的方式存储为三种不同的MPT,在区块链每个块中都有一个头(Header),保存了代表状态的三种不同的MPT的根节点的哈希。
当虚拟机构造的解释器解释并执行完毕合约代码时,以太坊节点将在区块中更新以太坊网络的状态,包括:将交易收据(Transaction Receipt)添加到收据树来更新收据树的根节点的哈希,将交易(Transacition)添加到交易树来更新交易树的根节点的哈希,根据交易执行结果更新状态树中参与交易的账户的状态并更新状态树的根节点的哈希。
本发明实施例的智能合约数据的处理方案可以在上述的状态跃迁的过程中同步实施,克服以太坊区块链引入智能合约带来的链上数据解析高复杂度的难点:根据以太坊特定的区块结构,构建层次化的数据解析处理架构;为获取内部交易数据,构造以交易哈希和区块哈希为关键字的追踪结果结构体;为获取内部交易数据,改造EVM及解释器执行过程,以较小代价实现对完整区块数据的一次性获取。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (10)
1.一种智能合约数据的处理方法,其特征在于,所述方法包括:
通过区块链网络的共识节点解释并执行智能合约的代码;
对解释和执行的过程进行追踪,得到在合约账户之间进行的内部交易的追踪结果;所述内部交易,是由内部合约发起的、在由智能合约分配或控制的合约账户之间进行的、以数字货币为对象的交易;所述内部交易的数据并不会存储在区块链中而成为链上数据;
解析所述追踪结果得到所述内部交易的信息;
向数据处理引擎发送所述内部交易的信息、以及所述区块链网络中的非结构化数据库存储的区块链网络的状态,以供所述数据处理引擎进行解析并构建结构化的以下信息至少之一:普通交易信息;通证交易信息;内部交易信息。
2.根据权利要求1所述的方法,其特征在于,所述通过区块链网络的共识节点解释并执行智能合约的代码,包括:
当所述共识节点接收到交易时,在所述共识节点中构造用于执行所述交易的虚拟机;
通过所述虚拟机构造解释器,并通过所述解释器解释并执行所述交易中包括的智能合约的代码。
3.根据权利要求1所述的方法,其特征在于,所述对解释和执行的过程进行追踪,得到在合约账户之间进行的内部交易的追踪结果,包括:
通过在所述共识节点中的虚拟机来构造追踪器;
通过所述追踪器来对解释器解释和执行的过程进行追踪,以得到在合约账户之间进行的内部交易的追踪结果;
通过所述虚拟机接收来自所述追踪器的追踪结果。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
向数据处理引擎发送所述区块链网络的区块链以进行解析,并构建结构化的以下信息至少之一:各区块的信息;各区块的叔块的信息。
5.一种区块链网络,其特征在于,所述区块链网络包括:
至少两个共识节点;
所述共识节点用于:
解释并执行智能合约的代码;
对解释和执行的过程进行追踪,得到在合约账户之间进行的内部交易的追踪结果;所述内部交易,是由内部合约发起的、在由智能合约分配或控制的合约账户之间进行的、以数字货币为对象的交易;所述内部交易的数据并不会存储在区块链中而成为链上数据;
解析所述追踪结果得到所述内部交易的信息;
向数据处理引擎发送所述内部交易的信息、以及所述区块链网络中的非结构化数据库存储的区块链网络的状态,以供所述数据处理引擎进行解析并构建结构化的以下信息至少之一:普通交易信息;通证交易信息;内部交易信息。
6.根据权利要求5所述的区块链网络,其特征在于,
所述共识节点具体用于:
当所述共识节点接收到交易时,在所述共识节点中构造用于执行所述交易的虚拟机;
通过所述虚拟机构造解释器,通过所述解释器解释并执行所述交易中包括的智能合约的代码。
7.根据权利要求5所述的区块链网络,其特征在于,
所述共识节点具体用于:
通过在所述共识节点中的虚拟机来构造追踪器;
通过所述追踪器来对解释器解释和执行的过程进行追踪,以得到在合约账户之间进行的内部交易的追踪结果;
通过所述虚拟机接收来自所述追踪器的追踪结果。
8.根据权利要求5所述的区块链网络,其特征在于,
所述共识节点还用于:
向数据处理引擎发送所述区块链网络的区块链以进行解析,并构建结构化的以下信息至少之一:各区块的信息;各区块的叔块的信息。
9.一种区块链网络,其特征在于,所述区块链网络包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令,实现权利要求1至4任一项所述的智能合约数据的处理方法。
10.一种存储介质,其特征在于,存储有可执行指令,当所述可执行指令被执行时,用于引起处理器执行权利要求1至4任一项所述的智能合约数据的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910068495.4A CN111478932B (zh) | 2019-01-24 | 2019-01-24 | 智能合约数据的处理方法、区块链网络及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910068495.4A CN111478932B (zh) | 2019-01-24 | 2019-01-24 | 智能合约数据的处理方法、区块链网络及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111478932A CN111478932A (zh) | 2020-07-31 |
CN111478932B true CN111478932B (zh) | 2023-04-07 |
Family
ID=71743980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910068495.4A Active CN111478932B (zh) | 2019-01-24 | 2019-01-24 | 智能合约数据的处理方法、区块链网络及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111478932B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113283889B (zh) * | 2021-06-04 | 2022-08-16 | 杭州复杂美科技有限公司 | 一种去中心化交易所系统、交易方法、设备及储存介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016138447A1 (en) * | 2015-02-26 | 2016-09-01 | Skuchain, Inc. | Tracking unitization occurring in a supply chain |
CN106951307A (zh) * | 2017-03-06 | 2017-07-14 | 钱德君 | 一种智能合约虚拟机实现方法 |
CN107103054A (zh) * | 2017-04-12 | 2017-08-29 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储系统与实现方法 |
CN107924389A (zh) * | 2015-07-02 | 2018-04-17 | 纳斯达克公司 | 对分布式交易数据库的安全溯源的系统和方法 |
CN108665253A (zh) * | 2018-05-18 | 2018-10-16 | 百度在线网络技术(北京)有限公司 | 一种区块链网络的数据处理方法、装置、设备及存储介质 |
CN109063109A (zh) * | 2018-07-27 | 2018-12-21 | 电子科技大学 | 一种基于以太坊的数据查询系统 |
CN109189396A (zh) * | 2018-08-16 | 2019-01-11 | 北京京东尚科信息技术有限公司 | 智能合约引擎组件、运行方法及存储介质 |
CN109191124A (zh) * | 2018-08-16 | 2019-01-11 | 北京京东尚科信息技术有限公司 | 区块链网络、部署方法及存储介质 |
-
2019
- 2019-01-24 CN CN201910068495.4A patent/CN111478932B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016138447A1 (en) * | 2015-02-26 | 2016-09-01 | Skuchain, Inc. | Tracking unitization occurring in a supply chain |
CN107924389A (zh) * | 2015-07-02 | 2018-04-17 | 纳斯达克公司 | 对分布式交易数据库的安全溯源的系统和方法 |
CN106951307A (zh) * | 2017-03-06 | 2017-07-14 | 钱德君 | 一种智能合约虚拟机实现方法 |
CN107103054A (zh) * | 2017-04-12 | 2017-08-29 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储系统与实现方法 |
CN108665253A (zh) * | 2018-05-18 | 2018-10-16 | 百度在线网络技术(北京)有限公司 | 一种区块链网络的数据处理方法、装置、设备及存储介质 |
CN109063109A (zh) * | 2018-07-27 | 2018-12-21 | 电子科技大学 | 一种基于以太坊的数据查询系统 |
CN109189396A (zh) * | 2018-08-16 | 2019-01-11 | 北京京东尚科信息技术有限公司 | 智能合约引擎组件、运行方法及存储介质 |
CN109191124A (zh) * | 2018-08-16 | 2019-01-11 | 北京京东尚科信息技术有限公司 | 区块链网络、部署方法及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111478932A (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109191124B (zh) | 区块链网络、部署方法及存储介质 | |
CN109218079B (zh) | 一种区块链网络、部署方法及存储介质 | |
CN109325855B (zh) | 区块链网络、部署方法及存储介质 | |
US20170364697A1 (en) | Data interworking method and data interworking device | |
US11379828B2 (en) | Distributed computing and storage network implementing high integrity, high bandwidth, low latency, secure processing | |
Wang et al. | Performance benchmarking and optimization for blockchain systems: A survey | |
CN111931220B (zh) | 区块链网络的共识处理方法、装置、介质及电子设备 | |
US11720545B2 (en) | Optimization of chaincode statements | |
KR20200023706A (ko) | 스마트 계약을 지원하는 블록체인에 기반한, 분산형 컴퓨팅 자원 공유 시스템 및 컴퓨팅 장치 | |
CN106713391B (zh) | 一种session信息的共享方法和共享系统 | |
US10255371B2 (en) | Methods and systems for identifying multiple devices belonging to a single user by merging deterministic and probabilistic data to generate a cross device data structure | |
Liu et al. | The service architecture of Internet of things terminal connection based on blockchain technology | |
CN110544042A (zh) | 基于区块链网络的图书管理方法及装置 | |
US20230370285A1 (en) | Block-chain-based data processing method, computer device, computer-readable storage medium | |
CN113901078A (zh) | 业务订单关联查询方法、装置、设备及存储介质 | |
KR20130140508A (ko) | 로그 정보 수집 장치 | |
CN114157550B (zh) | 一种基于无冲突事务合并的联盟区块链系统 | |
CN111478932B (zh) | 智能合约数据的处理方法、区块链网络及存储介质 | |
CN113037824B (zh) | 一种面向云计算的高性能区块链的构建方法 | |
CN109558710A (zh) | 用户登录方法、装置、系统及存储介质 | |
CN111915295A (zh) | 提升交易执行速度的联盟链 | |
CN115659403A (zh) | 基于知识图谱的区块链跨链信息交互验证方法及系统 | |
CN113610527B (zh) | 联盟链的交易方法、装置、系统、终端设备及存储介质 | |
Cheng et al. | Vflchain: blockchain-enabled vertical federated learning for edge network data sharing | |
KR20200048708A (ko) | 블록체인에 기반한, 분산형 컴퓨팅 자원 공유 시스템 상에서의 보안 통신 제공 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |