一、比特币(BTC)是什么?
1、2008年11月1日,中本聪《白皮书》中提出了一种去中心化的电子记账系统
2、记账系统中每个人都会把自己的交易记录广播出去,大约4000条交易记录会被打包成一个“区块”
3、新的区块不断连接到之前的旧块后,就形成了一个区块链
Q1:因为网络延迟,每个人的记账顺序可能不一样,以谁的记录为准?
Q2:为何要记账?
二、对于Q2,因为记账有奖励
收益1:记账有手续费,交易者多付出一点比特币作为手续费,
收益2:打包有奖励,交易系统设计中,每10分钟打一个包,第一个4年,每次打包成功会收到50个BTC作为奖励,每隔4年奖励减半。
比特币总数:50
因为手续费和打包的奖励,大家都会抢着打包,那么以谁的打包为准呢?(Q1)
三、对于Q1,以谁的记录为准?
所有参与者都会去计算一个数学问题作为工作量证明,这个就是挖矿,谁先解出来这个数学题,就可以打包获得奖励。
四、挖矿的原理是解答一个数学题,这个数学题的计算考察的是cpu的计算能力
1、哈希函数:正向计算很容易,反向计算十分困难,反向计算只能一个一个地尝试
2、每个人手中都有收集到的一堆账单需要打包,想要打包首先要计算一个数学题,这个数学题是
(1)字符串主要包括:前块的头部+账单+时间戳+随机数+......
(2)hash=sha256(sha256(字符串))
(3)不断修改字符串中的随机数,直到算出来的hash值前n位为0,然后这个hash值会放在新块的头部,并接入到前块中,获得奖励。
(4)由于每个人的字符串内容不同,而且有随机数的存在,每个人的计算难度是不同的,但是平均来说,谁的计算能力更强,谁就更有可能获得打包的权利,所以大家才回去拼命地买高性能的矿机。
3、挖矿的难度,当前hash前n位为0,n是怎么得来的:
为了保证每10分钟出一个块,系统会根据全球现在矿机的计算能力,来调整n的值。
Q3:如何防止双重支付的问题?
Q4:如何防止记录伪造的问题?
五、对于Q4,如何进行身份认证?
1、传统的方式:人脸,签名,指纹这些传统的方式都不可用,因为计算机中可以复制。
2、电子签名:
一个比特币用户在注册的时候,系统会生成一个随机数,然后根据这个随机数,会产生一个私钥和一个公钥以及一个地址。
私钥是保密的,公钥和地址是公开的。
私钥可以对一条信息进行加密,公钥可以对私钥加密后的内容进行解密,此为非对称加密。
交易者将交易记录生成hash摘要,并对摘要进行加密生成密码,然后把交易记录、公钥、加密后的密码广播出去收到交易记录的人通过公钥和密码对比保证交易信息的有效性。
六、对于Q3,如何避免双重支付?
1、余额检查:
每次余额检查都会获取所有的块,检查交易者余额的有效性。
2、双重支付:
假如一个交易者有10个比特币,同时产生了两条10比特币的支付给B和C,网络中的用户会随机地收到这两条记录,首条记录会通过余额检查,而第二条记录会被丢弃如果这两条链中的某个用户打包成功,则另一条链中的记录会被丢弃,所有的用户会站队到新链中,从而避免双重支付。
七、防止记录被篡改
1、最长链原则,按照这个公认的原则,所有人都会站队到最长链中去。
2、防篡改,假如某个交易者想修改链中的某个区块,他必须重新计算并打包,这对计算能力要求很高,难度很大,假如能计算出来,也不符合最长链原则;再假如篡改者的计算能力超越了其他所有的矿机,并且计算出了最长链,这样才能修改交易记录,这样可能性是极小的,而且被篡改的块越靠前,越难以被篡改。
3、通常大额交易需要等新形成6个块以后才能确认交易成功。
八、比特币是匿名货币,且总量有限,没有主权危机
来源:CSDN
作者:shengruxiahua2571
链接:https://blog.csdn.net/shengruxiahua2571/article/details/103836774