Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
1比特币的测试区块链4 K  B+ r# P3 ~* }4 h
: ^6 C" E% r- p' C
    你可能会惊讶地发现,有多个比特币区块链。2009年1月3日由SatoshiNakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于测试的比特币区块链:现存的有testnet,segnet和regtest。我们依次看看每一个。
  S" A5 [4 D$ q4 h
- C( ]8 I: D1 a. ]( h    2Testnet——比特币的试验场
  w4 N, k( Y, o3 i* {1 l+ A" Y( k; M: z+ t5 |7 u$ N
    Testnet是用于测试的区块链,网络和货币的总称。testnet是一个功能齐全的在线P2P网络,包括钱包,测试比特币(testnet币),挖矿以及类似主干网的所有其他功能。实际上它和主网只有两个区别:testnet币是毫无价值的,挖掘难度足够低,任何人都可以相对容易地使用testnet币)。
9 w; Z( V4 ^& s3 E4 o' [) O3 G  H) w
    任何打算在比特币主干网上用于生产的软件开发都应该首先在testnet上用测试币进行测试。这样可以保护开发人员免受由于软件错误而导致的金钱损失,也可以保护网络免受由于软件错误导致的意外攻击。+ q# X2 v% y* e! S- \% L0 G

7 ^9 V! h, Q3 P+ l8 Z+ b    然而,保持测试币的无价值和易挖掘并不容易。尽管有来自开发商的呼吁,但还是有人使用先进的设备(GPU和ASIC)在testnet上挖矿。这就增加了难度,使用CPU挖矿不可能,导致获取测试币非常困难,以致于人们开始赋予其一定价值,所以测试币并不是毫无价值。结果,时不时地testnet必须被报废并重新从创始区块启动,重新进行难度设置。
2 q; e/ ]; g& m6 v
+ o3 |  s  m  D; C0 s5 K    目前的testnet被称为testnet3,是testnet的第三次迭代,于2011年2月重启,重置了之前的testnet网络的难度。8 V, `7 r0 k. V" b+ Z

1 o) F- c9 E5 \+ Q    请记住,testnet3是一个大区块链,在2017年初超过20GB。完全同步需要一天左右的时间,并占用您的计算机资源。它不像主干网,也不是“轻量级”。运行testnet节点的一个好方法就是将其运行为一个专用的虚拟机镜像(例如,VirtualBox,Docker,CloudServer等)。0 U& T# M) i1 F: o$ e. Y

3 N5 h2 P! Q7 e) m2 T    9.9.1.1使用testnet
2 u% ?9 c2 L+ E5 w8 Z6 @" P& v/ D! y0 i; ~+ D. \$ U# L
    像几乎所有其他比特币软件一样,BitcoinCore完全支持在testnet网络运行而不是只能在主干网上运行,还允许您进行测试币挖矿并运行一个testnet全节点。
2 z- a7 h5 k: g
4 ?( T1 P1 J9 k: _- d6 s# L    如果要在testnet上启动BitcoinCore,而不是在主干网启动,您可以使用testnet开关:
4 t# P6 B7 \0 x& J6 ?
3 B% e& ]3 J- h' S4 D    $bitcoind-testnet( ]  ?2 y# S% L7 U3 |/ o( l0 [
" K0 J5 @/ e% `0 D
    在日志中,您应该会看到,bitcoind正在默认bitcoind目录的testnet3子目录中构建一个新的区块链:4 i! R2 }5 a6 Y0 M2 r2 ?
7 P4 Q. ^& {5 c( f
    bitcoind:Usingdatadirectory/home/username/.bitcoin/testnet3& u9 Y! P$ d; a! P! t
- H" O+ X, Z7 Q  T
    要连接bitcoind,可以使用bitcoin-cli命令行工具,但是要记得切换到testnet模式:
$ D- v8 k/ K% D  A% t* E  `/ ?1 q
  1. 8 d* m+ R, E$ u3 X4 y; s
  2. $ bitcoin-cli -testnet getinfo, o/ F" y  g+ r5 H/ }/ Z: S
  3. {
    5 Y& c0 [. f5 D8 o0 u+ B4 J
  4.   "version": 130200,
    0 f; _4 Z5 l5 L, S2 ]
  5.   "protocolversion": 70015,8 v) k' L6 `/ F$ }( G
  6.   "walletversion": 130000,
    7 B$ P: \7 H$ ^; `. ^9 s; ^
  7.   "balance": 0.00000000,0 g* P3 \0 T8 l  E/ ?& W
  8.   "blocks": 416,4 v9 `, h. \8 x
  9.   "timeoffset": 0,
    % F0 T5 O/ G! P4 g, Y! G( {9 @, S
  10.   "connections": 3,
    2 r$ P) x$ |. ]0 E4 T& _
  11.   "proxy": "",
    3 \$ F- ^, e' O7 u
  12.   "difficulty": 1,3 b3 ^" K; N1 g1 I9 R
  13.   "testnet": true,5 z) r9 p; y1 K& Q1 ^% d2 N3 v4 `
  14.   "keypoololdest": 1484801486,( Q" D. e( H7 T7 f
  15.   "keypoolsize": 100,2 R" @) s5 W' a0 G$ \/ o3 v
  16.   "paytxfee": 0.00000000,* Y1 v5 F8 y# v  Q# T4 O6 R% Z9 k
  17.   "relayfee": 0.00001000,. n  N9 s6 F% @  x
  18.   "errors": ""
    # F9 X, b+ e  E! h7 {2 i; g
  19. }
复制代码
/ H6 q3 d# o) k" `& O3 W$ Z0 q
您还可以使用getblockchaininfo命令确认testnet3区块链的详细信息和同步进度:
0 m  [# R. l5 W( n' L' k* w
  1. $ bitcoin-cli -testnet getblockchaininfo9 K2 ~, w6 S( {+ h
  2. 6 h. w5 q8 b1 V$ i% v" @/ X* V
  3. {
    8 T9 r4 W  q) B+ ~5 [& s
  4.   "chain": "test",
    6 F# e  @# o1 R/ ~2 T2 l
  5.   "blocks": 1088,5 W8 o3 d" i& B& z0 j, Q: g
  6.   "headers": 139999,
      V- g$ V* K  R" P" e
  7.   "bestblockhash": "0000000063d29909d475a1c4ba26da64b368e56cce5d925097bf3a2084370128",* O* n/ o& n: I' W9 L, g" G
  8.   "difficulty": 1,
    ) u$ _/ u3 {/ E- B/ M
  9.   "mediantime": 1337966158,1 B' G7 v/ ~: s5 J
  10.   "verificationprogress": 0.001644065914099759,
    - e" A8 A' M! E2 p$ B. j0 a) C4 Y
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000044104410441",
    : d- Z1 P/ r8 p
  12.   "pruned": false,7 P& G: W* ?' Q% X; W) d
  13.   "softforks": [$ x& I# d; Q( m, H" u+ g+ w) |

  14. * L, C( z$ D3 c2 Z* r# ]. n# P7 a
  15.   [...]
复制代码
  1. $ bitcoin-cli -regtest getblockchaininfo8 P) i0 p! G6 _% `9 j8 @; ]
  2. # H. R$ E, A) I3 Z
  3. {9 _* d1 ^: B7 r+ E* e. f* l: r
  4.   "chain": "regtest",
    " E$ i, `! @) c
  5.   "blocks": 0,
    % l7 c: \: n( X1 z' A3 Q
  6.   "headers": 0,
    : a) C& S  w6 X( K0 Z  J( n7 W! u
  7.   "bestblockhash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",: H8 k  j4 N' |4 S" P0 a/ i( [0 O
  8.   "difficulty": 4.656542373906925e-10,
    6 v, k! ~' j( p: |  H! d. h4 V4 G
  9.   "mediantime": 1296688602,4 F' P, U% y+ o
  10.   "verificationprogress": 1,
    # t- [  L/ t/ ?) r
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",
    9 w2 P5 h0 y, F1 a
  12.   "pruned": false,
复制代码
3 q1 J! f' m: ^: h
你可以看到,还没有任何区块。 让我们开始挖一些(500块),赚取奖励:3 X1 e" Q% B8 u3 ^, Q
  1. $ bitcoin-cli -regtest generate 500
    & I% W$ R: @) k9 j, U

  2. / B4 q% _! c, E+ v) `% U* Q
  3. [
    4 t# J& c6 x. r( j
  4.   "7afed70259f22c2bf11e406cb12ed5c0657b6e16a6477a9f8b28e2046b5ba1ca",
    7 {4 r- c) u; ?$ I! w
  5.   "1aca2f154a80a9863a9aac4c72047a6d3f385c4eec5441a4aafa6acaa1dada14",
    ; u  j7 ^" b% F
  6.   "4334ecf6fb022f30fbd764c3ee778fabbd53b4a4d1950eae8a91f1f5158ed2d1",2 j0 L) b( E7 B* X
  7.   "5f951d34065efeaf64e54e91d00b260294fcdfc7f05dbb5599aec84b957a7766",' ?& F* x, a3 T2 V  [- S
  8.   "43744b5e77c1dfece9d05ab5f0e6796ebe627303163547e69e27f55d0f2b9353",% \' H6 ~2 E7 o3 M! H: p8 ]
  9.    [...]5 d8 U# @. c  D
  10.   "6c31585a48d4fc2b3fd25521f4515b18aefb59d0def82bd9c2185c4ecb754327"
复制代码
( X$ d% ~' ~' M& C

: m8 [! u  S. [! Y
& R4 [. o. J( }    挖掘所有这些块只需要几秒钟,这样就可以很容易地进行测试。如果您检查您的钱包余额,您将看到您获得了前400个区块的奖励(Coinbase的奖励必须挖满100块之后才能花费):6 I' E; b' c& Z* i2 N$ T/ N; M

% `+ o9 S+ S8 l, s    $bitcoin-cli-regtestgetbalance; q4 R' O/ o, k! a& F8 N
& A# A' v4 Y1 G4 t2 P& ]% y. e: o
    12462.50000000
% ]7 \& y- Z7 i* B6 |
( W" M* Y$ z6 I6 h# C5 n( `5 Q) I  d    5使用测试块链进行开发0 c. O9 r, j) v) c2 i' I- z- E- X

6 u! t: M9 [7 h; r0 ?    Bitcoin的各种区块链(regtest,segnet,testnet3,以及主干网)为比特币开发提供了一系列测试环境。无论您是开发比特币核心还是另一个全节点共识客户端,诸如钱包,交易所,电子商务网站等应用程序,甚至开发新颖的智能合同和复杂的脚本等等,请使用测试区块链网进行开发。* }2 Q$ E7 v, z1 ^) N/ c

, ~0 M" i1 W0 O, t; D4 w    您可以使用测试区块链来建立开发管道。在开发它时,建议在本地测试代码。
  `. s1 x( ~# @4 f' A# I
8 \: m7 Y2 u, R# A    一旦您准备好在公共网络上尝试,请切换到testnet,将您的代码暴露在更加动态的环境中,并提供更多样化的代码和应用程序。2 Q% c3 @+ a# _1 I

. }) s' t8 g4 s    最后,一旦您确信您的代码正常工作,请切换到主网以实现生产部署。7 Z( S' L! B9 V8 S* f/ q. o" m4 w  b

" j0 v3 x1 F- i" p    当您进行变更,改进,错误修复等操作时,再次启动这个开发管道,首先在regtest上部署每个变更,然后在testnet上进行测试,最后实现生产。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

青丝暮雪780 初中生
  • 粉丝

    0

  • 关注

    2

  • 主题

    11