笔记 - Pixel Devs NFT的跨链问题
February 26th, 2022

背景

Pixel Devs NFT是 Developer DAO的第一个原生项目,目标是给成员创建社区标识和更个性化的衍生NFT。以太坊的gas费太高,项目最终决定部署在Ploygon上。

这篇文章主要根据英文的blog总结一下,跨链问题是如何权衡和解决的:

面临的问题

Developer DAO的会员NFT和Loot类似,它有8个特征,称之为 "Genesis NFT"。

衍生的Pixel Devs NFT就是将这8个特质的可视化,并且与Genesis NFT的token ID一一对应。

任何在以太坊主网上持有Genesis NFT的钱包地址,都有资格在Polygon上铸造相应的衍生NFT。

现在的挑战是,Polygon上衍生NFT的智能合约不能访问以太坊,我们如何验证钱包地址持有Genesis NFT?

最初的想法

最初的想法是用Snapshot白名单或者Merkle Tree,但是我们希望结果是实时的,这就需要我们定时运行Cron Job后台任务来更新智能合约上的数据。这部分涉及额外的维护和费用问题。

另一个方法是用Chainlink Keepers来维护Snapshot/Merkle Tree。这是Chainlink 提供的自动服务,也是会产生费用的。

除了费用,这两种方法的结果都不是实时的。

最终的解决方案

如果我们把执行验证的工作,放在智能合约之外会怎么样呢?

那就是说,不需要Snapshot和更新智能合约,我们照样能进行实时验证的工作。

验证和铸造的流程
验证和铸造的流程

具体的实现,就是用服务器对钱包地址执行授权,创建签名,然后传给智能合约。

  • 1、客户端给服务器发送授权请求,请允许地址0x1abc23铸造ID是1234的NFT
  • 2、服务器到以太坊一查,地址0x1abc23的确持有ID是1234的创世NFT,就用自己的私钥给数据签名,加上10分钟的有效期。
  • 3、客户端就用这个签名,发给Polygon上的智能合约,申请铸造ID是1234的衍生NFT
  • 4、智能合约主要验证:
    • a、 签名合法并来自服务器(合约里事先保存有服务器的钱包地址)
    • b、 签名的信息与申请信息相符(地址0x1abc23和ID1234
    • c、 签名还在有效期内

业务逻辑上的优点:

  1. 可以用在任何兼容EVM的侧链上。
  2. 业务逻辑可控,可以在铸造前添加抽奖,或者给特殊贡献者发NFT。
  3. 更重要的是,我们不需要等合约提前准备好,就可以尝试新的想法。

参考资料

英文版的笔记

铸造的网站:

在github上的代码:

英文Blog:

OpenSea

Genesis NFT:

Pixel Devs NFT

Subscribe to joelone.eth
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from joelone.eth

Skeleton

Skeleton

Skeleton