CN116823463A - 区块链系统中的交易提议方法、共识节点和区块链系统 - Google Patents
区块链系统中的交易提议方法、共识节点和区块链系统 Download PDFInfo
- Publication number
- CN116823463A CN116823463A CN202310664502.3A CN202310664502A CN116823463A CN 116823463 A CN116823463 A CN 116823463A CN 202310664502 A CN202310664502 A CN 202310664502A CN 116823463 A CN116823463 A CN 116823463A
- Authority
- CN
- China
- Prior art keywords
- transaction
- target
- node
- consensus
- list
- 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 139
- 238000012545 processing Methods 0.000 claims abstract description 42
- 230000004044 response Effects 0.000 claims abstract description 18
- 230000000977 initiatory effect Effects 0.000 claims abstract description 13
- 230000008569 process Effects 0.000 claims description 72
- 238000010200 validation analysis Methods 0.000 claims description 19
- 238000012423 maintenance Methods 0.000 claims description 13
- 238000012795 verification Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 15
- 238000003860 storage Methods 0.000 description 15
- 238000012546 transfer Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 230000006872 improvement Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 241000282344 Mellivora capensis Species 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 235000013929 Psidium pyriferum Nutrition 0.000 description 5
- 244000236580 Psidium pyriferum Species 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 210000003743 erythrocyte Anatomy 0.000 description 4
- 230000000704 physical effect Effects 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000005540 biological transmission Effects 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
- 238000013461 design Methods 0.000 description 3
- 238000004873 anchoring Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005266 casting Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 241000282345 Meles Species 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002688 persistence 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
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Economics (AREA)
- Technology Law (AREA)
- Marketing (AREA)
- Development Economics (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请一个或多个实施例提供一种区块链系统中的交易提议方法、共识节点和区块链系统,区块链系统包括多个具有交易提议权限的共识节点;该方法应用于区块链系统中具有交易提议权限的任一目标共识节点,包括:接收由客户端发送的交易;其中,交易包含由客户端从区块链系统中的各个共识节点中为交易指定的交易提议节点的节点标识;验证交易包含的节点标识与目标共识节点的节点标识是否匹配,如果是,将交易添加到由目标共识节点提议的交易列表,并发起针对交易列表的共识处理;响应于针对交易列表的共识处理通过,执行交易列表中的交易,并收取包含的节点标识与目标共识节点的节点标识匹配的交易对应的交易手续费。
Description
技术领域
本申请一个或多个实施例涉及区块链技术领域,尤其涉及一种区块链系统中的交易提议方法、共识节点和区块链系统。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识协议、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,使得区块链的应用越来越广泛。
发明内容
本申请一个或多个实施例提供一种区块链系统中的交易提议方法、共识节点和区块链系统,包括:
本申请提供一种区块链系统中的交易提议方法,所述区块链系统包括多个具有交易提议权限的共识节点;所述方法应用于所述区块链系统中具有交易提议权限的任一目标共识节点,包括:
接收由客户端发送的交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述交易指定的交易提议节点的节点标识;
验证所述交易包含的节点标识与所述目标共识节点的节点标识是否匹配,如果是,将所述交易添加到由所述目标共识节点提议的交易列表,并发起针对所述交易列表的共识处理;
响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费。
本申请还提供一种区块链系统中的交易提议方法,所述区块链系统包括多个具有交易提议权限的共识节点;所述方法应用于所述区块链系统中具有交易提议权限的任一目标共识节点,包括:
接收由客户端发送的交易,并将所述交易添加到由所述目标共识节点提议的交易列表;其中,所述交易列表中的至少部分交易包含由客户端从所述区块链系统中的各个共识节点中为所述至少部分交易指定的交易提议节点的节点标识;
发起针对所述交易列表的共识处理;
响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取与所述交易列表中的交易对应的交易手续费;其中,如果所述交易包含的节点标识与所述目标共识节点的节点标识匹配,则收取到的交易手续费为与所述交易对应的全额交易手续费;如果所述交易包含的节点标识与所述目标共识节点的节点标识不匹配,则收取到的交易手续费为与所述交易对应的部分交易手续费。
本申请还提供一种区块链系统中的共识节点,所述区块链系统包括多个具有交易提议权限的共识节点;所述共识节点为所述区块链系统中具有交易提议权限的任一目标共识节点,包括:
接收单元,接收由客户端发送的交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述交易指定的交易提议节点的节点标识;
验证单元,验证所述交易包含的节点标识与所述目标共识节点的节点标识是否匹配,如果是,将所述交易添加到由所述目标共识节点提议的交易列表,并发起针对所述交易列表的共识处理;
共识单元,响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费。
本申请还提供一种区块链系统中的共识节点,所述区块链系统包括多个具有交易提议权限的共识节点;所述共识节点为所述区块链系统中具有交易提议权限的任一目标共识节点,包括:
接收单元,接收由客户端发送的交易,并将所述交易添加到由所述目标共识节点提议的交易列表;其中,所述交易列表中的至少部分交易包含由客户端从所述区块链系统中的各个共识节点中为所述至少部分交易指定的交易提议节点的节点标识;
发起单元,发起针对所述交易列表的共识处理;
共识单元,响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取与所述交易列表中的交易对应的交易手续费;其中,如果所述交易包含的节点标识与所述目标共识节点的节点标识匹配,则收取到的交易手续费为与所述交易对应的全额交易手续费;如果所述交易包含的节点标识与所述目标共识节点的节点标识不匹配,则收取到的交易手续费为与所述交易对应的部分交易手续费。
本申请还提供一种区块链系统,包括多个具有交易提议权限的共识节点,其中:
具有交易提议权限的任一目标共识节点接收由客户端发送的交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述交易指定的交易提议节点的节点标识;
所述目标共识节点验证所述交易包含的节点标识与所述目标共识节点的节点标识是否匹配,如果是,将所述交易添加到由所述目标共识节点提议的交易列表,并发起针对所述交易列表的共识处理;
所述目标共识节点响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费。
本申请还提供一种区块链系统,包括多个具有交易提议权限的共识节点,其中:
具有交易提议权限的任一目标共识节点接收由客户端发送的交易,并将所述交易添加到由所述目标共识节点提议的交易列表;其中,所述交易列表中的至少部分交易包含由客户端从所述区块链系统中的各个共识节点中为所述至少部分交易指定的交易提议节点的节点标识;
所述目标共识节点发起针对所述交易列表的共识处理发起针对所述交易列表的共识处理;
所述目标共识节点响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取与所述交易列表中的交易对应的交易手续费;其中,如果所述交易包含的节点标识与所述目标共识节点的节点标识匹配,则收取到的交易手续费为与所述交易对应的全额交易手续费;如果所述交易包含的节点标识与所述目标共识节点的节点标识不匹配,则收取到的交易手续费为与所述交易对应的部分交易手续费。
在上述实施例中,对于待上链的任意一笔交易而言,客户端可以从区块链系统中的各个共识节点中为这笔交易指定交易提议节点,并将包含该交易提议节点的节点标识的这笔交易发送给该区块链系统中的任意一个共识节点,由该共识节点在确定这笔交易包含的节点标识与该共识节点的节点标识匹配时,将这笔交易添加到由该共识节点提议的交易列表中,并发起针对该交易列表的共识处理;在该交易列表共识完成后,该共识节点可以执行该交易列表中的交易,并收取该交易列表中包含的节点标识与该共识节点的节点标识匹配的交易对应的交易手续费。
采用这种方式,一方面,一笔交易实际上只会包含在为这笔交易指定的交易提议节点提议的交易列表中,由区块链系统中的各个共识节点对该交易列表进行共识处理,由此可以避免出现多个共识节点成功提议了相同的交易的情况,从而可以降低不同的共识节点提议相同的交易的概率,也就可以降低共识过程中的交易重复率,减少共识过程中的资源浪费,并且可以避免共识完成后的区块中包含重复的交易,解决同一笔交易被多次执行的问题。此外,无需引入复杂的加密机制,因此可以减少区块链系统的整体性能的开销;
另一方面,如果客户端没有为某笔交易指定交易提议节点,则可能导致多个共识节点都成功提议了这笔交易,但是由于这笔交易不是包含的节点标识与自身的节点标识匹配的交易,这多个共识节点就无法收取到与这笔交易对应的交易手续费,由此可以降低共识节点提议不包含节点标识的交易的意愿,从而可以促使客户端为每笔交易指定交易提议节点,以保证这笔交易能够及时上链,这样可以进一步地避免不同的共识节点提议相同的交易,有效地降低共识过程中的交易重复率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一示例性实施例示出的一种区块链系统的示意图;
图2是本申请一示例性实施例示出的一种PBFT协议中的常规阶段的示意图;
图3是本申请一示例性实施例示出的一种HoneyBadgerBFT协议的示意图;
图4是本申请一示例性实施例示出的一种区块链系统中的交易提议方法的流程图;
图5是本申请一示例性实施例示出的另一种区块链系统中的交易提议方法的流程图;
图6是本申请一示例性实施例示出的一种设备的结构示意图;
图7是本申请一示例性实施例示出的一种区块链系统中的共识节点的架构示意图;
图8是本申请一示例性实施例示出的另一种区块链系统中的共识节点的架构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
区块链一般被划分为三种类型:公有链(Public Blockchain)、私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还可以有上述多种类型的结合,比如私有链与联盟链的结合、联盟链与公有链的结合等。
在上述三种类型的区块链中,去中心化程度最高的是公有链。加入公有链的参与方(也可以称为区块链中的节点)可以读取链上的数据记录、参与交易、竞争新区块的记账权等。而且,各节点可自由加入或退出网络,并进行相关操作。
私有链则相反,网络的写入权限由某个组织或机构控制,数据读取权限受组织规定。也即,私有链可以视为一个弱中心化系统,其对节点具有严格限制且节点数量较少。这种类型的区块链更适合于特定机构内部使用。
联盟链则介于公有链以及私有链之间,可以实现“部分去中心化”。联盟链中的各节点通常有与之对应的实体机构或组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链的运行。
请参考图1,图1是本申请一示例性实施例示出的一种区块链系统的示意图。
如图1所示,区块链系统可以维护一个或多个区块链(例如:公有区块链、私有区块链、联盟区块链等),并且可以包含用于承载上述一个或多个区块链的多个区块链节点;例如,如图1中示出的区块链节点1、区块链节点2、区块链节点3、区块链节点4、区块链节点i等可以共同承载一个或多个区块链。各个区块链系统所包含的区块链之间,以及各个区块链系统之间,还可以进行跨链的数据访问。
区块链节点是逻辑上的通信实体;不同类型的多个区块链节点可以运行在同一个物理服务器上,也可以运行在不同的物理服务器上。在示出的一种实施方式中,区块链节点可以是物理设备,也可以是在服务器或服务器集群中实现的虚拟设备;例如,区块链节点可以是服务器集群中的一台物理主机,也可以是基于虚拟化技术对服务器或服务器集群搭载的硬件资源进行虚拟化后,创建的虚拟机。每个区块链节点之间,可以通过各种类型的通信方法(例如:TCP/IP等)耦接在一起形成网络,来承载一个或多个区块链。
基于区块链的基本特性,区块链通常是由若干个区块构成。在这些区块中分别记录有与该区块的创建时刻对应的时间戳,所有的区块严格按照区块中记录的时间戳,构成一条在时间上有序的数据链条。
对于区块链外所产生的数据而言,可以将这些数据构造成区块链所支持的标准的交易(transaction)格式,然后发布至区块链,由区块链系统中参与共识的节点对这笔交易进行共识,并在共识完成后执行这笔交易,从而可以将这笔交易及执行结果在区块链中进行持久化存证。
在区块链系统中,不同的参与方通过所部署的节点可以建立一个分布式的区块链网络。其中,利用链式区块结构所构造的去中心化(或称为多中心化)的分布式账本,存储在分布式的区块链网络中的每个节点(或大多节点,如共识节点)上。这类区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。区块链系统中的每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)协议保证所有忠诚节点具有相同的交易,从而保证所有忠诚节点对相同的交易的执行结果一致,并将交易及执行结果打包生成区块。
当前主流的共识协议包括:工作量证明(Proof of Work,POW)、股权证明(Proofof Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)、蜜獾拜占庭容错(HoneyBadgerBFT)等算法。这些共识协议通常可以分为异步共识协议和非异步共识协议两类。例如,PBFT算法属于一种半同步(partial synchronous)协议,而HoneyBadgerBFT算法则属于一种异步(asynchronous)协议。
以PBFT算法为例,该算法是Miguel Castro(卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始的拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际的系统应用中变得可行。该论文发表在1999年的操作系统设计与实现国际会议上(OSDI99)。PBFT算法中,所有的副本(Replica)在一个被称为视图(View)的轮换过程(succession of configuration)中运行。在某个视图中,一个副本作为主节点(Primary),其他的副本作为备份节点(Backups)。视图是连续编号的整数。主节点由公式p=v mod|R|计算得到,这里v是视图编号,p是副本编号,|R|是副本集合的个数。该算法中假设,当最多存在f个副本(即节点)失效时,如果存在总数为至少3f+1个副本,就能保证在异步系统中提供安全性和活性。为了能够确保所有副本的数据一致性要求和容错要求而需要的一定数量副本的集合,一般是分布式系统中的大多数节点构成的集合,构成大多数(Quorum)。例如,在总节点数n为3f+1(n=3f+2或n=3f的情况一般不会对容错效果带来提升)的情况下,Quorum为2f+1。这样,对于包含四个节点的分布式系统,任意三个节点可以构成一个Quorum。
PBFT协议包括Normal Case Phase和View Change Phase两个过程,图2为NormalCase Phase(常规阶段)过程的流程图。Normal Case Phase中主要包括PRE-PREPARE(预准备)、PREPARE(准备)和COMMIT(提交)三个阶段,其中3号节点例如可以表示宕机的节点(图2中以×表示)。当主节点失效的时候就需要启动视图更换(view change)过程,从而在系统存在故障时进行状态调整,更换新的主节点。如果主节点掉线或者作恶而不广播客户端的请求等,客户端可以设置超时机制。如果超时的话,客户端可以向所有副本节点广播请求消息。副本节点检测出主节点作恶或者下线后,也可以发起View Change Phase,以更换主节点(经常简称为“换主”)。此外,也可能由于主节点发起错误的提议导致PRE-PREPARE、PREPARE和COMMIT三阶段共识过程失败,或者,PREPARE、COMMIT阶段可能达不成Quorum数量(如3f+1个节点中的2f+1个,也称为法定数量)的一致,也都无法完成共识。这些情况下也可能发起View Change Phase,以更换主节点。
PBFT算法属于一种半同步协议,其特点是假设网络一开始是异步的,但是能够从某一时刻开始同步。要在网络中让不同节点对同一提议达成共识,最简便的方式是设置主节点,由主节点来统一各个节点的意见。通过设置定时器,可以防止主节点出错。PBFT协议中,如果在有限时间内没有完成Normal Case Phase,会触发Backups发起View ChangePhase,以更换主节点。PBFT协议将主节点固定在一个位置,所有请求都可以先发送到主节点,再由主节点广播到其他共识节点。除了引入额外的、将请求发送到主节点的延迟之外,主节点的出入口带宽也可能成为性能瓶颈。
PBFT这类单主节点类型的协议,在同一次共识中只有主节点能够发起共识提议,其它节点没有能力发起共识提议。或者,如果其它节点也有提议,就需要将提议转发至主节点,由主节点代为发起提议。前者对于共识节点构造区块的权力是不公平的,后者虽然备份节点也可以提议,但是会增加主节点出口带宽的压力。对于大多共识节点都需要发起共识提议的情况,两者都不是特别适合。
与此相对地,HoneyBadgerBFT(也常简称为HBBFT)算法属于一种异步协议。异步协议适用于异步网络,也就是这个网络中节点间的消息可以被任意延迟,但最终会到达。HoneyBadgerBFT协议中去掉了定时器,而是通过消息来驱动协议的执行。同时,HoneyBadgerBFT协议中所有节点都是对等的,没有主节点和备份节点之分,也就没有换主的过程。HBBFT等异步网络共识协议无主节点的概念,各节点都可提议请求,尝试构造区块,因此异步网络协议在一定程度上缓解了公平性和单节点瓶颈的问题。
图3为HoneyBadgerBFT协议中单节点角度的流程图。实际上,如前所述,HoneyBadgerBFT协议中所有节点都是对等的,也就是说,所有节点都可以执行图3所示的流程。如图3所示,从单节点的视角来看,HoneyBadgerBFT协议主要包括两个阶段,分别为可靠广播(Reliable BroadCast,RBC)和异步共识(Asynchronous Binary Agreement,ABA,异步二进制协议,也称为“01异步共识”)。此外,还有RBC和ABA之上的异步公共子集(Asynchronous Common Subset,ACS)协议。RBC阶段至少包括Rval、Echo、Ready三轮消息交互,ABA阶段至少包括Bval、Aux和Coin三轮消息交互。RBC使用三轮消息交互保证可靠的提议广播。ABA首先进行两轮投票(Bval和AUX消息),然后借助抛硬币(Coin)对各节点的提议统一认识,从而绕开半同步协议对网络同步的要求。
一次HoneyBadgerBFT共识,要经过RBC阶段和至少一次ABA阶段。较好的情况下,存在1/2的概率可以结束本次HoneyBadgerBFT共识过程,这样,需要经过6个轮次完成一次共识。此外,有1/4概率会进入再一次的ABA过程,如图3中第二次ABA过程(7、8、9轮次表示的ABA过程),有1/4概率会在第二轮结束,且存在至少1/4的概率可以结束本次HoneyBadgerBFT共识过程,这样,需要经过9个轮次完成一次共识。在第二次ABA过程后,整体上有1/8的概率会进入再一次的ABA过程……以此类推。
也即,HoneyBadgerBFT协议至少包括一次RBC(三轮)和一次ABA(三轮),如果ABA的投票结果与抛币结果不一致,协议进入新一轮的ABA(至少额外三轮)。
由此可见,HoneyBadgerBFT协议引入的抛币机制,给共识的轮次带来不确定性,从而可能造成共识的延迟增加。
另外,对于一个最终生成的区块(对应一个epoch)来说,一个节点可以运行一个ACS和n个RBC+n个ABA,n为共识节点个数,且其中1个RBC和ABA对应自身发起的共识提议,其他n-1个RBC和ABA对应其他n-1个节点发起的共识提议。也就是说,对于一个epoch来说,一个节点发起共识提议的同时,也会配合完成其他节点发起的共识提议。这样,对于一个节点来说,至少n-f个RBC结束后会将这些RBC已经完成的情况(通过Ready消息表示)发至ACS,进而由ACS为对应的ABA赋初值,启动对应的ABA过程。在至少n-f个共识提议完成ABA之后如果剩余的共识提议仍未完成RBC,则会被赋初值为0,进而执行该提议对应的ABA过程。从全局的视角来看,至少n-f个节点会执行相同的上述共识过程(至少n-f个不同节点发起提议的过程),并最终由ACS来收集各个提议的ABA结果后按照某种规则对ABA结果为1的提议排序后输出。
在上述过程中,与PBFT协议相反地,对各个参与共识的节点提出了较强的提议要求,即参与共识的节点需要在每一个epoch中都发起提议,不论这个节点是否真的有提议。如果这个节点实际上没有提议,也需要发起一个内容为空的提议请求(RBC中可以对这个空的提议请求加密,这样其他节点并不能确定这个提议的内容,以避免恶意节点因能看到提议中的内容而有选择的在ABA过程中赋值输入或输出)。即使这个节点是失效节点,无法发出提议,那么在其他节点的ACS中仍然要给这个节点对应的提议留出位置。具体地,在其他节点中的每一个执行完至少Quorum个ABA且均共识为1后,如果还没有收到这个节点的提议对应RBC阶段的Quorum个Ready消息,ACS需要给这个节点的提议对应的ABA初值赋为0,进而进入ABA过程。这样,其它节点还需要配合完成这个失效节点对应提议的ABA过程。
除此之外,以HoneyBadgerBFT为代表的传统的异步共识协议,通常采用的是以区块标识来明确待共识的区块,并由所有共识节点针对该区块标识对应的区块,共同发起提议的区块组建方式。
以HoneyBadgerBFT协议为例,在RBC和ABA阶段交互的消息中通常就需要携带待共识区块的区块标识;各个共识节点可以通过RBC和ABA两个阶段的交互,来共同地向与该区块标识对应的区块提议交易列表。
具体而言,区块链系统中的所有共识节点可以基于共识协议,对要连接到链式区块结构上的新的区块中所包含的交易进行共识,以保证各个共识节点对该区块中所包含的交易在内容和顺序上达成一致。在共识完成后,各个共识节点可以按照顺序执行该区块中所包含的交易,并在确认各个共识节点的交易执行结果一致的情况下,完成该区块的最终化。其中,最终化指的是区块中所包含的交易执行完成、且交易执行结果被所有共识节点(或一定数量的共识节点,如三分之二的共识节点)认可。
在异步共识协议中,区块链系统中的每个共识节点本地都可以维护一个交易池。其中,各个共识节点所维护的本地交易池中可以存储有待共识的交易。不同的共识节点所维护的本地交易池中的交易可能全部相同或部分相同。在这种情况下,每个共识节点都可以从其维护的本地交易池中随机地选取出若干交易,并提议这若干交易;也即,在共识完成后,各个共识节点提议的这若干交易就包含在相应的区块中。
然而,不同的共识节点在同一时刻或较为接近的不同时刻提议交易时,极有可能从各自所维护的本地交易池中选取出了重复的交易,这就会导致共识过程中的交易重复,从而造成共识过程中的资源浪费。进一步地,共识完成后的区块中也可能包含重复的交易,这就会导致同一笔交易被多次执行,从而造成交易执行结果的错误;以一笔转账交易为例,假设通过执行这笔转账交易,可以实现从区块链账户A向区块链账户B转账10元,则当共识完成的区块中这笔转账交易重复出现两次时,这笔交易就会被执行两次,实际上实现的是从区块链账户A向区块链账户B转账20元,由此给区块链账户A造成了损失。在实际的应用中,交易池中的交易的数量越少,共识过程中的交易重复率会越高,共识过程中的资源浪费也就会越严重。
HoneyBadgerBFT协议为了解决交易重复的问题,引入了额外的门限加密机制,在共识前后对所提议的交易分别进行门限加密和门限解密。具体地,区块链系统中的各个共识节点可以对其提议的若干交易进行门限加密,再将加密后的这若干交易传输到其他的共识节点,以发起针对这若干交易的共识;而在针对这若干交易的共识成功后,则可以广播发送自身对加密后的这若干交易的门限解密份额,从而使正确节点最终可以恢复出这若干交易。HoneyBadgerBFT协议通过从本地交易池中随机选取交易,可以避免正确节点所提议的交易中包含大量的重复交易;并且,通过对所提议的交易进行门限加密,使得恶意节点无法得到其他节点所提议的交易的明文内容,从而无法恶意地提议重复的交易,由此可以在一定程度上降低共识过程中的交易重复率。
然而,门限加密机制是一种复杂度较高的密码学解决方案,因此引入门限加密机制会带来额外的计算和网络通信,对区块链系统的整体性能而言也是不可忽略的开销。此外,由区块链系统中的共识节点随机地选取要提议的交易,会导致先接收到的交易可能较长一段时间后才入块,影响交易的实时性,因此不适用于对交易实时性要求较高的场景。
请参考图4,图4是本申请一示例性实施例示出的一种区块链系统中的交易提议方法的流程图。
本申请提供一种区块链系统中的交易提议方法的实施例,在本实施例中,该区块链系统可以包括多个具有交易提议权限的共识节点。在这种情况下,该区块链系统中的交易提议方法可以应用于该区块链系统中具有交易提议权限的的任意一个共识节点(可称为目标共识节点)。
在示出的一种实施方式中,上述区块链系统具体可以是采用HoneyBadgerBFT等异步共识协议的区块链系统,其中的各个共识节点都可提议交易,尝试构造区块,也即具有交易提议权限。HoneyBadgerBFT协议的具体实现可以参考本申请中的前述内容,本申请在此不再赘述。
如图4所示,上述区块链系统中的交易提议方法具体可以包括:
步骤402:接收由客户端发送的交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述交易指定的交易提议节点的节点标识。
如前所述,与区块链系统建立了连接的客户端可以构造一笔交易,并将这笔交易发布至该区块链,即将这笔交易发送给该区块链系统中的所有共识节点,由所有共识节点对这笔交易进行共识,并在共识完成后执行这笔交易,从而可以将这笔交易及执行结果在区块链中进行持久化存证。
在本实施例中,由于上述区块链系统可以包括多个具有交易提议权限的共识节点,而这些共识节点都具备提议交易,尝试构造区块的能力,对于作为这些共识节点中的任意一个的上述目标共识节点而言,与该区块链系统建立了连接的客户端可以通过广播的方式,将交易发送给该目标共识节点,以触发该目标共识节点提议该交易,尝试构造区块。
具体地,上述客户端可以获取待上链的任意一笔交易,并将这笔交易发送给上述目标共识节点。在实际的应用中,这笔交易可以是由该客户端自身构造的交易,也可以是该客户端接收到的已经构造好的交易,本申请对此不作限制。
与之相应地,上述目标共识节点可以接收上述客户端发送的任意一笔交易,从而可以提议这笔交易。
上述客户端在将待上链的任意一笔交易发送给上述目标共识节点之前,可以在这笔交易中添加由该客户端从上述区块链系统中的各个共识节点中为这笔交易指定的交易提议节点的节点标识。其中,为这笔交易指定的交易提议节点,即为具有这笔交易的交易提议权限的共识节点,而除了该交易提议节点之外的其他共识节点则不具有这笔交易的交易提议权限;也即,只有由该交易提议节点来提议这笔交易被认为是有效的,而由除了该交易提议节点之外的其他共识节点来提议这笔交易则被认为是无效的。
因此,上述目标共识节点接收到的上述客户端发送的任意一笔交易中,可以包含由该客户端从上述区块链系统中的各个共识节点中为这笔交易指定的交易提议节点的节点标识。
在实际的应用中,对于上述区块链系统中的任意一个共识节点而言,该共识节点的节点标识可以是能够唯一识别出该共识节点的标志。以如图2所示的区块链系统为例,该区块链系统中作为副本0的共识节点的节点标识可以是0,作为副本1的共识节点的节点标识可以是1,以此类推。
步骤404:验证所述交易包含的节点标识与所述目标共识节点的节点标识是否匹配,如果是,将所述交易添加到由所述目标共识节点提议的交易列表,并发起针对所述交易列表的共识处理。
在本实施例中,上述目标共识节点在接收到上述客户端发送的任意一笔交易的情况下,该目标共识节点可以先验证这笔交易包含的节点标识与该目标共识节点的节点标识是否匹配。如果这笔交易包含的节点标识与该目标共识节点的节点标识匹配,则说明该目标共识节点具有这笔交易的交易提议权限;如果这笔交易包含的节点标识与该目标共识节点的节点标识不匹配,则说明该目标共识节点不具有这笔交易的交易提议权限。
在上述交易包含的节点标识与上述目标共识节点的节点标识匹配的情况下,该目标共识节点可以将这笔交易添加到由该目标共识节点自身提议的交易列表中,并发起针对该交易列表的共识处理。
具体地,上述目标共识节点可以将上述交易列表发送给上述区块链系统中的其他共识节点(即该区块链系统中除了该目标共识节点之外的共识节点),以发起针对该交易列表的共识处理。对于该区块链系统中除了该目标共识节点之外的任意一个共识节点而言,该共识节点可以针对该交易列表进行共识处理。
需要说明的是,客户端也有可能将未指定交易提议节点的一笔交易发送给了上述目标共识节点,即这笔交易可能不包含节点标识(不包含与节点标识对应的字段,或者与节点标识对应的字段为空)。在这种情况下,为了保证兼容性,如果某笔交易不包含节点标识,该目标共识节点也可以提议这笔交易,即将这笔交易添加到由该目标共识节点自身提议的交易列表中。因此,由该目标共识节点自身提议的交易列表中可能有一部分交易包含节点标识,而另一部分交易则不包含节点标识。
例如,假设上述目标共识节点的节点标识为1,该目标共识节点接收到了客户端发送的交易1、交易2、交易3,其中,交易1包含的节点标识为1,交易2不包含节点标识,交易3包含的节点标识为2,则由于交易3包含的节点标识与该目标共识节点的节点标识不匹配,该目标共识节点可以不提议交易3,而仅提议交易1和交易2;也即,由该目标共识节点自身提议的交易列表中可以仅包含交易1和交易2。
在实际的应用中,上述目标共识节点可以使用该目标共识节点的私钥对上述交易列表中的各笔交易进行数字签名,并将经过了数字签名的该交易列表发送给上述区块链系统中的其他共识节点。而对于该区块链系统中除了该目标共识节点之外的任意一个共识节点而言,该共识节点在接收到该目标共识节点发送的该交易列表的情况下,则可以针对该交易列表中的任意一笔交易,使用这笔交易包含的节点标识对应的节点的公钥,对这笔交易的数字签名进行验证,如果验证通过,则说明这笔交易包含的节点标识对应的节点即为该目标共识节点,从而可以认为这笔交易包含的节点标识与该目标共识节点的节点标识匹配。
针对上述交易列表的共识处理,具体可以包括通过运行上述区块链系统所采用的共识协议,使得该区块链系统中的所有共识节点可以对该交易列表中的交易进行共识,以将该交易列表中的交易包含在区块中,并且保证各个共识节点对各个区块包含的交易在内容和顺序上达成一致。
步骤406:响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费。
在本实施例中,上述目标共识节点在针对上述交易列表的共识处理通过的情况下,可以认为该交易列表共识成功,即本轮共识完成。
如前所述,在本轮共识完成后,区块链系统中的各个共识节点可以按照顺序执行本轮共识的区块中所包含的交易,并在确认各个共识节点的交易执行结果一致的情况下,完成该区块的最终化。
上述目标共识节点可以响应于针对上述交易列表的共识处理通过,即在本轮共识完成后,执行该交易列表中的各笔交易。但除此之外,对于该交易列表中包含的节点标识与该目标共识节点的节点标识匹配的任意一笔交易而言,该目标共识节点还可以收取与这笔交易对应的交易手续费,作为将这笔交易及其执行结果存证在区块链中的手续费。
对于区块链而言,区块高度是连接在链式区块结构上的区块的个数。但是,对于区块链中的任意一个区块而言,该区块的区块高度可以作为该区块的标识符。区块通常被认为有两个标识符,一个标识符是区块头的哈希值,另一个标识符是区块高度。其中,区块头的哈希值是通过SHA256算法等对区块头进行二次哈希计算而得到的;区块头的哈希值可以唯一标识一个区块,并且区块链系统中的任意一个节点通过对区块头进行哈希计算都可以独立地获取该区块头的哈希值。区块高度指的是区块在区块链中的位置;区块高度并不是唯一标识一个区块的标识符,虽然一个的区块总是会有一个明确且固定的区块高度,但是一个区块高度并不总是识别唯一的一个区块,两个或两个以上的区块可能有相同的区块高度,即在区块链中争夺同一位置。
区块链中的各个区块通常是按照时间顺序连接在链式区块结构上的,即链式区块结构实际上是一条在时间上有序的链条。在这种情况下,区块高度通常被设定为递增的数值。例如,假设最终化完成的上一区块的区块高度为h,则要共识的下一区块的区块高度为h+1;以此类推。
在示出的一种实施方式中,对于上述客户端获取到的待上链的某笔交易而言,可以由该客户端在这笔交易中添加为这笔交易指定的生效区块高度。其中,该生效区块高度可以用于对共识完成的、包含这笔交易的区块进行限制;如果该区块的区块高度不大于(即小于或等于)该生效区块高度,则认为该区块中包含的这笔交易是有效的,可以执行这笔交易;如果该区块的区块高度大于该生效区块高度,则认为该区块中包含的这笔交易是无效的,不再执行这笔交易。
因此,对于上述交易列表中包含的节点标识与上述目标共识节点的节点标识匹配的任意一笔交易(可称为目标交易)而言,该目标交易还可以包含由上述客户端为该目标交易指定的生效区块高度。
在上述情况下,上述目标共识节点在本轮共识完成后,可以先确定包含上述目标交易的区块的区块高度是否不大于该目标交易包含的生效区块高度;由于此时该生效区块高度可以用于对共识完成的、包含该目标交易的区块进行限制,如果该区块的区块高度不大于该生效区块高度,则可以执行该目标交易,并且还可以收取与该目标交易对应的交易手续费,作为将该目标交易及其执行结果存证在区块链中的手续费。
同理,在示出的另一种实施方式中,对于上述客户端获取到的待上链的某笔交易而言,可以由该客户端在这笔交易中添加为这笔交易指定的生效时刻。其中,该生效时刻可以用于对共识完成的、包含这笔交易的区块进行限制;如果该区块的时间戳(例如:区块头中的时间戳)对应的时刻不晚于(即早于或等于)该生效时刻,则认为该区块中包含的这笔交易是有效的,可以执行这笔交易;如果该区块的时间戳对应的时刻晚于该生效时刻,则认为该区块中包含的这笔交易是无效的,不再执行这笔交易。在实际的应用中,这笔交易包含的生效时刻的具体形式可以是与该生效时刻对应的时间戳。
因此,对于上述交易列表中包含的节点标识与上述目标共识节点的节点标识匹配的任意一笔交易(可称为目标交易)而言,该目标交易还可以包含由上述客户端为该目标交易指定的生效时刻。
在上述情况下,上述目标共识节点在本轮共识完成后,可以先确定包含上述目标交易的区块的时间戳对应的时刻是否不晚于该目标交易包含的生效时刻;由于此时该生效时刻可以用于对共识完成的、包含该目标交易的区块进行限制,如果该区块的时间戳对应的时刻不晚于该生效时刻,则可以执行该目标交易,并且还可以收取与该目标交易对应的交易手续费,作为将该目标交易及其执行结果存证在区块链中的手续费。
通过上述方式,如果共识节点未能及时地提议某笔交易,则无法获得与这笔交易对应的交易手续费,由此可以促使共识节点在接收到每笔交易后,及时地提议这笔交易,从而可以保证交易的实时性。
在示出的一种实施方式中,对于上述交易列表中包含的节点标识与上述目标共识节点的节点标识匹配的任意一笔交易(可称为目标交易)而言,上述目标共识节点在执行该目标交易,并收取与该目标交易对应的交易手续费时,具体可以执行该目标交易,并检测该目标交易是否执行成功,从而可以响应于该目标交易执行成功,收取与该目标交易对应的交易手续费。
具体地,可以对上述区块链中的交易的收据(Receipt)进行监听。其中,一笔交易的收据通常包含这笔交易的执行结果。通过对交易的收据进行监听,可以获取上述目标交易的收据,并根据该目标交易的收据中的内容,确定该目标交易是否执行成功。
通过在确认某笔交易执行成功的情况下,再收取与这笔交易对应的交易手续费,可以避免由于针对未能成功执行的交易进行交易手续费的收取,而导致的交易发起方的损失。此外,也可以避免后续需要针对未能成功执行的交易进行交易手续费的退还,从而可以简化实际的交易手续费收取流程。
在示出的一种实施方式中,在上述目标交易执行成功的情况下,该目标交易的执行结果可以包含与该目标交易对应的交易手续费。上述目标共识节点在收取与该目标交易对应的交易手续费时,具体可以收取该目标交易的执行结果包含的与该目标交易对应的交易手续费。例如,该目标共识节点可以调用上述区块链的原生代码(也称为链平台代码),收取该目标交易的执行结果包含的与该目标交易对应的交易手续费;具体地,可以先由上述客户端将该交易手续费转给上述区块链系统,再在该目标共识节点调用该区块链的原生代码时,由该区块链系统将该交易手续费用转给该目标共识节点。
在示出的一种实施方式中,在上述目标交易执行成功的情况下,上述目标共识节点可以生成一笔包含与该目标交易对应的交易手续费的交易,并将该交易添加到由该目标共识节点提议的下一个交易列表中,作为下一个交易列表中的首笔交易。后续,该目标共识节点可以将下一个交易列表发送给其他共识节点,以发起针对下一个交易列表的共识处理。在实际的应用中,也可以根据包含的节点标识对下一个交易列表中的交易进行筛选。而在针对下一个交易列表的共识处理通过后,则可以执行下一个交易列表中的首笔交易,收取这笔交易包含的与该目标交易对应的交易手续费。
在示出的一种实施方式中,对于上述交易列表中包含的节点标识与上述目标共识节点的节点标识匹配的任意一笔交易(可称为目标交易)而言,可以将与该目标交易对应的交易手续费包含在该目标交易中。在这种情况下,上述目标共识节点在收取与该目标交易对应的交易手续费时,具体可以直接收取该目标交易中所包含的交易手续费。此时,该目标交易中所包含的交易手续费,即为与该目标交易对应的交易手续费。
需要说明的是,可以采用货币、房产、股票、贷款合同、票据、应收账款等实体资产来支付交易手续费,也可以采用数字资产来支付交易手续费,本申请对此不作限制。
具体地,上述客户端在发送上述目标交易之前,可以响应于针对该目标交易对应的交易手续费的支付处理完成,在该目标交易中添加与该目标交易对应的交易手续费。
通过将与某笔交易对应的交易手续费包含在这笔交易本身中,使得在收取与这笔交易对应的手续费时,可以直接收取这笔交易中所包含的交易手续费,因此可以避免执行繁琐的交易手续费收取步骤,从而可以简化实际的交易手续费收取流程。
在可编程的区块链中,通常可以支持将现实世界中的非货币属性的实体资产,转化为区块链上的数字资产。而将上述实体资产转化为上述数字资产,通常是指将该实体资产与区块链上的数字资产进行“锚定”,作为这些虚拟资产的价值支撑,进而在区块链上产生与实体资产的价值匹配,且能够在区块链上的区块链账户之间进行流通的数字资产的过程。
接入区块链的用户可以在区块链上创建一笔与现实世界的非货币属性的实体资产价值匹配的数字资产,在区块链上进行流通。例如,用户可以将持有的房产、股票、贷款合同、票据、应收账款等非货币属性的实体资产,转换为价值匹配的数字资产在区块链上流通。
通常,将区块链中的账户(Account)划分为外部账户和合约账户两类。其中,外部账户就是由用户直接控制的账户,也称为用户账户;而合约账户则是由用户通过外部账户创建的,包含合约代码的账户(即智能合约)。
对于区块链中的账户而言,通常会通过一个结构体,来维护账户的账户状态。当区块中的交易被执行后,区块链中与该交易相关的账户的状态通常也会发生变化。
在一个例子中,账户的结构体通常包括Balance,Nonce,Code和Storage等字段。
在区块链上创建数字资产时,可以对区块链支持的账户类型进行扩展,在区块链支持的账户类型的基础上,再扩展出一种资产账户(也称为资产对象)。例如,可以在区块链支持的外部账户、合约账户的基础上,再扩展出一种资产账户;扩展出的该资产账户,可以作为持有与现实世界中的非货币属性的实体资产价值锚定的数字资产的媒介。
也即,接入区块链的用户除了可以在区块链上完成用户账户、智能合约的创建之外,还可以在区块链上创建一个资产账户,用来持有一笔与现实世界的非货币属性的实体资产价值匹配的数字资产,在区块链上进行流通。
对于上述资产账户而言,具体也可以通过一个结构体,来维护账户的账户状态。上述资产账户的结构体所包含的内容,可以与以上描述的结构体相同,当然也可以基于实际的需求进行设计。
在一个例子中,上述资产账户的结构体也可以包括以上描述的Balance,Nonce,Code和Storage等字段。
需要说明的是,Balance字段通常用于维护账户目前的账户余额;而对于上述资产账户而言,由于其锚定的实体资产,通常可能是无法基于余额进行计数的非余额类资产,因此可以对Balance字段的含义进行扩展,不再表示账户的“余额”,而是用于维护资产的地址信息。在实际的应用中,Balance字段中可以维护多笔“数字资产”对应的地址信息。
在这种情况下,以上示出的外部账户、合约账户和资产账户,均可以通过在Balance字段中,添加需要持有的“数字资产”的地址信息,来持有这笔数字资产。即除了外部账户和合约账户以外,资产账户本身也可以持有数字资产。
在示出的一种实施方式中,可以不直接将与上述目标交易对应的交易手续费包含在该目标交易中,而是将与该交易手续费对应的数额包含在该目标交易中。在这种情况下,上述目标共识节点在收取与该目标交易对应的交易手续费时,具体可以按照该目标交易中所包含的数额,从与上述客户端对应的区块链账户持有的数字资产中,向与该目标共识节点对应的区块链账户中转移数字资产。此时,所转移的数字资产的数额,即为该目标交易中所包含的数额。
通过将与某笔交易手续费对应的数额包含在交易本身中,使得在收取这笔交易手续费时,可以按照该数额进行数字资产的转移,由此可以避免对用于支付的资产类型的限制,即可以采用多种类型的资产支付交易手续费。
或者,在示出的另一种实施方式中,可以不直接将与上述目标交易对应的交易手续费包含在该目标交易中,而是将作为该交易手续费的价值凭证包含在该目标交易中。在这种情况下,上述目标共识节点在收取与该目标交易对应的交易手续费时,具体可以将该目标交易中包含的价值凭证添加到与该目标共识节点对应的区块链账户中进行维护。
其中,价值凭证可以是用来表示一定价值的凭证,例如:对于实体资产而言,该价值凭证可以是与一定数额的货币对应的存单、房产的相关证件等;对于数字资产而言,该价值凭证可以是数字资产的地址信息等。
在示出的一种实施方式中,上述价值凭证中可以包含在上述区块链上发布的数字资产的地址信息。在这种情况下,上述目标共识节点在将上述目标交易中包含的该价值凭证添加到与该目标共识节点对应的区块链账户中进行维护时,具体可以将该价值凭证中的地址信息添加到与该目标共识节点对应的区块链账户中进行维护。
在示出的一种实施方式中,如果包含上述目标交易的区块的区块高度大于上述生效区块高度,或者包含上述目标交易的区块的时间戳对应的时刻晚于上述生效时刻,则可以不再执行该目标交易。由于未执行该目标交易,就可以将与该目标交易对应的交易手续费退回给上述客户端,即不收取与该目标交易对应的交易手续费,以避免不合理的收费。
例如,在通过执行包含与上述目标交易对应的交易手续费的交易来收取与该目标交易对应的交易手续费的情况下,可以不再生成包含与该目标交易对应的交易手续费的交易,并将预先由上述客户端转给上述区块链系统的交易手续费退回给该客户端。或者,在上述目标交易包含与该目标交易对应的交易手续费的情况下,如果未执行该目标交易,则可以将该目标交易中所包含的交易手续费退回给上述客户端。
在示出的一种实施方式中,如果包含上述目标交易的区块的区块高度大于上述生效区块高度,或者包含上述目标交易的区块的时间戳对应的时刻晚于上述生效时刻,则可以将该目标交易作为不可执行交易从该区块中移除。
或者,如果包含上述目标交易的区块的区块高度大于上述生效区块高度,或者包含上述目标交易的区块的时间戳对应的时刻晚于上述生效时刻,则可以将该区块中所包含的该目标交易标记为不可执行交易。
通过上述方式,如果共识节点未能及时地提议某笔交易,可以将相应的区块中所包含的这笔交易移除,或者标记为不可执行交易,以避免执行这笔交易。
在示出的一种实施方式中,如果上述目标交易未包含在区块高度不大于上述生效区块高度的任一区块中,或者上述目标交易未包含在时间戳对应的时刻不晚于上述生效时刻的任一区块中,则说明上述目标共识节点未能及时地提议该目标交易。
在上述情况下,为了保证上述目标交易能够成功上链,上述客户端可以从上述区块链系统中的各个共识节点中为该目标交易重新指定交易提议节点(该交易提议节点可以是除了上述目标共识节点之外的其他共识节点),并将重新指定的交易提议节点的节点标识包含在该目标交易中。
后续,上述客户端可以将包含重新指定的交易提议节点的节点标识的上述目标交易重新发送给上述区块链系统中的各个共识节点,以由各个共识节点提议该目标交易。
在上述实施例中,对于待上链的任意一笔交易而言,客户端可以从区块链系统中的各个共识节点中为这笔交易指定交易提议节点,并将包含该交易提议节点的节点标识的这笔交易发送给该区块链系统中的任意一个共识节点,由该共识节点在确定这笔交易包含的节点标识与该共识节点的节点标识匹配时,将这笔交易添加到由该共识节点提议的交易列表中,并发起针对该交易列表的共识处理;在该交易列表共识完成后,该共识节点可以执行该交易列表中的交易,并收取该交易列表中包含的节点标识与该共识节点的节点标识匹配的交易对应的交易手续费。
采用这种方式,一方面,一笔交易实际上只会包含在为这笔交易指定的交易提议节点提议的交易列表中,由区块链系统中的各个共识节点对该交易列表进行共识处理,由此可以避免出现多个共识节点成功提议了相同的交易的情况,从而可以降低不同的共识节点提议相同的交易的概率,也就可以降低共识过程中的交易重复率,减少共识过程中的资源浪费,并且可以避免共识完成后的区块中包含重复的交易,解决同一笔交易被多次执行的问题。此外,无需引入复杂的加密机制,因此可以减少区块链系统的整体性能的开销;
另一方面,如果客户端没有为某笔交易指定交易提议节点,则可能导致多个共识节点都成功提议了这笔交易,但是由于这笔交易不是包含的节点标识与自身的节点标识匹配的交易,这多个共识节点就无法收取到与这笔交易对应的交易手续费,由此可以降低共识节点提议不包含节点标识的交易的意愿,从而可以促使客户端为每笔交易指定交易提议节点,以保证这笔交易能够及时上链,这样可以进一步地避免不同的共识节点提议相同的交易,有效地降低共识过程中的交易重复率。
请参考图5,图5是本申请一示例性实施例示出的另一种区块链系统中的交易提议方法的流程图。
本申请提供一种区块链系统中的交易提议方法的实施例,在本实施例中,该区块链系统可以包括多个具有交易提议权限的共识节点。在这种情况下,该区块链系统中的交易提议方法可以应用于所述区块链系统中具有交易提议权限的任一目标共识节点。
如图5所示,上述区块链系统中的交易提议方法具体可以包括:
步骤502:接收由客户端发送的交易,并将所述交易添加到由所述目标共识节点提议的交易列表;其中,所述交易列表中的至少部分交易包含由客户端从所述区块链系统中的各个共识节点中为所述至少部分交易指定的交易提议节点的节点标识。
如前所述,与区块链系统建立了连接的客户端可以构造一笔交易,并将这笔交易发布至该区块链,即将这笔交易发送给该区块链系统中的所有共识节点,由所有共识节点对这笔交易进行共识,并在共识完成后执行这笔交易,从而可以将这笔交易及执行结果在区块链中进行持久化存证。
在本实施例中,由于上述区块链系统可以包括多个具有交易提议权限的共识节点,而这些共识节点都具备提议交易,尝试构造区块的能力,对于作为这些共识节点中的任意一个的上述目标共识节点而言,与该区块链系统建立了连接的客户端可以通过广播的方式,将交易发送给该目标共识节点,以触发该目标共识节点提议该交易,尝试构造区块。
具体地,上述客户端可以获取待上链的任意一笔交易,并将这笔交易发送给上述目标共识节点。在实际的应用中,这笔交易可以是由该客户端自身构造的交易,也可以是该客户端接收到的已经构造好的交易,本申请对此不作限制。
与之相应地,上述目标共识节点可以接收上述客户端发送的任意一笔交易,从而可以提议这笔交易。
上述客户端在将待上链的任意一笔交易发送给上述目标共识节点之前,可以在这笔交易中添加由该客户端从上述区块链系统中的各个共识节点中为这笔交易指定的交易提议节点的节点标识。其中,为这笔交易指定的交易提议节点,即为具有这笔交易的交易提议权限的共识节点,而除了该交易提议节点之外的其他共识节点则不具有这笔交易的交易提议权限;也即,只有由该交易提议节点来提议这笔交易被认为是有效的,而由除了该交易提议节点之外的其他共识节点来提议这笔交易则被认为是无效的。
因此,上述目标共识节点接收到的上述客户端发送的任意一笔交易中,可以包含由该客户端从上述区块链系统中的各个共识节点中为这笔交易指定的交易提议节点的节点标识。
在实际的应用中,对于上述区块链系统中的任意一个共识节点而言,该共识节点的节点标识可以是能够唯一识别出该共识节点的标志。以如图2所示的区块链系统为例,该区块链系统中作为副本0的共识节点的节点标识可以是0,作为副本1的共识节点的节点标识可以是1,以此类推。
对于上述目标共识节点接收到的上述客户端发送的任意一笔交易而言,该目标共识节点可以提议这笔交易。
具体地,上述目标共识节点可以将上述交易添加到由该目标共识节点自身提议的交易列表中。
需要说明的是,客户端也有可能将未指定交易提议节点的一笔交易发送给了上述目标共识节点,即这笔交易可能不包含节点标识(不包含与节点标识对应的字段,或者与节点标识对应的字段为空)。在这种情况下,由该目标共识节点自身提议的上述交易列表中可能有一部分交易包含节点标识,而另一部分交易则不包含节点标识。
例如,假设上述目标共识节点的节点标识为1,该目标共识节点发送的上述交易列表包含交易1、交易2、交易3,其中,交易1包含的节点标识为1,交易2不包含节点标识,交易3包含的节点标识为2,则由该目标共识节点自身提议的上述交易列表中所包含的交易1、交易3均为包含节点标识的交易,而所包含的交易2则为不包含节点标识的交易。
步骤504:发起针对所述交易列表的共识处理。
在本实施例中,上述目标共识节点可以进一步地将由该目标共识节点自身提议的上述交易列表发送给上述区块链系统中的其他共识节点(即该区块链系统中除了该目标共识节点之外的共识节点),以发起针对该交易列表的共识处理。对于该区块链系统中除了该目标共识节点之外的任意一个共识节点而言,该共识节点可以针对该交易列表进行共识处理。
针对上述交易列表的共识处理,具体可以包括通过运行上述区块链系统所采用的共识协议,使得该区块链系统中的所有共识节点可以对该交易列表中的交易进行共识,以将该交易列表中的交易包含在区块中,并且保证各个共识节点对各个区块包含的交易在内容和顺序上达成一致。
步骤506:响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取与所述交易列表中的交易对应的交易手续费;其中,如果所述交易包含的节点标识与所述目标共识节点的节点标识匹配,则收取到的交易手续费为与所述交易对应的全额交易手续费;如果所述交易包含的节点标识与所述目标共识节点的节点标识不匹配,则收取到的交易手续费为与所述交易对应的部分交易手续费。
在本实施例中,上述目标共识节点在针对上述交易列表的共识处理通过的情况下,可以认为该交易列表共识成功,即本轮共识完成。
如前所述,在本轮共识完成后,区块链系统中的各个共识节点可以按照顺序执行本轮共识的区块中所包含的交易,并在确认各个共识节点的交易执行结果一致的情况下,完成该区块的最终化。
上述目标共识节点可以响应于针对上述交易列表的共识处理通过,即在本轮共识完成后,执行该交易列表中的各笔交易,并且对于该交易列表中的任意一笔交易而言,该目标共识节点还可以收取与这笔交易对应的交易手续费,作为将这笔交易及其执行结果存证在区块链中的手续费。
在实际的应用中,上述目标共识节点具体可以收取与包含节点标识的交易对应的交易手续费,而针对不包含节点标识的交易,则可以不收取与其对应的交易手续费。
需要说明的是,对于上述交易列表中包含的节点标识与上述目标共识节点的节点标识匹配的任意一笔交易而言,该目标共识节点可以收取到与这笔交易对应的全额的交易手续费;然而,对于上述交易列表中包含的节点标识与上述目标共识节点的节点标识不匹配的任意一笔交易而言,该目标共识节点则只能收取到与这笔交易对应的交易手续费中的一部分(例如:该交易手续费的50%)。
在极限情况下,对于上述交易列表中包含的节点标识与上述目标共识节点的节点标识不匹配的任意一笔交易而言,该目标共识节点收取到的与这笔交易对应的交易手续费可以为0(即该交易手续费的0%)。
对于区块链而言,区块高度是连接在链式区块结构上的区块的个数。但是,对于区块链中的任意一个区块而言,该区块的区块高度可以作为该区块的标识符。区块通常被认为有两个标识符,一个标识符是区块头的哈希值,另一个标识符是区块高度。其中,区块头的哈希值是通过SHA256算法等对区块头进行二次哈希计算而得到的;区块头的哈希值可以唯一标识一个区块,并且区块链系统中的任意一个节点通过对区块头进行哈希计算都可以独立地获取该区块头的哈希值。区块高度指的是区块在区块链中的位置;区块高度并不是唯一标识一个区块的标识符,虽然一个的区块总是会有一个明确且固定的区块高度,但是一个区块高度并不总是识别唯一的一个区块,两个或两个以上的区块可能有相同的区块高度,即在区块链中争夺同一位置。
区块链中的各个区块通常是按照时间顺序连接在链式区块结构上的,即链式区块结构实际上是一条在时间上有序的链条。在这种情况下,区块高度通常被设定为递增的数值。例如,假设最终化完成的上一区块的区块高度为h,则要共识的下一区块的区块高度为h+1;以此类推。
在示出的一种实施方式中,对于上述客户端获取到的待上链的某笔交易而言,可以由该客户端在这笔交易中添加为这笔交易指定的生效区块高度。其中,该生效区块高度可以用于对共识完成的、包含这笔交易的区块进行限制;如果该区块的区块高度不大于(即小于或等于)该生效区块高度,则认为该区块中包含的这笔交易是有效的,可以执行这笔交易;如果该区块的区块高度大于该生效区块高度,则认为该区块中包含的这笔交易是无效的,不再执行这笔交易。
因此,对于上述交易列表中的任意一笔交易(可称为目标交易)而言,该目标交易还可以包含由上述客户端为该目标交易指定的生效区块高度。
在上述情况下,上述目标共识节点在本轮共识完成后,可以先确定包含上述目标交易的区块的区块高度是否不大于该目标交易包含的生效区块高度;由于此时该生效区块高度可以用于对共识完成的、包含该目标交易的区块进行限制,如果该区块的区块高度不大于该生效区块高度,则可以执行该目标交易,并且还可以收取与该目标交易对应的交易手续费,作为将该目标交易及其执行结果存证在区块链中的手续费。
同理,在示出的另一种实施方式中,对于上述客户端获取到的待上链的某笔交易而言,可以由该客户端在这笔交易中添加为这笔交易指定的生效时刻。其中,该生效时刻可以用于对共识完成的、包含这笔交易的区块进行限制;如果该区块的时间戳(例如:区块头中的时间戳)对应的时刻不晚于(即早于或等于)该生效时刻,则认为该区块中包含的这笔交易是有效的,可以执行这笔交易;如果该区块的时间戳对应的时刻晚于该生效时刻,则认为该区块中包含的这笔交易是无效的,不再执行这笔交易。在实际的应用中,这笔交易包含的生效时刻的具体形式可以是与该生效时刻对应的时间戳。
因此,对于上述交易列表中的任意一笔交易(可称为目标交易)而言,该目标交易还可以包含由上述客户端为该目标交易指定的生效时刻。
在上述情况下,上述目标共识节点在本轮共识完成后,可以先确定包含上述目标交易的区块的时间戳对应的时刻是否不晚于该目标交易包含的生效时刻;由于此时该生效时刻可以用于对共识完成的、包含该目标交易的区块进行限制,如果该区块的时间戳对应的时刻不晚于该生效时刻,则可以执行该目标交易,并且还可以收取与该目标交易对应的交易手续费,作为将该目标交易及其执行结果存证在区块链中的手续费。
通过上述方式,如果共识节点未能及时地提议某笔交易,则无法获得与这笔交易对应的交易手续费,由此可以促使共识节点在接收到每笔交易后,及时地提议这笔交易,从而可以保证交易的实时性。
在示出的一种实施方式中,对于上述交易列表中包含的节点标识与上述目标共识节点的节点标识匹配的任意一笔交易(可称为目标交易)而言,上述目标共识节点在执行该目标交易,并收取与该目标交易对应的交易手续费时,具体可以执行该目标交易,并检测该目标交易是否执行成功,从而可以响应于该目标交易执行成功,收取与该目标交易对应的交易手续费。
具体地,可以对上述区块链中的交易的收据(Receipt)进行监听。其中,一笔交易的收据通常包含这笔交易的执行结果。通过对交易的收据进行监听,可以获取上述目标交易的收据,并根据该目标交易的收据中的内容,确定该目标交易是否执行成功。
通过在确认某笔交易执行成功的情况下,再收取与这笔交易对应的交易手续费,可以避免由于针对未能成功执行的交易进行交易手续费的收取,而导致的交易发起方的损失。此外,也可以避免后续需要针对未能成功执行的交易进行交易手续费的退还,从而可以简化实际的交易手续费收取流程。
在示出的一种实施方式中,在上述目标交易执行成功的情况下,该目标交易的执行结果可以包含与该目标交易对应的交易手续费。上述目标共识节点在收取与该目标交易对应的交易手续费时,具体可以收取该目标交易的执行结果包含的与该目标交易对应的交易手续费。例如,该目标共识节点可以调用上述区块链的原生代码(也称为链平台代码),收取该目标交易的执行结果包含的与该目标交易对应的交易手续费;具体地,可以先由上述客户端将该交易手续费转给上述区块链系统,再在该目标共识节点调用该区块链的原生代码时,由该区块链系统将该交易手续费用转给该目标共识节点。
在示出的一种实施方式中,在上述目标交易执行成功的情况下,上述目标共识节点可以生成一笔包含与该目标交易对应的交易手续费的交易,并将该交易添加到由该目标共识节点提议的下一个交易列表中,作为下一个交易列表中的首笔交易。后续,该目标共识节点可以将下一个交易列表发送给其他共识节点,以发起针对下一个交易列表的共识处理。在实际的应用中,也可以根据包含的节点标识对下一个交易列表中的交易进行筛选。而在针对下一个交易列表的共识处理通过后,则可以执行下一个交易列表中的首笔交易,收取这笔交易包含的与该目标交易对应的交易手续费。
在示出的一种实施方式中,对于上述交易列表中包含的节点标识与上述目标共识节点的节点标识匹配的任意一笔交易(可称为目标交易)而言,可以将与该目标交易对应的交易手续费包含在该目标交易中。在这种情况下,上述目标共识节点在收取与该目标交易对应的交易手续费时,具体可以直接收取该目标交易中所包含的交易手续费。此时,该目标交易中所包含的交易手续费,即为与该目标交易对应的交易手续费。
需要说明的是,可以采用货币、房产、股票、贷款合同、票据、应收账款等实体资产来支付交易手续费,也可以采用数字资产来支付交易手续费,本申请对此不作限制。
具体地,上述客户端在发送上述目标交易之前,可以响应于针对该目标交易对应的交易手续费的支付处理完成,在该目标交易中添加与该目标交易对应的交易手续费。
通过将与某笔交易对应的交易手续费包含在这笔交易本身中,使得在收取与这笔交易对应的手续费时,可以直接收取这笔交易中所包含的交易手续费,因此可以避免执行繁琐的交易手续费收取步骤,从而可以简化实际的交易手续费收取流程。
在可编程的区块链中,通常可以支持将现实世界中的非货币属性的实体资产,转化为区块链上的数字资产。而将上述实体资产转化为上述数字资产,通常是指将该实体资产与区块链上的数字资产进行“锚定”,作为这些虚拟资产的价值支撑,进而在区块链上产生与实体资产的价值匹配,且能够在区块链上的区块链账户之间进行流通的数字资产的过程。
接入区块链的用户可以在区块链上创建一笔与现实世界的非货币属性的实体资产价值匹配的数字资产,在区块链上进行流通。例如,用户可以将持有的房产、股票、贷款合同、票据、应收账款等非货币属性的实体资产,转换为价值匹配的数字资产在区块链上流通。
通常,将区块链中的账户(Account)划分为外部账户和合约账户两类。其中,外部账户就是由用户直接控制的账户,也称为用户账户;而合约账户则是由用户通过外部账户创建的,包含合约代码的账户(即智能合约)。
对于区块链中的账户而言,通常会通过一个结构体,来维护账户的账户状态。当区块中的交易被执行后,区块链中与该交易相关的账户的状态通常也会发生变化。
在一个例子中,账户的结构体通常包括Balance,Nonce,Code和Storage等字段。
在区块链上创建数字资产时,可以对区块链支持的账户类型进行扩展,在区块链支持的账户类型的基础上,再扩展出一种资产账户(也称为资产对象)。例如,可以在区块链支持的外部账户、合约账户的基础上,再扩展出一种资产账户;扩展出的该资产账户,可以作为持有与现实世界中的非货币属性的实体资产价值锚定的数字资产的媒介。
也即,接入区块链的用户除了可以在区块链上完成用户账户、智能合约的创建之外,还可以在区块链上创建一个资产账户,用来持有一笔与现实世界的非货币属性的实体资产价值匹配的数字资产,在区块链上进行流通。
对于上述资产账户而言,具体也可以通过一个结构体,来维护账户的账户状态。上述资产账户的结构体所包含的内容,可以与以上描述的结构体相同,当然也可以基于实际的需求进行设计。
在一个例子中,上述资产账户的结构体也可以包括以上描述的Balance,Nonce,Code和Storage等字段。
需要说明的是,Balance字段通常用于维护账户目前的账户余额;而对于上述资产账户而言,由于其锚定的实体资产,通常可能是无法基于余额进行计数的非余额类资产,因此可以对Balance字段的含义进行扩展,不再表示账户的“余额”,而是用于维护资产的地址信息。在实际的应用中,Balance字段中可以维护多笔“数字资产”对应的地址信息。
在这种情况下,以上示出的外部账户、合约账户和资产账户,均可以通过在Balance字段中,添加需要持有的“数字资产”的地址信息,来持有这笔数字资产。即除了外部账户和合约账户以外,资产账户本身也可以持有数字资产。
在示出的一种实施方式中,可以不直接将与上述目标交易对应的交易手续费包含在该目标交易中,而是将与该交易手续费对应的数额包含在该目标交易中。在这种情况下,上述目标共识节点在收取与该目标交易对应的交易手续费时,具体可以按照该目标交易中所包含的数额,从与上述客户端对应的区块链账户持有的数字资产中,向与该目标共识节点对应的区块链账户中转移数字资产。此时,所转移的数字资产的数额,即为该目标交易中所包含的数额。
通过将与某笔交易手续费对应的数额包含在交易本身中,使得在收取这笔交易手续费时,可以按照该数额进行数字资产的转移,由此可以避免对用于支付的资产类型的限制,即可以采用多种类型的资产支付交易手续费。
或者,在示出的另一种实施方式中,可以不直接将与上述目标交易对应的交易手续费包含在该目标交易中,而是将作为该交易手续费的价值凭证包含在该目标交易中。在这种情况下,上述目标共识节点在收取与该目标交易对应的交易手续费时,具体可以将该目标交易中包含的价值凭证添加到与该目标共识节点对应的区块链账户中进行维护。
其中,价值凭证可以是用来表示一定价值的凭证,例如:对于实体资产而言,该价值凭证可以是与一定数额的货币对应的存单、房产的相关证件等;对于数字资产而言,该价值凭证可以是数字资产的地址信息等。
在示出的一种实施方式中,上述价值凭证中可以包含在上述区块链上发布的数字资产的地址信息。在这种情况下,上述目标共识节点在将上述目标交易中包含的该价值凭证添加到与该目标共识节点对应的区块链账户中进行维护时,具体可以将该价值凭证中的地址信息添加到与该目标共识节点对应的区块链账户中进行维护。
在示出的一种实施方式中,如果包含上述目标交易的区块的区块高度大于上述生效区块高度,或者包含上述目标交易的区块的时间戳对应的时刻晚于上述生效时刻,则可以不再执行该目标交易。由于未执行该目标交易,就可以将与该目标交易对应的交易手续费退回给上述客户端,即不收取与该目标交易对应的交易手续费,以避免不合理的收费。
例如,在通过执行包含与上述目标交易对应的交易手续费的交易来收取与该目标交易对应的交易手续费的情况下,可以不再生成包含与该目标交易对应的交易手续费的交易,并将预先由上述客户端转给上述区块链系统的交易手续费退回给该客户端。或者,在上述目标交易包含与该目标交易对应的交易手续费的情况下,如果未执行该目标交易,则可以将该目标交易中所包含的交易手续费退回给上述客户端。
在示出的一种实施方式中,如果包含上述目标交易的区块的区块高度大于上述生效区块高度,或者包含上述目标交易的区块的时间戳对应的时刻晚于上述生效时刻,则可以将该目标交易作为不可执行交易从该区块中移除。
或者,如果包含上述目标交易的区块的区块高度大于上述生效区块高度,或者包含上述目标交易的区块的时间戳对应的时刻晚于上述生效时刻,则可以将该区块中所包含的该目标交易标记为不可执行交易。
通过上述方式,如果共识节点未能及时地提议某笔交易,可以将相应的区块中所包含的这笔交易移除,或者标记为不可执行交易,以避免执行这笔交易。
在示出的一种实施方式中,如果上述目标交易未包含在区块高度不大于上述生效区块高度的任一区块中,或者上述目标交易未包含在时间戳对应的时刻不晚于上述生效时刻的任一区块中,则说明上述目标共识节点未能及时地提议该目标交易。
在上述情况下,为了保证上述目标交易能够成功上链,上述客户端可以从上述区块链系统中的各个共识节点中为该目标交易重新指定交易提议节点(该交易提议节点可以是除了上述目标共识节点之外的其他共识节点),并将重新指定的交易提议节点的节点标识包含在该目标交易中。
后续,上述客户端可以将包含重新指定的交易提议节点的节点标识的上述目标交易重新发送给上述区块链系统中的各个共识节点,以由各个共识节点提议该目标交易。
如图5所示的实施例中部分步骤的具体实现,可以参考如图4所示的实施例,本申请在此不再赘述。
在上述实施例中,区块链系统中的任意一个共识节点可以接收客户端发送的任意一笔交易,并将这笔交易添加到由该共识节点提议的交易列表中,以提议这笔交易,因此由该共识节点提议的交易列表中,至少部分交易包含由客户端从该区块链系统中的各个共识节点中为交易指定的交易提议节点的节点标识;该共识节点可以发起针对该交易列表的共识处理,而在该交易列表共识完成后,该共识节点可以执行该交易列表中的交易,并收取该交易列表中包含的节点标识与该共识节点的节点标识匹配的交易对应的全额的交易手续费,以及收取该交易列表中包含的节点标识与该共识节点的节点标识不匹配的交易对应的交易手续费中的一部分。
采用这种方式,一方面,对于由客户端指定了交易提议节点的某笔交易而言,虽然区块链系统中的各个共识节点都可以提议这笔交易,即可能有多个共识节点都成功提议了这笔交易,但是只有为这笔交易指定的交易提议节点可以收取到与这笔交易对应的全额的交易手续费,而其他共识节点则只能收取到与这笔交易对应的交易手续费中的一部分,由此可以降低共识节点提议包含的节点标识与自身的节点标识不匹配的交易的意愿,从而可以降低不同的共识节点提议相同的交易的概率,也就可以降低共识过程中的交易重复率,减少共识过程中的资源浪费,并且可以避免共识完成后的区块中包含重复的交易,解决同一笔交易被多次执行的问题。此外,无需引入复杂的加密机制,因此可以减少区块链系统的整体性能的开销;
另一方面,如果客户端没有为某笔交易指定交易提议节点,则可能导致多个共识节点都成功提议了这笔交易,但是由于这笔交易不是包含的节点标识与自身的节点标识匹配的交易,这多个共识节点就无法收取到与这笔交易对应的交易手续费,由此可以降低共识节点提议不包含节点标识的交易的意愿,从而可以促使客户端为每笔交易指定交易提议节点,以保证这笔交易能够及时上链,这样可以进一步地避免不同的共识节点提议相同的交易,有效地降低共识过程中的交易重复率;
再一方面,在区块链系统的负载不均衡下,该区块链系统中某些空闲的共识节点也可以利用自身资源去获取少量的交易手续费。
请参考图6,图6是本申请一示例性实施例示出的一种设备的结构示意图。在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括所需要的其他硬件。本申请一个或多个实施例可以基于软件方式来实现,比如由处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行。当然,除了软件实现方式之外,本申请一个或多个实施例并不排除其他实现方式,比如逻辑器件或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑模块,也可以是硬件或逻辑器件。
请参考图7,图7是本申请一示例性实施例示出的一种区块链系统中的共识节点的架构示意图。
本申请还提供一种区块链系统中的共识节点的实施例,在本实施例中,上述区块链系统中的共识节点可以是如图6所示的设备,以实现本申请的技术方案。其中,所述区块链系统包括多个具有交易提议权限的共识节点。
所述共识节点为所述区块链系统中具有交易提议权限的任一目标共识节点,如图7所示,具体可以包括:
接收单元702,接收由客户端发送的交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述交易指定的交易提议节点的节点标识;
验证单元704,验证所述交易包含的节点标识与所述目标共识节点的节点标识是否匹配,如果是,将所述交易添加到由所述目标共识节点提议的交易列表,并发起针对所述交易列表的共识处理;
共识单元706,响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费。
可选地,所述交易列表中包含的节点标识与所述目标共识节点的节点标识匹配的任一目标交易,还包含由所述客户端为所述目标交易指定的生效区块高度;
所述共识单元706:
确定包含所述目标交易的区块的区块高度是否不大于所述生效区块高度,如果是,执行所述目标交易,并收取与所述目标交易对应的交易手续费。
可选地,所述交易列表中包含的节点标识与所述目标共识节点的节点标识匹配的任一目标交易,还包含由所述客户端为所述目标交易指定的生效时刻;
所述共识单元706:
确定包含所述目标交易的区块的时间戳对应的时刻是否不晚于所述生效时刻,如果是,执行所述目标交易,并收取与所述目标交易对应的交易手续费。
可选地,所述共识单元706:
针对所述交易列表中包含的节点标识与所述目标共识节点的节点标识匹配的任一目标交易,执行所述目标交易,并响应于所述目标交易执行成功,收取与所述目标交易对应的交易手续费。
可选地,所述共识单元706:
获取所述目标交易的执行结果;其中,所述执行结果包含与所述目标交易对应的交易手续费;
收取所述执行结果包含的与所述目标交易对应的交易手续费。
可选地,所述共识单元706:
生成包含与所述目标交易对应的交易手续费的交易,并通过执行所述交易,收取所述交易包含的与所述目标交易对应的交易手续费。
可选地,所述交易列表中包含的节点标识与所述目标共识节点的节点标识匹配的任一目标交易,还包含与所述目标交易对应的交易手续费;
所述共识单元706:
收取所述目标交易包含的所述交易手续费。
可选地,所述目标交易包含的所述交易手续费为与所述交易手续费对应的数额;
所述共识单元706:
按照所述目标交易包含的所述数额,从与所述客户端对应的区块链账户持有的数字资产中,向与所述目标共识节点对应的区块链账户中转移数字资产。
可选地,所述目标交易包含的所述交易手续费为作为所述交易手续费的价值凭证;
所述共识单元706:
将所述目标交易包含的所述价值凭证添加到与所述目标共识节点对应的区块链账户中进行维护。
可选地,所述价值凭证包含在所述区块链上发布的数字资产的地址信息;
所述共识单元706:
将所述价值凭证包含的所述地址信息添加到与所述目标共识节点对应的区块链账户中进行维护。
可选地,所述共识单元706还用于:
如果包含所述目标交易的区块的区块高度大于所述生效区块高度,或者包含所述目标交易的区块的时间戳对应的时刻晚于所述生效时刻,不再执行所述目标交易,并将与所述目标交易对应的交易手续费退回给所述客户端。
可选地,所述共识单元706还用于:
如果包含所述目标交易的区块的区块高度大于所述生效区块高度,或者包含所述目标交易的区块的时间戳对应的时刻晚于所述生效时刻,将所述目标交易作为不可执行的交易从所述区块中移除;或者,
如果包含所述目标交易的区块的区块高度大于所述生效区块高度,或者包含所述目标交易的区块的时间戳对应的时刻晚于所述生效时刻,将所述区块包含的所述目标交易标记为不可执行的交易。
可选地,所述接收单元702还用于:
如果所述目标交易未包含在区块高度不大于所述生效区块高度的任一区块中,或者所述目标交易未包含在时间戳对应的时刻不晚于所述生效时刻的任一区块中,重新接收由客户端发送的所述目标交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述目标交易重新指定的交易提议节点的节点标识。
请参考图8,图8是本申请一示例性实施例示出的另一种区块链系统中的共识节点的架构示意图。
本申请还提供一种区块链系统中的共识节点的实施例,本申请还提供一种区块链系统的实施例,在本实施例中,上述区块链系统中的共识节点可以是如图6所示的设备,以实现本申请的技术方案。其中,所述区块链系统包括多个具有交易提议权限的共识节点。
所述共识节点为所述区块链系统中具有交易提议权限的任一目标共识节点,如图8所示,具体可以包括:
接收单元802,接收由客户端发送的交易,并将所述交易添加到由所述目标共识节点提议的交易列表;其中,所述交易列表中的至少部分交易包含由客户端从所述区块链系统中的各个共识节点中为所述至少部分交易指定的交易提议节点的节点标识;
发起单元804,发起针对所述交易列表的共识处理;
共识单元806,响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取与所述交易列表中的交易对应的交易手续费;其中,如果所述交易包含的节点标识与所述目标共识节点的节点标识匹配,则收取到的交易手续费为与所述交易对应的全额交易手续费;如果所述交易包含的节点标识与所述目标共识节点的节点标识不匹配,则收取到的交易手续费为与所述交易对应的部分交易手续费。
可选地,所述交易列表中的任一目标交易还包含由所述客户端为所述目标交易指定的生效区块高度;
所述共识单元806:
确定包含所述目标交易的区块的区块高度是否不大于所述生效区块高度,如果是,执行所述目标交易,并收取与所述目标交易对应的交易手续费。
可选地,所述交易列表中的任一目标交易还包含由所述客户端为所述目标交易指定的生效时刻;
所述共识单元806:
确定包含所述目标交易的区块的时间戳对应的时刻是否不晚于所述生效时刻,如果是,执行所述目标交易,并收取与所述目标交易对应的交易手续费。
可选地,所述共识单元806:
针对所述交易列表中包含的节点标识与所述目标共识节点的节点标识匹配的任一目标交易,执行所述目标交易,并响应于所述目标交易执行成功,收取与所述目标交易对应的交易手续费。
可选地,所述共识单元806:
获取所述目标交易的执行结果;其中,所述执行结果包含与所述目标交易对应的交易手续费;
收取所述执行结果包含的与所述目标交易对应的交易手续费。
可选地,所述共识单元806:
生成包含与所述目标交易对应的交易手续费的交易,并通过执行所述交易,收取所述交易包含的与所述目标交易对应的交易手续费。
可选地,所述交易列表中包含的节点标识与所述目标共识节点的节点标识匹配的任一目标交易,还包含与所述目标交易对应的交易手续费;
所述共识单元806:
收取所述目标交易包含的所述交易手续费。
可选地,所述目标交易包含的所述交易手续费为与所述交易手续费对应的数额;
所述共识单元806:
按照所述目标交易包含的所述数额,从与所述客户端对应的区块链账户持有的数字资产中,向与所述目标共识节点对应的区块链账户中转移数字资产。
可选地,所述目标交易包含的所述交易手续费为作为所述交易手续费的价值凭证;
所述共识单元806:
将所述目标交易包含的所述价值凭证添加到与所述目标共识节点对应的区块链账户中进行维护。
可选地,所述价值凭证包含在所述区块链上发布的数字资产的地址信息;
所述共识单元806:
将所述价值凭证包含的所述地址信息添加到与所述目标共识节点对应的区块链账户中进行维护。
可选地,所述共识单元806还用于:
如果包含所述目标交易的区块的区块高度大于所述生效区块高度,或者包含所述目标交易的区块的时间戳对应的时刻晚于所述生效时刻,不再执行所述目标交易,并将与所述目标交易对应的交易手续费退回给所述客户端。
可选地,所述共识单元806还用于:
如果包含所述目标交易的区块的区块高度大于所述生效区块高度,或者包含所述目标交易的区块的时间戳对应的时刻晚于所述生效时刻,将所述目标交易作为不可执行的交易从所述区块中移除;或者,
如果包含所述目标交易的区块的区块高度大于所述生效区块高度,或者包含所述目标交易的区块的时间戳对应的时刻晚于所述生效时刻,将所述区块包含的所述目标交易标记为不可执行的交易。
可选地,所述接收单元802还用于:
如果所述目标交易未包含在区块高度不大于所述生效区块高度的任一区块中,或者所述目标交易未包含在时间戳对应的时刻不晚于所述生效时刻的任一区块中,重新接收由客户端发送的所述目标交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述目标交易重新指定的交易提议节点的节点标识。
本申请还提供一种区块链系统的实施例,包括多个具有交易提议权限的共识节点,其中:
具有交易提议权限的任一目标共识节点接收由客户端发送的交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述交易指定的交易提议节点的节点标识;
所述目标共识节点验证所述交易包含的节点标识与所述目标共识节点的节点标识是否匹配,如果是,将所述交易添加到由所述目标共识节点提议的交易列表,并发起针对所述交易列表的共识处理;
所述目标共识节点响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费。
本申请还提供一种区块链系统,包括多个具有交易提议权限的共识节点,其中:
具有交易提议权限的任一目标共识节点接收由客户端发送的交易,并将所述交易添加到由所述目标共识节点提议的交易列表;其中,所述交易列表中的至少部分交易包含由客户端从所述区块链系统中的各个共识节点中为所述至少部分交易指定的交易提议节点的节点标识;
所述目标共识节点发起针对所述交易列表的共识处理发起针对所述交易列表的共识处理;
所述目标共识节点响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取与所述交易列表中的交易对应的交易手续费;其中,如果所述交易包含的节点标识与所述目标共识节点的节点标识匹配,则收取到的交易手续费为与所述交易对应的全额交易手续费;如果所述交易包含的节点标识与所述目标共识节点的节点标识不匹配,则收取到的交易手续费为与所述交易对应的部分交易手续费。
在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 (18)
1.一种区块链系统中的交易提议方法,所述区块链系统包括多个具有交易提议权限的共识节点;所述方法应用于所述区块链系统中具有交易提议权限的任一目标共识节点,包括:
接收由客户端发送的交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述交易指定的交易提议节点的节点标识;
验证所述交易包含的节点标识与所述目标共识节点的节点标识是否匹配,如果是,将所述交易添加到由所述目标共识节点提议的交易列表,并发起针对所述交易列表的共识处理;
响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费。
2.根据权利要求1所述的方法,所述交易列表中包含的节点标识与所述目标共识节点的节点标识匹配的任一目标交易,还包含由所述客户端为所述目标交易指定的生效区块高度;
所述执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费,包括:
确定包含所述目标交易的区块的区块高度是否不大于所述生效区块高度,如果是,执行所述目标交易,并收取与所述目标交易对应的交易手续费。
3.根据权利要求1所述的方法,所述交易列表中包含的节点标识与所述目标共识节点的节点标识匹配的任一目标交易,还包含由所述客户端为所述目标交易指定的生效时刻;
所述执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费,包括:
确定包含所述目标交易的区块的时间戳对应的时刻是否不晚于所述生效时刻,如果是,执行所述目标交易,并收取与所述目标交易对应的交易手续费。
4.根据权利要求1所述的方法,所述执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费,包括:
针对所述交易列表中包含的节点标识与所述目标共识节点的节点标识匹配的任一目标交易,执行所述目标交易,并响应于所述目标交易执行成功,收取与所述目标交易对应的交易手续费。
5.根据权利要求4所述的方法,所述收取与所述目标交易对应的交易手续费,包括:
获取所述目标交易的执行结果;其中,所述执行结果包含与所述目标交易对应的交易手续费;
收取所述执行结果包含的与所述目标交易对应的交易手续费。
6.根据权利要求4所述的方法,所述收取与所述目标交易对应的交易手续费,包括:
生成包含与所述目标交易对应的交易手续费的交易,并通过执行所述交易,收取所述交易包含的与所述目标交易对应的交易手续费。
7.根据权利要求1所述的方法,所述交易列表中包含的节点标识与所述目标共识节点的节点标识匹配的任一目标交易,还包含与所述目标交易对应的交易手续费;
所述收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费,包括:
收取所述目标交易包含的所述交易手续费。
8.根据权利要求7所述的方法,所述目标交易包含的所述交易手续费为与所述交易手续费对应的数额;
所述收取所述目标交易包含的所述交易手续费,包括:
按照所述目标交易包含的所述数额,从与所述客户端对应的区块链账户持有的数字资产中,向与所述目标共识节点对应的区块链账户中转移数字资产。
9.根据权利要求7所述的方法,所述目标交易包含的所述交易手续费为作为所述交易手续费的价值凭证;
所述收取所述目标交易包含的所述交易手续费,包括:
将所述目标交易包含的所述价值凭证添加到与所述目标共识节点对应的区块链账户中进行维护。
10.根据权利要求9所述的方法,所述价值凭证包含在所述区块链上发布的数字资产的地址信息;
所述将所述目标交易包含的所述价值凭证添加到与所述目标共识节点对应的区块链账户中进行维护,包括:
将所述价值凭证包含的所述地址信息添加到与所述目标共识节点对应的区块链账户中进行维护。
11.根据权利要求2或3所述的方法,所述方法还包括:
如果包含所述目标交易的区块的区块高度大于所述生效区块高度,或者包含所述目标交易的区块的时间戳对应的时刻晚于所述生效时刻,不再执行所述目标交易,并将所述目标交易包含的所述交易手续费退回给所述客户端。
12.如权利要求11所述的方法,所述方法还包括:
如果包含所述目标交易的区块的区块高度大于所述生效区块高度,或者包含所述目标交易的区块的时间戳对应的时刻晚于所述生效时刻,将所述目标交易作为不可执行的交易从所述区块中移除;或者,
如果包含所述目标交易的区块的区块高度大于所述生效区块高度,或者包含所述目标交易的区块的时间戳对应的时刻晚于所述生效时刻,将所述区块包含的所述目标交易标记为不可执行的交易。
13.根据权利要求2或3所述的方法,所述方法还包括:
如果所述目标交易未包含在区块高度不大于所述生效区块高度的任一区块中,或者所述目标交易未包含在时间戳对应的时刻不晚于所述生效时刻的任一区块中,重新接收由客户端发送的所述目标交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述目标交易重新指定的交易提议节点的节点标识。
14.一种区块链系统中的交易提议方法,所述区块链系统包括多个具有交易提议权限的共识节点;所述方法应用于所述区块链系统中具有交易提议权限的任一目标共识节点,包括:
接收由客户端发送的交易,并将所述交易添加到由所述目标共识节点提议的交易列表;其中,所述交易列表中的至少部分交易包含由客户端从所述区块链系统中的各个共识节点中为所述至少部分交易指定的交易提议节点的节点标识;
发起针对所述交易列表的共识处理;
响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取与所述交易列表中的交易对应的交易手续费;其中,如果所述交易包含的节点标识与所述目标共识节点的节点标识匹配,则收取到的交易手续费为与所述交易对应的全额交易手续费;如果所述交易包含的节点标识与所述目标共识节点的节点标识不匹配,则收取到的交易手续费为与所述交易对应的部分交易手续费。
15.一种区块链系统中的共识节点,所述区块链系统包括多个具有交易提议权限的共识节点;所述共识节点为所述区块链系统中具有交易提议权限的任一目标共识节点,包括:
接收单元,接收由客户端发送的交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述交易指定的交易提议节点的节点标识;
验证单元,验证所述交易包含的节点标识与所述目标共识节点的节点标识是否匹配,如果是,将所述交易添加到由所述目标共识节点提议的交易列表,并发起针对所述交易列表的共识处理;
共识单元,响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费。
16.一种区块链系统中的共识节点,所述区块链系统包括多个具有交易提议权限的共识节点;所述共识节点为所述区块链系统中具有交易提议权限的任一目标共识节点,包括:
接收单元,接收由客户端发送的交易,并将所述交易添加到由所述目标共识节点提议的交易列表;其中,所述交易列表中的至少部分交易包含由客户端从所述区块链系统中的各个共识节点中为所述至少部分交易指定的交易提议节点的节点标识;
发起单元,发起针对所述交易列表的共识处理;
共识单元,响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取与所述交易列表中的交易对应的交易手续费;其中,如果所述交易包含的节点标识与所述目标共识节点的节点标识匹配,则收取到的交易手续费为与所述交易对应的全额交易手续费;如果所述交易包含的节点标识与所述目标共识节点的节点标识不匹配,则收取到的交易手续费为与所述交易对应的部分交易手续费。
17.一种区块链系统,包括多个具有交易提议权限的共识节点,其中:
具有交易提议权限的任一目标共识节点接收由客户端发送的交易;其中,所述交易包含由所述客户端从所述区块链系统中的各个共识节点中为所述交易指定的交易提议节点的节点标识;
所述目标共识节点验证所述交易包含的节点标识与所述目标共识节点的节点标识是否匹配,如果是,将所述交易添加到由所述目标共识节点提议的交易列表,并发起针对所述交易列表的共识处理;
所述目标共识节点响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取包含的节点标识与所述目标共识节点的节点标识匹配的交易对应的交易手续费。
18.一种区块链系统,包括多个具有交易提议权限的共识节点,其中:
具有交易提议权限的任一目标共识节点接收由客户端发送的交易,并将所述交易添加到由所述目标共识节点提议的交易列表;其中,所述交易列表中的至少部分交易包含由客户端从所述区块链系统中的各个共识节点中为所述至少部分交易指定的交易提议节点的节点标识;
所述目标共识节点发起针对所述交易列表的共识处理发起针对所述交易列表的共识处理;
所述目标共识节点响应于针对所述交易列表的共识处理通过,执行所述交易列表中的交易,并收取与所述交易列表中的交易对应的交易手续费;其中,如果所述交易包含的节点标识与所述目标共识节点的节点标识匹配,则收取到的交易手续费为与所述交易对应的全额交易手续费;如果所述交易包含的节点标识与所述目标共识节点的节点标识不匹配,则收取到的交易手续费为与所述交易对应的部分交易手续费。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310664502.3A CN116823463A (zh) | 2023-06-06 | 2023-06-06 | 区块链系统中的交易提议方法、共识节点和区块链系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310664502.3A CN116823463A (zh) | 2023-06-06 | 2023-06-06 | 区块链系统中的交易提议方法、共识节点和区块链系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116823463A true CN116823463A (zh) | 2023-09-29 |
Family
ID=88128514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310664502.3A Pending CN116823463A (zh) | 2023-06-06 | 2023-06-06 | 区块链系统中的交易提议方法、共识节点和区块链系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116823463A (zh) |
-
2023
- 2023-06-06 CN CN202310664502.3A patent/CN116823463A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107169865B (zh) | 基于区块链技术的资产数据处理系统 | |
CN109493223B (zh) | 一种记账方法及装置 | |
CN113570466B (zh) | 一种交易数据处理方法、装置以及可读存储介质 | |
CN113610531B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN114553434B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN114584312B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113609515B (zh) | 一种共识方法、区块链系统 | |
CN113630258B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113761071B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN114710507B (zh) | 一种共识方法、区块链节点、介质和共识节点 | |
WO2023231337A1 (zh) | 在区块链中执行交易的方法、区块链的主节点和从节点 | |
WO2023056966A1 (zh) | 共识方法、区块链系统和共识节点 | |
CN114679457A (zh) | 一种区块链中的节点分组方法及区块链节点 | |
CN114726517A (zh) | 一种区块链上产生随机数种子的方法、系统和共识节点 | |
CN114884652A (zh) | 一种区块链上产生随机数种子的方法、系统和共识节点 | |
CN116823463A (zh) | 区块链系统中的交易提议方法、共识节点和区块链系统 | |
CN116823466A (zh) | 区块链系统中的交易提议方法、共识节点和区块链系统 | |
CN116823465A (zh) | 区块链系统中的交易提议方法、共识节点和区块链系统 | |
CN116366666A (zh) | 区块链系统中的链状态更新方法和区块链节点 | |
CN116484417A (zh) | 区块链系统中的交易提议方法、共识节点和区块链系统 | |
CN116846907A (zh) | 一种共识方法、区块链节点 | |
CN116527694A (zh) | 一种区块链系统中的共识方法和共识节点、区块链系统 | |
CN116846912A (zh) | Pbft算法中的视图切换方法、共识节点和区块链系统 | |
CN116846906A (zh) | 一种共识方法、区块链节点 | |
CN115174572B (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 |