# 那个可以跨链的Gh0stlyGh0sts会成为下一个Azuki吗？

By [Jason chen](https://paragraph.com/@jason-chen) · 2022-04-07

---

这篇文章涉及代码相对较多，可能会略有枯燥，请耐心看完从而理解其中原理。

这几天各个群都在传一个叫Gh0stlyGh0sts的项目，作为一个free mint的项目已经实现了单日百倍涨幅，这背后最主要的原因是大家都在热议它可以实现跨链的技术创新。

还记得上一次技术创新后的蓝筹股是谁吗？Azuki，它带火了ERC721A，具体各位可以看之前的文章[web3的世界一片蛮荒-详解ERC721A](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483754&idx=1&sn=c67a5ec2c70d03d4dcb786458d07860e&chksm=fb043756cc73be40027ed1d5c4132bae513b897544078592485887a1e8c4898720835260d500&scene=21#wechat_redirect)。

之前的文章中也多次提到过web3是一个极其依赖技术创新的领域，一方面可以释放出更多上层应用潜力，另一方面因为土狗项目太多的缘故，使得有技术创新的项目方会直接被视为愿意长期做事的，从而产生fomo情绪，所以从技术创新这一点来看，Gh0stlyGh0sts是有可能具备Azuki基因的。

**但是经过研究后，我认为它的这些操作可复制性不高，相比于ERC721A非常重，带来的收益有限，所以我认为它不会成为下一个Azuki，或者这套解决方案难以像ERC721A一样大规模使用，具体的原因请耐心往下看，文末最后会讲到，但请注意本文不提供任何投资建议。**

在大家都在喊这个项目牛逼能跨链黑科技的时候，我们公众号致力于帮助大家更深刻的理解原理本质，所以本文为大家抛析Gh0stlyGh0sts的跨链到底谁怎么回事。\*\* \*\*

我们从它的twitter中可以看到自称是全球首个omnichain全链式NFT项目。

![](https://storage.googleapis.com/papyrus_images/51db3eb43e4bd9549cecb48ce596ca86d8a96f0df810604972a848cbde75f017.png)

我们先按照时间线看一下他们最开始也是最重要的四条twitter。

它说自己说第一个原生的全链NFT，它可以在任何一条链上mint和转移，所在的原始链（即mint链）和当前链这两个因素会分别影响NFT的背景颜色与边框颜色，故你可以一眼看出这个NFT的前世今生，而我们常见的跨链桥如Wormhole实现的方式是先在一条链上mint后，将其锁定在跨链桥的合约中，再在另外一条链上mint出来一个新的去流动，所以强调了自己与传统跨链桥的区别。

所以他相比于传统跨链桥的区别在于三点：

*   可以在任何一个链上mint而非先在一个链mint
    
*   可以实现真正的“转移”的而非先锁定一个再复制一个
    
*   原始链和当前链会影响NFT样式
    

![](https://storage.googleapis.com/papyrus_images/cf12e62c6a4d5455028f35e6ca6d11bb9b593365a950ae1fe2a072352e153498.png)

可以看到确实因为其前世今生不同使得背景和边框都是不一样的。

![](https://storage.googleapis.com/papyrus_images/acabe444f5c97d39e25998f5e27cd74a942770dfd62a61c8dccd378a86a856da.png)

再向前翻，说到当一个NFT转移时，会先将这条链上的NFT burn掉再在另外一条链mint一个新的出来，那这就是它的原理了，单纯从这里看，好像就是相比于传统跨链桥把锁定动作改成了burn，我们继续研究看到底有没有点东西。

![](https://storage.googleapis.com/papyrus_images/83c66ec2841409b60fd48903193cfdb018d4a7cc0ea34f961af004cbd331e295.png)

这里他说使用了Layer Zero协议从而实现了跨链，嗯..那说明关键点在这个Layer Zero。

![](https://storage.googleapis.com/papyrus_images/dade4571965c6f4ebfb335925927f34906cf348000fa6b473205753dd3804618.png)

上下文了解清楚了，我们开始解析，那首先从这个Layer Zero开始研究。

首先跨链为什么重要不言而喻，每个链你可以将它当作银行，如果银行无法跨行转账，你的资产流动性和效益将会大大减弱，LayerZero刚完成了A16Z、红杉资本等投资的1.35亿美金融资，可见跨链这个操作至少非常受资本喜欢。

这是他们的论文，感兴趣的可以亲自啃一遍：

Layer Zero之所以叫Zero，从名字上就说明它和以太坊、Solana这些Layer1不是一个纬度的，建立在这些Layer1上的跨链桥原理基本都如上所说，在一个链上锁定资产后再在另外一条链产生资产，锁定资产的过程即这些跨链桥托管资产，这也就是为什么经常爆出跨链桥被黑客攻击的事，从而大家对于将资产托管给跨链桥也愈发不信任，除去安全性，跨链桥在操作上也非常繁琐需要多次进行转移并缴纳多次gas费，而Layer Zero并不锁定托管资产，Layer Zero是更底层的一个通信协议，直接在两条链之间进行信息传递，其实简单粗暴的理解就是Layer Zero在多个链之间部署了自己节点，这些节点帮助你在两条链之间通信，比如你在A链的合约中调用B链的节点，告诉它你要转移一个NFT，于是该节点帮助你在B之间创建一个新的NFT出来，这两个节点就承担了通信的任务，所以原理还是很简单的。

我们看一下Gh0stlyGh0sts合约代码，其中traverseChains这个函数执行的就是跨链操作，需要输入两个参数chainId链id和tokenId。

![](https://storage.googleapis.com/papyrus_images/061c713a015e01c39a55acaadc976b611e673351dfe60f104a37a9efa63d1a57.png)

先进行持有人验证，再将chainId传入了一个trustedRemoteLookup数组验证它的长度是否大于0，这个操作是干嘛的呢？

我们上Layer Zero的文档看到该协议每一条链都会对应一个id，所以传入的chainId代表着你要将NFT转移到哪个链上去，所以这个trustedRemoteLookup应该是存储不同链的合约地址的，才需要在这里校验你要转移的目标链是否存在对应合约。

![](https://storage.googleapis.com/papyrus_images/7efca862362c4c174556567bd792a66e69ea3b4bedc123a9e9a8189d594ad976.png)

我们输入币安链的id2试一下，果真返回了对应的合约地址。

![](https://storage.googleapis.com/papyrus_images/b454120aa87411b76225d6a7ea74be34e9951d25d79520b34b2cd7fbb4c23502.png)

接着执行了burn操作将你的NFT销毁，burn先获取到了这个NFT的持有人，然后执行了\_beforeTokenTransfer，这个函数需要传入的参数有三个，from、to和tokenid，当from为0时代表着铸造，当from和to都不为0时代表转移，当from不为0但是to为0代表着销毁，所以在这里将to传入0进行销毁，同时执行approve取消该tokenid的一切授权，然后将原本持有人的余额减1，并在mapping持有关系中删除持有人和tokenid的关联。

![](https://storage.googleapis.com/papyrus_images/eea55aab766deab4795153068c6cbd6a3ce791fb9b4e4478fe9e05141cb3b2d0.png)

endpoint即调用了Layer Zero接口分别传入了要转移的目标链chainId、目标链的合约地址trustedRemoteLookup\[\_chainId\]等信息，其中payload参数代表着你要传输给目标链的信息，可以在代码中看到它传输过去了两个参数当前用户合约地址msg.sender和tokenId，那我们可以猜想到目标链一定会有个mint函数用到这两个参数来mint出一个新的NFT。

![](https://storage.googleapis.com/papyrus_images/d25ea31a108d65a3a498166dab6916ed33d6927ad5a9a3c1ea157696d4c71f10.png)

Layer Zero的send消息被目标链接捕获后会执行lzReceive函数，我们一层层向上顺藤摸瓜，可以看到lzReceive首先对传过来的payload信息进行了解码，然后又执行了\_safeMint函数新铸造了对应的NFT。

![](https://storage.googleapis.com/papyrus_images/aa44fdf17fe56dc9aeed5b0afb10e72ba9845877513548bf1041d4409b04031a.png)

怎么在各个链之间转移我们明白了，接下来让我们看看它是怎么实现可以在不同的链mint的，我刚开始看到这个能力的时候，第一时间想到的是怎么做去重，因为mint都是按照tokenid递增的，比如我在以太坊mint了#1，那接下来polygon必须要从#2开始mint，这么多链来回mint那不乱套了，当我看到他们的解决方案时有点乐了..

下图左右两边是两个不同链上的合约代码，分别设定了两个参数为开始和截止的tokenid，即我在以太坊只能mint第0～3084个，我在arbitrum则只能mint第6476～7092个，所以你在哪些链能mint都是事先写死的，外面的人不知道还以为很智能，实际上用的方式很粗暴。

![](https://storage.googleapis.com/papyrus_images/a26ddca9dda2e4f3f4b7baa8e34cb980a405f4f497b53062f1b2cfcced5b0fd0.png)

别忘了它还有一个特点，就是不同的的链背景色不一样，跨链后的边框颜色也不一样，如下图我打开了一个跨到以太坊的NFT，显示它的诞生链是Polygon，确实是追溯到了，很神奇对不对。

![](https://storage.googleapis.com/papyrus_images/d6e18afd09adaac7bb615e344a66a52a68c8a0efc25d4b26d49dc474daeeb8e4.png)

等我研究完后真雷到我了，且听慢慢分析。

我听到这个特性后，第一时间想的是如何能够“动态”识别跨链后的token并自动变更baseURI？大家都知道每一个token对应的是一个存储在ipfs上的链接，这个链接存储了它的属性和图片，那比如我的NFT原本在A链，这时候我把它跨到了B链，那就首先要有一段代码来自动的生成一个存储跨链前后属性的json文件，并自动生成图片，然后再把它传到ipfs，替换掉旧的链接，再映射到token，可是ipfs是不允许改的呀，这是行不通的，在我百思不得其解的时候，我打开了他们的ipfs文件。

可以看到它是用一个大文件夹包了7条链子文件夹，子文件夹又是对应的json文件，然后每个子文件夹大小都是一样的4.2M。

![](https://storage.googleapis.com/papyrus_images/9e7dbddba62950dc215618e91139fe6a73087abb89004c4b1317cd960f0f1586.png)

然后我花了近半个小时不断的理解这里面的原因，这代表着什么呢？最终终于明白了，它事先把所有的可能性全部穷举出来了。

还记得上文中说到事先用代码硬编码写好了每个链可以mint的编号区间，然后它先生成了1万个全部NFT的json文件，并按照区间设定好其诞生链，以及背景图，比如设定第6000个NFT的诞生链为polygon，背景色为紫色，此时是没有边框的，所以如果#6000NFT还没有跨链，那正常的就会通过上图中的poly来索引。

接着它把这1万个NFT的json文件复制了7遍，然后再把不属于本链中的NFT加上一个本链边框，比如刚才提到#6000诞生链是polygon，于是在eth的文件夹里#6000的图片就会多出来一个灰色的边框，同理在币安链的#6000NFT会多出来个蓝色的边框。

这个操作是我怎么样都没想到的，我一开始以为用了很高级的手法所以不断的看代码想找出变更baseURI的业务逻辑，研究了整整1小时没看出来，没想到居然用的是这种操作方式。

以上就是Gh0stlyGh0sts是如何实现跨链+多链mint+前后链变更样式的效果，综合来看，这套方案不具有任何普适性，操作繁琐复杂度很高，远远没有ERC721A的那种简单且收益高的效果，我很敬佩Gh0stlyGh0sts项目方认真努力的精神，但是个人认为这个项目噱头大于实际意义，至少目前的解决方案来看是的。

本文不构成任何投资建议，仅代表个人观点，欢迎添加我的微信：cj350306878 一起交流学习探讨，请备注姓名 公司和职位，谢谢。

其他文章：

*   [可以退款的ERC721R会成为闯入NFT市场的鲶鱼吗？](https://mp.weixin.qq.com/s/LWNDkqrOgBkAX_-Q1ue9Vg)
    
*   [那个可以跨链的Gh0stlyGh0sts会成为下一个Azuki吗？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483939&idx=1&sn=776834ea87918d2bd1a291c99547ba45&chksm=fb04341fcc73bd09879947945e0345b1b087bf9ee2f95aa7e67ee3056acacb1abf37ccba9892&scene=21#wechat_redirect)
    
*   [如何做一个钓鱼网站偷走周杰伦的NFT？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483914&idx=1&sn=f0b64d82edb21edadac8026bf5a916c0&chksm=fb043436cc73bd2011fe5130a591631dbf837f9e64ff6b6f5d8d68a7ade097d1955d85039fc1&scene=21#wechat_redirect)
    
*   [ERC1155是什么？以阿迪达斯NFT为例解析](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483891&idx=1&sn=b83b74b1f6d34b4609886e3f3614c1cf&chksm=fb0437cfcc73bed96264b08823dba695394927e957314518a61aa24aead12d26f7c257589ba0&scene=21#wechat_redirect)
    
*   [怎么通过看懂etherscan了解NFT项目情况？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483868&idx=1&sn=59fcaf88498f5d27cbb038c3dbf17bd7&chksm=fb0437e0cc73bef614f604b7b82d31bc39804f890d50515e01a73c3f5c4678c7b9a4b3d13da4&scene=21#wechat_redirect)
    
*   [我是怎么让V神给我转了一个NFT的？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483830&idx=1&sn=e5df3cf9f507efdaea639a8d4609a913&chksm=fb04378acc73be9cbe36c0e468716be904503008083982f45cb2f740273413928c4e8ce39c4d&scene=21#wechat_redirect)
    
*   [web3的产品架构和web2到底有什么区别？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483795&idx=1&sn=f517a10415078e36920e59db5c935475&chksm=fb0437afcc73beb9c274829a5ccdf0ce404416b6f81b60c6245066ef572500d4c54bfae4c47d&scene=21#wechat_redirect)
    
*   [为什么你在opensea“铸造”的NFT不需要交gas费？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483784&idx=1&sn=b216918a73392ddbcc69efb04988da5b&chksm=fb0437b4cc73bea2e2ba60afbae55ee1d2dd5be806da89b066ab90b47b5d8352e27e086c609a&scene=21#wechat_redirect)
    
*   [如何用5行代码发行一套虚拟货币？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483772&idx=1&sn=89bedacaaa642162b8d48e5b56dc8796&chksm=fb043740cc73be56b586fe8e1ad598548ebd4181a0799014d317581a20816d21c3de1bc268fc&scene=21#wechat_redirect)
    
*   [阿狸NFT到底做错了什么？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483760&idx=1&sn=3df35eed0200d80e7957ec9b64414ace&chksm=fb04374ccc73be5a963704f3cf34b4326edf31c842e452b2c9a8dc6d29617edd57ba453705c2&scene=21#wechat_redirect)
    
*   [web3的世界一片蛮荒-详解ERC721A](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483754&idx=1&sn=c67a5ec2c70d03d4dcb786458d07860e&chksm=fb043756cc73be40027ed1d5c4132bae513b897544078592485887a1e8c4898720835260d500&scene=21#wechat_redirect)
    
*   [如何在一级市场发行NFT（2）：NFT图片生成](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483737&idx=1&sn=bf525bef38f9716fa59d38c410d7068c&chksm=fb043765cc73be731fb65d0a7a8d75136c38c5210e67cd36cc0a4bc71fa883522b2dd827a320&scene=21#wechat_redirect)
    
*   [当你在买NFT时，你买到的究竟是什么？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483721&idx=1&sn=06e96729063655a2f103143b007a8707&chksm=fb043775cc73be6365d1499081073977798f86a5cba98d065bb7efdb68a9b32a91d8fce998a0&scene=21#wechat_redirect)
    
*   [NFT的130亿美金是从哪里来的？它与虚拟货币之间的关系是什么？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483689&idx=1&sn=6d08a4f92972073b8966b93fe0fc5a14&chksm=fb043715cc73be039d01157e1dd6a56e5bc90d2c3ae59521f373c021cef174b0fb1fcf3e4ecb&scene=21#wechat_redirect)
    
*   [如何在一级市场发行NFT系列（1）：区块链合约开发](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483687&idx=1&sn=b1843982bf62367ee59b78ddda91c3a5&chksm=fb04371bcc73be0d75bfb7272b17604139d98e2e560bdde40859af9d44a431130f80176855ea&scene=21#wechat_redirect)
    
*   [浅谈我对元宇宙、Web3、区块链与NFT的理解](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483664&idx=1&sn=bcf16ebc64aa00b97e6da7f52f9db718&chksm=fb04372ccc73be3adc86c44daec8b0c7ab882c942ed7c0dbcd9f0683a9ba846065fe37d4877f&scene=21#wechat_redirect)
    

![](https://storage.googleapis.com/papyrus_images/464a2a534e253e74f17ee9718979a863ffd84991a35a0239b835a5f51e50109c.png)

---

*Originally published on [Jason chen](https://paragraph.com/@jason-chen/gh0stlygh0sts-azuki)*
