比特币,我怎么相信你(一)
注:斜体链接都是没有实现的部分。敬请关注更新……
当您接触了比特币之后,最为广泛的关于比特币的一个描述是:比特币解决了陌生人之间的信任问题。本文只讲信任问题,不谈比特币有价值吗?比特币是货币吗?
但比特币解决了陌生人之间的信任问题了吗?重要的事情说三遍:
- 没有
- 没有
- 没有
那为什么会有这句话?为什么说它解决了?这里的信任究竟是什么呢?知道结果,但不知道原因,只会让我们更加的困惑。我们不妨把这个问题换个问法,比特币究竟解决了哪些信任问题?看看解决了这些问题之后,陌生人之间是否可以相互信任。
我们一起先了解几个身边习以为常的信息:
纸钱。国家发行纸币之后,在没有计算机的年代,钱都是纸钱。如果不是假钞,我手里的钱就是我的,我给你了100块,我就没有了,我无法再把相同的100块花出去。
信息化。技术的发展,带来生活的便捷。我们慢慢身上、家里都不再有那么多的现金。很多时候,刷个卡、扫个二维码都能支付,无比便利。
货币数字化(注意不是数字化货币)。货币数字化之后,我们花钱更加方便了,小偷更少了。大家大多对这种信息化带来的生活便捷习以为常,尽情享受。可是,它真的很容易实现吗?大家有所不知,在信息化的时代,钱变成了数据记录,可是数据记录是可以任意复制的,例如:盗版的光碟、盗版的设计突变、盗版的文章比比皆是。货币数字化之后,相对大家之前手中的纸钱,我们需要解决:
- 你怎么证明这钱不是假的?不是简单写个数字出来的?
- 你怎么证明这钱是你的?
- 你怎么证明这钱没有花出去多次?数字化的钱太容易复制了。
细思极恐吧。
信任国家、信任银行。大家习以为常的银行卡、手机支付其实并不简单。但大家之所以能够相信别人发给你的钱是真实的,是因为你信任国家、信任银行。你把钱存到银行,银行给了你一串数字,对吗?你相信它,你相信它不会简单写个数字给你,也相信它不会简单写个数字给别人。你相信别人给你转账,是因为你会看银行的余额有没有发生变化,看看转账记录是否真实。你相信这钱没有花出去多分,因为你知道银行是可靠的,你自己都不能花出去多分。
强大的银行信息化系统。在这份信任背后,是几十年持续不断的投入数以百万计的技术人员,数以万亿计的软件、硬件,并加上持续不断的系统更新,BUG修复换来的。
这就是信任,这就是换得这份信任的代价。
比特币是第一个成功的数字化货币。那么,比特币在没有国家、没有中央银行的支持下,如果让人们相信呢?
这是我的,不是别人的
这是真的,不是假的
这是不是双花
在我有一个比特币和淘金热-比特币是怎么挖到的两篇文章中,我们详细描述了比特币怎样从无到有以及我如何获得自己的比特币。
在这里我们需要引入另外几个概念,来解释上面三个问题是如何被解决的。
- 数学的严谨性
- 哈希算法
- 公钥算法
- 比特币的锁和钥匙
- 交易链
- 区块链
- 分布式透明账本
- 记账权
数学的严谨性:这是比特币立足之本,比特币成立的根本就是基于数学的严谨性。大家所生活的这个世界,数学应该是少有的能够被论证的科学之一。数学是那种被证明为真的,那么就是真的学课,它没有太多的上下文,没有不确定性。例如:1 + 1 = 2。而下面谈到的哈希算法和公钥算法所论述的相关知识,都是被数学证明为正确的。
哈希算法:哈希算法能够是任意一个数字信息,可以是文字、图片、生日、密码等等转化成一串随机的数字。比特币中使用的是SHA256哈希算法,即产生一个256位随机数字。一段文字中,任何一个内容发生变化,哪怕是标点符号不同,也会产生完全不同的哈希数字。例如:
我有一个比特币的哈希值(转化为64位)是:
72900ed48ebc5ef39dae1c07080448b3e6930f73bd8af887e0f562f214d3eab9
最后增加一个逗号的哈希值(转化为64位)是:
a78be4403a7361cc72c1f769e42baa4749cd4bdb1b28e0369067b745f0aa76f9
我使用了一个在线的计算工具。
哈希算法的抗碰撞性:是指希望找到两个一样的哈希值的可能性几乎没有。愿意:如果希望产生两个一样的随机哈希数字,需要使用最先进的计算机 ,按照生日悖论,计算2 ^ 130 + 1 次,需要大约为 1.36 * 10 ^ 24年才能找到这样一个值,这几乎不可能。
哈希算法的原像不可逆:哈希算法是单向函数,即由已知的字符串能够方便计算出对应的哈希值。但知道哈希值后,没有办法知道对应的字符串是什么。
公钥算法:公钥算法包括一个公钥和一个私钥。公钥公开,私钥保密。它们是成对出现的。数学已经证明该算法绝对安全可靠,只有公钥才能验证私钥加密的信息。
比特币之锁:现实世界中,一把锁只有对应的钥匙才能打开。在比特币中,每个比特币在发送至给定地址后,就被基于该地址的锁定脚本锁定,就像现实世界中的一把锁。在公钥算法的保护下,只有该地址对应的私钥才能够打开这个锁定脚本。
比特币之签名:现实世界中,用钥匙开锁。在比特币中,通过私钥产生的签名才能打开比特币之所。这类似于大富豪给某人签名一张支票。支票签名还能伪造,但基于数学的哈希算法的抗碰撞及原像不可逆的特性,仿造数字签名绝无可能。
这是我的,不是别人的被解决:基于以上特性,如果我能够给您发送一枚比特币,那么我就需要使用我的私钥去开启被我的地址锁定的比特币。别人如果没有得到我的私钥,绝无可能动用他们。
交易链:在我有一个比特币中,详细说明了,我的比特币来自于上一笔交易,交易和交易会之间通过交易的哈希值链接起来,形成交易链。而且前一笔交易的哈希值会和新的交易的数据结合在一起生成新交易的哈希值。这条链确保历史交易不可能被篡改,因为任何一个地方的调整,需要整个链条重铸。这需要付出极大的代价。
区块链:比特币每10分钟会产生一个区块,每个区块会包含大量的交易。区块和区块之间也同样通过哈希链条的方式链接在一起,形成一个巨大的不可篡改的数据记录,这就是比特币交易的大账本。
分布式透明账本:
- 分布式:比特币网络有无数个节点,每个全节点都有最新的所有区块链数据,即比特币账本的拷贝。它们会随时和全世界所有节点进行数据同步,保证账本的一致性。这样不仅仅能够抵抗黑客的攻击,而且任何一个节点单独的账本改动只会被其它节点视为无效。关于比特币节点如何保证账本一致性我们后面会详细讲解。
- 透明:比特币账本的数据是公开透明的。因为在比特币网络中不会存储任何私密信息,所以所有人都能够看到账本中的全部数据。任何时间,任何地点,只有有网络接入比特币,就能够查看比特币历史上所有的交易。
这是真的,不是假的被解决:基于以上特性,我们能够对任何一个比特币交易在公开透明的账本中追本溯源。该交易是否存在,能否进行下一个转账操作,是否有足够的金额,一清二楚。交易能够被计入账本,那么它一定真实存在。
记账权:
- 如果获得记账权?在淘金热-比特币是怎么挖到的
中,我们谈到,比特币的旷工在进行着扔骰子的游戏,扔到正确的数字非常非常困难,如果扔到正确的数字,那么就能够挖矿,也就是产生一个包含很多交易的区块并链接到区块链上。所以,为了获得比特币,为了赢得记账权,大家在拼命的竞争,这需要投入巨大的成本。 - 如何记账?每当一个旷工赢得记账权之后:
交易排序:将没有记账的交易按照交易费大小、交易的年龄(未被记账的区块时间)排序
交易验证:按照统一的规则对交易进行验证,否存在未花费的支出、是否未花费的支出已经被另外一个交易使用等等
计入区块:将通过验证的交易打包进一个区块中。
链接区块:将区块链接到最长的区块链上。
发布账本:将最新的区块广播给比特币的其他节点网络。 - 如何确保不记错账?
自节点的验证:上面已经写到。
其他节点验证:其他节点在接收到最新的区块后,会在链接进区块链之前,也进行相同规则的验证,确保这笔账没有记错。
这是不是双花被解决:正是所有节点都在基于分布式的不受中央控制的统一规则进行记账权的竞争、交易的验证、区块的链接,保证了记账的正确和可靠。也确保一笔交易输出不可能被花费两次。
基于:
- 分布式的
- 数学的
- 不受中央控制的
- 统一的
规则和需要
- 大量算力
- 高昂成本
才能够争取到的记账权,确保了比特币系统无法被黑客攻击、无法被权利控制,确保了比特币账本无法被篡改
这比中央银行系统更加可靠,这套系统2017年9月25日总市值627亿美金,自2009年以来,稳定运行8年,经历无数黑客攻击而不破。
比特币解决了陌生人之间的信任问题吗?没有。但是它解决了钱是谁的、钱是真的和双花的问题。它解决了大家对这套系统的信任问题。这套系统已实际运行8年,它得到了数学、技术以及现实的全面检验。