原文作者:
interfaceILootBox{
functionafterHarbergerBuy(uint256tokenId,addressnewNFTOwner)external;
}
当NFT被任何人使用harbergerBuy()时,如果有一个现有的LootBox,它将尝试从LootBox调用afterHarbergerBuy()函数。BUIDLNFT的矿工(又名BUIDLer)可以任意定义afterHarbergerBuy()的行为。一般来说,这将是买家的奖励/奖励。NFT买家可以在购买前预测此功能的行为。
ShibaInu将推出DAO,测试版“DAO1”和“DAO2”已启动:1月1日消息,据ShibaInu社区博客称,ShibaInu(SHIB)背后开发团队宣布将推出DAO,以共同制定有关该项目ShibaSwap交易平台的治理决策,质押ShibaInu激励TokenBONE并获得tBONE的用户将有资格参与投票。目前,ShibaInu已经启动DAO测试版「DAO1」,其中用户可以决定Token奖励如何在各个流动性池之间分配。ShibaInu开发团队表示,DAO将为社区赋能,奖励流动性池将由用户完全决定......避免开发人员做出这些选择;另外一个名为「DAO2」的新DAO则允许用户围绕项目开发提出一般性建议。[2022/1/1 8:18:27]
为确保安全,LootBox应始终检查:
?msg.sender:防止接口被滥用。
Force DAO 代币增发漏洞简析:据慢雾区消息,DeFi 量化对冲基金 Force DAO 项目的 FORCE 代币被大量增发。经慢雾安全团队分析发现: 在用户进行 deposit 操纵时,Force DAO 会为用户铸造 xFORCE 代币,并通过 FORCE 代币合约的 transferFrom 函数将 FORCE 代币转入 ForceProfitSharing 合约中。但 FORCE 代币合约的 transferFrom 函数使用了 if-else 逻辑来检查用户的授权额度,当用户的授权额度不足时 transferFrom 函数返回 false,而 ForceProfitSharing 合约并未对其返回值进行检查。导致了 deposit 的逻辑正常执行,xFORCE 代币被顺利铸造给用户,但由于 transferFrom 函数执行失败 FORCE 代币并未被真正充值进 ForceProfitSharing 合约中。最终造成 FORCE 代币被非预期的大量铸造的问题。 此漏洞发生的主要原因在于 FORCE 代币的 transferFrom 函数使用了`假充值`写法,但外部合约在对其进行调用时并未严格的判断其返回值,最终导致这一惨剧的发生。慢雾安全团队建议在对接此类写法的代币时使用 require 对其返回值进行检查,以避免此问题的发生。[2021/4/4 19:45:30]
?tokenID:防止其他NFT使用同一个LootBox。
例子
下面是一个简单的AirdropLootBox合约示例:
pragmasolidity0.8.6;
import"./BuidlNFT.sol";
contractAirdropLootBoxisILootBox{
addresspublictoken;
addresspublicowner;
addresspublicentrypoint;
uint256publicmintTokenId;
constructor(address_toAirdropToken,address_ep,uint256_mintTokenId){
owner=msg.sender;
token=_toAirdropToken;
entrypoint=_ep;
mintTokenId=_mintTokenId;
}
functionafterHarbergerBuy(uint256_tokenId,address_newOwner)overrideexternal{
require(msg.sender==entrypoint);
require(_tokenId==mintTokenId);
(,,,uint256currentPrice,,,,)=BuidlNFT(msg.sender).metadataOf(_tokenId);
ERC20(token).transferFrom(owner,_newOwner,currentPrice/100);
}
}
背景
BUIDLNFT最初是在一篇文章中提出的,该文章讨论了使用简单Harberger税之类的交易机制的NFT如何帮助资助Web3开源软件,以及如何为开源项目创建的独特收藏品的收藏者创造乐趣。
该机制首先在HackerLink上进行了试验。有十多个HackerLinkBUIDL铸造了他们的BUIDLNFT。HackerLink上有一个所有BUIDLNFT的排行榜。
在原文中,创建NFT的一方应定义NFT的含义。它有两个在Web3时代并不受欢迎的要求:
1)要求不可验证的信任。像Web2/离线服务一样,权限是在链下确认的。一个例子是众筹平台,在这些平台上,利益和权利往往以文字形式写下来,在实际购买后很难执行/验证。
2)限制了NFT可以做什么。
BUIDLNFTs最初被描述为开源项目/公共产品的“UniswapSocks”。现在有了LootBox,可以对BUIDLNFT进行编程,为开发者和NFT收藏者提供更灵活的交互。
想法
对于有趣的LootBox用例的想法,我们维护了一个lootboxideas.md。每个人都可以为这个想法列表做出贡献,并启发其他人LootBox可以做什么。详情查看:https://github.com/dorahacksglobal/BUIDL-NFT
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。