Nervos CKB 经济模型提案正式发布 来谈谈你的看法吧

Crypto-Economic for the Nervos Common Knowledge Base在今天凌晨发布了,不知道在第一时间阅读了这个经济模型的小伙伴们都是什么感觉?来这里说出你的想法、疑惑、问题吧

:point_down: 还没有看过的小伙伴,下面有直达链接哦 :point_down:

PS: RFCs 是所有提案的总入口,其中最新提交的经济模型是以 Pull Request 方式提交,编号为 78。欢迎大家复制此链接至浏览器,或点击「阅读原文」,直达 Nervos CKB 经济模型提案。链接地址:

PPS: Nervos 社区志愿者已经完成了对 CKB 经济模型提案中文版的翻译初稿,希望可以借此帮助大家了解这份白皮书的研究方向,以及 CKB 经济模型的设计思路。欢迎复制此链接至浏览器,查看提案翻译:

2 Likes

本着乱拳打死老师傅的心态,提出一些个人感觉比较有趣的问题,希望其他小伙伴也可以一起来讨论、交流

第一拳:

可以采用UDT去支付手续费这将是一个非常有趣的设计,正常情况下,在支付同样价格的手续费时,用户应该会更愿意用未来看跌或者稳定的token去进行支付,而CKB作为优质资产,用户使用意愿应该会下降。

那么想问一下在设计中,使用UDT支付手续费是如何进行的?是在体系内部形成一个DEX换算成CKB去计算,还是完全交给矿工去选择打包哪个块?在交给矿工选择时是不是又会形成一个新的博弈过程。

第二拳:

从整体设计而言,都在或多或少地在降低CKB的流通性,不管是CKB处于存储状态时矿工可以获得更多利润,还是用户可以将CKB存入Nervos Dao,这一理念是否会引发圈地运动,大量CKB被少数人持有,后期进入的用户要么需要以高于CKB本身价值的价格进行购入,要么就只能进行租用。这一点是怎么考虑的?

尽管大部分token都可能存在只被少数人持有的状态,但是CKB本身作为整个公链网络上的稀缺资源,这种状态的存在是否会影响Nervos生态的建设。

第三拳:

在设计中给到了矿工和持币者很多利好的存在,但是感觉对于CKB上的开发者以及上面Layer2的建设者们的支持力度并没有很大

仅仅通过这种降低开发者开发成本的形式,似乎无法解决DAPP获取用户成本居高不下的问题,这一点是如何考量的?

第四拳:此拳为假拳 :crazy_face:

可不可能在Cell中保存文字、文件、图片、视频等信息?

可以啊,Data 可以保存任意字段。放视频当然前提你要很有钱 :crazy_face::crazy_face::crazy_face:

比如写个表白在上面放个照片在上面还是很刺激的,然后把私钥一扔就一直在上面了。

已经预感到Ryan在主网上线后会做的事情了 :see_no_evil:

  1. 表白
  2. 放照片(很刺激的)
  3. 把私钥一扔

啧,有情况。

回第一拳:在 CKB Demo 中有展示,交易的撮合并不是在矿工那边,矿工只接收交易。你构造一个交易,交易生成目标输出,并提供 CKB,但是交易不完整,用户B 需要做一次确认来完成这笔交易。在 inputs 中用户 B 的 Cell 的unlock script 是没有填写的。需要用户 B 补上才能够给矿工(矿工只收完整交易)。

因此 A 发送的是一个 partial transaction 并不是完整的,还需要用户 B 拿到 partial transaction inputs 中填入解锁。

这个交易是一个 atom swap,矿工能够拿到手续费(你想要稳定币支付,因此是用户 B 用 CKB 和你换了稳定币,把 CKB 给矿工),矿工有利可图为什么不做,除非审查,但是交易是广播给很多节点的,那么多节点总是有出块打包了你的这个 tx。所以类似一个 DEX。

回第二拳,这就关系到生态建设和 token 的分发。因此我们会有很多活动把 Token 散出去。此外矿工群体更考虑的是当前的收益,他们会出售 token 来换这个月花掉的电费等。而我们会有很大一部分 token 是 PoW 挖出去的。

后期比较贵,是很有可能。但是实际上开发需要的空间并不是很大,抵押作为证明所需要的 token 才是更多的(在 L1 上抵押足够的 token,合约设计规则防止作恶,作恶就惩罚。这是保证信任的机制)。而这部分可以是稳定币计价的。

另外买不起房子不是还能租嘛,别慌。之前有聊到过说,如果 90% 的token 都被大户锁在 DAO 里面怎么办,很自然的问题就是没有生态,相对于法币币价是撑不住的,也是一种损失。大户可能会愿意租出去,或者帮助建设生态提高对 token 的需求提高价格。

回第三拳,Dapp 生态建设我觉得更多不是在协议层面来考虑的,当然这是一部分,但是更多的是协议之外的建设。

我们在设计中给miner、user、holder 都各得其所。user 占用空间变相收费给 miner(因为使用的是miner 的硬件设施里面的空间),holder 有 NerovsDAO,miner 有增发获得持续收入。这是一个 longterm 的经济模型设计。

对于开发者来说,相当于现实世界你是买地还是租地来做开发的问题,这是比较合理的设计。Dapp 获取用户,我觉得更多是当下基础设施的问题,主要问题在于用户体验上非常差,用户教育成本高。

这一部分分层设计给了很好的可扩展性,用户体验完全可以在上层解决,体验甚至可以做到和互联网应用接近,而在 Layer 1 用户保管好自己的资产,作为资产存储。

1 Like

这玩意儿太复杂了,我可以理解atom swap,但是CKB又是token又代表了存储空间,所以一个UDT既包含了type script里指向所代表的UDT,本身又是一点点的CKB?

要是B没有CKB是不是还不能完成这笔交易了?

能不能用简单一点的形式给我描述一下整个转账过程:

比如,用户A有100 个Ryan(这是一个UDT) 目前的lock script是用户A,然后手续费也想用Ryan去支付,那么当用户A想把这些Ryan全部转给用户B,用户B没有CKB,那么这笔交易如何完成?

或者你可以给我多举几个生动形象的栗子

最后这一部分我的看法会略有不同,就大多数用户而言,用户对安全的需求和触感是比较低的,用户会更在意的是便捷、方便、体验等因素,所以除了部分持有大量token和安全意识极高的人会考虑把assets主动地转移到Layer1上去,大部分用户会选择存放在更便捷的Layer2上的,这也是Nervos倡导智能合约必须是价值存储的原因。

所以将Layer2的Assets转移到Layer1上这个过程,在大部分情况下是由开发团队去完成,因为设计问题,这一转移过程可能还是强制性的,比如当某Layer2上的价值高于某一界限时,需要抵押更多的CKB去获得Layer2上的更大扩展空间,以及对应的安全性。

这一点既认同又持保留意见呐。

整个设计中的miner、user、holder的划分是否在一定情况下会转变为:miner、holder、common user、developer user

miner:不变
holder:主要应该是指CKB hodler,在生态初期(CKB租赁利润比不上Nervos Dao时)会存放在Nervos Dao中,在生态发展起来之后,部分开始开展租赁业务。
common user:少量CKB持有者以及UDT持有者(主要指非持仓大户的大多数人),他们持有的CKB初期部分会在Nervos Dao中,后期有望加入holder们,在租赁业务中分一杯小羹。
developer user:前期可以通过购买ckb进行开发,后期可以通过租赁ckb继续开发,既需要承担增发带来的变相收费,又需要对抗未来holder对资源的把控。
炒币的就没法分类了,他们可以化身成任一对象

用户 B 用 CKB 换 A 的 UDT,怎么会自己没有 CKB 来存 UDT呢?

我详细讲一下这个 Atom swap 的过程。假设一个场景,用户 A 用 10 0个 UDT(这个 UDT,A 自己有一个 Cell 保存),换取 B 的 10 个 CKB(假设 100 个 UDT 价格是 10 个 CKB,等值)。

B 会 generate_patrial_tx,里面写入三个参数,token_amount, udt_cell_capacity, exchange_capacity,分别是 B 想要换 UDT 的数量(这里就是 100),用户 B 自己设置的放 UDT 的 Cell,换 UDT 发送的 CKB(10个)。

假设放 UDT 需要的空间是一个 CKB 的 Cell,那么 B 的input 就是 11 个 CKB,10 个给 A(exchange_capacity),一个存 UDT(udt_cell_capacity),写入收到的 100 个 UDT(token_amount)

然后 A 把这个 partial_tx 补充完整,output 内容是:修改自己存 UDT 的 Cell(UDT 余额-100),同时拿到 10 个 CKB 的 Cell。

然后这个完整的交易发送到 矿工那边进行验证。

You don‘t get me.
你说的有点像是DEX了,我给你转UDT,为什么你需要拿CKB来换呢?我就是想给你转,无条件,不求回报的那种 :crazy_face:
另外在你的解释中谁支付了矿工的转账手续费呢?

但是我好像明白了一个事情,转账应该是有两种:
(1)接收方有未使用的CKB,那么转账方可以只转UDT,而不需要把存放UDT的CKB都转过去。
(2)如果接收方没有CKB或者没有未使用的CKB(全部存在Nervos Dao或者全部在使用中),那么转账方转UDT时,可能需要再转一部分CKB。

所以问题就来了,每次转账的时候都要check一下接收方有没有CKB么?

你在问我的这一部分中,是用这个 UDT(emmmmm)来支付手续费,手续费原本是 CKB 的。所以你说的是两个场景,我回复的是如何实现 CKB 和 UDT 的atom swap,这个 atom swap 可以实现用 UDT 支付手续费的功能(当然还有很多功能比如做 DEX)。

那当用户 B 没有 CKB 的时候,这和我们上次讨论 airdrop 的时候是一样的了。但是如果 B 没有 CKB 那他到底是不是 Nervos 的用户?

如果他有 CKB 的话我觉得可以有一个机制是说,矿工在验证的时候对 CKB 中写入 UDT 是允许的,这个写入是单向增加 UDT 数量。

支付手续费的话,A 把用来支付手续费的 UDT 给 B,B 接收这个 UDT 放到自己的 Cell,然后input 比 output 大一点点,大的部分给矿工做手续费。

是的,转账的时候,一方是必须有 CKB 的,用来支付给矿工的手续费

矿工收到的只会是 CKB,而不是 UDT,我们所说的可以用 UDT 去支付手续费是需要交易者之间达成一致的

期待基础发行和二级发行的细节,以及nervosDAO的细节部分,非常期待。:crazy_face:

同期待~

按照目前说的关于手续费支付的方式,我没有办法认同可以把它说成“可以用UDT或者UDT+CKB的方式去支付手续费”,自始至终都是CKB在支付手续费。