# 来自 NervosDao 的抵押用衍生品资产 --dCKB V2 在以前那篇[突破NervosDAO 的流动性限制](https://talk.nervos.org/t/break-the-liquidity-limitation-of-nervosdao/4653),我描述了一个可利用 NervosDao 中的 CKB 的解决方案。其基本思想是从 NervosDAO 创建一个衍生代币dCKB,并实时跟踪 NervosDAO 的利率,这样 dCKB 用户就可以将 dCKB 抵押到 Layer2 或 DeFi 项目中,并仍然可以获得 NervosDAO 的奖励。 但由于追踪 NervosDao 的利息是困难的,因此该解决方案并不实用。为了继续追踪 NervosDao 的收益,我们需要在每次交易时重新计算衍生代币 dCKB 的数量,计算销毁的 dCKB 并取回相应的 CKB 金额更为复杂。让 dCKB 得到加密钱包的支持也是不切实际的。 所以现在我提出了一个受限但更简单的解决方案,与旧的解决方案相比,它获得了一些优势,但也失去了一些能力。 在新的解决方案中,我们使用的不是扩展的 sUDT 格式,而是标准的 sUDT 协议去制造 dCKB,因此任何支持 sUDT 的协议或工具都可以轻松地利用我们新的 dCKB token。与旧协议相比,我们放弃了来自不同 NervodDAO 的 cell 可置换 token 的能力。 本文用词: * sUDT—简单用户定义代币 [RFC:最简 UDT 草案规范](https://talk.nervos.org/t/rfc-simple-udt-draft-spec/4333)。 * Meta cell— 保存一些衍生品元数据的 Cell。 * dCKB -我们提出的新 token,来自NervosDAO, dCKB 本身是一个sUDT。 * custodian cell-保存从 Nervos Dao 中取出的 cell。 我们将CKB 的交易描述为: `输入+ [deps] =>输出。` ## 铸造 dCKB 存入 NervosDao: `cells => DAO + Meta cell` 起初,我们将 CKB 存入 NervosDAO,并在同一交易中创建一个 Meta cell。 Meta Cell 数据是一个 uint64 的数字,这表示我们发出了多少dCKB。I 的起始值为0。 铸造 dCKB: `Meta cell + [DAO] => Meta cell + dCKB` 我们使用 Meta cell 作为输入,生成 dCKB 的 sUDT cell, sUDT的管理员 lock 是 Meta cell 的 lock。Meta cell 的类型脚本确保我们发出的 token 数量必须小于 NervosDAO cell 中的 CKB 数量。 例如,NervosDAO cell 包含X CKB + Y的利息,我们已经发出了 i 个dCKB (i 是 meta cell 的数据,如果我们从未发行 dCKB 那就是0),然后我们可以发行 N 个 dCKB,他将满足 N+i< = X + Y Meta cell 的数据将会更新成 I' = N + I. 铸造 dCKB 可以执行多次,如果我们已经获得足够数量的 NervosDao利息,我们可以铸造新的 dCKB。注意 dCKB 就是一个 sUDT token,所以如果某钱包已经支持 sUDT,那么这个钱包也支持 dCKB。但是由于 dCKB 的所有者的 lock 是 Meta cell的 lock ,它是唯一的,每次我们创建一个NervosDAO cell,Alice 存入的 dCKB 'A,他将不能与Bob存入的dCKB 'B 有可互换性。这是我们为了简化协议而放弃的功能。因此,dCKB 的唯一用途是抵押进入 layer2 或 Defi 项目之中。 ## 交易 由于我们的 dCKB 就是 sUDT ,除了我们不能混合来自上面提到的不同 NervosDao 的 dCKB token 之外,我们也遵循相同的 sUDT 规则来交易 token。DeFi 或 Layer2 项目可以将 dCKB 视为具有与 CKB 相同的价值,以激励持有 NervosDAO CKB 的用户抵押,dCKB 用户可以自由地将 dCKB 到不同的项目,以追求更多的利润。 ## 烧币 提取 NervosDAO cell: dCKB + DAO + Meta cell => dCKB + custodian cell + CKB 此操作将 NervosDAO cell 转换为 custodian cell,并将 Meta cell 返回给存款人。 Custodian Cell 是一种暂时的 Cell ,它含有来自 Nervos Dao 的CKB。 Burn dCKB: `custodian cell + dCKB =>custodian cell + CKB ` dCKB 持有人可以烧毁 dCKB,并从相应的custodian cell 获取 CKB。 销毁 custodian cell : Custodian cell => cell 在烧毁所有 dCKB token 后,将 Custodian cell 转换为正常 cell 并送回给原 NervosDAO 存款人。 ## 结论 通过利用 sUDT 协议,我们提供了一种方法,可以轻松地将 dCKB 集成到已经支持 sUDT 的 Layer2/DeFi项目和工具中。 我们还通过消除旧 dCKB 的可互换性来简化协议,并将重点放在抵押的这个特性上。 优点: - 与sUDT兼容,用户可以在不同的项目之间重新抵押自己的 dckb。 - 用户可以根据 NervosDAO 的利息不断地获得 dCKB token。 - 由于易于集成,DeFi 或 layer2 项目应该只需要付出最小的力气就能支持dCKB。 缺点 - 我们失去了来自不同 NervosDao cell 的代币的可置换性。