乐趣区

关于区块链: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:智能合约铸造进去的代币,用户能够任意处理它,如转账、交易等。

智能合约的校验逻辑:

  1. DAO Info 要求 output1 的 lock 为非凡的 lock
  2. DAO Info 要求 output1 的 type 为 Nervos DAO
  3. DAO Info 要求 data 中保留的是要铸造的 dCKB 数量
  4. DAO Info 要求 dCKB 减少的数量等于 CKB 锁定数量
  5. DAO Info 要求 Nervos DAO 处于贷款流程
  6. dCKB 为 xUDT,它的 args 为 DAO Info
  7. Nervos DAO:验证对应的贷款流程
     
     

    取款

     

用户能够随时发送交易从 Nervos DAO 中取出已存储的 CKByte(但这里会波及到一个锁定期来确定什么时候能够取出代币)。一个 Nervos DAO Cell 取得的利息只会在取出阶段发放,这意味着对于一个蕴含 Nervos DAO 提取交易来说,所有 Onput Cell 的 Capacity 总和可能超过所有 Input Cell 的 Capacity 总和。

与贷款过程不同,从 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 就交给用户了,后续的正式取款就跟默认的流程一样。

智能合约的校验逻辑:

  1. 非凡的 lock:判断 input 中存在 DAO Info
  2. DAO Info:判断 input1 为 Nervos DAO
  3. DAO Info:判断 input1、input2 的 tx_hash 统一
  4. DAO Info:判断 Nervos DAO 流程处于「取款阶段 1」
  5. DAO Info:判断 dCKB 销毁的数量等于 CKB 贷款数量
  6. Nervos DAO:验证对应的取款流程
     

    取款阶段 2

     

阶段 2 的交易是从 Nervos DAO 中取出已存的代币和利息。留神,与第一阶段交易不同的是, 用户能够在任何时候发送第一阶段的交易,但在第二阶段的交易中,Nervos DAO 要求贷款周期到了才可能真正取出 CKB。 以后的周期大概是 1 个月,如果你在半个月的时候执行了「取款阶段 1」,则须要再期待半个月,才可能执行「取款阶段 2」。

该流程齐全依照 Nervos DAO 合约的逻辑,dCKB 这边没有任何批改。

对于 NexisDAO,欢送移步 Nervos Talk,退出下方链接参加探讨:

  • https://talk.nervos.org/t/nex…

 

退出移动版