版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《区块链应用设计与开发——基于FISCOBCOS》任务指导书
目录TOC\h\z\t"样式2,1"任务1了解区块链技术在航运货物追踪中的应用 3任务2了解FISCOBCOS区块链平台 5任务3搭建第一个区块链网络 8任务4Solidity编程基础 14任务5WeBASE搭建和使用 17任务6开发区块链应用 23任务7了解货运追踪区块链应用开发 32任务8区块链发展的展望 34
任务1了解区块链技术在航运货物追踪中的应用任务描述从区块链的基础概念和技术原理入手,了解区块链的分类,掌握区块链在不同行业的广泛应用,并熟悉区块链在航运中的特色应用。任务目标学习目标掌握区块链的概念掌握区块链技术原理了解区块链的应用技能目标能准确描述区块链的概念能理解区块链的技术原理能讲出区块链在航运中的应用思政目标培养学生独立思考的能力体会科学技术在现实中的应用,并培养学生的创新思维任务重难点任务重点区块链概念区块链技术原理区块链应用任务难点区块链在航运中的应用任务学时(建议学时)4学时任务内容什么是区块链?区块链技术,一种革命性的创新,以其独特的去中心化、不可篡改性和高度安全性在全球范围内引发了广泛关注。区块链不仅是一种数字账本技术,更是一个全球性的、去中心化的信任机器。它将现代密码学、网络通信技术和数据存储技术完美结合,实现了一种全新的数据组织和验证方式。区块链是一种块链式存储、不可篡改、安全可信的去中心化分布式账本,由一系列按照时间顺序排列的数据块组成。区块链的技术原理是什么?详细描述区块链的分类。区块链按公开程度可以分为三类,分别是公有链、联盟链和私有链。公有链:人人参与,公开度高联盟链:限定成员参与,公开度一般私有链:个人或团体内部参与,公开度低举例区块链在航运中的应用。区块链提单区块链提单本质上是数据电文,是运用区块链技术传递海上货物运输合同数据的一种电子运输记录。从技术角度来看,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合而成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的去中心化分布式账本。区块链技术可以用数学算法保证提单的单一性,并使提单在不同国家当事人之间自由流转,实现与纸质提单相同的功能。港口转型2022年9月28日,上港集团在上海举行“长江港航区块链综合服务平台”发布会,并与一众集装箱班轮公司、港航企业共同签署《“长江港航区块链综合服务平台”合作框架协议》。携手各方共同打造基于区块链的港航生态圈,进一步推动数字化智慧港口建设。任务实施写出区块链的概念写出区块链的技术原理写出区块链的分类讲出区块链在航运中的应用任务总结本次任务详细介绍了区块链的概念及技术原理,包括区块链去中心化、难以篡改、公开透明和集体维护等特点,以及区块链的分类。本次任务还介绍了区块链在不同行业的广泛应用,最后提到了区块链在航运中的特色应用。读者由本次任务入门,可以对区块链有全面系统地了解,能够为后面任务的把握奠定基础。
任务2了解FISCOBCOS区块链平台任务描述从认识FISCOBCOS区块链平台入手,首先让学生对FISCOBCOS区块链平台有一个初步了解,然后介绍FISCOBCOS区块链的架构模型以及FISCOBCOS的关键特性,使读者对FISCOBCOS区块链有直观的认知,掌握其相关理论知识,对FISCOBCOS所使用的社区工具做一个初识,为之后的平台搭建奠定基础。任务目标学习目标了解FISCOBCOS区块链平台掌握FISCOBCOS架构模型掌握FISCOBCOS关键特性掌握FISCOBCOS社区工具的使用技能目标能理解FISCOBCOS(金融级区块链开放平台)的基本概念能掌握FISCOBCOS的架构模型以及关键特性能掌握FISCOBCOS的应用前景能掌握FISCOBCOS社区工具的使用思政目标培养学生对于中国政府提出的“新基建”战略创新思维,挖掘潜力,坚定信念,树立信心。体会中国科技自立自强的成果和重要性。任务重难点任务重点FISCOBCOS架构模型任务难点FISCOBCOS架构模型FISCOBCOS关键特性任务学时(建议学时)4学时任务内容什么是区块链开放平台?FISCOBCOS(区块链开放平台),全称是FinancialBlockchainShenzhenConsortiumBlockchainOpenSource,它是由国内企业主导研发、对外开源、安全可控的企业级金融区块链底层平台,由中国金融区块链联盟(FISCO)开发和维护,并于2017年正式对外开源。开源六周年至今,FISCOBCOS开源社区在技术创新、应用产业以及开源生态均取得了非凡成绩。作为一个基于区块链技术的开源平台,其旨在为企业和组织提供安全、高效、可扩展的区块链解决方案。区块链开放平台的应用场景?供应链金融:FISCOBCOS可以实现供应链金融的去中心化管理,提高交易效率和透明度,减少信用风险。资产证券化:FISCOBCOS可以实现资产证券化的数字化管理和交易,提高资产流动性和可交易性。数字身份认证:FISCOBCOS可以提供安全可信的数字身份认证系统,确保个人和企业的身份信息不被篡改。区块链供应链管理:FISCOBCOS可以实现区块链供应链管理,提高供应链信息共享和追溯能力,减少信息不对称问题。绘制区块链开放平台的架构模型。详述FISCOBCOS的关键特性。FISCOBCOS作为一个开源的联盟链平台,具有以下关键特性:高性能和可扩展性FISCOBCOS采用异步BFT共识算法,实现了快速交易确认和高吞吐量。同时,平台还支持水平扩展,可以根据业务需求增加节点数量来提升系统性能。隐私保护FISCOBCOS注重隐私保护,支持多种隐私保护技术,如智能合约、多方机密计算和零知识证明等。这些技术可以在保证数据安全性的前提下,允许参与方进行必要的数据共享和验证。灵活性FISCOBCOS提供了灵活的共识机制,用户可以根据具体业务场景选择适合的共识算法,如异步BFT、PoW(ProofofWork)和PoS(ProofofStake)等。安全性FISCOBCOS采用了多层次的安全机制,保障区块链网络的安全运行。例如,FISCOBCOS采用了国密加密算法,确保交易和数据的安全性。此外,FISCOBCOS还提供了完善的权限管理和身份认证机制,通过数字证书和链上账户管理进行身份识别和授权。高可用FISCOBCOS设计为7×24h运行,通过简化建链过程、适应多种环境的部署方式、全局配置更新达到金融级高可用性。目前,已有超过60个基于FISCOBCOS的落地项目在生产环境中稳定运行。易用性FISCOBCOS提供了完善的开发工具包(SDK)、文档和技术支持,降低区块链应用的开发门槛,便于开发者快速上手和部署应用。治理机制FISCOBCOS内置了成员管理、权限控制、共识机制等治理功能,支持复杂的联盟链网络架构和管理模式。例如,如果一个企业需要在联盟链网络中进行多方协作和交互,FISCOBCOS可以提供多级节点管理体系和权限控制机制,确保节点的访问和行为符合规范和安全要求。任务实施写出区块链开放平台的概念写出区块链开放平台的应用场景绘制区块链开放平台的架构模型详述FISCOBCOS的关键特性任务总结本次任务从认识FISCOBCOS区块链平台入手,首先对FISCOBCOS区块链平台有一个初步了解,然后介绍了FISCOBCOS区块链的架构模型以及FISCOBCOS的关键特性。读者由本次任务入门,对FISCOBCOS区块链有直观的认知,掌握其相关理论知识,能够独立绘制区块链开放平台的架构模型,对FISCOBCOS所使用的社区工具做一个初识,为之后的平台搭建奠定基础。
任务3搭建第一个区块链网络任务描述从搭建航运物流的区块链平台入手,首先让学生对FISCOBCOS区块链平台有一个初步了解,然后介绍如何在局域网中搭建FISCOBCOS区块链环境。任务目标学习目标1)了解FISCOBCOS区块链平台2)掌握搭建FISCOBCOS之前所需的基础环境,即Ubuntu虚拟机3)掌握在Ubuntu中安装FISCOBCOS区块链的方法技能目标1)能完成基础环境Ubuntu虚拟机的搭建2)能理解FISCOBCOS(金融级区块链底层平台)的基本概念3)能完成FISCOBCOS多群组的部署,能完成控制台发送交易思政目标1)培养学生创新思维,挖掘潜力,坚定信念,树立信心2)体会中国科技自立自强的成果和重要性任务重难点任务重点1)Ubuntu虚拟机基础环境搭建2)FISCOBCOS多群组的部署3)启动FISCOBCOS的控制台任务难点Ubuntu虚拟机基础环境的搭建和FISCOBCOS多群组的部署任务学时(建议学时)10学时任务内容基础环境搭建FISCOBCOS区块链的各组件均采用操作系统部署。因此基础环境为Linux操作系统。FISCOBCOS区块链是跨平台的,支持Linux和macOS等操作系统。为了更接近生产网络,选择使用Ubuntu虚拟机安装FISCOBCOS区块链。1)安装VMware虚拟机2)安装Ubuntu搭建多群组FISCOBCOS联盟链FISCOBCOS是明确的多链设计,并且其设计指导中也建议按照业务分开不同的链,还可以为了扩容再按照机构数量进行分组,这种多链设计理论上可以无限扩大。采用多链之后,其节点操作、跨链操作都是基于网络地址,通过路由规则实现的,可以执行跨链读写。设计上建议同一个区块链网络里的多个分组在业务逻辑和配置尽可能高度一致,在商业规则、运营管理上都使用统一策略。1)星形拓扑与并行多组2)安装ubuntu依赖#Ubuntu$sudoaptinstall-yopensslcurl3)使用build_chain.sh开发部署工具控制台配置及启动5)控制台发送交易任务总结本次任务介绍了搭建FISCOBCOS区块链环境的方法,包括安装VMware虚拟机及Ubuntu操作系统等基础环境,以及下载FISCOBCOS区块链的源代码并将其安装在Ubuntu操作系统上的完整过程。本次任务还介绍了搭建多群组FISCOBCOS区块链的管理工具console控制台及部署工具buildchain.sh用以管理和配置FISCOBCOS区块链的各个组件。本次任务最后介绍了启动控制台并向各群组发送交易的命令。
任务4Solidity编程基础任务描述本任务旨在引导学生了解并掌握Solidity编程语言的基础知识与应用技能,为学生在区块链领域开发智能合约打下坚实的基础。Solidity是一门面向对象的、高级的、可编译的编程语言,被广泛用于编写智能合约,是FISCOBCOS平台和Ethereum等区块链平台的官方或支持语言之一。通过本任务的学习,学生将能够理解Solidity语言的基本语法,熟练使用在线编译器Remix,以及使用Solidity开发简单的智能合约。任务目标学习目标了解Solidity语言的基本概念和特点。掌握Solidity的基本语法,包括变量声明、数据类型、运算符、条件语句、循环语句等。理解智能合约的概念和结构,能够识别智能合约中的主要组成部分。技能目标能熟练使用在线编译器Remix进行Solidity程序的编写、编译和部署。能理解并运用Solidity中的事件、函数修改器、继承、接口等高级特性。能使用Solidity开发简单的智能合约,包括状态变量的定义、函数的编写、合约的部署与调用等。思政目标培养学生良好的计算机思维模式及逻辑思维能力,提升学生解决实际问题的能力。培养学生严谨、细致的工作作风,树立正确的科学观及大国工匠精神。增强学生对区块链技术的认识和理解,激发学生对区块链领域的兴趣和热情。任务重难点任务重点Solidity语言的基本语法和常用语句。智能合约的结构和主要组成部分。使用Remix进行Solidity程序的编写、编译和部署。任务难点理解并运用Solidity中的事件、函数修改器、继承、接口等高级特性。开发具有实际功能的智能合约,包括状态变量的合理设计、函数的正确实现等。任务学时(建议学时)8-12学时(包含理论授课、实践操作)任务内容Solidity语言基础介绍Solidity语言的概念、特点和应用领域。Solidity语言的基本语法规则。智能合约基础智能合约的概念和结构。智能合约的主要组成部分和作用。Solidity编程实践使用Remix在线编译器进行Solidity程序的编写、编译和部署。编写简单的智能合约,包括状态变量的定义、函数的编写等。测试和调试智能合约,确保合约的正确性和安全性。高级特性应用学习并运用Solidity中的事件、函数修改器、继承、接口等高级特性。开发具有实际功能的智能合约,如代币合约、众筹合约等。任务实施环境搭建:在虚拟机VMware上安装Ubuntu操作系统。在Ubuntu中访问RemixIDE,进行Solidity开发环境准备。理论学习:学习Solidity语言基础,包括数据类型、运算符、控制语句等。理解智能合约的基本概念,如状态变量、函数、事件等。实践操作:使用RemixIDE编写简单的Solidity智能合约,如计数器合约、代币合约等。编译并部署智能合约,通过测试验证合约功能。进行智能合约的调试,修复潜在错误。总结与反思:对本次任务的学习过程和成果进行总结。反思在智能合约开发过程中遇到的问题及解决方法。任务总结通过本任务的学习和实践,学生将能够全面理解和掌握Solidity编程语言的基础知识与应用技能,为在区块链领域开发智能合约打下坚实的基础。同时,通过编写和部署智能合约的实践操作,学生将能够锻炼自己的逻辑思维能力和解决实际问题的能力,提升自己的专业技能和综合素质。此外,本任务还将培养学生的团队合作精神和创新能力,为学生未来的职业发展打下坚实的基础。
任务5WeBASE搭建和使用任务描述从搭建区块链中间件平台WeBASE入手,首先让学生对WeBASE平台有一个初步了解,然后介绍如何在虚拟机中搭建WeBASE平台。任务目标1.学习目标1)了解WeBASE中间件平台2)掌握搭建WeBASE中间件平台的方法3)了解WeBASE的节点前置、节点管理,和Web管理平台等子系统2.技能目标1)能理解WeBASE中间件平台的作用2)能完成WeBASE中间件平台的快速部署3)能成功运行服务并访问前端。3.思政目标1)引导学生对知识拓延,发现并解决实际问题,培养创新精神。2)体会精益求精的工匠精神与良好的职业道德。任务重难点任务重点1)WeBASE中间件平台的快速部署2)使用浏览器访问前端任务难点WeBASE中间件平台的快速部署任务学时(建议学时)8学时任务内容环境准备WeBASE(WeBankBlockchainApplicationSoftwareExtension)是一个屏蔽区块链底层复杂度、功能丰富的区块链中间件平台。通过围绕交易、合约、密钥管理,数据,可视化管理等任务在区块链应用和FISCO-BCOS节点之间设计的一套通用组件模块。通过一系列通用功能组件和实用工具,助力开发者快速搭建区块链应用的基础环境,并提供可视化合约IDE和一站式联盟链管理台。1)部署原则2)检查安装依赖服务搭建获取安装包2)解压安装包unzipwebase-front.zipcdwebase-front拷贝SDK证书文件cp-rnodes/${ip}/sdk/*./conf/4.WeBASE部署WeBASE一键部署5.可视化IDE平台通过如下命令进行访问,第一次登陆区块链浏览器的可视化界面如下图5-13所示,表示启动成功。http://localhost:5002/WeBASE-FrontWeBASE一键部署另一种搭建-子系统Webase-front任务总结本次任务介绍了WeBASE中间件平台的作用,以及使用该平台的重要性。本次任务还介绍了快速搭建WeBASE中间件平台的方法,以及服务搭建后状态的检查方式。最后还介绍了如何在浏览器中可视化WeBASE管理平台。
任务6开发区块链应用任务描述FISCOBCOS提供了脚本和JavaSDK用以创建账户。用户可以根据需求选择将账户存储为PEM或者PKCS12格式的文件。其中,PEM格式使用明文存储私钥,而PKCS12使用用户提供的口令加密存储私钥。任务目标学习目标深入理解FISCOBCOS平台中账户创建的重要性及原理。掌握使用FISCOBCOS提供的脚本创建账户的方法。学会利用FISCOBCOSJavaSDK在Java环境中创建和管理账户。技能目标技能掌握:熟悉区块链中的公私钥体系,理解账户地址的生成原理。实践应用:能够运用FISCOBCOS提供的脚本生成PEM或PKCS12格式的私钥文件,并计算对应的账户地址。编程能力:在Java环境中,利用FISCOBCOSJavaSDK编写代码,实现账户的创建、私钥的存储和账户地址的获取。思政目标培养安全意识:强调账户私钥的安全性和重要性,引导学生理解在区块链世界中保护个人信息安全的重要性。强化法治观念:通过学习区块链中的账户创建和管理,理解区块链技术在法律框架下的合规应用。激发创新精神:鼓励学生在掌握基本技能的基础上,探索FISCOBCOS平台的其他功能,培养创新思维和实践能力。任务重难点任务重点理解FISCOBCOS平台中账户创建的原理和流程。掌握使用FISCOBCOS提供的脚本创建账户的方法,并能生成PEM或PKCS12格式的私钥文件。学会在Java环境中利用FISCOBCOSJavaSDK编写代码,实现账户的创建和管理。任务难点理解区块链中的公私钥体系和账户地址的生成原理,这需要一定的密码学知识和数学基础。在使用FISCOBCOS提供的脚本时,需要正确设置参数,以生成所需的私钥文件和账户地址。在Java环境中利用FISCOBCOSJavaSDK编写代码时,需要熟悉Java编程语言和SDK的API接口,同时还需要理解区块链技术的相关概念和应用场景。任务学时(建议学时)8学时任务内容编写HelloWorld智能合约打开Ubuntu终端,使用如下命令启动各节点:bash/root/fisco/nodes//start_all.sh执行结果如图-6-13:图1启动节点进入WeBase主目录使用如下命令启动WeBase-Front:bashstart.sh执行结果如图6-14所示:图2启动WeBase-Front启动后打开浏览器,输入网址http://localhost:5002/WeBASE-Front访问WeBase-Front。如图6-15所示图3启动浏览器选择左侧菜单栏合约管理选择合约IDE,新建一个Solidity合约文件,并命名为HelloWorld.sol在文件中编写如图6-16所示代码:1.pragmasolidity^0.6.0;2.
3./**4.*HelloWorld智能合约5.*/6.contractHelloWorld{7.//合约变量8.stringpublicmessage;9./**10.*构造函数11.*/12.constructor(){13.//初始化合约变量14.message="Hello,World!";15.}16./**17.*设置合约变量值18.*19.*@paramnewMessage新的合约变量值20.*/21.functionset(stringmemorynewMessage)public{22.//设置合约变量值23.message=newMessage;24.}25./**26.*获取合约变量值27.*28.*@return合约变量值29.*/30.functionget()publicviewreturns(stringmemory){31.//返回合约变量值32.returnmessage;33.}图4HelloWorld.Sol合约中包含两个函数:set和get。set函数用于设置合约变量message的值。get函数用于获取合约变量message的值。2.创建测试用户WeBASE提供了一键创建测试用户的功能,方便开发者快速测试合约和应用。本小节将使用WeBase创建用户用于对HelloWorld的测试。选择左侧菜单栏中选择合约管理选择测试用户,如图6-17所示。WeBase-Front为开发人员提供两新建、导入种创建测试人员的方法,如图6-18所示。选择新建方法,如图6-19所示。点击新建,输入测试用户名后即可在当前页面查看到测试用户的公钥、地址等信息,如图6-20所示。图5选择测试用户图6创建测试用户图7查看用户信息3部署&调用HelloWorld智能合约回到合约IDE,点击“编译”按钮,编译合约,如图-所示。图8编译然后点击“部署”按钮,选择已经创建的测试用户,部署合约,如图6-21所示。图9部署最后,点击“调用合约“,如图6-22所示。选择方法get(),即可收到交易回执信息“HelloWorld”。如图6-23所示图10合约调用图11交易回执接下来重新调用合约,选择方法set(),在参数一栏输入想要传入的信息,如图6-24所示。图12重新调用若收到如下交易回执信息,则表示执行成功,如图6-25、图6-26所示。图13回执1图14回执2任务实施启动FISCOBCOS区块链。使用脚本创建一个PKCS12格式私钥。部署并调用HelloWorld智能合约。任务总结本次任务详细阐述了账户的基本概念,包括如何创建及有效使用账户,并深入讲解了通过脚本创建多种格式私钥的实用方法。随后,进一步介绍了账户使用命令的规范以及账户地址的计算方式,旨在为读者提供全面而系统的账户操作指南。此外,本章节还重点介绍了在WeBase平台上的开发、部署及调用流程与方法,通过以HelloWorld智能合约为例,详细展示了在WeBase平台上的实际操作流程,为读者提供了宝贵的实践经验。
任务7了解货运追踪区块链应用开发一、任务描述随着全球贸易的日益繁荣,货运追踪的准确性和实时性成为供应链管理中的重要一环。区块链技术以其去中心化、不可篡改和透明可追溯的特性,为货运追踪提供了新的解决方案。本任务旨在通过开发一个基于FISCOBCOS的货运追踪区块链应用,深入理解区块链技术在货运追踪领域的应用,并提升实际操作能力。在当前的供应链环境中,传统的货运追踪系统存在信息不透明、易篡改、中心化依赖等问题。区块链技术以其独特的优势,能够确保数据的真实性和完整性,提高供应链的透明度和可信度。因此,开发一个基于区块链的货运追踪应用具有重要的现实意义和应用价值。本任务将从区块链的基础概念和技术原理入手,详细分析区块链在货运追踪中的应用场景和优势。通过使用FISCOBCOS平台和Solidity编程语言,我们将开发一个货运追踪区块链应用,实现商品的注册、订单管理、发货确认等功能。同时,我们将关注应用的性能优化和安全性保障,确保其在实际业务场景中的稳定性和可靠性。二、任务目标学习目标了解区块链的基本概念和技术原理。掌握区块链在不同行业中的应用案例。习区块链在货运追踪系统中的应用。技能目标熟练使用RemixIDE进行智能合约的编写、调试和部署。掌握Solidity编程语言的基本语法和功能。了解区块链技术在供应链管理中的具体应用。具备开发和部署区块链货运追踪应用的能力。思政目标通过区块链技术学习,理解其在提高供应链透明度和可信度方面的重要性。强化在技术开发中诚信与安全的意识。三、任务重难点任务重点区块链技术在货运追踪中的优势和应用场景。使用RemixIDE开发和部署货运追踪智能合约的流程。任务难点智能合约的编写和调试。货运追踪应用逻辑的实现和优化。四、任务学时(建议学时)10学时任务内容货运追踪系统需求分析提高货运信息的透明度和可信度降低货运成本提高货运安全满足监管要求促进供应链协作满足消费者需求使用RemixIDE开发货运追踪区块链应用介绍RemixIDE的主要功能,网站界面和基本操作,并且开始搭建一个简单的货运追踪区块链应用。图表SEQ图表\*ARABIC1:RemixIDE主界面图表SEQ图表\*ARABIC2:RemixIDE提供的代码编辑器和命令执行窗口图表SEQ图表\*ARABIC3:RemixIDE提供的Solidity智能合约编译器界面图表SEQ图表\*ARABIC4:RemixIDE提供的调试器界面图表SEQ图表\*ARABIC5:RemixIDE提供的智能合约部署和执行界面在RemixIDE中创建工作空间和智能合约文件图表SEQ图表\*ARABIC6:新建基础工作空间使用struct创建对象为了卖家可以方便管理库存,订单和买家,可以在智能合约中创建三个struct类来集 成货物,订单和买家的信息。structItem{uintItemId;stringname;uintamount;}structBuyer{uintBuyerId;addressBuyerAddress;boolisBuyer;uintOrderCount;}structOrder{uintOrderId;uintBuyerId;uintItemId;uintamount;boolShipped;boolFinished;建立对象列表,使用constructor函数初始化合约Item[]privateitems;Buyer[]privatebuyers;Order[]privateorders;添加货物,注册买家,创建订单时,将自动把新注册的货物,买家和订单添加到对应 list的最后。addresspublicSeller;constructor(){Seller=msg.sender;}其中msg.sender代表部署该合约的账号的地址。添加函数使用function创建函数,将函数命名为createItem,并要求调用者输入货物名称_name和库存数量_quantity。在大括号中编写:functioncreateItem(stringmemory_name,uint_quantity)public{require(msg.sender==Seller,"OnlySellercanadditem.");items.push(Item(items.length,_name,_quantity));}本智能合约中买家的struct结构和货物的struct结构类似,编写的函数如下:functionregBuyer(address_address)public{require(msg.sender==Seller,"OnlySellercanaddbuyer.");buyers.push(Buyer(buyers.length,_address,true,0));}三个函数increaseItemQuantity,decreaseItemQuantity和updateItemQuantityfunctionincreaseItemQuantity(uint_id,uint_increaseBy)public{require(msg.sender==Seller,"OnlySellercanmanageitems");require(_id<items.length,"Itemdoesnotexist.");items[_id].amount+=_increaseBy;}functiondecreaseItemQuantity(uint_id,uint_decreaseBy)public{require(msg.sender==Seller,"OnlySellercanmanageitems");require(_id<items.length,"Itemdoesnotexist.");require(items[_id].amount>=_decreaseBy,"Quantitywouldbecome negative.");items[_id].amount-=_decreaseBy;}functionupdateItemQuantity(uint_id,uint_newQuantity)public{require(_id<items.length,"Itemdoesnotexist.");require(msg.sender==Seller,"OnlySellercanmanageitems");items[_id].amount=_newQuantity;}查询函数,使用Solidity编写智能合约时,可直接使用return函数输出整个列表。因此,可直接利用return函数实现对货物库存functiongetAllItems()publicviewreturns(Item[]memory){returnitems;}functiongetAllBuyers()publicviewreturns(Buyer[]memory){returnbuyers;}functiongetAllOrders()publicviewreturns(Order[]memory){returnorders;}也可以通过在调用函数时输入想要查询的订单编号使函数返回列表中指定位置的某一个元素,来实现查询指定订单的状态:functiongetOrderStatus(uint_id)publicviewreturns(Ordermemory){returnorders[_id];}订单函数与发货函数函数将创建对应的订单struct并且更新买家的资料(买家struct下的订单总数):functioncreateOrder(uint_buyerId,uint_id,uint_quantity)public{require(_id<items.length,"Itemdoesnotexist.");require(_buyerId<buyers.length,"Userdoesnotexist.");require(msg.sender==buyers[_buyerId].BuyerAddress,"OnlyBuyercanplaceorder.");buyers[_buyerId].OrderCount+=1;orders.push(Order(orders.length,_buyerId,_id,_quantity,false,false));}当订单被创建后,卖家将可以通过查询函数确认订单需求并且发货。本任务仅模拟卖家已经完成发货并在区块链货运追踪应用中将指定订单标记成已发货(shipped)状态。以下函数将被调用:functionshipOrder(uint_OrderId)public{require(msg.sender==Seller,"OnlySellercanmodifyorders.");decreaseItemQuantity(orders[_OrderId].ItemId,orders[_OrderId].amount);orders[_OrderId].Shipped=true;}收货函数当买家收到货物之后,可以调用确认收货函数来将订单标记为已完成:functionrecieveOrder(uint_BuyerId,uint_OrderId)public{require(_BuyerId==orders[_OrderId].BuyerId,"Wronguser.");require(orders[_OrderId].Shipped==true,"Ordernotshippedyet.");require(msg.sender==buyers[_BuyerId].BuyerAddress,"OnlyBuyercanfinishorder.");orders[_OrderId].Finished=true;}货运追踪区块链应用的使用设置编译器,任务的智能合约代码对Solidity编译器的要求为0.8.0以上图表SEQ图表\*ARABIC8:选择符合要求的编译器版本部署智能合约图表SEQ图表\*ARABIC9:编译.sol文件图表SEQ图表\*ARABIC10:编译成功
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年下学期山东省济宁市2026届高三数学4月高考模拟考试(济宁二模)试卷(含答案)
- 2026年奶茶原料供应框架合同
- 2026 五年级下册《体育竞赛组织常识》课件
- 2026年实验考试生物试题及答案
- 开锁证件查验制度
- 2026年委托代理购销合同(1篇)
- 2026年送煤碳合同(1篇)
- 2026年润滑油代销合同(1篇)
- 巡察整改落实情况公开制度
- 肱骨外科颈骨折的三角巾悬吊
- 公安联控申请书(参考式样版)
- 金山文档课件
- 2026年防爆电气设备事故案例分析
- 高一数学下册解三角形专项卷(人教版考点)
- 儿童康复辅具评估协议2025年服务
- 共病患者控制目标个体化设定
- 宫颈癌康复期的社会支持与资源链接
- 雨课堂学堂云在线《人类与生态文明(云南大学 )》单元测试考核答案
- 子宫内膜容受的治疗方案
- 机械设备出厂质量检验报告模板
- 合作不出资的合同范本
评论
0/150
提交评论