区块链应用设计与开发-任务七课后题答案_第1页
区块链应用设计与开发-任务七课后题答案_第2页
区块链应用设计与开发-任务七课后题答案_第3页
区块链应用设计与开发-任务七课后题答案_第4页
区块链应用设计与开发-任务七课后题答案_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务七课后题答案操作题1.跟随本任务完成货运追踪智能合约的开发并成功调用运行。//SPDX-License-Identifier:MITpragmasolidity^0.8.0;contractBuySell{structItem{uintItemId;stringname;uintamount;}structBuyer{uintBuyerId;addressBuyerAddress;boolisBuyer;uintOrderCount;//totalnumbeoforderplaced}structOrder{uintOrderId;uintBuyerId;uintItemId;uintamount;boolShipped;//canonlybechangedbysellerboolFinished;//canonlybechangedbybuyer}//moretodo://seperatefinishedandunfinishedorders//buyerscanplaceorderwithitemname//theaddressdeploysthecontractwillbethesellerconstructor(){Seller=msg.sender;}addresspublicSeller;//createlistofitems,buyers,abdordersItem[]privateitems;Buyer[]privatebuyers;Order[]privateorders;//sellercreateitemwithid,name,amountfunctioncreateItem(stringmemory_name,uint_quantity)public{//require(msg.sender==Seller,"OnlySellercanadditem.");items.push(Item(items.length,_name,_quantity));}//sellerregisteraaddressasbuyerfunctionregBuyer(address_address)public{require(msg.sender==Seller,"OnlySellercanaddbuyer.");buyers.push(Buyer(buyers.length,_address,true,0));}//showthelistofitems/buyers/ordersfunctiongetAllItems()publicviewreturns(Item[]memory){returnitems;}functiongetAllBuyers()publicviewreturns(Buyer[]memory){returnbuyers;}functiongetAllOrders()publicviewreturns(Order[]memory){returnorders;}functiongetOrderStatus(uint_id)publicviewreturns(Ordermemory){returnorders[_id];}//manageitemamountfunctionupdateItemQuantity(uint_id,uint_newQuantity)public{require(_id<items.length,"Itemdoesnotexist.");require(msg.sender==Seller,"OnlySellercanmanageitems");items[_id].amount=_newQuantity;}functionincreaseItemQuantity(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,"Quantitywouldbecomenegative.");items[_id].amount-=_decreaseBy;}//buyerorderspecificitemfunctioncreateOrder(uint_buyerId,uint_id,uint_quantity)public{require(_id<items.length,"Itemdoesnotexist.");require(_buyerId<buyers.length,"Userdoesnotexist.");require(msg.sender==buyers[_buyerId].BuyerAddress,"OnlyBuyercanplaceorder.");//decreaseItemQuantity(_id,_quantity);buyers[_buyerId].OrderCount+=1;orders.push(Order(orders.length,_buyerId,_id,_quantity,false,false));}//sellerchecktheorder,shiptheorderandmarktheorderasshippedfunctionshipOrder(uint_id)public{require(msg.sender==Seller,"OnlySellercanmodifyorders.");decreaseItemQuantity(orders[_id].ItemId,orders[_id].amount);orders[_id].Shipped=true;}//buyerrecievetheorder,marktheorderasfinished,tradefinishedfunctionrecieveOrder(uint_BuyerId,uint_OrderId)public{require(_BuyerId==orders[_OrderId].BuyerId,"Wronguser.");require(msg.sender==buyers[_BuyerId].BuyerAddress,"OnlyBuyercanfinishorder.");orders[_OrderId].Finished=true;}}2.对智能合约进行优化。//SPDX-License-Identifier:MITpragmasolidity^0.8.0;contractBuySell{//定义物品、买家和订单的结构体structItem{uintitemId;stringname;uintamount;}structBuyer{uintbuyerId;addressbuyerAddress;uintorderCount;//订单总数}structOrder{uintorderId;uintbuyerId;uintitemId;uintamount;boolshipped;//只能由卖家更改boolfinished;//只能由买家更改}addresspublicseller;//存储物品、买家和订单的数组Item[]privateitems;Buyer[]privatebuyers;Order[]privateorders;//映射检查地址是否注册为买家mapping(address=>bool)publicisBuyer;constructor(){seller=msg.sender;}//检查调用者是否为卖家的修饰符modifieronlySeller(){require(msg.sender==seller,"Onlysellercanperformthisaction.");_;}//检查调用者是否为注册买家的修饰符modifieronlyBuyer(uint_buyerId){require(isBuyer[msg.sender],"Onlyregisteredbuyerscanperformthisaction.");require(buyers[_buyerId].buyerAddress==msg.sender,"IncorrectbuyerID.");_;}//卖家创建新物品的函数functioncreateItem(stringmemory_name,uint_amount)publiconlySeller{items.push(Item(items.length,_name,_amount));}//卖家注册新买家的函数functionregisterBuyer(address_buyerAddress)publiconlySeller{require(!isBuyer[_buyerAddress],"Buyerisalreadyregistered.");buyers.push(Buyer(buyers.length,_buyerAddress,0));isBuyer[_buyerAddress]=true;}//获取所有物品列表的函数functiongetAllItems()publicviewreturns(Item[]memory){returnitems;}//获取所有买家列表的函数functiongetAllBuyers()publicviewreturns(Buyer[]memory){returnbuyers;}//获取所有订单列表的函数functiongetAllOrders()publicviewreturns(Order[]memory){returnorders;}//获取特定订单状态的函数functiongetOrderStatus(uint_orderId)publicviewreturns(Ordermemory){require(_orderId<orders.length,"Orderdoesnotexist.");returnorders[_orderId];}//卖家更新物品数量的函数functionupdateItemQuantity(uint_itemId,uint_newQuantity)publiconlySeller{require(_itemId<items.length,"Itemdoesnotexist.");items[_itemId].amount=_newQuantity;}//卖家增加物品数量的函数functionincreaseItemQuantity(uint_itemId,uint_increaseBy)publiconlySeller{require(_itemId<items.length,"Itemdoesnotexist.");items[_itemId].amount+=_increaseBy;}//卖家减少物品数量的函数functiondecreaseItemQuantity(uint_itemId,uint_decreaseBy)publiconlySeller{require(_itemId<items.length,"Itemdoesnotexist.");require(items[_itemId].amount>=_decreaseBy,"Quantitywouldbecomenegative.");items[_itemId].amount-=_decreaseBy;}//买家创建新订单的函数functioncreateOrder(uint_buyerId,uint_itemId,uint_amount)publiconlyBuyer(_buyerId){require(_itemId<items.length,"Itemdoesnotexist.");require(items[_itemId].amount>=_amount,"Insufficientitemquantity.");orders.push(Order(orders.length,_buyerId,_itemId,_amount,false,false));buyers[_buyerId].orderCount+=1;}//卖家发货的函数functionshipOrder(uint_orderId)publiconlySeller{require(_orderId<orders.length,"Orderdoesnotexist.");Orderstorageorder=orders[_orderId];require(!order.shipped,"Orderalreadyshipped.");decreaseItemQua

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论