以汽车金融为例,当我们在做区块链的时候,我们在做什么?长话短说,我们正在建立一个链条。什么是区块链关于区块链是什么,网上有很多解释。在这里,我从共同需求的角度总结一下:当做记录(身份证明)时,是分布式账本(分布式数据库);在交易或支付(跨境支付)时,它是一个信任机器。这两种分类方法虽然不是正交的,但对理解区块链的应用领域大有裨益。无论是分布式账本还是信任机器,其底层特性——不可篡改、透明、可追溯、去中心化——都只有一个终极目标,那就是信任。区块链的可信度来自于人类对数理逻辑严谨性的信任。数学理论和密码学实践可以保证链上数据和所有权的可靠性。区块确认是基于共识算法,不可变数据结构,然后通过MerkleTree,HashPointer(哈希指针)保证前向区块链的完整性,加上经济,人心博弈,理性经济的假设man,他们共同构成了一个完整的信任体系。但企业间的联盟链存在一定差异,其信任更多依赖赞助商品牌的背书。在这样的大环境下,联盟链的设计变得相当灵活,比如只有token会减半。区块链的行业应用在工信部发布的《2018 年中国区块链产业白皮书》中,区块链行业生态分为行业应用(包括金融和实体领域)、基础设施和平台(如公链和BaaS)、行业服务(如媒体)。我们的重点是工业应用。由于金融领域的数字化程度比较高,在证券化、ABS交易等方面都有案例。在实体行业,供应链溯源、身份证存储等也被广泛应用。此外,区块链本身具有“信任穿透”的神奇功效,对于构建供应链金融信用体系、改善小微企业融资难的问题也很有帮助。总的来说,区块链技术几乎可以应用于各种行业场景,因为这些场景都有提高效率、降低成本、优化征信体系的诉求。汽车金融区块链应用1.汽车金融汽车金融的核心资产是汽车。汽车金融始终围绕汽车的生命周期进行。从零配件的生产,到主机厂制造整车,再通过各地的销售公司将整车销售给各地的经销商。事实上,在中国,经销商也可以分为不同级别的二线和三线经销商,最终的产品只到达客户手中。新车一经售出,就进入了售后市场的广阔天地,还有二手车、二手车的转卖。从汽车零部件的生产、运输、组装,到把车卖给经销商,这些环节涉及的金融活动称为供应链金融,客户通过金融活动购买汽车,无论是新车还是二手车,都属于到消费金融。类别。汽车的生命周期和金融公司的参与:他们的商业模式是这样的:通过分析行业现有的商业模式,我们发现财务对账成本高、效率低。这里的财务成本不是某个公司的财务成本,而是整个系统的总财务成本。仅在中国,可能就有许多销售公司和财务公司,以及数百家经销商。就算每家公司只有两个财务和审计师,财务审计师也有千余人,更别提全球销售了。.什么是和解的传统方法?不同类型的机构在进行对账时,往往需要从信息系统中导出电子表格,通过电子邮件发送。甚至需要打印表格,盖章邮寄,对方收到后与系统数据进行比对。整个业务流程并不复杂,但耗费了大量的人力物力,而且由于授权机制(多主体之间信任度较低或称为弱信任)和信息安全的考虑,中心化服务也导致建设成本高.,制约了业务运营效率和用户体验的提升。区块链作为一种分布式账本,意味着任何机构之间的债务交易信息都与数据保持一致,然后可以近乎实时地对账。而我们要用区块链做的事情,一句话,就是把汽车的资产记录在链上,以及围绕汽车的金融活动产生的债务。所以不难发现分布式账本和信任机器都涉及到这个场景。2.如何建链我们将建链过程大致概括为五个步骤:上行数据识别、智能合约设计、API设计、部署单元和网络拓扑。识别链上数据是指识别链上记录了哪些交易;智能合约设计是指买卖汽车以及相关的金融活动如何以可编程的方式自动完成;API设计考虑如何对外暴露平台能力,同时限制控制主体;部署单元和网络部署架构属于实现范围,旨在回答分布式账本如何在企业中真正运行。整体技术架构基于分布式账本技术Corda。Corda准确的说不是区块链,而是受区块链启发的DLT,即分布式账本技术。由金融区块链联盟R3开发维护。(1)链上数据的识别需要分析清楚的问题是汽车是在什么时候转移的,汽车是在哪一方之间转移的,汽车在转移过程中伴随着哪些数据变化。在分析这个业务的时候,我们通过事件风暴分析了各个法人参与主体之间汽车转让的业务事件,然后对事件进行了排序,通过事件分析了数据,包括交易参与者和汽车明细。汽车的所有权和拥有权、债务等这部分数据有一定的取舍。比如订单不属于我们的核心资产,所以不上传到链上。我们开始数据建模。在此之前,有必要先介绍一下Corda的编程模型——State,因为它会直接影响到我们后续的模型设计。Corda的核心概念之一是状态。状态是分布式账本上的事实,代表交易参与者达成共识的结果。以借条为例,State其实就是借条的关键属性的集合,包括借款人、欠款人、金额、还款期限。当欠款被部分偿还后,欠条的内容就会发生变化。更改的方法是将旧的借条标记为历史的,然后生成新内容的借条。在我们的应用场景中,核心状态是汽车和债务,因为Corda运行在JVM上,而开发语言是Kotlin,所以这里我们直接使用Kotlin中的数据类对汽车和债务进行建模,统一继承Corda构建-inLinearState,具有全局唯一ID,在数据演化过程中不会发生变化。如果有人理解DDD相关的概念,它应该会自动映射到实体概念。此外,Corda中还有一个核心State,叫做FungiableAsset,可以类比为价值对象,比如Cash。建模完成后状态应该如何演化?这就需要UTXO的概念了。UTXO的全称是unspenttransactionoutput。它首先由比特币网络引入。它有很多优点,例如能够追踪每个输出的来源,帮助验证是否存在双花现象,Corda也继承了类似的好处。销售公司将汽车批发给经销商时,会将自己拥有的汽车作为交易的输入,产生输出,包括所有权的改变和债务的产生。用作输入的汽车将被标记为历史。交易本身也必须获得交易双方的签名。(2)智能合约设计上面我们谈到了链上数据和数据演化过程,但这些过程并不是自动执行的。对于复杂的金融合约,往往涉及到各种状态的变化。这时候就需要用一个自动化的流程来封装这些变化。封装这些变化的东西其实就是一个智能合约。仍然以经销商批发汽车为例,一个可能的合同模板是约定汽车过户时会产生债务,以及相应的还款期限。当本合约强制状态改变时,交易双方必须参与签名。在进入智能合约实现之前,需要先了解一下Corda中的流和合约的概念。Flow是Corda中控制参与节点如何更新State的一个自动化流程,它封装了如何获取交易对方的签名。一个标准的流程包括获取链上数据,创建交易,自签名后发送给交易对方进行交易验证,再次签名,最后在双方账本上提交交易。Contract是交易验证环节中用于验证的脚本。在我们的应用场景中,智能合约是这样的。流程中,先从链上取出原车的数据,复制得到一辆过户的新车和相应的债务;然后通过txBuilder建立交易,交易的输入是原车,输出是新车和债务;关键是验证签名和交易提交的过程。你可能已经注意到txBuilder中有一个firstNotary参数。这是公证人的概念。Notary是corda中一种特殊类型的节点,专门用于防止资产双花。所以理论上每笔交易都需要公证节点参与并签署交易。在交易验证环节,我们定义的合约会被执行。这个合约非常简单,简单到只有一个叫做verify的纯函数。它的作用是断言每个状态的更新是否满足要求。这种设计非常符合TrustButVerify的理念。(3)API设计有了智能合约之后,我们就要考虑如何对外暴露平台的合约能力。也就是说,站在消费者的角度,我们应该如何利用平台提供的能力来完成我们的业务。所以这里我们采用RESTapi的设计思想,将平台的能力抽象为资源,定义以车为中心的URI,然后选择合适的HTTP动词,获取RESTapi。从数据上链识别,到智能合约设计,再到API设计,我们在不同层面都使用了Corda这种分布式账本技术。顶层分布式账本记录每一笔交易的事实,不可篡改,可追溯;中间的智能合约层提供合约抽象,甚至可以对应现实中的合约;该方法体现了平台的金融活动能力。(4)部署单元这样的汽车金融平台是如何运行的?在Docker的帮助下,我们将一个物理部署单元打包成一个镜像。底层是功能齐全的Corda节点。所有的智能合约和状态都存储在jar包中部署在这个节点上;同时使用SpringBoot通过RPC连接Corda节点,调用智能合约,对外暴露RESTAPI;Corda节点通过消息相互通信。(5)网络拓扑打包成docker镜像后,可以部署在运行环境中,形成分布式账本P2P网络。这里有两个节点需要注意。最左边的权限服务用于给每个网络接入节点颁发证书,给每个参与实体一个身份。中间的Networkmap类似于微服务中的服务发现。Corda中节点的相互发现并不是通过广播来实现的,而是通过注册Networkmap来获取其他节点的信息,然后相互发现。回过头来看***,让我们回顾一下上面的三层架构,从价值的角度重新评估整个平台。传统平台通过API暴露服务获取价值输入,但区块链平台的核心资产其实都在顶层账本中。基于这些交易事实和债务或支付记录,我们可以轻松清算各种法人的数字资产,计算实时债务信息,追溯车辆价值。未来,结合大数据分析和人工智能,更有可能打造一个完整的系统。供应链生态。【本文为专栏作家《ThoughtWorks》原创稿件,微信公众号:Thinkworker,转载请联系原作者】点此查看该作者更多好文
