比特币的诞生
比特币实际上是一种电子货币,或者叫数字货币,它是基于密码学的货币,这种货币,跟咱们现在用银行卡里面的货币不太一样,它的出现,是一种传奇。在2008年11月1日的时候,金融危机,有一个网络极客,化名叫中本聪,到目前为止也不知道是谁,他在网络上发表过一篇文章,这篇文章,我们管它叫白皮书,全名叫比特币一种点对点的现金系统,他在白皮书中提出这么一种构想,去中心化的电子记账系统,我们进行交易的时候,最重要的是一件事就是记账,比如说,我付给你多少多少钱,我要检查自己的银行卡里还有没有这么多钱,我付给你之后,还剩多少钱,这就叫记账,那么,现在的记账,是谁来记呢?是银行记。我们不管是用信用卡还是用支付宝还是微信,都是银行来记账,我们信任银行,银行背后是国家的信用,那么,这个中本聪就是说呢,我们并不需要中心化系统,我们可以去中心化,每一人的账本,都是让别人去看,都是公开的,这就叫去中心化电子记账系统。
在中本聪的论文中提出了比特币的几个基本原则:
1. 一个纯粹的点对点电子现金系统,使在线支付能够直接由一方发起并支付给另一方,中间不需要通过任何金融机构。
2. 不需要授信的第三方支持就能防止双重支付,点对点的网络环境是解决双重支付的一种方案。
3. 对全部交易加上时间戳,并将它们并入一个不断延展的基于哈稀算法的工作量证明的链条作为交易记录。除非重新完成全部的工作量证明,形成的交易记录将不可更改。
4. 最长的链条不仅将作为被观察的时间序列的证明,而且被视为来自CPU(中央处理器)的计算能力最大的池。只要大多数CPU的计算能力不被合作攻击的节点所控制,那么就会生成最长的,长度超过攻击者的链条。
5. 这个系统本身需要的基础设施非常少,节点尽最大努力在全网传播信息即可,节点可以随时离开和重新加入网络,并将最长的工作量证明作为节点离线期间发生的交易的证明。
看完上述的观点和逻辑,你是不是已经相信这样的理论是可行的,无需中心化的干预或者参与,只要让网络扮演信用中介的角色,就能实现有效的点对点交易。依照这样的理论,第一个比特币交易系统产生了,第一个区块(创世区块)产生了,第一个比特币支付的案例产生了,至今,比特币已经安稳运行了8年,没有出现过技术上的严重失误。
区块链是比特币的核心与基础架构
既然区块链是个账本,这个账本和我们传统的账本有什么不同?我们知道,账本上的内容必须是唯一的,这导致记账天然是中心化的行为。在通讯手段不发达的时代如此,在现今的信息时代也是如此。然而,中心化的记账却有一些显而易见的弱点:一旦这个中心出现问题,如被篡改、被损坏,整个系统就会面临危机乃至崩溃。
那么问题来了——我们能不能构建一个去中心化的不依赖任何第三方的但却可信的记账系统呢?去中心记账可以克服中心化账本的弱点,但是想实现这样的账本系统绝非易事。
在数字时代,负责记账的自然是计算机。这里,我们把记账系统中接入的每一台计算机称为“节点”。去中心化就是没有中心,也就是说参与到这个系统中的每个节点都是中心。从设计账本系统的角度,就是需要每个节点都保存一份完整的账本。然而,由于一致性的要求,每个节点却不能同时记账。因为节点所处的环境不同,接收到的信息自然不同,如果同时记账的话,必然会导致账本的不一致,造成混乱。
既然节点不能同时记账,那我们就不得不选择哪个节点拥有记账的权力。但是,如果指定某些特殊节点拥有记账的权力,势必又会与我们去中心化的初衷相违背。这似乎成了不可能解决的问题。
比特币的交易特点
假如有 A、B、C、D 四个人进行交易,如果 A转给B 8个BTC,那么他会通知 B、C、D,B转给C 6个BTC,那么他会通知 A、C、D,C转给D 2个BTC,那么他会通知 B、C、D,也就是每个人进行转账,都会通知其他所有人。
这个块,我们就叫它,区块,这一个区块里面,大概是1M,我们可以存4000条左右的交易记录,这个块,打包完之后,再把这个块,链接到以前的交易记录上,形成了一条链,把这个块接到前一个块上,然后,过一会再把新的块,接到它后面,就叫区块链。那么,问题来了。
比特币为何记账
因为记账有奖励,每一个比特币用户,都可以去记账,如果他记的账,有手续费收益(A付8个比特币给B,A必须多付出一点点,这一点点就是给打包那个块的(也叫记账)这个人的手续费,有打包奖励,只能是一个人打包,这一个人会获得奖励,奖励是多少呢,中本聪在2008年,提出这个系统的时候,他设计了这样的一个方案,就是每10分钟,打一个包,最开始,这一个包呢,会奖励打包者,50个比特币,过了四年之后呢,每打一个包,会奖励你25个比特币,如果你要是,再过4年,就奖励12.5,就是每过4年就会减半,那么,咱们来算一算,比特币一共有多少个,首先每过10分钟你会打一个包,一个包有50个比特币奖励,一个小时有6个10分钟,可以打包6次,然后呢,每天有24小时,每年有365天,前四年的时候,都是这样,但是第二个四年就不是这样了,第二个四年会减半,所以如下图:
正因为,有这个手续费和打包奖励,所以大家都抢着去打包,那以谁为准呢?
工作量证明
因为每个人的账单都是不一样的,比如说A,可能先记录A把8个比特币给了B这件事,后记录B把6个比特币给了C,但是由于网络的延迟性,D这边可能是先记录B给了5个比特币到C,再记录A给你了8比特币给B,每个人的账单可能都不太一样,那么你到底是以谁的为主?
那么中本聪想了一个办法,工作量证明,这个工作量证明就是说,每一个参与者用户,他都要去做一个很难的数学题,你把这个题做出来了,那你就有权利进行打包,你如果进行打包,你就会获得打包费(手续费)以及打包奖励,这个很难的数学题难到什么程度呢,难到没有人可以通过大脑算出来吗?我们必须一个数一个数的去尝试,只要你把他尝试出来,那么你就获得了这个奖励,所以这个过程,叫做挖矿。如果,你把这个数学题做出来了,你就获得了这个打包奖励,而这个打包的奖励,就是几十个比特币,你就称之为挖矿成功了,这就是挖矿的含义,那么具体这个数学题到底是怎么回事呢?
比特币的挖矿原理
首先看一下哈希函数,它可以把一个字符串,通过一定的运算,转换成一个摘要的形式,而且是正着算比较容易,反正算很难,哈希算法里面有一个很常用的算法,叫SHA256(),如果我把btc,输入这函数SHA256(’BTC‘)=10010100***101;这个输出的是一个256位的二进制数,挖矿就是基于这个函数来算。
假如计算某一个块,这个块里面包含块的头部,块的内容。
①会有一个字符串,这个字符串内容比较多,我们说几个,包含:前块的头部+账单的信息+时间+随机数
②做两次哈希计算,Hash=SHA256(SHA256(刚才那个字符串));
③要求这个数的前N个数是0 ,比如说000000000101010,前9个必须是0,如果你算出来了,那么你把结果,作为这个新块的头部,就接出了一个新块。大家计算的难度是不一样,因为时间和随机数等信息不一样,一般谁的计算能力(算力)强,谁先算出来,因此也就也有了矿场矿池这样的币圈基础设施存在。
这里有个难度N是如何确定的?
这个N越大,难度越高,中本聪在设计的时候,每10分钟,需要出一个块,打包几千条信息,怎么去保证呢,就是调整这个N,我们举个例子,假如世界上有10000台矿机,你每一台的计算能力是14T/s,也就是每秒可以计算14T次哈希计算,14T=1.4*10的13次方,10分钟能算多少次?
这个结果大概是相当于2的多少次幂呢?
如果n=66,能够算出的概率P=(1/2)的66次幂,平均需要算的次数,就是2的66次方,大概也是上面这个结果,所以这种情况,矿机就会把n设置成66,第一个能够算出前66都是0就成功打包这个块,也就成功挖到了矿,你没有办法能把自己的运气变的更好,只有买更多的矿机,然后拼命的去挖矿,这样你就有可能挖到比特币。
比特币作为一种技术手段,是非常新颖的,比特币没有一个中心发行机构,不用担心主权危机,比特币总量固定,不会存在乱发的风险,比特币原生就有防伪属性,而且可以追溯,比特币交易的时候,手续费非常低,由于有这么多的优点,有人甚至提名,中本聪应该获得诺贝尔经济学奖,但是又因为比特币是一种匿名的货币,它在进行交易的时候,只需要一个公钥和一个地址,你又不知道这公钥和地址,到底是谁,所以呢,就被很多犯罪分子,提供了可乘之机,比如,有人利用比特币进行敲诈,进行贩毒,进行洗钱等等,这样的活动,也受到了一些政府部门的打击,还有一些人呢,把比特币当做一种投机手段,比特币暴涨暴跌,造成了许多人,一夜暴富,也有许多人倾家荡产,我想,大家应该把比特币看做是一种技术手段,如果要购买比特币,也应该从投资而不是从投机的角度,因为从长期来看,任何一种投机行为,都会使你输的倾家荡产,而这种投资才能一定的获益!