一起来讨论:CKB 钱包的特点(开发与用户体验)

伴随着越来越多的钱包与 Nervos 战略合作,CKB 应该在主网上线初期就能够在主流钱包上使用 ~

区块链钱包是用户与区块链交互的重要工具,CKB 独特的 Cell 模型必然会带来 CKB 钱包的开发与用户体验的不同。

由于我对于技术的理解不深,本文旨在抛装引玉,写的也比较随意,大家一起讨论与学习 CKB 钱包开发与用户体验的与众不同吧 ~ 如果是能够提供解决方案,那就更棒啦!

大家可以先学习 Jan 的 理解CKB的Cell模型、CKB 的数据结构中 Cell 部分等知识~

一:最小 CKB 原则

有位小伙伴曾经在此处谈到

这里的知识点是:CKB 的最小 Cell 是 60 CKB,这对于应用开发与体验意味着什么呢?

1)用户最低转账额度为 60 CKB。当用户 A 转账 0 - 59.99999999 CKB给用户 B 的时候,由于最小 CKB 原则,这笔交易是肯定无法成功的。假设用户希望转账低于 60 CKB , B 需要将自己的 Cell 作为 Input,这就需要 B 签名交易了,这就灰常麻烦了。

2)假设用户 A 只有 119 CKB,用户希望转账 60 CKB,由于找零不可能是 59 CKB,用户要发起转账,59 CKB 可能不得不成为交易费!这意味着假设用户 A 拥有 N CKB,其最大转账金额为 N CKB,第二大的转账金额为:N - 60 - tx fee.

如何解决最小 CKB 原则的体验问题呢?看过去并不容易向用户解释,前期只能在用户侧提示和限制合适的交易金额。

二:接受代币要需要CKB

CKB UDT 的账本类似于 UTXO 模型,这种方式和 Ethereum 的 token 合约差异很大,Ethereum 的 token 合约维持着一本总账。而 CKB UDT 属于 First Class Asset,只有用户的私钥能够决定 UDT 的状态变更,用户也只知道自己有多少。详细的论述可以看:First-class asset

这时候就出现了另外的一个问题:代币也是需要存在 Cell 中的,也就是**你想要接收代币,你的账号是需要 CKB 的哦**!而且你用户的 Cell 种类越多,你需要的 CKB 越多!在 CKB 中,所谓用户持有代币,是指用户有一个 Cell 的 Type 指向代币合约,Data 存有具体的代币数值。

这其实是有好处的,在以太坊我们经常会遇到自己的 Imtoken 钱包无缘无故出现一些垃圾币!在 CKB ,散币的项目有两种散币方式:1)必须征得用户同意并签名提供一个空 Cell;2)散币的项目为用户提供一个空 Cell,并将 UDT 放置于该 Cell 中。

这种体验,其实和使用 USDT 的时候需要 BTC 是很类似的,因为交易是需要付手续费的 ~ 和在以太坊转账 token 需要 ETH 也类似。

三:交易组装的 Data 问题

一般来说,当 Cell 的 Type 与 Data 为空的时候,这是一个空 Cell,对空 Cell 进行转账是不会引发问题的。

但是!当 Type 与 Data 不为空的情况下,这有可能是一个合约,代表着用户持有的某种价值昂贵的代币,也可能代表着某种线下资产:譬如一处房产!这种情况下,钱包在组装交易的时候就万万不能将此作为 Input,并将 output 设置为空 Cell。这意味着将该 Cell 的信息清空,用户在区块链世界中丧失了该财产!

这对于钱包开发至关重要,不要轻易处理有 Data 的 Cell !

这引申出另外的一个问题:在什么样的情况,用户可以清空某个 Cell ? 用户是否有能力进行判断?当 CKB 的应用越来越繁荣,CKB 的 Data 处理也许是一门小生意!

四:Staking !

这个就不多说了,CKB 独特的二级增发模型在钱包层面的展示就是:NervosDAO。用户将 CKB 锁在 NervosDAO 就能够享受到一定收益,这也是目前火热的 staking 经济。

相信这是 CKB 钱包的 P0 需求!

当然,还有很多可以讨论的:

面临这些问题,如何提升用户体验?如何教育用户?这都是后续 Adoption 要面临的问题 ~

7 Likes