一种基于区块链的可信捐助方法
2023-03-20徐度康沈苏彬
徐度康 沈苏彬
(1.南京邮电大学计算机学院;2.南京邮电大学通信与网络技术国家工程研究中心 江苏南京 210046)
现如今,慈善捐赠在受到人们关注的同时,也面临着信任危机。传统的捐赠活动需要依赖慈善平台的中心化管理,存在求助难辨真假的问题,例如:多个慈善平台上出现了谎报求助信息进行诈捐的现象。对于捐赠,由于依靠慈善平台的中心化管理,存在篡改捐赠信息以及捐赠流向不透明的问题,例如某慈善机构出现了私自挪用捐款并篡改、谎报捐赠信息的不良行为。因此如何保证慈善捐赠过程中的求助信息和捐赠信息可信是目前需要解决的问题[1]。
区块链在中本聪发表的比特币论文[2]中首次引入,可用于信任管理。为了解决中心化管理模式下求助数据和捐赠数据缺乏真实性以及易遭篡改等问题,可将区块链技术与慈善捐赠相结合,使原先由慈善机构集中管理的记录求助信息和捐赠信息的账本,变为由所有参与方共同管理,参与方可以共同对求助和捐赠数据进行真实性验证,并且账本中记录的求助和捐赠数据难以篡改,从而解决以上问题。
目前已有一些将区块链技术和慈善捐赠结合的相关研究,一是为了保证捐赠的真实性,利用区块链上发行的加密货币进行捐赠。二是利用区块链记录具体的捐赠结果,保证捐赠结果不会遭到篡改。目前,工作主要注重于对利用区块链对捐赠情况进行管理,对需要进行筹款的求助项目,仍然是依靠中心化的管理方式,这样求助数据缺乏真实性且易遭篡改,若求助数据不真实,那就无法保证捐赠的真实。因此,该文首先对去中心化模式下如何保证求助数据的真实性进行研究,在此基础上再研究如何保证捐赠数据可信。相比于现有工作,该文提出了一种双链结构,研究了如何保证求助数据和捐赠数据的真实可信,设计了存储求助和捐赠交易的区块结构、交易的验证机制和成链机制。
1 相关工作分析
LI Y 等人[3]介绍了蚂蚁区块链平台上帮助听障儿童重获新生、和再障说分手等慈善项目,虽然蚂蚁区块链平台上已有多个公益项目上线,但在该平台上线的项目均是慈善组织开展的公益项目,依赖于中心化的管理。JAYASINGBE D 等人[4]从技术的角度提出搭建基于区块链的慈善筹款平台,利用比特币、智能合约以及多重签名技术进行善款筹集。NOR R M等人[5]提出了一个用于灾区援助的基于区块链技术的捐赠系统,整个平台搭建在以太坊之上,平台上的所有交易均通过智能合约进行,但它要求用户必须运行一个完整的以太坊节点,并且拥有以太币作为资本,存在一定的局限性。SIRISHA N S 等人[6]描述了基于区块链的捐款跟踪平台,该平台基于区块链技术对捐赠的运作进行核算,使公众和捐助者能够跟踪每一笔捐款资金的来源、时间和对象。
以上研究大多依靠比特币系统或以太坊系统,使用系统上发行的加密货币进行捐赠,使捐赠结果不可篡改。部分研究不依靠具体的加密货币进行捐赠,只是将捐赠的具体结果记录在区块链账本中,并使用加密货币作为激励。然而这些研究中对于求助项目大多都是依靠中心化的管理方式,求助数据大多存储在数据库中,在这样集中式的管理方式下,求助数据的真实性难以保证,求助数据也易遭篡改,并且捐赠依赖于加密货币,缺少一定的实用性。
2 基于区块链的可信捐助方案的研究
2.1 问题研究
该文的主要问题为去中心化模式下,如何保证求助数据和捐赠数据的真实性。
目前求助数据主要依靠中心化的管理方式集中存储和发布,求助数据的真实性难以保证,也易遭到篡改。且求助数据大多需要依靠人工填写,之后需要依靠相关部门对求助人的情况进行核实,通过后才能代表求助是真实的。谭文安等人[7]使用保证金的方式来惩罚发布虚假求助的行为,即在发布求助的时候需要缴纳一定的保证金,如验证发现求助是虚假的,则扣除保证金。使用区块链来对求助数据进行可信管理,首先需要利用数字签名技术保证求助数据是由求助方本人发布,其次需要相关专业人员作为区块链的参与方,共同负责对求助数据进行真实性验证,如果验证通过则表示求助数据真实,才可以将该求助发布到区块链。
捐赠数据大多也是依靠中心化的慈善机构进行管理,捐款先由捐赠方流向慈善机构,再由慈善机构流向求助方,捐赠数据由慈善机构集中存储和发布,捐赠数据的真实性和完整性难以保证。在将捐赠数据记录到区块链之前,首先需要保证该捐赠交易对应的求助是真实的,其次需要保证该捐赠交易是真实的。对于保证捐赠对应的求助是真实的,根据上文的分析,如果某个求助已经被发布到区块链,则该求助通过了相关专业人员的审核。因此,可以在区块链中查询相关求助,查询到则代表求助真实。对如何保证捐赠交易是真实的,如果使用区块链上的加密货币进行捐赠,则捐赠交易在上链前依靠区块链本身就可以验证真伪,如果不使用区块链上的加密货币进行捐赠,则捐赠交易需要依靠相关支付接口来验证该转账交易是否真实发生了。在确保捐赠交易真实后,才可以将其发布到区块链。
2.2 双链结构
该文需要利用区块链对求助和捐赠数据进行可信管理,对于需要进行可信管理的求助数据和捐赠数据,它们在数据结构上存在差异,并且各自的真实性验证方式也不同。使用单链式结构难以实现对求助和捐赠数据的相关真实性验证和管理。目前已有对于使用多链结构进行可信管理的研究,例如:李芳等人[8]提出一种基于双链式的云制造系统,用于管理企业之间需要共享的信息。该文针对慈善捐赠领域,为了对求助和捐赠数据进行可信管理,提出了一种双链式的结构,一个区块链为求助信息链,用于管理求助数据,另一个为捐赠信息链,用于管理捐赠数据,两条区块链之间具有映射关系,对于捐赠信息链上的每一个捐赠交易,都对应求助信息链上的一个求助交易。在确定了双链结构后,需要设计存储求助和捐赠数据的区块结构。该文设定每个区块的区块体中仅存储一笔交易,将交易的哈希值直接存放在区块头中。交易发生任何篡改都会在通过该区块的哈希值反映。图1是该方案的区块结构图。
图1 区块结构图
2.3 求助交易上链算法
求助信息链的参与方有求助方以及具有专业审核能力的监管方,主要对发布的求助数据进行核实。求助交易指求助方根据自身的需求构造出相应的求助请求数据,主要包括账户地址address、求助金额money、求助原因reason、求助证明proof 以及使用计划plan。对于该交易的验证主要是由监管方验证这些信息是否真实并且符合法律法规的要求,这里为了方便进行讨论,规定只需验证该求助交易是否包含求助方的数字签名,以及求助的金额是否符合范围。
区块链是一个去中心化的公用账本[9],运用共识机制保证链上数据的一致性。该文中使用私有链,设计的交易发布方式是由交易发起方直接产生可以验证交易真伪的区块并广播,有其他参与方进行验证,采用实用拜占庭容错作为共识机制。
接下来将梳理求助交易的上链算法,上链的含义是指交易先被组装进区块,通过共识机制的运行,若区块中包含的交易数据能通过其他节点验证,该区块将被链接到当前的区块链中。求助方先构造求助交易组装成区块并广播,其他节点验证区块是否可以解密签名,验证该区块中指向前区块的哈希值是否正确,验证求助金额是否在规定范围内。验证通过就认为该交易是可信的,附上签名再次广播。根据实用拜占庭容错机制,若新区块通过至少2/3参与方节点的验证就将该区块加入链中。求助交易上链算法的基本描述如图2所示。
图2 求助交易上链算法
2.4 捐赠交易上链算法
捐赠链的参与方有求助方和捐赠方。捐赠交易就是指捐赠方给求助方捐款这一操作,捐赠交易描述了具体的捐赠情况,根据需求设计捐赠交易内容主要包括支付编号tid、捐助账户address’、捐赠金额money、求助账户address 以及求助交易的哈希值hash。其他参与方需要对捐赠交易进行验证,根据之前的分析,首先需要利用求助信息链验证求助是否真实存在,接着需要验证捐赠是否真实,这里使用捐赠链上的加密货币进行捐赠,则需要验证捐赠方的账户余额是否大于捐赠金额。
对于捐赠信息链的共识机制,同样采用实用拜占庭容错作为共识机制。对捐赠交易的上链算法,捐助方根据求助链上的求助交易进行捐赠,完成后构造捐助交易并组装到区块,将区块广播,其他节点验证区块是否可以解密签名,验证该区块中指向前区块的哈希值是否正确,验证捐赠是否真实,利用求助信息链验证对应的求助交易是否存在。捐赠交易上链算法的基本描述具体见图3。
图3 捐赠交易上链算法
3 实现与测试
3.1 功能实现
对于实验环境,考虑如何实现对等网络,如何发布交易,如何使用智能合约,如何实现界面交互。主流的区块链开发平台有以太坊[10]和超级账本。以太坊的工具包web3j,可以实现发起交易,调用智能合约等操作。该文使用以太坊作为实验平台,借助其完成该方案中私有链环境的搭建。在完成实验环境的搭建后,使用Java语言对上文提到的上链算法进行了实现。
3.2 结果与分析
若求助数据符合真实性验证的要求,即由求助方本人发布,求助金额在规定范围,则可以通过验证,最终求助发布成功,如图4 所示。否则求助发布失败。如果发布的捐助符合真实性验证的要求,则该捐赠可以通过真实性验证,最终捐赠发布成功,如图5 所示。否则捐赠发布失败。由于该方案采用了双链结构,因此和单链结构相比,在交易发布的效率上有一定的提升,如图6所示。
图4 求助发布成功
图5 捐赠发布成功
图6 单链和双链模式下交易发布时间对比
上述仿真实验说明了在交易合法的情况下,求助交易和捐助交易都可以成功通过真实性验证并且存储到区块链中,在交易不符合要求时,交易无法通过真实性验证,从而导致上链的失败。并且采用双链结构具有更快的交易上链效率。
4 结语
该文针对目前传统慈善捐赠的中心化管理可能存在的信任问题,提出了基于区块链的去中心化捐助的区块设计、区块链结构设计以及基于区块链的去中心化捐助方法设计,通过在以太坊平台上进行仿真实验,最终验证了所提出的结构设计和方法设计的可行性与正确性。后续的工作是深入研究现有的共识算法,选择更加适合该课题的共识算法,完善该文所设计的基于区块链的去中心化可信捐助方法。