内容概要粉丝反馈,他在opensea无gas免费创建的NFT资产,竟能出现在小狐狸钱包里,而opensea官方声明的此NFT在正式交易前是未上链铸造的,这就很奇怪,中心化应用的资产出现在为去中心化应用服务的钱包里,到底是官方代付gas上链还是乌龙,随我一文揭晓!目录大纲
1.背景简述2.破案历程2.1小狐狸网络抓包2.2链上的交易统计2.3合约反编译分析3.破案总结面向对象Web3新手,有无技术背景均可理解此文解密过程背景简述
1.1opensea是什么?
全球最大的公链NFT交易平台,也是目前除以太坊链底层外营收最大的web3平台,下文简述为os
1.2NFT是什么?
可见前文:你买的NFT到底是什么?1.3NFT铸造是什么?
可见前文:当奈飞的NFT忘记了web2的业务安全大意是,只有在链上Mint后的才能认为是资产,且一般用户需要付gas1.4os的免费创造NFT服务是什么?
NFT上链成本高,标准ERC721的mint需要8W的gas,约5刀NFT定制合约难,虽有标准但顶级NFT项目会定制且部分强化功能,例如azuki
区块链金融科技公司Figure已撤回银行牌照申请:8月1日消息,区块链金融科技公司Figure已于7月31日撤回向货币监理署提出的国家银行牌照申请,其于2020年提交了该申请。Figure发言人表示,其将组织重点放在与成熟银行合作伙伴一起发展的其他领域。
金色财经此前消息,Figure于本周裁员90人,约占其员工总数的20%,今年2月Figure放弃通过SPAC上市,原本计划融资1亿美元;去年Figure曾有望融资3亿美元,但之后因市场遇冷而下调了融资目标。[2023/8/2 16:13:15]
因此,易用性一直就是市场的痛点,毕竟艺术家不是合约工程师,需更低成本的试错来探索有价值的艺术品,官方也特别说明过在opensea.io上create的NFT,符合ERC1155标准,即使是它们存在于链上之前,这些NFT也可以在任何平台上出售,在交易时才上链铸造破案历程
2.1案例来源
某粉丝很惊奇发现,自己确实可以在os上按流程进行create,但按官方说法此时是未上链的,但是他尝试在小狐狸钱包里导入资产时发现,竟然已经可见,甚至尝试导入一个自己未create的NFTID时也能导入成功,因此反馈我寻找技术维度的全貌解读2.2还原方式
数据:PEPE 永续合约资金利率仍为负,空头头寸占主导地位:5月4日消息,据加密衍生品数据分析平台 Laevitas 数据,Meme coin PEPE 自推出后短短两周内市值飙升至超过 5 亿美元,但其与代币挂钩的永续合约的资金利率仍然为负,表明永续合约市场中空头头寸占主导地位,大多数投资者预计价格会下跌。[2023/5/4 14:42:48]
1:os上createNFT得到合约地址与ID2:小狐狸上开启NFT检测后,再手动添加收藏品,即出现SharedStorefront
2.3调查不易
其实查询资产是否上链是个非常容易的过程,用区块链浏览器即可见前文:当我们在看Etherscan的时候,到底在看什么?但是由于此os的NFT共享商店的合约并没有做验证。所以无法直接看源码查数据但使用未经开源以及安全审计的合约,着实让我这从事多年安全行业的职业强迫症有些难受如果真存在风险,其危害是巨大的如果真未上链,小狐狸钱包去读取中心化平台数据?放在我的资产里?如果真上了链,用户无需gas,则可能官方付费上链,雷同羊毛有被攻击风险未上链的资产,如产生冲突风险,那此NFT属于谁的?2.4小狐狸app抓包
期权交易平台Aevo主网正式上线,将首先支持用户交易ETH期权:4月7日消息,期权交易平台 Aevo 主网正式上线,允许用户使用主网 USDC 和真实结算进行交易。用户将首先能够在期权链上交易 ETH 期权,支持每日、每周、每月与每季度结算的期权。
Aevo Exchange 建立在 Aevo Chain 之上,用户能够直接从 Exchange 用户界面将资金转入 Aevo Chain。目前,Aevo 目前只支持 USDC 跨链。由于处于早期阶段,Aevo 将通过 PASS(一种授予用户在平台上进行交易的 NFT)向有限的用户发放邀请,并已向现有的 Ribbon 用户、参与 Aevo 的测试计划、合作伙伴或 Ribbon VIP 的各个钱包空投约 4000 枚 PASS。[2023/4/8 13:50:59]
首先咱们通过对照实验做手机抓包,发现整体小狐狸会做的事情很多拉取地址余额,交易,最新块内容,指定地址合约字节码等等
对数百个网络包逐个分析后,发现其小狐狸会使用infura的eth-call方法,功能是查询指定NFT合约中标准的balanceof方法为何我如此肯定?此请求包里没有balanceof呀?咱们用实验说话双向校验,标准的1155协议的标准函数名及参数为:functionbalanceOf(address,uint256)由于data构建指定函数调用,其生成Mothod-ID的原理是名字+参数类型组合,因此他构建的call方法,data字段的开头必然为00fdd58e我输入的要添加资产是123号,其data参数末尾对应是7b=(7*16+11=123)也对应上。同时发现其缺乏防重放的措施,所以我可以直接编辑参数重发请求查询其他NFT合约所有权来对比:azuki:721标准,无得到0,有则非0爱死机:1155标准,无得到0,有则得1查os共享商店,修改参数尾数确实会得到值但意义不明所以这里我得出的一大惊奇猜想是:链上可查得NFT所有权的值,难道真的上链了吗?2.5链上交易统计
DTCP将以软银支持的 3 亿美元资金投资 web3:9月20日消息,专注于早期成长阶段投资的德国风险投资机构DTCP(Digital Transformation Capital Partners)宣布旗下增长股权基金GE III完成首轮3亿美元募资,投资方包括德国电信、软银、以及一些养老基金、企业、和家族投资办公室等机构。
据悉,该基金仍会继续募资,并计划在2023年完成全部融资轮,DTCP将投资网络安全、Web3、人工智能、金融科技、垂直SaaS解决方案等领域并专注于欧洲、以色列和美国市场。(Tech Funding News)[2022/9/20 7:08:27]
如果真上链其实也可以不由用户支付gas,有种“元交易”的技术手法,就是交易发起方和gas支付者不同的形式,并且openzepplin里特地有个content合约就是用于额外支持元交易产生的msg.sender可能特殊化的问题但是,我通过对此合约的链上交易数据统计,抽取23号一天出现的交易频率可见下图,都证明了好像并没有固定由官方发起的元交易类型交易
2.6破局得靠合约反编译
由于官方没有验证合约,导致分析起来费劲多了,但可通过合约反编译来大致摸清逻辑如果只是openzepplin的标准1155库进行反编译的话,行数是170行但是此1155则反编译后是1000行,因此必然有较多自定义实现反编译后整体是吻合1155的数据标准
但是也显著有不是标准数据部分
由于链上数据读取返回了结果,所以重点分析balanceOf函数,他整体实现用了30多行,这是很明显重写了原先的标准函数
由于os他依旧是沿用标准,所以他的两个参数是固定的可以理解为:Varg0=待查询NFTid所有权的用户地址varg1=待查询的NFTID数字从反编译程序里看逻辑,他会读取待查地址的_balanceOf总余额数,以及此NFTID是否被_creator等等
最关键的一句address(varg1>>96)!=varg0由于反编译不会完全按照solidity的语法,所以原本不支持的位移运算符就出现了不讲复杂的,总之这里将varg1的其中一部分,和varg0做比较这也意味着,原来此NFT的ID包含了用户的地址我顿然醒悟,写个进制转换,将我在os上create得到的NFTid传入,解密得出
这个数值也和我在小狐狸抓包看到的data后半段内容是一致这里还可以继续研读代码来挖掘细节比如balanceOf返回结果为2个值,会审计编号是否会超出_totalSupply限定发行量比如safeTransferFrom专门设置_mint防重放攻击,在其中若未mint则进行首次铸造在解读出NFTID的组成后,我也顿时明白此合约的核心逻辑了此ID由3部分构成,用户地址+系列编号+指定ID,这也意味着无论我铸造多少次,前xx位都是固定的,即我的钱包地址转为10进制而已,而他查询的balanceof函数也因为我前缀统一,从而判别我是未铸造前的所有者,因此理论上我的铸造空间极其大。因此小狐狸确实能导入,因为前缀一致,balanceof在没有所有者的情况下,会默认依据此NFTID对应的空间的所有者返回结果,如果发生铸造转移,也有合约中配套的owner_a和_creator来证明这个创作者和当前所有者的关系。至于为何小狐狸能出现NFT图,这点是他官方声明过的设置,出于读取更多维度的描述说明、稀有度、原图uri等信息,且用户可关闭这个钱包去查询os中心化数据库的功能。
破案总结
小狐狸是无辜的,他只是用标准方法走infura读取链上数据而已,并没有特别加工并修改返回数据os不去验证合约,有一定自我市场竞争保护的目的,但是不能阻挡妙手玩家对合约分析,却给不少用户带来无法证明资产所有的困境最终,确实其NFT资产在交易转移前未被铸造上链,但由NFTID定义的空间已经被特殊设计可查得余额结果,所以理论上其他交易平台也可买卖此NFT附录:gas价格图:https://etherscan.io/gastracker反编译平台:https://library.dedaub.com/decompilemetamask的NFT检测功能说明:https://metamask.zendesk.com/hc/en-us/articles/360058238591-NFT-tokens-in-your-MetaMask-walletos共享商店合约地址:0x495f947276749ce646f68ac8c248420045cb7b5eOS官方声明:https://support.opensea.io/hc/en-us/articles/1500003082561-Will-ERC-1155-NFTs-appear-in-my-wallet-https://opensea.io/blog/announcements/introducing-the-collection-manager/前文回顾
你买的NFT到底是什么?EIP-5058能否防止NFT项目方提桶跑路?当我们在看Etherscan的时候,到底在看什么?当奈飞的NFT忘记了web2的业务安全
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。