5. 区块链系列教程之:比特币中挖矿和共识
简介
我们知道比特币就是挖矿产生的,那么在比特币网络中,挖矿有什么特点呢?怎么分配挖矿收入呢?在这篇文章中你都能找到答案。
比特币的节点构造
上篇文章我们提到了,比特币是一个P2P网络,P2P网络中就有很多个节点,从P2P的定义来看,各个节点的地位是相同的,其实不然。比特币网络的节点各有作用。
我们先来看一个总体的图,比特币节点总共有4种类型:
这四种类型分别是钱包,挖矿节点,全节点,和网络路由节点。
不同的角色组合成了一个庞大的比特币网络。根据功能的不同,不同的角色可能需要不同的类型。
上面我们介绍了7个常见的节点。
-
Bitcoin Core 这个是你在官方下载的bitcoin软件,它包含了4中类型的功能。
-
Full Block Chain Node,这个节点包含了所有的比特币区块链历史的信息,叫做全节点,全节点主要用来做历史交易的验证。
-
Solo Miner,这个是独立的挖矿节点。
-
SPV wallet, 这个是我们之前介绍的轻量级的钱包。
-
Pool Protocol Servers, 这个是矿池连接比特币网络的网关。
注意,比特网网络除了自身的P2P网络协议之外,还有一个Stratum协议,Stratum协议被应用于挖矿、以及轻量级或移动端比特币钱包之中。
-
Mining Nodes,这是连接到比特币矿池的矿机节点。
-
SPV stratum wallet, 使用Stratum协议的轻量级钱包。
这些节点组合在一起,构成了庞大的比特币网络。
挖矿
挖矿是增加比特币货币供应的一个过程。挖矿同时还保护着比特币系统的安全,防止欺诈交易,避免“双重支付”,“双重支付”是指多次花费同一笔比特币。矿工们通过为比特币网络提供算力来换取获得比特币奖励的机会。
每10分钟就会有一个新的区块被“挖掘”出来,每个区块里包含着从上一个区块产生到目前这段时间内 发生的所有交易,这些交易被依次添加到区块链中
矿工们在挖矿过程中会得到两种类型的奖励:创建新区块的新币奖励,以及区块中所含交易的交易费。为了得到这些奖励,矿工们争相完成一种基于加密哈希 算法的数学难题,这些难题的答案包括在新区块中,作为矿工的计算工作量的证明,被称为” “工作量证明”。该算法的竞争的机制以及获胜者有权在区块链上进行 交易记录的机制,这二者比特币安全的基石。
新比特币的生成过程被称为挖矿是因为它的奖励机制被设计为速度递减模式,类似于贵重金属的挖矿过程。比特币的货币是通过挖矿发行的,类似于中央银行 通过印刷银行纸币来发行货币。
矿工通过创造一个新区块得到的比特币数量大约每四年(或准确说是每隔210,000个块)减少一半。开始时为2009年1月 每个区块奖励50个比特币,然后到2012年11月减半为每个区块奖励25个比特币。之后将在2016年的某个时刻再次减半为每个新区块奖励12.5个比 特币。基于这个公式,比特币挖矿奖励以指数方式递减,直到2140年。届时所有的比特币(20,999,999,980)全部发行完毕。
换句话说在 2140年之后,不会再有新的比特币产生。(通货紧缩货币)
挖矿节点
在比特币网络中,一些节点被称为专业节点矿工。
与其他任一完整节点相同,这些节点在比特币网络中进行接收和传播未确认交易记录。然而,这些节点也能够在新区块中整合这些交易记录。
矿工间的竞争以新区块的传播而 结束,如同宣布谁是最后的赢家。对于矿工们来说,获得一个新区块意味着某个参与者赢了,而他们则输了这场竞争。然而,一轮竞争的结束也代表着下一轮竞争的 开始。新区块并不仅仅是象征着竞赛结束的方格旗;它也是下一个区块竞赛的发令枪。
创币交易
区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易。
这个交易是由挖矿节点构造并用来奖励矿工们所做的贡献的。挖矿节点会创建“向XX的地址支付25.09094928个比特币”这样一个交易,把生成交易的奖励发送到自己的钱包。矿工挖出区块获得的奖励金额 是coinbase奖励(25个全新的比特币)和区块中全部交易矿工费的总和。
与常规交易不同,创币交易没有输入,不消耗UTXO。它只包含一个被称作coinbase的输入,仅仅用来创建新的比特币。
创币交易有一个输出,支付到这个矿工的比特币地址。
矿池收入分配
根据矿池的收入分配不同,可以分为两种。
- PPLNS
全称Pay Per Last N Shares,意思是说“根据过去的N个股份来支付收益”,这意味着,所有的矿工一旦发现了一个区块,大家将根据每个人自己贡献的股份数量占比来分配区块中的货币。
- PPS
PPS矿池(类似于打工模式)PPS全称为Pay Per Share。为了解决PPLNS那种有时候收益很高,有时候没有收益的情况,PPS采用了新的算法。PPS根据你的算力在矿池中的占比,并估算了矿池每天可以获得的矿产,给你每天基本固定的收益。
挖矿方向
从2009年开始,原来普通的计算机就可以“挖矿”,但是到了2014年,所有挖矿的计算机也变成由专业设计芯片公司为比特币度身定制的“矿机”。
随着参与挖矿的计算机变得越来越昂贵,比特币生产的成本也水涨船高。截止到2014年10月,每个比特币生产的成本已经达到接近3000元人民币。这个生产包括计算机的生产制造成本,生产过程中产生的电费,以及人员费用和场地费用。也就是说在2016年年底之前,因为每天生产3600个比特币,每天所投入的资金就达到1000万元人民币。并且随着竞争越来越激烈,这个成本还在处于上升阶段。
算力浪费
那么挖矿花了这么多电费到底做了什么事情呢?无他,就是算一个hash值而已。
所以这造成严重的浪费。当然也有人想出了一些解决办法,使用这些算力去做些有用的事情:
- Sunny King的素数币
- 质数币(PrimeCoin代码XPM)寻找质数
- 格雷德币(GridCoin代码GRC)分布式科学计算
算力调整
注意比特币的挖矿难点并不是一定增加的。它是动态调整的。
如果在上个周期(2016个区块)中平均区块产生时间大于10分钟,也就是全网算力下降的情况下,则在当前周期的难度就会下降,使得区块产生时间加快。不过目前为止好像还没有出现过全网算力下降的情况,难度是一直增加。
由于是基于事后统计,所以难度的变化会滞后于全网算力的变化1~2个周期。如果全网算力增加,则在这1~2个周期中挖矿速度加快,则挖矿收益增多;反之,收益减少。但是从长期来看还是保持平衡。
总结
本文介绍了比特币网络中挖矿相关的内容,希望大家能够喜欢。
本文作者:flydean程序那些事
本文链接:www.flydean.com
本文来源:flydean的博客
欢迎关注我的公众号:程序那些事,更多精彩等着您!
点我查看更多精彩内容:www.flydean.com