Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
1比特币的测试区块链
# p; F0 L+ ?2 q5 D) A% C# A- U4 i+ B0 {
    你可能会惊讶地发现,有多个比特币区块链。2009年1月3日由SatoshiNakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于测试的比特币区块链:现存的有testnet,segnet和regtest。我们依次看看每一个。
" ^8 r) L( Z) ^+ l; l# Y% O) U6 u( P! V" j# p  j8 O4 p: |" |
    2Testnet——比特币的试验场
4 [9 Q4 J& \0 Q* ^! Q  k; s5 G/ w- `
( J+ L- s+ [+ `( S    Testnet是用于测试的区块链,网络和货币的总称。testnet是一个功能齐全的在线P2P网络,包括钱包,测试比特币(testnet币),挖矿以及类似主干网的所有其他功能。实际上它和主网只有两个区别:testnet币是毫无价值的,挖掘难度足够低,任何人都可以相对容易地使用testnet币)。
' l9 R6 @3 y( Q# s: \4 h+ J, v# h- C
    任何打算在比特币主干网上用于生产的软件开发都应该首先在testnet上用测试币进行测试。这样可以保护开发人员免受由于软件错误而导致的金钱损失,也可以保护网络免受由于软件错误导致的意外攻击。
# z( C. f9 x) n' A3 W: M
; E3 L# D0 y% Q1 A7 A    然而,保持测试币的无价值和易挖掘并不容易。尽管有来自开发商的呼吁,但还是有人使用先进的设备(GPU和ASIC)在testnet上挖矿。这就增加了难度,使用CPU挖矿不可能,导致获取测试币非常困难,以致于人们开始赋予其一定价值,所以测试币并不是毫无价值。结果,时不时地testnet必须被报废并重新从创始区块启动,重新进行难度设置。
2 Q) E# ?- B7 A4 T! d* E$ \. h, c& z( M/ W
    目前的testnet被称为testnet3,是testnet的第三次迭代,于2011年2月重启,重置了之前的testnet网络的难度。* t6 |8 q- p! _+ `1 U9 v

" g/ H! I  q& |- h    请记住,testnet3是一个大区块链,在2017年初超过20GB。完全同步需要一天左右的时间,并占用您的计算机资源。它不像主干网,也不是“轻量级”。运行testnet节点的一个好方法就是将其运行为一个专用的虚拟机镜像(例如,VirtualBox,Docker,CloudServer等)。
& P+ v" `2 v" q, }/ |2 u; R: \* b+ C4 k# Q
    9.9.1.1使用testnet) \3 L% p) k- V2 E2 e0 C- ^! a) q9 p7 r
) k6 J5 Q' {: {9 S
    像几乎所有其他比特币软件一样,BitcoinCore完全支持在testnet网络运行而不是只能在主干网上运行,还允许您进行测试币挖矿并运行一个testnet全节点。0 Y6 s  D, k: {" M3 d/ _' W7 B6 L
1 i6 O, K! d$ Q( h: u$ t* C
    如果要在testnet上启动BitcoinCore,而不是在主干网启动,您可以使用testnet开关:1 \3 S0 f! u8 Q1 L8 j2 ]
( ?- ^# X* b, P7 ]# f* M" x
    $bitcoind-testnet
* P9 m3 |+ O$ [' c1 f8 \$ V( ~' N' m$ J
    在日志中,您应该会看到,bitcoind正在默认bitcoind目录的testnet3子目录中构建一个新的区块链:0 Q- k' C9 h" F- `0 d4 @/ o
# {* W8 K' H! q# i5 W) B5 ~. H2 G
    bitcoind:Usingdatadirectory/home/username/.bitcoin/testnet3
* K8 s. R& l2 w. v. e7 I
0 U" F9 M: B: q    要连接bitcoind,可以使用bitcoin-cli命令行工具,但是要记得切换到testnet模式:* y+ p0 J% r1 O

  1. . N5 n& s% o- [) o. H% ~2 w1 U
  2. $ bitcoin-cli -testnet getinfo
    0 }3 q2 M$ o8 s% v' n( s6 r& j
  3. {8 @5 j' w8 Q8 N8 I' e& t1 D3 U
  4.   "version": 130200,3 y2 G& P  n& U& U! j4 v; E
  5.   "protocolversion": 70015,0 R# [7 x7 b3 ?) t
  6.   "walletversion": 130000,
    4 x  s7 `3 e' r- E2 z
  7.   "balance": 0.00000000,
    ' \7 R  w1 X& k9 Y! ]# v
  8.   "blocks": 416,
    / C$ n" D% x$ r  |
  9.   "timeoffset": 0,. i/ [5 ^/ s- j  E& K
  10.   "connections": 3,4 \, O% e% ?0 g2 c& _
  11.   "proxy": "",
    7 N7 C  k& V# a5 j
  12.   "difficulty": 1,2 C0 F0 a4 R) i  [  U  `
  13.   "testnet": true,+ q! `" z1 {: B' ~* s5 ^% p& z
  14.   "keypoololdest": 1484801486,
    & k( @% a# ]6 B& w2 u- f2 g  K
  15.   "keypoolsize": 100,
    1 A4 L$ H, L% `% u
  16.   "paytxfee": 0.00000000,/ @' w1 N7 N# n, G) C8 `
  17.   "relayfee": 0.00001000,% Y4 Y8 A8 V& }" \! N. Z+ _
  18.   "errors": ""
    * S0 d+ W3 I* @+ i$ r# s# I. l
  19. }
复制代码
3 @# |2 V7 L6 e6 @1 j8 s0 q
您还可以使用getblockchaininfo命令确认testnet3区块链的详细信息和同步进度:
$ ]( }" o; [  q: U1 R/ J' [
  1. $ bitcoin-cli -testnet getblockchaininfo/ }: h5 W' Q" F7 Y* \1 T+ w

  2. 1 Z& J5 Z0 C  x  L
  3. {
    5 ?6 I+ @) X# r% h" ]6 F8 ~
  4.   "chain": "test",7 z  a" t0 ^6 q7 @; V5 @4 Y
  5.   "blocks": 1088,
    5 k1 Q0 F1 k2 h! O% H
  6.   "headers": 139999,2 h$ R6 V. W& l$ p
  7.   "bestblockhash": "0000000063d29909d475a1c4ba26da64b368e56cce5d925097bf3a2084370128",
    ( y7 O+ @; N' G" I/ R) I7 u
  8.   "difficulty": 1,
    ' q+ E+ v3 {5 z, m: ]& r7 ]: J
  9.   "mediantime": 1337966158,
    0 M4 i( e3 X( _" E5 V* {% K0 P
  10.   "verificationprogress": 0.001644065914099759,
    8 S! P; B3 X, B  ]7 ~5 E
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000044104410441",/ ~. p, a# v0 Z$ x( t* n
  12.   "pruned": false,
    ! [: g( Z2 m. \  h
  13.   "softforks": [* d% e- _. e/ x0 i  }
  14. . [4 z& j( ~  c
  15.   [...]
复制代码
  1. $ bitcoin-cli -regtest getblockchaininfo
    5 j4 q( D1 _; |! @* n8 Q% u

  2. 7 H( n5 R3 }1 C% W& Q, i
  3. {  d8 I5 n: y. h: B4 M
  4.   "chain": "regtest",5 ?! X* Q% e, M  L. T; B
  5.   "blocks": 0,
    ! l) i/ |) L# }0 h, N
  6.   "headers": 0,% W6 M/ t4 f6 E, f! z
  7.   "bestblockhash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",
    6 z' k: ]% Z/ }4 T2 @$ l) l
  8.   "difficulty": 4.656542373906925e-10,
    + [5 E# R  X& c7 f& i' \$ j
  9.   "mediantime": 1296688602,2 s7 B) @( i! V( w% \+ E- r
  10.   "verificationprogress": 1,
    3 ~7 r" a! V  i6 ?, r, C1 S
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",6 Z$ N1 z6 _0 W- \8 h
  12.   "pruned": false,
复制代码

' t- i, E: p% M9 `4 v你可以看到,还没有任何区块。 让我们开始挖一些(500块),赚取奖励:$ s. N/ Q' i. r7 D6 Y, K8 w6 `
  1. $ bitcoin-cli -regtest generate 5001 W5 |5 X& S2 Z

  2. 7 J/ R0 o' ^3 _" \0 h
  3. [1 M1 y1 N( b- J
  4.   "7afed70259f22c2bf11e406cb12ed5c0657b6e16a6477a9f8b28e2046b5ba1ca",
    ) ^3 j% s! z9 I
  5.   "1aca2f154a80a9863a9aac4c72047a6d3f385c4eec5441a4aafa6acaa1dada14",: O" f0 S/ q2 I; D; Q3 t
  6.   "4334ecf6fb022f30fbd764c3ee778fabbd53b4a4d1950eae8a91f1f5158ed2d1",. B) f$ Z' x" U9 W& {/ T2 c/ N
  7.   "5f951d34065efeaf64e54e91d00b260294fcdfc7f05dbb5599aec84b957a7766",* [* e$ t- I; f0 l
  8.   "43744b5e77c1dfece9d05ab5f0e6796ebe627303163547e69e27f55d0f2b9353",) X0 U1 Y! `: D' j0 t1 G& I
  9.    [...]
    0 g1 D7 L  ?& \3 k; B2 {5 t
  10.   "6c31585a48d4fc2b3fd25521f4515b18aefb59d0def82bd9c2185c4ecb754327"
复制代码
5 u4 b% @9 D  x: [: V# |

7 q' T: L# @# _; L0 S# _+ o$ q
- b+ f0 Q7 S& r$ b! J, R# D7 Y    挖掘所有这些块只需要几秒钟,这样就可以很容易地进行测试。如果您检查您的钱包余额,您将看到您获得了前400个区块的奖励(Coinbase的奖励必须挖满100块之后才能花费):
8 S3 Q( o: a4 ^1 |7 F) K6 Y6 x3 {  }5 Z7 A& _# s; h$ ^# M- a
    $bitcoin-cli-regtestgetbalance
+ N7 e2 t. q/ r8 i+ M3 W
' _( W" ~" C, y7 _8 Q, j4 b    12462.50000000- T  ]3 F/ Q9 p- ]" {3 M" T+ h
" y% B# f' l2 @+ J1 J
    5使用测试块链进行开发3 g* H$ A+ I$ Z9 S9 z8 \
0 r  ]; z2 g6 n; f# m, ], y0 a
    Bitcoin的各种区块链(regtest,segnet,testnet3,以及主干网)为比特币开发提供了一系列测试环境。无论您是开发比特币核心还是另一个全节点共识客户端,诸如钱包,交易所,电子商务网站等应用程序,甚至开发新颖的智能合同和复杂的脚本等等,请使用测试区块链网进行开发。% I" y& r5 q$ S: d2 t2 \

5 @1 z( w$ Y+ t  P! A$ D6 i  w& o    您可以使用测试区块链来建立开发管道。在开发它时,建议在本地测试代码。
+ U' p; {3 l4 D/ o" @$ [
. E+ T5 b6 ]$ ~8 E5 |$ ]    一旦您准备好在公共网络上尝试,请切换到testnet,将您的代码暴露在更加动态的环境中,并提供更多样化的代码和应用程序。
: p" U- M4 T* V; F$ Z3 i2 `/ z* H8 J3 O; x/ ?" R/ o+ B
    最后,一旦您确信您的代码正常工作,请切换到主网以实现生产部署。
8 Z6 y% [$ @; E2 c
- G; g: ]5 L" [, N3 ]$ I$ @    当您进行变更,改进,错误修复等操作时,再次启动这个开发管道,首先在regtest上部署每个变更,然后在testnet上进行测试,最后实现生产。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

青丝暮雪780 初中生
  • 粉丝

    0

  • 关注

    2

  • 主题

    11