一种基于智能合约的资金管理方法、装置及设备
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种基于智能合约的资金管理方法、装置及设备。
背景技术
在现实中存在很多需要公众“众筹”的方式,例如,捐赠、份子钱等等,这种方式下对于公众而言,互动性不强,管理也不透明,“众筹”资金的使用也无法追溯,而对于众筹的发起方而言,几乎是没有成本的,也难以追责。
基于此,需要一种更为透明的资金管理方案。
发明内容
本申请实施例的目的是提供一种更为透明的资金管理方案。
为解决上述技术问题,本申请实施例是这样实现的:
获取包含第一用户组之间各第一用户的当前状态和目标状态的智能合约,并部署,其中,所述智能合约由第一用户组的第一用户共同发起,第一用户组中包含至少两名第一用户;
创建与所述目标状态相关的链上账户,以便各第二用户向所述链上账户进行资金转账,其中,所述链上账户的每一笔资金变动记录被写入所述区块链中;
根据所述智能合约确定所述各第一用户的目标状态是否达成,若是,将所述链上账户中的可用资金转账至各第一用户的资金账户中;若否,将所述链上账户中的可用资金返还至第二用户的资金账户中。
对应的,本说明书实施例还提供一种业务风险防控装置,包括:
一种基于智能合约的资金管理装置,应用于区块链的节点设备中,包括:
合约获取模块,获取包含第一用户组之间各第一用户的当前状态和目标状态的智能合约,并部署,其中,所述智能合约由第一用户组的第一用户共同发起,第一用户组中包含至少两名第一用户;
链上账户创建模块,创建与所述目标状态相关的链上账户,以便各第二用户向所述链上账户进行资金转账,其中,所述链上账户的每一笔资金变动记录被写入所述区块链中;
确定模块,根据所述智能合约确定所述各第一用户的目标状态是否达成,
转账模块,若是,将所述链上账户中的可用资金转账至各第一用户的资金账户中;若否,将所述链上账户中的可用资金返还至第二用户的资金账户中。
通过本说明书实施例中所提供的方案,第一用户事先设定自己的当前状态和目标状态,并创建链上账户向第二用户发起众筹,只要各第一用户未达到目标状态,就不能使用链上账户中的资金,并且,如果各第一用户的目标状态达成失败,则将会把第二用户的资金原路返还,整个过程中链上账户的资金变动记录都基于智能合约完成,并被写入区块链中,形成不可篡改的记录,用户可以随时查询验证,实现更为透明的资金管理。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本说明书实施例所提供的一种***架构的示意图。
图2是本说明书实施例提供的一种基于智能合约的资金管理方法的流程示意图;
图3为本说明书实施例所提供的一种具体实施场景下的示意图;
图4是本说明书实施例提供的一种基于智能合约的资金管理装置的结构示意图;
图5是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化***,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
不论是公有链、私有链还是联盟链,都可能提供智能合约的功能。区块链上的智能合约是在区块链***上可以被交易触发执行的合约。智能合约可以通过代码的形式自定义或者创建。
以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。
例如图1所示,图1为本说明书实施例所提供的一种***架构的示意图。在该***中,Bob将一个包含创建智能合约信息的交易发送到以太坊网络后,节点1的EVM可以执行这个交易并生成对应的合约实例。图中1中的“0x6f8ae93…”代表了这个合约的地址,交易的to字段为一个空的账户。各节点间通过共识机制达成一致后,这个合约成功创建,后续用户可以调用这个合约。
在实际应用中,智能合约可以是用户自己由高级语言所便编写的,也可以是用户基于客户端所提供的一定的合约模板,而用户只需要进行一些参数和触发条件的设定,即可以生成相应的智能合约。
以下结合附图,详细说明本说明书各实施例提供的技术方案。如图2所示,图2是本说明书实施例提供的一种基于智能合约的资金管理方法的流程示意图,应用于区块链的节点设备中,该流程具体包括如下步骤:
S201,获取包含第一用户组之间各第一用户的当前状态和目标状态的智能合约,并部署。
第一用户组即为发起众筹的各第一用户,在本说明书实施例中,第一用户组中至少应当包含至少两名第一用户,当然,在某些实施场景下,也可以是多名第一用户。
在本说明书实施例的实时场景下,为了有效提高公众众筹活动上的参与程度,在第一用户组中的各第一用户一般而言存在某种共同的利益关系,例如,当前是恋人关系,或者,当前是同一个健身小组的成员等等。从而他们可以有共同的基础来发起同一目标状态的设定,并邀请更广泛的成员来参与众筹。
在一种实施方式中,各第一用户需要通过身份验证,诸如实名认证、生物特征验证等等,以保障智能合约中相关信息的真实性。
当前状态和目标状态可以由各第一用户预先设定,需要说明的是,目标状态中可以包含截止时间,也可以仅对于第一用户组中的部分第一用户设置目标状态。
例如,两名用户当前是恋人关系,将要准备结婚,因此,想开始向众人接收份子钱,因此二人进行身份认证,和链上唯一身份绑定,并且设定目标状态为“在XX年XX月XX日之前,二人保结婚并且保持3年以上”。
又例如,在一个健身机构中,3名朋友一起健身,并构成第一用户组,其和其他朋友约定,如果在3个月内,第一用户组的成员减重一共达到40千克即奖励500元,因此,当前状态可以是“当前时间+成员当前体重”,而目标状态则可以是“(当前时间+3个月)+(成员当前体重-40千克)”。
具体而言,由于存在多名第一用户,在实际应用中,任一第一用户均可以通过客户端向其它成员共同发起智能合约的编辑,并且在所有成员均一致确认之后智能合约才能成立;或者,也可以是其中的一名用户发起智能合约的编辑,并且将编辑好的智能合约的内容以可视化的形式展示给其他的第一用户,其他用户只需确定即可。
例如,一对情侣宣布将要结婚,因此,在首先通过身份认证,各自在客户端上开设一个账户,由任一账户在客户端中进行身份、当前状态(恋人关系)和目标状态(结婚日期、地点等等)的确定,生成包含了两名用户的身份、当前状态和目标状态的智能合约并发送至区块链的节点设备中,而同时区块链的节点设备则可以将该智能合约发送至另一用户,以等待另一用户的确认,若两名用户都确认过之后,即将该智能合约部署在区块链网络上。
所述的智能合约部署在区块链网络上指的是将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。
S203,创建与所述目标状态相关的链上账户。
此处的链上账户可以是一个银行账户,或者第三方支付账户等等,该链上账户可以用于各第二账户向该账户中进行转账,同时,该账户的资金变动记录都将被写入所述区块链。
链上账户并不属于任何一个第一用户,该账户的资金明细是对于所有用户公开的,任何发生过转账行为的第二用户都可以在区块链网路中查询得到自己的转账记录。同时,任一第一用户对该链上用户都没有操作权限(包括支付、转账等等),从而保障了链上账户的资金来源干净可靠,账上资金也不会被随意挪用,保证了整个过程的公开透明。
链上账户是否发生转账行为则取决于智能合约中的目标状态,换言之,链上账户是一个通过智能合约来触发操作行为的账户。
S205,根据所述智能合约确定所述各第一用户的目标状态是否达成。
判断所述各第一用户的目标状态是否达成可以分为两类,第一种,需要可信权威机构进行确认的;第二种,无需可信权威机构进行确认的。基于此,可以对于目标状态是否达成采用不同的认证方式。
具体而言,对于第一种,在需要可信权威机构进行认证的情形下,可以由用户首先在所述可信权威机构获得证书,然后上传至区块链的节点设备中,进而,由区块链的节点设备向所述可信权威机构去进行求证。
例如,第一用户设定的目标状态是“在xx时间点之前,获得A机构的证书”,基于此,第一用户可以在在xx时间点之前即通过客户端发布获取得到的证书至区块链网络,进而由区块链中的节点设备向A机构发起验证,或者,直接由A机构公证所述证书并发布至所述区块链网络中,在确认之后调用智能合约确定所述目标状态是否达成。
在这种实施方式下,可信权威机构的认证结果需要被写入所述区块链中,以便任何公众人员可以随时查询验证
对于第二种而言,在无需可信权威机构进行认证的情形下,则可以通过公众投票的方式来确认目标状态是否达成,例如,某个网络作家或者导演设定目标状态是“下一部作品更好看”,这种情形下,没有一个绝对的衡量标准。
因此,当第一用户在设定目标状态时,如果包含这一类的条件,服务端则可以调用相应的投票智能合约,以实现对于目标状态是否实现进行判断。
例如,在以太坊中就提供了一种可调用的投票智能合约,整个投票计数过程是自动且完全透明的。只需首先要为投票设立一个简称创建一个合约,发起者(即服务端)作为***来给每一个独立的地址分配相应的权限。每一个参与者可以自己投票或者委托给信任的提议,投票智能合约最后会返回得票数最多的那个提议(例如作品有进步、没有进步或者退步了)。
在一种实施方式中,可以无需任何门槛,即给与所有人都具有相应的投票权限,从而实现最为广泛的公众参与度,有利于媒体传播。
在一种实施方式中,则可以仅赋予进行过资金转账的第二用户相应的投票权,即每当监测到一名第二用户通过客户端进行了资金转账,则可以调用该投票智能合约赋予该第二用户相应的投票权限,以便该第二用户进行投票。
进一步地,还可以根据资金转账的额度大小,分配给不同的第二用户相应的权限,一般而言,资金转账的额度越大,投票的权重越大。
例如,可以根据资金转账的额度划分多个档位,给与不同档位的人不同权重。例如分别划分100、500、1000三个不同档位,分别赋予1、2和3的投票权重。
又例如,还可以确定资金转账在总转账金额中的占比,将转账金额在总金额中的占比确定为该第二用户的投票权重。
在这种实施方式下,通过设置相应的投票权重门槛,以及,根据转账金额的不同配置相应的权重,可以滤除掉与资金无关的闲散人员,提升投票的质量,做到有效的资金监管。
S207,若是,将所述链上账户中的可用资金转账至各第一用户的资金账户中;若否,将所述链上账户中的可用资金返还至第二用户的资金账户中。
如前所述,在未达成目标状态之前,各第二用户可以向链上账户中进行资金转入,但是链上账户的资金不能转出。
若确定目标达成,则可以根据智能合约执行转账,将链上账户的资金转账到第一用户组中的各第一用户的账户中(在生成智能合约时,第一用户即可以将各自的资金账户写入智能合约中)。具体而言,可以是一次性的转账,也可以分批的进行转账。
例如,若智能合约中的目标状态是“在时间点T1之前减重10kg”,并“维持体重到截止时间T2”,则即使在时间点T1时达成了“减重10kg”,智能合约仍然可以进行持续的监测第一用户上传的证据到时间点T2,而链上账户的鼓励资金则以截止时间T2为准,分批的转账至各第一用户的资金账户中。
相反的,若用户未能达成智能合约中所设定的目标状态,则此时将需要所述链上账户中的可用资金返还至第二用户的资金账户中。
具体而言,可以根据第二用户转账金额原数返还,或者,还可以根据智能合约中设定的资金返还规则进行返还。
例如,在智能合约中设定条件“双倍返还”,则只需每当第二用户向链上账户转入资金时,第一用户的资金账户自动向链上账户转入对等的金额,或者,第一用户组的用户在链上账户中预先设立敌营金额的保证金,从而若第一用户组的目标状态达成失败,将向每一名转账用户进行双倍返还。
通过本说明书实施例中所提供的方案,通过第一用户事先设定自己的当前状态和目标状态,并创建链上账户向第二用户发起众筹,只要各第一用户未达到目标状态,就不能使用链上账户中的资金,并且,如果各第一用户的目标状态达成失败,则将会把第二用户的资金原路返还,整个过程中链上账户的资金变动记录都基于智能合约完成,并被写入区块链中,形成不可篡改的记录,用户可以随时查询验证,实现更为透明的资金管理。
本说明书实施例所提供的方案可以广泛的应用诸多众筹或者媒体传播等场景下。例如,一对情侣宣布要结婚了,则可以通过客户端进行实人认证,和链上唯一身份绑定,并开始设定相应的目标状态(结婚日期,维持时间等,返还规则等等),生成智能合约和相应的链上账户,接受份子钱,亲人朋友、同学、吃瓜群众往链上账户打钱,如果确认结婚了(可以通过可信机构进行核实,并且将认证结果写入区块链中)份子钱分期打给该情侣的链上账户,如果未到规定时间离婚分手了,甚至到时间未结果,可以经过机构审核或者众人投票确定失败,按照约定将份子钱返还给凑份子的人。如图3所示,图3为本说明书实施例所提供的一种具体实施场景下的示意图。
对应的,本说明书实施例还提供一种基于智能合约的资金管理装置,应用于区块链的节点设备中,如图4所示,图4是本说明书实施例提供的一种基于智能合约的资金管理装置的结构示意图,包括:
合约获取模块401,获取包含第一用户组之间各第一用户的当前状态和目标状态的智能合约,并部署,其中,所述智能合约由第一用户组的第一用户共同发起,第一用户组中包含至少两名第一用户;
链上账户创建模块403,创建与所述目标状态相关的链上账户,以便各第二用户向所述链上账户进行资金转账,其中,所述链上账户的每一笔资金变动记录被写入所述区块链中;
确定模块405,根据所述智能合约确定所述各第一用户的目标状态是否达成,
转账模块407,若是,将所述链上账户中的可用资金转账至各第一用户的资金账户中;若否,将所述链上账户中的可用资金返还至第二用户的资金账户中。
进一步地,所述智能合约中还包含有资金返还规则,相应的,所述转账模块,根据所述资金返还规则,将将所述链上账户中的可用资金返还至第二用户的资金账户中。
进一步地,所述确定模块405,赋予进行过资金转账的第二用户对于预先部署的投票智能合约的投票权,其中,所述投票智能合约用于各第二用户确定所述目标状态的是否达成;根据所述投票智能合约的投票结果,确定所述第一用户的目标状态是否达成。
进一步地,所述确定模块405针对任一第二用户,根据该第二用户的资金转账额度确定该第二用户的投票权的权重,其中,所述资金转账额度与权重正相关。
进一步地,所述各第一用户的当前状态包括恋人关系,相应的,目标状态包括婚姻关系;相应的,所述确定模块405,向关于婚姻关系的可信授权机构发起验证,根据所述验证结果确定所述目标状态是否达成,并,将所述验证结果写入所述区块链中。
进一步地,所述转账模块407,在指定时长内,分期将所述链上账户中的可用资金转账至各第一用户的资金账户中。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图2所示的基于智能合约的资金管理方法。
图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图2所示的基于智能合约的资金管理方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的***、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。