NFT 建立在智能合约之上,就有存在漏洞的可能。
原文标题:《NFT 是否安全?》
撰文:Chris Hamer
翻译:ChainDeFi
随着日本开放 NFT 业务平台,韩国三大娱乐公司之一的 JYP 公司将目光转向 NFT 市场,NFT 越来越受普通人的关注。
试想日本动漫,韩流涌入到 NFT 市场,其爆发力和潜力该有多大?
但是 NFT 和任何其他 DeFi 一样,都是由易受攻击的智能合约组成,因此 NFT 的安全现在也备受关注。本片从以往的 NFT 出现的一些事故来阐述 NFT 智能合约的故事。
NFT 一个不太突出的方面是,它们是建立在智能合约之上的,而智能合约可以被利用、被破坏和被黑客攻击。与任何具有不完美智能合约的典型 DeFi 项目类似,NFT 智能合约也可能存在导致不利结果的漏洞。随着我们讨论历史和一些导致资金损失的不幸事故,我们将回顾人们在过去几年里利用 NFT 合约所做的事情。
CryptoPunks
CryptoPunks 可以说是迄今为止最受欢迎的 NFT 项目,在 2017 年推出后,其智能合约中出现了一个有影响的漏洞。当所有 1 万名 Punks 被卖出并进入二级市场后,发现了一个可能发生销售但未收到实际付款的错误。
代码中的问题归结为一行——它没有经过足够的测试。@0xfoobar 后来在 Twitter 上发布了一个帖子,详细解释了这个 bug。
CryptoPunks 的创建者 LarvaLabs 最终以一份新的、更新的合约重新启动了该项目。V1 朋克是最初合约的一部分,直到 CryptoPunks V1 的 ERC-721 封装被发布,这也被称为「经典朋克」。
Meebits
在推出 CryptoPunks 多年后,LarvaLabs 又推出了一个名为 Meebits 的后续项目。所有 Meebits 都带有随机特征。然而,在其启动时,一些用户想出了如何欺骗系统和重新滚动特征,以获得他们想要的特征。
如何 ?Meebits 项目在智能合约中包含一个存档文件,显示每个 Meebit 代币 ID 的特征。用户可以启动 Meebit 的铸造,如果他们通过比较特征文件发现代币并不罕见,就可以取消它。一位用户充分利用了这一点,并在 Twitter 和 Discord 上公开记录了他的成功。这个用户是「0xNietzsche」。
0xNietzsche 发起了 300 多笔交易来测试这一漏洞。如果没有足够稀有的特征,他们发起铸造的每个 Meebit 都会被取消。经过 300 多次交易,他们终于能够偶然发现一个罕见的 Meebit。#16647。
「0xNietzsche」声称,他们每小时花了 2 万美元的 gas 费,等着铸造他们稀有的 Meebit,但他们仍然利用合约这样做。他们能够以 200 ETH 的价格出售新制作的 Meebit,当时价值约 75 万美元。
LarvaLabs 很快就听到风声,暂时停止了 Meebit 的铸造,并发布声明:「我们已经暂停了 Meebit 合约中的社区铸造和交易。合约是安全的,所有 Meebits 都是安全的,交易也很顺利。」他们是正确的,Meebits 仍然是完全随机分配的——除非你投入大量的时间和 gas 费用,否则就不能利用合约,而那时,铸造几乎已经完成了。
尽管如此,Meebits 是一个很好的例子,说明了如何利用智能合约,让一个或多个用户在创建 NFT 时获得竞争优势。
MoonCatRescue
MoonCatRescue 于 2017 年推出,一开始他们的合约就有一个相当大的缺陷。
MoonCats 官方常见问题解答页面提出了一个问题:您是否为此获得报酬?
回复 :
「不。我们打算从创世猫的销售中收集以太坊。然而,我们在 QA 过程中所做的修正却导致这些资金被永久封存。但这没关系。」
当 MoonCat 被收养时,transferCat(catId, catOwners[catId], msg.sender, offer.price),资金被发送到 require(catOwners[catId] != 0x0。在测试中仔细检查它的话,其实是可以解决这个问题的。虽然这不是智能合约的主要缺陷,但在他们意识到这个错误之前,他们仍然失去了相当数量的 ETH。
智能合约的整体漏洞
2018 年 3 月,五位计算机科学家合作撰写了一篇题为《 大规模发现贪婪、挥霍和自杀的合约 》的论文,他们对此进行了研究 :
-
贪婪合约,无限期锁定资金
-
挥霍合约,将资金随意地泄露给任意用户
-
自杀合约,可以被任何人杀死
他们在以太坊网络上签订了近 100 万个 (970,898) 智能合约。他们发现,其中 34200 个智能合约容易受到黑客 / 利用,这意味着在 2018 年,大约每 20 个智能合约中就有 1 个面临风险。他们深入分析了 3759 份合约,以具体验证它们的代码中存在漏洞,发现 3686 份合约中的漏洞都在平均 10 秒内被发现。这太疯狂了!他们最多可以从合约中提出 4905 以太币——略高于 860 万美元。该报告还补充说,「此外,区块链目前有 6239 以太坊 (约 560 万美元) 被锁定在死后的合约中,其中 313 以太坊在「死」后被送到了死合约中。」有很多加密货币卡在失效的合约里。在进行这项研究时,DeFi 和其他智能合约占链上活动的比例要低得多。Glassnode 于 2021 年 5 月 6 日发布的一份最新报告发现,22.8% 的流通 ETH 被锁定在智能合约中。
现在仍然是每 20 个智能合约中就有 1 个容易受到攻击的情况吗?项目是否变得更安全了 ? 或者,随着智能合约对缺乏知识的人来说变得更容易发布,情况可能变得更糟了?即使我们保持 1 / 20 的比率,这将意味着大约 1% 的 ETH 供应处于脆弱的智能合约中。
这里的要点是,在开始一个项目之前要做调查。尽量不要 FOMO。确保你想要投资的项目花时间开发智能合约,确保这个项目不是凭空产生的。许多复制粘贴的代码存在于那里,这总是一个危险信号。
来源链接: blog.mycrypto.com