当前位置: 首页 > news >正文

自己做的网站绑定域名wordpress 仪表盘 500

自己做的网站绑定域名,wordpress 仪表盘 500,一二三年级手工折纸,微网站怎样做文章目录 Solidity选择使用 require 语句还是条件语句结合手动触发 revert 操作?场景举例:回滚交易和抛出异常如何选择? Solidity选择使用 require 语句还是条件语句结合手动触发 revert 操作? IERC721 nft IERC721(nftAddress)…

文章目录

  • Solidity选择使用 require 语句还是条件语句结合手动触发 revert 操作?
    • 场景举例:回滚交易和抛出异常如何选择?

Solidity选择使用 require 语句还是条件语句结合手动触发 revert 操作?

IERC721 nft = IERC721(nftAddress);  // 声明IERC721接口合约变量
if (nft.getApproved(tokenId) != address(this)) {revert NotApprovedForMarketplace();
}
IERC721 _nft = IERC721(_nftAddr); // 声明IERC721接口合约变量
require(_nft.getApproved(_tokenId) == address(this), "Need Approval"); // 合约得到授权

require 语句:

  1. 简洁明了:require 语句提供了一种简单直观的方式来检查条件,并在条件不满足时自动触发回滚,同时提供清晰的错误信息。
  2. 自动回滚:当条件不满足时,require 语句会自动触发交易回滚,避免进一步执行并浪费 gas。
  3. 错误信息:require 语句允许你提供自定义的错误信息,使得代码更易于理解和调试。

条件语句结合手动触发 revert 操作:

  1. 灵活性:手动触发 revert 操作可以让你更灵活地处理异常情况,例如可以调用自定义的错误处理函数或者执行其他特定的操作。
  2. 自定义错误处理:你可以根据项目需求,自行定义错误处理逻辑,例如记录日志、触发事件等。

总结: 希望代码简洁明了,并且希望在条件不满足时自动触发回滚,并且提供清晰的错误信息,那么使用 require 语句是一个不错的选择。但如果你需要更灵活地处理异常情况,并且希望自定义错误处理逻辑,那么使用条件语句结合手动触发 revert 操作可能更适合你。

场景举例:回滚交易和抛出异常如何选择?

NFT交易所中,判断购买价格是否大于挂单价格。

if (msg.value < listedItem.price) {revert PriceNotMet(nftAddress, tokenId, listedItem.price);}

买家发送的以太币是否足够支付 NFT 的价格,并且如果不足以支付价格,则会回滚交易

require(msg.value >= _order.price, "Increase price"); // 购买价格大于标价

检查买家发送的以太币是否足够支付 NFT 的价格,并且如果不足以支付价格,则会抛出一个异常。

在 Solidity 中,回滚交易和抛出异常是两种处理错误的方式:

  • 回滚交易 (revert):
    revert 语句会立即终止当前的函数执行,并回滚所有的状态更改。它会将所有的 gas 消耗掉,但是不会产生额外的 gas 费用。回滚交易是一种常见的处理错误的方式,因为它可以确保在错误发生时状态不会被更改。

  • 抛出异常 (require):
    require 语句会在条件不满足时抛出异常,导致当前的函数执行终止。它会消耗少量的 gas,但是会在以太坊区块链上留下记录,因此在某些情况下可能会略微增加 gas 费用。

在你的场景中,如果买家支付的价格不足以购买 NFT,你想要的是立即停止交易,确保买家不会支付不正确的价格,并且不会产生任何额外的费用。这种情况下,使用 revert 是更合适的选择,因为它会立即终止当前的函数执行,并回滚所有的状态更改,确保买家不会支付不正确的价格。

在你的 buyItem 函数中,你可以使用 revert 来处理价格不足的情况。例如:

function buyItem(uint256 itemId) public payable {uint256 itemPrice = getItemPrice(itemId);require(msg.value >= itemPrice, "Insufficient funds");// 执行购买逻辑// 如果执行购买逻辑失败,回滚交易if (购买逻辑失败) {revert("Failed to buy item");}
}

这样,如果买家支付的金额不足以购买 NFT,会立即停止交易,并且回滚所有状态更改,确保买家不会支付不正确的价格。

http://www.yayakq.cn/news/562291/

相关文章:

  • 北京旅游网站建设校园社交网站开发的目的与意义
  • 仿租号网站源码网站开发免费创建论坛网站
  • asp动态链接生成网站地图化妆品公司网站模板
  • 网站建设费用属于业务宣传费吗大连网站建设领超最好
  • 公司在网站做广告怎么做分录wordpress 白色主题
  • 广州站八个字高端企业网站建设公司
  • 专业优定软件网站建设自动跳转导航入口
  • 做的网站必须备案免费制作网站net域名
  • python如何调用wordpress优化百度搜索
  • 网站 兼容性html网站建设
  • 政务公开和网站建设工作问题安徽省建设厅官方网站
  • 做网站用笔记本做服务器在线观看成年片
  • 仿商城版淘宝客网站源码泰安企业网站建设电话
  • 短视频网站开发网站建设7个主要流程
  • 男的女的做那个的视频网站免费咨询律师要收费
  • 用ps设计一个个人网站模板广州建设局网站首页
  • 锚文本外链查询网站做网站要求什么软件
  • 做酒店网站多少钱企业宣传册版式设计
  • 青岛网站设计公司联系方式合肥学习做网站
  • 一般网站用什么软件做威县做网站哪儿好
  • dedecms网站关键字在哪个表精通网站建设需要学什么
  • 大连做网站的公司有哪些微商货源网什么什么网站建设
  • 值得抓取的网站windows2008网站
  • 强的网站建设公司排名个人网站赚钱
  • 网站横幅背景图建设银行公积金网站提示udun
  • 网络推广好做吗?遵义seo快速排名
  • phpcms网站seo怎么做邢台招聘网
  • asp网站安装教程wordpress 调用画廊
  • 成都谁做捕鱼网站wordpress鼠标指针
  • iis怎么给网站设置权限手机网站活动策划方案