发明内容
本发明的目的在于提出一种基于区块链合约技术的私钥保管方法及装置,以解决现有技术中私钥存储安全性不高、私钥持有者担心泄露私钥的问题。
第一方面,本申请提供了一种基于区块链合约技术的私钥保管方法,应用于发起端,方法包括:
将交易请求同时发送给N个审批端;其中,N为不小于5的奇数;
获取审批端根据所述交易请求的审批结果;
根据审批结果执行相应操作。
可选的,所述审批结果包括审批状态,所述审批状态为正常写入或异常写入。
可选的,所述审批结果还包括审批通过或审批未通过;当所述审批状态为正常写入时,所述根据审批结果执行相应操作的步骤包括:
统计审批结果为审批通过的审批端数量K;
比较所述审批端数量K与预设第一数量S的数值大小;其中,S为小于N/2的整数;
若K≥S,则执行转账操作,若K<S则执行停止转账操作。
可选的,所述审批结果还包括审批通过或审批未通过;当所述审批状态为异常写入时,所述根据审批结果执行相应操作的步骤包括:
统计审批结果为审批通过的审批端数量K;
比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;
若K≥Q,则执行转账操作,若K<Q则执行停止转账操作。
可选的,所述审批结果还包括强制审批未通过;当所述审批状态为正常写入时,所述根据审批结果执行相应操作的步骤包括:
查询所有审批结果中是否存在强制审批未通过的审批结果;
若存在,则统计审批结果为审批通过的审批端数量K;
比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;
若K≥Q,则执行转账操作,若K<Q则执行停止转账操作。
可选的,在所述根据审批结果执行相应操作的步骤之前,所述方法还包括:
将交易请求发送给监控端;
获取监控端根据所述交易请求生成的监控指令;
其中,所述根据审批结果执行相应操作的步骤包括:
统计审批结果为审批通过的审批端数量K;
比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;
若K≥Q,则执行转账操作,若K<Q则执行停止转账操作。
可选的,当执行停止转账操作时,所述方法还包括:
设置安全地址;
将Token发送到安全地址。
可选的,当执行停止转账操作时,所述方法还包括:
设置安全地址;
获取其他审批端的审批结果;
统计审批结果为审批通过的审批端数量K;
比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;
若K≥Q,则将资产转移至所述安全地址。
第二方面,本申请提供了一种基于区块链合约技术的私钥保管方法,应用于审批端,方法包括:
获取来自发起端的交易请求;
根据交易请求生成审批结果;所述审批结果包括审批通过或审批未通过;
将所述审批结果发送至发起端。
可选的,所述方法还包括:
提取所述交易请求中包含的第一交易地址;所述第一交易地址包括发起端生成的Token标识;
查询与所述交易请求对应的第二交易地址;所述第二交易地址包括审批端生成的Token标识;
比较第一交易地址和第二交易地址是否一致;若二者完全一致,则将审批状态确定为正常写入并加入所述审批结果;若二者不一致,则将审批状态确定为异常写入并加入所述审批结果。
第三方面,本申请提供了一种基于区块链合约技术的私钥保管装置,对应于第一方面的方法,装置包括:
第一发送单元,用于将交易请求同时发送给N个审批端;其中,N为不小于5的奇数;
第一获取单元,用于获取审批端根据所述交易请求的审批结果;
执行单元,用于根据审批结果执行相应操作。
可选的,所述审批结果包括审批状态,所述审批状态为正常写入或异常写入。
可选的,所述审批结果还包括审批通过或审批未通过;所述执行单元包括:
统计子单元,用于统计审批结果为审批通过的审批端数量K;
比较子单元,用于比较所述审批端数量K与预设第一数量S的数值大小;其中,S为小于N/2的整数;若K≥S,则执行转账操作,若K<S则执行停止转账操作。
可选的,所述比较子单元,还用于比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;若K≥Q,则执行转账操作,若K<Q则执行停止转账操作。
可选的,所述执行单元还包括:
查询子单元,用于查询所有审批结果中是否存在强制审批未通过的审批结果;若存在,则由统计子单元统计审批结果为审批通过的审批端数量K,由比较子单元比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;若K≥Q,则执行转账操作,若K<Q则执行停止转账操作。
可选的,所述第一发送单元还用于将交易请求发送给监控端;
所述第一获取单元还用于获取监控端根据所述交易请求生成的监控指令。
可选的,所述装置还包括:
地址设置单元,用于设置安全地址;
所述第一发送单元还用于将Token发送到安全地址。
可选的,所述装置还包括:
地址设置单元,用于设置安全地址;
所述第一获取单元还用于获取其他审批端的审批结果。
第四方面,本申请提供了一种基于区块链合约技术的私钥保管装置,对应于第二方面的方法,装置包括:
第二获取单元,用于获取来自发起端的交易请求;
结果生成单元,用于根据交易请求生成审批结果;所述审批结果包括审批通过或审批未通过;
第二发送单元,用于将所述审批结果发送至发起端。
可选的,所述结果生成单元包括:
提取子单元,用于提取所述交易请求中包含的第一交易地址;所述第一交易地址包括发起端生成的Token标识;
查询子单元,用于查询与所述交易请求对应的第二交易地址;所述第二交易地址包括审批端生成的Token标识;
状态写入子单元,用于比较第一交易地址和第二交易地址是否一致;若二者完全一致,则将审批状态确定为正常写入并加入所述审批结果;若二者不一致,则将审批状态确定为异常写入并加入所述审批结果。
本申请的方案使得数字资产的私钥不存在明文化风险,私钥不会在任何环节出现,审批人也无需担心自己会泄漏数字资产私钥。
本申请还可以将大量的数字资产存储在合约中,合约本身没有存储资产的私钥,只由预先写好的代码来控制,所以完全不用担心资产的私钥被盗导致数字资产丢失。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明所涉及的技术方案是通过智能合约完成,智能合约是在一段可以在虚拟机上运行的代码,之所以被称作“合约”,是因为用户可以通过这段运行的代码来控制有价值的事物,例如数字资产或其它数字资产实体等。
在本申请中主要采用的协议为ERC(EthereumRequestforComment)协议,采用第一协议建立的合约A主要提供的功能不限于包括:
存储数字资产;
以Token(令牌)持有做鉴权,持有指定Token的人即为审批人;
写入转账的目标地址和转账金额;
执行投票、转账、锁定等操作。
采用第二协议建立的合约B主要提供向审批人颁发Token令牌以及提供Token转账功能;采用第三协议建立的合约C主要提供向发起人颁发Token令牌以及提供Token转账功能。
本申请各个实施例主要是通过发起端和审批端之间的交互来对转账交易任务实施控制,进而达到对私钥存储以及管理等操作。其中,位于发起端的人也可称为发起人,由发起端执行发起转账等交易任务,发起人的数量可以是1个及以上,即任何人都可以发起一项交易任务;位于审批端的人也称审批人,审批端执行审批任务,多个审批端同时执行一项交易任务的审批时,审批端的数量越多,参与执行审批的审批端构成情况越多,相应的审批过程也更加复杂,但安全性以及适用性能较高;在本实施例中,将以9个审批人为例进行说明,其数量可以是5个及5个以上的任意奇数,在此不作限制。
参见图1,为本申请一种基于区块链合约技术的私钥保管方法流程图;
参见图2,为本申请提供的发起端与审批端之间交互的流程图;
由图1和图2可知,本申请提供了一种基于区块链合约技术的私钥保管方法,该方法应用于发起端时,所述方法包括:
S10:将交易请求同时发送给N个审批端;其中,N为不小于5的奇数,例如5、7、9、11、13…;所述交易请求,是发起端通过调用合约A进而生成的,在交易请求发送之前,通常需要先以合约B生成的Token作为审批人的标识,再以合约C生成的Token作为发起人的标识,每个审批人或发起人都预先自己通过以太坊钱包客户端工具生成安全的数字资产地址,审批人和发起人需要将生成好的数字资产地址对应的私钥自行保管。在生成交易请求时,实际是将审批人或发起人生成的数字资产地址写入到合约A的构造函数中,该构造函数亦会完成合约B和合约C的创建工作并且与合约B及合约C建立起对应关系,此时合约B和合约C分别提供了每个审批人和发起人独一无二的Token令牌,整个过程实现了审批人和发起人各自的数字资产地址拥有对应的Token所有权。这样,交易请求中仅需要对Token令牌执行操作即可,无需携带真正的私钥,避免了私钥泄露情况的发生。这样、无论审批人还是发起人只需要保管好各自的Token,一旦怀疑自己的数字资产地址或私钥内容存在安全风险时,可随时将拥有的Token转移到新设置的安全地址即可。
在本实施例中,同时发送交易请求至多个审批端可以保证较高的处理效率,以便于尽早地获取到全部审批端的反馈。
S20:获取审批端根据所述交易请求的审批结果;
在本实施例中,审批结果由审批端的审批人生成,用于反映审批是否通过,即是否同意转账操作,当然,由于审批端设有多个,并不能够由某一个审批端来确定是否可以直接转账,因此,本申请基于“投票”的原理,根据设定的票数规则对审批结果进行分析,最终完成判断过程。
所设定的票数规则,是要根据严格程度分为两种模式。所述审批结果包括审批状态,所述审批状态为正常写入或异常写入,正常写入是指发起人给的转账地址与审批人给的转账地址相符合,因此可以设置较为宽松的票数规则对是否转账进行判定。例如,以审批人数量为9个为例,如果此时的审批状态为正常写入,后续判断过程中,如图3可知,步骤S30:根据审批结果执行相应操作可以细化为:
S31:统计审批结果为审批通过的审批端数量K;例如此时9个审批端中4个为审批通过,5个为审批未通过;
S32:比较所述审批端数量K与预设第一数量S的数值大小;其中,S为小于N/2的整数;假设此时S取值为3,即9个审批端中至少存在3个审批通过的审批结果;
若K≥S,则执行转账操作,若K<S则执行停止转账操作。此时,由于存在4个审批通过的审批结果,该数量大于3,因此可以执行转账操作。
上述步骤S31和S32介绍的是正常写入的情况,还有另一种异常写入的情况,即发起人给的转账地址与审批人给的转账地址不符,则此时需要以一种较为严格的票数规则对是否转账进行判定,产生此种情况的原因可能是发起人采用了一个不太常用的地址,而该地址并未事先被审批端存储,这时就需要更多的审批人参与审批结果的确定。同样以9个审批人为例,如图4,上述审批过程将细化为:
S33:统计审批结果为审批通过的审批端数量K;例如此时9个审批端中仍有4个为审批通过,5个为审批未通过;
S34:比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;假设此时Q取值为5,即9个审批端中至少存在5个审批通过的审批结果;
若K≥Q,则执行转账操作,若K<Q则执行停止转账操作。此时,由于存在4个审批通过的审批结果,该数量小于5,因此不能执行转账操作。
进一步的,在多个审批端中,如果其中某一个审批端对于当前交易请求发现了问题,例如发现合约A转出地址被修改,或者其他可能影响交易安全性的行为,其可以通过反馈审批结果对当前交易过程执行停止或锁定操作,具体的,在图5示出的一种可行性实施例中,步骤S30还可以细化为:
S35:查询所有审批结果中是否存在强制审批未通过的审批结果;其中,强制审批未通过的审批结果是审批端的审批人根据实际需求写入到审批结果之中的;
若步骤S35中查询到存在强制审批未通过的审批结果,这时就需要相应地更改审批规则,将原来适用于正常写入的规则转变为异常写入的规则,具体的,就是执行上述S33与S34的步骤,在此不再赘述。
进一步的,在本实施例中可以设置一个脚本,用于监控和调用合约A的接口,该脚本可采用任何高级编程语言编写,如PHP、Python等等,部署在一台安全服务器上,具体的,通过运行该脚本,可以在上述方法中增加监控步骤,如图6所示,所述监控方法包括:
S40:将交易请求发送给监控端;具体可以通过合约A提供一个用于锁定或停止的锁定接口,并且设置一个监控端位置的监控地址,地址所在的监控端没有投票权,但具有对合约A的锁定权,当合约A的转账地址被写入时,通过在接口运行脚本,可以直接锁定合约A;需要说明的是,该监控手段并非必要步骤,若不需要实施监控,可以在转账请求发出前,提前停止脚本的运行即可。
S50:获取监控端根据所述交易请求生成的监控指令;
相应的,步骤S30仍将细化为:
S33:统计审批结果为审批通过的审批端数量K;
S34:比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;若K≥Q,则执行转账操作,若K<Q则执行停止转账操作。
进一步的,当前面所有实施例中得出了执行停止转账操作时,为了保证私钥的安全性,此时可以采取两种方案对异常转账过程进行处理。
例如,当停止转账后,可以设置安全地址,该安全地址应为区分于原账户的一个新的地址,由于审批人保存的仅为Token,而并非私钥,此时,仅需要将Token发送到安全地址即可,无需承担泄露私钥的风险;
再如,当停止转账后,可以先设置安全地址;该安全地址则是用于存储数字资产或数字资产实体的地址,由于涉及资金或实体的转移,需要采用如上述方法中较为严格的规则(投票机制)来完成确认过程。具体步骤如下:
获取其他审批端的审批结果;
统计审批结果为审批通过的审批端数量K;
比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;
若K≥Q,则将资产转移至所述安全地址。
由上述公开的技术方案可知,本申请除用于增强安全性的脚本外,无需部署任何服务器,从而完全去中心化运行,通过预设投票规则,根据规则的判定结果决定是否进行转账操作,审批人由保持私钥变为保持Token,大大降低了风险以及审批人的压力;并且,一旦发生意外情况,可以立即通知其他审批人进行资金转移,且任何一个审批人均可立即停止交易过程,具有较高的安全性;在此基础上,如果攻击者想要盗取私钥对应的资金或数字资产实体,其必须要一次性拿到较多人(例如上述实施例中的5人)的私钥,或者拿到一部分人(例如上述实施例中的3人)的私钥以及脚本所运行的服务器权限,这显然具有极高的难度系数。
参见图7,为本申请一种基于区块链合约技术的私钥保管方法流程图;
由图2和图7可知,本申请提供了一种基于区块链合约技术的私钥保管方法,该方法应用于审批端时,所述方法包括:
S60:获取来自发起端的交易请求;
S70:根据交易请求生成审批结果;所述审批结果包括审批通过或审批未通过;
S80:将所述审批结果发送至发起端。
进一步的,生成审批结果时,由图8可知,步骤S70具体包括下列步骤:
S71:提取所述交易请求中包含的第一交易地址;所述第一交易地址包括发起端生成的Token标识;
S72:查询与所述交易请求对应的第二交易地址;所述第二交易地址包括审批端生成的Token标识;
S73:比较第一交易地址和第二交易地址是否一致;若二者完全一致,则将审批状态确定为正常写入并加入所述审批结果;若二者不一致,则将审批状态确定为异常写入并加入所述审批结果。
本实施例中各步骤的详细解释可参照应用发起端的方法,在此不再赘述。
参见图9,为本申请一种基于区块链合约技术的私钥保管装置结构示意图;
由图9可知,所述装置包括:
第一发送单元10,用于将交易请求同时发送给N个审批端;其中,N为不小于5的奇数;
第一获取单元20,用于获取审批端根据所述交易请求的审批结果;
执行单元30,用于根据审批结果执行相应操作。
进一步的,所述审批结果包括审批状态,所述审批状态为正常写入或异常写入。
进一步的,所述审批结果还包括审批通过或审批未通过;由图10可知,所述执行单元30包括:
统计子单元31,用于统计审批结果为审批通过的审批端数量K;
比较子单元32,用于比较所述审批端数量K与预设第一数量S的数值大小;其中,S为小于N/2的整数;若K≥S,则执行转账操作,若K<S则执行停止转账操作。
进一步的,所述比较子单元32,还用于比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;若K≥Q,则执行转账操作,若K<Q则执行停止转账操作。
进一步的,在图11所示的另一实施例中,所述执行单元30还包括:
查询子单元33,用于查询所有审批结果中是否存在强制审批未通过的审批结果;若存在,则由统计子单元31统计审批结果为审批通过的审批端数量K,由比较子单元32比较所述审批端数量K与预设第二数量Q的数值大小;其中,Q为大于N/2的整数;若K≥Q,则执行转账操作,若K<Q则执行停止转账操作。
进一步的,所述第一发送单元10还用于将交易请求发送给监控端;
所述第一获取单元20还用于获取监控端根据所述交易请求生成的监控指令。
进一步的,在图12所示的一种实施例中,所述装置还包括:
地址设置单元40,用于设置安全地址;
所述第一发送单元10还用于将Token发送到安全地址。
本实施例中各结构单元在执行上述方法时起的功能作用参见上述方法实施例中的说明,在此不再赘述。
参见图13,为本申请提供的一种基于区块链合约技术的私钥保管装置;
由图13可知,所述装置包括:
第二获取单元50,用于获取来自发起端的交易请求;
结果生成单元60,用于根据交易请求生成审批结果;所述审批结果包括审批通过或审批未通过;
第二发送单元70,用于将所述审批结果发送至发起端。
进一步的,由图14可知,所述结果生成单元60包括:
提取子单元61,用于提取所述交易请求中包含的第一交易地址;所述第一交易地址包括发起端生成的Token标识;
查询子单元62,用于查询与所述交易请求对应的第二交易地址;所述第二交易地址包括审批端生成的Token标识;
状态写入子单元63,用于比较第一交易地址和第二交易地址是否一致;若二者完全一致,则将审批状态确定为正常写入并加入所述审批结果;若二者不一致,则将审批状态确定为异常写入并加入所述审批结果。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。