2021-12-08 23:23 | 出处: 字节元CKB
大家好,我是字节君!
在上周的 YokaiSwap IDO 活动中,大家的参与热情远远超乎字节君的想象,24 小时冲进去了将近 22.37 亿 CKB,是目标额的 266 倍!
当然,也有一小部分小伙伴在参与的过程中遇到了一些小麻烦、小困惑,比如:
- 为什么 CKB 有长地址、短地址之分?
- 在某个交易所提现 CKB 时,为什么它不支持长地址?
- 到底是用 L1 地址参与还是 L2 地址参与?
今天,字节君将给大家科普 CKB 转账和 CKB 地址相关的内容,相信大家看完文章以后,以上全部的疑问都会彻底搞懂。
在正式开始之前,字节君先给大家讲 2 个有关比特币的冷知识:1、比特币(BTC)转账的手续费(即矿工费)不是强制的;2、比特币也有最小转账金额限制。
天下没有免费的午餐,所以很多人想当然地认为,比特币转账一定需要手续费。其实,这是一个误解。在比特币的底层系统中,并没有对手续费做规定。也就是说,手续费并不是强制要收取的。
在早期,由于比特币价格低,链上转账数目少,很多矿工并不在意用户是否支付了手续费,所以很多没有支付手续费的比特币也被矿工打包确认了。比如下图,区块高度 10 万,这笔比特币转账就没有任何手续费。
但随着比特币价格的快速上扬,使用的人越来越多,链上转账也越来越多,为了让自己的利益最大化,矿工开始优先打包有手续费的成交。现在,如果转账不支付手续费,基本上不会被矿工打包确认。
再来说说第二个冷知识。
为了防止用户创建不经济的输出(Uneconomical Outputs,指价值低于交易费用的转账),从而增加 UTXO 集的大小,比特币核心(Bitcoin Core)和其他的一些比特币节点通常会拒绝转发或挖掘输出低于一定值(称为粉尘限制,dust limit)的交易。这个限制通常情况下是 546 聪,只不过因为这个数值实在太小,所以大家感觉不到这个限制而已。
回到正题,同比特币一样,CKB 也有最小转账金额限制——61CKB。也就是说,你给任何 CKB 地址转账的时候,最少转 61 CKB。
看到这里,聪明的小伙伴或许想到了,如果你给一个新地址转入 61 CKB,那新地址的这 61 个 CKB 就无法转出了,因为转出的时候需要扣除手续费(即矿工费,虽然这个费用极其低,不到万分之一 CKB,但不能忽略不计),实际转出金额就小于 61 CKB 了,没有达到最小数额限制,因此无法转出。
那有没有解决方案呢?
有的。聪明的小伙伴或许也想到了,可以再往这个地址里转入 61 CKB 或者更多,然后将这个地址里的所有 CKB 一次性全部转出。当然,这样会比较麻烦,所以字节君建议大家在 CKB 转账的时候,最少转入 62 CKB,相当于预留了 1 个 CKB 当手续费。
CKB 设置最小转账金额限制的原因,和比特币有所不同。CKB 被誉为是「数字土地」,因为在 Nervos CKB 区块链采用了 Cell 模型(比特币 UTXO 模型的改进版),在 CKB 链上存储任何东西(状态、合约信息、脚本等等),都需要占用链上空间,而在物理上 1 个 CKB 等于 1 个字节(Byte)的链上空间。
对于一个新的 CKB 地址而言,如果要在里面存 CKB,就需要部署相关信息,最少需要用到 61 个字节的链上空间(部署 type script 类型脚本,需要占用 8 个字节的空间;部署 lock script 锁定脚本,需要占用 53 个字节的空间,合计 61 个字节)。
因此,任何默认的 CKB 地址,其余额必须大于等于 61 CKB,或者为 0(相当于没有部署信息,或者已经抹去了之前部署的信息)。
CKB 转账,本质是 cell 的转让,每一次转账都会生成新的 cell,这和比特币转账本质是 UTXO 的转让类似。如果你想更深入地理解,字节君推荐阅读《科普 | 没有 UTXO,比特币或不能如此稳定运行十多年》和《如何理解 Cell 模型》:
https://docs.ckb.dev/docs/qa/ckb/about-cell
如果是 Nervos DAO,大家转入 CKB 的时候,最小转入金额限制是 102 CKB。这是因为 Nervos DAO 需要在链上存储的信息更多,需要更大的容量的 cell,占用的链上空间也更多(容量占 8 个字节,锁定脚本占 53 个字节,类型脚本占 33 个字节,数据占 8 个字节,合计 102 字节)。
如果是 Nervos CKB 上的 sUDT(简单用户自定义代币,类似以太坊上的 ERC-20、ERC-721 代币),则最少需要容量为 142 CKB 的 cell。无论是之前的 Coffee Token,还是秘宝的 NFT,转账时大家不需要额外支付手续费,这是因为它们的背后有 143 CKB,多出的 1 个 CKB 用作手续费。在目前手续费不到万分之一 CKB 的情况下,Coffee Token 和秘宝 NFT 可以「免费」转账上万次。
不同的应用,不同的操作,需要占用的链上空间不尽相同。所以,大家在 BestDAS 上挂单,在 YokaiSwap 中从 L1 转入 L2,在 NexisDAO 上生成 dCKB 或者质押生成美元稳定币 TAI 等等,会看到不同的 CKB 最少转入金额限制或者是不同的 CKB 数量占用。
这么多数字相信大家很难记住,但如果不注意又可能会遇上类似「我钱包里明明有 61 个 CKB,为什么转不出去」这样的困境,那怎么解决呢?
字节君认为,目前最好的办法是,操作时(尤其是第一次操作时),对照着应用开发者给出的教程一步一步来,或者参考《Nervos 入门手册》中的教程来操作。另外,大部分应用都会提示某些操作步骤对 CKB 有最少数量要求,需要大家在操作时细心留意。
《Nervos 入门手册》快捷网址:ckborg.bit.host
说完了 CKB 转账和 CKB 占用的内容,接下去字节君给大家聊聊 CKB 地址。
Nervos 在设计之初就采用了分层架构,所以会有 Layer 1 和各种不同的 Layer 2。Layer 1 层是 CKB 区块链,类似于以太坊生态的 ETH 链。CKB 在 Layer 1 上的地址,遵循 BIP-173 规则,目前常用的有短地址和长地址两种格式。
- 短地址格式:
ckb1qypwvzc0pzu39zfw3yyaev84mexda04f80jsqscs9y
- 长地址格式:
ckb1qjl58smqy32hnrq6vxjedcxe2fugvnz497h7yvwqvwel40uh4rltcudl0qwf74tcvmc9t5fxasmu7vfm6qsucg6xtye
目前,Neuron 钱包和 imToken 钱包默认使用的都是 CKB 短地址格式,长度为 46 位。在 BestDAS 中,首选地址是长地址格式,备用地址是短地址格式。ckb.pw(Portal Wallet)可以将以太坊地址映射到 CKB 的长地址,从而实现用以太坊地址接收 CKB 的神奇功能。
参与过上周 YokaiSwap 某活动的小伙伴,可能遇到过自己的 CKB 在不支持长地址的交易所里,提现时输入地址会提示地址无效的情况。目前的解决方案有 2 种:
1、通过钱包中转的方式:比如 imToken,先提到 imToken 中的 CKB 钱包里,再从 imToken 转到长地址;
2、通过交易所中转的方式:比如,提到币安,再从币安提现到长地址。