【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里?

这篇具有很好参考价值的文章主要介绍了【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

内容概要

粉丝反馈,他在opensea无gas免费创建的NFT资产,竟能出现在小狐狸钱包里,而opensea官方声明的此NFT在正式交易前是未上链铸造的,这就很奇怪,中心化应用的资产出现在为去中心化应用服务的钱包里,到底是官方代付gas上链还是乌龙,随我一文揭晓!

目录大纲

1. 背景简述

2. 破案历程

        2.1 小狐狸网络抓包

         2.2 链上的交易统计

        2.3 合约反编译分

3. 破案总结

面向对象

  • Web3新手,有无技术背景均可理解此文解密过程


背景简述

1.1 opensea 是什么?

全球最大的公链NFT交易平台,也是目前除以太坊链底层外营收最大的web3平台,下文简述为os

【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里?

 

1.2 NFT是什么?

    可见前文:【源码解读】你买的NFT到底是什么?

1.3 NFT铸造是什么?

      可见前文:当奈飞的NFT忘记了web2的业务安全

    大意是,只有在链上Mint后的才能认为是资产,且一般用户需要付gas

1.4 os的免费创造NFT服务是什么?

NFT上链成本高,标准ERC721mint需要8W的gas,约5刀

NFT定制合约难,虽有标准但顶级NFT项目会定制且部分强化功能,例如azuki(出品721A,降低批量mint成本)

【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里?

因此,易用性一直就是市场的痛点,毕竟艺术家不是合约工程师,需更低成本的试错来探索有价值的艺术品,官方也特别说明过(原文见附录)

在opensea.io上create的NFT,符合ERC1155标准,即使是它们存在于链上之前,这些 NFT 也可以在任何平台上出售,在交易时才上链铸造

破案历程

2.1 案例来源

某粉丝很惊奇发现,自己确实可以在os上按流程进行create,但按官方说法此时是未上链的,但是他尝试在小狐狸钱包里导入资产时发现, 竟然已经可见,甚至尝试导入一个自己未create的NFTID时也能导入成功,因此反馈我寻找技术维度的全貌解读

2.2 还原方式

1:os上 createNFT(附录有官方教程)得到合约地址与ID

2:小狐狸上开启NFT检测后,再手动添加收藏品,即出现Shared Storefront

【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里? 

2.3 调查不易

其实查询资产是否上链是个非常容易的过程,用区块链浏览器即可

见前文:当我们在看Etherscan的时候,到底在看什么?

但是由于此os的NFT共享商店的合约并没有做验证。所以无法直接看源码查数据

但使用未经开源以及安全审计的合约,着实让我这从事多年安全行业的职业强迫症有些难受

如果真存在风险,其危害是巨大的

    • 如果真未上链,小狐狸钱包去读取中心化平台数据?放在我的资产里?

    • 如果真上了链,用户无需gas,则可能官方付费上链,雷同羊毛有被攻击风险

    • 未上链的资产,如产生冲突风险,那此NFT属于谁的?

2.4 小狐狸app抓包

首先咱们通过对照实验做手机抓包,发现整体小狐狸会做的事情很多

拉取地址余额,交易,最新块内容,指定地址合约字节码等等

【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里? 

对数百个网络包逐个分析后,发现其小狐狸会使用infura(提供api接口同以太坊节点做交互的平台)的eth-call方法,功能是查询指定NFT合约中标准的balanceof方法

为何我如此肯定?此请求包里没有balanceof呀?

咱们用实验说话双向校验,标准的1155协议的标准函数名及参数为:


function balanceOf(address,uint256)

由于data构建指定函数调用,其生成Mothod-ID的原理是名字+参数类型组合,因此他构建的call方法,data字段的开头必然为00fdd58e 

我输 入的要添加资产是123号,其data参数末尾对应是7b=(7*16+11=123) 也对应上。

同时发现其缺乏防重放的措施,所以我可以直接编辑参数

重发请求查询其他NFT合约所有权来对比

  • azuki:721标准,无得到0,有则非0

  • 爱死机:1155标准,无得到0,有则得1

  • 查os共享商店,修改参数尾数(刚才的123)确实会得到值但意义不明

所以这里我得出的一大惊奇猜想是(是错误的):

链上可查得NFT所有权的值,难道真的上链了吗?

2.5 链上交易统计

如果真上链其实也可以不由用户支付gas,有种“元交易”的技术手法,就是交易发起方和gas支付者不同的形式,并且openzepplin里特地有个content 合约就是用于额外支持元交易产生的msg.sender 可能特殊化的问题

但是,我通过对此合约的链上交易数据统计(etherscan+dune),抽取23号一天出现的交易频率可见下图,都证明了好像并没有固定由官方发起的元交易类型交易

【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里?

 

2.6 破局得靠合约反编译

由于官方没有验证合约,导致分析起来费劲多了,但可通过合约反编译来大致摸清逻辑

如果只是openzepplin的标准1155库进行反编译的话,行数是170行

但是此1155则反编译后是1000行,因此必然有较多自定义实现

反编译后整体是吻合1155的数据标准


mapping (uint256 => [uint256]) _balanceOf;
mapping (uint256 => [uint256]) _setApprovalForAll; 
uint256[] _name; 
uint256[] _symbol;
mapping (uint256 => [uint256]) _totalSupply;

但是也显著有不是标准数据部分


mapping (uint256 => [uint256]) owner_a; 
mapping (uint256 => [uint256]) _creator;

由于链上数据读取返回了结果,所以重点分析balanceOf 函数,他整体实现用了30多行,这是很明显重写了原先的标准函数


//此为标准1155协议的balanceOf 函数实现,只是读取指定id和地址的数值而已
function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];}

由于os他依旧是沿用标准,所以他的两个参数是固定的可以理解为:

  • Varg0 = 待查询NFTid所有权的用户地址
  • varg1 = 待查询的NFTID 数字

从反编译程序里看逻辑,他会读取待查地址的_balanceOf总余额数,以及此NFTID是否被_creator等等


//此为反编译os合约的片段(太长不粘来,反编译网址在附录)
function balanceOf(address varg0, uint256 varg1) public payable { 
    require(msg.data.length - 4 >= 64);
    v0 = v1 = _balanceOf[varg0];
    if (address(_creator[varg1]) == 0) {
        v2 = v3 = address(varg1 >> 96) == varg0;
        if (address(varg1 >> 96) != varg0) {
            if (!(0xff & owner_a[varg0])) { 。。。

最关键的一句address(varg1 >> 96) != varg0

由于反编译不会完全按照solidity的语法,所以原本不支持的位移运算符就出现了

不讲复杂的,总之这里将varg1 (NFTID)的其中一部分,和varg0(用户地址)做比较

这也意味着,原来此NFT的ID包含了用户的地址

我顿然醒悟,写个进制转换,将我在os上create得到的NFTid传入,解密得出

【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里?

这个数值也和我在小狐狸抓包看到的data后半段内容是一致

这里还可以继续研读代码来挖掘细节

  • 比如balanceOf 返回结果为2个值,会审计编号是否会超出_totalSupply 限定发行量

  • 比如safeTransferFrom 专门设置_mint 防重放攻击,在其中若未mint则进行首次铸造

在解读出NFTID的组成后,我也顿时明白此合约的核心逻辑了

此ID由3部分构成,用户地址+系列编号+指定ID ,这也意味着无论我铸造多少次,前xx位都是固定的,即我的钱包地址转为10进制而已,而他查询的balanceof函数也因为我前缀统一,从而判别我是未铸造前的所有者,因此理论上我的铸造空间极其大。

因此小狐狸确实能导入,因为前缀一致,balanceof 在没有所有者的情况下,会默认依据此NFTID对应的空间的所有者返回结果,如果发生铸造转移,也有合约中配套的owner_a 和_creator 来证明这个创作者和当前所有者的关系。

至于为何小狐狸能出现NFT图,这点是他官方声明过的设置,出于读取更多维度的描述说明、稀有度、原图uri等信息,且用户可关闭这个钱包去查询os中心化数据库的功能。

【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里?

破案总结

  • 小狐狸是无辜的,他只是用标准方法走infura读取链上数据而已,并没有特别加工并修改返回数据

  • os不去验证合约,有一定自我市场竞争保护的目的,但是不能阻挡妙手玩家对合约分析,却给不少用户带来无法证明资产所有的困境

  • 最终,确实其NFT资产在交易转移前未被铸造上链,但由NFTID定义的空间已经被特殊设计可查得余额结果,所以理论上其他交易平台也可买卖此NFT

附录:

gas价格图:https://etherscan.io/gastracker

反编译平台:https://library.dedaub.com/decompile

metamask的NFT检测功能说明:

https://metamask.zendesk.com/hc/en-us/articles/360058238591-NFT-tokens-in-your-MetaMask-wallet

os共享商店合约地址:

0x495f947276749ce646f68ac8c248420045cb7b5e

OS官方声明:

【ERC-1155 NFT 会出现在我的钱包中吗?】

https://support.opensea.io/hc/en-us/articles/1500003082561-Will-ERC-1155-NFTs-appear-in-my-wallet-

【在 OpenSea 上免费创建 NFT指南】

https://opensea.io/blog/announcements/introducing-the-collection-manager/

写在最后:

前文回顾

【源码解读】你买的NFT到底是什么?

EIP-5058 能否防止NFT项目方提桶跑路?

当我们在看Etherscan的时候,到底在看什么?

当奈飞的NFT忘记了web2的业务安全

欢迎各位同学从后台提交有趣的合约或交易哈希。

关注十四,用技术的眼光发现价值。

看到这里,帅气的你不点个赞吗?文章来源地址https://www.toymoban.com/news/detail-445934.html

到了这里,关于【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JTeam Champion NFT】NFTMarket与OpenSea孰胜孰劣?

    当今DeFi和NFT两大市场获得了区块链行业的热捧,前者近期有降温趋势,后者则还处于蓄势待发的阶段。 这主要受限于NFT较窄的应用场景和受众范围,如果NFT能够像FT一样有相对丰富的应用场景和玩法,且其交易可以简单、易操作、易收益,那么NFT市场将很快走向大众化,从而

    2023年04月08日
    浏览(32)
  • 区块链 | OpenSea 相关论文:Toward Achieving Anonymous NFT Trading(二)

    🥑 原文: Toward Achieving Anonymous NFT Trading 🥑 吐槽: 这论文怎么老有描述不清、前后不一致的地方😇 在本节中,我们将具体展示我们方案的构建。我们将基于一个示例来描述我们方案的工作流程,该示例中的 Alice 是 NFT 的所有者,而 Bob 想要购买它。交易是通过采用我们提出

    2024年04月25日
    浏览(36)
  • 区块链 | OpenSea 相关论文:Toward Achieving Anonymous NFT Trading(一)

    ​ 🥑 原文: Toward Achieving Anonymous NFT Trading 🥑 写在前面: 本文对实体的介绍基于论文提出的方案,而非基于 OpenSea 实际采用的方案。 其实右图中的 Alice 也是用了代理的,不过作者没有画出来。 我们首先概述各方在所提方案中所扮演的角色,具体的构造细节将在后续进行详

    2024年04月27日
    浏览(34)
  • 【NFT开发】设计师无技术基础保姆级开发NFT教程在Opensea上全套开发一个NFT项目+构建Web3网站

    提示:本文全套教程为去中心化NFT项目与国内山寨数字藏品完全不同 提示:本教程仅供学习使用 很多网友私信无技术基础如何开发一个完整的NFT项目,今天给大家带来一个保姆级教程仅需复制代码即可不需要任何技术基础。 提示:以下是本篇文章正文内容,下面案例可供参

    2024年01月16日
    浏览(63)
  • 解密NFT区块链游戏和收藏品市场

    近年来,基于区块链技术的NFT(Non-Fungible Token, 即非同质化代币)市场正在悄然兴起。目前,全球众多企业和资本纷纷入局NFT,激发了NFT的市场活力。 近期,贝恩针对NFT区块链游戏和收藏品市场进行了深入研究,涵盖价值主张、发展历程、未来演变,并且为投资者如何布局优

    2024年02月08日
    浏览(44)
  • 解密区块链技术的新篇章:比特币铭文和Ordinal NFT

    随着区块链技术的不断发展,比特币作为最早的加密货币之一,一直处于行业的领先地位。 然而,随着NFT市场的崛起,比特币在这个领域的发展也变得越来越重要。最近, 比特币铭文 和 Ordinal NFT 的概念引起了人们的广泛关注。在本文中,我们将解密这些概念,探讨它们如何

    2024年02月03日
    浏览(48)
  • 免费嵌入 NFT 数据到任何网站或平台

    Nov. 2022, Vincy Data Source: Footprint Analytics - Bingo NFT Widget Footprint Analytics 是一个用于发掘和可视化整个区块链数据的工具,专注于解析 NFT 和 GameFi 等数据。它使用户能够拖放界面以及使用 SQL 或 Python 建立图表和仪表盘,而无需编写代码。 Footprint Analytics 在 9 月 23 日推出了 Widget

    2024年01月25日
    浏览(31)
  • AI写作助手:解密免费服务真相

    在目前的信息盛世,写作已成为了人们自我表达与传递知识的主要途径。然而,对许多人而言,这并非易如反掌。故此,寻求外力帮助者逐渐增多,而最受欢迎的工具之一便是AI生成文章服务平台。然则,诸多免费的AI生成文章服务平台中,那些靠谱的又有多少?借由本文,我

    2024年03月12日
    浏览(55)
  • HodlSoftware-免费在线PDF工具箱 加解密PDF 集成隐私保护功能

    HodlSoftware是一款免费在线PDF工具箱,集合编辑 PDF 的简单功能,可以对PDF进行加解密、优化压缩PDF、PDF 合并、PDF旋转、PDF页面移除和分割PDF等操作,而且工具集成隐私保护功能,文件只在浏览器本地完成,无需上传服务器,保障隐私。   地址:PDF Tool - HodlSoftware  

    2024年02月10日
    浏览(54)
  • 【免费题库】华为OD机试 - 密码解密(Java & JS & Python & C & C++)

    哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 给定一段“密文”字符串 s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。 映射的规则(‘a’ ~ ‘i’)分别用(‘1’ ~ ‘9’)表示;(‘j’ ~ ‘z’)分别

    2024年04月10日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包