# 笔记 - Pixel Devs NFT的跨链问题

By [joelone.eth](https://paragraph.com/@joelone) · 2022-02-26

---

背景
--

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

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

[https://blog.developerdao.com/launching-pixel-devs-nft-on-polygon](https://blog.developerdao.com/launching-pixel-devs-nft-on-polygon)

面临的问题
-----

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和更新智能合约，我们照样能进行实时验证的工作。

![验证和铸造的流程](https://storage.googleapis.com/papyrus_images/fddb014b190418fa66ffbcf019346350fed4387501419b6846232dcb56c7d20f.png)

验证和铸造的流程

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

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

业务逻辑上的优点：
---------

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

参考资料
----

### 英文版的笔记

[https://twitter.com/0xmknod/status/1497667396798087168](https://twitter.com/0xmknod/status/1497667396798087168)

### 铸造的网站：

[https://pixel-devs.developerdao.com/](https://pixel-devs.developerdao.com/)

### 在github上的代码：

[https://github.com/Developer-DAO/pixel-avatars](https://github.com/Developer-DAO/pixel-avatars)

### 英文Blog:

[https://blog.developerdao.com/launching-pixel-devs-nft-on-polygon](https://blog.developerdao.com/launching-pixel-devs-nft-on-polygon)

### OpenSea

Genesis NFT:

[https://opensea.io/collection/devs-for-revolution](https://opensea.io/collection/devs-for-revolution)

Pixel Devs NFT

[https://opensea.io/collection/pixel-devs](https://opensea.io/collection/pixel-devs)

---

*Originally published on [joelone.eth](https://paragraph.com/@joelone/pixel-devs-nft)*
