Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
1比特币的测试区块链/ ~  Q( G9 U  v; p7 j
: c! f* ?3 k) h; _
    你可能会惊讶地发现,有多个比特币区块链。2009年1月3日由SatoshiNakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于测试的比特币区块链:现存的有testnet,segnet和regtest。我们依次看看每一个。
( @, G2 f7 B' Y1 I* R& C4 A1 \# _) K* ^5 m! n' G: ]1 d
    2Testnet——比特币的试验场+ l6 v! E, {2 T: M* Y+ T0 n
% \9 c- l& m1 T
    Testnet是用于测试的区块链,网络和货币的总称。testnet是一个功能齐全的在线P2P网络,包括钱包,测试比特币(testnet币),挖矿以及类似主干网的所有其他功能。实际上它和主网只有两个区别:testnet币是毫无价值的,挖掘难度足够低,任何人都可以相对容易地使用testnet币)。. z, K4 J7 [) @7 L' I

, ~2 c+ g2 U5 i+ i5 m/ z4 @8 ~9 q    任何打算在比特币主干网上用于生产的软件开发都应该首先在testnet上用测试币进行测试。这样可以保护开发人员免受由于软件错误而导致的金钱损失,也可以保护网络免受由于软件错误导致的意外攻击。4 P; X$ M% b  E# s1 E1 m

( U3 d! [' R2 s  {$ }1 t4 Y    然而,保持测试币的无价值和易挖掘并不容易。尽管有来自开发商的呼吁,但还是有人使用先进的设备(GPU和ASIC)在testnet上挖矿。这就增加了难度,使用CPU挖矿不可能,导致获取测试币非常困难,以致于人们开始赋予其一定价值,所以测试币并不是毫无价值。结果,时不时地testnet必须被报废并重新从创始区块启动,重新进行难度设置。' B7 b! y% O7 b* L* N( B" U
% t* t! N4 q* X. V
    目前的testnet被称为testnet3,是testnet的第三次迭代,于2011年2月重启,重置了之前的testnet网络的难度。+ g2 [4 E" m4 Z
9 v" x$ [" ?7 b+ z; v( L% ~
    请记住,testnet3是一个大区块链,在2017年初超过20GB。完全同步需要一天左右的时间,并占用您的计算机资源。它不像主干网,也不是“轻量级”。运行testnet节点的一个好方法就是将其运行为一个专用的虚拟机镜像(例如,VirtualBox,Docker,CloudServer等)。
# q! g+ ]0 W+ }2 h
0 O! ]. j3 ^& B. S* L5 f    9.9.1.1使用testnet
, q. Y: t, Q$ g  T" ]/ W2 d+ Q) }- v0 Y1 ]4 Y* u/ U
    像几乎所有其他比特币软件一样,BitcoinCore完全支持在testnet网络运行而不是只能在主干网上运行,还允许您进行测试币挖矿并运行一个testnet全节点。
8 Z8 C) B4 p, a9 k" T
* y; ?& ]  y: X3 i3 t6 n    如果要在testnet上启动BitcoinCore,而不是在主干网启动,您可以使用testnet开关:! F" _0 J& {" T7 Q7 b) k( ^. I
* T2 E, s! [, X& f
    $bitcoind-testnet
0 \- ^* f* H4 V3 F+ K+ C! j" Q/ [$ r7 Z/ U$ N9 }. N1 M
    在日志中,您应该会看到,bitcoind正在默认bitcoind目录的testnet3子目录中构建一个新的区块链:
7 q0 i9 Z6 T2 z2 A  B+ e7 ?5 I8 Z, M! @, F" o; Q
    bitcoind:Usingdatadirectory/home/username/.bitcoin/testnet3
# s! I4 q6 Z4 U& y5 |) ~" l( l: B, Q6 [' v. k
    要连接bitcoind,可以使用bitcoin-cli命令行工具,但是要记得切换到testnet模式:
" s8 k. |; B# W" D) Y5 m5 j5 M

  1. 8 i( g- o  r" b5 D6 b
  2. $ bitcoin-cli -testnet getinfo
    ' o& t( U% g$ D* W/ ]# o+ `, Q2 F
  3. {+ i, _  r  B1 B
  4.   "version": 130200,
    : Z# J1 x& N" e! `
  5.   "protocolversion": 70015,
    " z3 m- L$ _2 `0 ^2 R; W7 T
  6.   "walletversion": 130000,: f, e8 ?0 ]2 z5 Z
  7.   "balance": 0.00000000,
    ; _8 H% ~1 |# }9 K) t. `" W* O
  8.   "blocks": 416,
    5 l7 F/ P* t  Z" L5 T- r0 g
  9.   "timeoffset": 0,
    + T* [" |$ u+ W* l
  10.   "connections": 3,! o$ Y) y* b" V3 l$ M
  11.   "proxy": "",
    8 ]* F/ C3 U0 p8 ~: n
  12.   "difficulty": 1,
    * e' h" @' q9 d  B" ^4 Y7 k3 f
  13.   "testnet": true,
    + h& y  Z+ B( V  W) u
  14.   "keypoololdest": 1484801486,9 x1 g! V! {% T) L
  15.   "keypoolsize": 100,) V" P( T, [$ U
  16.   "paytxfee": 0.00000000,
    ( B% q& R& a' u# n
  17.   "relayfee": 0.00001000,
    . L* A" J' Y/ G2 g) ]
  18.   "errors": ""
    5 U0 k6 I* M4 R1 H2 M$ g
  19. }
复制代码
; A- \  V5 P+ }, p
您还可以使用getblockchaininfo命令确认testnet3区块链的详细信息和同步进度:' }  J1 j: @2 ~5 h7 o! k( g
  1. $ bitcoin-cli -testnet getblockchaininfo: @* Y1 Q# x: Z+ m; s, u; q& l
  2. % W. p! K- c! @# f8 F; e4 L' J
  3. {& E9 w' @+ A$ P: G
  4.   "chain": "test",3 f9 _6 k5 U3 }, E  O
  5.   "blocks": 1088,
    9 _/ V2 B8 W) O0 a' q" A# ?" s' e( v
  6.   "headers": 139999,
    . Q/ f) b9 Q8 x3 S% V' ~
  7.   "bestblockhash": "0000000063d29909d475a1c4ba26da64b368e56cce5d925097bf3a2084370128",
    # }& ]2 y& K, J0 V( _0 j% I1 n% m* v
  8.   "difficulty": 1,$ R. C! y* S  n( j$ e; _1 e& e
  9.   "mediantime": 1337966158,
    # L7 O  G; R4 u5 z
  10.   "verificationprogress": 0.001644065914099759,
    . r& J* J' x4 D# a
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000044104410441",
    0 A" l, O1 Z' ^
  12.   "pruned": false,
    7 K+ `# g' |" T7 f: c: n
  13.   "softforks": [- r  }8 c8 [( \; `" ?2 |+ |7 q

  14. & y! _& ^4 y0 S1 j- C. A8 r) a
  15.   [...]
复制代码
  1. $ bitcoin-cli -regtest getblockchaininfo
    6 ~  S5 l* [, n' ?& C" n# D% n; D

  2. % E- x: ^7 E' D0 R. ?: s$ r6 f( T
  3. {; `/ d7 _2 D8 U  V
  4.   "chain": "regtest",
    7 }9 \( s1 W7 G1 d  B7 t9 A' D0 j: G
  5.   "blocks": 0,
    ' D! n* d0 H+ _* \$ ~. g
  6.   "headers": 0,9 ~+ U$ w' d  l- Q3 ], k9 E
  7.   "bestblockhash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",* w: R, {# P$ \
  8.   "difficulty": 4.656542373906925e-10,
    2 i4 [5 K  c3 z4 u/ r% G
  9.   "mediantime": 1296688602,- [- |3 K' v( v5 _% u# F5 |9 O* }
  10.   "verificationprogress": 1,9 t( K% ?# K. ^
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",1 q( S+ v  X3 p. g  d4 [
  12.   "pruned": false,
复制代码

# N: _& M$ @2 N0 _! S7 p你可以看到,还没有任何区块。 让我们开始挖一些(500块),赚取奖励:$ A: V, n! G8 J$ Z& s
  1. $ bitcoin-cli -regtest generate 500; `% F, n  y- n. e# M! R
  2. - v: D* T3 t: X) u
  3. [3 M; H, {6 `; m& {$ K
  4.   "7afed70259f22c2bf11e406cb12ed5c0657b6e16a6477a9f8b28e2046b5ba1ca",
    & R! Q9 `. B3 g5 X# z3 q* b9 C$ \
  5.   "1aca2f154a80a9863a9aac4c72047a6d3f385c4eec5441a4aafa6acaa1dada14",4 [; c$ Z! L) p+ A% M" X
  6.   "4334ecf6fb022f30fbd764c3ee778fabbd53b4a4d1950eae8a91f1f5158ed2d1",
    4 k7 z0 u: D2 X7 S
  7.   "5f951d34065efeaf64e54e91d00b260294fcdfc7f05dbb5599aec84b957a7766",# n, M& R  i% z' O
  8.   "43744b5e77c1dfece9d05ab5f0e6796ebe627303163547e69e27f55d0f2b9353",
    4 f, O- l; u; t) y% N; A
  9.    [...]
    : y  e& c% y, ]8 m5 b
  10.   "6c31585a48d4fc2b3fd25521f4515b18aefb59d0def82bd9c2185c4ecb754327"
复制代码

! o: x; t6 P# o9 E
6 [; l0 G; s( F; L8 R$ }( _
/ f  r  U& Z' s4 f    挖掘所有这些块只需要几秒钟,这样就可以很容易地进行测试。如果您检查您的钱包余额,您将看到您获得了前400个区块的奖励(Coinbase的奖励必须挖满100块之后才能花费):0 a0 M! v( `6 X  L! r9 i

; ^' ^) p! j. B  g    $bitcoin-cli-regtestgetbalance6 O& Z) D$ w( E. E$ f1 M6 k
* w: o/ l: ~2 e2 D3 |
    12462.50000000. z$ d+ O5 P% }
+ \6 F* [' K; k2 p: A( n
    5使用测试块链进行开发
# @6 p( ~' I0 [" w( S; i/ ^* X- Z
0 p' `* M8 a0 @# C% M    Bitcoin的各种区块链(regtest,segnet,testnet3,以及主干网)为比特币开发提供了一系列测试环境。无论您是开发比特币核心还是另一个全节点共识客户端,诸如钱包,交易所,电子商务网站等应用程序,甚至开发新颖的智能合同和复杂的脚本等等,请使用测试区块链网进行开发。2 h/ P0 {) x4 r, n5 h: k5 {' J  u
7 Q9 l; D# E0 ~# M8 w% ]
    您可以使用测试区块链来建立开发管道。在开发它时,建议在本地测试代码。
. N# m8 \  A  m/ I2 O! Y! W; ]6 n
    一旦您准备好在公共网络上尝试,请切换到testnet,将您的代码暴露在更加动态的环境中,并提供更多样化的代码和应用程序。
! [/ q7 M* i2 j- ^3 K+ m9 I. C7 K1 q2 |& J5 P
    最后,一旦您确信您的代码正常工作,请切换到主网以实现生产部署。
  l) C4 j  @: `3 B6 z% D- d* s. u) k4 C( i2 ]" W4 E- D7 R- C
    当您进行变更,改进,错误修复等操作时,再次启动这个开发管道,首先在regtest上部署每个变更,然后在testnet上进行测试,最后实现生产。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

青丝暮雪780 初中生
  • 粉丝

    0

  • 关注

    2

  • 主题

    11