比特币的测试网络
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比特币的测试网络相关的知识,希望对你有一定的参考价值。
参考技术A Satoshi Nakamoto创建了主要的比特币区块链,创世区块所在的主链网络,被称为主网。还有其他测试目的的比特币链:现存的有testnet,segnet和regtest。
testnet是一个功能齐全的在线P2P网络,包括钱包,测试比特币(testnet币),挖矿以及类似主网的所有其他功能。
实际上和主网只有两个区别:testnet币是没人认可其价值的,挖矿难度比较低,这样可以欢快的使用testnet币。
那些想跟比特币主网进行交互的开发软件,都可以现在testnet上进行测试,这样好处实在太明显了。
testnet3是目前的测试网络版本,因为从创世区块重新开始跑已经出现了三次,这个网络也比较庞大,也有几十个G。
进行testnet全节点挖矿需要准备好硬盘。如果是启动testnet,而不是主网启动,可以使用如下命令:
然后可以使用bitcoin-cli命令行工具,但是要切换到testnet模式:
testnet3支持主网的所有功能,包括在主网络上尚未激活的Segregated Witness,因此testnet3也可以用于测试隔离见证功能。
这样一个隔离测试网络,用来帮助开发和测试隔离见证(segwit)。该测试区块链称为segnet,可以通过运行Bitcoin Core的特殊版本来连接。
由于将segwit添加到testnet3中,因此后面不再使用segnet来测试segwit功能。
Regtest代表回归测试,是一种比特币核心功能,允许用户创建本地区块链以进行测试。
与testnet3不同,regtest区块链旨在作为本地测试的封闭系统运行。所以可以从创世区块开始,启动regtest链,创建一个本地的创世区块。
可以将其他节点添加到网络中,或者使用单个节点运行来测试Bitcoin Core软件。
要在regtest模式下启动Bitcoin Core,可以使用regtest标志:
可以在开发比特币核心,全节点共识客户端,钱包,交易所等,甚至是智能合约和复杂的脚本等,都可以用测试网络进行开发。
比特币的产生----挖矿原理
比特币的产生----挖矿原理
2008年,由美国次贷危机引发的金融危机开始席卷全球,世界经济开始全面衰退。
2008年11月1日,这个历史性的时刻,一位自称中本聪的人在网络上发表了《比特币:一种点对点的电子现金系统》的白皮书,文中描述了一个全新的数字货币系统:比特币。
Satoshi Nakamoto发布了《Bitcoin: A Peer-to-Peer Electronic Cash System》
白皮书如下:
比特币产生方式
我们约定如此:每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者拥有的新的电子货币。
价值背书
这种将一定数量新货币持续增添到货币系统中的方法,非常类似于耗费资源去挖掘金矿并将黄金注入到流通领域。此时,CPU的时间和电力消耗就是消耗的资源。
挖矿原理
工作量证明(Proof-of-Work,PoW)
我们在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0。
比特币网络中任何一个节点,如果想生成一个新的区块并写入区块链,必须解出比特币网络出的工作量证明的迷题,俗称比特币挖矿。这道题关键的三个要素是工作量证明函数、区块及难度值。
工作量证明函数(sha256())
哈希函数(Hash Function),也称为散列函数,给定一个输入x,它会算出相应的输出H(x)。
比特币系统中使用的工作量证明函正是SHA256。是由美国国家安全局设计,到目前为止,还没有出现对SHA256算法的有效攻击。
难度值(difficulty)
比特币的区块大约每10分钟生成一个,每2016个块调整一次难度,调整公式:
新难度值 = 旧难度值 * ( 过去2016个区块花费时长 / 20160 分钟 )
目标值(Target)
最大目标值:
0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
比特币工作量证明的目标值的计算公式如下:
目标值 = 最大目标值 / 难度值
Coinbase交易
每个区块的第一笔交易叫做Coinbase交易。Coinbase交易是一笔特殊交易,因为它包含了挖矿奖励。和普通交易不同,coinbase交易的输入不包含UTXO,而是输入一个coinbase值,用于凭空创造比特币。Coinbase交易有一个输出,向矿工的比特币地址支付比特币。
工作量证明的过程
可以把比特币矿工解这道工作量证明迷题的步骤大致归纳如下:
1.生成Coinbase交易,并与其他所有准备打包进区块的交易组成交易列表,通过Merkle Tree算法生成Merkle Root Hash
2.把Merkle Root Hash及其他相关字段组装成区块头,将区块头的80字节数据(Block Header)作为工作量证明的输入
3.不停的变更区块头中的随机数即nonce的数值,并对每次变更后的的区块头做双重SHA256运算(即SHA256(SHA256(Block_Header))),将结果值与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成。
Pow计算公式如下:
注:
挖矿的本质
工作量证明方案解了一个比拜占庭将军问题更难更挑战的问题,就是在参与者集合未知的情况下,实现共识的一致性,支撑比特币安全的去中心化的自发共识机制。比特币只是对完成工作量证明节点的一种奖励形式。
中本聪的主要发明就是这种去中心化的自发共识机制。
注:本文虽然在别的论坛发表过,但属于原创,皆为作者喜欢数学的女孩同一人。
以上是关于比特币的测试网络的主要内容,如果未能解决你的问题,请参考以下文章