Bitcoin:一种代码即法律的共识交易货币
#引言——传统货币的弊端
我们大多在使用的货币都存在着一个个中央管理机构,例如银行、财政机关等。这使得我们的货币必须建立在一个信任这些管理机构的基础上,假如你所持有的货币对应的中央机构突然不干了,或者操作了很多不合法[1]的交易,这就会导致货币体系的崩塌,你所持有的货币不会再被社会所认可,你的货币也就变得一文不值了。
为了解决这个信任问题,创造出一种不需要中央机构及管理员就能自行运转的货币系统,中本聪[2]于2008年10月31日发表了关于比特币的论文,创造出了比特币这种不需要任何中央管理机构的而是基于共识主动性的货币系统。
#安全的身份验证
比特币整个货币系统其实并不存在真正意义上的某种货币,而更像是一个账本。一个任何人都可以往上添加自己交易记录[3]的账本。
在银行进行交易必须证明你是这笔钱的主人,只需要你有银行给你的银行账号和密码,你就能向银行证明你的身份,就可以对自己拥有的货币进行交易。而比特币的去中心化运行方式使得没有一个独立的机构去验证你的身份,或者说验证这笔交易记录是不是你自己写的,因此我们需要一种方式实现只有你自己可以进行的操作,而其他人可以验证你的操作却不能重复你的操作,这时候聪明的你一定会想到:非对称式加密,没错,比特币创建交易记录的身份验证就是依靠私钥与公钥非对称式加密进行的。
#数字签名:非对称式加密
非对称式加密算法具体实现方式内容较多,在此仅作介绍(也许后面还会单独出文章,maybe吧)
非对称式密码学有公钥和私钥两个概念,公钥是通过私钥进行一系列的数学算法生成的。
其中,私钥是你自己要保护好的身份证明,而公钥可以公开给其他人。拥有私钥的用户可以将信息使用私钥加密得到密文,而其他用户可以使用公钥解密该密文获得明文,接下来就是这种算法的核心特性了:使用公钥加密的密文不能被公钥解密,只有使用私钥加密的密文可以被公钥解密。这个特性被用于数字签名。
这样,使用私钥的用户只需要将其交易数据信息使用私钥进行加密,其他用户即可使用公钥验证是不是拥有私钥的用户进行的操作,达到了身份验证的目的。当然为了防止交易数据过多而产生的密文过长,导致解密时间过长影响效率,这里加密的信息并不是明文的交易数据,而是经过SHA256哈希算法(下文会提及)处理的交易数据,这样保证了无论多少交易数据,需要加密的明文都是固定长度的。
当然还有一个特性被用于加密传输数据:使用公钥加密的密文仅能被私钥解密。在比特币系统中,仅需要数字签名这一特性即可。
#校验信息:哈希算法
哈希算法是一种校验数据的算法,特点是无论放入什么类型的数据,多大的数据,最终输出的都是固定长度的校验值,且该校验值具有雪崩性,即原数据即使改了1个bit的数据也会导致最终结果发生翻天覆地的变化,这就会出现一个原始数据“只能”与一个哈希值一一对应,但在理论上来说,一个输入为无穷,输出为有边界的系统,每个输出一定是对应无穷个输入的,但实际上两个数据的哈希值相等的概率小到可以忽略不计,尤其是SHA256这种安全系数极高的哈希算法。哈希算法的雪崩性也导致你无法通过修改数据中的几个值来推测出其哈希值会发生什么样的变化。其算法具体实现比较复杂,此处不再赘述(后面应该还会出一篇文章,这个应该能出)
#不可篡改的账本
比特币的账本结构是对区块链技术的第一个大规模,去中心化且成功的实际应用。没错,就是一几年时炒的很火的区块链技术。
比特币单个账本——区块,由许多交易记录构成,你所拥有的比特币就是所有向你转账的比特币(记录)减去你转出的比特币(记录)[4],每次你的交易都会通过各种途径给到比特币网络中的区块制作者,这些区块制作者会先检验你的剩余比特币是否足以支撑你的交易,如果通过才会将你的交易记录记在区块内。所以比特币网络中所有人的交易记录都在一个公共的大记账本上——区块链。
还有一个比较有趣的技术细节,当张三给你转了100个比特币,当你想转给李四50个比特币时,账单中记录的是找零方式拆分张三给你的比特币,即:张三–>你–>李四 100个比特币,李四–>你50个比特币
比特币的总账本区块链是由一个个区块构成,为了防止已有的区块链被篡改,每个区块都会记录着前一个区块的SHA256哈希值。
如果一个区块的哈希值被发现与前一个区块的哈希值不一致,则这个区块会被丢弃,将被拒绝添加入区块链中。此时,善于思考的你可能会想到,那如果我篡改最后一个区块的话是不是就不会被发现了,了解完整个比特币的区块链技术和共识验证系统,你就会明白:这非常困难。
接下来要解决的一个问题是,这么多设备,有的在线,有的不在线,有的延时高,有的延时低,如何进行同步区块链数据呢?这在中心化的系统中不是问题。但为了去中心化,比特币使用了最长链原则,也就是说,整个比特币网络中,只有最长的合法[5]的区块链为主链,所有其他网络节点都会去同步最长的那条区块链。这样即使你很长时间没有上线,下次上线只需要同步符合规定的最长的区块链即可同步数据
#独特的记账方式
解决完了同步问题,接下来还存在一个严重的问题,因为各种原因,可能是网络延时等没有及时同步的各种问题,导致有两个甚至更多个区块制作者向同一个区块后方添加不同的区块,会导致区块链不再是单独的一条,而是有甚至成千上万个分支的链条,这样会导致不同的链路你的剩余货币变得不一样。
为了防止这种情况发生,比特币给出了一个几乎完美的方法来规避在同一时间有两个甚至更多区块制造者向同一个区块链结尾添加区块,那就是大名鼎鼎的“挖矿”
即每个区块制造者必须对自己制作的区块加上一个随机数然后计算其哈希值,如果该哈希值是符合要求的哈希值,则允许[6]将制作好的区块放到现有区块链尾端,并会给区块制作者一定比特币作为报酬。这个要求一般是SHA256哈希值的前n位为0,这个n(即难度)是动态调整的,致使能够成功将自己制作的区块链接到主区块链尾端的区块制作者平均在10分钟内只能有一位。
#自然的发行方法
比特币作为一种没有“管理员”的货币,那么它应该如何发行呢?比特币的发行完全是由代码控制的,遵循一套严格的、不可篡改的数学规则。其发行过程其实前文已经提到了,聪明的你可能注意到了,没错,就是给区块制作者的报酬,也就是“挖矿”获得的“矿石”。每个区块制作者可以获得一定量的报酬和为交易用户记录交易的手续服务费。这个报酬并非是恒定的,而是每4年进行减半,从2009年的50比特币,到2012年的25比特币。挖矿得到的报酬会无限趋近于零,最终在数学模型下比特币最多只能发行2100万枚,即通缩模型[7]。其过程类似于挖矿,越挖越少。
#还有问题?
其实比特币的主要安全机制就是共识主动性,即如果你不遵守比特币的规则,则几乎所有人都得不到利,自然大多数使用者都会自觉的维护整个系统的安全,遵守整个系统的规则,可以看看下面几个问题示例
#为什么比特币会丢失
在比特币暴涨的那个年代,经常看到很多新闻报道因为硬盘丢失或者损坏导致多少多少比特币再也找不回来了,但根据我们刚刚给出的原理,比特币实际是一个账单,并没有实际的比特币,所以所谓的丢失了比特币实际上是把自己的私钥丢失了,也就丢失了整个私钥账号下的所有比特币,因此这些比特币将会成为永远也不可能再被操作的“死账”,最终会导致比特币总量进一步下降。
#在没有比特币的余额的情况下向他人转账
这样的话你的记录会被其他区块制作者检查出来并拒绝掉,因为如果即使有一个区块制作者讲你的异常数据加入了其中,并且正好获得了当时的添加区块权,将你的异常数据添加到了整个主区块链尾端,其他区块制作者获取区块链时会检查出来这个异常的区块,并将其丢弃,然后在前一个区块尾端继续添加区块,随着时间累计,这个异常区块会因为不是最长的区块链而被丢弃掉,导致区块制作者花费巨量计算能力“挖出的矿”被否定而损失掉了,所以无论在谁的角度看,伪造这种不合法的记录都是弊远大于利的。
#自己创造主链
可不可以从某个区块开始自己创造一条比主链还长的区块链而使我的区块链成为主链,来撤销一些区块中我不想要的交易记录。这个方法理论确实可行,但需要至少整个系统中的51%的算力才能实现[8],即著名的51%攻击,当比特币区块制作者不断增多,达到这一要求的成本物力人力将会消耗非常高。并且一旦达成这种攻击,比特币的信任体系将会崩塌,其市值也会暴跌,这样对于攻击者来说花了如此高的代价自己也得不到什么好处,因此几乎不会出现这样的攻击者。
#篡改一个区块
先回答文中的问题,由于最后一个区块没有后面的区块记录其哈希值,我能够篡改最后一个区块内的交易记录来达到破坏整个交易系统吗?实际上,了解了”挖矿“的机制后,显然,当你篡改该最后一个区块后,必须重新计算最后一个区块的随机数来使其哈希值符合对应的要求,这一点就会使篡改最后一个区块的成本剧增。并且不光有计算成本,还有时间成本,因为你必须保证在你篡改最后一个区块后计算其随机数时,不会有其它区块制作者在该未被篡改的区块后方继续添加其它区块。且篡改必须合法,因为每一个区块制作者都会检查前面所有区块的合法性,一旦遇到了不合法的区块便会丢弃其及后方所有的区块,从该不合法的区块前面的区块继续添加。
而对于想篡改前面区块的攻击者来说,其成本将会剧增,因为改了一个区块的哈希值,该区块及后方的所有区块的哈希值全部要重新计算,并且其随机数也因为哈希值的改变而全部需要重新计算。因此此时问题就回到了我要自己创造主链的51%攻击了。
#如果同一时间出现了两个”矿“
虽然说这个概率非常小,但在大量的区块制作者下不容忽略,如果一个区块后面同时连接了两个区块,接下来,这两个区块上的区块制作者会继续制作下去,直到出现第一个较长的链路,则那个短的链路则直接被抛弃,所有区块制作者均回到最长的那个主链路继续制作区块
这就会出现一个问题:确认交易的时间可能会比较长,一般在新生成3~4个区块后这笔交易便几乎可以确定下来了。
#加密货币掀起的波澜
比特币不仅仅是一个金融工具,更是一个精密的分布式软件架构,它巧妙的利用了密码学、概率论等数学方法和人性的弱点成功构建出了一套完整的,可以自己运行,无需监管也无法干预的货币系统。自从比特币发布以来,其市值一路飙升,展现了基于区块链技术的比特币的成功。由此业界掀起了一阵区块链热,谁都想将自己的行业加上区块链搞去中心化。各种行业争相模仿比特币的区块链化技术,全行业患上了“区块链焦虑症”。甚至只要自己行业中有区块链三个字都可以让自己的市值暴增
- 金融行业,澳洲证交所(ASX)在 2015 年宣布,要用区块链技术(基于 Digital Asset 公司方案)替换其使用了几十年的清算系统 CHESS。然而金融界所需要的极高的并发和极低的延迟正是区块链技术的痛点,最终2022年底,项目彻底取消,ASX 宣布注销 1.7 亿美元(约 2.5 亿澳元)的投资。
- 传统摄影巨头柯达也曾有过区块链梦——柯达币 (KodakCoin)。在数码相机和智能手机的时代,传统胶卷产业非常难过。2018年,正值区块链炒作顶峰,百年胶卷老店柯达突然宣布进军区块链,做出了三个大动作:
1.创建KODAKOne 平台: 声称建立一个基于区块链的图片版权管理库。摄影师把照片上传,利用区块链不可篡改的特性确权。2.发行柯达币 (KodakCoin): 发行一种专门的加密货币,作为平台内的支付手段。如果有人使用你的图,就自动给你转柯达币。3.“柯达矿机” (KashMiner): (这是最荒诞的部分) 在当年的 CES 展会上,贴牌展示了一款比特币矿机。柯达甚至推出了“租赁方案”:你交 3400 美元租金,柯达帮你挖矿,承诺两年回报几万美元。消息一出,柯达股价单日暴涨 119%,随后几天内翻了三倍。但由于区块链只能保证“链上”的数据不可篡改。 例如如果我在 KODAKOne 上传了一张图,区块链确实记录了“这图归我”。 但是,盗图的人根本不上你的链。他直接右键保存,发到自己的博客、朋友圈或论坛里。柯达完全将区块链用错了地方,最终导致柯达币几乎没人使用,币价归零。而柯达矿机只是一个为了蹭比特币热度的骗局。柯达股价最后跌回平常水平,甚至更低。 - 股市的黑色幽默:长岛冰茶 (Long Island Iced Tea)。2017 年,一家名为“长岛冰茶公司”的饮料厂,突然把名字改成了“长区块链公司” (Long Blockchain Corp)。声称要转型投资区块链,股价当天暴涨 200%。但是他们没有技术,没有产品,只是改了个名。最终被调查退市。
可见当时市场对区块链这项技术多么非理性。任何一个产品都要套上区块链的噱头,甚至不管区块链的劣势,想要”利用“区块链的缺点。
所以,任何新技术的进步甚至任何事物的成功而去盲目跟风是非常不理智的,适合的才是最好的。
“如果你的项目有一个‘管理员’可以重置密码或回滚数据,那么你根本不需要区块链,你需要的是一个 Postgres 数据库。”
如果您觉得这篇文章对您有帮助的话,不妨收藏该页面,分享给更多朋友,感谢您的阅读。有问题欢迎评论区留言,共同交流。
评论区请友善交流,无关话题将会被删除
比如未经许可从别人钱包里发起交易,或者肆意创造货币 ↩︎
网名,并非真名 ↩︎
此处的交易记录除比特币的矿工奖励机制外仅指自己转给其他人的记录,就像我们在银行里你只能转给别人钱,不能让别人转给自己钱 ↩︎
比特币中还有比特币的发行——记账的奖励(挖矿)后文会提及 ↩︎
这里的合法是指的符合比特币区块链中初最开始的区块,其他区块都包含前一个区块的哈希值,且正确 ↩︎
还会有一步检验你区块中记录的交易记录是否合法,比如如果你已经没有比特币了,但你还是向区块中添加了转出交易记录,那么这样这个区块就直接所废了,区块制作者所辛辛苦苦挖出来的随机数也就毫无价值了 ↩︎
总量固定,理论上越来越稀缺 ↩︎
另有说法是根据定理控制33%以上算力即可实现 ↩︎