Bitcoin是一种数字货币,每笔交易大家都公开透明地广播给所有人,然后每10分钟大家把这些账单信息打包成一个块(大概4000条信息,1M左右),并且将这个块连接在前一个块的后面,形成一条链,这条链就叫区块链。所以区块链其实就是一系列的账单信息,或者说是数据库技术。
那比特币是如何发行出来的呢?大家为什么会耗费自己的电脑资源去记账呢?因为记账,然后打包这些交易信息,能争夺奖励,这些奖励其实就是在发行比特币。等比特币发行完后,就是奖励手续费了。
奖励多少呢?刚开始4年,每打包一个块奖励50个比特币,下一个4年奖励25个比特币,一直这样4年一减半。所以我们可以算出来比特币总数是50×6×24×365×4×2=21024000个,约等于2100万个。目前是2020-2024年,每打包一个块奖励6.25个。等2024-2028年就是3.125个了,供应量通缩。
那么大家都记账,打包交易记录,争夺奖励,以谁的为准呢?这个以谁为准的过程,就叫挖矿,以谁的为准了,谁就挖到矿了,就获得奖励比特币奖励了。
大家都会得到一个字符串,这个字符串包含前块的头部,你记录的账单,时间戳,还有一个随机数。所有人不断将这串字符用哈希函数SHA256做两次运算,然后得到一个哈希值。当你第一个计算出一个值,它前面有n个0,符合要求时,于是你就取得接块资格了,你广播给大家,我挖到矿了哈。
这时你就可以把这个计算结果作为新块的头部,加上你的账单等,打包成一个块,接到主链上了。大家认可你,于是继续重新记账,打包下一个块。你接上了新块,奖励就到手了。
那这里涉及一个难度设定问题,大家都做自己的哈希运算来计算出符合要求的哈希值,虽然可能有的人运气好,但终究是谁的计算机算力大,谁更有可能计算出合适的结果。那如果全世界大家加在一起的算力越来越大,如何保证一直是10分钟左右出一个块呢?
可以通过调整字符串里的随机数,来调整出块难度,保证出块时间平衡在10分钟左右。比如说全世界有10000台矿机,每台矿机的算力是14T次每秒,也就是14×10的12次方。10000台就是10000×1.4×10的13次方,再乘以10分钟就是600秒,结果10000×1.4×10的13次方×600=8.4×10的19次方。
保证两次256哈希运算后,哈希值前n为是0,计算出这个哈希值的概率就是1/2×1/2.……1/2的n次方。n越大,计算出来的概率越小,也就是难度越大,全世界的计算机要计算出2的n次方次才能算出来。那如果说2的n次方次=8.4×10的19次方次的话,这个n是多少呢,是66。也就是说当前66位是0时,10000台矿机挖矿,大概能保证10分钟左右出一个块。
一个哈希值有256位,如果256位都是0呢?2的256次方等于多少台矿机,才能保证10分钟左右出一个块?所谓的量子计算机算力都不够吧?我记得一粒谷子加2粒,4粒,一直下去……一个棋盘就可以放下全世界的谷子的故事?一张纸叠41次就能到达月球?指数级传播的故事。
网友评论