比特币是什么?
1. 2008年11月1日,中本聪《白皮书》,去中心化的记账系统
中心化的记账系统
1. 什么是记账?比如你去楼下的711买了一瓶肥宅快乐水,用支付宝付了3块钱,支付宝会检查账户有没有这么多钱,支付了之后还剩多少钱等等。现在的记账都是银行来记,因为银行有国家的信用来背书
而比特币采用的是去中心化的电子记账系统
1. 每个人的账本都是公开的,都可以让别人去看
上面的系统需要解决几个问题:
1. 为什么要记账
2. 以谁为准
3. 怎么防止伪造签名
3.1:怎么保证签名与记录的内容完全对应?
3.2:如何让这个签名体现出是A的签名,而不是B的签名呢?
4. 如何确认付款方是否有足够的比特币进行支付
5.如何防止双重支付
6. 如何防止篡改
为什么要记账?
记账有奖励
1. 手续费的收益
比如:A支付10BTC给B,那么A需要多付一点点,这一点点就是给记 账的人的手续费
2. 打包奖励
中本聪设计了一个方案:每10分钟打一个包,最开始这一个包会奖励 打包者50个BTC,每生成21万个包,也就是每过4年,奖励就减半,到目前为止,现在的打包奖励是6.25个BTC
所以打包的人有两部分收益 = 手续费+ 打包奖励
现在BTC的行情:一个BTC = 12,935.65 美元
6.57 * 12935.65 * 6.6 = 560915.6553 元
我们来算算总共有多少个BTC
50*6(1个小时6个10分钟)*24(一天24个小时)*365(一年365天)*4(每4年减一半)*(1+2/1+4/1+8/1+…….)
所以最后50*6*24*365*4*2算出来大约等于2100万个BTC
以谁为准?
由于打包很赚钱,大家都抢着去打包,那这个到底以谁为准呢?
聪明的中本聪想了一个办法:工作量证明(POW) 也叫挖矿
就是说每一个参与打包的人必须做一个很难的数学题,只有做出来了才能有权利打包
怎么保证签名与记录的内容完全对应?利用SHA-256 hash算法
比如:A支付50BTC给B
sha-256(A支付50BTC给B) = 1110010001010101110101010010000110101100001001001111001001101101100110011110000101011010001000100100100010100001010011101000110101001010000111011010100110101010010001111000110100100010111111110101000111111010010100111101001110100001110011101011111001111001
sha-256(A支付50BTC给C) =111010011000010100101111001101111000111010110010001011000001011000000111110010001001001101011001101101010011011000101000010100001110110011111100111111101110101100100101110100000000110000101011000011000000110010110100000100110111001011010110111011001001100
如何让这个签名体现出是A的签名,而不是B的签名呢?
非对称加密法
A支付50BTC给B ---> 用非对称加密法加密(SHA-256(A支付50BTC给B))
SHA-256(A支付50BTC给B) = 哈希值
A将“A支付50BTC给B”这条记录广播出去,然后还有加密后的密码和自己的公钥公布出来
B用A的公钥对A的签名进行解密, 解密后的哈希值=哈希值1
B用接收到的消息(A支付50BTC给B)输入SHA-256
SHA-256(A支付50BTC给B)=哈希值2
如果哈希值1=哈希值2则:
1. 这个签名是针对这条记录的
2. 这个签名是A的
3. 接收到的记录与原始记录相同,未被篡改
需要一种方法能够确认付款方是否有足够的比特币进行支付
1. 每笔交易都必须把以前的交易作为基础,而不是以余额为基础,也就是 追溯
比如:A支付50BTC给B,必须有人向A支付了大于等于50BTC,而且这50BTC没有被使用过
A支付时发送:
支付消息:C支付50BTC给A -> 支付50BTC给B
付款方的数字签名: A用私钥加密:SHA-256(C支付50BTC给A -> 支付50BTC给B)
付款方的公钥: A的公阴
B收到支付的消息后:
50BTC >= 50BTC
SHA-256(C支付50BTC给A -> 支付50BTC给B) = 哈希值1
使用A的公钥对A的数字签名解密,得到哈希值2
哈希值1 = 哈希值2
区块链
比特币网络的参考标准就是一条区块链,区块链你可以理解为一条数据集,然后通过不断更新内容形成新的区块,从而构成一条长链:
而整合这些交易信息的用户,则称为“矿工”。每一个计算机都可以当“矿工”,那么这时问题又来了,那么多的“矿工”,究竟添加谁生成的新区块?
比特币网络为了限制新的区块生成,产生了一种额外的计算工作,去计算一个对应前一个区块的数。
至于怎么计算,这里不细说了(因为我也不知道),总之需要非常强大的计算能力,计算机大概需要跑10分钟左右。(以2010年计算机为准)
比特币网络以最先成功计算出来的矿工的区块为准,然后将其作为新区块添加到比特币区块链。而计算出来的矿工,会得到2比特币+交易额的2%比特币作为奖励。但是随着区块的越来越多,这个奖励会逐步递减。最后可能只会得到这2%的交易额抽成。文章来源:https://www.toymoban.com/news/detail-498200.html
而且根据比特币算法的特性,比特币是有数额限制的,也就是说,总共只有2100万个比特币文章来源地址https://www.toymoban.com/news/detail-498200.html
到了这里,关于浅谈比特币原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!