第章 引言
比特现金BCH将在5月15日执行一次硬分叉升级,主要是做三个升级,第一将区块大小上限从8M提升到32M;第二是恢复9个早期在比特币上被禁用的操作码;第三是将交易数据结构中的一个字段OP_RETURN从80字节增加到220字节。
这些改变是必要的吗?值得使用一次硬分叉来部署吗?
第1章 什么是操作码?
要理解这次硬分叉升级,一定得先有一些基础知识,你得知道啥叫操作码。
“加、减、乘、除”是基本的数学运算符号,“大于>、小于
我们可以使用所有这些数学符号来描述、推理、设计我们这个世界绝大量的现象,比如做数学题、买菜、盖楼、描述天体运动……
而比特币的操作码就类似于数学运算符,使用这些操作码可以编写程序,实现对数据的特定操作,程序用来实现我们想要的一些功能。
比如OP_CAT是这一次BCH硬分叉升级要激活的一个操作码,是可以用来拼接两个字符串,如果使用这种功能来拼接哈希值,就可以实现简单的梅克尔树验证。
反正就是样,程序员没有这些操作码,就不可能编出任何有用的代码。
这些要激活的操作码都是中本聪设计的,但在7年前,这些操作码怎么用,安全性怎么样,在社区都没有底,所以被禁止了。
但现在7年过去了,整个区块链的设计在理论和实践层面都准备好了,以太坊的成功证明了区块链可以使用更复杂的程序,比特币的代码也被更多的人研究透了,BCH重新启动这些操作的安全性和实用性问题都解决了。是时候重启它们了。
第2章 什么是OP_RETURN?
OP_RETURN的中文名字叫“数据输出操作符”,这是比特币交易数据结构里输出部分的一个字段。字段就是比特币交易数据结构中的一部分。OP_RETURN这一部分是可选的,你可以啥都不写。
比特币交易输出一般是一定数量的UTXO,就是未花费输出,这就是比特币本身。但OP_RETURN输出不是UTXO,这里面可以是别的数据。
比特币主要运用是支付领域,但使用OP_RETURN的数据存储功能,就可以让比特币运用领域大大超越支付领域。
和OP_RETURN相似的是Coinbase交易的输入字段可以写任意的信息,比如矿工就会利用Coinbase交易的输入字段做投票支持哪个版本的软件。Coinbase交易的输入字段还被矿工拿来做刻字服务,号称永不可删除的留言,就有很多人用它来给别人发狗粮。OP_RETURN是只要发交易的人就可以留言,而Coinbase交易只能是矿工才能写入留言。
OP_RETURN现在可用的空间只有80字节,也就只够20多个汉字,Coinbase交易的输入字段有100字节的空间。这一次BCH硬分叉要把OP_RETURN的字节空间扩大到220字节。
OP_RETURN一开始是80字节,后来被Core开发组缩小到40字节,但在2015年Core开发组又恢复到了80字节。现在BCH要提升到220字节。
第3章 什么是32M区块大小?
这个问题比较简单。
用户发送的比特币交易是一笔数据,一般需要200到500字节左右的数据。而所有这些数据会被矿工验证后打包进一个叫区块的数据块。目前BTC这个区块大小上限是1M(交易区块大小是1M,见证区块大小上限是3M),而BCH区块大小上限是8M。因为每一笔交易是200到500字节左右,所以BCH的8M区块被填满的话大约可以装1.5万笔交易左右。而BCH平均10分钟一个区块, 如果10分钟内有超过1.5万笔交易发生,那多出来的交易就要排到下一个区块才能被确认打包。
这一次硬分叉就是要将这8M改为32M,这样就可以容纳更多的潜在交易,比8M提高4倍。
第4章 为什么在8M还没填满的情况下就要扩容到32M?
最基本的原因是现在的硬件条件处理32M的区块没有任何障碍,硬盘、带宽、CPU都不会有问题。你以为我们傻啊,要打肿脸来充胖子啊;BCH也不会像BTC那么傻,明明能吃32斤饭,非得饿着吃1斤。
关于是否让普通用户来运行完整节点的争吵实在是太多了,乱七八糟的,本文不做讨论,我只说结论。32M的区块要是被填满的话,我肯定发财了,肯定买得起够装一个完整节点的电脑和带宽了,到时我一人运行十个。如果你现在担心BCH填满32M区块会导致完整节点被少数人控制,那你应该现在就去买BCH,等填满了你就成了富人了,你来运行节点好了。担心个屁。如果你觉得你发财了你也不会有情怀运行完整节点,那BCH网络不需要你来保护,你在那时候卖掉就好了。至于矿工节点,那更不用你担心了,因为挣钱,肯定会更多人的来搞挖矿。
我只担心填不满,不担心填满后没人运行完整节点,因为我有BCH。那些担心的,赶紧去买BCH就不会担心了。
第二个原因是众多操作码被重新激活,会给BCH网络带来大量的潜在新的应用场景,比如彩色币和无状态智能合约,现在就需要为这些新的应用场景准备好区块空间。别到时候又要硬分叉来扩容。
第三个原因是OP_RETURN字段空间上升到220字节后有可能会让一笔交易的字节数增加,即增加更多的非UTXO输出数据。这些字节数是要被填进区块里的,你得准备好空间给人家住啊。
第5章 为什么要这次硬分叉?
这次硬分叉重新激活的操作码、提升OP_RETURN字节空间、提升区块大小上限,都明确指向一个方向——让BCH支持更多的创新。在安全和去中心化的前提下支持更多的创新。
更丰富的操作码可以让工程师编写更复杂的程序,可以实现更丰富的应用场景。
OP_RETURN字段就是用来扩展比特币非支付应用场景的,提升字节空间可以让这些应用场景更加丰富。
继比特币成功之后,众多区块链产品被发明出来,而ETH的成功也证明了非支付功能的区块链应用是市场需求的。现在BCH要向这些新的应用场景前进了。
安全和去中心化已经是各大区块链产品的标配情况下,还只停留在支付应用的区块链产品,就会面临其他区块链产品的竞争压力了。这就像汽车的安全性已经是所有车厂家的标配了,更丰富的功能就一定要被塞进车里。什么真皮沙发、德国冰箱、高质音箱,都给我往里整,不然市场就会淘汰你。还停留在纯粹的支付应用市场上的区块链不得不思考下竞争压力。
第6章 结束语
在5月15日之后的BCH会更好玩。
(如果你想学习比特币和区块链知识,欢迎加入我的小密圈)
领取专属 10元无门槛券
私享最新 技术干货