本文我们重点分享个中的智能合约方案,方案如下图。这个方案里包罗了产物合约、结算合约、出产合约、备货合约和授权合约,下面将对这几个合约逐一展开先容。
在近期浩瀚大赛中,社区涌现出很多优质的应用方案,这些方案让各人看到技能自己的发达活力,也折射了区块链助力财富成长的无限潜力。 颠末阐明和研究,我们梳理了传统制造业中的几大需求:
function hasRole(bytes32 role, address account) public view returns (bool)
· 社区活泼度高,应用场景富厚,对付开拓者的技能支持响应实时。
· 出产合约
· 备货合约
// address是否有role权限
智能合约办理方案
· product出产商挪用updateProductPrice对产物价值举办设定;
· 资金假如不敷,不能举办诸如备货,入库等的操纵;
应社区开拓者要求,《超话区块链》将连续邀请获奖的设计团队与各人分享、展示他们的方案,但愿可以给各人日常开拓提供一些启迪。
拥有库存出产个数和已拥有产物行列, 和原质料批次行列:
· 出库(外部挪用),将零件信息的批次信息写入到厂家B, 并维护自身数据行列,完成后自动挪用结算合约举办结算。
我们(下文“我们”均指启思尝试室团队)的作品是在出产制造数据信息化的基本上,通过区块链技能,在企业内部成立可信的、合约化信息流,再用多级链买通制造企业供给链和产物下游的数据信息打点,成立多个节点,实现制造企业法则合约执行与数据可信打点,从而到达低落本钱、晋升效益的结果。
· 获取待出产订单,判定原料库存是否满意需求,不满意则通过结算合约向备货合约预付款下出产订单;
function getRoleMemberCount(bytes32 role) public view returns (uint256)
售后基于物料独一标识的可信责任确权和质量溯源,做到实时响应。
· 出产商通过payment合约获取到订单后,举办产物出产;
· customer需要向出产商下产物出产订单前会先getProductPrice来比对价值的坎坷,,然后通过payment合约向出产商下产物出产订单;
// 获取role权限的成员数
认真对上游厂商举办备货:
// 获取role脚色的打点者
function getMyProducts(uint256 productType) public view returns(uint256[] memory myProductIDs)
function registerProduct(uint256 productType, uint256 id, uint256 batchNumber, uint256[] memory materialBatches) public
function setPaymentContract(address _paymentContract) public onlyOwner
function details(uint256 id) public view returns(Product memory)
function getProductPrice(address _to, uint256 productType) public view returns(uint256 price)
// 获取产物详情
需求2:物料供给商实时响应物料标识上链
function trace(uint256 materialBatchNum) public view returns(uint256[] memory ids)
// 配置付出合约
智能合约办理方案
供给商C、供给商D、供给商E收到物料需求订单,筹备发货入库。同时供给商C、供给商D、供给商E的物料匹配独一标识,信息上链。
· FISCO BCOS是安详可控的国产开源同盟链,能很好满意、贴合海内企业的利用需求;
// account放弃持有的role权限
需求1:出产打算和物料匹配自动化
// 获取某种产物的原质料用于哪些产物了
· 完善的处事层成果组件。用户层与链层的交互,必需颠末中间处事层的“嫁接”,而这些“嫁接模块”具备通用性,除了根基的链层成果外,处事层通用组件的完备也至关重要。
本合约用于完成产物出产进程中产物注册及产物所有权改观、产物溯源。
其次,在传统制造业中,当产物呈现质量问题时,往往谋面对物料零部件质量无法溯源、难以追责的难点。详细痛点如下图所示:图中A公司为产物公司和销售公司;B公司为A公司产物的委托出产方;供给商C、供给商D和供给商E为A公司的指定物料供给商。
· 产物合约
· 在出产产物前,出产商会通过Material合约来查抄本身的产物原料储蓄是否富裕,假如富裕就耗损原料举办产物的出产注册registerProduct上链;
· 余额与预付款行列;
// 获取msg.sender所拥有的产物数组
为什么选择出产协同及质量溯源场景?
整个智能合约开拓进程中,最主要其实是对整个出产流程的梳理。首先我们先举办了需求梳理,然后针对solidity语言开拓出一个可用的版本,在此基本上对相关挪用成立一个简朴的restful处事器,完成对各个接口的测试,有一套完整的可演示流程,最后举办相关开拓完成对合约的复现。
· 通过计较原质料行列,外部独一标识生成,将原质料的批次信息写入产物举办出产(外部)、入库(挪用产物合约的生成进口)。对库存出产个数和已拥有产物行罗列办维护;
需求4:售后质量溯源
在订单下发、物料采购、物流运送、订单交货等环节成立财政自动按约定清算的机制。
// 获取厂商 _to的productType的价值
通过差异的权限品级,对各个合约中的函数举办会见限制,各类合约间脚色的约定及挪用权限。好比普通用户没有权限去向供货商下订单,而供货商也不行能向普通用户提供出产完成的商品。
· 友好的开源气氛。对付技能极客而言,最大的快乐就是开源。
function revokeRole(bytes32 role, address account) public virtual
步调如下:
· 授权合约
· 通过挪用出产备货数对厂家B举办备货,计较已有零件数,外部挪用零件入库(填入批次,数量等信息);
· 产物所有权变革(手动确认)进程中的自动结算;
// 移除account的role权限
function getRoleMember(bytes32 role, uint256 index) public view returns (address)
相识需求后,下一步就是技能实现,在底层选型上,团队架构师康红娟主要从以下几点举办考量:
同时,在整个家产互联网和5G成长驱动下,传统制造本领面对一次较洪流平的迭代进级,团队留意力一直会合在出产制造,力图从中找到打破点,操作区块链技能助力这一波出产制造进级。
首先,启思尝试室(由四川长虹电器股份有限公司信息安详尝试室的区块链研究小组的成员构成)自己就专注于区块链技能应用研究,且与主流区块链基本技能提供方相助,提供基于区块链的伶俐家庭和家产互联网办理方案。
// 厂商msg.sender更新本身productType产物的价值
· 完成对相关合约的干系配置;
除此之外,FISCO BCOS还具备版本迭代实时、机能强劲、处事中间件富厚等优势。
function transferProducts(address from, address to, uint256 productType, uint256 count) public
说到这,许多伴侣大概会好奇,我们为什么选择这个场景切入?
通过相识评估,团队最终选择了FISCO BCOS作为底层,主要是两方面的原因:
// 产物出产商配置本身产物的批次号,ID,所用质料批次等信息
function getRoleAdmin(bytes32 role) public view returns (bytes32)
认真用户资产,详细步调如下:
// 向某个account授予role权限
· 精采的实际可操纵性。层与实际业务贴合细密,尤其是在合约层,从头开拓陈设业务型合约一定会带来重复调试。因此,底层的完备支持,对付项目乐成很是重要。
底层选型的几点考量
· 产物出产商举办交付,customer确认收到货物,确认订单,完成资金及产物所有权的改观。
增补:因为零件不像产物一物一码,多个零件只对应到某个批次就可以,不需要单独的零件合约对零件举办维护。
// 配置供给商的原质料合约
· 结算合约
function updateProductPrice(uint256 productType, uint256 newPrice) public
需求3:财政可信清算
本期邀请到四川长虹启思尝试室与各人分享《基于智能合约的出产协同及质量溯源方案》,这套方案也是BSN第二次开拓者大赛获奖项目。
· 合约的admin向某些address授权成为product出产商;
function setMaterialContract(address _materialContract) public onlyOwner
// 改换产物所有权,交付产物
function grantRole(bytes32 role, address account) public virtual
综上所述,我们从实际业务需求出发,团结区块链技能优势,构建“基本层、焦点层、处事层、用户层”等四个要害层级,包围焦点数据库、业务型合约、数据理会、动静理会、用户打点、业务打点等成果,构建家产互联网规模的订单式出产协同垂直办理方案。
· 充值/直接消费/预付款, 余额查询等相关成果。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。