发明内容
本发明提供一种钱包系统及交易方法,以解决现有技术中缺乏适应于Web3的交易方式的问题,能够通过将集群技术和多重签名技术进行结合,构建了一个钱包系统,实现了适应于Web3的交易方式的设计。
为实现上述目的,本发明实施例提供了一种钱包系统,包括通信节点、调度节点和至少一个备份节点,每一节点各存储有一个私钥,所有所述私钥针对同一账户;
所述通信节点,用于根据接收到的支付交易信息生成交易请求,并将所述交易请求发送至所述调度节点;
所述调度节点,用于响应于所述交易请求,选取若干节点作为签名节点;
所述调度节点,还用于在调度所述签名节点中的私钥对支付交易进行一一签名后,生成签名成功信息反馈至所述通信节点;
所述通信节点,还用于在接收到所述签名成功信息后,执行支付交易操作。
作为上述方案的改进,所述支付交易信息至少包括目标交易金额,所述交易请求至少包括目标签名方式;
则所述通信节点,用于根据接收到的支付交易信息生成交易请求,具体包括:
所述通信节点,用于基于预设的交易金额与签名方式的映射关系,根据所述目标交易金额得到所述目标签名方式。
作为上述方案的改进,所述映射关系具体为:
交易金额根据其金额大小被划分为若干等级;
当第一交易金额大于第二交易金额时,所述第一交易金额的等级高于或等于所述第二交易金额的等级;
等级越高,签名方式中所需签名人数越多。
作为上述方案的改进,所述私钥通过以下方式生成:所述每一节点在断网状态下,针对同一账户各生成一个私钥。
作为上述方案的改进,所述通信节点,还用于当所述支付交易信息属于非同质化代币类型的交易信息时,在所述支付交易操作完成后,根据所述支付交易操作生成交易记录并更新自身节点的账本;
所述通信节点,还用于将所述交易记录发送至其他节点以使其他节点根据所述交易记录更新自身节点的账本。
作为上述方案的改进,所述调度节点,在所述通信节点将所述交易请求发送至调度节点之后,且所述调度节点调度所述签名节点中的私钥对所述支付交易进行一一签名之前,还用于:当所述交易支付信息属于非同质化代币的交易信息时,将自身节点中的待备份账本发送至所有备份节点,以使所述备份节点将自身节点的账本与所述待备份账本进行对账并更新自身节点的账本;其中,所述待备份账本表示所述调度节点的账本中未被同步到所有其他节点的信息。
作为上述方案的改进,所述通信节点,还用于当所述支付交易信息属于加密货币类型的交易信息时,在所述支付交易操作完成后,根据所述支付交易操作生成交易记录以用于公账的更新。
作为上述方案的改进,所述系统还包括替换节点;
所述替换节点,用于响应于用户输入的节点更换指令,从云端获取与指定的待更替节点的私钥加密文件,并生成节点更换请求以发送至所述调度节点;
所述调度节点,还用于响应于所述节点更换请求,调度除所述待更替节点外的若干节点的私钥对所述私钥加密文件进行签名,以使所述替换节点打开所述私钥加密文件得到所述待更替节点的私钥;其中,所述待更替节点的私钥加密文件由若干其他节点的私钥对所述待更替节点的私钥加密得到;
所述替换节点,还用于在将所述待更替节点的私钥设置为自身节点的私钥后,生成节点变更信息发送至所述调度节点,以使调度节点能准确进行节点调度。
作为上述方案的改进,所述系统还包括继承节点,所述继承节点的数量等于废弃节点的数量;其中,所述废弃节点包括通信节点、调度节点和备份节点;
目标继承节点,用于响应于用户登录指令,根据一所述废弃节点的用户名和密码建立与存储于云端的继承文件的对应关系;其中,所述目标继承节点为任意一个所述继承节点;
所述目标继承节点,还用于响应于用户继承指令,控制云端向预设的用户社交账户发送继承文件,以使用户根据所述继承文件为每一继承节点各分配一个与所述废弃节点对应的用户名、密码和私钥;其中,所述继承文件记录有各个所述废弃节点的用户名、密码和私钥。
为实现上述目的,本发明实施例还提供了一种基于上述任一实施例所述的钱包系统的交易方法,包括:
通信节点根据接收到的支付交易信息生成交易请求,并将所述交易请求发送至调度节点;
所述调度节点响应于所述交易请求,选取若干节点作为签名节点;
所述调度节点在调度所述签名节点中的私钥对支付交易进行一一签名后,生成签名成功信息反馈至所述通信节点;
所述通信节点在接收到所述签名成功信息后,执行支付交易操作。
与现有技术相比,本发明实施例公开的钱包系统及交易方法,该钱包系统包括通信节点、调度节点和至少一个备份节点,每一节点各存储有一个私钥,所有所述私钥针对同一账户;首先,所述通信节点根据接收到的支付交易信息生成交易请求,并将所述交易请求发送至所述调度节点;接着,所述调度节点响应于所述交易请求,选取若干节点作为签名节点;然后所述调度节点在调度所述签名节点中的私钥对支付交易进行一一签名后,生成签名成功信息反馈至所述通信节点;最后,所述通信节点在接收到所述签名成功信息后,执行支付交易操作。本发明实施例能够通过将集群技术和多签技术进行结合以构建一个完全由用户自己掌握的钱包系统,实现了适应于Web3的交易方式的设计。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例提供的一种钱包系统的结构示意图,所述钱包系统,包括通信节点、调度节点和至少一个备份节点,每一节点各存储有一个私钥,所有所述私钥针对同一账户;
所述通信节点,用于根据接收到的支付交易信息生成交易请求,并将所述交易请求发送至所述调度节点;
所述调度节点,用于响应于所述交易请求,选取若干节点作为签名节点;
所述调度节点,还用于在调度所述签名节点中的私钥对支付交易进行一一签名后,生成签名成功信息反馈至所述通信节点;
所述通信节点,还用于在接收到所述签名成功信息后,执行支付交易操作。
值得说明的是,各个节点(通信节点、调度节点、备份节点)可以是手机、电脑或者服务器等电子设备,在此不作限定。通过great free分布式语言设计了一个适用于钱包的小型集群系统,该系统完全掌握在用户手中,无需外部设备或者外部人员进行控制,该系统为一个主从系统,建立在对等网络之上,节点之间的角色可以根据实际需求互相转换;所有节点都具备私钥签名的功能;通信节点负责对外联系,充当系统外部与系统内部的信息交互的桥梁;调度节点充当系统内部调度的角色,与其他节点进行信息交互,通过集群调度使得系统具备多重签名的功能。可以理解的,为进一步提高支付交易的安全性,可以在节点所在的电子设备进行人脸识别、密码识别或者指纹识别等验证功能的设置,在验证成功后才可进行签名、执行支付交易操作等,例如在调度节点在选取签名节点之后触发验证操作或者通信节点在接收到签名成功信息后触发验证操作,验证方式和验证时机可由用户根据实际需求进行设定,在此不作限定。
具体地,该钱包系统由通信节点、调度节点和备份节点组成,备份节点的个数由系统的具体应用决定,每一个节点都存储有一个私钥,这些私钥都针对于同一账户,即对于每一个账户,都需要一个集群系统来对该账户进行管理;当需要向其他账户转账时,即负责与外界进行通信的通信节点在接收到支付交易信息后,对该支付交易信息进行处理以生成交易请求并将该交易请求发送到系统内部的调度节点;调度节点通过响应接收到的交易请求,从系统内部的所有节点中选出若干节点作为签名节点,其中,签名节点的数量由预先设定的签名数量规则决定,签名节点可以是调度节点、通信节点或者备份节点,签名节点的选取由预先设定的选取规则决定,可以是随机选取,也可以是通过预先设定优先级来进行节点选取等,在此不作限定;调度节点对签名节点进行调度,使得签名节点使用自身私钥对本次支付交易进行签名,然后生成签名成功信息反馈给通信节点,以使通信节点得到进行交易的信号,从而执行支付交易操作。
与现有技术相比,本发明实施例公开的钱包系统,该钱包系统包括通信节点、调度节点和至少一个备份节点,每一节点各存储有一个私钥,所有所述私钥针对同一账户;首先,所述通信节点根据接收到的支付交易信息生成交易请求,并将所述交易请求发送至所述调度节点;接着,所述调度节点响应于所述交易请求,选取若干节点作为签名节点;然后所述调度节点在调度所述签名节点中的私钥对支付交易进行一一签名后,生成签名成功信息反馈至所述通信节点;最后,所述通信节点在接收到所述签名成功信息后,执行支付交易操作。本发明实施例能够通过将集群技术和多签技术进行结合以构建一个完全由用户自己掌握的钱包系统,实现了适应于Web3的交易方式的设计。
在一种实施方式中,所述支付交易信息至少包括目标交易金额,所述交易请求至少包括目标签名方式;
则所述通信节点,用于根据接收到的支付交易信息生成交易请求,具体包括:
所述通信节点,用于基于预设的交易金额与签名方式的映射关系,根据所述目标交易金额得到所述目标签名方式。
具体地,通信节点接收到的支付交易信息必然包括有目标交易金额,在本实施方式中,目标签名方式由目标交易金额决定。通信节点查询预先设定的交易金额与签名方式的映射关系,找到与目标交易金额对应的签名方式作为目标签名方式;其中,签名方式可以是确定签名节点具体是哪些节点,也可以是关于签名节点的数量的设定,在此不作限定。
在一种实施方式中,所述映射关系具体为:
交易金额根据其金额大小被划分为若干等级;
当第一交易金额大于第二交易金额时,所述第一交易金额的等级高于或等于所述第二交易金额的等级;
等级越高,签名方式中所需签名人数越多。
具体地,交易金额与签名方式的映射关系实际为:交易金额与签名人数(签名节点的数量)的映射关系,该映射关系在系统构建时便由用户进行设定,在系统后续应用中用户可根据实际需求进行修改。交易金额根据金额大小被划分为预设数量的等级,交易金额越大,等级越高(包括交易金额不同,等级相同的情况,以分段函数的形式出现),等级越高,对应的签名方式中的需要的签名人数越多。通过根据交易金额选择不同数量的签名人数,既考虑了支付交易的便捷性,也兼顾了支付交易的安全性。
示例性的,假设系统中存在是三个节点(通信节点、调度节点和备份节点),每个节点各存在一个私钥,执行多签,预先设计3-1多签(只需一个私钥签名),3-2多签(需要两个私钥签名)和3-3多签(需要全部私钥签名),设计的映射关系具体为:小于或等于3000元的交易金额对应的签名方式为3-1多签,大于3000元小于等于10000元的交易金额对应的签名方式为3-2多签,大于10000元的交易金额对应的签名方式为3-3多签。
值得说明的是,映射关系不局限于上述具体的例子,可根据实际情况进行设定。可以理解的,签名人数的数量最小为0,最大等于私钥个数;私钥个数等级的具体数量由用户进行设定,等级的数量最小为1,最大与系统中私钥个数相关,为私钥的个数加1。
在一种实施方式中,所述支付交易信息还包括交易方信息;
则所述执行支付交易操作,具体包括:根据所述交易方信息将所述目标交易金额发送至所述交易方。具体地,通信节点执行支付交易操作时需要明确目标交易金额和交易方信息(交易方的账户),才能将目标交易金额转给交易方。
在一种实施方式中,所述私钥通过以下方式生成:所述每一节点在断网状态下,针对同一账户各生成一个私钥。
具体地,由于该钱包系统是对等网络,因此各个私钥的生成可各自在断网状态下进行,此处的断网指的是节点与其他节点断开的状态,每一节点的私钥由节点自身生成,每一节点仅掌握自身节点的私钥,不掌握其他节点的私钥,避免在某一节点被攻击时其他节点的私钥泄露的可能性,提高了系统的安全性能。
在一种实施方式中,所述通信节点,还用于当所述支付交易信息属于非同质化代币类型的交易信息时,在所述支付交易操作完成后,根据所述支付交易操作生成交易记录并更新自身节点的账本;
所述通信节点,还用于将所述交易记录发送至其他节点以使其他节点根据所述交易记录更新自身节点的账本。
具体地,在通信节点执行完支付交易操作后,需要对账户所属的账本进行更新;对于不同类型的账户,账本存储方式不同。通信节点收到的支付交易信息是关于非同质化代币(Non-Fungible Token,NFT)的支付交易信息,说明该账户属于非同质化代币的账户,该系统的每个节点各设置有一本子账,在支付交易操作完成后,通信节点根据支付交易操作来生成交易记录以更新自身节点的账本,并将交易记录发送给其他节点(调度节点、备份节点),以使其他节点根据该交易记录来更新自身节点的账本,实现了数据同步和备份。可以理解的,在每次支付交易过程中,作为与外界信息交互的桥梁的通信节点、作为签名调度的调度节点都必然在线,因此,通信节点和调度节点的账本是一致的,记录了所有的交易,而备份节点仅作为私钥的提供者,无需实时在线,因此,可能存在备份节点的账本没有实时更新的情况。
进一步地,各个节点根据自身账本生成资产信息,在节点接收到用户输入的资产查询指令时,将资产信息在显示屏上显示,以供用户查阅。
进一步地,所述调度节点,还用于与外部预设的交易系统“无链平台”进行信息交互;其中,所述无链平台与其他钱包系统都建立信息交互的关系;在实际应用中,无链平台用于跟踪转款,当无链平台检测到支付到账后,生成交易成功信息反馈给参与交易的双方,以使参与交易的双方获知本次交易完成。
在一种实施方式中,所述调度节点,在所述通信节点将所述交易请求发送至调度节点之后,且所述调度节点调度所述签名节点中的私钥对所述支付交易进行一一签名之前,还用于:当所述交易支付信息属于非同质化代币的交易信息时,将自身节点中的待备份账本发送至所有备份节点,以使所述备份节点将自身节点的账本与所述待备份账本进行对账并更新自身节点的账本;其中,所述待备份账本表示所述调度节点的账本中未被同步到所有其他节点的信息。
具体地,待备份账本指的是还未被完全备份(即还存在备份节点未同步)账本信息,待备份账本被临时存储在调度节点的待备份账本缓存区。为了提高数据备份的准确性,调度节点在将待备份账本发送给备份节点之前,需要将待备份账本和调度节点的自身账本进行对账,正确再传输。由于备份节点并不能确保实时在线,因此,在每次转账前,调度节点都需要把待备份账本发送给在线的备份节点进行对账,以使备份节点的账本与调度节点同步,在同步过程中,可根据账本中各个数据的时间戳来进行对账。调度节点在接收到交易请求之后,获知即将进行交易,为确保转账前能够实现账本同步,调度节点在调度签名之前就将自身节点中暂存的待备份账本发送给在线的备份节点以使备份节点进行数据同步。
在一种实施方式中,所述通信节点,还用于当所述支付交易信息属于加密货币类型的交易信息时,在所述支付交易操作完成后,根据所述支付交易操作生成交易记录以用于公账的更新。
具体地,若该系统服务的是加密货币类型的交易,那么在系统本地是不存在账本的,而是采用公账的方式进行交易的记录。通信节点在支付交易操作完成后,根据该支付交易操作生成对应的交易记录,并将该交易记录发送给该加密货币的全节点,全节点负责公账的管理和更新。可以理解的是,交易记录生成之后发送给公账就结束了,公账可根据该交易记录进行更新;对于钱包系统来说,是发送到该加密货币的一个全节点的临时数据池内。
进一步地,钱包系统作为一个无链系统,钱包系统中的每一个节点存储的账本是子账,钱包系统支持无链系统的子账、NFT元数据和索引的存储,还包括有加密货币的私钥。
在一种实施方式中,所述系统还包括替换节点;
所述替换节点,用于响应于用户输入的节点更换指令,从云端获取与指定的待更替节点的私钥加密文件,并生成节点更换请求以发送至所述调度节点;
所述调度节点,还用于响应于所述节点更换请求,调度除所述待更替节点外的若干节点的私钥对所述私钥加密文件进行签名,以使所述替换节点打开所述私钥加密文件得到所述待更替节点的私钥;其中,所述待更替节点的私钥加密文件由若干其他节点的私钥对所述待更替节点的私钥加密得到;
所述替换节点,还用于在将所述待更替节点的私钥设置为自身节点的私钥后,生成节点变更信息发送至所述调度节点,以使调度节点能准确进行节点调度。
具体地,结合图1所示,本系统还为每个节点各配置一个云端存储器(备份云端存储器、调度云端存储器、通信云端存储器),云端存储器可以是家庭云、星际文件系统(InterPlanetary File System,IPFS)等云存储系统,在此不作限定;节点生成私钥之后,将自身节点的私钥进行加密以得到私钥加密文件(智能合约)并将私钥加密文件发送到自身节点对应的云端存储器进行私钥云备份,作为举例地,私钥加密文件可通过其他节点的私钥进行解密,例如3-2多签。当设备丢失时,替换节点(新的设备)响应于用户输入的节点更换指令,通过预设的密码来访问与丢失的设备对应的云端存储器,从云端下载私钥加密文件并生成节点更换请求以发送给调度节点,调度节点响应于节点更换请求,调度除丢失设备外的其他设备的私钥来对新的设备中的私钥加密文件进行解密以使新的设备得到丢失的设备的私钥,接着,新的设备将得到的私钥设置为自身的私钥,并生成节点变更信息发送给调度节点,以便于调度节点在后续交易过程中能够准确调度到新的设备。
在一种实施方式中,当用户想要用新的设备替换掉旧的设备时,旧的设备响应于用户输入的私钥转移指令,将自身私钥提供给新的设备。具体地,旧的设备响应于用户输入的私钥转移指令,根据自身私钥生成私钥二维码,新的设备通过扫描私钥二维码得到对应的私钥。
在一种实施方式中,所述系统还包括继承节点,所述继承节点的数量等于废弃节点的数量;其中,所述废弃节点包括通信节点、调度节点和备份节点;
目标继承节点,用于响应于用户登录指令,根据一所述废弃节点的用户名和密码建立与存储于云端的继承文件的对应关系;其中,所述目标继承节点为任意一个所述继承节点;
所述目标继承节点,还用于响应于用户继承指令,控制云端向预设的用户社交账户发送继承文件,以使用户根据所述继承文件为每一继承节点各分配一个与所述废弃节点对应的用户名、密码和私钥;其中,所述继承文件记录有各个所述废弃节点的用户名、密码和私钥。
具体地,私钥的继承用于原先的所有节点丢失的情况,继承文件记载了该钱包系统中所有节点的用户名、与用户名对应的密码、私钥。在原先的设备(废弃节点)都丢失的情况下,新的设备(目标继承节点)响应于用户登录指令,根据其中一个废弃节点的用户名和密码进行登录并建立起与该废弃节点对应的云端存储器的联系,即建立了新的设备与存储于云端存储器的对应关系,新的设备响应于用户继承指令,在预设时间段后控制对应的云端存储器向预设的用户社交账户(如邮箱、手机短信等)发送继承文件,其中,预设时间段可由用户根据实际需求进行设置,在预设时间段后,将预先设置继承提醒消息进行显示(显示方式可以是语音播报、也可以是文字显示),用户可根据接收到的继承文件为预设数量的新的设备(继承节点)进行用户名、密码和私钥的分配,以替换掉原先的设备,新的设备与原先的设备数量一致。进一步地,新的设备在接收到用户继承指令时,获取预先存储在云端的继承验证问题以供用户进行答复,当用户对于继承验证问题的答复内容与预设的标准答案满足预设的准确率时,新的设备才会进行下一步操作。
进一步地,在私钥继承完成后,通信继承节点在接收到的支付交易信息时,生成交易请求,并将所述交易请求发送至调度继承节点;其中,所述继承节点包括一个通信继承节点、一个调度继承节点和至少一个备份继承节点;
调度继承节点响应于所述交易请求调度所有继承节点的私钥对支付交易进行签名后,生成签名成功信息发送给通信继承节点;
通信继承节点在接收到所述签名成功信息后,执行支付交易操作。
可以理解的,设备的丢失带来了一定的不安全性,因此,在私钥继承后,在此交易需要采用所有的私钥同时签名,以降低风险。进一步地,若用户想进一步降低风险,可构建一个新的钱包系统,将原有的钱包系统中的资产全部转移到新的钱包系统进行资产管理,并将原有的钱包系统丢弃,以达到提高资产安全的目的。
进一步地,该钱包系统具备程序安全性自检功能,以保证程序完整、同步完成、账务正确,一般在节点所在电子设备开机时进行自检。
进一步地,由于通信节点所在的电子设备还涉及到第三方应用,例如微信、支付宝等中心化应用,本钱包系统既可以作为一个独立的应用直接进行支付交易,也可以挂在第三方应用中以进行第三方应用支付,因此需要获取第三方应用的API接口的接口标准以对钱包系统进行API接口的配置,使得钱包系统能够顺利挂在第三方系统进行交易支付。
本发明实施例能够通过将集群技术和多签技术进行结合以构建一个完全由用户自己掌握的钱包系统,实现了适应于Web3的交易方式的设计。
参见图2所示的交易方法的流程示意图,本发明实施例还提供了一种交易方法,应用于上述任一实施例所述的钱包系统,包括以下步骤:
S1、通信节点根据接收到的支付交易信息生成交易请求,并将所述交易请求发送至调度节点;
S2、所述调度节点响应于所述交易请求,选取若干节点作为签名节点;
S3、所述调度节点在调度所述签名节点中的私钥对支付交易进行一一签名后,生成签名成功信息反馈至所述通信节点;
S4、所述通信节点在接收到所述签名成功信息后,执行支付交易操作。
值得说明的是,具体的所述交易方法的工作过程可参考上述实施例中所述钱包系统的工作过程,在此不再赘述。
与现有技术相比,本发明实施例公开的交易方法,首先,所述通信节点根据接收到的支付交易信息生成交易请求,并将所述交易请求发送至所述调度节点;接着,所述调度节点响应于所述交易请求,选取若干节点作为签名节点;然后所述调度节点在调度所述签名节点中的私钥对支付交易进行一一签名后,生成签名成功信息反馈至所述通信节点;最后,所述通信节点在接收到所述签名成功信息后,执行支付交易操作。本发明实施例能够通过将集群技术和多签技术进行结合以构建一个完全由用户自己掌握的钱包系统,实现了适应于Web3的交易方式的设计。