比特币和区块链

2018-05-08

比特币及区块链的发展历史

大家接触和了解区块链,最早应该是从比特币开始的。确实,区块链确实也是起源于比特币,但是又不局限于货币圈。区块链可以在金融、保险、医疗、政府等领域被广泛使用。
既然区块链起源于货币,那我们就从货币开始谈起。
货币本质上是一种所有者与市场关于交换权的契约,根本上是所有者相互之间的约定。
货币的发展从物物交换到现在的纸币、电子货币经历了漫长的过程。当初稀有的贝壳、金银等作为一般等价物,现在广泛使用纸币,纸币的制作成本也许只有几厘钱,但是却可以换取价值数百元或者更多的物品,原因是有国家的信用背书做约定,让人们相信几张制作成本为几厘钱的纸币,可以获取实际价值几百元的物品。近几年,电子货币已经走入人们的生活,每个人每笔钱的收入与支出仅仅是银行系统对于一个数字的加减,每笔交易也是银行在记账,并且,只有银行有记账权。

2008年全球经济危机中,因为美国政府拥有记账权,所以可以无限增发货币。一个叫中本聪觉得这样很不合理,于是他想出了一种新型支付体系系统:大家都有权来记账,货币不能超发,而且整个账本完全公开透明。这就是比特币产生的原因和动机。

中本聪在2008年全球金融危机爆发之后,在网上发表了一篇论文:《比特币:一种点对点式的电子现金系统》(Bitcoin: A Peer-to-Peer Electronic Cash System),文中描述了一种全新的、一种总量恒定、去中心化的电子现金系统的发行和流通问题,在这个系统中,信息公开透明,每一笔转账都会被全网记录。这篇论文就是所谓的比特币白皮书,这篇论文的问世,标志着比特币底层技术区块链的诞生。

中本聪是谁?

中本聪是比特币的开发者兼创始者,密码朋克邮件组成员之一(密码朋克可以算是一个极客组织,组织早起成员有非常多的IT精英,比如:维基百科创始人阿桑奇,BT下载的作者布拉姆科恩,万维网发明者蒂姆.伯纳斯.李,Facebook创始人之一肖恩帕克等)。但中本聪本人一直没有出现在公众视野。

历史上也出现过很多位“中本聪”:

  • 2012年5月,计算机科学家泰德·尼尔森在YouTube上曝料化名中本聪是京都大学的数学教授望月新一,但是这个说法始终没有被认证。
  • 2014年黑客黑进中本聪使用过的邮箱,然后找到了邮件的主人:多利安.中本;但是中本表示只是偶然发现了邮箱的用户名和密码,并不是中本聪本人
  • 2016年5月,澳大利亚企业家克雷格·史蒂芬·赖特通过媒体宣布,自己就是比特币创始人中本聪,之后赖特宣布放弃证明自己是中本聪。

到现在,中本聪到底是谁,大家还是不知道,只知道他坐拥百万枚比特币,还获得了诺贝尔经济学奖提名,被誉为世界上最神秘的人。

区块链如何去中心化

什么是中心化?
中心化的特点是中心掌握分布节点的信息,分布节点之间不掌握其他节点的信息。如图:
这里写图片描述

目前的基本所有机构,都可以认为是一个“中心化”的机构,例如:我们使用的聊天工具——微信,那么中心节点就是腾讯公司,分布节点就相当于我们用户,我们的各种信息,都存在腾讯公司的数据库中,腾讯公司想要修改我们的信息,窃听我们的消息,是非常容易的,因为腾讯公司就是“中心”,我们微信上使用的一切,都要依赖于腾讯公司这个中心。依次类推,我们的银行系统(央行是中心),我们的货币系统(央行是中心),国家机构(中央政府是中心)。这就是“中心化”。

区块链是如何去中心化的呢?
区块链可以理解为是一个去中心化的分布式数据库。这个数据库不依赖任何机构和管理员,区块链的作用就是存储信息,数据库的数据由全网的节点共同维护,任何人都可以接入区块链网络,成为一个数据节点。如果向数据节点写入数据,这个节点会将写入的数据信息广播到相邻的节点,然后相邻的节点再广播到它们相邻的节点,最终会将信息广播给全网的所有节点,最后所有的节点会同步数据,保证一致性。

这里写图片描述

通俗的讲,就是将原来只有中心节点才有的数据,现在给它弄到全网中都有,不再依赖一个中心的公司或者机构,而是依赖全网络,哪怕修改了数据被篡改了一个或者多个节点,也没关系,区块链系统中实现了共识算法,简单来说,就是保证少数服从多数,最后以大多数节点的信息作为真正的信息,由于网络里有无数节点,目前没有哪个公司或者机构可以同时操控这些节点一起篡改数据。
假如用区块链制作的微博或者微信会怎样呢?所有发布的消息,将无法受其他人修改或者删除,也就是说,你发布了某某某XXXX的消息,微博公司将再也无法将其删除或修改。

比特币的原理和运转机制

首先,对比特币有一个整体的了解,比特币实际上可以理解为一个文件,确切的说可以理解为一个账本。这个账本基本上长这个样:

这里写图片描述

这个账本中“from” 和 “to” 代表的是不同的比特币地址,可以理解为比特币账户,在比特币世界中,是没有账户余额概念的,只有一笔笔的从一个账户转到另外账户的转账信息。每当发起一比交易的时候,比特币系统会先通过你的比特币地址查到你之前的所有交易记录,看你是否有足够的钱去支付这笔交易。

这个账本不同于私人账本或者是银行的账本,它是一个全网都有的账本,不归属于某个人,而且全网都一样,每个网络节点人手一份,而且都是相同的。

当某个人A想要向B转账5个比特币,A会在比特币网络中广播这个消息,收到消息的节点一边将账本的副本信息更新,一边将这个消息继续广播,直到全网所有节点都收到。

如何来判断这个A转账到B5个比特币的消息是正确的呢?
针对每一笔交易,除了有转账信息,还会有一个数字签名,这个数字签名是有比特币地址账号唯一的私钥将转账消息的数字摘要加密创建生成的,每个网络节点拿着A的公钥对数字签名进行解密验证,就可以判断消息的准确性。
如果把转账信息比作是一份合同,那这个数字签名,你就可以理解为是类似于合同上一个亲笔签名的东西,来确保消息的准确性。

比特币系统中,每时每刻都会有无数多的交易在发生,比特币系统将这些交易信息按组分配,每个组称之为一个区块(block),然后将这些区块按照时间顺序用链表一个一个的串起来,称之为区块链(the block chain)。区块链中的每个区块会引用前一个区块,你可以反向追踪至第一个区块中的交易信息。未在区块链中的信息是“未交易”或者未排序的信息,任何节点都有能力将一组未经确定的交易打包进区块,然后将它打包进区块的事实广播出去。
比特币系统显然不会让所有节点都参打包区块,这样非乱死不可,比特币系统会以每十分钟为一个周期,出一道计算题,这个计算题超级难,让全网的节点参与计算,这道计算题其实就是对当前区块的全部内容做一个特殊计算,得到一个哈希值,全网的所有网络节点通过比拼计算速度,强行匹配出哈希的值,最先计算出哈希值的节点将取得打包区块的权利,生成一个新的块block并连入现有的区块链,然后广播至所有其他节点,其他节点开始同步更新;最先计算出结果的节点除了拥有“记账”的权利,还可以获得一定量的比特币,这其实就是比特币的发行过程。参与打包区块的过程其实就是“挖矿”,参与“挖矿”的节点就是“矿工”。
哪怕计算题超级难,也有可能同一时刻两个网络节点同时算出值来,假如真有两个节点同时算出值来,该怎么办呢?
系统会同时让两个节点都记账,这样一来,区块链就会产生“分叉”,如何解决分叉呢?等到下一个区块产生后,看下一个区块连接到了哪个“分叉点”,然后系统会选择最长的链条,并把分叉去除,原来打包的区块将消失,区块中的交易信息将会重新回到“未确定的交易”信息池中。过程如下图:

下图是一个区块链

这里写图片描述

过十分钟后,有两个“矿工”同时解决了问题,并同时产生了两个区块,于是区块链分叉了。

这里写图片描述

分叉就分叉吧,没关系,全网节点同步区块链信息,将分叉的区块链同步到了各自的节点上。接着又过了十分钟,系统又出了一个题,一个矿工解答出了问题,注意,根据系统设计,连续两次节点同时解出问题的概率已经很小了,几乎不能可能。哪怕真有,也没关系,继续进行,最终只保留链路最长的。

这里写图片描述

这是我们将放弃最短的路线,留下最长的链路

这里写图片描述

比特币是如何保持总量恒定的呢?

随着越来越多的计算机加入比特币网络,“矿工”的计算能力会越来越强,为了让“矿工”恒定在每十分钟打包一个区块发行一次比特币,中本聪设计矿工挖矿的难度每过2016个区块动态提高一次,使得调整后的难度保持在十分钟。
每个比特币可以细分到小数点后八位,也就是说可以拿着0.00000001个比特币来交易。
刚开始每打包一个区块发行50个比特币,每21万个区块后,打包一个区块发行的比特币减半,比特币系统规定每十分钟打包一个区块,这样打包21万个区块需要四年的时间,直至2140年,比特币将无法细分,比特币发行完毕,发行总量约为2100万枚。

比特币和区块链的关系

比特币是区块链技术的应用,区块链是比特币的底层实现。可以说比特币是区块链技术的第一款应用。
区块链技术有去中心化、匿名性、公开透明的特点,现在市场上利用区块链技术做了非常多的应用:各种电子货币、百度莱茨狗、360区块猫。但是被人熟知的不算多。

请关注我

更多精彩内容,请搜索我的微信公众号 码农RyuGou

或者扫码