Solidity案例详解(七)供应链金融合约

本文详细介绍了使用Solidity编写的供应链金融合约,包括Ownable.sol的权限控制和SupplyChain.sol的功能模块,如添加实体、交易存证流程以及合约的整体执行逻辑。通过实例展示了银行、公司间的交易存证过程,强调了合约的透明性和安全性。
摘要由CSDN通过智能技术生成

一、合约源码分析

Ownable.sol: 权限控制合约,功能为:管理合约的所有者,合约所有者转移

SupplyChain.sol: 供应链金融主合约,功能为:添加银行,添加公司,银行向公司交易,公司与公司交易,公司与银行交易,查询公司信息,查询银行信息,查询存证信息

二、合约整体流程

1.部署合约:

部署此合约需要添加一个合约所有者,即监管者,监管者负责对银行,公司等实体的添加。

合约全方法:

2.添加实体

添加银行,这里的credit为银行的存款总额,建议设为整数,方便后续查询。

添加公司,这里添加两个公司,便于测试后面的公司之间的交易接口。

注意:添加银行和公司的操作必须由监管者完成,这也是合约中监管者职能的体现

添加实体后,我们便可以通过合约中的getCompany、getBank等方法对公司/银行的信息进行查询。

3.发送交易存证

①银行向公司交易(公司向银行提供交易存证)

 交易存证即公司确认收到了这笔钱,发送了交易存证,故公司为发送方(senderAddress),银行为接收方(accepterAddress)。receiptType:为存证索引(1-存证、2-现金)。必须只能接受人创建此交易,也就是接受人承认这笔交易存在。

此时调用方法查询相关交易存证以及银行和公司目前的财务情况。

这张图需要解释一下:在对于银行的查询中,我们看到返回了一个字符串,一个地址,一个数字,两个数组,分别对应:银行名字、银行地址、银行账户余额,而两个数组一个为空,一个为1,这里的1不是receiptType,而是这笔交易的一个索引值,我们可以通过getReceipt查询这笔交易,因此,交易的索引出现在了银行的第一个数组内,数组的名称为:acceptReceiptIndex即为银行接受的交易,那么在getReceipt查询返回的两个数字中,哪个是receiptType呢?我们接着往下走。

②公司向银行交易(银行向公司提供交易存证)

我们以百度在线网络技术有限公司向农业银行发起交易为例。

在这次交易中,我们将两个地址的位置调换,实现公司向银行交易。

此时进行查询,一切都明了了,getReceipt的查询返回的两个数字第一个为receiptType,而另一个为交易类型,对应了第3种交易类型:transferType: 交易类型,1: 银行转账给公司,2: 公司与公司间转账,3: 公司转账给银行

③公司向公司交易(接收存证的公司需要给发送存证的公司提供交易存证)

我们以百度在线网络技术有限公司向上海哔哩哔哩科技有限公司发起交易为例。

此时对两个公司,以及交易索引3查询。

百度在线网络技术有限公司的资金确实减少了,多了一笔索引为3的交易,查询后我们得知,公司之间的receiptType值为2,属于现金交易,而第二个2即为上文所提到的transferType,第二种类型:公司与公司间转账。

至此,合约的流程完毕,该合约提供了一个透明、高效、安全的供应链金融解决方案,可以帮助企业和金融机构更加灵活地管理资产。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。     

原文链接:

https://blog.csdn.net/naihe_fish/article/details/133973317

文章原标题:《【Solidity】智能合约案例——②供应链金融合约》

旨在传播区块链相关技术,如有侵权请与我们联系删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值