当前位置:网站首页> 体育资料 > nba球员为什么没有转账费(#NFT是什么 NBA x NFT 官方紧急修复的漏洞是什么?你学到了吗?)

nba球员为什么没有转账费(#NFT是什么 NBA x NFT 官方紧急修复的漏洞是什么?你学到了吗?)

更新时间:2022-09-12 00:24:02

nba球员为什么没有转账费(#NFT是什么 NBA x NFT 官方紧急修复的漏洞是什么?你学到了吗?)

践行者社区

NBA x NFT 官方紧急修复的漏洞是什么?你学到了吗?

NBA几天前刚发售了他们的NFT系列The Association NFT,将240个球员各制作了75个NFT,总共供应18000个,白名单持有者可以free mint 1 个。


想一想NBA在全球范围内都具有庞大的粉丝群体,不少的爱好者都在努力成为白名单而努力做任务冲资格,甚至有些人花费数千美金从二手商手中购买,白名单可以获得MINT低价然后坐等升值,在巨大的获利空间里带来的热度自然引来科学家们的觊觎,据说有些科学家绕过白名单的限制仅仅只支付了些少许的GAS费就free mint了100个,转手就放在opensea出售,轻轻松松获取巨额财富,这可苦了辛苦等候白名单资格的用户,纷纷跑去官方平台上维权哭诉,不久后官方平台也在官推特发文称:“我们认识到智能合约的问题,它导致白名单供应提前售罄。目前正在识别白名单中无法铸造NFT的钱包。”


我们来看看这次NBA官方布署的智能合约有哪些漏洞


1.合约中的verify函数没有对发送者地址进行确认,导致非白名单用户可以通过复制白名单用户的签名进行mint


先看看mint 白名单的实现过程,以前土办法人工录入再mint时检验成功后打一次GAS费,白名单人数少时还好,一多就傻了,又慢又贵,所以现在NFT市场普遍采用梅克尔树这种加密签名验证来节省更多的GAS费,方法就是将白名单不要存储在链上合约中,而是放在链下由项目方自己保管,当用户在官网mint时根据用户的钱包地址用算法生成一个签名,NBA这次使用的就是加密签名方式的校验,这次问题就出在白名单钱包地址输入返回签名时合约无法对这个钱包所有者身份进行确认,也就是说所有人都可以用这个白名单的钱包地址来获得合法签名,拿到签名就可以进行mint了


2.利用白名单用户MINT成功后的16进制Input Data的信息来获得合约地址


再来看看16进制是什么意思?使用Matemask钱包转账给别人时都会输入一定的数据,比如合约地址,这些数据就会调用接口函数传入参数,数据在后台运行并都会以16进制的方式来压缩,正常钱包对这些后台管理是不会显示,不过好在Matemask钱包在高级设置里有个是否显示16进制数据的开关可以打开。


那16进制有什么用?,简单来说就是利用白名单成功mint后找到16进制的input data信息来提取开头显示为0x的合约地址,再复制粘贴进自己想要打款的项目方地址栏,输入Gas费用完成Mint,这个白名单的16进制提供的合约地址因为上面合约verify函数的漏洞打款成功就可以完成mint了。


一句话:因为官方合约verify函数漏洞通过白名单地址可以拿到签名,然后通过16进制数据找出合约地址,支付Gas费成功Mint.


这次官方合约的代码中只要多加一层检验,来验证白名单地址和最终要mint的钱包地址是否一致的就可以避免这次科学家薅羊毛的行为,这应该是官方的一次工作疏忽。


那后来官方又做了什么举动呢?


nba球员为什么没有转账费(#NFT是什么 NBA x NFT 官方紧急修复的漏洞是什么?你学到了吗?)


NBAxNFT官方表示,因智能合约问题导致提前售罄,正识别白名单中无法铸造NFT的钱包。针对这次的漏洞,官方已经确定在白名单列表中但是无法铸造NFT的钱包地址,并将向这些地址空投The Association NFT。为了做到这一点,The Association系列总量将从18000枚增加至30000枚,对应2022年NBA季后赛240个球员的NFT版本将从每一位球员75个增加到125个


好了,这次的NBA的NFT铸造漏洞过程也剖析完了,利用漏洞获得一波财富福利也算是知识效应,现在你们是不是又Get到什么新的知识点了吗?