Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
1比特币的测试区块链
( c& q2 P! t% Y! K4 e0 F; O8 l' n# v7 a* E- s3 G7 O+ K% a% o
    你可能会惊讶地发现,有多个比特币区块链。2009年1月3日由SatoshiNakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于测试的比特币区块链:现存的有testnet,segnet和regtest。我们依次看看每一个。% O% N2 g2 o4 m

7 L# I" ]& H+ M8 K+ ^    2Testnet——比特币的试验场- `% A8 i) D  x! K8 y0 X

5 Z; h- _' w) D& B( C. H# v- W    Testnet是用于测试的区块链,网络和货币的总称。testnet是一个功能齐全的在线P2P网络,包括钱包,测试比特币(testnet币),挖矿以及类似主干网的所有其他功能。实际上它和主网只有两个区别:testnet币是毫无价值的,挖掘难度足够低,任何人都可以相对容易地使用testnet币)。$ |/ w+ [* \4 \$ @, b) k. U
' u* c% U9 q6 B6 ]% P+ |
    任何打算在比特币主干网上用于生产的软件开发都应该首先在testnet上用测试币进行测试。这样可以保护开发人员免受由于软件错误而导致的金钱损失,也可以保护网络免受由于软件错误导致的意外攻击。. ?! G( |. f& P9 V$ C: H! b/ E; S/ V
7 J6 L$ E4 J( e$ w6 t; K" H
    然而,保持测试币的无价值和易挖掘并不容易。尽管有来自开发商的呼吁,但还是有人使用先进的设备(GPU和ASIC)在testnet上挖矿。这就增加了难度,使用CPU挖矿不可能,导致获取测试币非常困难,以致于人们开始赋予其一定价值,所以测试币并不是毫无价值。结果,时不时地testnet必须被报废并重新从创始区块启动,重新进行难度设置。
# p2 C/ S5 l5 ^' G2 j8 q; m. q5 r7 {/ {. z) c  K6 V1 w  V
    目前的testnet被称为testnet3,是testnet的第三次迭代,于2011年2月重启,重置了之前的testnet网络的难度。
$ @5 B6 D; g9 h5 O" @6 ^2 y  x# X3 k. M3 K3 s
    请记住,testnet3是一个大区块链,在2017年初超过20GB。完全同步需要一天左右的时间,并占用您的计算机资源。它不像主干网,也不是“轻量级”。运行testnet节点的一个好方法就是将其运行为一个专用的虚拟机镜像(例如,VirtualBox,Docker,CloudServer等)。
3 s" s# O( H9 _7 `4 B( l2 n2 e
; g9 X, _+ G2 v: f) o    9.9.1.1使用testnet3 F+ G1 T5 K  w. t& i. P
) j% }* _% D1 w' m
    像几乎所有其他比特币软件一样,BitcoinCore完全支持在testnet网络运行而不是只能在主干网上运行,还允许您进行测试币挖矿并运行一个testnet全节点。
+ H& }5 H" [5 |: @! q4 z) j3 m" B$ [4 F% d, K
    如果要在testnet上启动BitcoinCore,而不是在主干网启动,您可以使用testnet开关:( j/ v% ^% R) S

& S& w8 z: `9 ]/ @2 U% [    $bitcoind-testnet
( a. O- |: k: a( H8 S. y7 i3 B# q' q. H& `  B
    在日志中,您应该会看到,bitcoind正在默认bitcoind目录的testnet3子目录中构建一个新的区块链:+ N: n# a/ r% D+ F* Q5 X4 S! M
- g' R9 D) _$ f0 y1 P2 |
    bitcoind:Usingdatadirectory/home/username/.bitcoin/testnet39 @1 S2 q$ f! m; P. {

( F4 w$ v$ E2 B  w5 \    要连接bitcoind,可以使用bitcoin-cli命令行工具,但是要记得切换到testnet模式:' _6 c: ?3 z7 @; G4 a# ]8 W

  1. 8 o1 h4 y9 N+ ?. c0 i- |
  2. $ bitcoin-cli -testnet getinfo
    8 R4 Q3 y7 F" R) X, z! }! i& \
  3. {
    9 U. h& A0 S" U5 i
  4.   "version": 130200,% j$ \0 s3 m. d' V+ ~+ v& `
  5.   "protocolversion": 70015,
    7 H* R% c# D! f; E8 q" @, o
  6.   "walletversion": 130000,
    5 r! L% g. F( d! _
  7.   "balance": 0.00000000,6 Q  C* z/ t) C+ I5 u% S, q! j! _
  8.   "blocks": 416,
    5 y& b# ~  S0 c; [
  9.   "timeoffset": 0,
    3 p* Z2 U7 _( i$ |
  10.   "connections": 3,( R; e9 F  f( {" b# J, C( i
  11.   "proxy": "",
    . ]! d% b! ?; _5 E4 h
  12.   "difficulty": 1,& O* `! B( J! c6 j4 H% D0 p: K  p1 K
  13.   "testnet": true," A  p. Z& O7 \
  14.   "keypoololdest": 1484801486,! z# i3 `$ Z4 u0 [  D
  15.   "keypoolsize": 100,
    ! X2 x: k4 R$ `4 N
  16.   "paytxfee": 0.00000000,
    7 k! o: Z7 c1 k& E. t2 S1 ]
  17.   "relayfee": 0.00001000,
    2 L) S  M3 T; O& |7 Q5 F8 Z3 Q
  18.   "errors": "". q6 [5 ^8 J: b. B! x" ~4 q
  19. }
复制代码

2 V' v! @! c' k9 s. ^$ c您还可以使用getblockchaininfo命令确认testnet3区块链的详细信息和同步进度:! F9 _9 f& u7 A" a+ B
  1. $ bitcoin-cli -testnet getblockchaininfo
    ' ?' Z! ~8 G6 K( {3 A

  2. 4 g" O  e5 G& l
  3. {. \2 K5 J& {& E) ?
  4.   "chain": "test",
      J3 W6 i7 B/ M% N2 B
  5.   "blocks": 1088,3 @, E) C9 Y) v1 K7 y0 t. O
  6.   "headers": 139999,* S2 y9 V9 p' [/ W  s
  7.   "bestblockhash": "0000000063d29909d475a1c4ba26da64b368e56cce5d925097bf3a2084370128",
    3 K6 D0 n+ p4 S& R6 Q- l( E1 \
  8.   "difficulty": 1,
    % W+ S3 Q- S4 F' C( N: l
  9.   "mediantime": 1337966158,* w8 D+ C! N0 g) p( W; R
  10.   "verificationprogress": 0.001644065914099759,
    % x7 s1 w! p" E2 a# G+ D1 z+ q
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000044104410441",
    + |( a% x0 Q6 [% I& y
  12.   "pruned": false,& o7 B6 p! {; C& Z$ B% E4 O
  13.   "softforks": [/ U, k1 q3 m, m: E. R: Q
  14. ' ^+ r; D: F6 U
  15.   [...]
复制代码
  1. $ bitcoin-cli -regtest getblockchaininfo
    6 U- e# P: @+ `' R# V% Z% q1 t- W
  2. ; r/ q! y3 H4 |5 j1 D
  3. {
    % l! {# O+ m% j& ]
  4.   "chain": "regtest",+ a/ |- K& k- Y; I; m
  5.   "blocks": 0,; @  y; o; x0 V
  6.   "headers": 0,
    * G# K: F  z) y3 q
  7.   "bestblockhash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",
    5 `) s* l# O: C9 N& N; O7 a$ b
  8.   "difficulty": 4.656542373906925e-10,4 w5 r+ Z) r, n
  9.   "mediantime": 1296688602,) y% F+ B9 X: a3 V1 n: v/ c
  10.   "verificationprogress": 1,8 q0 ~, {) b, m
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",
    2 e" M" E1 W$ V/ F1 P0 w: Q
  12.   "pruned": false,
复制代码
! k  d2 J$ Z. x1 N6 K+ z8 g% u
你可以看到,还没有任何区块。 让我们开始挖一些(500块),赚取奖励:
4 N( U, n, @& e4 e
  1. $ bitcoin-cli -regtest generate 500$ k' n3 {$ W/ h) I+ [% c, v) o  M
  2. 3 U+ J7 j& M) c
  3. [: ?- ?! p& p' J$ w+ H5 q: g7 f* x
  4.   "7afed70259f22c2bf11e406cb12ed5c0657b6e16a6477a9f8b28e2046b5ba1ca",+ v0 S; S6 y% J3 G
  5.   "1aca2f154a80a9863a9aac4c72047a6d3f385c4eec5441a4aafa6acaa1dada14",
    4 [9 r7 o, s- X) ~- D- z+ k% Y
  6.   "4334ecf6fb022f30fbd764c3ee778fabbd53b4a4d1950eae8a91f1f5158ed2d1",8 N+ ^4 O2 I" C8 j* t! M- i
  7.   "5f951d34065efeaf64e54e91d00b260294fcdfc7f05dbb5599aec84b957a7766",* J) N* q$ h/ e% ~6 N6 D
  8.   "43744b5e77c1dfece9d05ab5f0e6796ebe627303163547e69e27f55d0f2b9353",& f, \7 V7 l  |0 y. Q" n2 d& |
  9.    [...]
    * ]6 v$ z( n; N! a8 @
  10.   "6c31585a48d4fc2b3fd25521f4515b18aefb59d0def82bd9c2185c4ecb754327"
复制代码
5 @2 D  B8 p! r9 V$ l% y/ t
$ n/ H( |. h/ A( @8 G

' ^: I  ^) @3 P, ?7 o    挖掘所有这些块只需要几秒钟,这样就可以很容易地进行测试。如果您检查您的钱包余额,您将看到您获得了前400个区块的奖励(Coinbase的奖励必须挖满100块之后才能花费):$ |# _% ~' x4 O

3 t( T; m  A/ x0 \- u* L    $bitcoin-cli-regtestgetbalance
/ d2 K+ v6 D5 i! F* w# j0 s( g/ J3 J' v1 X+ g4 [
    12462.500000000 f5 F, {  H1 E/ B
: R- ]5 k+ u1 {: A1 ]( ]+ m+ w
    5使用测试块链进行开发+ D' U! Q  d) v1 j8 }) z# k
* V- k% I# H. y5 S/ x. n
    Bitcoin的各种区块链(regtest,segnet,testnet3,以及主干网)为比特币开发提供了一系列测试环境。无论您是开发比特币核心还是另一个全节点共识客户端,诸如钱包,交易所,电子商务网站等应用程序,甚至开发新颖的智能合同和复杂的脚本等等,请使用测试区块链网进行开发。. ]/ i( g$ Q" g4 f1 E- |9 O2 Q& e

9 }3 c- ?+ T0 W    您可以使用测试区块链来建立开发管道。在开发它时,建议在本地测试代码。
0 q# l# U: @: C$ d) v1 x4 B  D& Y9 w7 {8 P  {6 O, o4 Q5 a
    一旦您准备好在公共网络上尝试,请切换到testnet,将您的代码暴露在更加动态的环境中,并提供更多样化的代码和应用程序。8 g  M1 G2 }. [7 ?9 K% R' F. z
. D  f8 U6 G) S5 A9 F
    最后,一旦您确信您的代码正常工作,请切换到主网以实现生产部署。
# `3 Y, \2 o, h. i& Q# l! g- y# O
* X8 Z1 p( K( k% V/ h- |    当您进行变更,改进,错误修复等操作时,再次启动这个开发管道,首先在regtest上部署每个变更,然后在testnet上进行测试,最后实现生产。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

青丝暮雪780 初中生
  • 粉丝

    0

  • 关注

    2

  • 主题

    11