
Uniswap V3交易预计算技巧
Uniswap上做swap交易时,比如用usdt购买btc,会根据界面上输入的usdt数量,实时计算出可以swap到多少个btc,v2版本因为是应用了xy=k的公式,可以方便的计算出来。代码里通过getAmountOut和getAmountIn得到,这两个都是view函数,不需要消耗gas。而到了...
Meebits mint随机算法
先上代码function randomIndex() internal returns (uint) { uint totalSize = TOKEN_LIMIT - numTokens; uint index = uint(keccak256(abi.encodePacked(nonce, ms...

nftx闪电贷领取apecoin空投
已经是两个多月前的事件了,这几天才对这个tx进行了分析和fork重现,记录下来加深一下理解。apecoin的空投并没有限制调用方不能是合约地址,也不是用链下签名再到合约里验签的方式来领取空投,而是直接在合约里校验调用方的地址里有没有bayc/mayc,再加上apecoin当时的价格在8u左右,总体...
<100 subscribers

Uniswap V3交易预计算技巧
Uniswap上做swap交易时,比如用usdt购买btc,会根据界面上输入的usdt数量,实时计算出可以swap到多少个btc,v2版本因为是应用了xy=k的公式,可以方便的计算出来。代码里通过getAmountOut和getAmountIn得到,这两个都是view函数,不需要消耗gas。而到了...
Meebits mint随机算法
先上代码function randomIndex() internal returns (uint) { uint totalSize = TOKEN_LIMIT - numTokens; uint index = uint(keccak256(abi.encodePacked(nonce, ms...

nftx闪电贷领取apecoin空投
已经是两个多月前的事件了,这几天才对这个tx进行了分析和fork重现,记录下来加深一下理解。apecoin的空投并没有限制调用方不能是合约地址,也不是用链下签名再到合约里验签的方式来领取空投,而是直接在合约里校验调用方的地址里有没有bayc/mayc,再加上apecoin当时的价格在8u左右,总体...
Share Dialog
Share Dialog
MAYC还有一些M1、M2和Mega的药水还没有变异,这样就存在有些变异猴是开盒,还些变异猴还未开盒的情况。首先要明确的是,所有20000只变异猴都是已经做出来的,而不是用药水去变异时才实时生成的,只是项目方对Metadata做了控制,让未变异的猴子的Metadata没有对外公开而已。
大家都知道,ERC721的元数据是通过tokenURI方法获取的,我们以前几天刚开的Mega变异猴30005为例,可以看到它的元数据URI是
https://boredapeyachtclub.com/api/mutants/30005

获取到的json如下
{"image":"ipfs://QmcCMYfyDfTQs3ZFsu9rv436gJKskzu5uabKQJukZPzhEC","attributes":[{"trait_type":"Name","value":"Mega Trippy"}]}
里面的图片用brave浏览器打开就是对应的Trippy变异猴

那么,有些人就会用30006去尝试下能不能看到下一个未开盒的Mega变异猴的样子

结果返回token不存在。
因为在这里项目方用是中心化的API来返回json元数据的,所以很好对这个开盒的私密性进行控制。以上面的30005变异猴的mint为例,看下对应的tx交易0xef0c7af927424fc8416fc62315c18ff4ea93306eb1a467f062b2af608b75de3a的日志

可以看到from参数是全0地址,表示新mint;to参数是token接收地址,也就是mint用户的地址;tokenId就是当前mint出来的tokenId。项目方应该在中心化那里做了一个event监听服务,监听到此事件时,根据tokenId将图片上传IPFS,然后API Metadata reveal。
那么,有人会说,项目方是不是可以人工操控30006的开盒图片呢?答案是:不能。因为MAYC合约部署时已经公开了图片哈希provenance码,在合约里可见
string public constant MAYC_PROVENANCE = "ca7151cc436da0dc3a3d662694f8c9da5ae39a7355fabaafc00e6aa580927175";
因此,所有20000张变异猴的图片顺序在合约部署前都排好了,只是未mint出来的还没有公开元数据。从这小小的技术点就可以看出项目方在技术上是有用心的。
MAYC还有一些M1、M2和Mega的药水还没有变异,这样就存在有些变异猴是开盒,还些变异猴还未开盒的情况。首先要明确的是,所有20000只变异猴都是已经做出来的,而不是用药水去变异时才实时生成的,只是项目方对Metadata做了控制,让未变异的猴子的Metadata没有对外公开而已。
大家都知道,ERC721的元数据是通过tokenURI方法获取的,我们以前几天刚开的Mega变异猴30005为例,可以看到它的元数据URI是
https://boredapeyachtclub.com/api/mutants/30005

获取到的json如下
{"image":"ipfs://QmcCMYfyDfTQs3ZFsu9rv436gJKskzu5uabKQJukZPzhEC","attributes":[{"trait_type":"Name","value":"Mega Trippy"}]}
里面的图片用brave浏览器打开就是对应的Trippy变异猴

那么,有些人就会用30006去尝试下能不能看到下一个未开盒的Mega变异猴的样子

结果返回token不存在。
因为在这里项目方用是中心化的API来返回json元数据的,所以很好对这个开盒的私密性进行控制。以上面的30005变异猴的mint为例,看下对应的tx交易0xef0c7af927424fc8416fc62315c18ff4ea93306eb1a467f062b2af608b75de3a的日志

可以看到from参数是全0地址,表示新mint;to参数是token接收地址,也就是mint用户的地址;tokenId就是当前mint出来的tokenId。项目方应该在中心化那里做了一个event监听服务,监听到此事件时,根据tokenId将图片上传IPFS,然后API Metadata reveal。
那么,有人会说,项目方是不是可以人工操控30006的开盒图片呢?答案是:不能。因为MAYC合约部署时已经公开了图片哈希provenance码,在合约里可见
string public constant MAYC_PROVENANCE = "ca7151cc436da0dc3a3d662694f8c9da5ae39a7355fabaafc00e6aa580927175";
因此,所有20000张变异猴的图片顺序在合约部署前都排好了,只是未mint出来的还没有公开元数据。从这小小的技术点就可以看出项目方在技术上是有用心的。
No comments yet