---
title: 链上资产如何实现跨层迁移
date: '2024-04-20 05:04:42'
draft: false
summary: 围绕 Bitcoin 生态的新资产协议，讨论链上资产跨层迁移到底难在哪里。
slug: cross-layer-asset-migration
syndication:
- platform: X / Twitter
  url: https://x.com/jolestar/status/1781549529541816511
tags:
- bitcoin
- layer2
- assets
topics:
- bitcoin
type: post
---

Bitcoin 减半之后，Runes 协议爆火，关于 Bitcoin 上的新资产协议如何跨层迁移的讨论也一下子多了起来。这个问题我一直在想，原因很简单：

1. L1 总会遇到状态爆炸的问题。如果资产不能从链上迁移到链下，或者迁移到别的网络，这个问题最后是无解的。
2. 如果新资产只能在 L2 或者 Offchain 环境发行，却无法回到 L1，也会限制这类资产的上限。

所以关键问题不是“能不能映射一个资产”，而是资产能不能真正迁移。

![](./1781549529541816511-0-GLlPsZ3bAAAEJoV.jpg)

今天大多数跨链方案，本质上还是在一边锁定，在另一边映射。这种方式对 FT 还勉强能用，但一旦资产变成 NFT、SFT，或者未来还会快速演化的数据结构，问题就会越来越复杂。

在 EVM 以及类 EVM 的虚拟机里，资产通常是合约内部账本上的一条记录。资产本身并不能脱离合约移动，只能通过合约之间互相记账来完成组合。Move 带来的一个变化，是它通过类型系统让资产可以在不同合约之间真正移动。我把这种模式理解成“自由状态”：资产不再永远锁死在定义它的那个合约内部。

一旦想到这里，一个自然的问题就出现了：如果资产能在不同合约之间移动，那是不是也应该能在不同网络之间移动？如果未来存在 `move_to(L2)` 或 `move_to(XChain)` 这样的能力，会释放出多少新的可能性？

我之前试过从 Move 的 L1/L2 状态迁移这个方向设计，也在一次 Ethereum 黑客松里尝试过通过 Solidity 表达 Object 模式，让 NFT 能够迁回 L1。但这些方案最后都会卡在同一个结算困境上：如果要让链本身保证迁移的安全性，协议复杂度会迅速升高，甚至可能根本没法把状态从原链清掉。

直到 RGB 和 Ordinals 这类客户端验证资产给了我一个更可行的新方向：如果资产只在 L1 表达所有权、负责防止双花，而资产合法性的验证放在 Offchain，由客户端或者 Indexer 来完成，这个问题其实会简单很多。RGB++ 的 leap 机制，已经在这个方向上给了一个早期验证。

这背后的逻辑是，资产的价值共识首先是人的共识，或者说社会共识。区块链的网络共识和安全机制，是在帮助这种社会共识降低验证成本，而不是反过来规定资产只能以某一种网络形态存在。

举个例子，一个艺术家在 Bitcoin 上铭刻了一件作品，然后把原来的 Inscription 销毁，再在另一条链上重新发布。如果他能证明两个网络里账户之间的关系，这两个表示就完全可以被理解成同一个资产在不同网络上的延续。

这种迁移协议，相比今天的桥模式，至少有三个优势：

1. 不会把大量资产聚集在桥合约或多签里，避免集中性风险。
2. 资产可以真正像水一样在不同网络之间迁移，既缓解状态爆炸，也给新资产发行留下空间。
3. 钱包会从今天这种只信任 RPC 的“笨钱包”，进化成真正有校验能力、能理解多链资产状态的客户端。

这条路当然不容易。它要求资产协议本身内置迁移机制，也要求不同网络之间对所有权表达有更清晰的对齐。但如果未来真要让链上资产大规模流动，我觉得这可能是唯一值得认真走下去的一条路。
