Uniswap v3 的小彩蛋:NFT 和 LP 迁移工具

Posted on May 5, 2021

Alpha leak

从 uniswap v3 公开初版的代码到现在已经一个多月了,这期间 uniswap-v3-periphery 仓库的合约更新了很多代码。据粗浅观察,主要有以下 2 个改动:

  • 优化了 LP Token,由之前的普通 ERC721 token 变成了带动态效果 SVG 图片的 NFT token
  • 增加了一个 migrator 合约,可以将 uniswap v2 LP 或者类 uniswap v2 LP(说的就是你,sushiswap)一键迁移为 uniswap v3 LP.

NFT Token

Uniswap v3 在生成 NFT Token 时,会根据提供 LP 的仓位信息,生成一个专属的 NFT Token. 其效果如下:

nft-token

通常,我们见到的 NFT 都是将图片或视频保存在 IPFS 或其他去中心化存储平台中,在链上只保存一个链接。而 Uniswap v3 的这些 LP NFT 中的动态效果都是通过合约在链上动态生成的 svg 图片,即在合约中动态生成一个 svg 矢量图并将其编码保存到链上的 NFT token 中。这些操作无疑也会增加用户的 gas 开销,但是用户好像也别无他选,好在流动性添加/移除一般来说并不是一个很频繁的操作。

这个 NFT token 会随着 LP 信息不同而产生一些不同的效果,例如曲线效果,颜色,文字内容等。

NFT token 中还加入了一个小彩蛋,有概率生成一个稀有版本 NFT,带旋转星星特效。使用的随机算法可以参考代码。我把他们的稀有特效代码加入到上面的 svg 图片中,效果如下(右下角那个旋转的星星):

super-rare-nft-token

另外提一句,这个 SVG 图片在我的浏览器中运行起来是比较卡的,不知道是不是个例。v3 版本发布在即,应该也没有时间去优化了。

Migrator

v3 中还新增了一个 migrator 合约,这个合约比较简单,可以一键将 uniswap v2 的 LP 迁移成为 v3 LP,并且它是可以用来迁移所有 uniswap v2 兼容 AMM 的 LP. 它很大概率会被用来针对 sushiswap,让用户从 sushiswap 迁移到 uniswap v3 中去。