比特币,金融界的一位新宠儿,它是基于区块链技术诞生出的一个具体应用,这篇文章我将以最通俗易懂的语言介绍它的原理
比特币是什么?
比特币[1]是一种电子货币或者叫数字货币,它是基于密码学的货币,这种货币跟我们银行卡里的货币不太一样,它的出现算是一个传奇。2008年金融危机,同年11月1日一个网络极客化名中本聪,到目前为止我们也不知道他到底是谁,他在网络上发表了一篇《比特币:一种点对点的电子现金系统》的文章,我们现在也管他叫《区块链白皮书》
他在文章中提出了一种去中心化的电子记账系统的思想,相比于我们现在使用的货币的记账方式,现在货币是由银行记账,而比特币的思想是不由一个具体的人或机构去记账,而是公开账本让每个人都拿着账本记账,实现去中心化的效果
当两个用户间互相转账,将会把交易记录广播给其他用户,然后把一定量的记录打包,这就成了一个区块,后续再有区块加进来,会和之前的区块链接在一起,这就是区块链[2]
挖矿
那么就出现了新的问题,广播出去的交易记录后别人为什么帮你记账?多条打包记录以谁为准呢?
因为网络存在延迟等因素,同一时刻广播出去的交易记录可能顺序就打乱了,并且还参杂着一部分假记录,那么就需要对这些记录进行审核验证才行。至于为什么别人愿意为你记账,是因为有一个奖励机制,记账成功者会获得记账奖励,这个奖励包含交易手续费和打包奖励,手续费奖励很少,收益主要来自打包区块给予的奖励
打包奖励规则,根据中本聪的文章里所写方案,系统会每10分钟自动打一个包,发行之初给予最先成功打包的人50个比特币,没过4年奖励减半,也就是4年后这个奖励为25个比特币,再过4年就是12.5个,所以根据这个数据计算可得,比特币一共有2100万个
中本聪提到,通过工作量证明的方式来确定以谁的打包为准,区块链会生成一道很难的数学题,难度到达不能以任何人脑进行计算,只能通过计算机大量重复的试错去获得最终的结果,这个过程我们称之为挖矿
挖矿的原理
计算机密码学中有个叫哈希函数的东西,是专门用于加密字符串的,我们有时也叫它数字摘要或散列函数,这个算法有个特点就是正算比较容易而反算特别特别困难。其中有一种哈希算法叫SHA256,如果将一个任意字符串输入到这个SHA256里,将会得到一串256位的无规律二进制数,而且这个算法不管输入的是什么,得到的结果都无任何规律,哪怕输入值只变了一个标点符号
比特币区块链上的每个块会包含一个区块的头部部分和区块的具体信息部分,比特币交易会生成一大堆交易信息,而需要哈希加密的内容就是前一块区块的头部信息、当前已打包好的账单信息、时间戳和一串打包时生成的随机数等内容,当把这些信息进行两次SHA256加密算法加密以后,就得到当前包的哈希值
那么,每个人都可以生成这么一个区块,谁有资格将这个区块合并进主区块呢?这就是重点以及挖矿成功的难点,根据要求,我们要得到一串前n位为0的哈希值才算成功,要想改变这个结果,我们只能不停更换计算时里面添加的那串随机数
对于这个数学计算题的难度设置,就取决于需要获取的结果里0的个数,也就是那个n。中本聪的白皮书中规定,每十分钟要出一个新块,假设全世界挖矿的计算机有1万台在运行,每台矿机每秒一共进行 1.4*10^13
次运算,可计算所有矿机10分钟一共可计算 1.4*10^13*10^4*600
,大概是 2^66
次运算,那么n就是66,也就是要求谁先算出的哈希值前66位为0就算他挖矿成功了
你没有办法让这个题变得更简单,你能做的就是不断的运算,算出需要的那个结果,也正是因为这个原理,导致挖矿的人越多,需要的结果就越难,每个人就越不容易挖到矿,所以就导致了大量的矿老板不断的购入更多的机器,更高性能的硬件,更多的电力消耗,比特币也更稀有,价格一路高涨
如何保证交易记录的真实?
传统的身份认证方式有本人签名、指纹识别、人脸识别等,但是这些认证方式都不适合用于计算机系统,因为这些方式都可以进行拷贝
计算机所运用的方式是电子签名,电子签名的原理为
随机数 -> 私钥 -> 公钥
电子签名也是通过哈希加密算法计算的,所以通过公钥不能够反算出来私钥,私钥用于加密,公钥用于解密,这种加密方法我们称之为非对称加密,其中私钥要绝对保密,私钥丢失一切都没了,公钥是需要公开的。
比特币所用的是再将公钥转换成一串比特币地址,需要接收比特币时只需要告诉对方比特币地址就行,而发送比特币则需要公开公钥和比特币地址
假设用户A支付用户B十个比特币,那么用户A会先将这个交易记录通过SHA256算法加密成一串摘要,然后通过私钥进行加密成一串密码,再把这串密码、交易记录和公钥对外进行广播。其他用户会对这条交易记录进行哈希运算得出一个摘要1,然后使用公钥对密码进行解密出一个摘要2,最后将摘要1和摘要2进行对比,如果摘要1和摘要2是一样的,就说明电子签名的密码和你手上的私钥是对应的,那么就证明了这条交易信息是真实的
如何避免双重支付问题
首先其他人会对你的支付金额进行来源追溯,对已链接进区块的你的金额和余额进行对比,如果交易金额小于余额则允许交易,反之直接拒绝
如果用户A同时给用户B、用户C一起支付了10个比特币,那么用户A会将这两条支付记录会广播给其他部分用户,其他用户会对用户A余额追溯,证明了交易记录是被允许的,就会把交易记录打包进自己的区块,当某个用户成功挖到了矿,这条交易才算最终完成,别的挖矿者会放弃自己手上的区块,转而加入到新的区块链末端,这也是比特币交易会延迟到账的原因
如何防止区块链被篡改
区块链有个最长链原则,如果区块链出现了分支,矿工会继续挖矿,直到哪条分支最长,短的一边会放弃自己的区块加入到对方区块中去,想要篡改区块链只能自己从历史某个区块开一条分支,将自己分支挖的比主分支更长,那么就篡改成功了
但是这几乎是不可能完成的事情,因为这就相当于你凭一己之力自己的矿机算力对抗全世界其他矿机算力的总和,一般大额交易会多等几个新区块生成就能确保万无一失
结语
比特币和区块链作为一种前沿技术,是非常新颖和漂亮的,比特币没有中心发行机构,不用担心主权危机,比特币总量固定,不会存在滥发的风险,比特币天生具有防伪属性,可以追溯,比特币手续费非常低,由于有这么多优点,有人甚至提出让中本聪获得诺贝尔经济学奖,但由于比特币的匿名性,也被一些不法分子用于违法犯罪活动,被一些国家和政府打击,还有一些人把比特币当作一种投机手段,比特币的暴涨暴跌,造成了许多人一夜暴富,还有许多人倾家荡产,我们应该把比特币看作一种技术手段,如果要购买比特币也应该以投资而不是投机的角度,因为从长期来看,任何的投机行为都会使你倾家荡产,而只有投资才能让你稳定的获利
-
比特币官网:https://bitcoin.org/zh_CN ↩︎
-
区块链爆块查询:https://www.btc.com/btc/pool/55 ↩︎