比特币原理

前言

最近看了李永乐老师的比特币课程,做了些笔记,也让我了解了比特币大概是个什么东西,下面主要以比特币是什么、他存在的问题、和特点三个方面讲述下比特币的原理。

脑图链接:点此获取脑图


比特币是什么?

比特币是一种数字货币,是一种基于密码学的货币,在2008年的金融危机时候,出现了一个网络极客化名为中本聪发表了一片论文《一种点对点的电子现金系统》。

去中心化电子记账系统

点对点的电子现金系统,实际上就一个去中心化的电子记账系统。我们在交易的时候,最重要的就是记账,比如说我付给你多少多少钱,检查银行卡里还有多少钱,现在这个记账谁来记呢,银行来记,不管信用卡还是支付宝还是微信都是银行记账,我们信任银行,银行代表着国家的信用。

中本聪就说我们不需要一个中心化的记账系统,我们可以去中心化,每个人的账本信息都是公开的,这就叫去中心化电子记账系统。

案例

举个例子有ABCD四个小朋友用比特币进行交易。A支付B十个比特币,他需要把交易信息广播给所有人。
交易1

同理B支付C十个比特币也需要把交易信息广播给其他人。
交易2

上面这两个账单信息,我们会打包成一个块,这个块我们称之为区块,一个区块大概是1MB,可以存4000条左右的交易记录,打包好之后我们会将这个块接到前面的块上,形成一条链,就叫区块链。


存在的问题

为什么要记账

凭啥花我们的电脑资源要记录和自己无关的账单信息。是因为比特币有个规则,参与记账会获得相应的奖励。

手续费

手续费,A->B需要付一定的手续费给这个打包的人,要是用银行卡的话我们还是需要手续费,而且手续费挺高的,要是使用比特币的话,手续费就低了

打包奖励

打包奖励,只能是一个人打包,一个人会获得奖励,奖励是多少呢,中本聪在2008年提出这个系统的时候,设计了这么一个方案,每十分钟打一个包,最开始的包会奖励打包者50个比特币,过了四年后会奖励打包者25个比特币,没过四年减半。

一个小时有六个十分钟,每个十分钟50个比特币,一天24小时,一年365天,没过四年减半,大概是2100W个比特币。
50*6*24*365*4*(1+1/2+1/4+...)= 2100W

账单以谁的为准

既然打包可以获得这么多奖励,每个人都会打包账单,人人都抢着打包,那以谁都包为准呢,就是通过工作量证明来验证,这个就是做一个很难都数学题,难到没有任何一个人能通过脑子给他做出来,只能通过穷举法,只要你把他尝试出来了,就是获得了奖励,这个过程称之为挖矿成功了。

首先我们要先了解下哈希算法:正着算很容易,反着算很难。传入一个字符串不管都长最后都会生成256位二进制数,就算传个电影进去也是一样。

区块的组成

区块链就是一连串的交易信息,这个块里不只是块里的信息,有个头部有个信息体,信息体里就是账单,但是每个人账单都不一样,他们都想在区块链上接快,然后就要算一个很难的数学题。

区块组成

如上图现在有很多人都想去打包,因为打包有奖励,还有手续费,每个人都有自己都账单,这个账单是收集了周围一大堆人的账单,每个人的拿着自己的账单准备去接块。一般一个区块要包含如下的信息:

  1. 字符串:前块头部+账单+时间戳+随机数
  2. 对字符串两次hash运算,hash=sha256(sha256(字符串))
  3. 要求前n位必须是0:000000000,比如说有9个零,只要前面是9个零就算对了,你就有资格去打包,有资格去打包的意思就是说你要吧你这个hash值,作为一个新块的头部打一个包,打完之后再把这个包接到区块链后面去,接出一个新块就获得了想要的奖励,如何算出9个0呢就是要改变上述的随机数,因为其他内容是改不了的,只能改变随机数,每个人计算时候难度不一样,虽然前块的头部一样,但是每个人打包的账单是不一样的,时间也是不一样的,个人信息也是不一样的,造成随机数大小不同,有人运气好可能第一个就算出来了,运气不好,到死都算不出来,但是平均来说是谁都计算能力越强,谁更有希望打包这个块,挖到这个矿,所以为什么批量去买矿机。

区块产生频率确定

难度N的确定:上面的n的个数越多就越难,为什么呢?第一位是0概率是1/2,第二位也是1/2于是就是1/2*1/2…..最后就是1/2的n次幂,n越大越难,当时设计的时候保证每十分钟,需要出一个块,打包几千条信息

难度N的调整:如何保证十分钟出一个块就是调整n的系数?例如有1W台矿机,每台计算能力是14T/S=1.410的十三次方每秒。十分钟大概有810的19次方次运算, 这个大概是2的66次幂。这就情况下矿机就会把难度设置为66,第一个能算出来前66位都是0的人就能得到打包奖励,你不能保证你运气好,你只能做的就是拼命去买矿机去挖矿,这样就能更高概率获得比特币。

如何防伪

比特币的账单信息都是公开且透明的,比如B广播了一条消息,A支付了10个币给B,实际上A并没有支付,就是一条伪造的信息,我们怎么去防伪,怎么防止篡改。

身份如何进行认证:

  1. 传统方式:人脸识别、指纹、签名显然在电子支付系统上都很好伪造
  2. 电子签名系统,每个比特币用户在注册账户时都会生成一个随机数,除了随机数还有私钥公钥和一个地址,如果想让别人给你钱只要给地址就好了,如果你给别人钱就要给公钥和地址信息即可。

这边需要引入一个概念非对称加密,只有你可以加密,任何人都可以解密你加密之后的信息,例如:A付给B十个比特币,把上面这条交易信息加密成一个摘要信息,再用私钥进行加密成密文,公钥加密码解密成一个摘要,只要最后两个摘要不一样,就所有人认为这条消息是伪造的.
非对称机密

如何防止双重支付

场景:如果A给B十个比特币,但是A没有十个比特币怎么办,或者说A本来就十个比特币,但是同时发了两条消息,分别给BC两人各十个比特币,这种情况如何避免,如何解决双重支付问题?

余额检查

我们知道区块链是把很多交易信息,一块一块打包并链起来,每个人使用区块链时,都会把整个链下下来,包括最开始创世纪的块。

比如A有50个比特币,他同时发出两条交易信息,一条是A付给B十个比特币,第二条是A付给B六十个比特币,接受到消息的人都会去检查A的余额,发现A有十个比特币,则这条信息就被其他人所接受,如果发现A没有六十个比特币,这条信息就会被周围所有人拒绝。
余额检查

双重支付

现实生活中卖房子,有人卖房子同时和两个买家签约这种就叫做双重支付。

双重支付

如何防止篡改

比如有一个想篡改记录的人,他是不可能伪造别人的电子签名的,因为电子签名无法伪造,但他可以删掉某一条记录。比特币最长链原则,就是一个区块链能作为主链。

最长链原则

如果有一个人希望抹掉自己的一条记录,他可以在区块链中间一条块重新计算重新打包,计算出一条链来,这个工作量是很大的,全世界一起算十分钟出一个,你伪造出来一个块不含你的交易信息,但是你这个块别人不承认,因为不够长,所以你在你自己这条链下面继续算继续算,什么时候长过主链了信息也就篡改成功了。

所以你想篡改记录是和全世界人为敌,所以大额交易是要等几个块的,等六个块之后,别人想篡改也就不容易了


比特币的特点

1、比特币作为一种新的支付手段是非常新颖和漂亮的。
2、比特币又没有中心发行机构,不用担心主权危机。
3、比特币总量固定不会发生滥发的风险。
4、比特币天生具有防伪属性,而且可以追溯。
5、交易的时候手续费非常低。
6、因为比特币为匿名货币,在进行交易的时候只需要一个公钥和一个地址,不能知道真实身份,于是活跃于暗网,招到很多政府机关打击。
7、有些人把他当成投机手段,有人在一夜之间暴富,有人一夜之间倾家荡产。