第一次去了解比特币,看了B站上的视频后做了一点笔记

比特币

1.比特币是一种电子货币,数字货币
2.其来自于中本聪《白皮书》
3.去中心化的电子记账系统,每个人的账本都是公开的
4.每个人的消费账本都会广播给其他所有人(billboard),将账单打包成一个块,就是区块,一块大小大约1M,可以存储4000多条记录,区块连接在一起形成区块链
5.以谁为准?

  • 中本聪提出 工作量证明 的方法,即 挖矿。
  • 可以理解为通过做一个很难的数学题,如果做出来了,你就可以打包,去获得奖励。但是这个数学题很难,只能用计算机算出来
  • SHA256:安全哈希函数,正向算容易,反向算非常困难,得到256位的二进制数
  • 挖矿原理:区块链中每个区块要包含头部,以及其他信息,例如:
    • 字符串包含前块的头部+账单+时间戳+随机数
    • Hash=sha256(sha256(字符串))
    • Hash(256位)要求前n位是0
    • 满足上述条件则算对
  • 所以一般来说,谁的计算能力强,谁就更可能算出来
  • 中本聪要求每10分钟,就打包一个块,所以,通过调节n的值,就可以满足要求,例如:
    • 如果有10000台矿机,每台矿机计算能力是14T/s=1.4×10^13,那么1.4×10^13×10000×600s=8×10^19
    • 对于SHA256的结果,前n个二进制数的概率是(1/2)^n,次数就是2^n次
    • 即此时n=66,则满足中本聪的要求

6.为什么记账?为什么别人发的账本我们要接受,花自己的电脑资源去记录?

  • 记账有奖励。有手续费收益较低。手续费由付费方出
  • 打包的人有奖励,每过四年减半:
    比特币打包一次要一个小时,连续不断的打包,第一个四年,每打包一次奖励50bitcoin:可以得下式:50×6×24×365×4×(1+1/2+(1/2)×(1/2)+……)=2100万
    也就是说比特币最多2100万个

7.怎么防伪?

  • 身份认证:电子签名
    • 用户注册时生成随机数,通过随机数产生私钥字符串(重要),又通过私钥产生公钥字符串(公开)和一个地址(公开)
    • 私钥可以对一个数据加密,公钥用于解密(非对称加密)
    • 如果A要付给B钱:则A先进行记录,再用hash函数计算摘要,再用私钥进行加密,产生密码,对全网广播 A给B钱+公钥+刚刚的密码,其他人拿到接受的信息,进行摘要计算,再用公钥解密,比较两个值是否相等,若果不对,则其他用户不承认

8.如何对付双重支付?

  • 余额检查(追溯):区块链中包含很多信息,当A要给B钱时,其他用户就检查区块链中的信息,查看A的余额是否足够
  • 双重支付:指一个人同时给两个人支付钱
  • 如果A只有10bitcoin但是A同时给B和C支付10bitcoin,其他人先接受到的消息可能不一样,如果有个人接受消息后最先找到解,打包了一个块并加到主链上,并包含其中一个消息,则这个消息被承认,另一个不被承认。

9.如何防止串改?

  • 比特币有最长链原则:即如果有两个人同时挖到矿,并且广播出去,其他人先接受到的消息不相同,但是只接受一个,即站队后他们各自算自己的区块,哪个支链长,那个支链就最有可能成为主链(被大多数人认可)
  • 防止篡改:如果有一个人想要修改之前的一个记录,他就在包含那条记录的链的位置创造一条新支链,但是只有当你在其后添加的区块超过当时全世界在主链上的区块数后,你的链才会成为主链,这是不太现实的。