Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
1比特币的测试区块链
% [. C5 F" z9 _$ b3 ?( z. P2 H# d# C7 j) h  A- a9 U
    你可能会惊讶地发现,有多个比特币区块链。2009年1月3日由SatoshiNakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于测试的比特币区块链:现存的有testnet,segnet和regtest。我们依次看看每一个。
+ d: ?4 D) }6 L8 F" ?6 T5 F* a9 A. M. o
    2Testnet——比特币的试验场  N5 y3 M8 G7 d
0 h' t$ v, \! I( l' B4 O4 D
    Testnet是用于测试的区块链,网络和货币的总称。testnet是一个功能齐全的在线P2P网络,包括钱包,测试比特币(testnet币),挖矿以及类似主干网的所有其他功能。实际上它和主网只有两个区别:testnet币是毫无价值的,挖掘难度足够低,任何人都可以相对容易地使用testnet币)。
5 o1 \6 g! v) o! I1 x: @/ s3 O) A2 {
& L0 ~* R4 f. Z  ^    任何打算在比特币主干网上用于生产的软件开发都应该首先在testnet上用测试币进行测试。这样可以保护开发人员免受由于软件错误而导致的金钱损失,也可以保护网络免受由于软件错误导致的意外攻击。
2 {, O8 H/ G8 [$ \0 y+ _* ~" @5 _, C& \+ u5 N% g( X
    然而,保持测试币的无价值和易挖掘并不容易。尽管有来自开发商的呼吁,但还是有人使用先进的设备(GPU和ASIC)在testnet上挖矿。这就增加了难度,使用CPU挖矿不可能,导致获取测试币非常困难,以致于人们开始赋予其一定价值,所以测试币并不是毫无价值。结果,时不时地testnet必须被报废并重新从创始区块启动,重新进行难度设置。
1 h! i8 k8 h' k3 S% Y- p& f6 i2 z
    目前的testnet被称为testnet3,是testnet的第三次迭代,于2011年2月重启,重置了之前的testnet网络的难度。/ f1 k  N1 c: r1 g% k1 e
/ S, ~3 U& Q7 _; R/ A4 C9 n& D& ?
    请记住,testnet3是一个大区块链,在2017年初超过20GB。完全同步需要一天左右的时间,并占用您的计算机资源。它不像主干网,也不是“轻量级”。运行testnet节点的一个好方法就是将其运行为一个专用的虚拟机镜像(例如,VirtualBox,Docker,CloudServer等)。$ G0 ~4 G% c- G, m9 T

4 m% H4 F) [" ?( i) Q; E7 K    9.9.1.1使用testnet
$ o& a1 ]1 b- `/ x" G0 D( }! _
/ {  x6 c1 e9 u8 e. D; ^    像几乎所有其他比特币软件一样,BitcoinCore完全支持在testnet网络运行而不是只能在主干网上运行,还允许您进行测试币挖矿并运行一个testnet全节点。
, B- W1 A3 j' w! G5 e9 q& o: ~0 V: I0 b) G! ^
    如果要在testnet上启动BitcoinCore,而不是在主干网启动,您可以使用testnet开关:- y5 n6 u4 N1 e6 O( E3 `

. |, c+ i' V( X    $bitcoind-testnet8 Y8 b$ P+ Z# r' B8 A2 f0 u; j) L
# o$ m; S. e8 c. u& a9 n
    在日志中,您应该会看到,bitcoind正在默认bitcoind目录的testnet3子目录中构建一个新的区块链:
% N) p! d( h' W; v* t% j2 B6 N" ?9 g) ~' r+ s4 H
    bitcoind:Usingdatadirectory/home/username/.bitcoin/testnet3; m9 m; P; Q' r- M

1 c% {0 ]% _$ {) Q' i    要连接bitcoind,可以使用bitcoin-cli命令行工具,但是要记得切换到testnet模式:
3 W! c8 i8 i" v0 i: P
  1. ' Y# [7 P. h! S: e( {5 Y+ v, {
  2. $ bitcoin-cli -testnet getinfo5 |/ J7 X+ i6 W. Y8 {
  3. {7 o  U% n  H4 _/ P9 u( k+ R
  4.   "version": 130200,7 x% X% R- R$ C: d! [
  5.   "protocolversion": 70015,
    / N8 f5 u8 @7 d  |, r; T$ K* f
  6.   "walletversion": 130000,
    ! W: J! @8 S* s# |8 |" N
  7.   "balance": 0.00000000,4 i) T+ Q0 g+ }$ u; F$ D, u: H, F0 n
  8.   "blocks": 416,0 _4 z% ^8 N/ e
  9.   "timeoffset": 0,
    ! }* x) C9 h' g0 u0 l. I0 M
  10.   "connections": 3," p* z: W7 p- h8 T) U( ^3 s- y
  11.   "proxy": "",
    / M; `+ m$ Z) g
  12.   "difficulty": 1,) K0 r  J+ N% }2 ?% L
  13.   "testnet": true,
    9 p$ r+ H4 S: b5 v
  14.   "keypoololdest": 1484801486,
    ! @6 G) w6 c3 S: ?- Q2 A# q6 I
  15.   "keypoolsize": 100,
    5 J2 N' O/ Q, J6 K) ?
  16.   "paytxfee": 0.00000000,1 P: b  Z6 `7 W+ \1 m! |* }
  17.   "relayfee": 0.00001000,
    8 c/ e* e4 _9 V" O9 f
  18.   "errors": ""  v( z; v  _+ w: z
  19. }
复制代码

& \1 {1 @( ^/ G! D* H. H5 |  [您还可以使用getblockchaininfo命令确认testnet3区块链的详细信息和同步进度:- a  k( v% I6 s- ?5 E0 m# A; E! Z2 f
  1. $ bitcoin-cli -testnet getblockchaininfo
    : H8 D( ^. ^/ x  a+ T

  2. 0 n/ k; X+ i6 U6 j3 h
  3. {2 ?2 n: C7 [% C( O6 V0 v9 c6 B# _
  4.   "chain": "test",
    3 A  m( ~: h0 y9 e7 i3 s  E
  5.   "blocks": 1088,& L/ D  `: @1 ~  {$ f; k
  6.   "headers": 139999,
    5 |7 S( w* w8 v% D
  7.   "bestblockhash": "0000000063d29909d475a1c4ba26da64b368e56cce5d925097bf3a2084370128",
    % L* s. V3 V; L' i9 N
  8.   "difficulty": 1,
    9 C+ ]7 S' Z( K5 p' q  P2 F5 M
  9.   "mediantime": 1337966158,# u/ j$ ^; ]7 m* l! q; |+ B+ i
  10.   "verificationprogress": 0.001644065914099759,
    2 i0 w. E! D1 P5 O' B$ J9 c
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000044104410441",. v+ u) q, b4 S; i" y8 Z. n
  12.   "pruned": false,: G! p. Y1 `' h; m! G  {
  13.   "softforks": [
    6 W: I: M5 r& M# ?
  14. $ ?1 o, r0 s' T% B2 D& f
  15.   [...]
复制代码
  1. $ bitcoin-cli -regtest getblockchaininfo2 n0 l8 S5 W6 s

  2. - k$ ^( W$ Q" h  I- T' y
  3. {8 w- w$ Z/ R" L" t% d) d
  4.   "chain": "regtest",& o6 a( K0 ^: e0 @! \: D
  5.   "blocks": 0,, f$ [1 Z* E  g- U+ \5 D* ~
  6.   "headers": 0,, M7 H& z/ W: c  ?& ^0 I
  7.   "bestblockhash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",
    7 d4 S6 R- E# A  v3 ?: w
  8.   "difficulty": 4.656542373906925e-10,: E: K: u! u' \8 r# f& G" d+ n
  9.   "mediantime": 1296688602," c7 F5 ]& K4 H# @( A
  10.   "verificationprogress": 1,
    ! t% ~; j  P& M) D! i/ t5 L
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",6 _$ y" q& u. h' i$ w$ {7 k
  12.   "pruned": false,
复制代码

, S+ @8 P. m- D+ i* K你可以看到,还没有任何区块。 让我们开始挖一些(500块),赚取奖励:6 e! n7 P! w! |9 V& x# c
  1. $ bitcoin-cli -regtest generate 500; X% t1 H2 j8 J9 x! G/ j$ O% I

  2. ) ?& b8 s$ I) c" h/ z
  3. [) y; o3 E; ^% S7 K6 H, g$ |
  4.   "7afed70259f22c2bf11e406cb12ed5c0657b6e16a6477a9f8b28e2046b5ba1ca",
    & n& z/ I, _# v) o& [
  5.   "1aca2f154a80a9863a9aac4c72047a6d3f385c4eec5441a4aafa6acaa1dada14",
      o! S2 y  K, N9 D$ C9 |7 |
  6.   "4334ecf6fb022f30fbd764c3ee778fabbd53b4a4d1950eae8a91f1f5158ed2d1",
    6 ^/ H! n: n' @  F7 i5 `
  7.   "5f951d34065efeaf64e54e91d00b260294fcdfc7f05dbb5599aec84b957a7766",
    ; Q# i0 x# G! v' N( G
  8.   "43744b5e77c1dfece9d05ab5f0e6796ebe627303163547e69e27f55d0f2b9353",
    * l2 {" p: D6 g- R* y
  9.    [...]  `; m# G6 w% y% h
  10.   "6c31585a48d4fc2b3fd25521f4515b18aefb59d0def82bd9c2185c4ecb754327"
复制代码

% E% o: |. E0 Y- ]% B  K
2 Z* M; G$ p5 D: I6 O( z+ Z: |9 {
+ Y* }# d; o" V* Z% T8 o9 V3 h+ H& C    挖掘所有这些块只需要几秒钟,这样就可以很容易地进行测试。如果您检查您的钱包余额,您将看到您获得了前400个区块的奖励(Coinbase的奖励必须挖满100块之后才能花费):
8 A: h: x/ W, ^) @% R( }3 e3 s
$ a( F. ~+ A3 f1 {0 |" ~    $bitcoin-cli-regtestgetbalance
9 _4 o* n3 p2 n
  u3 J" g& b) @    12462.50000000- C) S2 t! G! |7 m/ N
6 U8 c2 k- S" \: R0 x' Q4 l
    5使用测试块链进行开发* U/ x" e+ e/ a# D7 w- n) ^$ j$ Q5 |

3 ]4 N( c: `" H! X' {    Bitcoin的各种区块链(regtest,segnet,testnet3,以及主干网)为比特币开发提供了一系列测试环境。无论您是开发比特币核心还是另一个全节点共识客户端,诸如钱包,交易所,电子商务网站等应用程序,甚至开发新颖的智能合同和复杂的脚本等等,请使用测试区块链网进行开发。2 a8 e: E/ S& o! t" p) B6 T
" ~0 `) X$ {* o$ u% @* Z2 d' N& y
    您可以使用测试区块链来建立开发管道。在开发它时,建议在本地测试代码。
/ m& ^# h5 i- e2 z, k0 @2 x1 b( g8 o# I. o& U
    一旦您准备好在公共网络上尝试,请切换到testnet,将您的代码暴露在更加动态的环境中,并提供更多样化的代码和应用程序。
7 V4 N9 x3 |) B* {/ v: a' U+ G* [$ E% o7 \* b# ~2 ~# y
    最后,一旦您确信您的代码正常工作,请切换到主网以实现生产部署。( F; h- i* u) ]6 \* S8 b
% a  O+ O2 X2 t( F: L
    当您进行变更,改进,错误修复等操作时,再次启动这个开发管道,首先在regtest上部署每个变更,然后在testnet上进行测试,最后实现生产。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

青丝暮雪780 初中生
  • 粉丝

    0

  • 关注

    2

  • 主题

    11