CN109741039A - 记账方法、矿池服务器、终端设备、挖矿节点及矿池 - Google Patents
记账方法、矿池服务器、终端设备、挖矿节点及矿池 Download PDFInfo
- Publication number
- CN109741039A CN109741039A CN201910011750.1A CN201910011750A CN109741039A CN 109741039 A CN109741039 A CN 109741039A CN 201910011750 A CN201910011750 A CN 201910011750A CN 109741039 A CN109741039 A CN 109741039A
- Authority
- CN
- China
- Prior art keywords
- mine
- tee
- chain
- block
- keeping operation
- 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.)
- Granted
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/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
-
- 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
-
- 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
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明涉及区块链技术领域,提供一种记账方法、矿池服务器、终端设备、挖矿节点及矿池。其中,记账方法包括:矿池服务器接收并存储挖矿节点发送的区块头主体的哈希值以及难度目标值;矿池服务器接收终端设备发送的记账请求;矿池服务器向终端设备发送区块头主体的哈希值以及难度目标值,以使Slave TEE判断累积未用时长是否大于累积未用下限时长,并在大于时对记账权确定信息进行签名;矿池服务器接收终端设备发送的记账权确定信息以及记账权确定信息的签名,并将这两项信息发送至挖矿节点,以使挖矿节点生成记账区块并将记账区块添加至本地的区块链中。该方法能够避免Slave TEE中计算资源的浪费,并降低其电能消耗。
Description
技术领域
本发明涉及区块链技术领域,具体而言,涉及一种记账方法、矿池服务器、终端设备、挖矿节点及矿池。
背景技术
现有的区块链中普遍采用共识算法来确定哪个矿工节点获得记账权,获得记账权的矿工节点能够得到预先约定好的奖励(例如,数字货币),这一过程称为挖矿。由于挖矿能够带来一定的经济收益,在一些实现方案中,共识计算从矿工节点中被剥离出来,由远端接入的众多专用集成电路(Application Specific Integrated Circuit,简称ASIC)矿机提供共识计算的算力,形成矿池结构。
目前,矿池中的各矿机使用的共识算法主要是工作量证明(Proof of Work,简称PoW)算法,该算法在矿机竞争记账权的过程中需要进行大量无意义的哈希碰撞计算,导致严重的计算资源浪费以及电能消耗。
发明内容
有鉴于此,本发明实施例提供一种记账方法、矿池服务器、终端设备、挖矿节点及矿池,在参与挖矿的终端设备的可信执行环境中采用基于累积未用时长的共识算法,以节约计算资源以及减小电能消耗。
为实现上述目的,本发明提供如下技术方案:
第一方面,本发明实施例提供一种记账方法,应用于区块链系统,区块链系统包括至少一个并行链,至少一个并行链上搭建有至少一个矿池,每个矿池包括矿池服务器以及位于并行链上的挖矿节点,挖矿节点采用分布式数据区块链存储数据,该方法包括:
矿池服务器接收并存储挖矿节点发送的待定记账区块的区块头主体的哈希值以及挖矿节点所在的并行链上挖矿的难度目标值;
矿池服务器接收终端设备发送的记账请求;
矿池服务器向终端设备发送区块头主体的哈希值以及难度目标值,以使终端设备配置的从可信执行环境(Slave Trusted Execution Environment,简称Slave TEE)判断自身的累积未用时长是否大于根据难度目标值计算出的累积未用下限时长,并在大于时对记账权确定信息进行签名,其中,记账权确定信息包括区块头主体的哈希值以及Slave TEE绑定的钱包账号的地址主体;
矿池服务器接收终端设备发送的记账权确定信息以及记账权确定信息的签名;
矿池服务器将记账权确定信息以及记账权确定信息的签名发送至挖矿节点,以使挖矿节点生成包含钱包账号的地址主体以及记账权确定信息的签名的记账区块,并将记账区块添加至本地的区块链中。
在上述方法中,终端设备接入到矿池参与挖矿,终端设备配置的Slave TEE充当矿工的角色,Slave TEE在竞争记账权时采用不同于PoW的共识算法:Slave TEE内部维护一个累积未用时长,累积未用时长会随时间流逝而累加,同时,Slave TEE还从矿池服务器获得难度目标值,并根据难度目标值换算出累积未用下限时长,若累积未用时长大于累积未用下限时长,则Slave TEE竞争记账权成功,否则竞争记账权失败,可以继续参与下次记账权的竞争。该共识算法所涉及的计算量远小于PoW算法,有效避免了Slave TEE中计算资源的浪费,降低了Slave TEE的功耗,或者使得Slave TEE可以采用低成本、低功耗的硬件实现方式,有效节省了电能的消耗。
另一方面,Slave TEE在竞争记账权成功后,还会对记账权确定信息签名,并将记账权确定信息连同其签名发送给矿池服务器,矿池服务器进一步将其转发给挖矿节点,挖矿节点最终将签名保存到新生成的记账区块中,并在其所在的并行链上广播记账权确定信息以及新生成的记账区块。从而,矿池服务器、挖矿节点以及并行链上的其他节点都可以根据该签名验证记账者的身份是否可信,还可以验证记账权确定信息的内容是否被篡改,从而有利于改善区块链系统的安全性。记账权确定信息包括和竞争记账权相关的关键信息,区块头主体的哈希值能够唯一标识待定记账区块,Slave TEE绑定的钱包账号的地址主体则表明记账者的身份,因此都可以包含在记账权确定信息中。
另一方面,上述方法中的区块链系统采用并行链,从而支持将各Slave TEE分散到不同的并行链上进行挖矿,有效避免算力集中,改善区块链系统的安全性。
另一方面,通过在并行链上搭建矿池进行挖矿,相对于直接在并行链上部署矿工节点,还有如下好处:
第一,区块链系统需要一定数量的分布式全账本节点来保障安全,若部署在并行链上的矿工节点都参与记账,由于矿工节点数量较多,因此账本数据的全网广播将占用大量带宽,导致网络负担增加,而过多的全账本节点并不能带来额外的价值,同时,由于矿工节点很多是个人设备,其数据传输能力和所处的网络环境局限性较大,这一问题更加突出;而在本发明实施例提供的记账方法中,Slave TEE只竞争记账权,并不直接记账,只有挖矿节点才进行记账(生成区块),挖矿节点的数量远小于Slave TEE的数量,即使进行全网广播数据量也不会太大,同时,矿池可以部署在云端,其数据传输的带宽可以得到保障。
第二,上面已经提到,矿工节点很多是个人设备,而大多数参与挖矿的个人并没有或者只有很少的记账需求,只是希望通过挖矿获得经济利益,若强迫其参与记账,不仅造成用户体验变差,而且一些个人设备存储空间有限(例如,移动设备),根本不适于记账,最终导致用户流失。同时,一些有大量记账需求的用户,如企业用户,对于参与挖矿并无兴趣。在本发明实施例提供的记账方法中,企业用户可以在并行链上搭建矿池负责记账,同时吸引个人用户接入到矿池帮助其挖矿,各取所需,有利于改善区块链系统的运营状况。
在一些实施例中,并行链包括路由节点、至少一个矿池的挖矿节点和至少一个简化支付验证(Simplified Payment Verification,简称SPV)节点,至少一个并行链的路由节点之间网络连接,SPV节点绑定的钱包账号的地址对应的并行链为SPV节点所在的并行链,其中:
SPV节点用于:响应于接收到交易请求,将所收到的交易请求发送给SPV节点所在的并行链的路由节点;
路由节点用于:响应于对所收到的交易请求校验通过,将所收到的交易请求添加到路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给路由节点的同链挖矿节点;以及实时将路由节点的同链挖矿节点的区块链同步到本地的区块链;
挖矿节点用于:响应于对从同链路由节点接收到的签名后交易请求验证通过,将签名后交易请求中挖矿节点的链内交易请求添加到挖矿节点的待处理交易请求集合;根据待处理交易请求集合生成区块头主体的哈希值;
路由节点还用于:确定路由节点的交易请求集合中确认已出账且未入账的未入账交易请求;将所确定的未入账交易请求发送给目标并行链的路由节点,其中,目标并行链是所确定的未入账交易请求中的入账账号地址对应的并行链;以及响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给路由节点的同链挖矿节点。
在这些实施例中,各并行链之间通过路由节点实现网络互联,SPV节点之间的交易都需要通过路由节点才能完成,从而利用路由节点能够实现对数字货币交易的有效监管。
另一方面,在该区块链系统中,交易处理过程从传统的单链串行方式改进为多链并发方式,随着并行链数的增加,区块链系统的每秒交易次数(Transactions Per Second,简称TPS)随之提高。
在一些实施例中,记账权确定信息还包括累积未用下限时长。
累积未用下限时长直接决定Slave TEE能否获得记账权,也属于和竞争记账权相关的关键信息,因此也可以包含在记账权确定信息中。
在一些实施例中,记账权确定信息的签名由Slave TEE根据保存的第一私钥生成,在矿池服务器将记账权确定信息以及记账权确定信息的签名发送至挖矿节点之前,该方法还包括:
矿池服务器根据保存的与第一私钥匹配的第一公钥确定记账权确定信息的签名为真实签名。
根据非对称加密原理,Slave TEE利用保存的第一私钥对记账权确定信息签名,矿池服务器利用保存的与第一私钥匹配的第一公钥对该签名进行验证,若验证成功,则证实该签名确实是Slave TEE发出的,可以避免攻击者伪造消息。
在一些实施例中,矿池包括多个挖矿节点,不同的挖矿节点位于不同的并行链上;
矿池服务器向终端设备发送区块头主体的哈希值以及难度目标值,包括:矿池服务器配置的主可信执行环境(Master Trusted Execution Environment,简称Master TEE)确定与终端设备相关联的并行链;矿池服务器向终端设备发送与终端设备相关联的并行链上的挖矿节点提供的区块头主体的哈希值以及难度目标值;
矿池服务器将记账权确定信息以及记账权确定信息的签名发送至挖矿节点,包括:矿池服务器将记账权确定信息以及记账权确定信息的签名发送至终端设备关联的并行链上的挖矿节点。
在这些实施例中,终端设备只能获取与其相关联的并行链上的挖矿节点提供的区块头主体的哈希值以及难度目标值,从而终端设备配置的Slave TEE只能在相关联的并行链上挖矿,即实现了将终端设备的算力分散到不同的并行链上,避免区块链中的51%算力攻击。
在一些实施例中,Master TEE确定与终端设备相关联的并行链,包括:
Master TEE根据Slave TEE绑定的钱包账号的地址的虚拟并行链标识、终端设备的并行链标识掩码以及区块链系统包含的并行链的数量计算终端设备关联的并行链的链标识,其中,虚拟并行链标识根据终端设备配置的Slave TEE的硬件标识计算获得。
在这些实施例中,虚拟并行链标识根据Slave TEE的硬件标识计算获得,而并行链标识掩码和并行链的数量保存在Master TEE中,从而对任一参与挖矿的终端设备,其关联的并行链是可以唯一确定的,可以确保终端设备被分散到不同的并行链上进行挖矿。
在一些实施例中,矿池服务器向终端设备发送区块头主体的哈希值以及难度目标值,包括:
Master TEE根据第一密钥生成算法基于矿池配置信息生成第一密钥,并根据第一密钥加密区块头主体的哈希值;矿池配置信息包括终端设备关联的并行链的链标识;其中,Slave TEE能够利用第一密钥生成算法生成第一密钥,并利用第一密钥解密加密后的区块头主体的哈希值;
矿池服务器向终端设备发送难度目标值以及加密后的区块头主体的哈希值。
在这些实施例中,对区块头主体的哈希值采用对称加密的方式,Master TEE和Slave TEE中采用相同的第一密钥生成算法计算第一密钥,若计算出的第一密钥相同,Slave TEE才能够正确解密,而Slave TEE只有正确解密出了区块头主体的哈希值,才有可能对记账权确定信息进行签名。上述机制确保了Master TEE和Slave TEE必须配套使用,一旦出现二者不匹配的情况,例如Slave TEE被伪造,加解密机制将无法正常工作。
进一步的,第一密钥与终端设备关联的并行链的链标识相关,意味着在Slave TEE中推算出的该链标识必须与Master TEE中推算出的该链标识一致,Slave TEE才能够获得和Master TEE中相同的第一密钥,或者说,Slave TEE只能获得并解密该链标识对应的并行链(与Slave TEE所在的终端设备关联的并行链)上的挖矿节点发送的区块头主体的哈希值,即使获得了其他的并行链上的挖矿节点发送的区块头主体的哈希值,也无法正确解密,从而限制了Slave TEE只能在某个特定的并行链上挖矿。
在一些实施例中,第一密钥生成算法为Master TEE以及Slave TEE所私有,算法实现不在Master TEE以及Slave TEE之外公开,算法生成的第一密钥在Master TEE中被用于且仅被用于加密区块头主体的哈希值,在Slave TEE中被用于且仅被用于解密加密后的区块头主体的哈希值。
在这些实施例中,区块头主体的哈希值的加解密过程是单向的,即在Master TEE中只负责加密,不会将第一密钥用作解密用途,在Slave TEE中只负责解密,不会将第一密钥用作加密用途,同时第一密钥生成算法不对外公开,确保了第一密钥不会被破解。
在一些实施例中,矿池服务器向终端设备发送区块头主体的哈希值以及难度目标值,包括:
矿池服务器判断终端设备距离上次记账时间的时间间隔t1是否大于冷却时长t2,t2为累积未用下限时长的k倍,k为大于0且小于1的常数;
若大于,矿池服务器向终端设备发送区块头主体的哈希值以及难度目标值。
在这些实施例中,通过矿池服务器限制终端设备在每次记账成功后至少要间隔冷却时长才能再次获得记账权,避免某些终端设备配置的Slave TEE中故意囤积累积未用时长,然后连续获得记账权,变相制造51%算力攻击。同时,通过设置冷却时长的限制,能够让更多的终端设备配置的Slave TEE都有机会获得记账权,也在一定程度上体现了挖矿的公平性。
在一些实施例中,在矿池服务器判断t1是否大于t2之后,该方法还包括:
若t1不大于t2,则矿池服务器通知终端设备距离发起下次记账请求的时间间隔t3,t3为t2与t1的差值。
若矿池服务器发现终端设备当前发送的记账请求不满足冷却时长的要求,可以主动告知其闲置一段时间,直到满足冷却时长的要求后再发送新的记账请求,避免终端设备持续发送无意义的(即不可能获得记账权的)记账请求,造成资源浪费。
在一些实施例中,t1通过如下公式计算:
其中,Height2为待定记账区块在区块链中的高度,Height1
为上次记账生成的区块在区块链中的高度,为区块链系统的预设常数,用于表征区块链系统的平均出块时间。
在一些现有的区块链协议中,区块头中的时间戳只能大致地表征记账时间,若采用两个区块的时间戳之差估算记账时间间隔,其精度与可信度可能不高,因为待定记账区块的时间戳并不一定等于实际的记账时间,而是允许与当前网络时间有数小时偏差,且由相关挖矿节点决定,不排除有人故意将记账时间提前或延后,而采用两个区块在区块链中的高度差估算记账时间间隔,其精度与可信度较高,进而使得对记账请求是否满足冷却时长的判断更为合理。
在一些实施例中,在矿池服务器接收终端设备发送的记账请求之前,该方法还包括:
矿池服务器接收终端设备发送的注册请求,注册请求携带有注册信息、用户的实名认证结果以及实名认证机构用私钥对实名认证结果的签名,注册信息包括Slave TEE绑定的钱包账号的地址;
矿池服务器配置的Master TEE根据保存的与实名认证机构的私钥匹配的公钥验证实名认证结果的签名的真实性;
若实名认证结果的签名为真实签名,则矿池服务器保存注册信息,并向终端设备发送注册响应。
用户在使用终端设备参与挖矿前需要先到实名认证机构进行实名认证,获得实名认证机构返回的认证结果及其签名。终端设备在参与挖矿前需要先向矿池服务器注册,并向矿池服务器提交认证结果及其签名,矿池服务器可以通过验证认证结果的签名的真实性确定认证结果是否有效。
引入实名认证机制使得在挖矿过程中有不端行为的用户容易被追责,满足监管需求。同时也能够让Slave TEE的发行商自证清白,因为实名认证由第三方的实名认证机构掌控,发行商无法通过伪造众多的Slave TEE(例如,通过软件模拟的方式)在挖矿过程中作弊,因为用户的实际身份是有限,难以让大量伪造的Slave TEE都通过实名认证。
在一些实施例中,实名认证结果包括实名认证机构分配的认证码,认证码与SlaveTEE绑定的钱包账号的地址相对应,用于表征用户通过实名认证机构的实名认证;该方法还包括:
矿池服务器还接收终端设备发送的认证码,并将认证码发送至挖矿节点,以使挖矿节点将认证码添加至记账区块;
记账权确定信息还包括认证码。
认证码对应于Slave TEE绑定的钱包账号的地址,或者说就是与用户相对应的,通过认证码可以在实名认证机构查询到用户是否做过实名认证,因此将认证码引入到记账过程有利于改善记账过程的安全性。
在一些实施例中,在矿池服务器接收终端设备发送的记账请求之前,该方法还包括:
矿池服务器接收终端设备发送的入池申请;
矿池服务器配置的Master TEE判断矿池服务器的容量是否小于容量阈值;
若小于,则矿池服务器根据Master TEE生成的授权信息对终端设备进行入池授权,以告知终端设备在授权开始时间之后的授权使用时长内向矿池服务器发送的记账请求可被矿池服务器接受,其中,授权使用时长为保存在矿池服务器配置的Master TEE中的预配置数据;
若大于,则矿池服务器发送消息通知终端设备未获入池授权。
在这些实施例中,每个矿池对允许入池挖矿的Slave TEE的数量都是有限制的,从而可以避免少数矿池聚集大量算力的情况。进一步的,区块链系统中的各个矿池可以交由不同的运营者去运营,每个运营者能够控制的算力都受到矿池容量的限制,从而可以有效抑制矿池算力中心化的趋势。
在一些实施例中,矿池服务器的容量小于容量阈值,包括:
当前的授权周期内的入池授权量小于第一阈值;其中,授权周期以及第一阈值为保存在矿池服务器配置的Master TEE中的预配置数据。
矿池服务器按照授权周期允许终端设备配置的Slave TEE入池挖矿,每个授权周期内的入池授权量限制为一定的数量,避免终端设备集中在某一时段申请入池的情况,将设备的算力在时间层面尽可能分散。
在一些实施例中,授权信息包括授权序号以及授权码,其中,授权序号由MasterTEE分配,授权码用于使终端设备配置的Slave TEE验证入池授权是否有效。
矿池服务器根据Master TEE生成的授权信息对终端设备进行入池授权,包括:
矿池服务器向终端设备发送授权序号以及授权码,并将授权序号与授权关联信息对应保存,其中,授权关联信息是指和授权内容相关的信息;
在矿池服务器向终端设备发送区块头主体的哈希值以及难度目标值之前,该方法还包括:
矿池服务器根据记账请求中携带的授权序号查询对应的授权关联信息,并根据授权关联信息确定终端设备的入池授权有效。
在矿池服务器对终端设备进行入池授权后,终端设备将获得入池授权码。或者入池申请未获矿池服务器批准时,终端设备还可以等待一段时间后再次向矿池服务器申请入池。终端设备配置的Slave TEE在竞争记账权时还可以进一步根据授权码验证入池授权是否有效,以确认自己是否能够获得记账权,同时,矿池服务器在接收到终端设备发送的记账请求后,也可以进一步根据授权关联信息确认是否应当允许Slave TEE竞争记账权。通过上述双重验证机制,使得终端设备只有在授权使用时长内能够参与挖矿,实现对矿池聚集的算力的控制。
在一些实施例中,矿池服务器向终端设备发送授权序号以及授权码,包括:
Master TEE根据第二密钥生成算法生成第二密钥,利用第二密钥加密授权码;
矿池服务器向终端设备发送授权序号以及加密后的授权码;其中,终端设备配置的Slave TEE能够利用第二密钥生成算法生成第二密钥,并利用第二密钥解密加密后的授权码。
在这些实施例中,对授权码采用对称加密的方式,Master TEE和Slave TEE中采用相同的第二密钥生成算法计算第二密钥,若计算出的第二密钥相同,Slave TEE才能够正确解密,而Slave TEE只有正确解密出了授权码,才有可能对授权码包含的授权信息进行验证。上述机制确保了Master TEE和Slave TEE必须配套使用,一旦出现二者不匹配的情况,例如Slave TEE被伪造,加解密机制将无法正常工作。
在一些实施例中,第二密钥生成算法为Master TEE以及Slave TEE所私有,算法实现不在Master TEE以及Slave TEE之外公开,算法生成的第二密钥在Master TEE中被用于且仅被用于加密授权码,在Slave TEE中被用于且仅被用于解密加密后的授权码。
在这些实施例中,授权码的加解密过程是单向的,即在Master TEE中只负责加密,不会将第二密钥用作解密用途,在Slave TEE中只负责解密,不会将第二密钥用作加密用途,同时第二密钥生成算法不对外公开,确保了第二密钥不会被破解。
在一些实施例中,在矿池服务器将记账权确定信息以及记账权确定信息的签名发送至挖矿节点之后,该方法还包括:
矿池服务器将预设数额的矿池奖励从预配置的矿池钱包账号的地址转账至竞争到记账权的终端设备配置的Slave TEE绑定的钱包账号的地址。
按照区块链的协议,挖矿成功后用户能够获得一定数额的数字货币作为挖矿奖励,而矿池奖励是矿池运营者发给用户的额外的数字货币,不属于挖矿奖励的一部分,其目的在于吸引更多用户参与挖矿,改善矿池的运营状况。
第二方面,本发明实施例提供一种记账方法,应用于接入到区块链系统的终端设备,区块链系统包括至少一个并行链,至少一个并行链上搭建有至少一个矿池,每个矿池包括矿池服务器以及位于并行链上的挖矿节点,挖矿节点采用分布式数据区块链存储数据,方法包括:
终端设备向矿池服务器发送记账请求;
终端设备接收矿池服务器发送的待定记账区块的区块头主体的哈希值以及在并行链上挖矿的难度目标值;
终端设备配置的Slave TEE判断自身的累积未用时长是否大于根据难度目标值计算出的累积未用下限时长,并在大于时对记账权确定信息进行签名,其中,记账权确定信息包括区块头主体的哈希值以及Slave TEE绑定的钱包账号的地址主体;
终端设备向矿池服务器发送记账权确定信息以及记账权确定信息的签名。
在一些实施例中,Slave TEE对记账权确定信息进行签名,包括:
Slave TEE根据保存的第一私钥对记账权确定信息进行签名,矿池服务器以及挖矿节点保存有与第一私钥匹配的第一公钥。
在一些实施例中,矿池包括多个挖矿节点,不同的挖矿节点位于不同的并行链上;
终端设备接收矿池服务器发送的待定记账区块的区块头主体的哈希值以及在并行链上挖矿的难度目标值,包括:
终端设备接收矿池服务器发送的加密后的区块头主体的哈希值以及难度目标值,其中,加密所用的第一密钥由矿池服务器配置的Master TEE根据第一密钥生成算法生成;
在Slave TEE对记账权确定信息进行签名之前,该方法还包括:
Slave TEE根据第一密钥生成算法基于矿池配置信息生成第一密钥,并利用第一密钥解密加密后的区块头主体的哈希值,其中,矿池配置信息包括终端设备关联的并行链的链标识,记账权确定信息包括解密后的区块头主体的哈希值。
在一些实施例中,矿池配置信息还包括并行链已扩容的次数和/或预配置的矿池的矿池标识。
第一密钥生成算法在生成第一密钥时考虑并行链已扩容的次数,若并行链扩容后,Master TEE中保存的并行链已扩容的次数已经更新,但Slave TEE中保存的并行链已扩容的次数尚未更新,Slave TEE将无法继续挖矿(因为无法正确解密区块头主体的哈希值),即在并行链扩容升级后,若Slave TEE的配置未升级,将不允许该Slave TEE继续参与挖矿,这样,即使在升级前某个并行链上出现了算力聚集,升级后一旦Slave TEE的配置更新,聚集的Slave TEE将可能被分散到新的并行链上去挖矿,从而有效消除了算力聚集。
第一密钥生成算法在生成第一密钥时考虑矿池标识,能够限制Slave TEE只能在指定的矿池下挖矿,不能随意更换矿池(否则无法正确解密区块头主体的哈希值),避免算力聚集。
以上两项信息,在第一密钥生成算法中可以只考虑其中一项,也可以都考虑进去。
在一些实施例中,终端设备关联的并行链的链标识由Slave TEE根据Slave TEE绑定的钱包账号的地址的虚拟并行链标识、终端设备的并行链标识掩码以及区块链系统包含的并行链的数量计算获得,其中,虚拟并行链标识根据Slave TEE的硬件标识计算获得。
在一些实施例中,在终端设备向矿池服务器发送记账请求之前,该方法还包括:
终端设备向矿池服务器发送注册请求,注册请求携带有注册信息、用户的实名认证结果以及实名认证机构用私钥对实名认证结果的签名,注册信息包括Slave TEE绑定的钱包账号的地址;矿池服务器配置的Master TEE中保存有与实名认证机构的私钥匹配的公钥;
实名认证结果包括实名认证机构分配的认证码,认证码与Slave TEE绑定的钱包账号的地址相对应,用于表征用户通过实名认证机构的实名认证;
记账权确定信息还包括认证码。
在一些实施例中,在终端设备向矿池服务器发送记账请求之前,该方法还包括:
终端设备向矿池服务器发送入池申请,并获得矿池服务器的入池授权。
在一些实施例中,终端设备获得矿池服务器的入池授权,包括:
终端设备接收矿池服务器发送的授权序号以及加密后的授权码,其中,授权序号由矿池服务器配置的Master TEE分配,加密所用的第二密钥由Master TEE根据第二密钥生成算法生成;
在Slave TEE对记账权确定信息进行签名之前,该方法还包括:
Slave TEE根据第二密钥生成算法生成第二密钥,利用第二密钥解密加密后的授权码;
Slave TEE根据解密后的授权码确定入池授权有效。
第三方面,本发明实施例提供一种记账方法,应用于区块链系统,区块链系统包括至少一个并行链,至少一个并行链上搭建有至少一个矿池,每个矿池包括矿池服务器以及位于并行链上的挖矿节点,挖矿节点采用分布式数据区块链存储数据,方法包括:
挖矿节点向矿池服务器发送待定记账区块的区块头主体的哈希值以及在并行链上挖矿的难度目标值;
挖矿节点接收矿池服务器发送的接入矿池服务器的终端设备配置的Slave TEE绑定的钱包账号的地址主体以及Slave TEE生成的记账权确定信息的签名,其中,记账权确定信息包括区块头主体的哈希值以及Slave TEE绑定的钱包账号的地址主体;
挖矿节点生成包含钱包账号的地址主体以及记账权确定信息的签名的记账区块,并将记账区块添加至本地的区块链中。
在一些实施例中,记账权确定信息还包括累积未用下限时长和/或实名认证机构分配的认证码,其中,累积未用下限时长是Slave TEE根据难度目标值计算出的,认证码与Slave TEE绑定的钱包账号的地址相对应,用于表征用户通过实名认证机构的实名认证,挖矿节点生成的记账区块中还包含根据累积未用下限时长计算出的难度目标值和/或认证码。
在一些实施例中,记账权确定信息的签名由Slave TEE根据保存的第一私钥生成,在挖矿节点生成包含钱包账号的地址主体以及记账权确定信息的签名的记账区块之前,该方法还包括:
挖矿节点根据保存的与第一私钥匹配的第一公钥确定记账权确定信息的签名为真实签名。
根据非对称加密原理,Slave TEE利用保存的第一私钥对记账权确定信息签名,挖矿节点利用保存的与第一私钥匹配的第一公钥对该签名进行验证,若验证成功,则证实该签名确实是Slave TEE发出的,可以避免攻击者伪造消息。
在一些实施例中,在挖矿节点生成包含钱包账号的地址主体以及记账权确定信息的签名的记账区块之前,方法还包括:
挖矿节点根据钱包账号的地址主体查询获得终端设备上次记账生成的区块在区块链中的高度;
挖矿节点根据上次记账生成的区块在区块链中的高度以及待定记账区块在区块链中的高度确定待定记账区块的生成时间与上次记账生成的区块的生成时间的时间间隔;
挖矿节点确定判断时间间隔大于冷却时长,其中,冷却时长为根据待确认的记账区块中保存的难度目标值计算出的累积未用下限时长的k倍,k为大于0且小于1的常数。
挖矿节点在生成记账区块前,还可以验证其记账时间间隔是否满足冷却时长的要求,若满足要求,才会生成该区块,并将其添加至本地的区块链中,否则不会认生成区块,避免同一Slave TEE连续获得记账权。
在一些实施例中,在挖矿节点将记账区块添加至本地的区块链中之后,该方法还包括:
挖矿节点将记账区块在区块链中的高度、竞争到记账权的终端设备配置的SlaveTEE绑定的钱包账号的地址主体发送至矿池服务器。
在这些实施例中,挖矿节点将上述信息发送到矿池服务器保存,矿池服务器在验证记账请求是否满足冷却时长的要求时,可以利用Slave TEE绑定的钱包账号的地址主体查询出每次记账的区块在区块链中的高度,进而估算记账时间间隔完成验证。
在一些实施例中,该方法还包括:
挖矿节点根据区块链的待确认的记账区块中保存的终端设备的钱包账号的地址主体查询获得该终端设备上次记账生成的区块在区块链中的高度,其中,待确认的记账区块是指挖矿节点接收到的由同链的其他挖矿节点广播的记账区块;
挖矿节点根据上次记账生成的区块在区块链中的高度以及待确认的记账区块在区块链中的高度确定待确认的记账区块的生成时间与上次记账生成的区块的生成时间的时间间隔;
挖矿节点判断时间间隔是否大于冷却时长,若大于冷却时长,则认可待确认的记账区块,其中,冷却时长为根据待确认的记账区块中保存的难度目标值计算出的累积未用下限时长的k倍,k为大于0且小于1的常数。
挖矿节点会接收其他挖矿节点广播的待确认的记账区块,待确认的记账区块已经被其他挖矿节点添加至其本地的区块链中,但尚未被并行链上的挖矿节点所认可。
对于接收到的待确认的记账区块,挖矿节点可以验证其记账时间间隔是否满足冷却时长的要求,若满足要求,才会认可该区块,并将其添加至本地的区块链中,否则不会认可该区块。
第四方面,本发明实施例提供一种矿池服务器,矿池服务器包括:
存储器,用于存储计算机指令;
通信接口,用于与终端设备以及挖矿节点通信;
矿池服务器还包括Master TEE或连接有Master TEE;
矿池服务器还包括处理器,与存储器、通信接口以及Master TEE相连,其中,在存储器中的计算机指令被处理器执行时,处理器结合Master TEE执行第一方面或第一方面的任意一个实施例提供的方法。
第五方面,本发明实施例提供一种终端设备,终端设备包括:
存储器,用于存储计算机指令;
通信接口,用于与矿池服务器通信;
终端设备还包括Slave TEE或连接有Slave TEE;
终端设备还包括处理器,与存储器、通信接口以及Slave TEE相连,其中,在存储器中的计算机指令被处理器执行时,处理器结合Slave TEE执行第二方面或第二方面的任意一个实施例提供的方法。
第六方面,本发明实施例提供一种挖矿节点,挖矿节点包括:
存储器,用于存储计算机指令;
通信接口,用于与矿池服务器通信;
处理器,与存储器、通信接口相连,其中,在存储器中的计算机指令被处理器执行时,处理器执行第三方面或第三方面的任意一个实施例提供的方法。
第七方面,本发明实施例提供一种矿池,包括:矿池服务器以及位于区块链系统的并行链上的挖矿节点,挖矿节点采用分布式数据区块链存储数据,区块链系统包括至少一个并行链
其中,挖矿节点用于:向矿池服务器发送待定记账区块的区块头主体的哈希值以及在并行链上挖矿的难度目标值;
矿池服务器用于:接收并存储区块头主体的哈希值以及难度目标值,并在接收到终端设备发送的记账请求后,向终端设备发送区块头主体的哈希值以及难度目标值,以使终端设备配置的Slave TEE判断自身的累积未用时长是否大于根据难度目标值计算出的累积未用下限时长,并在大于时对记账权确定信息进行签名,其中,记账权确定信息包括区块头主体的哈希值以及Slave TEE绑定的钱包账号的地址主体;接收终端设备发送的记账权确定信息以及记账权确定信息的签名,并将记账权确定信息以及记账权确定信息的签名发送至挖矿节点;
挖矿节点还用于:生成包含钱包账号的地址主体以及记账权确定信息的签名的记账区块,并将记账区块添加至本地的区块链中。
在一些实施例中,矿池服务器还用于:在接收终端设备发送的记账请求之前,接收终端设备发送的入池申请,并在矿池服务器配置的Master TEE中判断矿池服务器的容量是否小于容量阈值,若小于,则根据Master TEE生成授权信息对终端设备进行入池授权,以告知终端设备在授权开始时间之后的授权使用时长内向矿池服务器发送的记账请求可被矿池服务器接受,若大于,则发送消息通知终端设备未获入池授权,其中,授权使用时长为保存在矿池服务器配置的Master TEE中的预配置数据。
在一些实施例中,矿池服务器的容量小于容量阈值,包括:
当前的授权周期内的入池授权量小于第一阈值;其中,授权周期以及第一阈值为保存在矿池服务器配置的Master TEE中的预配置数据。
为使本发明的上述目的、技术方案和有益效果能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1(A)至图1(B)示出了一种可用于本申请实施例中的区块链系统的架构示意图;
图2示出了本发明实施例提供的区块链系统的一种工作流程的示意图;
图3示出了本发明实施例提供的一种记账方法的流程图;
图4(A)至图4(B)示出了本发明实施例提供的另一种记账方法的流程图;
图5示出了本发明实施例提供的一种矿池服务器的功能模块图;
图6示出了本发明实施例提供的一种终端设备的功能模块图;
图7示出了本发明实施例提供的一种挖矿节点的功能模块图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于将一个实体或者操作与另一个实体或操作区分开来,而不能理解为指示或暗示相对重要性,也不能理解为要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明实施例提供的记账方法应用于区块链系统中。该区块链系统包括至少一个并行链,每个并行链上都包括至少一个挖矿节点,当然并行链上还可以包括其他节点,挖矿节点的功能包括挖矿以及记账,所谓挖矿是指挖矿节点与其所在的并行链上的其他节点根据区块链的共识算法竞争记账权,所谓记账,是指挖矿节点竞争记账权成功后,根据交易缓冲区中的待记账交易生成新的区块,并将新的区块添加至其所在的并行链对应的区块链数据(账本)中,以及,挖矿节点还会与其所在的并行链上的其他节点同步区块数据,即挖矿节点还是其所在的并行链上的全账本节点。除挖矿节点以外,并行链上的其他节点不参与挖矿,但可参与记账。
之前已经阐述过,挖矿节点是并行链上的全账本节点,但其存储的交易数据仅仅是和其所在的并行链相关的交易数据,从区块链系统中的每个并行链中选取一个挖矿节点,例如有N(N≥1)个并行链共选取N个挖矿节点,构成的挖矿节点的集合称为账本集群,账本集群中存储了区块链系统中所有的交易数据,即用于维护全网账本,以便提供全网交易数据的查询等功能。需要指出,由于每个挖矿节点都是并行链上的全账本节点,所以在构成账本集群时,每个并行链上选取一个挖矿节点就够用了,当然若出于可靠性等方面的考虑在同一个并行链上选取多个挖矿节点也是可行的。
在区块链系统的至少一个并行链上搭建有至少一个矿池。其中,每个矿池均包括矿池服务器以及并行链上的挖矿节点,上面所称的在至少一个并行链上搭建矿池,是指该矿池包含这些并行链上的挖矿节点,所以通过该矿池能够在这些并行链上挖矿以及为这些并行链记账。在一些实现方式中,矿池包括矿池服务器以及一个账本集群,即矿池可以在整个区块链系统中所有的并行链上挖矿以及记账。
在矿池中,挖矿节点的挖矿功能实际上是由接入到矿池中的矿工完成的,矿工是指能够运行共识算法的设备,矿工接入到矿池服务器后,挖矿节点将共识计算的任务通过矿池服务器分发给各矿工实际执行,由各矿工竞争记账权,当然在挖矿节点外部看来,仍然是挖矿节点在竞争记账权。矿池服务器除了作为挖矿节点与矿工之间的通信中介,还用于矿工的入池管理,即是否允许矿工接入到矿池,以及用于发放矿池奖励等功能,在后文还会具体介绍。
在一些实现方式中,矿池中还可以包括数据库,用于存储挖矿过程中的涉及的数据,例如矿工的注册信息、挖矿节点发送的和记账相关的信息等。这样的数据库可以部署在矿池服务器上,或者也可以部署在单独的数据库服务器上,矿池服务器可以访问该数据库服务器,后文阐述时为简单起见,统一称之为矿池服务器的数据库。
在本发明实施例中,矿工是指终端设备配置的Slave TEE,所谓配置是指终端设备是Slave TEE的载体。Slave TEE与外部设备(例如矿池服务器)的通信可以借助于终端设备上的应用程序完成,如上面所称的矿工接入到矿池服务器,具体是指终端设备接入到矿池服务器,然后由Slave TEE负责挖矿。下面简单介绍可信执行环境(Trusted ExecutionEnvironment,简称TEE)的概念:
TEE是与设备上的富操作系统(RichOperatingSystem,简称RichOS,例如Android等)并存的运行环境,并且给RichOS提供安全服务。TEE具有其自身的执行空间。TEE所能访问的软硬件资源是与RichOS分离的。TEE提供了可信应用(TrustedApplication,简称TA)的安全执行环境,同时也保护可信应用的资源和数据的保密性,完整性和访问权限。为了保证TEE本身的可信根,TEE在安全启动过程中是要通过验证并且与RichOS隔离的。在TEE中,每个可信应用是相互独立的,而且不能在未授权的情况下不能互相访问。
TEE可以采用,但不限于如下两种方式:
(1)借助特定CPU芯片提供的安全防护能力,比如IntelSGX、ARMTrustZone等,构造一个可信执行环境。为了保障安全强度,还可以在可信执行环境底层增加可信硬件支持,比如采用符合可信平台模块(TrustedPlatformModule,简称TPM)标准的安全芯片,或采用符合可信密码模块(TrustedCryptographyModule,简称TCM)标准的安全芯片。
(2)采用加密锁(俗称软件狗)实现可信执行环境。常见的软件狗常包装成一个通用串行总线(UniversalSerialBus,简称USB)设备,软件狗内既提供文件存贮,也支持运行经过定制的程序。采用软件狗,可以不必限定设备的设备类型,只要设备有USB接口即可,降低了对设备的要求。
TEE外部要使用TEE的功能,或者获取TEE中存储的数据,必须通过调用TEE提供的对外接口的方式,例如应用编程接口(Application Programming Interface,简称API)。
在本发明实施例中,可能涉及的TEE主要有两类,一类是终端设备配置的TEE,称为Slave TEE,主要用于参与记账权竞争,Slave TEE作为矿工,绑定有挖矿使用的钱包账号的地址,用于接收挖矿收益。另一类是矿池服务器配置的Master TEE,主要用于支持矿池容量控制,以及分散Slave TEE的算力等功能。两类TEE的功能不同,但可以采用相同的硬件结构实现。关于两类TEE的具体功能,在后文再进一步阐述。需要指出,后文在阐述时,若提到终端设备或矿池服务器完成的功能,如无特别说明,是指在其RichOS中完成的功能,若是在终端设备或矿池服务器配置的TEE中完成的功能,一般会具体指出是在Slave TEE或MasterTEE中完成的功能。
图1(A)至图1(B)示出了一种可用于本申请实施例中的区块链系统100的架构示意图。参照图1(A),区块链系统100可以包括并行链101、102、103和网络104、105。
并行链101包括路由节点1011,挖矿节点1012、1014、1015、1016、1018,SPV节点1013、1017和网络1019。网络1019用于在路由节点1011,挖矿节点1012、1014、1015、1016、1018和SPV节点1013、1017之间提供通信链路的介质。网络1019可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。并行链101的挖矿节点1012、1014、1015、1016、1018采用分布式数据区块链存储数据。并行链101的SPV节点1013、1017绑定有钱包账号的地址,SPV节点1013、1017绑定的钱包账号的地址对应的并行链为并行链101,即SPV节点1013、1017所在的并行链。
并行链102包括路由节点1021,挖矿节点1022、1023、1025、1026,SPV节点1024和网络1027。网络1027用于在路由节点1021,挖矿节点1022、1023、1025、1026和SPV节点1024之间提供通信链路的介质。网络1027可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。并行链102的挖矿节点1022、1023、1025、1026采用分布式数据区块链存储数据。并行链102的SPV节点1024绑定有钱包账号的地址,SPV节点1024绑定的钱包账号的地址对应的并行链为并行链102,即SPV节点1024所在的并行链。
并行链103包括路由节点1031,挖矿节点1032、1033、1035、1036,SPV节点1034、1037和网络1038。网络1038用于在路由节点1031,挖矿节点1032、1033、1035、1036和SPV节点1034、1037之间提供通信链路的介质。网络1038可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。并行链103的挖矿节点1032、1033、1035、1036采用分布式数据区块链存储数据。并行链103的SPV节点1034、1037绑定有钱包账号的地址,SPV节点1034、1037绑定的钱包账号的地址对应的并行链为并行链103。
用户可以使用SPV节点1013、1017通过网络1019与路由节点1011交互,以接收或发送消息等。用户也可以使用SPV节点1024通过网络1027与路由节点1021交互,以接收或发送消息等。用户还可以使用SPV节点1034、1037通过网络1038与路由节点1031交互,以接收或发送消息等。
SPV节点上可以安装有各种通讯客户端应用,例如简化支付验证应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。用户可以使用SPV节点上安装的简化支付验证应用,实现数字货币管理、转账、收款、查看余额、查看交易记录等操作。
SPV节点可以是硬件,也可以是软件。当SPV节点为硬件时,可以是智能手机、平板电脑、笔记本电脑、台式机等电子设备。当SPV节点为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供简化支付验证服务),也可以实现成单个软件或软件模块。在此不做具体限定。
路由节点可以是硬件,也可以是软件。当路由节点为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当路由节点为软件时,可以实现成多个软件或软件模块(例如用来提供路由服务),也可以实现成单个软件或软件模块。在此不做具体限定。
挖矿节点可以是硬件,也可以是软件。当挖矿节点为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当挖矿节点为软件时,可以实现成多个软件或软件模块(例如用来提供挖矿和记账服务),也可以实现成单个软件或软件模块。在此不做具体限定。
参照图1(B),区块链系统100还包括矿池110和矿池120。
矿池110包括矿池服务器1101和账本集群1102,账本集群1102包括并行链101上的挖矿节点1012,并行链102上的挖矿节点1022,并行链103上的挖矿节点1032。网络1106用于在矿池服务器1101和账本集群1102之间提供通信链路的介质,网络1106可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备1103、1104、1105接入到矿池服务器参与挖矿(Slave TEE未示出)。网络1107用于在矿池服务器1101和终端设备1103、1104、1105之间提供通信链路的介质,网络1107可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
矿池120包括矿池服务器1201和账本集群1202,账本集群1202包括并行链101上的挖矿节点1014,并行链102上的挖矿节点1023,并行链103上的挖矿节点1033。网络1206用于在矿池服务器1201和账本集群1202之间提供通信链路的介质,网络1206可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备1203、1204、1205接入到矿池服务器参与挖矿(Slave TEE未示出)。网络1207用于在矿池服务器1201和终端设备1203、1204、1205之间提供通信链路的介质,网络1207可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
矿池服务器可以是硬件,也可以是软件。当矿池服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当矿池服务器为软件时,可以实现成多个软件或软件模块(例如用来控制终端设备的接入),也可以实现成单个软件或软件模块。在此不做具体限定。
终端设备可以是手机、台式机、平板电脑、个人数字助理、智能穿戴设备,智能车载设备、路由器、机顶盒、嵌入式设备等电子设备。终端设备上可以安装有各种通讯客户端应用,例如挖矿应用、钱包应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。用户可以使用终端设备上安装的挖矿应用参与挖矿并获得挖矿收益。
可以理解,图1(A)以及图1(B)中的并行链的数量仅仅是示意性的。根据实现需要,可以具有任意数量的并行链,特别地,当并行链的数量为1时,并行链退化为单链,此时将不涉及跨链的交易。每个并行链中的路由节点、挖矿节点、网络和SPV节点的数量也仅仅是示意性的,根据实现需要,可以具有任意数量的路由节点、挖矿节点、网络和SPV节点。并行链上搭建的矿池的数量也仅仅是示意性的,根据实现需要,可以搭建任意数量的矿池(需要挖矿节点提供支持)。接入到矿池的终端设备的数量也仅仅是示意性的,终端设备的数量取决于矿池的实际用户的数量。
关于图1(A)以及图1(B)示出的区块链系统的工作过程,以图2中的步骤为例,简述如下:
步骤S201:SPV节点响应于接收到交易请求,将所收到的交易请求发送给该SPV节点所在的并行链的路由节点。
之前已经提到,SPV节点中可以安装有简化支付验证应用。用户可以使用SPV节点中的简化支付验证应用提交交易请求。这里,交易请求为转账请求,即将SPV节点绑定的钱包账号的地址中的数字货币转给另一钱包账号的地址。这样,SPV节点可以响应于接收到上述交易请求,将上述交易请求发送给该SPV节点所在的并行链的路由节点。每个SPV节点可以绑定有账号地址,在一些实现方式中,可以采用钱包应用为SPV节点生成并绑定钱包账号的地址。
每个SPV节点绑定的钱包账号的地址对应的并行链就是该SPV节点所在的并行链。具体实施时,可以采用各种实现方式将SPV节点绑定的钱包账号的地址对应到区块链系统所包括的并行链中的一个并行链。例如,可以在区块链系统所包括的并行链中随机选取一个并行链作为SPV节点绑定的钱包账号的地址对应的并行链。
步骤S202:路由节点响应于对所收到的交易请求校验通过,将所收到的交易请求添加到该路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给该路由节点的各个同链挖矿节点。
路由节点可以响应于接收到步骤S201中SPV节点发送的交易请求,对所收到的交易请求进行校验。如果校验通过,则可以将所收到的交易请求添加到该路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给该路由节点的各个同链挖矿节点。
路由节点对所收到的交易请求进行校验可以包括但不限于对交易请求进行合法性校验。其中,合法性校验可以包括但不限于验证交易请求中的转出钱包账号的地址是否存在未花费交易输出(UnspentTransactionOutput,简称UTXO)记录、交易请求中的转出钱包账号的地址的余额是否支持本次交易请求、交易请求中的转出钱包账号的地址是否是路由节点中存储的转出钱包账号的地址黑名单中的钱包账号的地址、交易请求中的转入钱包账号的地址是否是路由节点中存储的转入钱包账号的地址黑名单中的钱包账号的地址等等。具体实施时,对交易请求进行校验还可以包括其他校验。
路由节点的交易请求集合中存储了该路由节点校验通过的各个交易请求。路由节点对所收到的交易请求进行签名可以是利用该路由节点的私钥对所收到的交易请求进行签名。路由节点的同链挖矿节点是与该路由节点属于同一并行链的挖矿节点。例如,在图1(A)中,挖矿节点1012、1014、1015、1016、1018是路由节点1011的同链挖矿节点。
具体实施时,由于每个并行链可以基于对等网络(PeertoPeer,简称P2P)实现,因此,路由节点在将所收到的交易请求签名后广播给该路由节点的同链挖矿节点时,可以是将所收到的交易请求签名后广播给该路由节点的相邻同链挖矿节点,再由上述该路由节点的相邻同链挖矿节点将上述签名后的交易请求广播给各自的相邻挖矿节点。
需要说明的是,路由节点可以在对从SPV节点接收到的交易请求进行校验通过的情况下,先将所收到的交易请求添加到该路由节点的交易请求集合中,再将所收到的交易请求签名后广播给该路由节点的各个同链挖矿节点,或者,路由节点也可以在对从SPV节点接收到的交易请求进行校验通过的情况下,先将所收到的交易请求签名后广播给该路由节点的各个同链挖矿节点,再将所收到的交易请求添加到该路由节点的交易请求集合中,本申请对此不做具体限定。
步骤S203:路由节点实时将该路由节点的同链挖矿节点的区块链同步到本地的区块链。
路由节点不会执行挖矿和记账的操作,但是,路由节点中同步保存了该路由节点所在并行链的区块链数据(账本)。需要说明的是,路由节点可以随时执行步骤S203,并不限定于在执行完步骤S202之后执行步骤S203。
步骤S204:挖矿节点响应于对从同链路由节点接收到的签名后交易请求验证通过,将签名后交易请求中该挖矿节点的链内交易请求添加到该挖矿节点的待处理交易请求集合。
挖矿节点可以响应于从同链路由节点接收到签名后交易请求,首先,对所收到的签名后交易请求进行验证。其次,如果验证通过,则挖矿节点可以将签名后交易请求中该挖矿节点的链内交易请求添加到该挖矿节点的待处理交易请求集合。
挖矿节点对所收到的签名后交易请求进行验证具体可以包括:利用该挖矿节点的同链路由节点的公钥对所收到的签名后交易请求进行签名验证,如果签名验证通过再对所收到的签名后交易请求进行合法性校验,如果合法性校验通过,则可以确定对挖矿节点对所收到的签名后交易请求进行验证通过。
在本发明实施例中,交易请求可以包括出账请求和入账请求。例如,交易请求D为将钱包账号的地址A中的X个数字货币转给钱包账号的地址B。那么交易请求D可以包括出账请求D1和入账请求D2,其中,出账请求D1为将钱包账号的地址A中的数字货币减少X个,入账请求D2为将钱包账号的地址B中的数字货币增加X个。
签名后交易请求中该挖矿节点的链内交易请求具体可以包括以下两种情况:其一,签名后交易请求中的转出钱包账号的地址和转入钱包账号的地址对应的并行链都是该挖矿节点所在的并行链,那么签名后交易请求中的出账请求和入账请求均为该挖矿节点的链内交易请求。其二,签名后交易请求中的转出钱包账号的地址对应的并行链是该挖矿节点所在的并行链,而签名后交易请求中的转入钱包账号的地址对应的并行链不是该挖矿节点所在的并行链,那么签名后交易请求中的出账请求是该挖矿节点的链内交易请求,而签名后交易请求中的入账请求不是该挖矿节点的链内交易请求。
每个挖矿节点中都可以在缓冲区中保存该挖矿节点的待处理交易请求集合。属于同一并行链的各个挖矿节点可以按照预设的共识机制竞争该挖矿节点所在并行链的记账权。如果某个挖矿节点竞争到该挖矿节点所在并行链的记账权,则可以用该挖矿节点本地存储的待处理交易请求集合中的待处理交易请求形成新区块,并将所形成的新区添加至该挖矿节点本地的区块链(账本)中。
之前已经提到,在本发明实施例中,由于采用了矿池结构,挖矿节点上竞争记账权的任务实际上通过矿池服务器被分发给接入到矿池的各矿工完成,挖矿节点的主要工作是在矿工竞争记账权成功后负责记账,当然在挖矿节点外部看来,仍然是挖矿节点在挖矿以及记账。关于矿池如何工作,在后文再进一步介绍,此处暂时只关注挖矿节点对外提供的功能。
步骤S205:路由节点确定该路由节点的交易请求集合中确认已出账且未入账的未入账交易请求。
路由节点除了可以在本地交易请求集合中记录交易请求之外,还可以实时更新并记录本地交易请求集合中每个交易请求对应的当前处理状态。
根据步骤S203,由于路由节点中同步存储了该路由节点所在并行链的区块链数据,因此,路由节点可以首先在本地交易请求集合中查询对应的当前处理状态为尚未出账的未出账交易请求,然后再根据本地同步存储的区块链数据,确定各个未出帐交易请求是否已确认出账。例如,路由节点可以在本地同步存储的区块链数据中确定是否在该交易请求中的出账请求对应的区块之后存在六个及六个以上的区块,如果是,则可以确认该交易请求确认已出账。如果确定未出帐交易请求确认已出账,则可以确定该交易请求为确认已出账且未入账的未入账交易请求。
步骤S206:路由节点将所确定的未入账交易请求发送给目标并行链的路由节点。
路由节点可以将步骤S205中所确定的未入账交易请求发送给目标并行链的路由节点。其中,上述目标并行链是所确定的未入账交易请求中的入账钱包账号的地址对应的并行链。例如,对于未入账交易请求D:将钱包账号的地址A中的X个数字货币转给钱包账号的地址B,其中,钱包账号的地址A对应并行链101,钱包账号的地址B对应并行链102,则对应步骤S206,可以是并行链101的路由节点将未入账交易请求D发送给并行链102的路由节点。
步骤S207:路由节点响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给该路由节点的同链挖矿节点。
路由节点的异链路由节点是与该路由节点所在的并行链不同的并行链中的路由节点。如果路由节点接收到异链路由节点发送的交易请求,表明上述异链路由节点向该路由节点发送了异链路由节点的交易请求集合中确认已出账且未入账的未入账交易请求。则上述路由节点可以将所收到的交易请求签名后广播给该路由节点的同链挖矿节点。这里,路由节点对交易请求进行签名可以是路由节点使用该路由节点的私钥进行签名。
例如,对于未入账交易请求D:将钱包账号的地址A中的X个数字货币转给钱包账号的地址B,其中,钱包账号的地址A对应并行链101,钱包账号的地址B对应并行链102,则对应步骤S206,可以是并行链101的路由节点将未入账交易请求D发送给并行链102的路由节点。对应步骤S207,可以是并行链102的路由节点将未入账交易请求D签名后广播给并行链102中的挖矿节点。从而,102链的挖矿节点可以执行步骤S204,如果接收到同链路由节点,即并行链102的路由节点发送的签名后交易请求D,首先对收到的签名后交易请求D进行验证,如果验证通过,将签名后交易请求中该挖矿节点的链内交易请求添加到该挖矿节点的待处理交易请求集合。其中,交易请求D中并行链102的挖矿节点的链内交易请求是将钱包账号的地址B增加X个数字货币。
需要说明的是,上述步骤仅仅是为说明区块链系统的工作原理所举的示例,在具体实施时,步骤S201到步骤S207的执行顺序可以按照各种方式重新排列组合,本申请对此不做具体限定。
在图1(A)至图1(B)示出的区块链系统中,交易处理过程从传统的单链串行方式改进为多链并发方式,随着并行链数的增加,区块链系统的每秒交易次数(TransactionsPerSecond,简称TPS)随之提高,改善了传统的区块链吞吐率低,难以大规模投入商业应用的问题。同时,SPV节点之间的交易都需要通过路由节点才能完成,从而利用路由节点能够实现对数字货币交易的有效监管,改善了传统的区块链因其去中心化的特征而监管困难的问题。可以理解的,图1(A)至图1(B)示出的仅仅是区块链系统的一种具体的架构方式,但并不是唯一的架构方式,例如,在有的实现方式中,并行链上也可以不包含SPV节点,因此图示的区块链系统并不应当视为对本发明保护范围的限制。
另一方面,该区块链系统通过在并行链的挖矿节点上形成矿池进行挖矿,相较于矿工节点直接在并行链上挖矿的方式,至少具有如下优点:
区块链系统需要一定数量的分布式全账本节点来保障安全,若由并行链上的矿工节点负责记账,由于矿工节点数量较多,因此账本数据的全网广播将占用大量带宽,对于高吞吐率的并行链而言,需要同步的数据量较大,网络负担进一步增加,而过多的全账本节点并不能带来额外的价值。同时,要支持大量同步数据的传输,对矿工节点的设备性能以及网络带宽都有较高的要求,在实际中,特别是公有链上,矿工节点多为个人设备,其性能有限且分布于不同的网络环境中,这一要求难以满足。此外,大多数参与挖矿的个人并没有或者只有很少的记账需求,只是希望通过挖矿获得经济利益,若强迫其参与记账,很可能导致用户流失。
在本发明实施例提供的区块链系统中,由于采用了矿池的方式,作为矿工的SlaveTEE只竞争记账权,并不直接记账,只有挖矿节点才进行记账,挖矿节点的数量远小于SlaveTEE的数量,因此挖矿节点间需要同步的数据量不会太大。在一些实现方式中,矿池可以部署在云端,矿池服务器以及挖矿节点的性能、网络传输的带宽都可以得到保障,数据同步不会给网络带来严重的负担。同时,由于Slave TEE不参与记账,也就无需同步区块链的数据,因此终端设备的性能以及所处的网络环境不会成为区块链系统的性能瓶颈。
矿池可以由有大量记账需求的用户来运营,例如,企业用户在资金上链后可能存在大量的记账需求,企业用户通常对挖矿收益兴趣不大,但为实现记账需求,可以吸引个人用户接入到矿池帮助其挖矿,个人用户能够获得挖矿收益,又无需记账,自然也愿意加入到矿池中,两种类型的用户各取所需,有利于改善区块链系统的运营状况。区块链系统上可以搭建多个矿池,不同的企业可以搭建属于自己的矿池,共享整个区块链系统,同时也便于将挖矿的算力分散到不同的矿池中,避免算力集中,影响区块链系统的安全性。进一步的,在一些实现方式中,并行链上的所有挖矿节点都被纳入到某个矿池中,并行链上不存在游离于矿池之外的挖矿节点,用户只能通过矿池参与挖矿,由矿池服务器对终端设备进行管控,避免攻击者进行算力聚集。
此外,本发明实施例中的区块链系统采用并行链而不是普通的单链,支持将各Slave TEE分散到不同的并行链上进行挖矿,有效避免算力集中,具体如何实现算力的分散,在后文再具体介绍可能的实现方式。
图3示出了本发明实施例提供的一种记账方法的流程图。图3描述了一次记账权竞争的过程。参照图3,该方法包括:
步骤S301:挖矿节点向矿池服务器发送待定记账区块的区块头主体的哈希值以及在并行链上挖矿的难度目标值。
在区块链系统的运行过程中,挖矿节点的交易缓冲区里保存有待记账的交易,待定记账区块是指根据待记账交易所确定的新的区块,在开始挖矿前,该区块的区块体已经确定,其中包含待记账交易。
待定记账区块的区块头可划分为两部分,分别是主体部分以及附加部分。在开始挖矿前,主体部分也已经确定,例如,在一些实现方式中,区块头主体可以包括区块的版本号、该区块在区块链中的上一区块的区块头的哈希值、并行链的链标识(如并行链编号)、根据区块体中的交易构建的默克尔树(Merkle Tree)的根、表示区块生成时间的时间戳、在并行链上挖矿的难度目标值等,其中,并行链是指生成该区块的挖矿节点所在的并行链。可以理解的,根据实际需求,区块头主体还可以包括更多或更少的字段,例如,在某些实现方式中,为了将PoW共识机制与本发明实施例中采用的共识机制叠加使用以改善区块链系统的安全性,则区块头主体中还可以包含PoW算法中所要使用的随机数(Nonce)。
待定记账区块的附加部分要在挖矿完成后才能确定,具体由竞争到记账权的Slave TEE通过矿池服务器返回给挖矿节点,挖矿节点获得附加部分后,才能组成完整的区块头。区块头的附加部分至少包括记账权确定信息的签名以及竞争到该区块记账权的Slave TEE绑定的钱包账号的地址主体,其具体含义在后文再介绍。可以理解的,区块头的附加部分还可以包括其他信息,例如认证码,具体在后文再介绍。
根据区块头主体可以计算区块头主体的哈希值,该哈希值能够唯一标识待定记账区块。难度目标值表征在并行链上挖矿的难度(挖矿难度越大平均每次挖矿时间越长),难度目标值由挖矿节点负责维护和更新,难度目标值未更新时,同一并行链上的各挖矿节点在同一时刻的难度目标值是相同。在一些实现方式中,难度目标值通过如下公式更新:
新的难度目标值=当前难度目标值*(当前周期实际时间/一个周期的预期时间)
这里的周期是指难度目标值的更新周期,例如,可以以挖矿节点每生成1008个区块为一个周期,假定预期每5分钟生成一个区块,则一个周期的预期时间为5040(1008*5)分钟,而当前周期的实际时间可以在生成区块的过程中统计获得。最开始时,可以以一个某种挖矿环境下的难度目标值为初始的难度目标值,以后按照上面的公式更新难度目标值即可。
可以理解的,在一些实现方式中,区块头主体的哈希值也可以用一些其他的能够唯一标识该区块的信息代替,例如该区块在区块链中的上一区块的区块头的哈希值,或者区块头主体的各字段拼接后形成的字符串等等。采用区块头主体的哈希值的优点在于:第一,哈希值较为简短,可以减小需要传输的数据量;第二,区块头主体的哈希值要在开始组装待定记账区块时才能确定,之前是不能确定的,因此各Slave TEE在区块头主体尚未确定时是无法提前开始算力竞争的(根据步骤S306,竞争记账权时区块头主体的哈希值会被用于生成签名),从而采用区块头主体的哈希值标识待定记账区块有利于改善竞争记账权过程中的公平性。
在一轮算力竞争已经结束,要开采新的待定记账区块时,挖矿节点向矿池服务器发送区块头主体的哈希值以及难度目标值,即执行步骤S301。在待定记账区块的开采过程中(尚未有Slave TEE竞争到记账权),难度目标值维持不变,但可能会有新的待记账交易被纳入到待定记账区块的区块体中,造成区块头主体中的某些字段的值发生变化,例如时间戳、默克尔树的根,进而导致区块头主体的哈希值也会发生变化,此时矿池服务器需要向矿池服务器发送新的区块头主体的哈希值。在一些实现方式中,挖矿节点每隔预设的时间段(如半分钟、一分钟等)检测一次是否需要向矿池服务器发送区块头主体的哈希值的哈希值及难度目标值,根据上面阐述的,当检测到当前已开始开采新的区块或者有新的交易被纳入到待定记账区块时,发送相应的数据。
若区块链系统采用图1(A)至图1(B)中的架构方式实现,则步骤S301可以在图2中的步骤S204之后执行,步骤S204中提到的待处理交易请求集合就是待记账的交易。
步骤S302:矿池服务器存储挖矿节点发送的区块头主体的哈希值以及难度目标值。
区块头主体的哈希值以及难度目标值可以保存在矿池服务器的数据库中,当然也可以保存在内存中或者其他位置,不作限定。不同的并行链上的挖矿节点发送的区块头主体的哈希值和难度目标值可以分开保存,便于在后续使用时进行区分。
步骤S303:终端设备向矿池服务器发送记账请求。
在步骤S303开始执行之前,终端设备已经接入到矿池服务器,并可参与挖矿,记账请求用于向矿池服务器表明终端设备配置的Slave TEE希望参与竞争记账权。在一些实现方式中,终端设备每隔一端时间发送一次记账请求,该时间可以为固定的,也可以由用户在终端设备上安装的挖矿应用中配置,例如将发起请求的时间间隔配置为1至60分钟内的某个时间。在一些实现方式中,终端设备发送记账请求的时间间隔还可能受Slave TEE竞争记账是否成功的影响,例如,在记账竞争成功后可以闲置一段时间暂时不参与竞争记账,或者,在记账竞争失败后接着参与竞争记账。
步骤S304:矿池服务器向终端设备发送区块头主体的哈希值以及难度目标值。
矿池服务器收到记账请求后,将竞争记账所需的区块头主体的哈希值以及难度目标值返回给终端设备,其中,区块头主体的哈希值以及难度目标值是步骤S302中获得的。
在区块链系统有多个并行链时,Slave TEE每次只能竞争其中一个并行链上的记账权,应当将该并行链上的挖矿节点发送的区块头主体的哈希值以及难度目标值发送给终端设备。至于如何确定Slave TEE应当在哪个并行链上挖矿,可以采取不同的实现方式,例如不限定Slave TEE在哪个并行链上挖矿,随机选择一个并行链作为其挖矿的并行链,又例如,限制Slave TEE只能在某个特定的并行链上挖矿,等等。
步骤S305:终端设备配置的Slave TEE判断自身的累积未用时长是否大于根据难度目标值计算出的累积未用下限时长。
Slave TEE中设置有时钟,该时钟独立于终端设备上的时钟,并时钟只能被SlaveTEE内部的程序(TA)所访问,不能被Slave TEE之外的程序(如终端设备上的程序)所访问。
在Slave TEE制造时可以配置好累积未用时长的初始值,在Slave TEE竞争记账权的过程中,从开始竞争记账权到Slave TEE中设置的时钟的当前时间之间所经过/消逝的时长会累加到累积未用时长。
其具体的累加方式不做限定,例如,可以由Slave TEE中持续运行的处理过程(或称背景线程)控制累积未用时长的变化。又例如,在每次竞争记账权时,需要先获取累积未用时长,在获取时先确定从开始竞争记账权到Slave TEE中设置的时钟的当前时间之间所经过/消逝的时长,然后将所确定的时长累加到累积未用时长中。在后一种方式中,仅仅让Slave TEE加电,而不去竞争记账权,当前累积未用时长不会累加。
累积未用下限时长根据难度目标值计算获得,例如,在一些实现方式中,可以通过如下公式进行计算:
累积未用下限时长=M/难度目标值
其中,M为预设的常数,可以保存在Slave TEE中,累积未用下限时长表征在指定的难度目标值下,每个Salve TEE两次获得记账权之间的大致时间间隔。因此,若Slave TEE判断当前的累积未用时长超过累积未用下限时长,则Slave TEE可确定自己获得记账权。若获得记账权,执行步骤S306,若未获得记账权,则可以继续参与下一轮记账权的竞争。需要指出,Slave TEE可获得记账权,并不意味这Slave TEE能够记账成功,后续步骤中还可能存在其他验证步骤,导致Slave TEE记账失败,所以此处获得记账权应理解为纯粹从共识算法的角度来看能够获得记账权。
Slave TEE在获得记账权后,将累积未用下限时长更新为累积未用下限时长与累积未用下限时长的差。即竞争到记账权会使得累积未用时长消耗掉累积未用下限时长,从而保证矿池中各Slave TEE公平竞争记账权。
需要指出,在步骤S304之后,首先是终端设备接收到了难度目标值和区块头主体的哈希值,然后再将这两项信息传递给Slave TEE的(分别用于步骤S305和步骤S306),传递信息的方式可以是调用Slave TEE提供的对外接口,将难度目标值和区块头主体的哈希值作为调用参数,该接口对外实现的功能即竞争记账权的功能(步骤S305和步骤S306)。
根据上面的阐述不难看出,上述共识算法与PoW算法存在很大区别,无需进行无意义的哈希碰撞计算,在Slave TEE中只需要进行累积未用时长的维护,以及将累积未用时长与累积未用下限时长进行简单的比较,算法所涉及的计算量比PoW算法小得多,有效避免了Slave TEE中计算资源的浪费,降低了Slave TEE的功耗,有效节省了电能的消耗。或者说,Slave TEE可以采用低成本、低功耗的硬件实现方式,进一步降低挖矿所需的设备门槛,有利于矿池吸引更多的用户参与挖矿。进一步的,Slave TEE在大部分时间,例如竞争记账权的间隔,其计算资源处于闲置状态,甚至可以将其用于执行其他任务。
需要指出,在本发明实施例的阐述中经常提到Slave TEE的算力,但其含义和采用PoW共识算法时矿工的算力是不同的,并不代表运算能力。当然Slave TEE的算力也表征一种竞争获得记账权的能力,从这一点上讲其与现有技术中算力的定义也有类似之处,故沿用了此说法。
步骤S306:Slave TEE对记账权确定信息进行签名。
记账权确定信息包括和竞争记账权相关的关键信息。在本发明实施例中,记账权确定信息至少包括待定记账区块的区块头主体的哈希值以及Slave TEE绑定的钱包账号的地址主体。在不同的实现方式中,记账权确定信息还可以包括步骤S305中提到的累积未用下限时长、步骤S301中提到的随机数以及后文将会提到的认证码,等等。
其中,Slave TEE绑定有钱包账号的地址,用于接收挖矿收益,钱包账号的地址在Slave TEE所在的区块链系统中具有唯一性。钱包账号的地址至少包括钱包账号的地址主体,在一些实现方式中还可以包括附加部分。Slave TEE可以响应于终端设备发出的账号地址生成请求生成钱包账号的地址,每个钱包账号的地址与每个Slave TEE唯一对应,即具有绑定关系。例如,终端设备配置好Salve TEE后,用户可以在终端设备上安装的钱包应用中作出的账号地址生成操作,终端设备响应于该操作并生成上述账号地址生成请求,进而在Slave TEE中生成钱包账号的地址。
钱包账号的地址主体的生成方法可以采用现有的区块链中生成钱包账号的地址的方法,即本发明实施例中的钱包账号的地址主体的含义与现有技术中的钱包账号的地址的含义一致。钱包账号的地址的附加部分可以包括,但不限于Slave TEE的虚拟并行链标识、钱包账号的类型等信息,关于虚拟并行链标识,在后文再具体阐述。即使不考虑钱包账号的地址的附加部分,钱包账号的地址主体也能够唯一标识Slave TEE,因此钱包账号的地址主体表明了记账者的身份,也属于竞争记账权过程中的关键信息之一。
在一些实现方式中,对记账权确定信息的签名可以采用非对称加密的方式,在Slave TEE中事先保存第一私钥,另利用第一私钥加密记账权确定信息,生成记账权确定信息的签名。区块链系统中任何持有与第一私钥匹配的第一公钥的节点(如矿池服务器、挖矿节点等)都可以利用第一公钥验证该签名的真实性。
步骤S307:终端设备向矿池服务器发送记账权确定信息以及记账权确定信息的签名。
步骤S308:矿池服务器向挖矿节点发送记账权确定信息以及记账权确定信息的签名。
在一些实现方式中,矿池服务器不对记账权确定信息以及记账权确定信息的签名进行处理,直接执行步骤S308。在另一些实现方式中,矿池服务器可以根据记账权确定信息以及记账权确定信息的签名对竞争记账权的结果进行验证,例如,当记账权确定信息使用第一私钥签名时,矿池服务器可以保存第一公钥并利用第一公钥验证签名的真实性,若签名验证成功,表明签名确实是Slave TEE生成的,从而可以证明矿池服务器接收到的记账权确定信息确实是Slave TEE发送的,进而可以执行步骤S308,若签名验证失败,说明矿池服务器接收到的记账权确定信息不是Slave TEE发送的,可能是攻击者伪造的,因此不执行步骤S308及后续步骤,避免攻击者获得记账权。
进一步的,矿池服务器还可以验证记账权确定信息的内容是否被篡改,以改善区块链系统的安全性,避免信息伪造。例如,矿池服务器可以验证本地保存的区块头主体的哈希值与记账权确定信息中的区块头主体的哈希值是否一致,从而确定Slave TEE在记账时是否使用了伪造的待定记账区块,又例如,矿池服务器可以根据本地保存的难度目标值换算出一个累积未用下限时长,验证该时长与记账权确定信息中的累积未用下限时长是否一致,从而确定Slave TEE在记账时是否使用了伪造的难度目标值。根据验证结果,若记账权确定信息未被篡改,继续执行步骤S308,否则不执行步骤S308及后续步骤。
之前在步骤S304中已经提到,在区块链系统有多个并行链时,Slave TEE每次只能竞争其中一个并行链上的记账权,因此步骤S308中矿池服务器向挖矿节点发送记账权确定信息以及记账权确定信息的签名,也应当是向Slave TEE竞争到记账权的那个并行链上的挖矿节点发送记账权确定信息以及记账权确定信息的签名,或者说Slave TEE竞争记账权过程中使用的区块头主体的哈希值和难度目标值最初来自哪个挖矿节点,竞争到记账权后,记账权确定信息以及记账权确定信息的签名也应该发送回该挖矿节点。
步骤S309:挖矿节点生成记账区块并将记账区块添加至本地的区块链中。
在步骤S301中已经提到,待定记账区块的区块头的附加部分至少包括记账权确定信息的签名以及竞争到该区块记账权的Slave TEE绑定的钱包账号的地址主体,并且在竞争记账权成功前尚不能确定其内容。记账权确定信息中包含这两项内容,因此此时挖矿节点已经可以组建完整的区块头,而区块体也是已经确定的,因此可以生成完整的区块,不妨称之为记账区块。挖矿节点组建好记账区块后,将其添加至其本地的区块链的尾部。
在一些实现方式中,挖矿节点不对记账权确定信息以及记账权确定信息的签名进行处理,直接执行步骤S309。在另一些实现方式中,挖矿节点可以根据记账权确定信息以及记账权确定信息的签名对竞争记账权的结果进行验证,例如,当记账权确定信息使用第一私钥签名时,挖矿节点可以保存第一公钥并利用第一公钥验证签名的真实性,若签名验证成功,才执行步骤S309,若签名验证失败,则不执行步骤S309及后续步骤。
进一步的,挖矿节点还可以验证记账权确定信息的内容是否被篡改,以改善区块链系统的安全性,避免信息伪造。例如,挖矿节点可以验证本地保存的区块头主体的哈希值与记账权确定信息中的区块头主体的哈希值是否一致,从而确定Slave TEE在记账时是否使用了伪造的待定记账区块,又例如,挖矿节点可以根据本地保存的难度目标值换算出一个累积未用下限时长,验证该时长与记账权确定信息中的累积未用下限时长是否一致,从而确定Slave TEE在记账时是否使用了伪造的难度目标值。根据验证结果,若记账权确定信息未被篡改,继续执行步骤S309,否则不执行步骤S309及后续步骤。
挖矿节点在将记账区块添加至本地的区块链后,还会将新生成的区块在挖矿节点所在的并行链上广播,以使区块被同步至该并行链上的其他节点的账本中,其具体广播方式可以采用和现有的区块链类似的方式,不进行详细阐述。在一些实现方式中,挖矿节点还向其所在的并行链上的其他需要记账的节点广播记账权确定信息及记账权确定信息的签名,这些节点在接收到该信息后,可以验证信息的内容与其本地的区块链中的待确认的记账区块是否一致,若一致才认可该记账区块为一个合法的区块,否则不认可该记账区块,以避免生成的区块被伪造。
例如,记账区块B1由挖矿节点M1生成,挖矿节点M1将其广播给同链的挖矿节点M2,挖矿节点M2将区块B1添加至其本地的区块链的尾部,等待进一步确认,此时对于挖矿节点M2来说,区块B1就是待确认的记账区块,当然,挖矿节点M2的区块链尾部可能同时存在多个待确认的记账区块,例如B2、B3等。
以挖矿节点M2为例,说明并行链上的记账节点如何根据记账权确定信息及记账权确定信息的签名验证区块的合法性。首先,M2上可以保存第一公钥,用于验证记账权确定信息的签名的真实性。其次,M2可以将记账权确定信息中的区块头主体的哈希值、钱包账号的地址主体、累积未用下限时长(对应难度目标值)等内容,与其本地的区块链中的待确认的记账区块的区块头中的对应信息项向进行对比,验证二者是否一致,例如,分别计算区块B1、B2、B3的区块头主体的哈希值,验证记账权确定信息中的区块头主体的哈希值与计算出的三个哈希值是否一致,假设与区块B2计算出的哈希值一致,再进一步验证区块B2的区块头中的其他几项信息与记账权确定信息中的对应信息项是否一致。若区块B2通过了全部的验证步骤,则挖矿节点M2可以确定区块B2为一个合法的区块。
此外,由于记账区块的区块头中都包含了记账权确定信息的签名,在区块生成后的任何时刻,公钥的持有者都可以验证该签名的真实性,从而确认该区块是否由合法的Slave TEE设备通过挖矿产生。
根据区块链的基本原理,对于区块链系统而言,要解决的核心问题之一是避免攻击者故意集中算力,制造51%算力攻击。本发明实施例提供若干种措施,避免区块链系统中的算算力聚集。图4(A)至图4(B)示出了本发明实施例提供的另一种记账方法的流程图。参照图4(A)以及图4(B),该方法包括:
步骤S401:终端设备向矿池服务器发送注册请求。
某一终端设备配置了Slave TEE,Slave TEE已经与挖矿使用的钱包账号的地址绑定。现在用户想通过该终端设备接入到一个矿池参与挖矿,在一些实现方式中,终端设备可以直接开始挖矿,如执行步骤S303,在另一些实现方式中,用户需要首先在矿池服务器上注册,注册成功后才能挖矿,便于矿池服务器对挖矿者进行管控。注册时,用户通过终端设备向矿池服务器发送注册请求,注册请求可以由用户在终端设备上安装的挖矿应用中主动发起。
注册请求中携带有注册信息,注册信息至少包括Slave TEE绑定的钱包账号的地址,还可以包括用户属性信息,例如用户名、密码、用户个人信息等。
在一些矿池的实现中,还要求在该矿池参与挖矿的所有用户必须经过实名认证机构,即用户的真实身份信息必须和Slave TEE绑定。
实名认证机构可以是和用户、矿池没有直接利益关系的第三方权威机构,例如,某些国家监管机构。实名认证可以由用户自行到实名认证机构处办理,例如,用户通过手机(终端设备的一种)上安装的网页浏览器应用访问实名认证机构的网站,填写自己的手机号(用户真实身份信息的一种)、Slave TEE绑定的钱包账号的地址以及手机验证码,手机验证码可以在用户填写完手机号后向实名认证机构索取,验证码将以短信的信息发到手机上,用户再将其填好,用户填写完全部的信息后提交这些信息,实名认证机构在服务器端验证并存储用户提交的信息,若认证通过,向手机返回认证结果,手机将认证结果在本地保存。可以理解的,实名认证的具体方式在本发明实施例中不作限定,以上仅仅是其中一种。
实名认证结果可以是具有特定格式的消息,实名认证结果中至少包括认证码,还可以包括,但不限于认证标识、用户实名标识、设备标识中的一个或多个信息项。下面简单予以介绍:
认证标识用于表征实名认证机构的身份。
用户实名标识用于表征用户的真实身份信息,例如可以是用户的手机、身份证号、银行卡号、驾驶证号等等,用户实名标识的内容可以是用户在进行实名认证时提交的。
设备标识用于表征参与认证的Slave TEE,例如可以是Slave TEE绑定的钱包账号的地址(或地址主体)、Slave TEE的硬件标识等等,其中,Slave TEE的硬件标识用于唯一标记某个Slave TEE的身份,可以在Salve TEE制造时就确定好并固化在Slave TEE中。设备标识的内容可以是用户在进行实名认证时提交的。
认证码用于表示用户已通过实名认证机构的认证,认证码与用户具有对应关系,由于在实名认证的过程中,用户的真实身份信息与Slave TEE是绑定的,而用户既可以通过用户实名标识来标记,也可以通过设备标识来标记,所以认证码与用户实名标识以及设备标识也具有对应关系。在一些实现方式中,认证码实现为一个由实名认证机构生成的随机整数,并在实名认证机构的服务器上与用户实名标识和/或设备标识关联存储。
获得上述认证结果的人或设备可以到实名认证机构处验证用户是否经过实名认证。例如,首先根据认证标识解析出该认证结果是哪家实名认证机构作出的,然后访问该实名认证机构提供的某个查询网址,提交用户实名标识以及认证码,或者提交设备标识以及认证码,即可获得实名认证机构反馈的结果,将结果指示用户是否经过实名认证。
进一步的,为确保认证结果真实可信,实名认证机构可以用其私钥对认证结果进行签名,将认证结果以及认证结果的签名返回给终端设备,拥有实名认证机构的公钥的设备可以验证该签名的真实性。
对于采用了实名认证机制的情况,终端设备发送给矿池服务器的注册请求中还可以包括认证结果以及认证结果的签名。
步骤S402:矿池服务器验证注册请求是否有效。
矿池服务器对于接收到的注册信息判断是否合法,例如格式是否正确等等,若合法则执行步骤S403,若不合法则执行步骤S404,告知终端设备注册失败,以使用户可以采取相应的措施,例如重新进行注册。
若矿池的实现要求验证挖矿用户是否通过了实名认证,矿池服务器还会接收到终端设备发送的认证结果以及认证结果的签名。矿池服务器上可以保存与实名认证机构的私钥相匹配的公钥,从而可以验证签名的真实性。若验证成功,则执行步骤S403,若验证失败则执行步骤S404,告知终端设备注册失败。
此外,在一些实现方式中,矿池服务器还可以根据认证结果去实名认证机构处验证用户是否确实通过了实名认证,避免认证结果遭到篡改,可能的验证方法在步骤S401中已经举例阐述,不再重复阐述。若验证成功,则执行步骤S403,若验证失败则执行步骤S404,告知终端设备注册失败。
步骤S403:矿池服务器保存注册信息。
注册信息可以保存在矿池服务器的数据库中。在一些实现方式中,Slave TEE绑定的钱包账号的地址的主体部分和虚拟并行链标识(属于钱包账号的地址的附加部分)可以分成两个字段保存,并在数据库中为这两个字段添加索引,便于快速查询。
步骤S404:矿池服务器向终端设备发送注册响应。
注册响应可以包括注册成功、注册失败等状态,用于告知用户注册结果。
步骤S405:终端设备向矿池服务器发送入池申请。
注册成功之后,用户已经被登记为矿池的用户。在一些实现方式中,终端设备可以直接开始挖矿,如执行步骤S303,在另一些实现方式中,用户需要经矿池服务器授权后才能开始挖矿。
发明人长期研究实践发现,在现有的采用PoW共识的区块链中,出于对经济利益的追求,矿池中心化的趋势难以避免,所谓中心化是指大量的ASIC矿机从远端接入到矿工节点参与挖矿,导致矿池中的算力聚集,一旦大型矿池上的算力被攻击者利用,将可能导致51%算力攻击。在本发明实施例中,虽然用新的共识算法取代了PoW共识算法,但算法的本质仍是竞争记账权,若不限制每个矿池中参与挖矿的Slave TEE的数量,仍然有可能出现某个或某几个矿池聚集大量算力的问题。
矿池服务器授权的目的正是为了控制该矿池中参与挖矿的Slave TEE的数量,避免出现矿池中心化的趋势。一旦能够避免矿池的中心化,矿池结构带来的优点是显著的,在前面介绍并行链系统的结构时已经阐述,包括减轻区块链系统的网络负担,使得有记账需求的企业用户和有挖矿需求的个人用户实现优势互补,等等。
为获得矿池服务器的授权,终端设备首先向矿池服务器发送入池申请,告知矿池服务器自己希望参与挖矿。入池申请中可以携带和挖矿有关的信息,包括但不限于矿池标识、申请时间、该终端设备配置的Slave TEE绑定的钱包账号的地址的公钥、Slave TEE绑定的钱包账号的地址中的虚拟并行链标识等信息。其中,矿池标识用于在区块链系统中唯一标识一个矿池,这个标识是对外公开的,任何人均可获得,例如,一个用户希望在某个矿池中挖矿,他可以事先获得该矿池的矿池标识,然后将其录入终端设备上安装的挖矿应用中。钱包账号的地址的公钥和钱包账号的地址的主体部分具有唯一对应关系,利用前者根据确定的规则可以推导出后者,因此获得该公钥等同于获得了钱包账号的地址主体。同时,钱包账号的地址的公钥可用于验证它所对应的私钥作出的签名,因此其适用范围比单纯的钱包账号的地址更广泛。在一些实现方式中,终端设备通过调用Slave TEE提供的接口生成入池申请,矿池标识作为调用参数传入Slave TEE,其余三项信息均可由Slave TEE中的应用程序给出。为保障入池申请的真实可信,Slave TEE中可以保存第二私钥,并利用第二私钥对上述四项信息进行签名,签名也携带在入池申请中。
步骤S406:矿池服务器验证入池申请是否有效。
矿池服务器对于接收到的入池申请判断是否合法,若合法则执行步骤S407,若不合法则可以执行步骤S411,告知终端设备申请入池失败,以使用户可以采取相应的措施,例如重新进行申请。
若入池申请包括步骤S405中提到的四项信息以及签名,则步骤S406可以采用如下方式实现:
首先验证矿池标识和自己所在矿池的矿池标识是否一致,在矿池服务器中,矿池标识可以保存在其配置的Master TEE中,不能随意被修改。若一致,继续执行后续步骤,否则确定入池申请无效。然后利用矿池服务器保存的与第二私钥匹配的第二公钥验证入池申请中签名的真实性,若验证通过,则继续执行后续步骤,否则确定入池申请无效。然后根据钱包账号的地址的公钥推导出钱包账号的地址主体,由于步骤S403中保存了注册信息,因此可以从之前保存的注册信息中查询该钱包账号的地址主体,若未查询到,表明申请入池的用户根本没有注册,确定入池申请无效,或者虽然查询到了该信息,但其对应的钱包账号的地址的虚拟并行链标识与入池申请中携带的虚拟并行链标识不一致,同样确定入池申请无效,若根据查询结果,申请入池的用户已经注册并且保存的虚拟并行链序号也正确,则确定入池申请有效。可以理解的,在具体实施时,上面的几个验证步骤的先后顺序也可以采用和上面列举的不一样的顺序。
步骤S407:矿池服务器配置的Master TEE判断矿池服务器的容量是否小于容量阈值。
矿池服务器的容量阈值是指某一时刻或某一时间段内矿池服务器所允许的入池挖矿的Slave TEE的最大数量,而容量是指某一时刻或某一时间段内矿池服务器已经允许的入池挖矿的Slave TEE的数量。若容量小于容量阈值,则可以授权提出入池申请的终端设备配置的Slave TEE参与挖矿,继续执行步骤S408,否则可以执行步骤S411,告知终端设备当前矿池已满,暂停授权,以便终端设备采取相应的措施,例如等待一段时间后重试。通过矿池容量控制,能够有效避免矿池中心化的趋势,改善区块链系统的安全性,提高矿池结构的实用价值。
关于该容量阈值,在不同的实现方式中可以采取不同的定义。例如,在一种实现方式中,对每个Slave TEE的授权使用时长T1进行限制,即每个Slave TEE在获得授权后,也只能在T1时间内参与挖矿(从授权开始时间起算),过期后则必须重新申请入池(也不排除某些自动续期一段时间的实现方式),否则在经过一段较长时间后,矿池中接入的终端设备可能越来越多,导致算力聚集,具体如何限制Slave TEE只能在T1时间内参与挖矿在后文再具体阐述。容量阈值定义为在T1时间内矿池服务器所允许的入池挖矿的Slave TEE的最大数量N2。
在上述实现方式中,矿池服务器为控制其容量不超过容量阈值,可以采取如下的做法:
矿池服务器按照固定的授权周期T2(T2<T1)进行入池授权,并控制每个授权周期内的入池授权量小于第一阈值N1,即N1为一个授权周期内最多能够授权的Slave TEE的数量。当矿池服务器接收到新的入池申请后,通过对比当前授权周期内的入池授权量和N1,判断还能否对新的入池申请进行授权,若可以,则继续执行步骤S408,并将当前授权周期内的入池授权量累加1,若不可以,则可以执行步骤S411,告知终端设备当前授权周期内矿池已满,暂停授权,以便终端设备采取相应的措施,例如在下一授权周期内重试。
其中,N1、N2、T1、T2满足关系:N2=(T1/T2)*N1,即通过控制每个T2时间内的入池授权量,实现了对T1时间内的总入池授权量的控制,同时,按照授权周期进行入池授权的方式,有利于避免终端设备集中在某一时段申请入池的情况,将设备的算力在时间层面尽可能分散。
上述T1、T2以及N1可以预配置在Master TEE中。在一些实现方式中,Master TEE中的应用程序可以对N1进行设置,以便满足Master TEE设备的租用需求,例如,每隔一年时间(租期)将N1重置为0,这样将导致矿池服务器无法继续授权,矿池服务器的管理者必须向Master TEE的发行商续租。
步骤S408:Master TEE生成授权信息。
在步骤S407的验证通过后,Master TEE可以组织授权响应(步骤S411中使用)的消息内容,其内容为授权信息,授权信息至少包括授权码以及授权序号,在一些实现方式中还可以包括授权使用时长(即步骤S407中的T1),告知终端设备其配置的Slave已经获得授权,可以开始挖矿。
其中,授权码中可以包括,但不限于矿池服务器的矿池标识、授权序号、申请时间、授权使用时长、被授权的Slave TEE绑定的钱包账号的地址主体等信息。授权序号可由Master TEE分配,用于对每次授权进行区别标记,例如可以实现为一个随授权次数而递增的整数。根据步骤S405,申请时间和被授权的Slave TEE绑定的钱包账号的地址主体可以包含在终端设备发送入池申请中(钱包账号的地址主体由钱包账号的地址的公钥推算)。
步骤S409:Master TEE根据第二密钥生成算法生成第二密钥,并利用第二密钥加密授权码。
在一些实现方式中,执行步骤S408之后可以直接执行步骤S410,在另一些实现方式中,执行步骤S408之后还可以先执行步骤S409对授权码加密,然后再执行步骤S410。
授权码的加密过程在Master TEE中实现,Master TEE提供调用接口,明文的授权码作为参数传入,调用完后返回加密后的授权码。授权码采用第二密钥生成算法生成的第二密钥进行对称加密,第二密钥生成算法不作限定,例如,Master TEE中可以保存一个预设字串,第二密钥生成算法可以是某种哈希算法,可以根据预设字串计算出哈希值作为第二密钥,上述字串仅在TEE环境中使用,不会泄露到外部。对称加密算法不作限定,例如可以是AES算法、DES算法、3DES算法、SM4算法等等。
进一步的,第二密钥生成算法可以实现为Master TEE所私有,即算法实现不在TEE环境之外公开,同时算法生成的第二密钥在Master TEE中被用于且仅被用于加密授权码,不用于包括解密授权码在内的其他用途,即第二密钥在Master TEE中被单向地使用,在具体实施时,Master TEE可以对外只提供加密授权码的接口,不提供解密授权码的接口(或者根本不实现该接口)。
关于加密授权码的意义,在后文中解密授权码时再阐述。
在一些实现方式中,步骤S407、S408以及S409可以在Master TEE中连续执行,这三个步骤的执行过程无法被Master TEE之外的程序中断或干扰,从而外部程序无法改换中间步骤的依赖参数,这样可以保证容量控制完全由Master TEE决定,矿池服务器中的程序无法整体模拟或伪造容量控制过程。例如,Master TEE可以提供一个用于授权的接口,由矿池服务器在步骤S406的验证通过后负责调用,在该接口中实现步骤S407、S408以及S409。
步骤S410:矿池服务器保存授权序号以及授权关联信息;
授权序号在步骤S408中由Master TEE生成,由于授权序号最终要由矿池服务器发送给终端设备(在步骤S411中),所以矿池服务器可以获得该授权序号。矿池服务器将授权序号与授权关联信息对应保存。其中,授权关联信息是指和授权内容相关的信息,其可以包括,但不限于授权开始时间、授权使用时长、被授权的Slave TEE绑定的钱包账号的地址主体等信息。其中,授权开始时间可以取入池申请的申请时间。考虑到参与挖矿的用户可能很多,授权关联信息将占据不少存储空间,因此在具体实施时,授权序号以及授权关联信息可以保存在矿池服务器的数据库中,此外,若矿池服务器因故宕机,重启后也可以从数据库中读取授权关联信息,恢复授权记录,继续提供挖矿服务,有利于改善系统稳定性。
步骤S411:矿池服务器向终端设备发送授权响应。
授权响应既包括授权成功的响应,也包括授权失败的响应。其中,授权失败的响应可以是入池申请验证未通过或者矿池已满等等,在之前的步骤阐述中已经提及。授权成功的响应中包含步骤S408中生成的授权码、授权序号、授权使用时长等信息,在一些实现方式中,若执行了步骤S409对授权码加密,则步骤S411中应包含加密后的授权码。
步骤S412:挖矿节点向矿池服务器发送待定记账区块的区块头主体的哈希值以及在并行链上挖矿的难度目标值。
步骤S412和步骤S301类似,不再重复阐述。
步骤S413:Master TEE根据第一密钥生成算法生成第一密钥,并利用第一密钥加密区块头主体的哈希值。
在一些实现方式中,执行步骤S412之后可以直接执行步骤S414,在另一些实现方式中,执行步骤S412之后还可以先执行步骤S413对待定记账区块的区块头主体的哈希值加密,然后再执行步骤S414。在另一些实现方式中,执行步骤S412之后也可以先执行步骤S414,在步骤S419中向终端设备发送区块头主体的哈希值之前的某个时刻再执行步骤S413对其进行加密。
区块头主体的哈希值的加密过程在Master TEE中实现,Master TEE提供调用接口,明文的区块头主体的哈希值作为参数传入,调用完后返回加密后的区块头主体的哈希值。区块头主体的哈希值采用第一密钥生成算法生成的第一密钥进行对称加密,第一密钥生成算法不作限定,例如可以是某种哈希算法,算法根据矿池配置信息计算出一个哈希值作为第一密钥。
例如,第一密钥生成算法可以这样实现:将矿池配置信息的内容拼接成一个字串,在其尾部再添加一个不对外公开的预设字串,对生成的字串计算哈希值,将哈希值作为第一密钥。
其中,矿池配置信息包括并行链的链标识,并行链标识用于唯一标记区块链系统中的每个并行链,例如,可以采用整数序号实现。这里的并行链是指发送该区块头主体的哈希值的挖矿节点所在的并行链,矿池服务器上可以预先保存矿池中的每个挖矿节点对应的并行链的链标识,在加密区块头主体的哈希值时Master TEE获取对应的并行链的链标识计算第一密钥。
在一些实现方式中,矿池配置信息还包括并行链已扩容的次数和矿池的矿池标识中的至少一项。其中,矿池服务器所在的矿池标识在Master TEE中预先配置好,之前已经介绍过。本发明实施例提供的区块链系统中的并行链是支持扩容的,即在业务量较大时可以扩充系统中并行链的数量(新生成的并行链上加入新的节点)。为简单起见,仅介绍倍增并行链数量的扩容方式,但不应当理解为区块链系统仅能够采取此种扩容方式。所谓倍增扩容,是指每扩容一次,并行链的数量变为原来的两倍,每扩容一次,已扩容的次数累加1,例如,区块链系统最开始有1个并行链,此时已扩容的次数为0。然后经过一次扩容,1个并行链扩容成2个并行链,此时已扩容的次数为1,再经过一次扩容,将2个并行链扩容成4个并行链,此时已扩容的次数为2,以此类推。在一些实现方式中,还可以根据能够支持的系统规模为已扩容的次数设置一个上限,例如16,即区块链系统最多支持65536个并行链。并行链已扩容的次数也可以保存在Master TEE中,在区块链系统扩容时进行更新。
在一些实现方式中,若区块链系统中引入了实名认证机制,第一密钥生成算法在计算第一密钥时,除了考虑矿池配置信息,还可以将实名认证时获得的认证码也作为第一密钥的来源之一,认证码包含在步骤S401终端设备发送给矿池服务器的注册请求中。
对区块头主体的哈希值进行加密的对称加密算法不作限定,例如可以是AES算法、DES算法、3DES算法、SM4算法等等。
进一步的,第一密钥生成算法可以实现为Master TEE所私有,即算法实现不在TEE环境之外公开,同时算法生成的第一密钥在Master TEE中被用于且仅被用于加密区块头主体的哈希值,不用于包括解密区块头主体的哈希值在内的其他用途,即第一密钥在MasterTEE中被单向地使用,在具体实施时,Master TEE可以对外只提供加密区块头主体的哈希值的接口,不提供解密区块头主体的哈希值的接口(或者根本不实现该接口)。
关于加密区块头主体的哈希值的意义,在后文中解密区块头主体的哈希值时再阐述。
步骤S414:矿池服务器存储区块头主体的哈希值以及难度目标值。
类似步骤S302,不再重复阐述。
步骤S415:终端设备向矿池服务器发送记账请求。
终端设备在获得矿池服务器的授权后,可以向矿池服务器发送记账请求,表明终端设备配置的Slave TEE希望参与竞争记账权。记账请求中可以包括,但不限于矿池标识、授权序号、当前时间等信息。其中,矿池标识和终端设备之前发送的入池申请中携带的矿池标识为同一个,授权序号是终端设备在步骤S411中获得的。
在一些实现方式中,终端设备通过调用Slave TEE的接口生成记账请求,矿池标识和授权序号作为调用参数传入Slave TEE,当前时间可由Slave TEE中的时钟给出。为保障记账请求的真实可信,Slave TEE中可以保存第三私钥,并利用第三私钥对上述三项信息进行签名,签名也携带在记账请求中。第三私钥和之前提到的第二私钥可以相同也可以不同。
步骤S416:矿池服务器验证记账请求是否有效。
矿池服务器对于接收到的记账请求判断是否合法,若合法则执行步骤S417,若不合法则可以告知终端设备请求记账失败,终端设备可以下次再发起请求。
若记账请求包括步骤S415中提到的三项信息以及签名,则步骤S416可以采用如下方式实现:
首先验证矿池标识和自己所在矿池的矿池标识是否一致,在矿池服务器中,矿池标识可以保存在其配置的Master TEE中,不能随意被修改。若一致,继续执行后续步骤,否则确定记账请求无效。然后利用矿池服务器保存的与第三私钥匹配的第三公钥验证记账请求中签名的真实性,若验证通过,则继续执行后续步骤,否则确定记账请求无效。然后根据授权序号查询授权关联信息,授权序号与授权关联信息在步骤S410中已经对应保存在矿池服务器上,若保存的信息中不存在该授权序号,表明该终端设备根本没有获得过授权,确定记账请求无效,否则继续执行后续步骤。步骤S410中提到,授权关联信息可以包括,但不限于授权开始时间、授权使用时长、被授权的Slave TEE绑定的钱包账号的地址主体等信息。矿池服务器还可以验证Slave TEE的授权是否已经过期,即授权开始时间至记账请求中携带的当前时间之间的时间间隔是否超过授权使用时长,若已超过授权使用时长,表明授权已过期,Slave TEE已经无权继续记账,确定记账请求无效,否则继续执行后续步骤。可以理解的,在具体实施时,上面的几个验证步骤的先后顺序也可以采用和上面列举的不一样的顺序。
步骤S417:Master TEE确定终端设备关联的并行链。
在一些实现方式中,Slave TEE可以在任意的并行链上挖矿,每次挖矿也可以在不同的并行链上,不受限制。在另一些实现方式中,为避免Slave TEE的算力集中在某些并行链上,制造51%算力攻击,限制终端设备只能获取与其相关联的并行链上的挖矿节点提供的区块头主体的哈希值以及难度目标值,从而终端设备配置的Slave TEE只能在相关联的并行链上挖矿,即分散了Slave TEE的算力。需要指出,此处所称的终端设备关联的并行链是指终端设备配置的Slave TEE关联的并行链,若某些终端设备配置有多个Slave TEE,则这些Slave TEE可以关联到不同的并行链。当然,为简单起见,本文在阐述时一般以终端设备只配置了一个Slave TEE的情况为例,但这不应当视为对本发明保护范围的限制。
在一些实现方式中,Master TEE根据Slave TEE绑定的钱包账号的地址的虚拟并行链标识、终端设备的并行链标识掩码以及区块链系统包含的并行链的数量计算终端设备关联的并行链的链标识,即确定该终端设备关联的并行链。
其中,虚拟并行链标识根据终端设备配置的Slave TEE的硬件标识计算获得,Slave TEE的硬件标识在步骤S401中已经介绍。在一些实现方式中,虚拟并行链标识VCN可以通过如下方式计算:
VCN=UID&UidMask
其中,&表示按位与运算,UID为Slave TEE的硬件标识,可以实现为多个字节的数值,UidMask为虚拟并行链标识掩码,其具体为保存在Slave TEE中的常量。例如,VCN实现为2个字节,则UidMask也为2个字节,UidMask的取值不作限定,例如可以取0xFFFF、0xFFEE(十六进制数)等。Slave TEE在生成绑定的钱包账号的地址时,其中附加部分的虚拟并行链标识就可以基于上面的公式计算,而主体部分的生成方法可以采用现有的区块链中生成钱包账号的地址的方法。
根据虚拟并行链标识、并行链标识掩码以及区块链系统包含的并行链的数量可以推算Slave TEE在哪个并行链上挖矿,也即终端设备关联的并行链。在一些实现方式中,终端设备关联的并行链的链标识MCN根据如下方式计算:
MCN=(VCN^MiningMask)&(N-1)
其中,^表示异或运算,&表示按位与运算,VCN表示虚拟并行链标识,MiningMask表示并行链标识掩码,N表示并行链的数量。MiningMask可以保存在Master TEE中,当区块链系统扩容或者终端设备上安装的挖矿应用升级时,MingMask的值可能会调整,其目的主要是为了防止攻击者故意收购具有特定VCN的Slave TEE,这些Slave TEE设备计算出的MCN相同,从而可以在特定的并行链上聚集算力挖矿,如果MiningMask定期保持更新,则攻击者的收购行为将变得无意义。N也可以保存在Master TEE中,在区块链系统扩容更新器其取值。
在并行链扩容后,并行链的数量将发生变化,并行链标识也会相应地变化,然而虚拟并行链标识是不变的,从而在系统扩容后,Slave TEE根据虚拟并行链标识很快就可以重新确定出一个并行链标识,进而转换到该并行链标识对应的并行链上去挖矿,即实现了将算力分散到新的并行链上去,这也是设置虚拟并行链标识的重要意义之一。
可以理解,Master TEE还可以采取其他方式确定终端设备关联的并行链,不限于上述方式。
步骤S418:矿池服务器验证记账请求是否满足冷却时长的要求。
在一些实现方式中,Slave TEE获得记账权后,立即可以参与下一轮记账权的竞争,不受限制;在另一些实现方式中,Slave TEE获得记账权后,会主动休息一段时间不参与竞争记账权,在这之后才会再次参与记账权的竞争,称Slave TEE休息的这段时间为冷却时长,冷却时长可以取累积未用下限时长的k倍(k为大于0且小于1的常数),其中,累积未用下限时长根据当前的难度目标值计算,之前已经阐述过。
在一种实现方式中,Slave TEE中内置应用程序来判断自己是否应当休息,在Slave TEE休息期间,即使终端设备调用其对外提供的竞争记账权的接口,Slave TEE也不响应调用,或者返回提示信息,告知终端设备自己仍在冷却期内。在另一种实现方式中,终端设备安装的挖矿应用中记录上次成功记账的时间,并判断当前时间距离上次成功记账的时间的时间间隔是否超过冷却时长,若不超过,则不会调动Slave TEE对外提供的竞争记账权的接口,否则可以调用该接口。
此外,在矿池服务器一端,也可以验证记账请求是否满足冷却时长的要求,需要指出,矿池服务器上的判断过程与Slave TEE自己主动休息是相互独立的,即使Slave TEE在竞争获得记账权后不主动休息(包括故意作弊或者本来就不具有此功能的情况),矿池服务器仍然可以通过执行步骤S418阻断器记账请求,迫使Slave TEE在获得记账权之后的冷却时长内无法再次获得记账权。
具体而言,矿池服务器判断终端设备配置的Slave TEE距离上次记账时间的时间间隔t1是否大于冷却时长t2,t2为累积未用下限时长的k倍(k为大于0且小于1的常数),累积未用下限时长根据难度目标值计算,由于区块链系统可能包括多个并行链,每个并行链上的难度目标值不一定相同,因此针对要验证的Slave TEE,应该根据其挖矿的并行链上的难度目标值计算累积未用下限时长。若判断结果为大于,表明Slave TEE已经度过冷却期,可以再次记账,继续执行后续步骤,否则拒绝其记账请求,不向终端设备返回区块头主体的哈希值以及难度目标值。或者在一些实现方式中,若判断结果为否,矿池服务器也可以通知终端设备距离发起下次记账请求的时间间隔t3,其中,t3可以取t2-t1,即告知终端设备暂时不要发起新的记账请求,直至Slave TEE距离上次记账的时间间隔超过冷却时长,避免终端设备持续发送无意义的(即不可能获得记账权的)记账请求,造成资源浪费。
矿池服务器通过上述验证,可以避免攻击者通过某些手段在终端设备配置的Slave TEE中故意囤积累积未用时长,然后在短期内释放算力,以便连续获得记账权,变相制造51%算力攻击,因为凡是参与挖矿的Slave TEE都无法避开冷却时长的限制。同时,通过设置冷却时长的限制,能够让更多的终端设备配置的Slave TEE都有机会获得记账权,也在一定程度上体现了挖矿的公平性。
Slave TEE距离上次记账时间的时间间隔为本次记账时间减去上次记账时间,其中本次记账时间为待定记账区块的区块头中的时间戳指示的时间,上次记账时间为上次记账时生成的区块的区块头中的时间戳指示的时间,虽然矿池服务器可以从挖矿节点获取这两个时间,但根据现有的区块链协议,区块头中的时间戳只能大致地表征记账时间(如不超过当前网络时间2个小时都可接受),直接用此方法计算出的记账时间间隔误差较大,另一方面,时间戳由挖矿节点决定,不排除有人故意将记账时间提前或延后,这些因素均可能导致步骤S418中的验证精度与可信度不高。
因此在一些实现方式中,可以采用如下的公式估算上述记账时间间隔:
其中,Height2为待定记账区块在区块链中的高度,Height1为上次记账生成的区块在区块链中的高度,为区块链系统的预设常数,用于表征区块链系统的平均出块时间(生成一个区块的平均耗时),其中,某个区块在区块链中的高度是指在它之前区块链上一共串接了多少了个区块,对于创世区块,在其之前没有区块,因此其高度为0。利用区块的高度差来估算两个区块的记账时间间隔,准确度与可信度较高。
具体实施时,区块的高度可以由矿池服务器主动向Slave TEE挖矿所在的并行链上的挖矿节点请求,挖矿节点在其存储的区块链数据中查询获得。或者,Slave TEE挖矿所在的并行链上的挖矿节点也可以在将记账区块添加至本地的区块链中,且该记账区块被最终确认之后,将记账区块在其本地的区块链中的高度、竞争到记账权Slave TEE绑定的钱包账号的地址主体主动发送至矿池服务器,矿池服务器可以将这些数据保存到数据库中,在需要估算记账时间间隔时,根据当前的Slave TEE绑定的钱包账号的地址主体去数据库中查询获得上次记账时生成的区块在区块链中的高度,而执行步骤S418时待定记账区块还没有记录在区块链中,但其如果被添加至区块链,必然在区块链尾部,因此其在区块链中的高度是已知的,可以获取挖矿节点最近一次发送过来的区块的高度(当前区块链中的最新一个被确认的区块),将该高度作为待定记账区块在区块链中的高度。
作为一种可选的方案,挖矿节点还可以将已经确认的区块的生成时间(即区块头中的时间戳)也发送给矿池服务器,区块的生成时间可以起辅助判断的作用。例如,矿池运营者在每个并行链上都提供几个起稳定器作用的Slave TEE,这些Slave TEE只在长时间(例如,平均出块时间的数倍)都没有其他Slave TEE竞争到记账权时才参与竞争记账权,且不受冷却时长限制,避免个别区块记账间隔时间过长。其中,矿池服务器将区块链中区块的生成时间发送给配置有作为稳定器的Slave TEE的终端设备,终端设备上安装的挖矿应用中根据当前时间与区块链中最新一个被确认的区块的生成时间之差,可以确定是否要允许作为稳定器的Slave TEE竞争记账权。
发明人在长期实践中发现,少数情况下,例如参与挖矿的终端设备本来就不多,且因网络故障等原因又使得多数终端设备下线,只有数台终端设备还在挖矿,这时可能导致区块链中的区块停止增长,因为可能所有的终端设备配置的Slave TEE都无法满足利用高度差估算出冷却时长的要求,即对于所有仍然在线的终端设备配置的Slave TEE而言,Height2-Height1都不再变化,由此估算出的t1始终不大于t2。为解决这一问题,在部分实现方式中,矿池服务器可以增设一条验证规则,若矿池服务器保存的难度目标值大于某一预设值(如最大难度目标值的一半),则也视为满足冷却时长的要求,继续执行后续步骤。难度目标值大于预设值表明当前的并行链上挖矿难度过小(根据累积未用下限时长的计算公式,难度目标值越大,挖矿难度越小,挖矿难度小意味着该并行链上的Slave TEE的数量很少),若满足该条件表明在该难度目标值对应的并行链上,区块链的区块已经停止增长,应当允许Slave TEE记账以便能够正常添加区块。相应地,在Slave TEE中可以增设判断,若Slave TEE中累积未用时长已超过累积未用下限时长的预设倍数(如2倍),且计算累积未用下限时长所使用的难度目标值大于某一预设值(如最大难度目标值的一半),也视为满足冷却时长的要求,Slave TEE不会再继续休息。上述判断在Slave TEE中执行外界无法干扰或伪造其判断过程,所以是真实可信的。
进一步的,若某个Slave TEE首次参与挖矿,或者刚刚换一个并行链挖矿(因为区块链系统扩容或者并行链标识掩码调整),由于矿池服务器只在Slave TEE当前挖矿的并行链关联的数据中查询其上次记账成功时生成的区块在区块链中的高度,所以查询不到相应的数据,所以也视为已经满足冷却时长的要求。
步骤S419:矿池服务器向终端设备发送与其关联的并行链的区块头主体的哈希值以及难度目标值。
在步骤S417中已经确定了终端设备关联的并行链,因此在步骤S419中可以向终端设备发送其关联的并行链的区块头主体的哈希值以及难度目标值。
步骤S420:Slave TEE判断自身的累积未用时长是否大于根据难度目标值计算出的累积未用下限时长。
步骤S420与步骤S305类似的部分不再重复阐述。在一些实现方式中,Slave TEE判断自己能否获得记账权,除了判断累积未用时长是否超过累积未用下限时长外,还会同时判断累积未用时长是否落在冷却时长的整数倍时段内,若两个判断结果都是时,才确认自己获得记账权,否则竞争记账权失败。例如,累积未用下限时长为2天,k取0.5,则冷却时长为1天,冷却时长的整数倍时间为1天、2天、3天等等。冷却时长的整数倍时段定义为冷却时长的整数倍时间加上容错偏差时间(例如20分钟),在此定义下,冷却时长的整数倍时段为1天至1天零20分钟、2天至2天零20分钟、3天至3天零20分钟等等。在一种可能的场景中,攻击者控制一定数量的Slave TEE之后,让这些Slave TEE集中于某些特定的时间点去竞争记账权,使算力在时间上集中,变相制造51%算力攻击,增加上述判断的意义在于强制将SlaveTEE竞争记账权的时间点在时间上分散开,避免算力集中,确保区块链系统的安全性。
步骤S421:Slave TEE根据第二密钥生成算法生成第二密钥,并利用第二密钥解密授权码。
在步骤S422中会使用从矿池服务器获得的授权码,该授权码携带在步骤S411的授权响应中。若之前执行了步骤S410对授权码加密,则在执行步骤S422之前需要执行步骤S421解密授权码,否则不需要执行步骤S421。
授权码的解密过程在Slave TEE中实现,Slave TEE提供调用接口,加密后的授权码作为参数传入,调用完后返回明文的授权码。授权码采用第二密钥生成算法生成的第二密钥进行对称解密,第二密钥生成算法应和步骤S410中Master TEE中使用的相同,以确保生成的第二密钥也和Master TEE中的相同,例如,参照步骤S410的例子,Slave TEE中也可以保存和Master TEE中相同的预设字串,在Slave TEE中,和Master TEE中相同的第二密钥生成算法也基于该字串生成第二密钥,该字串仅在TEE环境中使用,不会泄露到外部。获得第二密钥后,Slave TEE中的对称解密算法也应当和步骤S410中Master TEE中采用的对称加密算法一致。
进一步的,类似步骤S410,第二密钥生成算法也可以实现为Slave TEE所私有(步骤S410中为Master TEE私有),即算法实现不在TEE环境之外公开,同时算法生成的第二密钥在Slave TEE中被用于且仅被用于解密授权码,不用于包括加密授权码在内的其他用途,即第二密钥在Slave TEE中被单向地使用,在具体实施时,Slave TEE可以对外只提供解密授权码的接口,不提供加密授权码的接口(或者根本不实现该接口)。
步骤S410以及步骤S421中的加解密机制确保了Master TEE和Slave TEE必须配套使用,一旦出现二者不匹配的情况,例如Slave TEE被伪造,加解密机制将无法正常工作,从而Slave TEE也无法解密并使用授权码。并且,由于第二密钥在Master TEE和Slave TEE中的使用都是单向的,确保了第二密钥不会被攻击者破解。
步骤S422:Slave TEE利用授权码验证授权是否有效。
在步骤S408中已经提到,授权码中可以包括,但不限于矿池标识、授权序号、申请时间、授权使用时长、被授权的Slave TEE绑定的钱包账号的地址主体等信息。因此步骤S422中可以利用这些信息验证此时授权是否仍然有效,例如,Slave TEE可以验证授权码中携带的钱包账号的地址主体和自身保存的是否一致,若不一致,确定竞争记账权失败(尽管S420中累积未用时长的条件已经满足),否则继续执行后续步骤。又例如,Slave TEE验证获得的授权是否已经过期,即发送入池申请时的申请时间至当前时间之间的时间间隔是否超过授权使用时长,若已超过授权使用时长,表明授权已过期,Slave TEE已经无权继续记账,确定竞争记账权失败(尽管S420中累积未用时长的条件已经满足),否则继续执行后续步骤。在步骤S305中已经提到,Slave TEE竞争记账权可以通过终端设备调用其提供的接口的方式,因此确定竞争记账权失败具体可以实现为该接口的调用提前终止。可以理解的,在具体实施时,上面的验证步骤的先后顺序也可以采用和上面列举的不一样的顺序。
需要指出,尽管授权码中已经包含授权序号和授权使用时长,但在步骤S411矿池服务器发送的授权响应中,除了包含授权码,还包含授权序号以及授权使用时长。其原因在于,授权码为密文态,在步骤S410中进行了加密,直到步骤S421中才解密,在此之前不能获取授权码中的信息,另外,在授权码中传递的信息因附加了加解密过程,能保证不被伪造。因此可以将另外两项信息以明文方式单独发送。其中,授权序号在步骤S415中被使用,而授权使用时长则可以反馈给挖矿应用,例如在应用的界面上显示出来,使用户获知自己获得了多长时间的授权,又例如,挖矿应用还可以根据授权使用时长判断当前设备的授权是否即将结束,在授权即将结束时,挖矿应用可以自动再次发起步骤S405所述的入池申请(如,调用Slave TEE提供的生成入池申请的接口)。可以理解的,在一些实现方式中,终端设备也可以实现为不使用授权使用时长,在这些实现方式中矿池服务器在授权时也不必发送明文态的授权使用时长。
步骤S423:Slave TEE根据第一密钥生成算法生成第一密钥,并利用第一密钥解密授权码。
在步骤S424中Slave TEE会使用从矿池服务器获得的区块头主体的哈希值,该哈希值在步骤S419中获得。若之前执行了步骤S413对区块头主体的哈希值加密,则在执行步骤S424之前需要执行步骤S423解密区块头主体的哈希值,否则不需要执行步骤S423。
区块头主体的哈希值的解密过程在Slave TEE中实现,Slave TEE提供调用接口,加密后的区块头主体的哈希值作为参数传入,调用完后返回明文的区块头主体的哈希值。区块头主体的哈希值采用第一密钥生成算法生成的第一密钥进行对称解密,第一密钥生成算法应和步骤S413中Master TEE中使用的相同,以确保生成的第一密钥也和Master TEE中的相同。
算法根据矿池配置信息计算出第一密钥。其中,矿池配置信息包括并行链的链标识,这里的并行链是指终端设备关联的并行链,其并行链标识可以通过Slave TEE绑定的钱包账号的地址的虚拟并行链标识、终端设备的并行链标识掩码以及区块链系统包含的并行链的数量计算,计算方法应当和步骤S417中的保持一致。其中,虚拟并行链标识、并行链标识掩码以及并行链的数量都可以保存在Slave TEE中,若Master TEE中更新了并行链标识掩码以及并行链的数量,Slave TEE中也应当同步更新。
需要指出,虽然在步骤S413中,并行链的链标识不是通过上述三项信息计算的,但由于在步骤S419中发送的是步骤S417计算出的并行链序号对应的并行链上的区块头主体的哈希值,所以可以等价于计算第一密钥时使用的并行链的链标识也是采用步骤S417中的方法计算的,即和解密时采用的算法相同。
若加密时的矿池配置信息中还包括并行链已扩容的次数、矿池标识、认证码等信息项,在解密时使用的矿池配置信息中也应当包含同样的信息项。其中,矿池标识在SlaveTEE中预先配置好,之前已经介绍过。并行链已扩容的次数在步骤S413中已经介绍,不在详细说明,并行链已扩容的次数可以保存在Slave TEE中,若Master TEE中更新了并行链已扩容的次数,Slave TEE中也应当同步更新。认证码在终端设备进行实名认证时就已经获得并保存在Slave TEE中。
获得第一密钥后,Slave TEE中的对称解密算法也应当和步骤S413中Master TEE中采用的对称加密算法一致。
进一步的,类似步骤S413,第一密钥生成算法也可以实现为Slave TEE所私有(步骤S413中为Master TEE私有),即算法实现不在TEE环境之外公开,同时算法生成的第一密钥在Slave TEE中被用于且仅被用于解密区块头主体的哈希值,不用于包括加密区块头主体的哈希值在内的其他用途,即第一密钥在Slave TEE中被单向地使用,在具体实施时,Slave TEE可以对外只提供解密区块头主体的哈希值的接口,不提供加密区块头主体的哈希值的接口(或者根本不实现该接口)。
步骤S413以及步骤S423中的加解密机制确保了Master TEE和Slave TEE必须配套使用,一旦出现二者不匹配的情况,例如Slave TEE被伪造,加解密机制将无法正常工作,从而Slave TEE也无法解密并使用区块头主体的哈希值,或者即使能够解密,也无法获得正确的区块头主体的哈希值(在后续步骤中能够检验出来,致使其记账失败)。并且,由于第一密钥在Master TEE和Slave TEE中的使用都是单向的,确保了第一密钥不会被攻击者破解。
进一步的,第一密钥的计算与终端设备关联的并行链的链标识相关,意味着在Slave TEE中推算出的该链标识必须与Master TEE中推算出的该链标识一致,Slave TEE才能够获得和Master TEE中相同的第一密钥,或者说,Slave TEE只能获得并解密该链标识对应的并行链上的挖矿节点发送的区块头主体的哈希值,即使获得了其他的并行链上的挖矿节点发送的区块头主体的哈希值,也无法正确解密,从而限制了Slave TEE只能在终端设备关联的并行链上挖矿。根据并行链的链标识的计算方法,每个Slave TEE中并行链标识掩码以及并行链的数量都是相同的,只有虚拟并行链标识不同,虚拟并行链标识根据Slave TEE的硬件标识计算,只要硬件标识不具有特定的倾向性,可以确保矿池中的Slave TEE被近似平均地分散到区块链系统中不同的并行链上去。
进一步的,对于第一密钥生成算法在生成第一密钥时考虑并行链已扩容的次数的实现方式,若并行链扩容后,Master TEE中保存的并行链已扩容的次数和并行链的数量(在计算并行链的链标识时使用)已经更新,但Slave TEE中保存的并行链已扩容的次数或并行链的数量尚未更新,Slave TEE将无法继续在原来的并行链上挖矿(因为无法正确解密区块头主体的哈希值),即在并行链扩容升级后,若Slave TEE的配置未升级,将不允许该SlaveTEE继续参与挖矿,这样,即使在升级前某个并行链上出现了算力聚集,升级后一旦SlaveTEE的配置更新,聚集的Slave TEE将可能被分散到新的并行链上去挖矿,从而有效消除了算力聚集。
进一步的,对于第一密钥生成算法在生成第一密钥时考虑矿池标识的实现方式,能够限制Slave TEE只能在指定的矿池下挖矿,不能随意更换矿池(否则无法正确解密区块头主体的哈希值),避免算力聚集。
进一步的,对于第一密钥生成算法在生成第一密钥时考虑认证码的实现方式,由于并行链上的记账节点都可以根据认证码去实名认证机构查询获得记账权的用户是否通过实名认证(具体方法见后文描述),因此可以避免矿池运营者私自允许一些未经实名认证的用户(其Slave TEE中无认证码)使用其终端设备参与挖矿,保障挖矿过程的公正性。
进一步的,步骤S423可以与步骤S424在Slave TEE中连续执行,无法被Slave TEE之外的程序中断或干扰,因为其解密获得的区块头主体的哈希值,将作为记账权确定信息的一部分进行签名,两个步骤紧密捆绑,确保明文态的区块头主体的哈希值仅被用于生成记账权确定信息的签名,不被用于其它用途,避免其遭到伪造。另一方面,由于对记账权确定信息的签名要使用Slave TEE保存的第一私钥,步骤S423还保证了任何人在不解密区块头主体的哈希值的情况下是无法使用第一私钥的,或者说第一私钥只能在该场景下被使用而不会被滥用,确保了签名不会被人伪造。
根据之前的阐述,为支持区块头主体的哈希值的加解密机制。Master TEE中可以保存并行链的数量、并行链已扩容的次数、矿池标识、并行链标识掩码几项信息。其中,前三项信息在Master TEE发行时就配置好,且前两项信息在并行链扩容时经可信授权操作还能更改,Master TEE还提供对外接口,在区块链系统扩容或者并行链标识掩码更新时,矿池服务器通过调用该接口,更新并行链的数量、并行链已扩容的次数、并行链标识掩码中的一项或几项信息。
Slave TEE中可以保存并行链的数量、并行链已扩容的次数、矿池标识、并行链标识掩码、虚拟并行链标识几项信息。其中,前两项信息在Slave TEE发行时就配置好,且在并行链扩容时经可信授权操作还能更改,矿池标识由用户自行录入,虚拟并行链标识则在生成钱包账号的地址时根据Slave TEE的硬件标识计算。Slave TEE还提供对外接口,在区块链系统扩容或者并行链标识掩码更新时,终端设备通过调用该接口,更新并行链的数量、并行链已扩容的次数、并行链标识掩码中的一项或几项信息。
为确保更改TEE(包括Master TEE和Slave TEE)中的配置信息的命令是可信的,在一些实现方式中,调用配置更新接口时还需要将一个签名作为参数传入,该签名利用区块链系统的管理员保存的私钥生成,在TEE环境中保存与之匹配的公钥,用于验证签名的真实性,若验证通过,才进行配置信息的更新。在区块链系统扩容或者并行链标识掩码更新时,管理员在系统中广播配置更新指令(例如,通过并行链上的路由节点发出广播消息),该指令将被矿池服务器以及终端设备所接收,并最终调用TEE提供的接口完成配置更新。配置更新指令有严格的执行顺序(例如,并行链已扩容的次数必须每次累加1),因此挖矿节点和矿池服务器可以在自身的数据库中保存每次收到的指令,一旦Master TEE或Slave TEE因故下线导致错过一个或多个配置更新指令,其重新上线后将根据数据库中的记录依次执行错过的指令,而不会产生指令执行顺序的错误。
在一些实现方式中,可以将已扩容的次数作为区块头主体部分中的版本号字段的值,即让版本号字段既反映区块链系统中软件版本的变化,也反映区块链系统中扩容配置的变化,以便简化版本管理。
步骤S424:Slave TEE对记账权确定信息进行签名。
步骤S424和步骤S306类似的部分不再重复阐述。若矿池采用了步骤S401中提到的实名认证机制,则在待定记账区块的区块头中可以相应地增加认证码字段,用于填充用户获得的认证结果中的认证码。从而,区块链中的每个区块都包含获得该区块记账权的SlaveTEE绑定的钱包账号的地址主体以及与其对应的认证码,根据步骤S401中的阐述,并行链上的节点可以根据区块头中记录的这两项信息取实名认证机构验证用户是否确实通过了实名认证。
具体而言,终端设备在获得认证结果后,可将认证结果中的认证码保存至SlaveTEE中。例如,调用Slave TEE提供的对外接口,将认证结果以及认证结果的签名作为调用参数,Slave TEE中保存实名认证机构的公钥,先对签名进行验证,若通过后将其中的认证码保存在Slave TEE中。Slave TEE在对记账权确定信息进行签名时,将认证码也包含进去,即认证码也作为记账权确定信息的一部分。记账权确定信息最终被挖矿节点接收到之后,由挖矿节点将认证码保存至记账区块的区块头中。
以并行链上的挖矿节点为例,挖矿节点在验证用户是否经过实名认证时,需要知道用户是在哪家实名机构进行的认证,由于认证码中并不包含该信息,因此在一些实现方式中,该信息是预配置在挖矿节点中的,挖矿节点根据预配置的信息可以到实名认证机构提供的查询网址处进行验证。
在另一些实现方式中,可以对认证码进行扩展,将认证结果中认证标识也包含到认证码中。这种扩展可能在实名认证机构一端已经实现,例如在实名认证机构返回的认证码中已经包含认证标识,不再返回单独的认证标识。或者,实名认证机构仍返回认证标识和原始的认证码,但Slave TEE在保存认证码时,将原始的认证码和认证标识合并为扩展后的认证码保存,例如,原始的认证码为4字节,认证标识为1字节,扩展后的认证码为5字节,在后续步骤中均使用扩展后的认证码。由于扩展后的认证码中包含了认证标识,所以挖矿节点在验证用户是否经过实名认证时仅根据认证码就可以确定实名认证机构的信息,并访问相应的实名认证机构完成验证,从而实现了在区块链系统中支持经多家实名认证机构认证的终端设备参与挖矿。需要指出,以上所说的扩展后的认证码中包含认证标识,是指包含认证标识中描述实名认证机构身份的部分,不一定要包含认证标识的全部内容。
引入实名认证机制后,矿池服务器、挖矿节点或者区块链系统中的其他节点一旦发现某个参与挖矿的用户有不端行为,例如其使用的终端设备中存在篡改数据等行为,很容易根据认证码查询到该用户的真实身份信息,对其进行追责,满足区块链系统的监管部门的监管需求。
另一方面,实名认证机制也能够让Slave TEE的发行商自证清白,因为实名认证由第三方的实名认证机构掌控,发行商无法通过伪造众多的Slave TEE(例如,通过软件模拟的方式)在挖矿过程中获得非正常的算力,因为用户的实际身份是有限(例如,用户很难拥有大量的真实手机号),难以让大量伪造的Slave TEE都通过实名认证。
进一步的,步骤S420、S421、S421、S423以及S424也可以在Slave TEE中连续执行,不能被Slave TEE之外的程序中断或干扰,这样保证了这些步骤中前步操作结果无法被伪造,以便用作后步操作的输入。
步骤S425:终端设备向矿池服务器发送记账权确定信息以及记账权确定信息的签名。
步骤S426:矿池服务器验证记账权确定信息是否有效。
矿池服务器可以验证的内容包括记账权确定信息的签名是否真实,以及记账权确定信息是否被篡改,在步骤S308中已经进行过阐述的内容,不再重复阐述。若记账权确定信息中包含认证码,则矿池服务器还可以验证认证码与本地保存的是否一致,若一致则通过验证,不一致则说明记账权确定信息中的认证码是被篡改过的。
步骤S427:矿池服务器向挖矿节点发送记账权确定信息以及记账权确定信息的签名。
在区块链系统有多个并行链时,矿池服务器向竞争到记账权的Slave TEE所在的那个并行链上的挖矿节点发送记账权确定信息。
步骤S428:挖矿节点验证记账权确定信息是否有效。
挖矿节点可以验证的内容包括记账权确定信息的签名是否真实,以及记账权确定信息是否被篡改,在步骤S309中已经进行过阐述的内容,不再重复阐述。若记账权确定信息中包含认证码,则挖矿节点还可以验证用户是否经过实名认证。
步骤S429:验证待定记账区块是否满足冷却时长的要求。
若满足冷却时长的要求,则执行步骤S430生成记账区块,否则不生成记账区块,本次记账失败。
其判断方法与步骤S418中类似,这里仅仅简单重复,具体可参考步骤S418:
首先,挖矿节点根据记账权确定信息中的钱包账号的地址主体查询获得终端设备上次记账生成的区块在区块链中的高度。为加快查询进度,在一些实现方式中,挖矿节点可以将区块链中每个区块高度以及区块头中的钱包账号的地址主体单独保存到挖矿节点的数据库中。
其次,挖矿节点根据上次记账生成的区块在区块链中的高度以及待定记账区块在区块链中的高度确定待定记账区块的生成时间与上次记账生成的区块的生成时间的时间间隔。其具体估算公式可以参考步骤S418。
最后,挖矿节点确定判断时间间隔大于冷却时长,若大于,则确定待定记账区块满足冷却时长的要求,否则不满足冷却时长的要求。其中,冷却时长为根据挖矿节点保存的难度目标值计算出的累积未用下限时长的k倍,k为大于0且小于1的常数。
类似步骤S418的,在一些实现方式中,挖矿节点可以增设一条验证规则,若待定记账区块的区块头中的难度目标值大于某一预设值(如最大难度目标值的一半),则也视为满足冷却时长的要求,不在按照区块的高度进行冷却时的估算。
类似步骤S418的,若某个Slave TEE首次参与挖矿,或者刚刚换一个并行链挖矿(因为区块链系统扩容或者并行链标识掩码调整),由于新的并行链上的挖矿节点只有新的并行链上的账本,在该账本中并不能查到该Slave TEE之前挖矿的记录,因此也无法获得其上次记账成功时生成的区块在区块链中的高度,所以也视为已经满足冷却时长的要求。
步骤S430:挖矿节点生成记账区块并将记账区块添加至本地的区块链中。
在步骤S309中已经进行过阐述的内容,不再重复阐述。若记账区块中包含认证码,则并行链上的记账节点(如其他挖矿节点等)还可以验证用户是否经过实名认证,具体在步骤S424中已经阐述。
此外,在一些实现方式中,挖矿节点对于从其他挖矿节点广播过来的待确认的记账区块,也可以验证该区块的记账行为是否满足冷却时长,进而确定是否要认可该区块。需要指出,挖矿节点上的判断过程与Slave TEE自己主动休息以及矿池服务器上的判断过程是相互独立的,即使Slave TEE和矿池服务器上不实现和冷却时长有关的功能,挖矿节点上仍可独立进行此判断。
其判断方法与步骤S418中类似,这里仅仅简单重复,具体可参考步骤S418:
首先,挖矿节点根据本地的区块链中的待确认的记账区块中保存的终端设备的钱包账号的地址主体查询获得该终端设备上次记账生成的区块在区块链中的高度。为加快查询进度,在一些实现方式中,挖矿节点可以将区块链中每个区块高度以及区块头中的钱包账号的地址主体单独保存到挖矿节点的数据库中。
其次,挖矿节点根据上次记账生成的区块在区块链中的高度以及待确认的记账区块在区块链中的高度确定待确认的记账区块的生成时间与上次记账生成的区块的生成时间的时间间隔。其具体估算公式可以参考步骤S418。
最后,挖矿节点判断时间间隔是否大于预设的冷却时长,若大于冷却时长,则认可待确认的记账区块,并将其添加至本地的区块链中等待进一步确认,否则不会认可该区块,可以直接将其丢弃。其中,冷却时长为根据待确认的记账区块中保存的难度目标值计算出的累积未用下限时长的k倍,k为大于0且小于1的常数。
类似步骤S418的,在一些实现方式中,挖矿节点可以增设一条验证规则,若待确认的记账区块的区块头中的难度目标值大于某一预设值(如最大难度目标值的一半),则也视为满足冷却时长的要求,不在按照区块的高度进行冷却时的估算。
类似步骤S418的,若在待确认的记账区块生成时,某个Slave TEE首次参与挖矿,或者刚刚换一个并行链挖矿(因为区块链系统扩容或者并行链标识掩码调整),由于新的并行链上的挖矿节点只有新的并行链上的账本,在该账本中并不能查到该Slave TEE之前挖矿的记录,因此也无法获得其上次记账成功时生成的区块在区块链中的高度,所以也视为已经满足冷却时长的要求。
步骤S431:矿池服务器将矿池奖励从矿池钱包账号的地址转账至竞争到记账权的Slave TEE绑定的钱包账号的地址。
按照区块链的协议,挖矿成功后用户能够获得一定数额的数字货币作为挖矿奖励,而矿池奖励是矿池运营者发给用户的额外的数字货币,不属于挖矿奖励的一部分,其目的在于吸引更多用户参与挖矿,改善矿池的运营状况。
发放矿池奖励也可以实现为智能合约的脚本,在Slave TEE竞争记账权成功后触发该智能合约,实现矿池奖励的发放。需要指出,虽然竞争到记账权的用户并不一定是最终记账成功的用户,但矿池运营者处于运营方面的考虑,仍可向其发放矿池奖励。
矿池奖励和挖矿奖励可以是同一种数字货币,也可以不是同一种数字货币,前者可以由矿池运营者自己发行并维护。Slave TEE绑定的钱包账号的地址对于矿池服务器是已知的,而矿池钱包账号的地址可以由Master TEE进行管理,每次矿池奖励的转账交易可以使用Master TEE中的私钥进行签名,确保交易的安全性。
此外,还需要指出,给Slave TEE发放挖矿奖励的并行链并不一定是Slave TEE挖矿所在的并行链。
可以理解的,步骤S401至步骤S431也可以按照不同于上面的顺序执行,上面步骤顺序仅仅是本发明实施例提供的一种实现方式,不应当视为对本发明保护范围的限制。
本发明实施例还提供一种矿池服务器,如图5所示。参照图5,矿池服务器500包括:
存储器504,用于存储计算机指令;
通信接口506,用于与终端设备以及挖矿节点通信;
Master TEE 508或连接有Master TEE508;
处理器502,与存储器504、通信接口506以及Master TEE508通过一条或多条总线510相连,其中,在存储器504中的计算机指令被处理器执行时,处理器502结合MasterTEE508执行本发明实施例提供的记账方法中相应于矿池服务器以及Master TEE的步骤。
其中,存储器504包括一个或多个,其可以是,但不限于,随机存取存储器(RandomAccess Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,简称EPROM),电可擦除只读存储器(ElectricErasable Programmable Read-Only Memory,简称EEPROM)等。处理器502以及其他可能的组件可对存储器504进行访问,读和/或写其中的数据。
处理器502包括一个或多个,其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器502可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、微控制单元(Micro Controller Unit,简称MCU)、网络处理器(Network Processor,简称NP)或者其他常规处理器;还可以是专用处理器,包括数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application SpecificIntegratedCircuits,简称ASIC)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
通信接口506包括一个或多个,通信接口506可以是计算机网络接口,例如以太网接口,也可以是移动通信网络接口,例如3G、4G、5G网络的接口,还可以是其他具有数据收发功能的接口。
Master TEE 508在前文已经介绍,不再重复阐述。
本发明实施例提供的矿池服务器500,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法施例中相应内容。
本发明实施例还提供一种终端设备,如图6所示。参照图6,终端设备600包括:
存储器604,用于存储计算机指令;
通信接口606,用于与矿池服务器通信;
Slave TEE608或连接有Slave TEE608;
处理器602,与存储器604、通信接口606以及Slave TEE608通过一条或多条总线610相连,其中,在存储器604中的计算机指令被处理器602执行时,处理器602结合SlaveTEE608执行本发明实施例提供的记账方法中相应于终端设备以及Slave TEE的步骤。
其中,存储器604、通信接口606以及处理器602的实现方法可以采用和存储器504、通信接口506以及处理器502类似的实现方法,不再重复阐述。Slave TEE608在前文已经介绍,不再重复阐述。
本发明实施例提供的终端设备600,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法施例中相应内容。
本发明实施例还提供一种挖矿节点,如图7所示。参照图7,挖矿节点700包括:
存储器704,用于存储计算机指令;
通信接口706,用于与矿池服务器通信;
处理器702,与存储器704、通信接口706通过总线710相连,其中,在存储器704中的计算机指令被处理器702执行时,处理器702执行本发明实施例提供的记账方法中相应于挖矿节点的步骤。
其中,存储器704、通信接口706以及处理器702的实现方法可以采用和存储器504、通信接口506以及处理器502类似的实现方法,不再重复阐述。
本发明实施例提供的挖矿节点700,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法施例中相应内容。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得计算机设备执行本发明各个实施例所述方法的全部或部分步骤。前述的计算机设备包括:个人计算机、服务器、移动设备、智能穿戴设备、网络设备、虚拟设备等各种具有执行程序代码能力的设备,前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟、磁带或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (39)
1.一种记账方法,其特征在于,应用于区块链系统,所述区块链系统包括至少一个并行链,所述至少一个并行链上搭建有至少一个矿池,每个矿池包括矿池服务器以及位于所述并行链上的挖矿节点,所述挖矿节点采用分布式数据区块链存储数据,所述方法包括:
所述矿池服务器接收并存储所述挖矿节点发送的待定记账区块的区块头主体的哈希值以及所述挖矿节点所在的并行链上挖矿的难度目标值;
所述矿池服务器接收终端设备发送的记账请求;
所述矿池服务器向所述终端设备发送所述区块头主体的哈希值以及所述难度目标值,以使所述终端设备配置的从可信执行环境Slave TEE判断自身的累积未用时长是否大于根据所述难度目标值计算出的累积未用下限时长,并在大于时对记账权确定信息进行签名,其中,所述记账权确定信息包括所述区块头主体的哈希值以及所述Slave TEE绑定的钱包账号的地址主体;
所述矿池服务器接收所述终端设备发送的所述记账权确定信息以及所述记账权确定信息的签名;
所述矿池服务器将所述记账权确定信息以及所述记账权确定信息的签名发送至所述挖矿节点,以使所述挖矿节点生成包含所述钱包账号的地址主体以及所述记账权确定信息的签名的记账区块,并将所述记账区块添加至本地的区块链中。
2.根据权利要求1所述的方法,其特征在于,所述并行链包括路由节点、至少一个矿池的挖矿节点和至少一个简化支付验证SPV节点,所述至少一个并行链的路由节点之间网络连接,所述SPV节点绑定的钱包账号的地址对应的并行链为所述SPV节点所在的并行链,其中:
所述SPV节点用于:响应于接收到交易请求,将所收到的交易请求发送给所述SPV节点所在的并行链的路由节点;
所述路由节点用于:响应于对所收到的交易请求校验通过,将所收到的交易请求添加到所述路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给所述路由节点的同链挖矿节点;以及实时将所述路由节点的同链挖矿节点的区块链同步到本地的区块链;
所述挖矿节点用于:响应于对从同链路由节点接收到的签名后交易请求验证通过,将签名后交易请求中所述挖矿节点的链内交易请求添加到所述挖矿节点的待处理交易请求集合;根据所述待处理交易请求集合生成所述区块头主体的哈希值;
所述路由节点还用于:确定所述路由节点的交易请求集合中确认已出账且未入账的未入账交易请求;将所确定的未入账交易请求发送给目标并行链的路由节点,其中,所述目标并行链是所确定的未入账交易请求中的入账账号地址对应的并行链;以及响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给所述路由节点的同链挖矿节点。
3.根据权利要求1或2所述的方法,其特征在于,所述记账权确定信息还包括所述累积未用下限时长。
4.根据权利要求1或2所述的方法,其特征在于,所述记账权确定信息的签名由所述Slave TEE根据保存的第一私钥生成,在所述矿池服务器将所述记账权确定信息以及所述记账权确定信息的签名发送至所述挖矿节点之前,所述方法还包括:
所述矿池服务器根据保存的与所述第一私钥匹配的第一公钥确定所述记账权确定信息的签名为真实签名。
5.根据权利要求1或2所述的方法,其特征在于,所述矿池包括多个挖矿节点,不同的挖矿节点位于不同的并行链上;
所述矿池服务器向所述终端设备发送所述区块头主体的哈希值以及所述难度目标值,包括:所述矿池服务器配置的主可信执行环境Master TEE确定与所述终端设备相关联的并行链;所述矿池服务器向所述终端设备发送与所述终端设备相关联的并行链上的挖矿节点提供的所述区块头主体的哈希值以及所述难度目标值;
所述矿池服务器将所述记账权确定信息以及所述记账权确定信息的签名发送至所述挖矿节点,包括:所述矿池服务器将所述记账权确定信息以及所述记账权确定信息的签名发送至所述终端设备关联的并行链上的挖矿节点。
6.根据权利要求5所述的方法,其特征在于,所述Master TEE确定与所述终端设备相关联的并行链,包括:
所述Master TEE根据所述Slave TEE绑定的钱包账号的地址的虚拟并行链标识、所述终端设备的并行链标识掩码以及所述区块链系统包含的并行链的数量计算所述终端设备关联的并行链的链标识,其中,所述虚拟并行链标识根据所述终端设备配置的Slave TEE的硬件标识计算获得。
7.根据权利要求5所述的方法,其特征在于,所述矿池服务器向所述终端设备发送所述区块头主体的哈希值以及所述难度目标值,包括:
所述Master TEE根据第一密钥生成算法基于矿池配置信息生成第一密钥,并根据所述第一密钥加密所述区块头主体的哈希值;所述矿池配置信息包括终端设备关联的并行链的链标识;其中,所述Slave TEE能够利用所述第一密钥生成算法生成所述第一密钥,并利用所述第一密钥解密加密后的所述区块头主体的哈希值;
所述矿池服务器向所述终端设备发送所述难度目标值以及加密后的所述区块头主体的哈希值。
8.根据权利要求7所述的方法,其特征在于,所述第一密钥生成算法为所述Master TEE以及所述Slave TEE所私有,算法实现不在所述Master TEE以及所述Slave TEE之外公开,算法生成的所述第一密钥在所述Master TEE中被用于且仅被用于加密所述区块头主体的哈希值,在所述Slave TEE中被用于且仅被用于解密加密后的所述区块头主体的哈希值。
9.根据权利要求1或2所述的方法,其特征在于,所述矿池服务器向所述终端设备发送所述区块头主体的哈希值以及所述难度目标值,包括:
所述矿池服务器判断所述终端设备距离上次记账时间的时间间隔t1是否大于冷却时长t2,所述t2为累积未用下限时长的k倍,k为大于0且小于1的常数;
若大于,所述矿池服务器向所述终端设备发送所述区块头主体的哈希值以及所述难度目标值。
10.根据权利要求9所述的方法,其特征在于,在所述矿池服务器判断所述t1是否大于所述t2之后,所述方法还包括:
若所述t1不大于所述t2,则所述矿池服务器通知所述终端设备距离发起下次记账请求的时间间隔t3,所述t3为所述t2与所述t1的差值。
11.根据权利要求9所述的方法,其特征在于,所述t1通过如下公式计算:
其中,Height2为所述待定记账区块在所述区块链中的高度,Height1为上次记账生成的区块在所述区块链中的高度,为所述区块链系统的预设常数,用于表征所述区块链系统的平均出块时间。
12.根据权利要求1或2所述的方法,其特征在于,在所述矿池服务器接收终端设备发送的记账请求之前,所述方法还包括:
所述矿池服务器接收所述终端设备发送的注册请求,所述注册请求携带有注册信息、用户的实名认证结果以及实名认证机构用私钥对所述实名认证结果的签名,所述注册信息包括所述Slave TEE绑定的钱包账号的地址;
所述矿池服务器配置的Master TEE根据保存的与所述实名认证机构的私钥匹配的公钥验证所述实名认证结果的签名的真实性;
若所述实名认证结果的签名为真实签名,则所述矿池服务器保存所述注册信息,并向所述终端设备发送注册响应。
13.根据权利要求12所述的方法,其特征在于,所述实名认证结果包括所述实名认证机构分配的认证码,所述认证码与所述Slave TEE绑定的钱包账号的地址相对应,用于表征所述用户通过所述实名认证机构的实名认证;
所述方法还包括:
所述矿池服务器还接收所述终端设备发送的所述认证码,并将所述认证码发送至所述挖矿节点,以使所述挖矿节点将所述认证码添加至所述记账区块;
所述记账权确定信息还包括所述认证码。
14.根据权利要求1或2所述的方法,其特征在于,在所述矿池服务器接收终端设备发送的记账请求之前,所述方法还包括:
所述矿池服务器接收所述终端设备发送的入池申请;
所述矿池服务器配置的Master TEE判断所述矿池服务器的容量是否小于容量阈值;
若小于,则所述矿池服务器根据所述Master TEE生成的授权信息对所述终端设备进行入池授权,以告知所述终端设备在授权开始时间之后的授权使用时长内向所述矿池服务器发送的所述记账请求可被所述矿池服务器接受,其中,所述授权使用时长为保存在所述矿池服务器配置的Master TEE中的预配置数据;
若大于,则所述矿池服务器发送消息通知所述终端设备未获入池授权。
15.根据权利要求14所述的方法,其特征在于,所述矿池服务器的容量小于容量阈值,包括:
当前的授权周期内的入池授权量小于第一阈值;其中,所述授权周期以及所述第一阈值为保存在所述矿池服务器配置的Master TEE中的预配置数据。
16.根据权利要求14所述的方法,其特征在于,所述授权信息包括授权序号以及授权码,其中,所述授权序号由所述Master TEE分配,所述授权码用于使所述终端设备配置的Slave TEE验证入池授权是否有效,
所述矿池服务器根据所述Master TEE生成的授权信息对所述终端设备进行入池授权,包括:
所述矿池服务器向所述终端设备发送所述授权序号以及所述授权码,并将所述授权序号与授权关联信息对应保存,其中,所述授权关联信息是指和授权内容相关的信息;
在所述矿池服务器向所述终端设备发送所述区块头主体的哈希值以及所述难度目标值之前,所述方法还包括:
所述矿池服务器根据所述记账请求中携带的所述授权序号查询对应的所述授权关联信息,并根据所述授权关联信息确定所述终端设备的入池授权有效。
17.根据权利要求16所述的方法,其特征在于,所述矿池服务器向所述终端设备发送授权序号以及授权码,包括:
所述Master TEE根据第二密钥生成算法生成第二密钥,利用所述第二密钥加密所述授权码;
所述矿池服务器向所述终端设备发送所述授权序号以及加密后的所述授权码;其中,所述终端设备配置的Slave TEE能够利用所述第二密钥生成算法生成所述第二密钥,并利用所述第二密钥解密所述加密后的所述授权码。
18.根据权利要求17所述的方法,其特征在于,所述第二密钥生成算法为所述MasterTEE以及所述Slave TEE所私有,算法实现不在所述Master TEE以及所述Slave TEE之外公开,算法生成的所述第二密钥在所述Master TEE中被用于且仅被用于加密所述授权码,在所述Slave TEE中被用于且仅被用于解密加密后的所述授权码。
19.根据权利要求1或2所述的方法,其特征在于,在所述矿池服务器将所述记账权确定信息以及所述记账权确定信息的签名发送至所述挖矿节点之后,所述方法还包括:
所述矿池服务器将预设数额的矿池奖励从预配置的矿池钱包账号的地址转账至竞争到记账权的所述终端设备配置的Slave TEE绑定的所述钱包账号的地址。
20.一种记账方法,其特征在于,应用于接入到区块链系统的终端设备,所述区块链系统包括至少一个并行链,所述至少一个并行链上搭建有至少一个矿池,每个矿池包括矿池服务器以及位于所述并行链上的挖矿节点,所述挖矿节点采用分布式数据区块链存储数据,所述方法包括:
所述终端设备向所述矿池服务器发送记账请求;
所述终端设备接收所述矿池服务器发送的待定记账区块的区块头主体的哈希值以及在所述并行链上挖矿的难度目标值;
所述终端设备配置的Slave TEE判断自身的累积未用时长是否大于根据所述难度目标值计算出的累积未用下限时长,并在大于时对记账权确定信息进行签名,其中,所述记账权确定信息包括所述区块头主体的哈希值以及所述Slave TEE绑定的钱包账号的地址主体;
所述终端设备向所述矿池服务器发送所述记账权确定信息以及所述记账权确定信息的签名。
21.根据权利要求20所述的方法,其特征在于,所述Slave TEE对记账权确定信息进行签名,包括:
所述Slave TEE根据保存的第一私钥对记账权确定信息进行签名,所述矿池服务器以及所述挖矿节点保存有与所述第一私钥匹配的第一公钥。
22.根据权利要求20所述的方法,其特征在于,所述矿池包括多个挖矿节点,不同的挖矿节点位于不同的并行链上;
所述终端设备接收所述矿池服务器发送的待定记账区块的区块头主体的哈希值以及在所述并行链上挖矿的难度目标值,包括:
所述终端设备接收所述矿池服务器发送的加密后的所述区块头主体的哈希值以及所述难度目标值,其中,加密所用的第一密钥由所述矿池服务器配置的Master TEE根据第一密钥生成算法生成;
在所述Slave TEE对记账权确定信息进行签名之前,所述方法还包括:
所述Slave TEE根据所述第一密钥生成算法基于矿池配置信息生成所述第一密钥,并利用所述第一密钥解密加密后的所述区块头主体的哈希值,其中,所述矿池配置信息包括所述终端设备关联的并行链的链标识,所述记账权确定信息包括解密后的所述区块头主体的哈希值。
23.根据权利要求22所述的方法,其特征在于,所述矿池配置信息还包括所述并行链已扩容的次数和/或预配置的所述矿池的矿池标识。
24.根据权利要求22所述的方法,其特征在于,所述终端设备关联的并行链的链标识由所述Slave TEE根据所述Slave TEE绑定的钱包账号的地址的虚拟并行链标识、所述终端设备的并行链标识掩码以及所述区块链系统包含的并行链的数量计算获得,其中,所述虚拟并行链标识根据所述Slave TEE的硬件标识计算获得。
25.根据权利要求20所述的方法,其特征在于,在所述终端设备向所述矿池服务器发送记账请求之前,所述方法还包括:
所述终端设备向所述矿池服务器发送注册请求,所述注册请求携带有注册信息、用户的实名认证结果以及实名认证机构用私钥对所述实名认证结果的签名,所述注册信息包括所述Slave TEE绑定的钱包账号的地址;所述矿池服务器配置的Master TEE中保存有与所述实名认证机构的私钥匹配的公钥;
所述实名认证结果包括所述实名认证机构分配的认证码,所述认证码与所述SlaveTEE绑定的钱包账号的地址相对应,用于表征所述用户通过所述实名认证机构的实名认证;
所述记账权确定信息还包括所述认证码。
26.根据权利要求20所述的方法,其特征在于,在所述终端设备向所述矿池服务器发送记账请求之前,所述方法还包括:
所述终端设备向所述矿池服务器发送入池申请,并获得所述矿池服务器的入池授权。
27.根据权利要求26所述的方法,其特征在于,所述终端设备获得所述矿池服务器的入池授权,包括:
所述终端设备接收所述矿池服务器发送的授权序号以及加密后的授权码,其中,所述授权序号由所述矿池服务器配置的Master TEE分配加密所用的第二密钥由所述MasterTEE根据第二密钥生成算法生成;
在所述Slave TEE对记账权确定信息进行签名之前,所述方法还包括:
所述Slave TEE根据所述第二密钥生成算法生成所述第二密钥,利用所述第二密钥解密加密后的所述授权码;
所述Slave TEE根据解密后的所述授权码确定入池授权有效。
28.一种记账方法,其特征在于,应用于区块链系统,所述区块链系统包括至少一个并行链,所述至少一个并行链上搭建有至少一个矿池,每个矿池包括矿池服务器以及位于所述并行链上的挖矿节点,所述挖矿节点采用分布式数据区块链存储数据,所述方法包括:
所述挖矿节点向所述矿池服务器发送待定记账区块的区块头主体的哈希值以及在所述并行链上挖矿的难度目标值;
所述挖矿节点接收所述矿池服务器发送的接入所述矿池服务器的终端设备配置的Slave TEE绑定的钱包账号的地址主体以及所述Slave TEE生成的记账权确定信息的签名,其中,所述记账权确定信息包括所述区块头主体的哈希值以及所述Slave TEE绑定的钱包账号的地址主体;
所述挖矿节点生成包含所述钱包账号的地址主体以及所述记账权确定信息的签名的记账区块,并将所述记账区块添加至本地的区块链中。
29.根据权利要求28所述的方法,其特征在于,所述记账权确定信息还包括累积未用下限时长和/或实名认证机构分配的认证码,其中,所述累积未用下限时长是所述Slave TEE根据所述难度目标值计算出的,所述认证码与所述Slave TEE绑定的钱包账号的地址相对应,用于表征用户通过所述实名认证机构的实名认证,所述挖矿节点生成的所述记账区块中还包含根据所述累积未用下限时长计算出的所述难度目标值和/或所述认证码。
30.根据权利要求28所述的方法,其特征在于,所述记账权确定信息的签名由所述Slave TEE根据保存的第一私钥生成,在所述挖矿节点生成包含所述钱包账号的地址主体以及所述记账权确定信息的签名的记账区块之前,所述方法还包括:
所述挖矿节点根据保存的与所述第一私钥匹配的第一公钥确定所述记账权确定信息的签名为真实签名。
31.根据权利要求28所述的方法,其特征在于,在所述挖矿节点生成包含所述钱包账号的地址主体以及所述记账权确定信息的签名的记账区块之前,所述方法还包括:
所述挖矿节点根据所述钱包账号的地址主体查询获得所述终端设备上次记账生成的区块在所述区块链中的高度;
所述挖矿节点根据所述上次记账生成的区块在所述区块链中的高度以及所述待定记账区块在所述区块链中的高度确定所述待定记账区块的生成时间与所述上次记账生成的区块的生成时间的时间间隔;
所述挖矿节点确定判断所述时间间隔大于冷却时长,其中,所述冷却时长为根据所述难度目标值计算出的累积未用下限时长的k倍,k为大于0且小于1的常数。
32.根据权利要求28所述的方法,其特征在于,在所述挖矿节点将所述记账区块添加至本地的区块链中之后,所述方法还包括:
所述挖矿节点将所述记账区块在所述区块链中的高度、竞争到记账权的终端设备配置的Slave TEE绑定的钱包账号的地址主体发送至所述矿池服务器。
33.根据权利要求28所述的方法,其特征在于,所述方法还包括:
所述挖矿节点根据所述区块链的待确认的记账区块中保存的终端设备的钱包账号的地址主体查询获得该终端设备上次记账生成的区块在所述区块链中的高度,其中,所述待确认的记账区块是指所述挖矿节点接收到的由同链挖矿节点广播的记账区块;
所述挖矿节点根据所述上次记账生成的区块在所述区块链中的高度以及所述待确认的记账区块在所述区块链中的高度确定所述待确认的记账区块的生成时间与所述上次记账生成的区块的生成时间的时间间隔;
所述挖矿节点判断所述时间间隔是否大于冷却时长,若大于所述冷却时长,则认可所述待确认的记账区块,其中,所述冷却时长为根据所述待确认的记账区块中保存的难度目标值计算出的累积未用下限时长的k倍,k为大于0且小于1的常数。
34.一种矿池服务器,其特征在于,所述矿池服务器包括:
存储器,用于存储计算机指令;
通信接口,用于与终端设备以及所述挖矿节点通信;
所述矿池服务器还包括Master TEE或连接有所述Master TEE;
所述矿池服务器还包括处理器,与所述存储器、所述通信接口以及所述Master TEE相连,其中,所述计算机指令被所述处理器执行,所述处理器结合所述Master TEE执行如权利要求1-19中任一项所述的方法。
35.一种终端设备,其特征在于,所述终端设备包括:
存储器,用于存储计算机指令;
通信接口,用于与所述矿池服务器通信;
所述终端设备还包括Slave TEE或连接有Slave TEE;
所述终端设备还包括处理器,与所述存储器、所述通信接口以及所述Slave TEE相连,其中,所述计算机指令被所述处理器执行,所述处理器结合所述Slave TEE执行如权利要求21-29中任一项所述的方法。
36.一种挖矿节点,其特征在于,所述挖矿节点包括:
存储器,用于存储计算机指令;
通信接口,用于与所述矿池服务器通信;
处理器,与所述存储器、所述通信接口相连,其中,所述计算机指令被所述处理器执行,所述处理器执行如权利要求28-33任一项所述的方法。
37.一种矿池,其特征在于,包括:矿池服务器以及位于区块链系统的并行链上的挖矿节点,所述挖矿节点采用分布式数据区块链存储数据,所述区块链系统包括至少一个并行链;
其中,所述挖矿节点用于:向所述矿池服务器发送待定记账区块的区块头主体的哈希值以及在所述并行链上挖矿的难度目标值;
所述矿池服务器用于:接收并存储所述区块头主体的哈希值以及所述难度目标值,并在接收到终端设备发送的记账请求后,向所述终端设备发送所述区块头主体的哈希值以及所述难度目标值,以使所述终端设备配置的Slave TEE判断自身的累积未用时长是否大于根据所述难度目标值计算出的累积未用下限时长,并在大于时对记账权确定信息进行签名,其中,所述记账权确定信息包括所述区块头主体的哈希值以及所述Slave TEE绑定的钱包账号的地址主体;接收所述终端设备发送的所述记账权确定信息及所述记账权确定信息的签名,并将所述记账权确定信息以及所述记账权确定信息的签名发送至所述挖矿节点;
所述挖矿节点还用于:生成包含所述钱包账号的地址主体以及所述记账权确定信息的签名的记账区块,并将所述记账区块添加至本地的区块链中。
38.根据权利要求37所述的矿池,其特征在于,所述矿池服务器还用于:在接收所述终端设备发送的记账请求之前,接收所述终端设备发送的入池申请,并在所述矿池服务器配置的Master TEE中判断所述矿池服务器的容量是否小于容量阈值,若小于,则根据所述Master TEE生成授权信息对所述终端设备进行入池授权,以告知所述终端设备在授权开始时间之后的授权使用时长内向所述矿池服务器发送的所述记账请求可被所述矿池服务器接受,若大于,则发送消息通知所述终端设备未获入池授权,其中,所述授权使用时长为保存在所述矿池服务器配置的Master TEE中的预配置数据。
39.根据权利要求38所述的矿池,其特征在于,所述矿池服务器的容量小于容量阈值,包括:
当前的授权周期内的入池授权量小于第一阈值;其中,所述授权周期以及所述第一阈值为保存在所述矿池服务器配置的Master TEE中的预配置数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910011750.1A CN109741039B (zh) | 2019-01-07 | 2019-01-07 | 记账方法、矿池服务器、终端设备、挖矿节点及矿池 |
PCT/CN2019/127183 WO2020143431A1 (zh) | 2019-01-07 | 2019-12-20 | 记账方法、矿池服务器、终端设备、挖矿节点及矿池 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910011750.1A CN109741039B (zh) | 2019-01-07 | 2019-01-07 | 记账方法、矿池服务器、终端设备、挖矿节点及矿池 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109741039A true CN109741039A (zh) | 2019-05-10 |
CN109741039B CN109741039B (zh) | 2021-01-19 |
Family
ID=66363544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910011750.1A Active CN109741039B (zh) | 2019-01-07 | 2019-01-07 | 记账方法、矿池服务器、终端设备、挖矿节点及矿池 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109741039B (zh) |
WO (1) | WO2020143431A1 (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347745A (zh) * | 2019-06-03 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 一种块链式账本的授时认证方法、装置及设备 |
CN110471922A (zh) * | 2019-08-09 | 2019-11-19 | 全链通有限公司 | 记账节点的内容扩展方法、设备及计算机可读存储介质 |
CN110853214A (zh) * | 2019-11-06 | 2020-02-28 | 杭州复杂美科技有限公司 | 区块生成方法、设备和存储介质 |
CN111193596A (zh) * | 2019-12-30 | 2020-05-22 | 达闼科技成都有限公司 | 区块生成系统、方法、挖矿服务器以及工作量证明装置 |
WO2020143431A1 (zh) * | 2019-01-07 | 2020-07-16 | 深圳市红砖坊技术有限公司 | 记账方法、矿池服务器、终端设备、挖矿节点及矿池 |
US10778452B2 (en) | 2019-06-03 | 2020-09-15 | Alibaba Group Holding Limited | Blockchain ledger authentication |
CN111737363A (zh) * | 2020-07-22 | 2020-10-02 | 百度在线网络技术(北京)有限公司 | 区块链运行方法、装置、设备及存储介质 |
CN111814156A (zh) * | 2020-09-04 | 2020-10-23 | 支付宝(杭州)信息技术有限公司 | 一种基于可信设备的数据获取方法、装置及设备 |
CN112804322A (zh) * | 2021-01-11 | 2021-05-14 | 杭州复杂美科技有限公司 | 区块生成方法、计算机设备和存储介质 |
CN113608777A (zh) * | 2021-07-30 | 2021-11-05 | 广东全塑联科技有限公司 | 一种基于区块链的项目代码版本控制方法及系统 |
US11341284B2 (en) | 2020-09-04 | 2022-05-24 | Alipay (Hangzhou) Information Technology Co., Ltd. | Trusted hardware-based data management methods, apparatuses, and devices |
US11354447B2 (en) | 2020-08-28 | 2022-06-07 | Alipay (Hangzhou) Information Technology Co., Ltd. | Data authorization information acquisition methods, apparatuses, and devices |
US11362815B2 (en) | 2020-08-28 | 2022-06-14 | Alipay (Hangzhou) Information Technology Co., Ltd. | Trusted data transmission methods, apparatuses, and devices |
US11386191B2 (en) | 2020-09-15 | 2022-07-12 | Alipay (Hangzhou) Information Technology Co., Ltd. | Trusted hardware-based identity management methods, apparatuses, and devices |
US11455417B2 (en) | 2020-09-04 | 2022-09-27 | Alipay (Hangzhou) Information Technology Co., Ltd. | Data processing methods, apparatuses, and devices |
CN115189972A (zh) * | 2022-09-13 | 2022-10-14 | 四块科技(深圳)有限公司 | 保障节点安全挖矿的方法、装置及存储介质 |
US11494511B2 (en) | 2020-09-15 | 2022-11-08 | Alipay (Hangzhou) Information Technology Co., Ltd. | Data processing methods, apparatuses, and devices |
WO2023284372A1 (zh) * | 2021-07-15 | 2023-01-19 | 华为技术有限公司 | 一种防止行车数据篡改的方法以及相关装置 |
US11604894B2 (en) | 2020-07-24 | 2023-03-14 | Alipay (Hangzhou) Information Technology Co., Ltd. | Data processing methods, apparatuses, devices, and media |
US11614929B2 (en) | 2020-08-28 | 2023-03-28 | Alipay (Hangzhou) Information Technology Co., Ltd. | Identity registration methods, apparatuses, and devices |
US11652879B2 (en) | 2020-08-28 | 2023-05-16 | Alipay (Hangzhou) Information Technology Co., Ltd. | Matching methods, apparatuses, and devices based on trusted asset data |
US11726968B2 (en) | 2020-09-15 | 2023-08-15 | Alipay (Hangzhou) Information Technology Co., Ltd. | Methods, apparatuses, and devices for transferring data assets based on blockchain |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11789617B2 (en) * | 2021-06-29 | 2023-10-17 | Acronis International Gmbh | Integration of hashgraph and erasure coding for data integrity |
CN115412464B (zh) * | 2022-11-01 | 2023-03-24 | 江苏荣泽信息科技股份有限公司 | 一种基于流量的区块链动态伸缩方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107171810A (zh) * | 2017-06-27 | 2017-09-15 | 中国联合网络通信集团有限公司 | 区块链的验证方法及装置 |
CN107864198A (zh) * | 2017-11-07 | 2018-03-30 | 济南浪潮高新科技投资发展有限公司 | 一种基于深度学习训练任务的区块链共识方法 |
CN108009918A (zh) * | 2017-11-23 | 2018-05-08 | 深圳捷汇科技有限公司 | 区块链共识算法交易系统的记账方法及电子设备 |
CN108650291A (zh) * | 2018-03-26 | 2018-10-12 | 南京思利华信息科技有限公司 | 一种基于算力的gpu任务共识方法及装置 |
CN109101836A (zh) * | 2018-08-09 | 2018-12-28 | 全链通有限公司 | 区块链网络的记账方法和系统 |
CN109146484A (zh) * | 2018-08-31 | 2019-01-04 | 深圳付贝科技有限公司 | 基于区块链的共识验证方法、挖矿机及区块链系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106850200B (zh) * | 2017-01-25 | 2019-10-22 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 一种使用基于区块链的数字货币的安全方法、系统及终端 |
US10762479B2 (en) * | 2017-04-05 | 2020-09-01 | Samsung Sds Co., Ltd. | Method and system for processing blockchain-based real-time transaction |
CN107733651B (zh) * | 2017-09-11 | 2020-06-19 | 联动优势科技有限公司 | 一种区块链生成方法、节点及系统 |
CN108848055B (zh) * | 2018-05-03 | 2020-06-23 | 中国银联股份有限公司 | 一种区块链共识方法、记账节点及节点 |
CN109741039B (zh) * | 2019-01-07 | 2021-01-19 | 深圳市红砖坊技术有限公司 | 记账方法、矿池服务器、终端设备、挖矿节点及矿池 |
-
2019
- 2019-01-07 CN CN201910011750.1A patent/CN109741039B/zh active Active
- 2019-12-20 WO PCT/CN2019/127183 patent/WO2020143431A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107171810A (zh) * | 2017-06-27 | 2017-09-15 | 中国联合网络通信集团有限公司 | 区块链的验证方法及装置 |
CN107864198A (zh) * | 2017-11-07 | 2018-03-30 | 济南浪潮高新科技投资发展有限公司 | 一种基于深度学习训练任务的区块链共识方法 |
CN108009918A (zh) * | 2017-11-23 | 2018-05-08 | 深圳捷汇科技有限公司 | 区块链共识算法交易系统的记账方法及电子设备 |
CN108650291A (zh) * | 2018-03-26 | 2018-10-12 | 南京思利华信息科技有限公司 | 一种基于算力的gpu任务共识方法及装置 |
CN109101836A (zh) * | 2018-08-09 | 2018-12-28 | 全链通有限公司 | 区块链网络的记账方法和系统 |
CN109146484A (zh) * | 2018-08-31 | 2019-01-04 | 深圳付贝科技有限公司 | 基于区块链的共识验证方法、挖矿机及区块链系统 |
Non-Patent Citations (1)
Title |
---|
袁勇,王飞跃: "区块链技术发展现状与展望", 《自动化学报》 * |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020143431A1 (zh) * | 2019-01-07 | 2020-07-16 | 深圳市红砖坊技术有限公司 | 记账方法、矿池服务器、终端设备、挖矿节点及矿池 |
WO2020244236A1 (zh) * | 2019-06-03 | 2020-12-10 | 创新先进技术有限公司 | 一种块链式账本的授时认证方法、装置及设备 |
US10911251B2 (en) | 2019-06-03 | 2021-02-02 | Advanced New Technologies Co., Ltd. | Blockchain ledger authentication |
CN110347745A (zh) * | 2019-06-03 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 一种块链式账本的授时认证方法、装置及设备 |
US11108573B2 (en) | 2019-06-03 | 2021-08-31 | Advanced New Technologies Co., Ltd. | Blockchain ledger authentication |
US10778452B2 (en) | 2019-06-03 | 2020-09-15 | Alibaba Group Holding Limited | Blockchain ledger authentication |
CN110471922A (zh) * | 2019-08-09 | 2019-11-19 | 全链通有限公司 | 记账节点的内容扩展方法、设备及计算机可读存储介质 |
CN110853214A (zh) * | 2019-11-06 | 2020-02-28 | 杭州复杂美科技有限公司 | 区块生成方法、设备和存储介质 |
CN111193596B (zh) * | 2019-12-30 | 2023-09-05 | 达闼机器人股份有限公司 | 区块生成系统、方法、服务器以及工作量证明装置 |
CN111193596A (zh) * | 2019-12-30 | 2020-05-22 | 达闼科技成都有限公司 | 区块生成系统、方法、挖矿服务器以及工作量证明装置 |
CN111737363A (zh) * | 2020-07-22 | 2020-10-02 | 百度在线网络技术(北京)有限公司 | 区块链运行方法、装置、设备及存储介质 |
US11604894B2 (en) | 2020-07-24 | 2023-03-14 | Alipay (Hangzhou) Information Technology Co., Ltd. | Data processing methods, apparatuses, devices, and media |
US11362815B2 (en) | 2020-08-28 | 2022-06-14 | Alipay (Hangzhou) Information Technology Co., Ltd. | Trusted data transmission methods, apparatuses, and devices |
US11652879B2 (en) | 2020-08-28 | 2023-05-16 | Alipay (Hangzhou) Information Technology Co., Ltd. | Matching methods, apparatuses, and devices based on trusted asset data |
US11614929B2 (en) | 2020-08-28 | 2023-03-28 | Alipay (Hangzhou) Information Technology Co., Ltd. | Identity registration methods, apparatuses, and devices |
US11354447B2 (en) | 2020-08-28 | 2022-06-07 | Alipay (Hangzhou) Information Technology Co., Ltd. | Data authorization information acquisition methods, apparatuses, and devices |
US11354448B2 (en) | 2020-09-04 | 2022-06-07 | Alipay (Hangzhou) Information Technology Co., Ltd. | Demand trusted device-based data acquisition methods, apparatuses, and devices |
US11455417B2 (en) | 2020-09-04 | 2022-09-27 | Alipay (Hangzhou) Information Technology Co., Ltd. | Data processing methods, apparatuses, and devices |
US11341284B2 (en) | 2020-09-04 | 2022-05-24 | Alipay (Hangzhou) Information Technology Co., Ltd. | Trusted hardware-based data management methods, apparatuses, and devices |
CN111814156A (zh) * | 2020-09-04 | 2020-10-23 | 支付宝(杭州)信息技术有限公司 | 一种基于可信设备的数据获取方法、装置及设备 |
US11386191B2 (en) | 2020-09-15 | 2022-07-12 | Alipay (Hangzhou) Information Technology Co., Ltd. | Trusted hardware-based identity management methods, apparatuses, and devices |
US11494511B2 (en) | 2020-09-15 | 2022-11-08 | Alipay (Hangzhou) Information Technology Co., Ltd. | Data processing methods, apparatuses, and devices |
US11726968B2 (en) | 2020-09-15 | 2023-08-15 | Alipay (Hangzhou) Information Technology Co., Ltd. | Methods, apparatuses, and devices for transferring data assets based on blockchain |
CN112804322B (zh) * | 2021-01-11 | 2022-06-28 | 杭州复杂美科技有限公司 | 区块生成方法、计算机设备和存储介质 |
CN112804322A (zh) * | 2021-01-11 | 2021-05-14 | 杭州复杂美科技有限公司 | 区块生成方法、计算机设备和存储介质 |
WO2023284372A1 (zh) * | 2021-07-15 | 2023-01-19 | 华为技术有限公司 | 一种防止行车数据篡改的方法以及相关装置 |
CN113608777A (zh) * | 2021-07-30 | 2021-11-05 | 广东全塑联科技有限公司 | 一种基于区块链的项目代码版本控制方法及系统 |
CN113608777B (zh) * | 2021-07-30 | 2023-09-29 | 广东全塑智联科技有限公司 | 一种基于区块链的项目代码版本控制方法及系统 |
CN115189972A (zh) * | 2022-09-13 | 2022-10-14 | 四块科技(深圳)有限公司 | 保障节点安全挖矿的方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020143431A1 (zh) | 2020-07-16 |
CN109741039B (zh) | 2021-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109741039A (zh) | 记账方法、矿池服务器、终端设备、挖矿节点及矿池 | |
Bentov et al. | Tesseract: Real-time cryptocurrency exchange using trusted hardware | |
US20230070963A1 (en) | Blockchain-implemented method for control and distribution of digital content | |
Maroufi et al. | On the convergence of blockchain and internet of things (iot) technologies | |
CN111213171B (zh) | 用于安全离线支付的方法和装置 | |
CN103716167B (zh) | 一种安全采集和分发传输密钥的方法及装置 | |
KR101544722B1 (ko) | 부인 방지 방법, 이를 위한 결제 관리 서버 및 사용자 단말기 | |
CN107171785A (zh) | 一种基于区块链技术的数字版权管理方法 | |
CN109155730A (zh) | 用于装置授权的技术 | |
CN110400136A (zh) | 基于区块链的账号管理方法、装置、服务器及存储介质 | |
CN110020541B (zh) | 一种基于区块链的隐私保护的声誉评价方法及系统 | |
CN106600252A (zh) | 一种基于区块链的支付方法及系统 | |
CN109891416A (zh) | 用于认证和授权装置的系统和方法 | |
CN109729041B (zh) | 一种加密内容的发布以及获取方法及装置 | |
CN101005357A (zh) | 一种更新认证密钥的方法和系统 | |
CN106096947B (zh) | 基于nfc的半离线匿名支付方法 | |
CN102510333A (zh) | 一种授权认证方法及系统 | |
CN110111102A (zh) | 一种基于区块链技术的虚拟交通卡系统及发行交易方法 | |
Asfia et al. | Energy trading of electric vehicles using blockchain and smart contracts | |
CN105847000A (zh) | 令牌产生方法以及基于该令牌产生方法的通信系统 | |
CN104125230A (zh) | 一种短信认证服务系统以及认证方法 | |
CN109347643A (zh) | 一种基于以太坊的用户中心系统安全的监管方法及装置 | |
Li et al. | Nereus: Anonymous and secure ride-hailing service based on private smart contracts | |
KR20210108420A (ko) | 위치 정보 제공 시스템 및 위치 정보 제공 방법 | |
CN114168913A (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 |