从最底层解析隔离见证扩容分叉之争

in #cn7 years ago

不知道以后的大学会不会专门开一门比特币基本原理。

币圈很多人更关注的是价格,而忽略其后的技术。但投资本质上来说就是对认知的变现,特别是在这样一个变的现很可能是他人带血筹码的市场里,比别人多理解一步,可能更为重要。也因此,本号一直立志于对底层技术的研习,并尽可能浅显易懂的传递出来,之前写过关于比特币隔离见证和分叉的文章,感觉还是太流于表面,现在还能留在币圈读文章的都是精英了,所以咱们再深入一点,再深入一点。

之前我们讲到隔离见证,举了一个例子,隔离见证就像对于一个不断要被塞满的衣柜,在不增加空间的情况下怎么办,把用不到的衣物拿出来找个收纳箱放起来。这个例子只是方便大家理解,但具体细节是什么,交易中哪部分被拿了出来,咱们先从比特币的交易开始。

买入几个比特币,存入某个地址的钱包,就像把多少多少钱存入你的余额宝,这可能是大部分人的理解,余额宝的数据库会有一个你的账户,记录你有多少存款,什么时候花费多少,什么时候又存入多少。

但其实比特币系统是另一种存在,或者可以说根本就没有比特币这个概念,比特币交易的基本单位是未经花费的一个交易输出,简称UTXO。比如我们说小明有5个比特币,其实是当前区块链账本中有若干笔交易的UTXO收款地址是小明的地址,而这些交易总额是5。

也就是说,在区块链的账本中,记录的是每笔交易的来源和去向,而不是像银行或支付宝系统会给每个人创建一个记录余额变动的账户,只是你的比特币钱包会把你的交易加加减减计算出一个余额,让你觉着像有个账户的感觉,其实是不存在的哈。

图片来源:理解比特币脚本

知道了这一点,我们再来看上面这幅图,交易a,Alice转账给Bob;交易b,Bob转账给Carol;交易c,Carol转账给Dave。这也是为啥有人称区块链为价值互联网,钱在交易间流动。

每一笔交易都是一个包含输入输出数据结构。Alice在转账给Bob的时候,『输出交易』中给出了Bob的『钱包地址』(等价于『公钥哈希』);当Bob想要转账给Carol的时候,他要证明自己拥有这个『钱包地址』对应的『私钥』,所以在『输入交易』中给出了自己的『公钥』以及使用『私钥』对交易的签名。其中,这个公钥及私钥签名部分合起来我们称为解锁脚本(scriptSig)

对于公钥私钥签名看着就头大的亲,咱可以这样理解:

你就把交易a中的『输出脚本』想象成是Alice为Bob出的数学题,Bob想要花费Alice输出的这部分比特币,就要解开这道数学题。而题解就在交易b的『输入脚本』里。然后Bob再出一道题给Carol。。。

下图中相同颜色的『输出』和『输入』才是一对题和解:

图片来源:理解比特币脚本

每笔交易在处理流程上会对输入输出交易整体做一个哈希运算,得到Txid(这笔交易的标识)。我想之前在交易所转过币的应该对Txid不陌生。

但这里面有个问题,Bob解开数学题转币给Carol时,Bob已经用『输入』里的解锁脚本解出数学题了,那么这一部分在网络传播中即便被某个节点篡改也并不影响交易的有效性。如果有中继节点篡改了解锁脚本,会产生不同的Txid,也就是说在交易未写进区块前Txid不具有唯一性。

可能大家一看到篡改就会对安全性产生疑惑,其实这里这个可篡改性,只是导致Txid可改变,并不影响实质交易,该支付给谁的币支付多少都没有变,只是可能最后在区块中能查到的Txid不是你原来那个罢了。

但这对交易所会有影响,如果有黑客利用这一点篡改大量交易,交易所核对会增加困难,Txid变化,一旦篡改过的Txid在区块中确认了,原Txid的相同交易就失效了,如果交易所发现失效会重新发送,可能会导致大量无法被确认的交易堆积。

其实这也不是什么大问题,像交易所、钱包这部分可以增加一些处理机制来应对,像我国直接把交易所这个比特生态网络最薄弱的环节给干掉了,这才是真爱。

不过Core团队因此提出了隔离见证(Segwit)。绕了一圈终于绕回到它了。

隔离见证,就是把上面说到的会被篡改的解锁脚本那一部分拿出来,放到另一块叫见证交易的地方。也就是隔离见证之后,Bob解数学题的题解不再去输入脚本中找了,而是到另一个见证交易的地方。

这样附带了一个好处,每笔交易的『输入脚本』少了很大一部分哈,一个区块就可以多放很多笔交易,达到我们所说的扩容的目的,目前已经隔离见证的比特币的区块容量相当于达到了1.7M

之前我们说隔离见证,总是联系到扩容,其实隔离见证的一个更大好处是,Txid的唯一性。可篡改的部分去掉了,每笔交易即可由Txid唯一标识。钱包、智能合约等就不需要为应对变化的Txid而做额外的设计。同时降低闪电网络实现的复杂度。

Core一直推隔离见证而不是大区块,以前我认为隔离见证毕竟是软分叉,只是改变下数据结构,成本低,可能更受开发团队欢迎,但现在看来他们的目的还在于推行闪电网络。闪电网络,简单来说,就有点像交易所,交易所你中间来回买卖的记录是不会记在区块链上的,而以后可能小额支付交易会放到闪电网络上,开一个通道,买卖都记录在上面,最后算一个总收支到主链上,以此来减少比特币主网的负荷。

而BCC,这个没有隔离见证的“皇太子”,完全继承中本聪最初的思想,区块不够就直接扩容就好,其实最初网络的设计区块大小是33M,但因为当时币价很低,可能会遭到小额粉尘攻击才改成1M空间。至于大区块会不会导致中心化,其实都是随着时间推移就能弱化的问题。

之前一直想找寻BCC大区块和隔离见证闪电网络到底哪个更有优势,但现在看来会保持中立态度。这就像解决同一问题的两个不同方式,不同派系只是为了自身的利益争斗。Core虽然有比特币这块金字招牌,但以后闪电网络能做到什么程度,用户易用性如何还有未知,如有差池可能就增大了BCC的赢面;而BCC老拿自己的血统来说事也不是长久之计,这个世界唯一不变的就是变化,关键还是在未来能有多少人去使用去认可。

至于11月份的2X分叉,隐隐希望它不能成功。既然人家做隔离见证是为了闪电网络,插一脚扩到2M是不是有点尴尬,当然这里有矿工们的利益。但如果分叉成功,到底该支持哪个,哪个该叫BTC。BCC分叉的时候至少大家都把它当竞争币和糖果来看,没那么大分歧,而支持1M的和支持2X的都认为自己才是真的比特币,以至于2X分叉都没有做重放保护,这对一个还懂点道理的用户来说,都产生了极大的疑惑和困扰。

参考文献:

  1. 《精通比特币》
  2. 理解比特币脚本
  3. 隔离见证的好处

以上内容仅供参考,请勿直接作为投资依据,如有疏漏,欢迎指正。

我是@peipei
如有问题可以加Q群:323205893.
另外微信和小密圈中搜“睡后收入研习社”都是我是我还是我~

Coin Marketplace

STEEM 0.25
TRX 0.19
JST 0.037
BTC 91911.91
ETH 3307.29
USDT 1.00
SBD 3.71