挖矿与共识
Posted tekkaman
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了挖矿与共识相关的知识,希望对你有一定的参考价值。
【挖矿与共识】
每10分钟就会有?个新的区块被“挖掘”出来,每个区块?包含着从上?个区块产?到?前这段时间内发?的所有交易,这些交易被依次添加到区块链中。我们把包含在区块内且被添加到区块链上的交易称为“确认”交易,交易经过“确认”之后,新的拥有者才能够花费他在交易中得到的?特币。
矿?们在挖矿过程中会得到两种类型的奖励:创建新区块的新币奖励,以及区块中所含交易的交易费。
换句话说在2140年之后,不会再有新的?特币产?。
?约每?分钟产??个新区块,每开采 210,000(21W) 个块(1年5.25W个区块),?约耗时4年,货币发?速率降低50%。在?特币运?的第?个四年中,每个区块创造出50个新?特币。
到2140年左右,会存在接近2,100万?特币。
比特币发行量脚本:
# 初始的块奖励为50BTC start_block_reward = 50 # 以10分钟为?个区块的间隔,210000个块共约4年时间 reward_interval = 210000 def max_money(): # 50 BTC = 50 0000 0000 Satoshis current_reward = 50 * 10**8 total = 0 while current_reward > 0: total += reward_interval * current_reward current_reward /= 2 return total print "Total BTC to ever be created:", max_money(), "Satoshis"
总量有限并且发?速度递减创造了?种抗通胀的货币供应模式。法币可被中央银??限制地印刷出来,??特币永远不会因超额印发?出现通胀。
许多经济学家提出通缩经济是?种?论如何都要避免的灾难型经济。因为在快速通缩时期,?们预期着商品价格会下通货紧缩货币跌,?们将会储存货币,避免花掉它。这种现象充斥了?本经济“失去的?年”,就是因为在需求坍塌之后导致了滞涨状态。
【去中心化共识】
1、交易的独立校验。
每?个节点在校验每?笔交易时,都需要对照?个??的标准列表:
1)交易的语法和数据结构必须正确。
2)输?与输出列表都不能为空。
3)交易的字节??是?于 MAX_BLOCK_SIZE 的。
4)解锁脚本( scriptSig )只能够将数字压?栈中,并且锁定脚本( scriptPubkey )必须要符合 isStandard 的格式 (该格式将会拒绝?标准交易)。
5)对于每?个输?,如果引?的输出存在于池中任何的交易,该交易将被拒绝。
2、整合交易至区块。
交易的优先级是由交易输?所花费的UTXO的“块龄”决定,交易输?值?、“块龄”?的交易?那些新的、输?值?的交易拥有更?的优先级。
交易的优先级是通过输?值和输?的“块龄”乘积之和除以交易的总?度得到的。交易输?的值是由?特币单位“聪”(1亿分之1个?特币)来表?的。
UTXO的“块龄”是?该UTXO被记录到区块链为?所经历过的区块数,即这个UTXO在区块链中的深度。交易记录的??由字节来表?。
?个交易想要成为“较?优先级”,需满?的条件:优先值?于57,600,000,相当于?个?特币(即1亿聪),年龄为?天(144个区块),交易的??为250个字节:
1)区块中?来存储交易的前50K字节是保留给较?优先级交易的。Jing的节点在填充这50K字节的时候,会优先考虑这些最?优先级的交易,不管它们是否包含了矿?费。这种机制使得?优先级交易即便是零矿?费,也可以优先被处理。
2)然后,Jing的挖矿节点会选出那些包含最?矿?费的交易,并按照“每千字节矿?费”进?排序,优先选择矿?费?的交易来填充剩下的区块,区块??上限为 MAX_BLOCK_SIZE 。
3)如区块中仍有剩余空间,Jing的挖矿节点可以选择那些不含矿?费的交易。有些矿?会竭尽全?将那些不含矿?费的交易整合到区块中,?其他矿?也许会选择忽略这些交易。
4)在区块被填满后,内存池中的剩余交易会成为下?个区块的候选交易。因为这些交易还留在内存池中,所以随着新的区块被加到链上,这些交易输?时所引?UTXO的深度(即交易“块龄”)也会随着变?。
以上是关于挖矿与共识的主要内容,如果未能解决你的问题,请参考以下文章