区块链和比特币的科普
区块链是啥?
区块链到底是什么?它是: ● 分布式网络 ● 公开的账本 ● 通过加密技术保护信息安全的系统 ● 巨大的数据库
中心化网络 vs 分布式网络
分布式网络中没有中心主导设备,节点之间的权力是平等的。分布式网络中的交易都是直接进行交流/交易的。
区块链就是一个公开的账本。之所以是账本是因为他它会记录下交易信息。并且会将每一个交易信息广播到网络中,让每一个节点都能知道。但是交易的详细内容并不知道。例如:其他节点只知道A转账了10元给B,但是不知道A是谁,B是谁。
在这种分布式网络中进行交易,没有了之前有一个权威机构的审核,替代它的是其他节点的盛和投票。这个投票的过程是由其他任意节点进行的,只需要多数节点对交易的过程进行确认,那么我的交易才能成功。这样就原来的中心机构审核的权利交给了其他任意节点,做到了去中心化。
当交易完成,就形成了一条真正的交易完成的记录。如果将很多条交易记录打包放在一起,并组成其他就形成了区块。
加密技术-哈希算法
哈希算法有很多,但是功能是类似的。都是通过哈希算法给输入值计算出一个64位的随机并且唯一的字符串,这个哈希值可以唯一标识输入的值。 哈希算法有特性:
- 等长。哈希值是等长的,一定是64位。
- 防碰撞。哈希值是随机并且唯一的。
- 隐藏性。已知输入值求出哈希值很容易,但是已知哈希值几乎不可能反求出输入值。这样就保证了输入值可以被隐藏起来。注意:这里是几乎不可能,如果使用蛮力求解,即一个一个值带入哈希算法的公式中,花个一辈子的时间说不定也是可以求出来的。
哈希算法和区块链结合
将交易记录通过哈希算法计算之后放在区块中并链接起来就形成了区块链。在区块链上已经被哈密的记录不能被修改或者删除,这样保证了区块链中记录的安全。
对称加密 vs 非对称加密
对称加密相对简单,就是对同一个东西进行加锁和解锁都需要使用同一个密钥。就类似对于们来说上锁和解锁都是使用同一把钥匙。但是这样的缺点是,在网络中如果想要对方通过密钥解密,那么就需要我将密钥传送给对方,但是这样又有一个问题,密钥泄漏了怎么办?所以我需要对密钥加密,这样不就形成了死循环了嘛!
非对称加密使用了两个密钥,一个叫公钥,一个叫私钥。公钥是公开的,但是私钥只能自己拥有。就相当于所有人都可以拿着公钥给你家门上锁,但是只有你能拿着私钥给你家门解锁。当你想要在网络中和某个人进行加密通信的话,可以让别人通过你的公钥(因为是公开的,所以别人可以很容易查到)给你通信,在网络传输的过程中,黑客没有办法获得你的私钥,所以这个加密文件就得以被保护。当你收到了文件之后,再用私钥解开通信数据即可。
非对称加密不仅可以传送加密信息,还可以可以通过唯一哈希值作为自己数字签名,来证明自己的身份。例如:我对一条信息进行哈希值进行之后使用私钥对这个哈希值进行加密,然后我将这条信息和加密的哈希值发送出去。那么别人都可以通过公钥对加密的哈希值进行解密得到我发送的哈希值,然后再对我发送的消息进行哈希计算又得到一个哈希值,将两个哈希值进行比对,如果相同,说明这个别人使用我的公钥确实可以对这条信息进行解密,因此可以证明这个信息是我发送的,从而证明了我的身份。
区块链就是使用了非对称加密的方式对传输的信息进行加密,并且可以证明自己的身份。所以区块链是一个可以保证信息安全的系统。
比特币是啥?
区块链(Block Chain)≠比特币(Bit Coin),区块链是一种记录交易信息的网络模式,而比特币只是利用区块链技术而形成的一种加密虚拟电子货币。
拥有比特币的人是如何交易的?
每一次交易都会带上付款人的公钥,付款人BTC的来源,和收款人的公钥。之所以需要带上BTC的来源,是因为根据BTC的来源结合查区块链中的交易记录可以知道交易的BTC是否被使用过。如果一查BTC的来源已经被C使用过了,然后他又使用这个BTC来进行交易,那么这个交易就是失败的。
比特币的来源
每一次生成一个新的区块就会获得系统的出矿奖励,也就是比特币。获得比特币的方式叫做“挖矿”,挖比特币的人叫做“矿工“。这些矿工拥有比特币的”铸币权“。
系统的出块奖励会随着区块的增加而减少,每出21w个新区块,奖励就会减少一半,而2009年第一个区块挖出来的时候,系统奖励为50个比特币。因为平均出一个新的区块需要10min,那么出21w个新区块就需要4年的时候,从2009年到现在2022年已经过去了13年,那么奖励从原来的每一个区块50个比特币变成了50(个比特币)/13(时间长度)/4(周期)*2(倍数)=6.25(个比特币)。
比特币会不会挖完?
比特币的总量是2100万个(比特币创始人中本聪拥有100万个),现在已经被挖出了接近2000万个。如果根据总量来说,BTC总有一天会被挖完。但是50无论处于多少个2,最终都不能等于0,而只是无限接近于0。所以可能很多年之后,每出一个新区块,系统奖励为0.0000000001个比特币也是有可能的。
如何挖矿?
随便找到一个区块,然后根据区块中header中的信息可以找到区块链中前面所有区块的所有信息。挖矿的要求就是填充区块中的随机值的部分,然后能够让整个区块的哈希值符合比特币协议。比特币协议难度要求就是让要这个计算出的哈希值以若干个0开头。具体以多少个0开头不确定,规定0的数量越多,计算出的难度就越大。 比特币协议是这样的:每隔2016个区块,系统会自动调整一次难度。大概就是判断生成一个新的区块需要的时间,如果小于10min,说明现在生成区块的速度很快了,所以需要加大生成区块的难度,所以生成下一个区块的哈希值的前缀0的数量就越多。 2009年的要求是以8个0开头,2020年的要求是以19个0开头。可想而知多少人在专门卷着挖比特币。
挖矿需要什么?
生成一个新的区块就需要需要找到那个可以使得区块哈希值符合比特币协议难度的随机数,所以只需要暴力求解即可。(除非你运气好,随便带一个数进入就可以正好生成一个新区块,这概率可能比你可当上国家主席还低,hhh)这就需要用计算机来算,但是挖矿的计算机也在卷,有原来的普通cpu计算(每秒可以带入5000个随机数),到后来gpu计算(每秒可以带入4600w个随机数),现在还有矿机(每秒可以带入14万亿个随机数)
|