CN112070501B - 一种区块链交易发起、验证方法及系统 - Google Patents
一种区块链交易发起、验证方法及系统 Download PDFInfo
- Publication number
- CN112070501B CN112070501B CN202011247837.8A CN202011247837A CN112070501B CN 112070501 B CN112070501 B CN 112070501B CN 202011247837 A CN202011247837 A CN 202011247837A CN 112070501 B CN112070501 B CN 112070501B
- Authority
- CN
- China
- Prior art keywords
- transaction
- hash value
- random factor
- user
- transaction data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- 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
-
- 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/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Abstract
本说明书实施例公开了一种区块链交易发起、验证方法及系统。对于固定的交易内容,用户端发起以交易哈希值为标识的第一交易,第一交易包括交易内容和第一时间戳,所述交易哈希值为变色龙哈希函数以第一交易数据、第一随机因子和用户的公钥为输入时的输出。用户端确认第一交易上链失败后,至少基于第二交易数据和用户的私钥计算第二随机因子,并将以所述交易哈希值为标识的第二交易发送至所述区块链网络,第二交易包括第二交易数据、所述交易哈希值和第二随机因子,第二交易数据包括所述交易内容和第二时间戳。其中,第二随机因子使得所述变色龙哈希函数以第二交易数据、第二随机因子和所述用户的公钥为输入时的输出等于所述交易哈希值。
Description
技术领域
本说明书涉及信息技术领域,特别涉及一种区块链交易发起、验证方法及系统。
背景技术
在区块链系统中,用户端发起的交易最终未必会被区块链节点执行(也称作上链失败)。用户端重新发起的交易不仅包含固定的交易内容,还包含修改过的交易时间戳,会出现固定的交易内容产生不同的交易哈希值的问题,对用户造成困扰。
有鉴于此,希望提供一种修改交易时间戳后仍能保持交易哈希值不变的方案。
发明内容
本说明书实施例之一提供一种区块链交易发起方法。所述方法包括:获得第一交易数据,其中,所述第一交易数据包括交易内容和第一时间戳;获得第一随机因子;获得交易哈希值,并将以所述交易哈希值为标识的第一交易发送至区块链网络,其中,所述交易哈希值为变色龙哈希函数以将所述第一交易数据、所述第一随机因子和用户的公钥为输入时的输出,所述第一交易包括所述第一交易数据、所述交易哈希值和所述第一随机因子;确认所述第一交易的上链结果,若所述第一交易上链失败,则:获得第二交易数据,所述第二交易数据包括所述交易内容和第二时间戳;至少基于所述第二交易数据和所述用户的私钥计算第二随机因子,并将以所述交易哈希值为标识的第二交易发送至所述区块链网络,其中,所述第二随机因子使得所述变色龙哈希函数以所述第二交易数据、所述第二随机因子和所述公钥为输入时的输出等于所述交易哈希值,所述第二交易包括所述第二交易数据、所述交易哈希值和所述第二随机因子。
本说明书实施例之一提供一种区块链交易发起系统。所述系统包括:第一交易数据获得模块,用于获得第一交易数据,其中,所述第一交易数据包括交易内容和第一时间戳;第一随机因子获得模块,用于获得第一随机因子;交易哈希值获得模块,用于获得交易哈希值,并将以所述交易哈希值为标识的第一交易发送至区块链网络,其中,所述交易哈希值为变色龙哈希函数以将所述第一交易数据、所述第一随机因子和用户的公钥为输入时的输出,所述第一交易包括所述第一交易数据、所述交易哈希值和所述第一随机因子;交易补偿上链模块,用于确认所述第一交易的上链结果,若所述第一交易上链失败,则:获得第二交易数据,所述第二交易数据包括所述交易内容和第二时间戳;至少基于所述第二交易数据和所述用户的私钥计算第二随机因子,并将以所述交易哈希值为标识的第二交易发送至所述区块链网络,其中,所述第二随机因子使得所述变色龙哈希函数以所述第二交易数据、所述第二随机因子和所述公钥为输入时的输出等于所述交易哈希值,所述第二交易包括所述第二交易数据、所述交易哈希值和所述第二随机因子。
本说明书实施例之一提供一种区块链交易发起装置。所述装置包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如本说明书任一实施例所述的区块链交易发起方法。
本说明书实施例之一提供一种区块链交易验证方法。所述方法包括:获得目标用户通过用户端发起的交易,所述交易包括交易数据、交易哈希值和随机因子;获取所述目标用户的公钥;将所述交易数据、所述随机因子和所述公钥输入变色龙哈希函数,并比较所述变色龙哈希函数的输出和所述交易哈希值;基于比较结果确定交易验证结果。
本说明书实施例之一提供一种区块链交易验证系统。所述系统包括:交易获得模块,用于获得目标用户通过用户端发起的交易,所述交易包括交易数据、交易哈希值和随机因子;公钥获取模块,用于获取所述目标用户的公钥;计算模块,用于将所述交易数据、所述随机因子和所述公钥输入变色龙哈希函数,并比较所述变色龙哈希函数的输出和所述交易哈希值;验证结果确定模块,用于基于比较结果确定交易验证结果。
本说明书实施例之一提供一种区块链交易验证装置。所述装置包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如本说明书任一实施例所述的区块链交易验证方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的区块链系统的应用场景示意图;
图2是根据本说明书一些实施例所示的区块链交易发起方法的示例性流程图;
图3是根据本说明书一些实施例所示的区块链交易验证方法的示例性流程图;
图4是根据本说明书一些实施例所示的区块链交易发起系统的示例性模块图;
图5是根据本说明书一些实施例所示的区块链交易验证系统的示例性模块图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
图1是根据本说明书一些实施例所示的区块链系统的应用场景示意图。如图1所示,区块链系统100可以包括用户端110、区块链网络120和网络130。其中,区块链网络120可以包括多个区块链节点,例如,图1中的节点120-1、节点120-2、节点120-3、...、节点120-n。
用户端110可以是使用区块链服务的终端,其可以通过网络130链接至区块链网络120中的某一节点。用户端110可以发起交易,即生成交易并将生成的交易发送至区块链网络120,以使交易在区块链网络120被广播。
交易可以用于记录各类事件和/或数据。在一些实施例中,交易记录的事件可以包括表征新节点的加入、节点的退出、转账等中的一种或多种。在一些实施例中,交易记录的数据可以包括医疗信息、电子合同、电子凭据、电子订单、数字指纹等中的一种或多种。
期望的代码可以通过交易触发执行,也可称作交易的执行,区块链节点可以是交易的执行者。仅作为示例,用于记录转账行为的交易可以触发对转账双方账户余额的更新,用于存证数据的交易可以触发将数据写入区块链数据,用于查询数据的交易可以触发对区块链数据的查询,等等。
由于种种原因,用户端110发起的交易最终未必会被区块链节点执行(也称作上链失败),包含交易从未被区块链节点执行过,以及交易被执行后又被回滚(即节点将数据从交易执行后的状态恢复至交易执行前的状态)的情况。
下面示例一些交易上链失败的具体情况。
在一些实施例中,为了达到较高的上链吞吐量,区块链系统100可以采用收单模式。收单模式下,节点可以对陆续收到的交易进行排队,并依次处理队列中的交易。共识通过后,节点可将交易打包进区块,即出块。
其中,打包进区块的交易可以从队列中筛选获得。通常,区块链系统100会有防止交易重放的机制,即避免同一交易被重复接收并执行。下面示例一些防止交易重放的机制。
在一些机制中,用户可利用其账户发起交易,账户与公私钥对关联,其中账户公钥可以与账户标识关联。在一些实施例中,账户发起的交易可以包括该账户的标识(也可称作账户地址)和关联于该账户的交易编号,以区分特定账户发起的不同交易。基于此,参与共识的节点可以先检查接收到的交易中的上述字段,以确定是否重复接收到特定账户发起的特定交易。若否,说明是初次接收到特定账户发起的特定交易,则可执行该交易。若是,说明该交易已经被执行过,则可拒绝执行该交易。
在又一些机制中,参与共识的节点可以将接收到的交易与其他交易进行整体比较,即判断两个交易是否相同。若否,说明是初次接收到特定账户发起的特定交易,则可执行该交易。若是,说明该交易已经被执行过,则可拒绝执行该交易以防止交易重放。
在上述机制中,无论是将接收到的任一交易与其他交易进行部分比较还是整体比较,若将全部的交易放在一起比较,则处理效率会十分低下。
有鉴于此,收单模式下节点处理队列中的交易时,可以基于交易中的时间戳判断该交易是否产生于设定的有效时间段内。若是,则认为该交易有效,进而对该交易进行必要的验证(如基于队列中的有效交易对该交易进行防重放验证),以及基于该交易出块并执行该交易。否则,认为该交易无效,进而可拒绝执行该交易,也不会基于该交易出块。
在一些实施例中,用户发起的交易可包含利用该用户的私钥对交易的部分字段组成的签名消息的摘要(哈希值)生成的数字签名。相应地,节点在处理接收到的交易(记为交易T)时,还可以先利用与交易中的账户(所属用户记为用户A)标识关联的公钥验证数字签名(即验签),以确认接收到的交易的来源和完整性。若验签通过,则说明交易T确实来自于用户A且未经篡改。若验签未通过,则不会继续处理交易T。
在一些实施例中,节点在执行多个交易的过程中,若发现两个交易触发对同一项数据(例如,同一账户的余额)的更新,则可回滚在后执行的交易。
确认交易上链失败后,用户端110可以重新发起一个与上链失败的交易部分相同的交易。在一些实施例中,用户端可以基于交易标识(如交易哈希值)向节点查询相应的交易,若查询到相应的交易,则说明该交易上链成功了,节点可确认该交易上链成功了。若未查询到相应的交易,则说明该交易上链失败了。在一些实施例中,接收到交易的节点经过一段时间的处理后,可向用户端110返回指示该交易上链成功/失败的交易上链结果。
可以理解,重新发起的交易与上链失败的交易具有不同的时间戳,这样会导致即使这两个交易具有相同的交易内容,但是会因为时间戳的不同产生不同的哈希值。其中,交易包括交易数据,交易数据可包括交易内容和时间戳,交易哈希值可指以交易数据为明文的哈希值。在一些实施例中,交易还可以包括交易哈希值。应当理解,哈希冲突(同哈希值但不同明文)的概率是极低的(可以忽略),所以通常认为哈希值与明文是一一对应的。
交易内容相同但交易哈希值不同导致一些问题。例如,为了对用户保持友好,用户端110发起交易后可以把交易哈希值作为交易标识返回给用户(例如,在用户图形界面显示交易哈希值)。用户可基于交易哈希值进行查询,即用户端基于交易哈希值向节点查询相应的交易。若该交易上链失败了,则用户端110是无法查询到该交易的。相反地,若该交易上链成功了,则用户端110是可以查询到该交易的。因此,用户端110可以基于后续发起的上链成功的交易产生的哈希值向区块链网络发起查询,或者仍然提交之前上链失败的交易产生的哈希值,但节点需要根据上链失败的交易产生的哈希值找到上链成功的交易产生的哈希值,以查询到上链成功的交易。对于用户而言,发现相同的交易内容产生了不同的哈希值也会对其造成困扰。
有鉴于此,本说明书实施例采用变色龙哈希算法计算交易哈希值,在交易时间戳不同的情况下仍可产生相同的哈希值,以避免出现交易内容相同但交易哈希值不同的问题。
在一些实施例中,用户端110/区块链网络120中的节点可以包括各类计算设备,如膝上型计算机、台式计算机、服务器等等。其中,服务器可以是独立的服务器或者服务器组,该服务器组可以是集中式的或者分布式的。在一些实施例中,服务器可以是区域的或者远程的。在一些实施例中,服务器可在云平台上执行。例如,该云平台可包括私有云、公共云、混合云、社区云、分散式云、内部云等中的一种或其任意组合。在一些实施例中,用户端110和节点可以集成于同一计算设备。
网络130连接系统的各组成部分,使得各部分之间可以进行通讯。在系统中各部分之间的网络可以包括有线网络和/或无线网络。例如,网络130可以包括电缆网络、有线网络、光纤网络、电信网络、内部网络、互联网、局域网络(LAN)、广域网络(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络(ZigBee)、近场通信(NFC)、设备内总线、设备内线路、线缆连接等或其任意组合。每两个部分之间的网络连接可以是采用上述一种方式,也可以是采取多种方式。可以理解,网络130与区块链网络120不必具有明显的分界,在更一般的应用场景中,区块链节点与普通网络节点可以共同接入同一物理网络中,其中的区块链节点在逻辑上构成区块链网络。
图2是根据本说明书一些实施例所示的区块链交易发起方法的示例性流程图。流程200可以由用户端110执行。如图2所示,流程200可以包括:
步骤210,获得第一交易数据(记为m)。
其中,第一交易数据m可以包括交易内容(记为content)和第一时间戳。交易内容可以包括交易被执行时所需要的数据,仅作为示例,其可以包括用户可以感知的内容,例如,用户发起交易时可以在用户端110输入一些信息,输入的信息可以作为交易内容的一部分,以供用户端110打包交易。可以理解,用户端110发起的任一交易上链失败后,用户端110重新发起的交易中的交易内容仍与上链失败的交易中的交易内容保持一致,从而用户只会感知初次发起的交易。因此,对于固定的交易内容,一旦产生不同的交易哈希值,会对用户造成困扰。在一些实施例中,第一交易数据m还可以包括用户端打包交易时加入的其他数据,如用于防重放验证的nonce随机数等,本说明书对此不做限制。
步骤220,获得第一随机因子(记为r)。
在一些实施例中,用户端110可以生成随机数作为第一随机因子r。
步骤230,获得交易哈希值(记为H)。
其中,交易哈希值H为变色龙哈希函数以第一交易数据m、第一随机因子r、用户的公钥为输入时的输出。
变色龙哈希函数可以用hash(m,r,pk)表示,hash(m,r,pk)整体表示输出(即哈希值),括号内的m、r和pk均为输入,其中,m表示消息(如第一交易数据),r表示随机因子,pk表示公钥。变色龙哈希函数的特性是,在持有与公钥pk匹配的私钥(记为sk)的情况下,能够找到一个新的随机因子r',使得两个不同的消息(不妨将新消息,如第二交易数据,记为m')产生相同的哈希值,即使得hash(m',r',pk)= hash(m,r,pk)。即,对于任意的哈希值hash(m,r,pk),给定m',存在计算r'的有效算法(记为随机因子函数,数学表示为F(),其输入至少包含m'和私钥sk),F()使得计算出的r'满足hash(m',r',pk)= hash(m,r,pk)。在一些实施例中,随机因子函数的输入可以包括私钥sk、新消息m'、原哈希值(如交易哈希值H)。在一些实施例中,随机因子函数的输入可以包括私钥sk、原消息m、原随机因子r、新消息m'。
在一些实施例中,用户端110可以自行计算交易哈希值。在一些实施例中,由于计算交易哈希值用到是用户的公钥,也可以由其他设备(如区块链系统的后台服务器)计算交易哈希值并将交易哈希值返回给用户端110。值得说明的是,用户端110和计算交易哈希值的设备之间可以通过可信传输链路传输交易数据(如,第一随机因子、第一交易数据、第二随机因子、第二交易数据等)以及交易哈希值,以防止数据被篡改。
另外,可以使用用户持有的任意公私钥对计算基于变色龙哈希算法的交易哈希值以及随机因子(如第二随机因子)。在一些实施例中,用户端110可以使用与用户的区块链账户关联的公私钥对计算基于变色龙哈希算法的哈希值和随机因子(如第二随机因子)。
步骤240,将以所述交易哈希值为标识的第一交易发送至区块链网络。
其中,第一交易可以包括第一交易数据m、交易哈希值H和第一随机因子r。
步骤250,确认第一交易的上链结果。
若第一交易上链失败,则用户端110可以执行步骤260~280。关于上链失败的更多细节,可以参考图1的相关描述。
步骤260,获得第二交易数据(不妨记为m')。
其中,第二交易数据m'可以包括交易内容content和第二时间戳。可以理解,第二时间戳不同于(晚于)第一时间戳。
步骤270,基于第二交易数据和用户的私钥(不妨记为sk)计算第二随机因子(记为r')。
关于计算第二随机因子r'的更多细节,可以参考前文对变色龙哈希函数特性的说明。
步骤280,将以所述交易哈希值为标识的第二交易发送至区块链网络。
其中,第二交易可以包括第二交易数据m'、交易哈希值H和第一随机因子r'。
可以理解,用户端110可能需要重新发起不止一个交易,直至固定的交易内容content成功上链。例如,发起第二交易后,用户端110可以确认第二交易的上链结果,若第二交易仍上链失败,用户端110可以发起第三交易。第三交易可以包括第三交易数据(记为m'')、交易哈希值H和第三随机因子(记为r''),第三交易数据可以包括交易内容content和第三时间戳,第三时间戳晚于第二时间戳。其中,第三随机因子r''可以基于第三交易数据m''和用户的私钥sk计算。
值得注意的是,针对固定的交易内容content,用户端110可以只计算一次哈希值,即基于步骤230中计算出的交易哈希值H生成后续发起的交易(如,第二交易、第三交易等等)。当然,针对固定的交易内容content,用户端也可以在每次重新发起交易时基于包含新时间戳(如,第二时间戳、第三时间戳等等)的交易数据(如,第二交易数据、第三交易数据等等)时再计算一遍交易哈希值(或者获取其他设备计算的交易哈希值),以基于最近一次得到的交易哈希值生成新的交易。例如,用户端110可以将第二交易数据m'、第二随机因子r'和用户的公钥pk输入变色龙哈希函数,以再次得到交易哈希值H(以及基于H生成第二交易)。出于可靠性的考虑,在一些实施例中,用户端110可以检查最近一次得到的交易哈希值与原交易哈希值H是否相等,若相等,则基于最近一次计算出的交易哈希值生成新的交易。
在一些实施例中,用户端110可以将交易哈希值H返回给用户。可以理解,针对固定的交易内容,用户端110可能发起了两个或以上交易,但用户获得的交易哈希值是唯一的。针对固定的交易内容,尽管用户端110可能发起了两个或以上交易,但是用户基于唯一的交易哈希值向区块链网络120查询交易即可。
需要说明的是,对于任一用户,只有该用户的用户端可以修改交易中的时间戳并利用该用户的私钥计算用于产生相同交易哈希值的随机因子(如第二门限餐参数r'),即交易的修改是由发起该交易的用户控制的,因此可以保证交易的真实性。
在一些实施例中,任一用户发起的交易还可以包括利用该用户的私钥对包含交易数据、随机因子和交易哈希值的签名消息的摘要生成的数字签名。第一交易还可以包括利用用户的私钥对第一签名消息的摘要生成的第一数字签名,第二交易还可以包括利用用户的私钥对第二签名消息的摘要生成的第二数字签名,第一签名消息可以包括第一交易数据、第一随机因子和交易哈希值,第二签名消息可以包括第二交易数据、第二随机因子和交易哈希值。任意验证方通过验签,可以确认交易的来源和完整性,更多验证细节可以参考图3及其相关描述。
在一些实施例中,对于用户针对固定交易内容重新发起的交易(如第二交易),其他用户或区块链节点也可以利用该用户的公钥验证交易中的交易哈希值来确认交易的来源和完整性。
关于验证交易哈希值的更多细节,可以参考图3及其相关描述。
图3是根据本说明书一些实施例所示的区块链交易验证方法的示例性流程图。如图3所示,流程300可以包括:
步骤310,获得目标用户通过用户端发起的交易。
其中,该交易可以包括交易数据、交易哈希值和随机因子。目标用户即操作发起该交易的用户端110的用户。可以理解,这里的交易可以是流程200中的任一交易,如第一交易/第二交易/第三交易。
步骤320,获取目标用户的公钥。
可以理解,流程300可以由任意验证方执行,例如,目标用户的用户端110之外的其他用户端或区块链节点。对于任意验证方而言,目标用户的公钥是可公开获取的。
步骤330,将交易中的交易数据、随机因子和目标用户的公钥输入变色龙哈希函数。
步骤340,比较变色龙哈希函数的输出和交易中的交易哈希值。
步骤350,基于比较结果确定交易验证结果。
若计算出的变色龙哈希函数的输出和交易中的哈希值相等,则说明交易中的交易数据未经篡改且交易中的交易哈希值是正确的。当然,交易的验证包括但不限于对交易中的交易哈希值的验证,相应地,可以基于对交易的多项验证的结果确定交易的有效性。例如,在一些实施例中,目标用户发起的交易还可以包括利用目标用户的私钥对签名消息的摘要生成的数字签名,其中,签名消息包括交易数据、随机因子和交易哈希值。验证方可以先基于签名消息以及目标用户的公钥对接收到的交易中的数字签名进行验证,若验证通过,说明交易数据、随机因子和交易哈希值均来自于目标用户且未经篡改,则验证方可以继续执行步骤330。否则,无需再执行步骤330。
应当注意的是,上述有关流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。
图4是根据本说明书一些实施例所示的区块链交易发起系统的模块图。系统400可以在用户端110上实现。如图4所示,系统400可以包括第一交易数据获得模块410、第一随机因子获得模块420、交易哈希值获得模块430和交易补偿上链模块440。
第一交易数据获得模块410可以用于获得第一交易数据。其中,所述第一交易数据包括交易内容和第一时间戳。
第一随机因子获得模块420可以用于获得第一随机因子。
交易哈希值获得模块430可以用于获得交易哈希值,并将以所述交易哈希值为标识的第一交易发送至区块链网络。其中,所述交易哈希值为变色龙哈希函数以将所述第一交易数据、所述第一随机因子和所述用户的公钥为输入时的输出,所述第一交易包括所述第一交易数据、所述交易哈希值和所述第一随机因子。
交易补偿上链模块440可以用于确认所述第一交易的上链结果,若所述第一交易上链失败,则:获得第二交易数据,所述第二交易数据包括所述交易内容和第二时间戳;至少基于所述第二交易数据和所述用户的私钥计算第二随机因子,并将以所述交易哈希值为标识的第二交易发送至所述区块链网络。其中,所述第二随机因子使得所述变色龙哈希函数以所述第二交易数据、所述第二随机因子和所述公钥为输入时的输出等于所述交易哈希值,所述第二交易包括所述第二交易数据、所述交易哈希值和所述第二随机因子。
关于系统400及其模块的更多细节,可以参考图2及其相关描述。
图5是根据本说明书一些实施例所示的区块链交易验证系统的模块图。如图5所示,系统500可以包括交易获得模块510、公钥获取模块520、计算模块530和验证结果确定模块540。
交易获得模块510可以用于获得目标用户的用户端发起的交易,该交易包括交易数据、交易哈希值和随机因子。
公钥获取模块520可以用于获取目标用户的公钥。
计算模块530可以用于将交易中的交易数据、随机因子和目标用户的公钥输入所述变色龙哈希函数,并比较所述变色龙哈希函数的输出和交易中的交易哈希值。
验证结果确定模块540可以用于基于比较结果确定交易验证结果。
关于系统500及其模块的更多细节,可以参考图3及其相关描述。
应当理解,图4和图5所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,第一随机因子获得模块420和交易哈希值获得模块430可以是一个系统中的不同模块,也可以是一个模块实现这两个模块的功能。又如,在一些实施例中,公钥获取模块520和计算模块530可以是两个模块,也可以合并为一个模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:(1)针对固定的交易内容,即使修改了交易中的时间戳,也能产生唯一的交易哈希值,不会对用户造成困扰;(2)针对固定的交易内容,即使存在两个或以上交易,也关联于相同的交易哈希值,查询过程无需关心不同哈希值间的转换;(3)验证方可以利用交易发起用户的公钥对交易的有效性进行验证。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书实施例的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书实施例进行各种修改、改进和修正。该类修改、改进和修正在本说明书实施例中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书实施例的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书实施例的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书实施例的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书实施例各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、VisualBasic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书实施例所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书实施例流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书实施例披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书实施例对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书实施例的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (12)
1.一种区块链交易发起方法,其中,包括:
获得第一交易数据,其中,所述第一交易数据包括交易内容和第一时间戳;
获得第一随机因子;
获得交易哈希值,并将以所述交易哈希值为标识的第一交易发送至区块链网络,其中,所述交易哈希值为变色龙哈希函数以所述第一交易数据、所述第一随机因子和用户的公钥为输入时的输出,所述第一交易包括所述第一交易数据、所述交易哈希值和所述第一随机因子;
确认所述第一交易的上链结果,若所述第一交易上链失败,则:获得第二交易数据,所述第二交易数据包括所述交易内容和第二时间戳;至少基于所述第二交易数据和所述用户的私钥计算第二随机因子,并将以所述交易哈希值为标识的第二交易发送至所述区块链网络,其中,所述第二随机因子使得所述变色龙哈希函数以所述第二交易数据、所述第二随机因子和所述公钥为输入时的输出等于所述交易哈希值,所述第二交易包括所述第二交易数据、所述交易哈希值和所述第二随机因子。
2.如权利要求1所述的方法,其中,所述获得交易哈希值,包括:
将所述第一交易数据、所述第一随机因子和所述用户的公钥输入变色龙哈希函数,以计算所述交易哈希值。
3.如权利要求1所述的方法,其中,还包括:
将所述第二交易数据、所述第二随机因子和所述公钥输入所述变色龙哈希函数,以得到所述交易哈希值。
4.如权利要求1所述的方法,其中,所述第一交易还包括利用所述用户的私钥对第一签名消息的摘要生成的第一数字签名,所述第二交易还包括利用所述用户的私钥对第二签名消息的摘要生成的第二数字签名,所述第一签名消息包括所述第一交易数据、所述第一随机因子和所述交易哈希值,所述第二签名消息包括所述第二交易数据、所述第二随机因子和所述交易哈希值。
5.如权利要求1所述的方法,其中,所述方法还包括:
向所述用户返回所述交易哈希值。
6.如权利要求1所述的方法,其中,所述至少基于所述第二交易数据和所述用户的私钥计算第二随机因子,包括:
将所述第二交易数据、所述用户的私钥以及所述交易哈希值输入随机因子函数,以计算所述第二随机因子。
7.一种区块链交易发起系统,其中,包括:
第一交易数据获得模块,用于获得第一交易数据,其中,所述第一交易数据包括交易内容和第一时间戳;
第一随机因子获得模块,用于获得第一随机因子;
交易哈希值获得模块,用于获得交易哈希值,并将以所述交易哈希值为标识的第一交易发送至区块链网络,其中,所述交易哈希值为变色龙哈希函数以所述第一交易数据、所述第一随机因子和用户的公钥为输入时的输出,所述第一交易包括所述第一交易数据、所述交易哈希值和所述第一随机因子;
交易补偿上链模块,用于确认所述第一交易的上链结果,若所述第一交易上链失败,则:获得第二交易数据,所述第二交易数据包括所述交易内容和第二时间戳;至少基于所述第二交易数据和所述用户的私钥计算第二随机因子,并将以所述交易哈希值为标识的第二交易发送至所述区块链网络,其中,所述第二随机因子使得所述变色龙哈希函数以所述第二交易数据、所述第二随机因子和所述公钥为输入时的输出等于所述交易哈希值,所述第二交易包括所述第二交易数据、所述交易哈希值和所述第二随机因子。
8.一种区块链交易发起装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如权利要求1~6中任一项所述的方法。
9.一种区块链交易验证方法,其中,包括:
获得目标用户通过区块链用户端发起的交易,所述交易包括交易数据、交易哈希值和随机因子;
获取所述目标用户的公钥;
将所述交易数据、所述随机因子和所述公钥输入变色龙哈希函数,并比较所述变色龙哈希函数的输出和所述交易哈希值;
基于比较结果确定交易验证结果。
10.如权利要求9所述的方法,其中,所述交易还包括数字签名,所述将所述交易数据、所述随机因子和所述公钥输入所述变色龙哈希函数,包括:
基于签名消息以及所述公钥验证所述数字签名,所述签名消息包括所述交易数据、所述随机因子和所述交易哈希值;
若验证通过,则将所述交易数据、所述随机因子和所述公钥输入所述变色龙哈希函数。
11.一种区块链交易验证系统,其中,包括:
交易获得模块,用于获得目标用户通过区块链用户端发起的交易,所述交易包括交易数据、交易哈希值和随机因子;
公钥获取模块,用于获取所述目标用户的公钥;
计算模块,用于将所述交易数据、所述随机因子和所述公钥输入变色龙哈希函数,并比较所述变色龙哈希函数的输出和所述交易哈希值;
验证结果确定模块,用于基于比较结果确定交易验证结果。
12.一种区块链交易验证装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如权利要求9或10所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011247837.8A CN112070501B (zh) | 2020-11-10 | 2020-11-10 | 一种区块链交易发起、验证方法及系统 |
CN202110403707.7A CN112884477B (zh) | 2020-11-10 | 2020-11-10 | 一种区块链交易发起方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011247837.8A CN112070501B (zh) | 2020-11-10 | 2020-11-10 | 一种区块链交易发起、验证方法及系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110403707.7A Division CN112884477B (zh) | 2020-11-10 | 2020-11-10 | 一种区块链交易发起方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112070501A CN112070501A (zh) | 2020-12-11 |
CN112070501B true CN112070501B (zh) | 2021-03-02 |
Family
ID=73655631
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011247837.8A Active CN112070501B (zh) | 2020-11-10 | 2020-11-10 | 一种区块链交易发起、验证方法及系统 |
CN202110403707.7A Active CN112884477B (zh) | 2020-11-10 | 2020-11-10 | 一种区块链交易发起方法及系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110403707.7A Active CN112884477B (zh) | 2020-11-10 | 2020-11-10 | 一种区块链交易发起方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN112070501B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112884477A (zh) * | 2020-11-10 | 2021-06-01 | 支付宝(杭州)信息技术有限公司 | 一种区块链交易发起、验证方法及系统 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112819628B (zh) * | 2021-02-01 | 2024-02-02 | 网易(杭州)网络有限公司 | 交易防重放的检测方法及装置、系统、电子设备、存储介质 |
CN113793146A (zh) * | 2021-08-02 | 2021-12-14 | 杭州复杂美科技有限公司 | 一种平行链同步交易的验证方法、设备及储存介质 |
CN113610526A (zh) * | 2021-08-24 | 2021-11-05 | 上海点融信息科技有限责任公司 | 一种数据信任方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108830602A (zh) * | 2018-06-27 | 2018-11-16 | 电子科技大学 | 一种基于变色龙哈希函数的许可链构造及管控方法 |
CN110086599A (zh) * | 2019-04-24 | 2019-08-02 | 电子科技大学 | 基于同态变色龙哈希函数的哈希计算方法及签密方法 |
CN111147228A (zh) * | 2019-12-28 | 2020-05-12 | 西安电子科技大学 | 基于以太坊IoT实体轻量级认证方法、系统、智能终端 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9967088B2 (en) * | 2016-05-23 | 2018-05-08 | Accenture Global Solutions Limited | Rewritable blockchain |
US11025430B2 (en) * | 2018-12-20 | 2021-06-01 | International Business Machines Corporation | File provenance database system |
CN110061850B (zh) * | 2019-04-24 | 2021-04-23 | 电子科技大学 | 变色龙哈希函数的碰撞计算方法及可编辑区块链构造方法 |
CN110457297B (zh) * | 2019-07-10 | 2022-02-15 | 北京航空航天大学 | 基于多授权中心属性加密的可编辑区块链系统及方法 |
CN110474762B (zh) * | 2019-08-22 | 2021-05-25 | 电子科技大学 | 环式可编辑区块链的构建方法 |
CN110489422B (zh) * | 2019-08-23 | 2022-04-08 | 电子科技大学 | 区块链自动修复的方法 |
CN111062716B (zh) * | 2019-11-29 | 2021-06-22 | 支付宝(杭州)信息技术有限公司 | 生成区块链签名数据的方法及装置、区块链交易发起系统 |
CN111753335B (zh) * | 2020-08-28 | 2023-09-01 | 支付宝(杭州)信息技术有限公司 | 区块内容的编辑方法及装置 |
CN112070501B (zh) * | 2020-11-10 | 2021-03-02 | 支付宝(杭州)信息技术有限公司 | 一种区块链交易发起、验证方法及系统 |
-
2020
- 2020-11-10 CN CN202011247837.8A patent/CN112070501B/zh active Active
- 2020-11-10 CN CN202110403707.7A patent/CN112884477B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108830602A (zh) * | 2018-06-27 | 2018-11-16 | 电子科技大学 | 一种基于变色龙哈希函数的许可链构造及管控方法 |
CN110086599A (zh) * | 2019-04-24 | 2019-08-02 | 电子科技大学 | 基于同态变色龙哈希函数的哈希计算方法及签密方法 |
CN111147228A (zh) * | 2019-12-28 | 2020-05-12 | 西安电子科技大学 | 基于以太坊IoT实体轻量级认证方法、系统、智能终端 |
Non-Patent Citations (1)
Title |
---|
袁勇等.可编辑区块链:模型、技术与方法.《自动化学报》.2020,第831-846页. * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112884477A (zh) * | 2020-11-10 | 2021-06-01 | 支付宝(杭州)信息技术有限公司 | 一种区块链交易发起、验证方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112884477B (zh) | 2022-08-19 |
CN112070501A (zh) | 2020-12-11 |
CN112884477A (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112070501B (zh) | 一种区块链交易发起、验证方法及系统 | |
US11444782B2 (en) | Dynamically managing exchanges of data using a distributed ledger and homomorphic commitments | |
US11233657B2 (en) | Method and system for registering digital documents | |
CN108111314B (zh) | 数字证书的生成和校验方法及设备 | |
US9419804B2 (en) | Data authenticity assurance method, management computer, and storage medium | |
CN110505046B (zh) | 多数据提供方加密数据跨平台零知识校验方法、装置及介质 | |
US20080216147A1 (en) | Data Processing Apparatus And Method | |
CN111163182A (zh) | 基于区块链的设备注册方法、装置、电子设备和存储介质 | |
CN110535659B (zh) | 用于处理数据请求的方法、装置、电子设备和计算机可读介质 | |
US11108545B2 (en) | Creating a blockchain account and verifying blockchain transactions | |
CN109861996B (zh) | 基于区块链的关系证明方法、装置、设备及存储介质 | |
US20130103651A1 (en) | Telemetry file hash and conflict detection | |
CN110601816A (zh) | 一种区块链系统中轻量级节点控制方法及装置 | |
CN110740038B (zh) | 区块链及其通信方法、网关、通信系统和存储介质 | |
US11368315B2 (en) | Systems and methods of device ownership self-verification | |
CN111178894A (zh) | 资产类型注册、交易记录验证方法及系统 | |
CN111339551B (zh) | 数据的验证方法及相关装置、设备 | |
CN114117551B (zh) | 一种访问验证方法及装置 | |
CN109995775B (zh) | 区块链验证码应用方法、设备和存储介质 | |
JP2011205234A (ja) | タイムスタンプ付与システム、タイムスタンプ付与方法、タイムスタンプ付与プログラム | |
CN112055008B (zh) | 一种身份验证方法、装置、计算机设备和存储介质 | |
US20190052632A1 (en) | Authentication system, method and non-transitory computer-readable storage medium | |
CN110543526B (zh) | 一种基于区块链的优化储存方法及系统 | |
CN108833105B (zh) | 电子签名方法及装置 | |
CN113112269B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40042971 Country of ref document: HK |