Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
1比特币的测试区块链& _  e% U' [" D
/ ]) p1 ~; g" p2 y1 A7 j' X2 H& r
    你可能会惊讶地发现,有多个比特币区块链。2009年1月3日由SatoshiNakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于测试的比特币区块链:现存的有testnet,segnet和regtest。我们依次看看每一个。! M0 C6 b9 x/ ^, B# m

2 d$ z2 x9 J  k8 U# U    2Testnet——比特币的试验场' t* r- ^5 h( M% P6 n
8 N6 v) G1 H: l2 I$ U! S* X' f- h
    Testnet是用于测试的区块链,网络和货币的总称。testnet是一个功能齐全的在线P2P网络,包括钱包,测试比特币(testnet币),挖矿以及类似主干网的所有其他功能。实际上它和主网只有两个区别:testnet币是毫无价值的,挖掘难度足够低,任何人都可以相对容易地使用testnet币)。$ ^; f3 L2 I* ]  O6 Q0 l
5 u- q" F, e% \4 d: N
    任何打算在比特币主干网上用于生产的软件开发都应该首先在testnet上用测试币进行测试。这样可以保护开发人员免受由于软件错误而导致的金钱损失,也可以保护网络免受由于软件错误导致的意外攻击。
  u. l7 D2 r# ~% n6 f  J
2 H* D( V4 i: |0 ~) W( P/ }1 i8 J( O    然而,保持测试币的无价值和易挖掘并不容易。尽管有来自开发商的呼吁,但还是有人使用先进的设备(GPU和ASIC)在testnet上挖矿。这就增加了难度,使用CPU挖矿不可能,导致获取测试币非常困难,以致于人们开始赋予其一定价值,所以测试币并不是毫无价值。结果,时不时地testnet必须被报废并重新从创始区块启动,重新进行难度设置。
' l# Z, h- R' f! `/ c  h& X+ ^3 ^1 D3 v
    目前的testnet被称为testnet3,是testnet的第三次迭代,于2011年2月重启,重置了之前的testnet网络的难度。0 Q. b; ?9 ^% \% O. x7 n0 b

0 j$ V+ F3 w3 e* p' n7 G    请记住,testnet3是一个大区块链,在2017年初超过20GB。完全同步需要一天左右的时间,并占用您的计算机资源。它不像主干网,也不是“轻量级”。运行testnet节点的一个好方法就是将其运行为一个专用的虚拟机镜像(例如,VirtualBox,Docker,CloudServer等)。
3 W& l- b7 J; s/ ^. l
" e, j# V3 q& q/ j) G) m) `    9.9.1.1使用testnet0 o- u9 j+ V( m
+ U* Y% i4 J* ^& w4 k' ~* F) N8 k
    像几乎所有其他比特币软件一样,BitcoinCore完全支持在testnet网络运行而不是只能在主干网上运行,还允许您进行测试币挖矿并运行一个testnet全节点。
3 q9 f) @0 Y" e
8 X% \* c) V8 ?5 v    如果要在testnet上启动BitcoinCore,而不是在主干网启动,您可以使用testnet开关:% D; S$ k3 ~* @4 y  |$ i5 V

$ K, \" @& B( f5 {0 }5 g    $bitcoind-testnet/ Y  H# f9 ?% Z

; J- _( J% J6 ?& z& {    在日志中,您应该会看到,bitcoind正在默认bitcoind目录的testnet3子目录中构建一个新的区块链:) e0 q) T) z" o; d: ?- C6 H

( G& \4 }4 A( \3 J9 U    bitcoind:Usingdatadirectory/home/username/.bitcoin/testnet3
' s3 ]! Y8 Y; ^# ^3 D! Z" {$ g1 ^) Q: F% f& `
    要连接bitcoind,可以使用bitcoin-cli命令行工具,但是要记得切换到testnet模式:
% h6 u- E- C1 D
  1. 3 T& F9 G2 y" O/ Y
  2. $ bitcoin-cli -testnet getinfo
    ' F3 y8 J( k+ j+ o& k0 K% u
  3. {
    4 r& J) }' ]% _+ {8 j
  4.   "version": 130200," Y( ]1 M' M9 K: S- `
  5.   "protocolversion": 70015,
    ( _5 J1 Q! y* a4 K9 w$ u$ W  I
  6.   "walletversion": 130000,
    * Z+ u+ X  R- g9 z, n# o8 k; Z& C- v
  7.   "balance": 0.00000000,
    8 a7 s7 |6 P9 a
  8.   "blocks": 416,9 @# ?0 W! }/ O2 @5 P
  9.   "timeoffset": 0,4 R' ~& l3 P$ c& {% m
  10.   "connections": 3,+ _$ E9 j: s& P* Q
  11.   "proxy": "",8 O3 N2 \+ S5 J. D
  12.   "difficulty": 1,( b9 W8 i8 G) z
  13.   "testnet": true,2 F) f+ `' ?- Z" I; t
  14.   "keypoololdest": 1484801486,9 K+ }7 A- o1 S$ p% H4 |/ p
  15.   "keypoolsize": 100,
    ' X# N8 T0 F" O
  16.   "paytxfee": 0.00000000,
    4 V, m2 D; k" H# j0 k, N9 b/ S) e7 L
  17.   "relayfee": 0.00001000,* P, N) \) `7 R: F" X$ l
  18.   "errors": ""% }! g' W2 ^( ~! h
  19. }
复制代码

, R; `" D8 x: z您还可以使用getblockchaininfo命令确认testnet3区块链的详细信息和同步进度:2 G. ]: Z: ]# s9 d
  1. $ bitcoin-cli -testnet getblockchaininfo
    7 |, ?* J- d* L) q- n

  2. 8 G$ ?) T& }- G& l6 t, \; b' j4 L
  3. {
    7 _* v3 Y: @& b2 j# u0 y' z
  4.   "chain": "test",% p- f. G/ }! A2 k: f
  5.   "blocks": 1088,% r; d. T* ^; g% z* e' |
  6.   "headers": 139999,
      h4 G  t, z( ?6 O3 {
  7.   "bestblockhash": "0000000063d29909d475a1c4ba26da64b368e56cce5d925097bf3a2084370128"," e$ e( p. r% f0 m2 u
  8.   "difficulty": 1,9 k# L& ^8 u( A* G# p- K
  9.   "mediantime": 1337966158,, m8 f3 U/ e0 ^9 B" Y0 b% _
  10.   "verificationprogress": 0.001644065914099759,  z& k4 l4 b: r/ b+ r- Q
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000044104410441",7 O! \- y3 j. _
  12.   "pruned": false,4 w! H- v6 b# l, t
  13.   "softforks": [/ P( m$ |& N- A5 Z0 o' v
  14. ( [5 y1 d! \( O3 c* I
  15.   [...]
复制代码
  1. $ bitcoin-cli -regtest getblockchaininfo
    ! K3 H5 g' d0 Y0 D* V4 p

  2. # t2 q. t0 }* a$ o" F6 n* Z
  3. {
    3 a, M# ?) n2 r' N
  4.   "chain": "regtest",: y+ L8 @1 J9 D' K4 C
  5.   "blocks": 0,
    " U% G5 v6 p1 }; d
  6.   "headers": 0,
    ( U1 K9 b1 r9 k/ G+ P
  7.   "bestblockhash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",
    " i; |0 c- k, n6 N
  8.   "difficulty": 4.656542373906925e-10,7 K8 J+ w7 Y! P( G4 d
  9.   "mediantime": 1296688602,
    % d1 I; s$ |( [
  10.   "verificationprogress": 1,
    & s' n( d; V9 k- O% [
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",4 V' Q7 o( n( u- ]1 w! y  O& g- O
  12.   "pruned": false,
复制代码
( a2 `! Y, V" q  D# h6 Q( \
你可以看到,还没有任何区块。 让我们开始挖一些(500块),赚取奖励:
! q. N( F6 V2 k! P
  1. $ bitcoin-cli -regtest generate 5001 y! t$ w$ T; @/ K
  2. - I7 ?* q& [$ R: A! o# s9 Y
  3. [) k& {( l# \+ \8 S1 L$ E8 I
  4.   "7afed70259f22c2bf11e406cb12ed5c0657b6e16a6477a9f8b28e2046b5ba1ca",$ Y- ?/ ]: F1 X+ f
  5.   "1aca2f154a80a9863a9aac4c72047a6d3f385c4eec5441a4aafa6acaa1dada14",6 j6 R: h7 d8 O, i# h
  6.   "4334ecf6fb022f30fbd764c3ee778fabbd53b4a4d1950eae8a91f1f5158ed2d1",
    0 c+ e: b  a7 z0 n" E+ R4 f
  7.   "5f951d34065efeaf64e54e91d00b260294fcdfc7f05dbb5599aec84b957a7766",5 R. Q6 ?- D' V/ y$ V' I7 g
  8.   "43744b5e77c1dfece9d05ab5f0e6796ebe627303163547e69e27f55d0f2b9353",8 ]7 n. {* i" t+ q# {1 y
  9.    [...]. n0 d* [+ e' B3 }" X2 _7 U
  10.   "6c31585a48d4fc2b3fd25521f4515b18aefb59d0def82bd9c2185c4ecb754327"
复制代码

3 Q+ D; J6 P& s; g4 F% I9 }6 g
% z+ U, w! B2 Q: h
5 x) R1 t0 B0 V& X% x    挖掘所有这些块只需要几秒钟,这样就可以很容易地进行测试。如果您检查您的钱包余额,您将看到您获得了前400个区块的奖励(Coinbase的奖励必须挖满100块之后才能花费):' O6 v- t, g( m* E# I" ^9 s/ c1 v
: S+ k6 P1 F# b  v, i
    $bitcoin-cli-regtestgetbalance- Q/ ^* B# e+ V( G  S

! N' a- c( M  g8 n' k9 R0 E    12462.50000000
$ E9 O. P' v' Z' [* V$ t5 m  v" @2 T2 V3 u
    5使用测试块链进行开发
- N  ^2 E- w# ^5 H0 }) [) k, L+ ~+ B3 A& U3 r) t2 K
    Bitcoin的各种区块链(regtest,segnet,testnet3,以及主干网)为比特币开发提供了一系列测试环境。无论您是开发比特币核心还是另一个全节点共识客户端,诸如钱包,交易所,电子商务网站等应用程序,甚至开发新颖的智能合同和复杂的脚本等等,请使用测试区块链网进行开发。
$ b6 ]0 i$ @6 s
, g: i* U, ?  m1 p4 x    您可以使用测试区块链来建立开发管道。在开发它时,建议在本地测试代码。9 |( S. C% j) b* d* f
* r) ?, s1 v$ S* L4 _7 j
    一旦您准备好在公共网络上尝试,请切换到testnet,将您的代码暴露在更加动态的环境中,并提供更多样化的代码和应用程序。
: P; z; g% d  O* ~- d: N$ r5 C" n; j- `6 D# X
    最后,一旦您确信您的代码正常工作,请切换到主网以实现生产部署。& D& X# ~1 N, b7 E' n; C
  N" u1 T1 E- y  r, Y/ t# j- @
    当您进行变更,改进,错误修复等操作时,再次启动这个开发管道,首先在regtest上部署每个变更,然后在testnet上进行测试,最后实现生产。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

青丝暮雪780 初中生
  • 粉丝

    0

  • 关注

    2

  • 主题

    11