上一篇《从零认识比特币(上):从比特币谈起》,我详细介绍了比特币的起源、原理、交易、存储等,这一篇,我来讲解下比特币的底层技术——区块链,同时介绍比特币的局限与改进。
我们经常看到各大媒体争相报道,区块链具有去中心化、不可篡改、不可伪造的特点,为什么具有这些特点呢?看完这篇文章,你就明白。
什么是区块链
名称的由来
前面我们说过,比特币的底层实现是区块链技术。那区块链这个词怎么来的呢?早期比特币刚出现的时候,人们用首字母大小写来区分比特币和实现比特币的技术,把比特币叫做Bitcoin,把实现比特币的技术叫bitcoin,可见当时人们对实现比特币的技术还是很关注的。到后来,比特币越来越火,舆论十分火热,为了能把比特币和实现比特币的技术区分开,根据比特币的技术特性,于是用“区块链”来代指比特币实现的技术。
区块链的定义
区块链并不特指某一个技术,而是多种技术的集合,比如时间戳、工作量证明机制、非对称加密、UTXO等。中本聪也是通过这些技术的集大成,从而创造了比特币区块链。
区块链的技术特性
开篇说到区块链具有去中心化、不可篡改、不可伪造的特点,下面我们按照区块链的这些特性来了解下区块链的技术。
去中心化
区块链的去中心化特性是由非对称加密技术、分布式存储来体现的。
非对称加密技术
简单来讲就是加密和解密的时候使用不同密钥的加密算法。
举个栗子:
A要向B发送消息,A和B都要产生一对用于加密和解密的公钥和私钥。私钥,好比一把私有的钥匙,只有钥匙的拥有者才能打开,是用来加密的。公钥,好比一把公开的钥匙,可以告诉给需要的人,是用来解密用的。在这个过程中,A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥可以告诉A。A要给B发送时,A用B的公钥加密信息。B收到这个消息后,B用B的私钥解密A的消息。其他所有收到这个信息的人都无法解密,因为只有B才拥有这把私钥。
在上一篇文章中,我们介绍的比特币的转账,填写的对方比特币地址,就是公钥,转账时附上的签名,相当于你的私钥。
可能你会疑问,非对称加密怎么就体现了区块链的去中心化呢?
我认为中心化机构的存在是为了能保证交易的进行,而在比特币网络里,矿工只要验证公钥和私钥就证明该笔交易是正确的,也就保证了交易的进行,这样即使没有中心化的机构来参与,交易也可以安全地进行,所以非对称加密也就体现了去中心化。
不可篡改
区块链的工作量证明机制、最长链机制保证了区块链上任一节点都是不可篡改的,也就保证了交易的不可篡改性。
工作量证明
简单来说就是一份证明,用来确认你做过一定量的工作。比如你拿到了大学的毕业证,就能够客观证明你进行过大学四年级的学习,具备一个大学生的学习能力。在比特币网络里,工作量证明直接体现就是算力的大小,你算力越大,那你获得该区块的记账权概率越大,那么你记出来的账本就是通过一定量的计算才算出来的,该账本就能被其他矿工认可。
最长链机制
区块链要求所有节点遵守一个公式,就是所有保存到本地的区块链,都必须是被本地节点验证通过的最长链。由于区块链的每个区块必须引用它的上一个区块,所以最长链是最难推翻的。如果有人想要篡改该节点区块,必须拥有非常大的算力,至少超过50%,否则基本上没有篡改的可能。
不可伪造
这个得益于比特币的UTXO结构,英文全称Unspent Transaction Output,也就是未花费的交易输出。这种特性使得比特币世界里的每一笔转账,都能追溯到上一笔交易,也就保证了交易的真实性。
举个栗子:
假设我要给你20元钱,其中2张5元纸币,1张10元纸币。而我的这2张5元,来自水果店老板给我的找零,这1张10元来自士多店给我的找零,拿到这三张钞票之后,我还没花出去,才能给你。这就叫未花费的交易输出。水果店老板的这2张5元钞票,又来自其他人,士多店的1张10元钞票,也可能来自于其他人。这样的钞票,可以顺藤摸瓜一直追溯到发行的那一刻,由此验证这三张钞票都是真的。
好了,比特币的实现技术就介绍完了,你了解有多少呢?最后我来介绍下比特币的不足。
比特币的不足
脚本语言太复杂,开发难度大
比特币的脚本语言是基于堆栈的形式的编译语言,对开发者来说使用这种语言开发难度较大,难以上手。
生态系统基础差,缺乏足够的参与者
比特币生态没有完善的开发工具,也没有丰富的文档和教程。这不同于当今主流的Android开发环境,全球有大量的开发者、运营商、芯片厂商等活跃在整个生态中,并且有谷歌等巨头企业推进。基于这点跟上一点,比特币区块链就很难吸引开发者,更别说形成良好的开发生态了。
脚本语言不符合图灵完备标准
图灵完备是指一切可计算的问题都能计算,比特币区块链上的状态表示都是针对比特币这款应用的,只能记录交易,而对于复杂的环境,用比特币区块链上的语言无法表示。
比特币的改进
莱特币的诞生
上一篇文章我们说过比特币的原理,10分钟出一次账单,也就是你的交易至少要等10分钟才交易完成。在2011年10月,一位叫Charlie Lee的亚裔美国人,他认为比特币这种确认太慢,十分钟才能确认一次,不能满足现在的支付需求,于是通过改造算法,发明了莱特币(Litecoin)。关于莱特币的一些特性,这里不详细展开了,大家有兴趣可以去了解下。
以太坊
2013年末,一位仅19岁的俄罗斯少年Vitalik Buterin发表了以太坊白皮书《以太坊:下一代智能合约和去中心化应用平台》,从此,一个现像级、对开发者友好的区块链平台诞生了。它通过其丰富的编程语言和完善的开发工具,解决了比特币对开发者不友好的问题。对于用户端,它可以让任何人都能轻松的在以太坊上建立新的协议和智能合约,真是开发者的福利呀。
关于以太坊的详细介绍,我下篇文章会说到,欢迎大家关注哟。
好了,这篇分享就到这,我们主要讲解了区块链的技术原理、比特币的不足与改进等。在下篇文章中,我会详细跟大家分享下区块链分类及应用领域,敬请期待哟。
相关阅读