长虹启思实验室:制造业生产协同及质量溯源方案

2020-08-11 13:10 栏目:经验之谈 来源:网络整理 查看()

在最近的许多竞赛中,社区中出现了许多高质量的区块链应用方案,这使每个人都看到了技术本身的强大生命力,并反映了区块链帮助工业发展的无限潜力。

应社区开发者的要求,《超话区块链》将邀请获奖的设计团队分享和展示他们的计划,希望能给大家的日常发展提供一些启示。

本期邀请四川长虹思齐实验室与大家分享《基于智能合约的生产协同及质量溯源方案》。该项目也是BSN第二届开发商竞赛的获奖项目。

为什么选择生产协作和质量可追溯的场景?

我们的工作(以下简称“我们”均指思齐实验室团队)是基于制造数据的信息化,通过区块链技术在企业内部建立一个可信的、契约化的信息流,然后利用多层次的链打开制造企业的供应链和下游产品的数据信息管理,建立多个节点,实现制造企业的规则和契约的执行以及数据的可信管理,从而达到降低成本、提高效益的效果。

说到这个,很多朋友可能会奇怪我们为什么选择这个场景来插播。

首先,思齐实验室(由四川长虹电气股份有限公司信息安全实验室区块链课题组成员组成)专注于区块链技术的应用研究,并与区块链主流基础技术提供商合作,提供基于区块链的智能家居和工业互联网解决方案。

与此同时,在整个工业互联网和5G的发展推动下,传统制造能力在很大程度上面临着迭代升级。该团队一直专注于制造业,努力寻找突破点,并利用区块链技术帮助这一波制造业升级。

其次,在传统制造业中,当产品出现质量问题时,往往会面临材料和零部件质量无法追溯、难以追究责任的困难。具体的难点如下图所示:图中的A公司是一个产品公司和一个销售公司;b公司是a公司产品的受托生产商;供应商c、供应商d和供应商e是a公司指定的材料供应商。

长虹启思实验室:制造业生产协同及质量溯源方案

经过分析和研究,我们整理出传统制造业的几个主要需求:

要求1:生产计划和物料匹配的自动化

b公司根据a公司的订单和现有的成品库存分析差异后制定生产计划。根据产品的生产数量计算所需材料。物料仓库的库存从生产物料中取出后,所需物料的数量直接反馈给供应商,并提前付款。

要求2:材料供应商及时响应材料标识缠绕

供应商c、供应商d和供应商e接收材料需求订单,并准备交货和入库。同时,供应商c、供应商d和供应商e的物料与唯一标识符匹配,信息被上传。

要求3:财务信誉清算

根据订单发放、物料采购、物流配送和订单配送的协议,建立财务自动清算机制。

需求4:售后质量可追溯性

售后服务、可信的责任确认和质量可追溯性是基于材料的独特标识,以实现及时响应。

关于底层选择的几点思考

了解需求后,下一步是技术实现。在底部选择中,团队建筑师康宏娟主要考虑以下几点:

实际操作性好。区块链应用层与实际业务密切相关,尤其是在合同层。重新开发和部署业务合同将不可避免地导致重复调试。因此,来自底层的全面支持对于项目的成功非常重要。

完整的服务层功能组件。用户层和链层之间的交互必须通过中间服务层进行移植,并且这些移植的模块是通用的。除了链层的基本功能之外,服务层公共组件的完整性也非常重要。

友好的开源氛围。对于技术极客来说,最大的快乐是开源。

经过了解和评估,团队最终选择了FISCOBCOS作为底层,麦

综上所述,我们从实际业务需求出发,结合区块链技术的优势,构建了包括“基础层、核心层、服务层和用户层”在内的四个关键层,涵盖了核心数据库、业务合同、数据分析、消息分析、用户管理、业务管理等功能,构建了工业互联网领域基于订单的生产协作垂直解决方案。

在本文中,我们将重点放在共享智能合同方案上,如下图所示。该计划包括产品合同、结算合同、生产合同、库存合同和授权合同,下面将逐一介绍。

长虹启思实验室:制造业生产协同及质量溯源方案

产品合同

本合同用于在生产过程中完成产品注册、产品所有权变更和产品追溯。

步骤如下:

完成相关合同的关系设置;

合同管理员授权一些地址成为产品制造商;

产品制造商调用updateProductPrice来设置产品价格;

在客户需要向制造商下产品生产订单之前,他会将价格与getProductPrice进行比较,然后通过付款合同向制造商下产品生产订单;

制造商通过付款合同获得订单后,生产产品;

在生产产品之前,制造商将通过材料合同检查他们的原材料储备是否充足,如果充足,他们将消耗原材料进行产品生产登记和产品卷绕登记;

当产品制造商交货时,客户确认收到货物,确认订单,并完成资本和产品所有权的变更。

//制造商msg.sender更新其自己的productType产品的价格

函数UpdateProductPrice(ui nt 256 ProductType,uint256 newPrice)公共

//获取制造商_to的产品类型的价格

函数getProductPrice(address _to,uint256 productType)公共视图返回(uint256 price)

//设置供应商的原材料合同

函数set material contract(address _ material contract)仅公共所有者

//设置付款合同

函数set payment contract(address _ payment contract)仅公共所有者

//产品制造商设置自己产品的批号、标识、材料批次等信息

函数register ProducT(ui nt 256 ProducT TYPe,uint256 id,uint256 batchNumber,uint256[]内存材料批次)公共

//改变产品所有权并交付产品

函数transferProducts(地址from,地址to,uint256 productType,uint256计数)公共

//获取产品详细信息

功能详细信息(uint256 id)公共视图返回(产品内存)

//获取msg.sender拥有的产品数组

函数GetMyProducts(ui nt 256 ProductType)公共视图返回(uint256[]内存myProductIDs)

//获取某个产品的原材料使用了哪些产品

函数跟踪(uint256 materialBatchNum)公共视图返回(uint256[]内存id)

结算合同

负责用户资产,具体步骤如下:

余额和预付款队列;

产品所有权变更过程中的自动结算(手工确认);

如果资金不足,则无法进行库存和仓储等操作;

充值/直接消费/预付款、余额查询等相关功能。

生产合同

自有库存生产数量和自有产品队列,以及原材料批次队列:

获取待生产订单,判断原材料库存是否满足需求,如果不满足,则通过结算合同将生产订单提前到库存合同;

通过计算原材料队列,生成外部唯一标识符,并将原材料的批次信息写入产品中进行生产(外部)和入库(称为产品合同的生成条目)。维护库存生产数量和自有产品队列;

发出(外部调用产品合同的产品所有权变更条目),维护该合同的生产数量和自有产品队列库存合同的自有产品队列,并通过结算合同进行结算。

库存合同

负责上游制造商的库存:

通过调用生产库存编号为制造商B准备货物,计算现有零件的数量,并将外部调用的零件入库(填写批次、数量和其他信息);

出库(外部调用),将零件信息的批次信息写入制造商B,维护自己的数据队列,完成后自动调用结算合同进行结算。

补充:由于零件不同于产品,多个零件只能对应于某个批次,不需要单独的零件合同来维护零件。

授权合同

通过不同的权限级别,对各种合同中的函数施加访问限制,并同意各种合同之间的角色和授予调用权限。例如,普通用户无权向供应商下订单,供应商不能向普通用户提供成品。

//说明是否有角色权限

函数hasRole(字节32角色,地址帐户)公共视图返回(bool)

//获取具有角色权限的成员数量

函数getRoleMemberCount(字节32角色)公共视图返回(uint256)

//根据角色和索引获取成员

函数getRoleMember(字节32角色,uint256索引)公共视图返回(地址)

//获取角色角色的经理

函数getRoleAdmin(字节32角色)公共视图返回(字节32)

//向帐户授予角色权限

函数授予角色(字节32角色,地址帐户)公共虚拟

//删除帐户的角色权限

函数revokeRole(字节32角色,地址帐户)公共虚拟

//帐户放弃其拥有的角色权限

函数revokeRole(字节32角色,地址帐户)公共虚拟

智能合同解决方案

在整个智能合同开发过程中,最重要的是理清整个生产过程。首先,我们整理需求,然后开发一个可用的可靠语言版本,然后为相关调用构建一个简单的restful服务器,完成每个接口的测试,并拥有一套完整的演示过程。最后,我们进行相关开发以完成合同的复制。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发