前面我们说过,比特币的底层实现是区块链技术。那区块链这个词怎么来的呢?
早期比特币刚出现的时候,人们用首字母大小写来区分比特币和实现比特币的技
术,把比特币叫做Bitcoin,把实现比特币的技术叫bitcoin,可见当时人们对实
现比特币的技术还是很关注的。到后来,比特币越来越火,舆论十分火热,为了
能把比特币和实现比特币的技术区分开,根据比特币的技术特性,于是用“
”来代指比特币实现的技术。
中本聪也是通过这些技术的集大成,从而创造
了比特币区块链。
开篇说到区块链具有
�
的特点
�
下面我们按照区块
链的这些特性来了解下区块链的技术。
区块链的去中心化特性是由非对称加密技术、分布式存储来体现的。
简单来讲就是加密和解密的时候使用不同密钥的加密算法。
举个栗子:
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)。关于莱特币的一些特性,这里不详细
展开了,大家有兴趣可以去了解下。