CN110599175A - 一种区块处理方法及相关设备 - Google Patents
一种区块处理方法及相关设备 Download PDFInfo
- Publication number
- CN110599175A CN110599175A CN201910903649.7A CN201910903649A CN110599175A CN 110599175 A CN110599175 A CN 110599175A CN 201910903649 A CN201910903649 A CN 201910903649A CN 110599175 A CN110599175 A CN 110599175A
- Authority
- CN
- China
- Prior art keywords
- block
- transaction
- verification
- uplink
- node
- 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
Classifications
-
- 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
Abstract
本发明实施例公开了一种区块处理方法及相关设备,本发明实施例通过增加区块验证合约作为智能合约,待上链区块在上链时,通过在虚拟机上运行区块验证合约以实现对待上链区块的区块大小验证操作和交易签名验证操作,不仅可以实现区块链节点的区块验证功能,而且对区块验证功能进行维护更新时,只需修改区块验证合约代码并完成代码上链,即可以变更区块验证功能,灵活性强,区块验证功能的维护更新流程方便高效,区块链节点无需停机,保证区块链网络的正常运行。
Description
技术领域
本发明涉及互联网技术领域,具体涉及区块链技术领域,尤其涉及一种区块处理方法、一种区块处理装置、一种终端设备及一种计算机存储介质。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
现有技术中,由于区块验证功能的程序代码是写入到区块链的底层架构代码中的,因此,在修改区块链的区块验证功能逻辑时,重新编写区块验证功能的程序代码后,对于区块链中每个节点,都需要停止工作以载入新的程序代码,再重启节点才能最终完成修改,造成区块链的升级维护流程繁琐,工作量巨大;而且,在升级维护过程中如果出现大量节点停机的话,将对区块链的正常工作产生巨大影响。
发明内容
本发明实施例提供了一种区块处理方法及相关设备,不仅可以实现区块验证,还可以灵活变更区块验证功能,区块验证功能的维护更新流程方便高效。
一方面,本发明实施例提供了一种区块处理方法,应用于区块链网络中的区块链节点,所述区块链节点上部署有用于运行智能合约的虚拟机,所述智能合约包括区块验证合约;所述区块处理方法包括:
接收交易生成待上链区块,所述交易包括交易数据和交易签名;
通过所述虚拟机调用所述区块验证合约,以执行对所述待上链区块的区块大小验证操作和交易签名验证操作;
区块大小验证和交易签名验证通过后,对所述待上链区块进行共识投票;
在共识投票的票数满足预设条件时,将所述待上链区块添加到区块链中。
另一方面,本发明实施例提供了一种区块处理装置,所述区块处理装置上部署有用于运行智能合约的虚拟机,所述智能合约包括区块验证合约;所述区块处理装置包括:
区块生成模块,用于接收交易生成待上链区块,所述交易包括交易数据和交易签名;
待上链区块验证模块,用于通过所述虚拟机调用所述区块验证合约,以执行对所述待上链区块的区块大小验证操作和交易签名验证操作;
投票模块,用于区块大小验证和交易签名验证通过后,对所述待上链区块进行共识投票;
第一上链模块,用于在共识投票的票数满足预设条件时,将所述待上链区块添加到区块链中。
其中,所述区块处理装置还包括:
接收模块,用于接收相邻的区块处理装置所广播的网络广播区块;
广播区块验证模块,用于通过所述虚拟机调用所述区块验证合约,以执行对所述网络广播区块的节点签名验证操作;
第二上链模块,用于节点签名验证通过后,将所述网络广播区块添加到区块链中。
另一方面,本发明实施例提供了一种终端设备,包括:处理器和存储器;
所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行所述的区块处理方法。
另一方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行所述的区块处理方法。
本发明实施例通过增加区块验证合约作为智能合约,待上链区块在上链时,通过在虚拟机上运行区块验证合约以实现对待上链区块的区块大小验证操作和交易签名验证操作,不仅可以实现区块链节点的区块验证功能,而且对区块验证功能进行维护更新时,只需修改区块验证合约代码并完成代码上链,即可以变更区块验证功能,灵活性强,区块验证功能的维护更新流程方便高效,区块链节点无需停机,保证区块链网络的正常运行。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种区块处理方法中数据上链的示意图;
图2是本发明实施例提供的一种区块处理方法的流程示意图;
图3是本发明实施例提供的一种区块处理方法的流程示意图;
图4是本发明实施例提供的一种区块处理装置的结构示意图;
图5是本发明实施例提供的一种区块处理装置的结构示意图;
图6是本发明实施例提供的一种终端设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
首先,区块链网络就是一个分布式(Distributed)数据库,这个数据库维护了一个不断增长的数据记录列表,区块链网络中的每个节点都保存有该数据记录列表。在区块链里,多个数据记录组成的批次就被称为区块(block),块里的每一行数据记录就被称为交易(transaction),具体地,区块的结构包括区块大小、区块头、交易计数器和交易。
区块大小,顾名思义,表示的是区块的数据大小;而区块头,包含了除了交易相关信息以外的所有信息,包括引用父区块哈希值的数据,用于将该区块与区块链中前一区块相连接;记录该区块产生的近似时间的时间戳;用来有效地总结区块中所有交易的Merkle树根;用于跟踪软件或协议更新的版本号;与区块工作量证明算法相关的难度目标和计算器。
此外,交易计数器记录了该区块中包含的交易的数量,而交易记录了该区块中交易的信息,区块链中的交易,存在狭义的交易以及广义的交易之分,狭义的交易是指用户向区块链发布的一笔价值转移,例如,在关于虚拟资产(例如游戏中的游戏币)的区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户通过节点设备向区块链发布的一笔具有业务意图的业务数据,如在物品流转过程中为物品及其持有方存证的数据信息,又如以太坊中部署合约时,一次部署就是一笔交易,交易数据为合约代码;为候选者投票时,一次投票又是另一笔交易。
智能合约程序不只是一个可以自动执行的计算机程序:它自己就是一个系统参与者。它对接收到的信息进行回应,它可以接收和储存价值,也可以向外发送信息和价值。这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。而以太坊就是区块链技术加智能合约,以太坊是一种区块链的实现,可以用来编程,分散,担保和交易任何事物,比如投票,域名,金融交易所,众筹,公司管理,合同等等。以太坊允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。在以太坊网络中,众多的节点彼此连接,构成了以太坊网络。以太坊区块链不仅存储数据和代码,每个节点中还包含一个虚拟机(EVM:Ethereum Virtual Machine)来执行合约代码。另外,以太坊节点软件提供两个核心功能:数据存储、合约代码执行。在每个以太坊全节点中,都保存有完整的区块链数据。以太坊不仅将交易数据保存在链上,编译后的智能合约代码同样也保存在链上。
为了解决背景技术中提出的技术问题,即现有区块链网络中,区块验证模块设置在区块链的底层架构中,区块验证模块的代码是设置在底层架构代码中,每次进行区块验证时,需要在区块链系统里执行;而每次需要修改或者维护区块验证模块时,需要对区块链中每个区块链节点进行修改;具体修改时,需要将区块链节点停机,再将修改后的区块验证模块代码载入节点中,再重启区块链节点以完成修改或维护,不仅工作量巨大,而且效率低下,对区块链网络的正常运转十分不利,因此,本发明实施例提供一种新的解决方案,总体的思路是:
将区块验证模块设置成一种运行在虚拟机上的智能合约,即区块验证合约,则在对区块验证功能进行维护更新时,只需修改区块验证合约代码并完成代码上链,即可以变更区块验证功能,灵活性强,区块验证功能的维护更新流程方便高效,区块链节点无需停机,保证区块链网络的正常运行。另外,通过增加区块验证合约作为智能合约,待上链区块在上链时,通过在虚拟机上运行区块验证合约以实现对待上链区块的区块大小操作和交易签名验证操作,可以实现区块链节点的区块验证功能。
具体地,参考图1,图1是本发明实施例提供的一种区块处理方法中数据上链的示意图,客户端D向区块链网络提交一笔新交易时,会先被广播到区块链网络中的所有节点(例如节点A、节点B和节点C),每个节点会将数笔未验证的交易收集到区块中,每个区块可以包含数百笔或上千笔交易,最快完成区块大小验证、交易签名验证和共识投票的节点,例如节点A,会将自己的区块上链,并将该区块传播给区块链网络中的其他节点以实现上链,节点A向节点B、节点C广播自己的区块,节点B、节点C将接收到的区块上链。
基于上述思路,本发明实施例提供了一种区块处理方法,应用于区块链网络中的区块链节点,所述区块链节点上部署有用于运行智能合约的虚拟机,所述智能合约包括区块验证合约;以网络中的单个区块链节点为例,对数据上链过程进行说明,参考图2,图2是本发明实施例提供的一种区块处理方法的流程示意图,所述区块处理方法包括:
步骤S101,接收交易生成待上链区块,所述交易包括交易数据和交易签名;
具体地,区块链节点以区块链节点A为例,在一个应用场景中,用户可以通过客户端向区块链节点A提交一笔交易(交易可以是具体的交易数据或者业务数据等)。而客户端在向区块链节点提交交易数据之前,可先采用非对称加密算法创建一个密钥对;此处的非对称加密算法可包括但不限于:Elgamal算法(一种非对称加密算法)、Rabin算法(一种非对称加密算法)、Diffie-Hellman算法(一种非对称加密算法)、ECC算法(椭圆曲线加密算法)。其中,密钥对包括一个公钥和一个私钥;公钥用于标识客户端的交易地址,需要说明的是,区块链网络中的交易地址是具有唯一性的,一个交易地址对应一个客户端(即用户);也就是说,公钥可标记客户端所指示的用户的用户身份。私钥用于客户端对交易数据进行签名。在创建密钥对之后,客户端可将密钥对中的公钥上传至区块链网络,以使得区块链网络将密钥对中的公钥作为该客户端的交易地址;而私钥由客户端保管。提交交易数据之前,客户端利用私钥对交易数据进行签名(相当于利用秘钥对交易数据进行加密)得到一段数字串(即交易签名),再将交易数据和交易签名一并提交给区块链节点A。区块链节点A接收到交易数据和交易签名后,将若干个这样的数据打包成一个区块得到待上链区块。
步骤S102,通过所述虚拟机调用所述区块验证合约,以执行对所述待上链区块的区块大小验证操作和交易签名验证操作;
具体地,利用区块链节点A上的虚拟机调用区块验证合约,对待上链区块进行区块大小验证操作和交易签名验证操作。
步骤S103,区块大小验证和交易签名验证通过后,对所述待上链区块进行共识投票;
具体地,当待上链区块通过区块大小验证和交易签名验证时,区块链节点A发起对待上链区块的共识投票;可以将待上链区块发送给区块链网络中的投票节点,由投票节点收集投票结果,投票节点将投票结果返回给区块链节点A。
步骤S104,在共识投票的票数满足预设条件时,将所述待上链区块添加到区块链中;
具体地,根据投票结果判断票数是否满足预设条件,当票数达到预设条件时,表明待上链区块通过了投票,可以将该待上链区块添加到区块链中。其中,对预设条件不做特别限定。
步骤S105,将所述待上链区块广播给区块链网络中的其余区块链节点。
具体地,当区块链节点A将待上链区块添加到区块链中后,需要将该待上链区块广播给网络中的其余的区块链节点,即与区块链节点A相邻且有连接的区块链节点,例如图1中的区块链节点B和区块链节点C,区块链节点B和区块链节点C接收到待上链区块后,将该待上链区块写入自身的账本中,即完成上链;并继续向与自身相连的区块链节点广播该待上链区块,实现整个区块链网络的节点都将该待上链区块进行上链,保证网络中每个节点的账本完全相同。
由上述可知,通过设置区块验证合约,本发明实施例中,区块链节点在数据上链时,可以通过虚拟机直接调用区块验证合约以完成对待上链区块的区块大小验证操作和交易签名验证操作,不仅操作简单,而且对于区块验证逻辑的修改和维护十分简便,只需修改区块验证合约的代码,再完成代码上链,即可以一次性完成区块验证功能的更新和维护,有效提高效率,降低维护工作量;灵活性强,可以灵活变更交易验证逻辑。
进一步地,对于区块链节点自身产生的区块,即待上链区块,所述对所述待上链区块的区块大小验证操作和交易签名验证操作,包括:
判断所述待上链区块的区块大小是否超过预设区块大小,若判断未超过,则所述待上链区块通过区块大小验证,进入对所述待上链区块的交易签名验证操作;否则所述待上链区块的区块大小验证失败;
所述交易签名验证操作包括:
获取所述待上链区块的交易数据和对应的交易签名;
根据所述交易签名获取交易发起者的公钥;
利用所述公钥对所述交易签名进行解密得到第一解密数据,并将所述第一解密数据与所述交易数据进行信息对比,对比相同,则所述交易数据通过交易签名验证,否则,所述交易数据未通过交易签名验证。
具体地,不同的区块链网络对可传递的区块的大小有不同的限制,因此,为了避免区块过大造成区块链网络的信息传递堵塞,不同的区块链网络可以预设不同的预设区块大小,具体的数值可以根据不同的区块链网络和不同的需求进行设置。当待上链区块的区块大小超过预设区块大小时,此时区块大小验证失败,该待上链区块的处理流程停止;而当待上链区块的区块大小小于预设区块大小时,此时表明待上链区块通过了区块大小验证,可以进入对待上链区块的交易签名验证操作。
具体地,为了确保交易是交易发起者自己发起的,且未被篡改的,需要对交易进行交易签名验证,
由于区块中包括多个交易,因此,区块中,按照交易数据、对应的交易签名的对应关系进行存储。对区块中的每个交易均进行交易签名验证操作,以单个交易为例,由上述描述可知,交易签名为利用私钥加密交易数据后得到的一段数字串,获得交易后,由于通常会把公钥增加到交易数据里,因此,可以直接从交易数据中获得交易发起者(也即客户端)的公钥,再利用公钥对交易签名进行验证,即利用公钥对交易签名进行解密得到解密后的数据,再将解密后的数据与交易数据进行比对,比对相同则表明该交易数据是由交易发起者自己发送的,该交易数据未被篡改。另外,由于以太坊所用的ECDSA算法有一个很有意思的特性:可以从签名推导出公钥,以太坊的交易格式只包含了签名,验证交易签名前,先用算法从交易签名推导出公钥,然后再进行验签。
另外,在对待上链区块进行区块大小验证操作之前,还可以对待上链区块进行交易数量验证操作,所述交易数量验证操作包括:
获取待上链区块的交易总量;
判断待上链区块的交易总量是否超过预设交易总量,当判断超过时,验证失败,停止处理该待上链区块,验证通过则进入对待上链区块的区块大小验证。
具体地,利用待上链区块中的交易计数器获取该区块中的交易数量(即交易总量),根据该交易数量与预设交易总量进行比较,当交易数量小于预设交易总量时,待上链区块通过交易数量验证,可以进入对待上链区块的区块大小验证;反之,验证失败,交易数量过多表明区块大小可能超过区块链网络可传递的区块大小,此时停止处理该待上链区块。
特别地,为了提高对区块大小验证的准确度,可以设置多级交易总量比较阈值,例如设置第一预设交易总量和第二预设交易总量,第一预设交易总量小于第二预设交易总量,当待上链区块的交易数量大于第一预设交易总量,但交易数量小于第二预设交易总量时,进入对该待上链区块的区块大小验证操作,当该待上链区块通过区块大小验证操作时,该待上链区块可进入交易签名验证;而当交易数量大于第二预设交易总量时,停止处理该待上链区块。
进一步地,所述预设条件包括共识投票的票数大于或等于预设阈值,如总票数的3/4,确保待上链区块得到区块链网络中大多数节点的支持,提高上链区块的可信度。
另外,对于待上链区块,在通过区块大小验证、交易签名验证后,在对待上链区块进行共识投票之前,区块链节点A还可以通过虚拟机执行业务逻辑以完成特定的功能,包括账本校验、游戏奖罚等,账本校验是将待上链区块的交易与区块链节点A的账本上已有的交易进行比较,以判断该交易是否为重复的交易,当交易重复时,区块链节点A向客户端返回出错信息,提醒客户端交易重复,需要修改交易;若判断待上链区块所有的交易均未与已有的交易重复时,进入对待上链区块的共识投票。
参考图3,图3是本发明实施例提供的一种区块处理方法的流程示意图,所述区块处理方法还包括:
步骤201,接收相邻的区块链节点所广播的网络广播区块;
具体地,以区块链节点A为例,区块链节点A通过网络接收到与之相邻相连的区块链节点所广播的网络广播区块,该网络广播区块为其他区块链节点通过区块大小验证、交易签名验证、共识投票的区块。
步骤202,通过所述虚拟机调用所述区块验证合约,以执行对所述网络广播区块的节点签名验证操作;
具体地,与待上链区块的验证过程相似,区块链节点A通过虚拟机调用区块链验证合约,对接收到的网络广播区块进行节点签名验证。
步骤203,节点签名验证通过后,将所述网络广播区块添加到区块链中。
具体地,与待上链区块相同的,当区块验证通过,区块链节点A将该网络广播区块添加到区块链中,完成上链。
进一步地,所述节点签名验证操作包括:
获取所述相邻的区块链节点对应的广播公钥;
利用所述广播公钥对所述网络广播区块的节点签名进行解密得到第二解密数据,并将所述第二解密数据与所述网络广播区块进行信息比对,对比相同,则所述网络广播区块通过节点签名验证,否则,所述网络广播区块未通过节点签名验证。
具体地,区块链网络中,每个区块链节点的广播公钥在区块链网络开启后,会通过广播将公钥传输给每个节点,由于每个节点均有一个IP地址,则可以利用广播公钥和IP地址来标识网络中的每个节点,即区块链节点A知晓网络中每个节点的广播公钥,则可以建立广播公钥和IP地址的公钥对应表,方便后续查找公钥。而每个节点在向网络广播区块前,会先利用自身的广播私钥对区块进行签名,即可以得到节点签名,并将节点签名和网络广播区块进行广播。区块链节点A接收到相邻相连的区块链节点(如图1中的区块链节点B)广播的网络广播区块后,根据区块链节点B的IP地址和公钥对应表找到区块链节点B对应的广播公钥,再利用广播公钥对节点签名进行验证,验证过程与交易签名的验证相同,不再赘述。验证通过时,表明该网络广播区块是区块链节点B自己发送的,未经过篡改,确保每个节点的账本数据保持一致。
另外,对于网络广播区块,虽然它是经过广播它的节点的区块大小验证、交易签名验证后得以广播的,为了避免单个区块链节点出错导致错误的网络广播区块在所有节点都完成上链,以及进一步保证上链的区块的数据可信度,对于通过节点签名验证的网络广播区块,还可以继续对其进行交易数量验证操作、区块大小验证操作和交易签名验证操作,与上述待上链区块的验证过程相同,对网络广播区块中交易数量、区块大小和交易签名进行验证,不再赘述,对于交易签名和交易数量的验证,可以通过遍历区块中的各个交易以完成验证。
更进一步地,本发明实施例的区块处理方法还包括区块验证合约的部署方法,所述部署方法包括:
将区块验证逻辑转换成区块验证合约代码;
将所述区块验证合约代码编译成二进制代码;
将所述二进制代码打包成交易并发送至区块链网络中,所述交易被添加至区块链中则完成区块验证合约的部署。
具体地,将对待上链区块和网络广播区块的验证逻辑转换成区块验证合约代码,其中,区块验证逻辑包括对待上链区块以及网络广播区块的验证逻辑,而区块验证合约代码可通过Solidity语言编写,或者,还可以通过Serpent语言、LLL语言等等编写;再利用区块链节点的广播私钥对区块验证合约代码进行签名,将签名后的区块验证合约代码编译成二进制代码并打包成交易,以Solidity语言为例,利用SOLC编译器将区块验证合约代码编译成二进制代码,最后,将该交易发送至区块链网络中,以使该交易被添加至区块链上,即记录到每个区块链节点的账本中,至此完成对区块验证合约的部署。相同地,虚拟机在调用区块验证合约时,也是通过创建一个新的交易以调用区块验证合约。
基于上述区块处理方法实施例的描述,本发明实施例还公开了一种区块处理装置,所述区块处理装置上部署有用于运行智能合约的虚拟机,所述智能合约包括区块验证合约;参考图4,图4是本发明实施例提供的一种区块处理装置的结构示意图,所述区块处理装置包括区块生成模块11、待上链区块验证模块12、投票模块13、第一上链模块14和广播模块15,其中:
区块生成模块11,用于接收交易生成待上链区块,所述交易包括交易数据和交易签名;
待上链区块验证模块12,用于通过所述虚拟机调用所述区块验证合约,以执行对所述待上链区块的区块大小验证操作和交易签名验证操作;
投票模块13,用于区块大小验证和交易签名验证通过后,对所述待上链区块进行共识投票;
第一上链模块14,用于在共识投票的票数满足预设条件时,将所述待上链区块添加到区块链中;
广播模块15,用于将所述待上链区块广播给区块链网络中的其余区块处理装置。
对于区块生成模块11、待上链区块验证模块12、投票模块13、第一上链模块14和广播模块15的具体功能实现,可参考步骤S101至步骤S105的描述,不再赘述。
本发明实施例的区块处理装置通过增加区块验证合约作为智能合约,待上链区块在上链时,通过在虚拟机上运行区块验证合约以实现对待上链区块的区块大小验证操作和交易签名验证操作,不仅可以实现区块处理装置的区块验证功能,而且对区块验证功能进行维护更新时,只需修改区块验证合约代码并完成代码上链,即可以变更区块验证功能,灵活性强,区块验证功能的维护更新流程方便高效,区块处理装置无需停机,保证区块链网络的正常运行。
进一步地,待上链区块验证模块12用于:
判断所述待上链区块的区块大小是否超过预设区块大小,若判断未超过,则所述待上链区块通过区块大小验证,进入对所述待上链区块的交易签名验证操作;否则所述待上链区块的区块大小验证失败;所述交易签名验证操作包括:获取所述待上链区块的交易数据和对应的交易签名;根据所述交易签名获取交易发起者的公钥;利用所述公钥对所述交易签名进行解密得到第一解密数据,并将所述第一解密数据与所述交易数据进行信息对比,对比相同,则所述交易数据通过交易签名验证,否则,所述交易数据未通过交易签名验证。
进一步地,所述预设条件包括共识投票的票数大于或等于预设阈值。
进一步地,参考图5,图5是本发明实施例提供的一种区块处理装置的结构示意图,所述区块处理装置还包括接收模块21、广播区块验证模块22和第二上链模块23,其中:
接收模块21,用于接收相邻的区块处理装置所广播的网络广播区块;
广播区块验证模块22,用于通过所述虚拟机调用所述区块验证合约,以执行对所述网络广播区块的节点签名验证操作;
第二上链模块23,用于节点签名验证通过后,将所述网络广播区块添加到区块链中。
同理,接收模块21、广播区块验证模块22和第二上链模块23的具体功能实现描述可参照步骤S201至步骤S203的描述,不再赘述。
进一步地,所述广播区块验证模块22具体用于:
获取所述相邻的区块处理装置对应的广播公钥;
利用所述广播公钥对所述网络广播区块的节点签名进行解密得到第二解密数据,并将所述第二解密数据与所述网络广播区块进行信息比对,对比相同,则所述网络广播区块通过节点签名验证,否则,所述网络广播区块未通过节点签名验证。
更进一步地,本发明实施例的区块处理装置还包括区块验证合约部署模块,用于:
将区块验证逻辑转换成区块验证合约代码;
将所述区块验证合约代码编译成二进制代码;
将所述二进制代码打包成交易并发送至区块链网络中,所述交易被添加至区块链中则完成区块验证合约的部署。
进一步地,请参见图6,是本发明实施例提供的一种终端设备的结构示意图。如图6所示,上述图4和图5中的区块链节点可以应用于所述终端设备1000,所述终端设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,所述终端设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图6所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图6所示的终端设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
接收交易生成待上链区块,所述交易包括交易数据和交易签名;
通过所述虚拟机调用所述区块验证合约,以执行对所述待上链区块的区块大小验证操作和交易签名验证操作;
区块大小验证和交易签名验证通过后,对所述待上链区块进行共识投票;
在共识投票的票数满足预设条件时,将所述待上链区块添加到区块链中。
在一个实施例中,所述预设条件包括共识投票的票数大于总票数的3/4。而所述对所述待上链区块的区块大小验证操作和交易签名验证操作,包括:
判断所述待上链区块的区块大小是否超过预设区块大小,若判断未超过,则所述待上链区块通过区块大小验证,进入对所述待上链区块的交易签名验证操作;否则所述待上链区块的区块大小验证失败;
所述交易签名验证操作包括:
获取所述待上链区块的交易数据和对应的交易签名;
根据所述交易签名获取交易发起者的公钥;
利用所述公钥对所述交易签名进行解密得到第一解密数据,并将所述第一解密数据与所述交易数据进行信息对比,对比相同,则所述交易数据通过交易签名验证,否则,所述交易数据未通过交易签名验证;
在一个实施例中,所述处理器1001在执行待上链区块的区块大小验证操作之前,还执行对待上链区块的交易数量验证操作,所述交易数量验证操作包括:
获取待上链区块的交易总量;
判断待上链区块的交易总量是否超过预设交易总量,当判断超过时,验证失败,停止处理该待上链区块,验证通过则进入对待上链区块的区块大小验证。
在一个实施例中,所述处理器1001还执行以下步骤:
接收相邻的区块链节点所广播的网络广播区块;
通过所述虚拟机调用所述区块验证合约,以执行对所述网络广播区块的节点签名验证操作;
节点签名验证通过后,将所述网络广播区块添加到区块链中。
其中,所述节点签名验证操作包括:
获取所述相邻的区块链节点对应的广播公钥;
利用所述广播公钥对所述网络广播区块的节点签名进行解密得到第二解密数据,并将所述第二解密数据与所述网络广播区块进行信息比对,对比相同,则所述网络广播区块通过节点签名验证,否则,所述网络广播区块未通过节点签名验证。
终端设备1000的具体工作过程可参考上述区块链节点的描述,不再赘述。
此外,这里需要指出的是:本发明实施例还提供了一种计算机存储介质,且所述计算机存储介质中存储有前文提及的区块链节点所执行的计算机程序,且所述计算机程序包括程序指令,当所述处理器执行所述程序指令时,能够执行前文图1到图3所对应实施例中对所述区块处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本发明所涉及的计算机存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种区块处理方法,其特征在于,应用于区块链网络中的区块链节点,所述区块链节点上部署有用于运行智能合约的虚拟机,所述智能合约包括区块验证合约;所述区块处理方法包括:
接收交易生成待上链区块,所述交易包括交易数据和交易签名;
通过所述虚拟机调用所述区块验证合约,以执行对所述待上链区块的区块大小验证操作和交易签名验证操作;
区块大小验证和交易签名验证通过后,对所述待上链区块进行共识投票;
在共识投票的票数满足预设条件时,将所述待上链区块添加到区块链中。
2.根据权利要求1所述的方法,其特征在于,所述对所述待上链区块的区块大小验证操作和交易签名验证操作,包括:
判断所述待上链区块的区块大小是否超过预设区块大小,若判断未超过,则所述待上链区块通过区块大小验证,进入对所述待上链区块的交易签名验证操作;否则所述待上链区块的区块大小验证失败;
所述交易签名验证操作包括:
获取所述待上链区块的交易数据和对应的交易签名;
根据所述交易签名获取交易发起者的公钥;
利用所述公钥对所述交易签名进行解密得到第一解密数据,并将所述第一解密数据与所述交易数据进行信息对比,对比相同,则所述交易数据通过交易签名验证,否则,所述交易数据未通过交易签名验证。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收相邻的区块链节点所广播的网络广播区块;
通过所述虚拟机调用所述区块验证合约,以执行对所述网络广播区块的节点签名验证操作;
节点签名验证通过后,将所述网络广播区块添加到区块链中。
4.根据权利要求3所述的方法,其特征在于,所述节点签名验证操作包括:
获取所述相邻的区块链节点对应的广播公钥;
利用所述广播公钥对所述网络广播区块的节点签名进行解密得到第二解密数据,并将所述第二解密数据与所述网络广播区块进行信息比对,对比相同,则所述网络广播区块通过节点签名验证,否则,所述网络广播区块未通过节点签名验证。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述预设条件包括共识投票的票数大于预设阈值。
6.根据权利要求1至4任一项所述的方法,其特征在于,还包括区块验证合约的部署方法,所述部署方法包括:
将区块验证逻辑转换成区块验证合约代码;
将所述区块验证合约代码编译成二进制代码;
将所述二进制代码打包成交易并发送至区块链网络中,所述交易被添加至区块链中则完成区块验证合约的部署。
7.一种区块处理装置,其特征在于,所述区块处理装置上部署有用于运行智能合约的虚拟机,所述智能合约包括区块验证合约;所述区块处理装置包括:
区块生成模块,用于接收交易生成待上链区块,所述交易包括交易数据和交易签名;
待上链区块验证模块,用于通过所述虚拟机调用所述区块验证合约,以执行对所述待上链区块的区块大小验证操作和交易签名验证操作;
投票模块,用于区块大小验证和交易签名验证通过后,对所述待上链区块进行共识投票;
第一上链模块,用于在共识投票的票数满足预设条件时,将所述待上链区块添加到区块链中。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收相邻的区块处理装置所广播的网络广播区块;
广播区块验证模块,用于通过所述虚拟机调用所述区块验证合约,以执行对所述网络广播区块的节点签名验证操作;
第二上链模块,用于节点签名验证通过后,将所述网络广播区块添加到区块链中。
9.一种终端设备,其特征在于,包括:处理器和存储器;
所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1-6任一项所述的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910903649.7A CN110599175A (zh) | 2019-09-23 | 2019-09-23 | 一种区块处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910903649.7A CN110599175A (zh) | 2019-09-23 | 2019-09-23 | 一种区块处理方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110599175A true CN110599175A (zh) | 2019-12-20 |
Family
ID=68862743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910903649.7A Pending CN110599175A (zh) | 2019-09-23 | 2019-09-23 | 一种区块处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110599175A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427957A (zh) * | 2020-03-26 | 2020-07-17 | 财付通支付科技有限公司 | 区块链投票信息校验方法、装置、设备以及存储介质 |
CN112465501A (zh) * | 2020-11-11 | 2021-03-09 | 中国人民大学 | 基于区块链的版权存证及侵权行为自动取证的方法及系统 |
CN114553447A (zh) * | 2020-11-11 | 2022-05-27 | 中国移动通信有限公司研究院 | BaaS平台联盟协商管理方法、装置及系统 |
CN116805947A (zh) * | 2023-08-21 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 区块链数据处理方法、装置、设备及计算机可读存储介质 |
-
2019
- 2019-09-23 CN CN201910903649.7A patent/CN110599175A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427957A (zh) * | 2020-03-26 | 2020-07-17 | 财付通支付科技有限公司 | 区块链投票信息校验方法、装置、设备以及存储介质 |
CN112465501A (zh) * | 2020-11-11 | 2021-03-09 | 中国人民大学 | 基于区块链的版权存证及侵权行为自动取证的方法及系统 |
CN114553447A (zh) * | 2020-11-11 | 2022-05-27 | 中国移动通信有限公司研究院 | BaaS平台联盟协商管理方法、装置及系统 |
CN116805947A (zh) * | 2023-08-21 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 区块链数据处理方法、装置、设备及计算机可读存储介质 |
CN116805947B (zh) * | 2023-08-21 | 2023-11-10 | 腾讯科技(深圳)有限公司 | 区块链数据处理方法、装置、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110442652B (zh) | 一种基于区块链的跨链数据处理方法及装置 | |
JP7362654B2 (ja) | 分割されたブロックチェーンネットワークにおけるブロックチェーンのブロックの維持管理 | |
CN111681003B (zh) | 资源跨链转移方法、装置、计算机设备以及存储介质 | |
CN109218079B (zh) | 一种区块链网络、部署方法及存储介质 | |
CN108492183B (zh) | 区块链的账户交易方法、系统和计算机可读存储介质 | |
CN110599175A (zh) | 一种区块处理方法及相关设备 | |
US20210304201A1 (en) | Transaction verification method and apparatus, storage medium, and electronic device | |
JP2021502746A (ja) | 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム | |
WO2020210721A1 (en) | Systems, devices, and methods for dlt-based data management platforms and data products | |
CN108200208B (zh) | 基于云计算的物流区块链共识算法 | |
CN110601896B (zh) | 一种基于区块链节点的数据处理方法以及设备 | |
JP2021533638A (ja) | ブロックチェーンネットワーク上でグループ鍵基盤の二重署名トランザクション構造を構成するノードグループ管理装置およびコンピューティング装置 | |
EP4216077A1 (en) | Blockchain network-based method and apparatus for data processing, and computer device | |
WO2021204044A1 (zh) | 区块链数据的订正 | |
CN111640018B (zh) | 一种区块链交易存在性验证方法及装置 | |
CN110930152A (zh) | 一种基于区块链的数据处理方法及相关设备 | |
CN113706313A (zh) | 基于区块链的融资方法、系统及计算机可读存储介质 | |
CN111445239A (zh) | 一种基于区块链的签名验证方法 | |
US20230259930A1 (en) | Cross-chain transaction processing method and apparatus, electronic device, and storage medium | |
CN113672988B (zh) | 基于区块链的信息管理方法、系统、介质及电子设备 | |
CN113810185A (zh) | 一种抗陷门泄露的链上数据修复系统及方法 | |
CN114257429A (zh) | 一种基于联盟链的聚合交易验签存证方法及系统 | |
CN114820179A (zh) | 区块链验签方法及相关设备 | |
CN113382018A (zh) | 一种基于区块链的多链管理方法及其系统 | |
CN110324422A (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 |