NexisDAO(让 Nervos DAO 的资产流动起来)
NexisDAO 将解决 CKB 在 Nervos DAO 上流动性差的问题。 Nervos DAO 作为 Nervos 的一个系统合约,是 CKB 经济模型的重要亮点之一,持有者可以随时将他们的 CKB 存入 Nervos DAO 中从而获取收益。但是,Nervos DAO 是一种定期存款,存在一个最短存款期限,造成 CKB 流动性比较差。
dCKB 是 NexisDAO 针对 Nervos DAO 实现的一个代币。 用户将 CKB 存入 Nervos DAO 后,可以同时铸造相同数量的 dCKB。这样既有 Nervos DAO 的固定收益,又有 dCKB 的流动性,并且 dCKB 可以自由交易。当然,想要从 Nervos DAO 取款,需要销毁对应的 dCKB。
这些功能都是基于智能合约实现的。 默认的 Nervos DAO,存款时,存款单的拥有者是用户自己;而 dCKB 存款单的拥有者是智能合约,智能合约会给用户发放另一张存单。
同时,基于 xUDT,铸造出一批 dCKB(数量等于存款单上的 CKB 数量),用户想从 Nervos DAO 中取出已存储的 CKB,需要销毁 dCKB 和存单。
存款流程
普通的 Nervos DAO 交易:
Input1: Cell: {
capacity: 10000
lock: User
type: null
data: null
} Output1: Cell: {
capacity: 10000
lock: User
type: Nervos DAO
data: 0x0000000000000000
}
dCKB的交易:
Input: Cell: {
capacity: 10300
lock: User
type: null
data: null
} Output1: Cell: {
capacity: 10000
lock: //特殊的lock
type: Nervos DAO
data: 0x0000000000000000
}Output2: Cell: {
capacity: 150
lock: User
type: DAO Info
data: 10000
}Output3: Cell: {
capacity: 150
lock: User
type: dCKB(xUDT)
data: 10000
}
从上面的交易可以看出,Nervos DAO 存款时,增加了 2 个 Cell,且 Nervos DAO 的 lock 换成了特殊的 lock。
- DAO Info:用户的存单信息,用于铸造/销毁 dCKB,处理存取款流程。它的拥有者是用户,所以只有用户能够取款。
- 特殊 lock:要求解锁时,存在 DAO Info 的智能合约。
- dCKB:智能合约铸造出来的代币,用户可以任意处置它,如转账、买卖等。
- DAO Info 要求 output1 的 lock 为特殊的 lock
- DAO Info 要求 output1 的 type 为 Nervos DAO
- DAO Info 要求 data 中保存的是要铸造的 dCKB 数量
- DAO Info 要求 dCKB 增加的数量等于 CKB 锁定数量
- DAO Info 要求 Nervos DAO 处于存款流程
- dCKB 为 xUDT,它的 args 为 DAO Info
- Nervos DAO:验证对应的存款流程
取款
与存款过程不同,从 Nervos DAO 取出需要两个步骤:
在第一阶段,第一个交易是将 Nervos DAO 存款单转换为 Nervos DAO 取款单。
在第二阶段,第二个交易是从 Nervos DAO 取款单中提取代币。
取款阶段 1
默认的 Nervos DAO 流程:
Input1: Cell: {
capacity: 10000
lock: User
type: Nervos DAO
data: 0x0000000000000000
}Output1: Cell: {
capacity: 10000
lock: User
type: Nervos DAO
data: 0x0012300000000000
}
dCKB 的取款流程:
Input1: Cell: {
capacity: 10000
lock: //特殊的lock
type: Nervos DAO
data: 0x0000000000000000
}Input2: Cell: {
capacity: 150
lock: User
type: DAO Info
data: 10000
}Input3: Cell: {
capacity: 150
lock: User
type: dCKB(UDT)
data: 10000
}Output1: Cell: {
capacity: 10000
lock: User
type: Nervos DAO
data: 0x0012300000000000
}Output2: Cell: {
capacity: 300
lock: User
type: null
data: null
}
通过上面的交易对比,可以发现,dCKB 的取款流程要求用户同时提供「DAO Info」的存单和 dCKB。
通过销毁存单和 dCKB,实现 Nervos DAO 的阶段一的取款,对应的 Cell 就交给用户了,后续的正式取款就跟默认的流程一样。
智能合约的校验逻辑:
- 特殊的 lock:判断 input 中存在 DAO Info
- DAO Info:判断 input1 为 Nervos DAO
- DAO Info:判断 input1、input2 的 tx_hash 一致
- DAO Info:判断 Nervos DAO 流程处于「取款阶段 1」
- DAO Info:判断 dCKB 销毁的数量等于 CKB 存款数量
- Nervos DAO:验证对应的取款流程
取款阶段 2
该流程完全按照 Nervos DAO 合约的逻辑,dCKB 这边没有任何修改。
关于 NexisDAO,欢迎移步 Nervos Talk,加入下方链接参与讨论:
- https://talk.nervos.org/t/nex...
推荐阅读
- 诗歌:|诗歌: 《让我们举起世界杯,干了!》
- 微习惯复盘
- 研学让生活更美好
- 让爱永驻心中
- 让眼泪滑落,成为骄傲(三十九)
- 不让记忆、感觉、情绪成为孩子的负累|不让记忆、感觉、情绪成为孩子的负累|《全脑教养法》(四)
- 句子分享
- 感恩遇见长投-让我重新审视自己
- 哪一本书让我感动过()
- 推倒心灵的墙,让爱继续流动