1、比特币的区块里都有啥?
大家可以通过https://btc.com/这个网站去查看所有的区块信息
这张图是从https://btc.com上截下来的图,其中高度就是说这是第几个区块,播报方就是谁创建了这个区块(意思就是谁挖到矿),大小就是指这个块的大小,块收益包括挖矿奖励12.5个比特币+交易手续费,后面的块哈希相当于这个块的编号
我们点击后面区块的哈希值就可以看到一个区块的详细信息
这里面显示了比特币区块头部的大部分信息,比特币区块头部信息共80个字节,包括版本号(4个字节),前一个区块的哈希值(32字节),merkle树的根植(32字节)、时间戳(记录了区块的产生时间4个字节),目标值(即难度系数4个字节),随机数(4个字节,就是上面图片中的Nounce)
除了这个头部信息,每个区块中占据字节数最多的当然是交易信息,每个区块中大约包含交易信息2000多条
2、哈希是啥
上面的图中多次提到一个概念叫做哈希值,哈希的算法比较多,比特币中用的哈希算法是SHA256,他有这样的特点
对于任意一个输入,不管我的输入是空还是2G的字符,他的输出都是256比特的二进制数值,而且具有以下两个特性:
单一性:就是输入不同,输出就不同,即便两个输入非常相似,只差一个字符,输出也会差距很大,这就保证了数据的完整性
单向性:根据输入计算输出很容易,但是根据输出计算输入几乎不可能,现在唯一的方式就是一个一个的去尝试
3、挖矿是啥
比特币大约每10分钟(通过上面的图可以看到,不是精确的10分钟,会有出入)产生一个区块,由于比特币是分布式的、多节点的,那么问题来了,谁来创建这个区块,这个区块是否可信,比特币在发明的时候是这样规定的:
谁创建这个区块,就会给这个区块的创建者一定数量的比特币和手续费作为奖励,所以大家会争着去创建这个区块,到底由谁来创建呢,争夺创建权的过程就是挖矿的过程。
挖矿的过程就是不断的进行哈希运算,去寻找满足条件的随机数的过程
矿工们要一次一次的改变随机数,然后对区块的头部进行哈希运算,如果运算出来的结果满足条件(这个条件就是哈希出来的数值小于等于块头部中的目标值)且你是第一个算出来的,那么恭喜你,你挖到矿了,你抢到了这个区块的创建权,然后你将你创建的这个区块广播出去,其他矿工收到这个新的区块后会进行验证,验证通过则会在自己的账本上就这个新的区块添加上去。
3、比特币总量为2100万个,2100万这个数是咋来的
稍微了解比特币的人都知道,比特币的总量大约为2100万个,但这个数是怎么来的,为什么是2100万的,可能没多少人去想过这个问题,这其实就是一道数学题
我们知道从2009年1月3号第一个创世区块产生起,当时每创建一个区块,奖励50个比特币,然后每4年奖励减半,而且大约每10分钟产生一个区块(通过控制目标值来保证),所以比特币的总量就是这样计算出来的,
4*365*24*60/10*50(1+1/2+1/4+1/8+1/16+…)
后面括号里面的是求一个极限,这个极限的值为2,上面表达式的最终结果为21024000,即约等于21000万
4、怎么挖矿,如何成为一名矿工
我们从本文中第一张图可以看到,前两个区块都是一个叫做F2Pool的矿池挖出来的,在很久很久很久以前,挖矿的机器不多,自己在家用笔记本电脑都可以挖出来,挖矿的机器太多,单个设备挖到比特币的概率太小,于是大家联合起来,将所有的算力集中到一起,形成矿池,联合作战,挖到比特币后大家平分,所以当下来说,成为一名矿工的方法就是加入大的矿池。