访问【WRITE-BUG数字空间】_[内附完整源码和文档]
一、项目背景
1.1 供应链+金融场景
供应链(Supply Chain)是指生产及流通过程中,涉及将产品或服务提供给最终用户活动的上游与下游企业所形成的网链结构。 金融机构对不同企业的的信用评级不同,核心企业有很大的风险承担的能力,故信用评级会高于一般企业。在供应链场景中,核心企业由于资金暂时短缺向下流普通公司签订了应收账款单据,约定某个时间后还款,这个过程可以由金融机构来作见证,从而确认这笔交易的真实性。在这段时间内,若掌握核心企业"欠条"的普通企业资金短缺需要融资,它可以凭借跟核心企业签订的应收账款单据向金融结构借款,但这样的信任关系并不会往下游传递。 这种不信任关系一直沿着下游的普通企业传播,需要金融机构不断往上验证真实性,导致这个过程增加很多经济成本。导致这个问题的根本原因是核心企业的信用无法在整个供应链中传递以及交易信息不透明化所导致的。 如果我们结合区块链技术,将供应链上的每一笔交易和应收账款单据上链,同时引入第三方可信机构来确认这些信息的交易,例如银行,物流公司等,确保交易和单据的真实性,同时支持应收账款的转让,融资,清算等,就可以让核心企业的信用可以传递到供应链的下游企业,减小中小企业的融资难度。 本项目针对这样一个应用场景,基于已有的开源区块链系统FISCO-BCOS,以联盟链为主,开发基于区块链或区块链智能合约的供应链金融平台, 实现供应链应收账款资产的溯源、流转。
1.2 功能需求分析
- 基本功能:
- 核心企业、普通企业、金融企业的注册。
- 通过账户查询余额、查询收款单据和欠款单据和查看历史交易记录。
- 核心功能:
实现采购商品—签发应收账款交易上链。例如车企从轮胎公司购买一批轮胎并签订应收账款单据。
实现应收账款的转让上链,轮胎公司从轮毂公司购买一笔轮毂,便将于车企的应收账款单据部分转让给轮毂公司。轮毂公司可以利用这个新的单据去融资或者要求车企到期时归还钱款。
利用应收账款向银行融资上链,供应链上所有可以利用应收账款单据向银行申请融资。
应收账款支付结算上链,应收账款单据到期时核心企业向下游企业支付相应的欠款。
二、方案设计
2.1 存储设计
- 企业账户的数据结构
struct Company{ string companyName; // 企业名称 int balance; // 账户余额 int companyType; // 企业类型 bool isRegistered; // 验证企业是否存在}
- 企业类型由一个整形表示:分别对应金融机构、核心企业和下游普通企业。
- 在智能合约中,我们以企业账户的地址作为键值,用一个哈希表保存企业,这样就可以直接通过地址访问企业的数据。
mapping(address => Company) private companyMap;
- 债权凭证的数据结构
struct Receipt { address from; // 发起方地址 address to; // 接收方地址 int amount; // 债权凭证金额 bool isSettled; // 账单状态: 已结算 / 待结算 }
- 我们使用一个列表来保存所有的债权凭证
Receipt[] private receiptList;