码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Solidity】智能合约案例——②供应链金融合约


    目录

    一、合约源码分析:

    二、合约整体流程:

            1.部署合约:

            2.添加实体

            3.发送交易存证

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

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

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


    一、合约源码分析:

            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,第二种类型:公司与公司间转账。

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

  • 相关阅读:
    FFmpeg和SDL实现视频播放器之 ⌈音视频同步⌋
    Springboot毕设项目物品捎带系统41pudjava+VUE+Mybatis+Maven+Mysql+sprnig)
    【C++】运算符与表达式(学习笔记)
    【数据结构和算法】-贪心算法
    Mysql字段比较忽略尾部空格问题
    RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试
    B2B结算场景拆解|数商云B2B电商系统助力新能源汽车产业数字化转型
    JVM 对 Java 的 原 生 锁 做 了 哪 些 优 化 ?
    .NET Core多线 (5) 常见性能问题
    torch.meshgrid() 函数理解
  • 原文地址:https://blog.csdn.net/naihe_fish/article/details/133973317
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号