CN116561740A - 区块链中的交易执行方法、节点和系统 - Google Patents
区块链中的交易执行方法、节点和系统 Download PDFInfo
- Publication number
- CN116561740A CN116561740A CN202310486095.1A CN202310486095A CN116561740A CN 116561740 A CN116561740 A CN 116561740A CN 202310486095 A CN202310486095 A CN 202310486095A CN 116561740 A CN116561740 A CN 116561740A
- Authority
- CN
- China
- Prior art keywords
- transaction
- node
- read
- execution
- tee
- 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 72
- 238000012795 verification Methods 0.000 claims abstract description 40
- 238000004458 analytical method Methods 0.000 claims description 45
- 238000010586 diagram Methods 0.000 description 17
- 238000013507 mapping Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 230000006872 improvement Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 239000013589 supplement Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000007789 sealing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/22—Payment schemes or models
- G06Q20/223—Payment schemes or models based on the use of peer-to-peer networks
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/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/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- 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/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- 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
-
- 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/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Software Systems (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种区块链中的交易执行方法、节点和系统,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述方法包括:所述第一节点在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集,使用所述TEE中的私钥对所述第一执行读写集签名,得到第一签名,所述第一执行读写集包括第一执行读集和第一执行写集;将所述第一执行读写集和所述第一签名发送给所述第二节点;所述第二节点使用所述与私钥对应的公钥对所述第一签名进行验证,在对所述第一签名的验证通过之后,对所述第一执行读集进行验证,在验证通过的情况下,存储所述第一执行写集作为所述第一交易的执行写集。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种区块链中的交易执行方法、节点和系统。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
区块链中可引入可信执行环境(Trusted Execution Environment,TEE),TEE可保证放入其中的代码和数据的安全性、机密性和完整性。
发明内容
本发明的目的在于提供一种区块链中的交易执行方案,以提高区块链中的交易执行效率。
本说明书第一方面提供一种区块链中的交易执行方法,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述方法包括:
所述第一节点在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集,使用所述TEE中存储的私钥对所述第一执行读写集签名,得到第一签名,所述第一执行读写集包括第一执行读集和第一执行写集;将所述第一执行读写集和所述第一签名发送给所述第二节点;
所述第二节点使用与所述私钥对应的公钥对所述第一签名进行验证,在对所述第一签名的验证通过之后,对所述第一执行读集进行验证,在验证通过的情况下,存储所述第一执行写集作为所述第一交易的执行写集。
本说明书第二方面提供一种区块链中的交易执行方法,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述方法由所述第一节点执行,包括:
在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集;
使用所述TEE的私钥对所述第一执行读写集签名,得到第一签名;
将所述第一执行读写集和所述第一签名发送给所述第二节点。
本说明书第三方面提供一种区块链中的交易执行方法,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述方法由所述第二节点执行,包括:
从所述第一节点接收第一交易的第一执行读写集和所述TEE通过使用所述TEE中存储的私钥生成的对所述第一执行读写集的第一签名,所述第一执行读写集包括第一执行读集和第一执行写集;
使用与所述私钥对应的公钥对所述第一签名进行验证;
在对所述第一签名的验证通过之后,对所述第一执行读集进行验证;
在对所述第一执行读集的验证通过的情况下,存储所述第一执行写集作为所述第一交易的执行写集。
本说明书第四方面提供一种区块链系统,包括第一节点和第二节点,所述第一节点中包括TEE,
所述第一节点用于:在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集,使用所述TEE中存储的私钥对所述第一执行读写集签名,得到第一签名,所述第一执行读写集包括第一执行读集和第一执行写集;将所述第一执行读写集和所述第一签名发送给所述第二节点;
所述第二节点用于:使用与所述私钥对应的公钥对所述第一签名进行验证,在对所述第一签名的验证通过之后,对所述第一执行读集进行验证,在验证通过的情况下,存储所述第一执行写集作为所述第一交易的执行写集。
本说明书第五方面提供一种区块链中的第一节点,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述第一节点包括:
执行单元,用于在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集,所述第一执行读写集包括第一执行读集和第一执行写集;
签名单元,用于使用所述TEE的私钥对所述第一执行读写集签名,得到第一签名;
发送单元,用于将所述第一执行读写集和所述第一签名发送给所述第二节点。
本说明书第六方面提供一种区块链中的第二节点,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述第二节点包括:
接收单元,用于从所述第一节点接收第一交易的第一执行读写集和所述TEE通过使用所述TEE中存储的私钥生成的对所述第一执行读写集的第一签名,所述第一执行读写集包括第一执行读集和第一执行写集;
验证单元,用于使用与所述私钥对应的公钥对所述第一签名进行验证;在对所述第一签名的验证通过之后,对所述第一执行读集进行验证;
存储单元,用于在对所述第一执行读集的验证通过的情况下,存储所述第一执行写集作为所述第一交易的执行写集。
本说明书第七方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第二方面或第三方面所述的方法。
本说明书第八方面提供一种区块链节点,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第二方面或第三方面所述的方法。
本说明书实施例中,通过由TEE节点在TEE中执行交易,将交易的执行读写集及其签名发送给普通节点,使得普通节点可以在对执行读集验证通过之后直接接受该执行读写集中的写集,即存储该写集作为该交易的执行写集,而不用执行该交易,从而可提高区块链中的交易执行效率。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了一实施例中的区块链架构图;
图2为本说明书实施例中由Admin进行的TEE认证及向区块链上传TEE公钥的过程示意图;
图3为本说明书实施例中在TEE节点中执行交易的过程示意图;
图4为本说明书实施例中的执行交易的方法流程图;
图5为本说明书另一实施例中的交易执行方法的流程图;
图6为本说明书实施例中的一种区块链中的第一节点的架构图;
图7为本说明书实施例中的一种区块链中的第二节点的架构图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图1示出了一实施例中的区块链架构图。在图1所示的区块链架构图中,区块链100中包括N个节点,图1中示意示出节点1-节点8。节点之间的连线示意性的表示P2P(Peer toPeer,点对点)连接,所述连接例如可以为TCP连接等,用于在节点之间传输数据。这些节点上可存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链中的每个节点可通过执行相同的交易而产生区块链中的相同的状态,区块链中的每个节点可存储相同的状态数据库。
区块链领域中的交易可以指在区块链中执行并记录在区块链中的任务单元。交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data)。其中,在交易为转账交易的情况中,From字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,To字段表示接收该交易(即接收转账)的账户地址,Data字段中包括转账金额。
区块链中可提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。在区块链中调用智能合约,是发起一笔指向智能合约地址的交易,使得区块链中每个节点分布式地运行智能合约代码。
在部署合约的场景中,例如,Bob将一个包含创建智能合约信息(即部署合约)的交易发送到如图1所示的区块链中,该交易的data字段包括待创建的合约的代码(如字节码或者机器码),交易的to字段为空,以表示该交易用于部署合约。节点间通过共识机制达成一致后,确定合约的合约地址“0x6f8ae93…”,各个节点在状态数据库中添加与该智能合约的合约地址对应的合约账户,分配与该合约账户对应的状态存储,并存储合约代码,将合约代码的哈希值保存在该合约的状态存储中,从而合约创建成功。
在调用合约的场景中,例如,Bob将一个用于调用智能合约的交易发送到如图1所示的区块链中,该交易的from字段是交易发起方(即Bob)的账户的地址,to字段为上述“0x6f8ae93…”,即被调用的智能合约的地址,交易的data字段包括调用智能合约的方法和参数。在区块链中对该交易进行共识之后,区块链中的各个节点可分别执行该交易,从而分别执行该合约,基于该合约的执行更新状态数据库。
区块链中可引入一种节点,该节点中包括可信执行环境(Trusted ExecutionEnvironment,TEE),下文中将该节点称为TEE节点。TEE是基于CPU硬件的安全扩展、且与外部完全隔离的可信执行环境。目前工业界十分关注TEE的方案,几乎所有主流的芯片和软件联盟都有自己的TEE解决方案,比如软件方面的TPM(Trusted Platform Module,可信赖平台模块)以及硬件方面的SGX(Software Guard Extensions,软件保护扩展)、ARMTrustzone(信任区)和AMD PSP(Platform Security Processor,平台安全处理器)等。TEE可以起到黑箱作用,在TEE中执行的代码和数据即便是操作系统层都无法偷窥,只有通过代码中预先定义的接口才能对其进行操作。在效率方面,由于TEE的黑箱性质,在TEE中进行运算的是明文数据,而不是同态加密中复杂的密码学运算,计算过程效率几乎没有损失。因此,采用TEE技术可以在性能损失相对较小的前提下很大程度上满足区块链场景下的可信计算需求。
TEE技术中,以SGX(Software Guard Extension,以下简称SGX)技术为例加以说明。区块链节点可以基于SGX技术创建enclave(围圈或飞地),以作为用于执行区块链交易的TEE。其中,区块链节点利用CPU中新增的处理器指令,在内存中可以分配一部分区域EPC(Enclave Page Cache,围圈页面缓存或飞地页面缓存),以用于驻留上述的Enclave。上述EPC对应的内存区域被CPU内部的内存加密引擎MEE(Memory Encryption Engine)加密,该内存区域中的内容(enclave中的代码和数据)只有在CPU内核中才能够被解密,且用于加解密的密钥只有在EPC启动时生成并存储在CPU中。可见,Enclave的安全边界只包含其自身和CPU,无论是特权软件或非特权软件都无法访问Enclave,即便是操作系统管理员和VMM(Virtual Machine Monitor,虚拟机监测器;或称为Hypervisor)也无法影响Enclave中的代码和数据,因而具有极高的可靠性。
区块链的TEE节点(例如图1中的节点1)中在创建TEE之后,可将指定的程序代码加载到TEE中。下文中以节点1作为TEE节点进行示例描述。该指定的程序代码如包括用于执行转账交易的程序代码、用于执行合约交易的虚拟机(EVM)的程序代码等。用于进行区块链节点管理的管理服务器(Admin)可对TEE发起远程认证过程,TEE可在远程认证过程中获取用于加密的公私钥对。图2为本说明书实施例中由Admin进行的TEE认证及向区块链上传TEE公钥的过程示意图。该过程具体如下文所述。
支持SGX的CPU在出厂前,会由厂商将部署秘钥(Provisioning Key)和信封秘钥(Sealing Key)烧录在CPU中的熔丝(fuse)寄存器内。熔丝寄存器是一种一次性编程的寄存器,一经烧入数据后即熔断熔丝,使得后续该寄存器中的内容仅可读而不再可写。SGX厂商承诺烧录至熔丝寄存器内的秘钥是随机生成的;此外,还承诺一经烧录后关于烧入的秘钥的所有备份都会被销毁,即连厂商自身都不知道烧入的秘钥。Provisioning Key可以代表CPU中的部分信息,例如CPU的代号(例如第六代酷睿、第七代酷睿等)、型号(如桌面型、移动型等)之类。出于安全考虑,关于加密、签名等操作,并不直接使用Provisioning Key,而是采用由Provisioning Key衍生出的一个证明秘钥(attestation key)来进行,因此Provisioning Key起部署作用。
在Admin对节点1中的TEE发起远程认证之前,区块链节点中CPU可以检测是否存在attestation key。如果没有,则发起初始化。在初始化的过程中,可以基于秘钥生成协议,通过与TEE服务器的交互,并根据Provisioning Key的生成规则生成EPID(EnhancedPrivacy IDentification),该EPID可用作为attestation key,一般用作非对称加密秘钥中的私钥sk1。生成的该EPID可以存放于TEE中用于后续的签名操作。从而,TEE服务器可以通过交互过程得到该EPID对应的公钥pk1。特别的是,该EPID对应的公钥pk1并不会公开,仅由TEE服务器保管。这样的特性适于后续在远程证明过程中由TEE服务器进行认证。
TEE在准备好用于远程认证的私钥sk1和公钥pk1之后,可通过如下步骤获取用于进行非对称加密或签名验签的私钥sk2和公钥pk2:
步骤1:Admin对节点1中的TEE发起挑战,以要求其出示报告,以证明其中包括的程序代码是正确的代码,具体是,该报告用于证明该TEE中的EVM代码是正确的EVM代码;
步骤2:如图2中所示,节点1中的TEE收到挑战之后,计算本地代码的hash1,生成报告(quote),该quote中包括hash1,并使用上述密钥sk1对quote签名,得到签名sig1,将quote及其签名sig1发送给Admin;
节点1中的TEE与Admin还可以在步骤1和步骤2中通过迪菲-赫尔曼秘钥交换(Diffie–Hellman key Exchange,DH)算法或者椭圆曲线迪菲-赫尔曼秘钥交换(EllipticCurve Diffie–Hellman key Exchange,ECDH)算法协商得到的公钥pk2,在该情况下,在quote中还可以包括公钥pk2的哈希值hash2;
步骤3:由于Admin没有与sk1对应的公钥pk1,因此,Admin在接收到quote及其签名sig1之后,如图2中所示,将quote及其签名sig1发送给TEE服务器;
步骤4:TEE服务器使用公钥pk1验证quote的签名sig1,如图2中所示,将验证结果返回给Admin,其中,为了防止验证结果被中间截获或修改,TEE服务器可使用自己的私钥对验证结果签名,得到签名sig2,并将验证结果及其签名sig2一起发送给Admin;
步骤5:Admin收到验证结果之后,如果验证结果指示sig1正确,则根据预先获取的EVM代码的正确哈希值对quote中的hash1验证,如果一致,则通过远程证明的验证,即Admin确认节点1的TEE中运行了正确的EVM,其中,Admin例如可从EVM的官方开发者下载到正确的EVM代码,并基于正确的EVM代码计算得到EVM代码的正确哈希值;
步骤6:Admin生成与公钥pk2对应的私钥sk2,使用公钥pk2对私钥sk2进行对称加密,并将密文私钥发送给节点1的TEE;
步骤7:节点1的TEE在接收到密文私钥之后,可使用公钥pk2对密文私钥进行解密,从而得到私钥sk2,并将私钥sk2与公钥pk2一起存储到TEE内。
在Admin将私钥sk2发送给节点1的TEE之后,可向区块链中发送调用系统合约的交易Tx1,以用于向区块链中上传节点1的节点信息,从而在区块链中添加节点1,该节点信息中包括节点1的TEE公钥(即上述公钥pk2)。区块链中预先部署有系统合约,该系统合约用于对区块链中的节点进行管理,例如在区块链中加入节点、删除节点等。可由Admin向区块链中发送调用该系统合约的交易来进行对区块链中的节点的管理。对于TEE节点,除了在交易Tx1中包括节点的一般属性(如节点标识、IP地址等)之外,还包括TEE公钥,以用于将TEE公钥上传到区块链中。如此,区块链中的其他节点可通过查询该系统合约的合约状态而查询到节点1的TEE公钥,从而可使用该TEE公钥对TEE的签名进行验证。在一种实施方式中,在交易Tx1中还可以包括上述报告、报告签名、TEE服务器的签名验证结果及TEE服务器对验证结果的签名,以使得在将这些信息上传到区块链中之后,区块链中的其他节点可基于该信息对节点1中的TEE进行验证。
可以理解,区块链的TEE节点中的TEE不限于通过上述方式获取到用于进行非对称加密或签名验签的公私钥对(即sk2和pk2),而是可以通过已知的任何安全的方式获取到用于进行非对称加密的公私钥对。
图3为本说明书实施例中在TEE节点中执行交易的过程示意图。如图3中所示,TEE节点中包括TEE外的虚拟机和TEE内的虚拟机。针对包括TEE节点的区块链,本说明书实施例中对交易设置了用于指示交易类型的字段field1,例如,该字段用于指示交易为复杂交易还是非复杂交易。如图3中所示,TEE节点在执行交易时,首先根据交易中字段field1的字段值,确定该交易是否为复杂交易。如果确定为非复杂交易,则通过TEE外部的虚拟机执行该交易。如果确定交易为复杂交易,则通过TEE内部的虚拟机执行该交易,得到该交易的执行读写集。之后,TEE可对执行读写集签名,将执行读写集及其签名发送给普通节点,使得普通节点可以在对该执行读写集验证通过之后直接接受该执行读写集中的写集,即存储该写集作为交易Tx2的执行写集,而不用执行该复杂交易Tx2,从而可提高区块链中的交易执行效率。所述普通节点可以为不包括TEE的节点。可以理解,本说明书实施例虽然以复杂交易为例进行描述,本说明书实施例中不限于在TEE中执行复杂交易,例如TEE节点可以在TEE中执行区块中的每个交易,或者TEE节点可以在TEE中执行特定类型的交易,如调用特定合约的交易等,对此不作限定。
图4为本说明书实施例中的执行交易的方法流程图。该方法可由区块链中的TEE节点和普通节点执行。
如图4所示,在步骤S401,TEE节点在TEE中执行复杂交易Tx2。
例如,区块链中的节点1为TEE节点,其他节点为不包括TEE的普通节点。如图3中所示,节点1在执行例如交易Tx2时,首先判断该交易Tx2是否为复杂交易,如果是复杂交易,则在TEE中执行交易Tx2。具体是,交易Tx2中包括上述field1字段,节点1可首先读取交易Tx2中的field1字段的值,根据该值判断交易Tx2为复杂交易。
在节点1的TEE中可在虚拟机中执行交易Tx2,得到交易Tx2的执行结果和执行读写集。其中,执行结果为用于返回给用户的交易的回执。所述执行读写集包括执行读集和执行写集,执行读集包括在执行交易Tx2的过程中读取的变量的键值对,执行写集包括在执行交易Tx2的过程中写入的变量的键值对。
节点1在执行交易Tx2之前,可对交易Tx2进行读写集分析,得到交易Tx2的分析读写集,该分析读写集包括分析读集和分析写集,其中,分析读集中包括分析得到的交易Tx2将在执行时读取的对象的标识、以及分析得到的交易Tx2将在执行时写入的变量的键。
其中,在交易Tx2调用合约的情况中,交易Tx2在执行时访问的变量可能包括以下三种变量:
在第一种情况中,合约访问的状态变量A为定长变量,变量A在状态数据库中的键例如可以基于该变量A在合约中的声明位置确定,因此,可在交易Tx2执行之前确定将要访问的变量A的键。对于合约中访问的状态变量A,在对交易Tx2进行读写集分析时,可分析得到该状态变量A的键,并在分析读写集中记录该状态变量A的键。
在第二种情况中,合约访问的状态变量(例如变量B)为与映射关系对应的状态变量,其中,变量B根据该映射关系与调用该合约Contract1的交易(例如交易Tx2)的交易体中的信息映射,变量B在状态数据库中的键可基于该映射关系的标识和交易Tx2中的信息确定,因此,可在交易Tx2执行之前确定将要访问的变量B的键。所述映射关系例如与交易的发送账户、或者交易对合约的传入参数关联等。例如,合约中包括映射关系a[],该映射关系用于将调用该合约的交易的发送账户映射为状态变量a[from],则状态变量a[from]的可基于映射关系a[]在合约中的声明位置及交易Tx2中的from字段的值确定。对于合约中访问的状态变量B,在对交易Tx2进行读写集分析时,可分析得到该状态变量B的键,并在分析读写集中记录该状态变量B的键。
在第三种情况中,合约访问的状态变量为与映射关系对应的状态变量,且所述映射关系与合约中声明的状态变量C的值关联,状态变量C的值需要从状态数据库中读取。例如,合约Contract1中包括映射关系e[],该映射关系用于将状态变量C映射为状态变量e[C]。由于状态变量C的值在交易Tx2执行之前不能确认,因此不能在交易Tx2执行之前确定变量e[C]的键。对于状态变量e[C],在对交易Tx2进行读写集分析时,可在分析读写集中记录映射关系e[]的标识,通过在分析读写集中记录映射关系e[]的标识代替变量e[C]的键,可用于基于该分析读写集进行对多个交易的分组,其中,对多个交易的分组将在下文参考图5详细描述。
假设上述状态变量A、B和e[C]都是合约中读取的变量。节点1在执行交易Tx之前,可根据上述得到的分析读写集,首先读取分析读集中的各个状态变量的键对应的值,具体可以包括状态变量A和B的值,将交易Tx2、分析读写集、及分析读集中的各个键的值一起提供到TEE中。TEE可将预先读取的各个状态变量的值补充到分析读集中,根据预先读取的各个状态变量的值执行交易Tx2,得到写入的各个状态变量的值,并将写入的各个状态变量的值补充到分析写集中。另外,对于上述状态变量e[C],TEE可读取状态变量C的值,基于状态变量的值和映射关系e[]的标识确定状态变量e[C]的键,并根据该键读取状态变量e[C]的值,并将该键值对补充到分析读集中,同时将分析读集中原先记录的映射关系e[]的标识删除。通过如此对分析读写集进行修改,可得到交易Tx2的执行读写集。也就是说,交易Tx2的执行读集中可包括状态变量A、B和e[C]的键值对。
节点1中的TEE在得到交易Tx2的执行读写集之后,可使用TEE中预先存储的私钥(例如上述私钥sk2)对执行读写集进行签名,以用于发送给普通节点。在一种实施方式中,节点1中的TEE可使用私钥sk2对执行结果和执行读写集进行签名,以用于发送给普通节点。
在步骤S403,TEE节点将交易Tx2的执行读写集及TEE对执行读写集的签名发送给普通节点。
TEE节点可将交易Tx2的执行读写集及TEE对执行读写集的签名发送给区块链中的各个普通节点,以使得各个普通节点不用执行该复杂交易。在一种实施方式中,TEE节点可将交易Tx2的执行读写集、交易回执及TEE对执行读写集和交易回执的签名发送给区块链中的各个普通节点。
下文中以节点2作为普通节点的示例进行描述,可以理解,区块链中的其他普通节点可与节点2类似地进行操作。
在步骤S405,普通节点对签名进行验证,在验证签名之后,对接收的交易Tx2的执行读集进行验证。
节点2可预先从该系统合约的合约状态中查询到节点1中的TEE的公钥(例如pk2)。节点2在执行交易Tx2时,首先根据交易Tx2中的field1字段确定交易Tx2为复杂交易,然后,节点2确定是否从节点1接收到交易Tx2的执行读写集及签名,如果未接收到则进行等待。节点2在等待了预设时间之后未接收到交易Tx2的执行读写集及签名的情况下,可继续正常执行交易Tx2。
当节点2在预设时间内从节点1接收到交易Tx2的执行读写集及签名之后,可使用公钥pk2对所接收的TEE的签名进行验证。在对签名验证的情况下,节点2可确定所接收的交易Tx2的执行读写集确实是由TEE执行交易Tx2所生成的执行读写集。
节点2在对签名验证通过之后,可对接收的交易Tx2的执行读集进行验证。
节点2可与节点1类似地对交易Tx2进行读写集分析,得到交易Tx2的分析读写集,该分析读写集中例如包括状态变量A、B的键和映射关系e[]的标识。节点2在确定所接收的执行读集中包括状态变量A、B的键和映射关系e[]的标识的情况下,读取状态变量A、B的当前值,确定执行读集中的状态变量A、B的值与读取的状态变量A、B的当前值是否一致,如果一致则对状态变量A和B的验证通过。
节点2然后可确定状态变量e[C]是TEE在执行交易Tx2的过程中确定的需要读取的状态变量,因此节点2可信任状态变量e[C]的键,并读取状态变量e[C]的当前值,确定执行读集中的状态变量e[C]的值与读取的状态变量e[C]的当前值是否一致,如果一致则对状态变量e[C]的验证通过。
如果节点2确定执行读集中未包括状态变量A、B的键和映射关系e[]的标识中的任一项,或者确定执行读集中的状态变量A、B的值与读取的状态变量A、B的当前值不一致,或者确定执行读集中的状态变量e[C]的值与读取的状态变量e[C]的当前值不一致,则可确认对交易Tx2的执行读集的验证未通过。节点2在对交易Tx2的执行读集的验证未通过的情况下,可继续正常执行交易Tx2。
在步骤S407,节点2在验证通过的情况下,存储接收的交易Tx2的执行写集。
节点2在上述验证都通过之后,可确认从节点1接收的交易Tx2的执行写集为正确的写集,因此可存储该接收的执行写集作为交易Tx2的执行写集,而不用再执行交易Tx2。
通过该执行交易的方案,普通节点不需要执行复杂交易,节省了区块链中的计算资源,提高了区块链的交易执行效率。
图5为本说明书另一实施例中的交易执行方法的流程图。
如图5所示,首先,在步骤S501,TEE节点获取多个交易的分析读写集,根据多个交易的分析读写集对多个交易进行分组。
TEE节点可通过分析各个交易对应的数据,确定各个交易的分析读写集。在一种实施方式中,在部署合约时可将合约读取和写入的状态变量的存储位置信息与合约代码一起存储到该合约的合约状态中,从而TEE节点可从区块链中读取合约读取和写入的状态变量的存储位置信息,根据该读取的信息获取各个交易的分析读写集。
然后,TEE节点可根据各个交易的分析读写集,确定各个交易之间的访问冲突,从而对多个交易进行分组,使得将存在访问冲突的若干交易被划分到一个交易组中,不同的交易组之间不存在访问冲突。具体是,可将对应于如下任一情况的多个交易确定为存在访问冲突:该多个交易的分析写集中包括相同的键;该多个交易中一个交易的分析写集与其他交易的分析读集中包括相同的键。
TEE节点在对该多个交易分组之后例如得到四个交易组G1、G2、G3和G4,其中假设交易组G1中包括上述复杂交易Tx2,交易组G2-G4中不包括复杂交易。
在步骤S503,普通节点获取多个交易的分析读写集,根据多个交易的分析读写集对多个交易进行分组。
该步骤可参考上文对步骤S501的描述,普通节点可使用与TEE节点相同的方式获取各个交易的分析读写集,并对多个交易进行分组,得到交易组G1′、G2′、G3′和G4′,其中假设交易组G1′中包括上述复杂交易Tx2,交易组G2′-G4′中不包括复杂交易。其中,在TEE节点不作恶的情况下,交易组G1′、G2′、G3′和G4′应与交易组G1、G2、G3和G4相同。
在步骤S505,TEE节点执行包括复杂交易Tx2的交易组G1。
TEE节点在确定交易组G1中包括复杂交易之后,优先调度交易组G1。例如,TEE节点中包括用于执行交易的两个线程,则该两个线程首先执行交易组G1和交易组G2-G4中的任一交易组(例如交易组G4)。TEE节点在执行步骤S505的过程中执行步骤S5051,在TEE中执行交易Tx2,该步骤可参考上文对步骤S401的描述,在此不再赘述。
在步骤S507,普通节点执行不包括复杂交易的交易组。
以节点2为例,节点2可优先执行不包括复杂交易的交易组,从而尽可能减少等待TEE节点对复杂交易的执行的情况。具体是,在节点2中包括两个用于执行交易的线程的情况中,节点2可首先并行执行例如交易组G2′和G3′,在完成对交易组G2′和G3′的执行之后,再开始执行交易组G1′和G4′。
在步骤S509,TEE节点将交易Tx2的执行读写集及TEE对读写集的签名发送给普通节点。
该步骤可参考上文对步骤S403的描述,在此不再赘述。
在步骤S511,TEE节点执行不包括复杂交易的交易组。
TEE节点在并行执行交易组G1和G4之后,可继续并行执行交易组G2和G3。
在步骤S513,普通节点执行包括交易Tx2的交易组G1′。
例如,节点2在完成对交易组G2′和G3′的执行之后,并行执行交易组G1′和G4′。节点2在执行到交易Tx2时,在确定从TEE节点接收到交易Tx2的执行读写集及签名的情况中,执行步骤S5131和步骤S5132,从而可直接接受节点1发送的交易Tx2的执行写集,而不需要执行交易Tx2。同时,由于节点2对交易组G1′的调度,保证了节点2在执行交易Tx2时已接收到交易Tx2的执行读写集及签名,因此减少了节点2的等待时间。其中,步骤S5131和步骤S5132可参考上文对步骤S405和S407的描述,在此不再赘述。
图6为本说明书实施例中的一种区块链中的第一节点的架构图,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述第一节点用于执行如图4或图5所示的方法,包括:
执行单元61,用于在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集,所述第一执行读写集包括第一执行读集和第一执行写集;
签名单元62,用于使用所述TEE中存储的私钥对所述第一执行读写集签名,得到第一签名;
发送单元63,用于将所述第一执行读写集和所述第一签名发送给所述第二节点。
图7为本说明书实施例中的一种区块链中的第二节点的架构图,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述第二节点用于执行如图4或图5所示的方法,包括:
接收单元71,用于从所述第一节点接收第一交易的第一执行读写集和所述TEE使用所述TEE中存储的私钥生成的对所述第一执行读写集的第一签名,所述第一执行读写集包括第一执行读集和第一执行写集;
验证单元72,用于使用与所述私钥对应的公钥对所述第一签名进行验证;在对所述第一签名的验证通过之后,对所述第一执行读集进行验证;
存储单元73,用于在对所述第一执行读集的验证通过的情况下,存储所述第一执行写集作为所述第一交易的执行写集。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如图4或图5所示的方法。
本说明书实施例还提供一种区块链节点,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如图4或图5所示的方法。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (16)
1.一种区块链中的交易执行方法,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述方法包括:
所述第一节点在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集,使用所述TEE中存储的私钥对所述第一执行读写集签名,得到第一签名,所述第一执行读写集包括第一执行读集和第一执行写集;将所述第一执行读写集和所述第一签名发送给所述第二节点;
所述第二节点使用与所述私钥对应的公钥对所述第一签名进行验证,在对所述第一签名的验证通过之后,对所述第一执行读集进行验证,在验证通过的情况下,存储所述第一执行写集作为所述第一交易的执行写集。
2.根据权利要求1所述的方法,所述对所述第一执行读集进行验证包括:
所述第二节点对所述第一交易进行读写集分析,得到所述第一交易的第二分析读集,所述第一交易的第二分析读集中包括若干第一变量的键;在确定所述第一执行读集中包括所述若干第一变量的键的情况中,读取所述若干第一变量的第一值;确定所述第一值与所述第一执行读集中的所述若干第一变量的值是否一致,如果不一致,则对所述第一执行读集的验证未通过。
3.根据权利要求2所述的方法,所述第一执行读集中还包括若干第二变量的键值对,所述对所述第一执行读集进行验证包括:
读取所述若干第二变量的第二值;确定所述第二值与所述第一执行读集中的所述若干第二变量的值是否一致,如果不一致,则对所述第一执行读集的验证未通过。
4.根据权利要求2所述的方法,所述第一交易为预设类型交易,所述方法还包括:
所述第一节点对多个交易分别进行读写集分析,得到所述多个交易各自的第一分析读写集;根据所述多个第一分析读写集对所述多个交易进行分组,得到多个交易组,所述多个交易组中包括第一交易组和第二交易组,其中所述第一交易组包括所述第一交易,所述第二交易组不包括所述预设类型的交易;
所述第一节点在所述TEE中执行第一交易包括:
所述第一节点在执行所述第二交易组的交易之前执行所述第一交易组的交易。
5.根据权利要求4所述的方法,各个交易包括用于指示交易是否为所述预设类型的交易的第一字段,所述第一节点在所述TEE中执行第一交易包括:
所述第一节点根据所述第一交易的第一字段确定所述第一交易为所述预设类型的交易,将所述第一交易提供到所述TEE中,在所述TEE中执行所述第一交易。
6.根据权利要求5所述的方法,所述第二节点对所述第一交易进行读写集分析包括:
所述第二节点对多个交易分别进行读写集分析,得到所述多个交易各自的第二分析读写集;
所述方法还包括:
所述第二节点根据所述多个第二分析读写集对所述多个交易进行分组,得到多个交易组,所述多个交易组中包括第三交易组和第四交易组,所述第三交易组包括所述第一交易,所述第四交易组中不包括所述预设类型的交易;
所述第二节点在执行所述第三交易组的交易之前执行所述第四交易组的交易。
7.根据权利要求6所述的方法,还包括:所述第二节点在执行所述第三交易组中的所述第一交易时,在根据所述第一交易的第一字段确定所述第一交易为所述预设类型的交易之后,确定是否从所述第一节点接收到所述第一交易的所述第一执行读写集和所述第一签名,在确定未从所述第一节点接收到所述第一执行读写集和所述第一签名的情况下,进行等待。
8.根据权利要求1所述的方法,所述区块链中部署有系统合约,所述系统合约的合约状态中存储有所述公钥,所述方法还包括:所述第二节点通过查询所述系统合约的合约状态获得所述公钥。
9.根据权利要求7所述的方法,所述第二节点在等待超时的情况中、或者对所述第一执行读集的验证未通过的情况中,执行所述第一交易。
10.根据权利要求1所述的方法,所述第一节点在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集,使用所述TEE中存储的私钥对所述第一执行读写集签名,得到第一签名;将所述第一执行读写集和所述第一签名发送给所述第二节点;包括:
所述第一节点在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集和交易回执,使用所述TEE中存储的私钥对所述第一执行读写集和所述交易回执签名,得到第一签名;将所述第一执行读写集、所述交易回执和所述第一签名发送给所述第二节点。
11.一种区块链中的交易执行方法,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述方法由所述第一节点执行,包括:
在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集;
使用所述TEE的私钥对所述第一执行读写集签名,得到第一签名;
将所述第一执行读写集和所述第一签名发送给所述第二节点。
12.一种区块链中的交易执行方法,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述方法由所述第二节点执行,包括:
从所述第一节点接收第一交易的第一执行读写集和所述TEE通过使用所述TEE中存储的私钥生成的对所述第一执行读写集的第一签名,所述第一执行读写集包括第一执行读集和第一执行写集;
使用与所述私钥对应的公钥对所述第一签名进行验证;
在对所述第一签名的验证通过之后,对所述第一执行读集进行验证;
在对所述第一执行读集的验证通过的情况下,存储所述第一执行写集作为所述第一交易的执行写集。
13.一种区块链系统,包括第一节点和第二节点,所述第一节点中包括TEE,
所述第一节点用于:在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集,使用所述TEE中存储的私钥对所述第一执行读写集签名,得到第一签名,所述第一执行读写集包括第一执行读集和第一执行写集;将所述第一执行读写集和所述第一签名发送给所述第二节点;
所述第二节点用于:使用与所述私钥对应的公钥对所述第一签名进行验证,在对所述第一签名的验证通过之后,对所述第一执行读集进行验证,在验证通过的情况下,存储所述第一执行写集作为所述第一交易的执行写集。
14.一种区块链中的第一节点,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述第一节点包括:
执行单元,用于在所述TEE中执行第一交易,得到所述第一交易的第一执行读写集;
签名单元,用于使用所述TEE中存储的私钥对所述第一执行读写集签名,得到第一签名;
发送单元,用于将所述第一执行读写集和所述第一签名发送给所述第二节点。
15.一种区块链中的第二节点,所述区块链中包括第一节点和第二节点,所述第一节点中包括TEE,所述第二节点包括:
接收单元,用于从所述第一节点接收第一交易的第一执行读写集和所述TEE通过使用所述TEE中存储的私钥生成的对所述第一执行读写集的第一签名,所述第一执行读写集包括第一执行读集和第一执行写集;
验证单元,用于使用与所述私钥对应的公钥对所述第一签名进行验证;在对所述第一签名的验证通过之后,对所述第一执行读集进行验证;
存储单元,用于在对所述第一执行读集的验证通过的情况下,存储所述第一执行写集作为所述第一交易的执行写集。
16.一种区块链节点,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如权利要求11或12所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310486095.1A CN116561740A (zh) | 2023-04-28 | 2023-04-28 | 区块链中的交易执行方法、节点和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310486095.1A CN116561740A (zh) | 2023-04-28 | 2023-04-28 | 区块链中的交易执行方法、节点和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116561740A true CN116561740A (zh) | 2023-08-08 |
Family
ID=87490935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310486095.1A Pending CN116561740A (zh) | 2023-04-28 | 2023-04-28 | 区块链中的交易执行方法、节点和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116561740A (zh) |
-
2023
- 2023-04-28 CN CN202310486095.1A patent/CN116561740A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI718662B (zh) | 區塊鏈中實現隱私保護的方法 | |
CN110032883B (zh) | 区块链中实现隐私保护的方法、系统和节点 | |
CN110020855B (zh) | 区块链中实现隐私保护的方法、节点、存储介质 | |
CN110033267B (zh) | 区块链中实现隐私保护的方法、节点、系统和存储介质 | |
CN110245490B (zh) | 有条件的结合代码标注与类型维度的收据存储方法和节点 | |
CN110264195B (zh) | 结合代码标注与交易、用户类型的收据存储方法和节点 | |
CN110032885B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
CN109886682B (zh) | 区块链中实现合约调用的方法及节点、存储介质 | |
CN111898156B (zh) | 区块链中实现合约调用的方法及节点、存储介质 | |
CN110263544B (zh) | 结合交易类型和判断条件的收据存储方法和节点 | |
CN110020549B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
CN110060054B (zh) | 区块链中实现隐私保护的方法、节点、系统和存储介质 | |
CN110266644B (zh) | 结合代码标注与交易类型的收据存储方法和节点 | |
CN110264198B (zh) | 结合代码标注与交易类型的有条件的收据存储方法和节点 | |
CN110245942B (zh) | 结合用户类型和判断条件的收据存储方法和节点 | |
CN110245947B (zh) | 结合交易与用户类型的条件限制的收据存储方法和节点 | |
CN110264196B (zh) | 结合代码标注与用户类型的有条件的收据存储方法和节点 | |
CN110245945B (zh) | 结合代码标注与用户类型的收据存储方法和节点 | |
CN111901402A (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
CN110020856B (zh) | 区块链中实现混合交易的方法、节点和存储介质 | |
CN110032876B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
CN110245944B (zh) | 基于用户类型的收据存储方法和节点 | |
CN110245504B (zh) | 结合多类型维度的条件限制的收据存储方法和节点 | |
CN110245503B (zh) | 结合代码标注与判断条件的收据存储方法和节点 | |
CN110263086B (zh) | 结合用户类型与事件函数类型的收据存储方法和节点 |
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 |