NexisDAO:让Nervos DAO的资产流动起来?

NexisDAO解决了CKB在NervosDAO上流动性差的问题。NervosDAO作为Nervos的一个系统合约,是 CKB 经济模型的重要亮点之一,持有者可以随时将他们的 CKB 存入 NervosDAO 中从获取收益,但是NervosDAO 是一种定期存款,存在一个最短存款期限,造成CKB流动性比较差。dCKB是NexisDAO针对NervosDAO实现的一个代币。用户将CKB存入NervosDAO后,可以同时铸造相同数量的dCKB。这样既有NervosDAO的固定收益,又有dCKB的流动性,并且dCKB可以自由交易。当然,想要从NervosDAO取款,需要销毁对应的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 提取交易来说,所有 Output 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的阶段1的取款,对应的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这边没有任何修改。

4 Likes

赞!看到你们官网了,貌似官网还没有完善,链接点不了,有计划什么时间上主网吗?

感谢关注,我们现在是测试阶段,所以官网主页的链接暂时屏蔽不可点击,等测试完毕就会在主网部署,欢迎各位前来体验。

Outpu2 和 Output3 的 CKB capacity 由谁出?


dCKB 可以流转吗?

Alice 通过这种方式存入 NexisDAO,然后将获得的 dCKB 卖给了 Bob,但是按照 NexisDAO 的设计,Bob 取出锁定在 Nervos DAO 内的 CKB 还需要 DAO Info 这个 cell。而这个 DAO Info 还在 Alice 这边。

而且根据规则,“DAO Info”:判断input1、input2的tx_hash一致,貌似 Alice 一旦转让这个 DAO Info,合约即无法验证通过。

2 Likes

output2和output3的CKB capacity都是由用户自己出。这就是为了流动性付出的代价,取款时能够取回这部分的capacity。
dCKB可以任意流转。dCKB就是一种UDT,只是它是通过智能合约铸造出来的。
Bob无法取出CKB,Nervos DAO中的利息还是属于Alice的。Alice要取出CKB,则需要再买入dCKB才行。
DAO Info无法转让。DAO中的利息只是相对CKB来说只是小头,对流动性需求影响比较小。后续如果有这个需求,我们会考虑升级合约,实现可转让功能。

所以 dCKB 不具备任何收益属性?收益仍属于存 DAO 的人,那 Bob 如果不能打折购买 dCKB,那我想不出来 Bob 还有什么购买 dCKB 的理由。

DAO Info 无法转让是如何规定的,合约层面规定的?而且按照合约的设计,要求 input1、input2 的 tx_hash 完全一致,等于是这个 DAO Info 完全无法动啊,用户一旦不小心转了这个 DAO Info cell,所有的 Nervos DAO 存款直接永远无法取出。如果不是合约层规定的 DAO Info cell 完全不能动,那等于间接地将这种风险转移给了用户。

1 Like

每个dCKB都是锁定了CKB铸造出来的,同时被锁定的还有利息。所以它的价值略高于CKB。
如果Alice急需用钱、或者想实现杠杆,就可以卖出dCKB,从交易所里面换取CKB或其他资产。
DAO Info无法转让是在合约中限制的,它的逻辑就只有创建和销毁,想转的时候,由于合约中的逻辑验证失败,会导致转让失败。
dCKB对其他合约来说:角色跟wETH类似,其他合约只需要支持标准的UDT就行,不需要专门针对CKB实现相应的逻辑。对DEFI开发来说更简单

dCKB会上线交易所嘛?存入CKB的DAO就会拥dCKB,取出就没有dCKB,那还有啥意义?我以为是存入DAO中的CKB就会拥有dCKB,另外的福利代币,原谅我是小白问这些问题!

dCKB的出现是为了解决CKB锁定之后缺乏流动性的问题
至于上不上所,暂时不是我们考虑的问题,能让Nervos生态更完整和多样化才是我们的目标

我一直以为是存入CKB的DAO过后享受CKB的利息,也在享受dCKB的另外代币的赠送?那是我理解错了?

不上交易所 何来流动性 就是给你置换一个币 有何用?

就是 没软用

把dCKB比喻成MakerDao,合理嘛?

被你发现了,但我觉得把NexisDAO比做MakerDao更贴切。

那行,祝dCKB成为下一个MakerDao千亿市场

Output