背景:2008年,国际金融危机下,人们因为金融系统的崩溃,从而失去工作,甚至有人倾家荡产, 这时候,有一个网络极客看到这一幕幕人间惨剧,心里暗骂:为什么华尔街这帮家伙造的孽需要全球来买单? 我要改变这种情况.
于是,这位现代侠客开始了他的计划,他先是在2008年在网络上发布<比特币:一种点对点的电子现金系统>,一场伟大的社会实验就此开始.
比特币的实质是去中心化的电子记账系统.
通常来讲我们会通过银行进行记账, 银行是以国家来为其背书的.所以大家都愿意去相信银行,并且把钱存在里面.
比特币的设计原理规避了银行这种中心化的架构.
基本原理说明:
比如现在有A\B\C\D 四个人, 如果互相之间发生交易(如A给B10个比特币,B给C3个比特币,etc.),会把信息公开告诉所有人,然后每个人都要进行记账. 那么问题来了:
1.ABCD凭什么要记账
2.最后以谁的账本为准
3.如何防伪?
4.如何防止双重支付?
5.如何防止篡改?
接下来一个一个来看中本聪同学是如何解决这些问题的.
1.ABCD凭什么要记账
记账有奖励,想让人做某件事情,就是让他有奖励.人性哪.
1)记账的人会得到手续费,比如A付给B10块钱,C记的账,C会从中得到一定的手续费.
2)打包奖励,只能有一个人完成打包,打包会有人得到奖励. 完成打包的人会得到50个比特币(BTC)的奖励
打包 注:中本聪设计账本记录要在10分钟左右完成一个打包,打包的结果我们称为区块(区块内约有4000条交易记录) 据以上,可以算出比特币大概有多少个, 20*6*24*365*4*1+1/2+(1/2)^2+....)=2100万个
2.最后以谁的账本为准
工作量证明(Proof of work) 简单理解就是,系统会出一个很难的数学题,如果谁先做出来了,就可以获得奖励.但是这个数学题非常难,难到只能通过穷举法,一个一个试出答案,试答案的过程我们就叫做挖矿.
引申:哈希函数sha256("美女")=256位的二进制数
这个函数的特点在于,你随便输入什么,都能很快的得到256位的二进制数.
举个类比的例子说明:对于X^5+LOG2X=Y, 如果你输入X=a, Y
快就能算出来,但是给你Y,让你算X,就会难得多.而哈希函数就比这个还要难很多.
挖矿原理:
D-D-D-D-…
以上每个D代表一个区块,每个区块的里面包含的信息: 前块头部+账单信息+时间戳+随机数=字符串(先不要管字符串怎么来的)
对字符串进行哈希运算 HASH=SHA256(字符串)=256位的二级制数
对256位的二级制数, 通常会要求前n位为0(通常设置难度即设置n的大小,调整n的大小来控制出块时间),如果谁先试出来这个结果,就有资格去打包区块. 这个幸运儿就能再把一个新的D(区块)接到上面的区块链中.并获得相应奖励.
要怎么算出来这个256位数字. 就需要挖矿的人(矿工)不停的进行试以上公式中的随机数.直到试出来.
注意,每个人在计算的时候难度是不一样的,因为每个人记录的账单信息和时间戳及个人信息都不一样.但是一般来讲,谁的算力更强,即试得更快更多,谁挖到的概率就大.
3.如何防伪?
先从身份认证说起,传统的身份认证方式有签名\指纹\人脸等,但是不够安全,现实中易被伪造
如何解决这个问题呢?
电子签名!
怎么来的: 随机数-->私钥-->公钥-->地址
公钥和地址可以公开,比如你想让人转钱给你,可以把公钥和地址给他. 但是私钥要保密,不能给!
私钥可以算出公钥,但是公钥算不出来私钥,密码学上这种关系称为 非对称加密
通过实例来理解:
比如A给B转1个比特币,A会对这个信息进行HASH哈希运算得到一个摘要,然后利用私钥对摘要进行加密得到密码. 然后A要对全网进行广播这个信息+<公钥>+<密码>
比如C听到广播后, 会进行验证这条信息是不是真实发生的. C会对进行哈希得到摘要1,同时用A提供的<公钥>+<密码>得到摘要2,如果摘要1=摘要2,就说明这条信息确实是A用自己的私钥加密出来的. 如果不一样,就说明这条信息是伪造的,不是A发起这笔交易的
4.如何防止双重支付?
1)首先要理解余额检查-追溯法,比如你要付钱给别人,至少要证明有足够的钱. 比如A给B转1个比特币, 那么在历史的区块链上就可以看到过往的记录,看是否A在历史上得到过1个比特币.
2)什么是双重支付,也叫双花,就是同一笔钱你用了两次,比如A同时发出两条消息1-A 付钱给B 1个BTC, 2-A 付钱给C1个BTC. 网络上接收到这两个消息的人时间不一样. 此时比如D先接收到1-A 付钱给B 1个BTC并且算出了数学题,然后打包区块并接上链.此时1-A 付钱给B这条信息会被确认,而 2-A 付钱给C1个BTC就会被放弃.
5.如何防止篡改?
先来理解最长链原则,如果网络中有A和B几乎同时算出了数学题并进行打包上链后怎么办,此时链上会有两个分叉,这个时候我们通过时间来解决,看两条链过一段时间后哪一个最长,最长链的那条会有越来越多的人站位直到最后所有人抛弃那条短的链
理解之后我们再来看如何防止篡改
比如A之前发生过一笔交易A to B 1个比特币,但是A想对这条记录进行篡改怎么办?
回到我们的链来 D1-D2-D3-D4-…
比如A想篡改的这笔交易发生在D2区块,他需要从D1往后开始篡改,这个工作量会很大,相当于一人对抗全世界.理论上如果A的计算能力超过所有人,他是可以完成篡改的. 但是这种概率会很小,首先没有人有如此大的计算能力,至少在可预见的未来没有;其二,如果他有这么大的计算能力,他可以继续挖矿赚钱(除非他是疯子或者科学怪人)否则不会去做分叉.
总结,通过以上五个问题的解决,中本聪同学探索出了一条不需要银行等中间商从而实现人人认可的记账方案.这是一个伟大的发明.而且即将对未来的人类社会造成巨大的影响. 比特币只是区块链的一个应用,犹如电灯之于电力的发明. 实际上底层技术是区块链技术,这个技术会大大降低人与人,点对点的信任成本.从而降低社会运行的成本.
其实还有很多细节的问题没有提到,感兴趣的同学可以了解 拜占庭将军问题-如何解决恶意节点从而保证信息的一致性等.
文章内容借鉴李永乐老师视频内容,并加以个人理解.仅用作学习与分享,不做任何商业用途.希望将区块链的知识分享给有缘人.
阁阁