div#pop_ad { opacity: 0; }
AD
首页 > 数字货币 > 正文

基于智能合约的贷款系统的设计与实现

[2021-01-29 06:24:13] 来源: 编辑:wangjia 点击量:
评论 点击收藏
导读: 1 引用Yang Q., Xu F., Zhang Y., Liu F., Hu W., Liao Q. (2018) Design and Implementation of a Loan Sys

基于智能合约的贷款系统的设计与实现

1 引用
Yang Q., Xu F., Zhang Y., Liu F., Hu W., Liao Q. (2018) Design and Implementation of a Loan System Based on Smart Contract. In: Qiu M. (eds) Smart Blockchain. SmartBlock 2018. Lecture Notes in Computer Science, vol 11373. Springer, Cham

2 摘要
随着经济的不断发展,传统贷款模式存在的手续复杂、相互不信任、交易金额限制等问题已经不能满足市场的需求。本文提出了一种基于合约的智能贷款系统,利用bb0的分散性和不可篡改性,通过自动签署贷款协议的方式加入到贷款系统中。在我们的系统中,用户之间不需要建立任何信任基础,也不需要任何第三方中间信任媒介的参与。用户可以与贷款系统中的任何用户进行对等交易。实际测试表明,该系统能够智能地实现借款、还贷和还款的过程。分布式应用程序健壮、易于操作、实用。

3 介绍
在现实生活中,签订合同的过程中存在着许多问题,如双方之间缺乏信任,在履行合同过程中存在违约。因此,在签订合同的过程中,需要第三方中间信托媒介作为签订的保证。这直接导致了传统贷款过程的乏味。在借贷过程中,借贷双方都需要进行一系列复杂而严格的签约程序。

近年来,P2P网络借贷的兴起使得市场运作更加高效。国家银行业监督管理委员会、工业和信息化部联合发布了《互联网借贷信息中介机构经营活动管理暂行办法》。但到目前为止,传统P2P借贷平台的市场管理仍然是一个令人困惑的问题。

本文针对现实生活中的借贷行为,设计并实现了一个基于合约的智能借贷系统。区块链与智能合约的结合,不仅使P2P借贷市场有了新的发展方向,也为建设多个贷款信托平台打下了完美的基础。基于合同的智能贷款系统具有以下优点:(1)自动签约;(二)不限制借款人与贷款人之间的交易;(3)实现个人所得税风险自由化;(4)实现分权信任机制;(5)交易不能被篡改。

4 相关技术
4.1 区块链背景

区块链本质上是一个基于密码的分布式数据库。2008年,中本聪发布的p2p电子现金系统比特币(Bitcoin)让区块链进入了公众视野。区块链在一定的时间内将事务数据形成块,然后将这些块连接起来形成链结构。基于P2P网络和密码学,区块链将构建一套分散的绝对真实的分布式账本。只要区块链中的节点可以复制、下载和维护链上的数据记录,区块链上的节点之间不需要建立任何信任关系。根据环境和节点类型的不同,区块链可以分为三种类型:开放链、联合链和私有链。区块链由数据层、网络层、共识层、激励层、合约层和应用层六部分组成。基本架构模型如图1所示。

4.2 智能合约

智能合同本质上是一个程序,运行在计算机上数字化后的合同。1994年,Nick Szabo首次提出了智能合约的创新概念。由于没有开发智能合同的平台,智能合同一直处于概念状态。传统合同数字化后,智能合同可以在无人监督的情况下执行,双方之间不需要建立信任基础。

智能合同不仅可以将双方都能接受的规则定义为传统合同,而且可以在没有第三方监督的情况下自动执行合同中的规则。本准则的可执行性消除了违约的发生。在编程和去中心化之后,合约可以智能地、自动地执行需要在之前手工完成的协议。

基于智能合约的贷款系统的设计与实现

图1 区块链技术基础架构


4.3 以太坊

以太坊是一个区块链平台,它使用分散的虚拟机处理点对点智能合约,使用专门的以太坊处理所有类型的事务。基于以太坊开发的应用程序不会受到第三方的攻击。以太坊可以看作是区块链和智能合约的组合。它有以下四个设计原则:(1)简洁原则。确保以太坊的用途是为一般市民,而非传统上使用的特殊组织;(2)一般原则。以太坊中所有类型的用户都可以定义和发布自己的智能合约;(3)模块化原则。以太体各部分的模块化有利于一个完整系统的开发;(4)不歧视原则。所有用户和应用程序都是平等的。智能合约不能为特定用户或应用程序创建歧视性条款。

5 贷款系统设计
区块链银行贷款系统采用数字所有权管理,提出了一个支持数字抵押贷款[10]的p2p借贷平台。区块链银行建立在以太坊技术之上,是一个连接借贷机构和借贷机构的网络借贷平台。贷款制度的主要特点如下:

(1)、基于智能合同的分权。在该系统中,贷款流程的完整性由智能合同保证,不需要任何第三方中介的参与。系统实现完整的点对点借贷,实现借款人与贷款人之间的不可信借贷并且还可以通过预留接口直接与官方组织交互。

(2)、贷款利率放开,不受贷款金额的限制。由于没有第三方中介机构,贷款人可以根据官方机构提供的借款人贷款证自由确定贷款利率,贷款产生的利息由贷款人全额获得。

(3)、贷款的总风险是分散的。该系统实现了贷款风险评估的自由化。双方的损益是随机分布的,不需要依靠任何第三方中介机构的单一决策。这也避免了将风险集中于第三方的高风险。

(4)、系统具有较强的安全性能。该系统采用区块链和智能合同技术。区块链中事务信息的高度透明性和不可篡改性,以及智能合约的实施,保证了系统的安全性。

5.1 系统架构设计

传统的集中式应用程序通常使用以服务器为中心的C/S体系结构。用户通过客户机与web应用程序进行交互。与传统的应用体系结构不同,该系统采用了以太坊分散的应用体系结构。智能合约是在以太坊虚拟机EVM上执行的。客户机只需要通过web浏览器执行RPC调用来与实例交互,而不需要请求访问集中式服务器。整个系统的架构如图2所示:

基于智能合约的贷款系统的设计与实现

图2 系统架构设计


5.2 智能合约设计

该系统中的智能合同主要是贷款合同。贷款内容主要包括贷款信息和贷款状态。贷款信息以结构的形式定义,包括借款人、贷款金额、还款日期和接受的借款数量。贷款状态由枚举类型定义,包括等待接受和锁定、成功借款和借款失败。贷款人的贷款内容定义与借款人的贷款内容类似,如图3和图4所示:

基于智能合约的贷款系统的设计与实现

图3 借贷内容


一旦一个新的传感器节点想要加入这个区块链网络,第一件事就是用它的标签向协调节点发送一个请求。如果它是一个完整的节点,那么在它获得访问权限之前,需要进行高级安全验证。如果它是一个轻量级节点,协调节点将分发一个完整的节点来为这个新来者服务。但是,在验证真实id之前,新来者将无法获得有效的id进行通信。一旦一个完整的节点离线,协调节点就会将新的完整节点分发给轻量级节点来维护连接。

贷款合约函数的定义如图5所示。贷款合同的功能函数如下:hasActiveLoan()方法来查看现有有效的贷款,newLoan()方法创建一个新的贷款请求,acceptProposal()方法接受贷款项目,getLoanDetails()方法获得贷款请求的细节,和getLoanState()意味着查看请求的状态,lockLoan()方法获得贷款的贷款金额,getRepayValue()方法计算还款金额,和repayLoan()意味着还款。

贷款合同的功能函数如下:getProposal()方法获得所有的贷款项目,newProposal()方法创建一个新的贷款项目,getActiveLoanId()方法获得一个有效的贷款请求的地址,revokeMyProposal()手段收回贷款项目,和getProposalDetails()方法获得这个项目的细节。

6 借贷系统的实现
智能合约贷款系统主要实现了借款、贷款和还款三大功能。借款功能可以细分为发出贷款请求和接受相应的借款。贷款功能实现对借款请求的接受,还款功能分为到期还款和逾期还款。

基于智能合约的贷款系统的设计与实现

图4 贷款内容

基于智能合约的贷款系统的设计与实现

图5 贷款合同内容


6.1 贷款请求

贷款请求由借款人发起。在贷款请求中,说明了贷款金额和还款日期。贷款请求通过贷款合同在整个网络上广播,每个贷款帐户都可以接收到贷款请求。对贷款请求感兴趣的账户可以根据政府公共信托机构提供的借款人贷款抵押物的证明进行风险评估,然后给出相应的贷款金额和贷款利息。贷款人接受贷款请求后,通过智能合同暂时扣减贷款人账户内相应的贷款金额。贷款人发放的贷款信息将通过网络进行广播。贷款抵押物的证明需要官方机构的参与,并在系统中预留一个接口,以备将来实施。发放贷款的流程如图6所示。

基于智能合约的贷款系统的设计与实现

图6 释放贷款请求流程

基于智能合约的贷款系统的设计与实现

图7 接收贷款请求流程


6.2 接收贷款

借款人可以根据产生的利息金额,从许多贷款人提供的贷款中选择最优惠的贷款方案。借款人选择合适的计划后,贷款金额将通过贷款合同增加到借款人的账户余额。同时,借款人未选择的贷款人提供的贷款资金,将退还给贷款人账户余额。接受贷款的流程如图7所示。

6.3 还贷

贷款事务生成后,将在整个网络中发布,并记录在相应的块中。贷款智能合约将持续监控贷款交易中产生的借款条件,例如还款日期。贷款到期后,智能合同生效,执行还款规定。借款人还可以自由地提前发起还款请求。在还款过程中,贷款金额和利息通过贷款合同增加到贷款人的账户。同时,从借款人的账户中扣除贷款金额和相应的利息。到期还款流程如图8所示。

6.4 逾期还款

如果借款人逾期未偿还贷款,贷款的任何一方都可以要求扣押借款人的抵押物,以触发贷款合同。当贷款合同通过请求后,将触发抵押品合同。抵押物的价值被传递回借款合同后的有关政府部门处理抵押品。贷款合同按照贷款人贷款额的比例将抵押物的价值分配到相应贷款人的账户中,然后将处理结果在整个网络中进行广播。逾期还款流程如图9所示。

基于智能合约的贷款系统的设计与实现

图8 按期还款流程

基于智能合约的贷款系统的设计与实现

图9 逾期还款


7 系统分析及测试
本系统使用的开发环境基于Linux下操作系统的Ubuntu-16.04版本。该系统采用了Truffle应用程序开发框架、Node.js运行时环境、Testrpc本地仿真以太坊环境和MetaMask 以太坊钱包。

使用终端上的Testrpc命令直接启动由Testrpc构建的本地以太坊测试环境。使用Truffle deploy命令将智能合约部署到Testrpc,然后将Testrpc中的测试帐户添加到MetaMask 以太坊钱包中。系统部署启动成功后,对系统各模块进行功能测试,验证系统设计的可行性。系统测试使用了四个账号,测试主要从以下两个方面进行:

(1)、发出贷款申请、生成贷款项目和选择合适贷款项目的可行性。帐户2发出贷款请求。借款申请为30以太坊借款,还款日期为2018年6月30日。账户2通过智能合约在整个网络上广播自己的贷款请求,系统中的每个账户都可以接收到来自账户2的贷款请求,如图10所示。如果Account 3发起一个同意贷款请求并支付交易的交易,通过智能合约将交易信息广播到整个网络,如图11所示。与账户3类似,账户4和账户5给出了相应的贷款项目。账户4贷给账户2,余额为20元,利率为10% pa。账户5借到账户2,余额为10以太元,利率为10% 。帐户2从每个帐户接收贷款项目,然后选择帐户4和帐户5提供的最优惠的贷款项目。

(2)、智能合约的一致性。帐户2从帐户4和帐户5接受贷款项目后,合同状态自动更改为“已接受”。账户2通过贷款合同将账户4和账户5提供的资金锁定在自己的账户中。未接受帐户3的贷款项目的状态变为“已偿还”。与此同时,从账户3中扣除的资金在贷款合同执行期间返还。

基于智能合约的贷款系统的设计与实现

图10 账户2 贷款请求


基于智能合约的贷款系统的设计与实现

图11 账户3贷款信息


基于智能合约的贷款系统的设计与实现

图12 账户2 接收账户4和5借款



8 结论
本文提出了一种基于智能合同和区块链的贷款平台,将传统的贷款合同数字化,并将其部署到区块链环境中。它利用bb0的可执行性、分散性和不可篡改性,实现了用户之间绝对诚实的借贷行为。仿真结果证明了该方法的可行性,实现的基于合同的智能贷款系统不需要较高的设计开发成本。操作简单,页面简单,功能强大,运行稳定,具有很高的实用价值。

致谢
本文由南京大学软件工程系2016本科生徐光耀翻译转述。

添加新手交流群:币种分析、每日早晚盘分析

添加助理微信,一对一亲自指导:YoYo8abc

查看更多:

为您推荐