Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
1比特币的测试区块链
. G- ?9 E* e. s2 c! M7 C$ n* O  v: V- M/ c8 y- X
    你可能会惊讶地发现,有多个比特币区块链。2009年1月3日由SatoshiNakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于测试的比特币区块链:现存的有testnet,segnet和regtest。我们依次看看每一个。& Q  }+ L8 x/ M3 V5 J8 {( u# c& C

  b# m4 r1 S& [8 \    2Testnet——比特币的试验场' E7 ^, x$ ~7 F+ U7 Q
( p* L9 ~* J! j$ a2 O
    Testnet是用于测试的区块链,网络和货币的总称。testnet是一个功能齐全的在线P2P网络,包括钱包,测试比特币(testnet币),挖矿以及类似主干网的所有其他功能。实际上它和主网只有两个区别:testnet币是毫无价值的,挖掘难度足够低,任何人都可以相对容易地使用testnet币)。
8 i+ R3 {2 g( A5 K% X; I- R9 e0 T! j+ r0 r4 c+ ^+ g; j) ^1 \
    任何打算在比特币主干网上用于生产的软件开发都应该首先在testnet上用测试币进行测试。这样可以保护开发人员免受由于软件错误而导致的金钱损失,也可以保护网络免受由于软件错误导致的意外攻击。
; J/ n  b4 H5 T! \8 t" r) \3 S. X; U) q7 G
    然而,保持测试币的无价值和易挖掘并不容易。尽管有来自开发商的呼吁,但还是有人使用先进的设备(GPU和ASIC)在testnet上挖矿。这就增加了难度,使用CPU挖矿不可能,导致获取测试币非常困难,以致于人们开始赋予其一定价值,所以测试币并不是毫无价值。结果,时不时地testnet必须被报废并重新从创始区块启动,重新进行难度设置。, u) t$ C& W$ I3 h4 K! L8 ?

0 m' Q: E/ ^" a. j    目前的testnet被称为testnet3,是testnet的第三次迭代,于2011年2月重启,重置了之前的testnet网络的难度。
2 n; f) S" ]+ ^' f
* p9 U, t- z- D- I    请记住,testnet3是一个大区块链,在2017年初超过20GB。完全同步需要一天左右的时间,并占用您的计算机资源。它不像主干网,也不是“轻量级”。运行testnet节点的一个好方法就是将其运行为一个专用的虚拟机镜像(例如,VirtualBox,Docker,CloudServer等)。
/ j  v% H9 d' j5 u2 P3 K( m
9 A  u! A$ w: b: a( g    9.9.1.1使用testnet
# `' R9 }% J5 p% q" `+ r$ _& a4 o
) S. v0 a& w1 }+ X( a; B+ p0 t    像几乎所有其他比特币软件一样,BitcoinCore完全支持在testnet网络运行而不是只能在主干网上运行,还允许您进行测试币挖矿并运行一个testnet全节点。! k! X" z5 b+ S# \1 h

6 z3 ~5 ]( \% u# u* w# ]+ {    如果要在testnet上启动BitcoinCore,而不是在主干网启动,您可以使用testnet开关:
8 }. B1 M+ u9 b
( q; L4 F- u5 C  b1 B    $bitcoind-testnet
7 n0 v9 P: L( N2 p
' C/ F4 a8 X- D: {" F  S; F3 Q% V0 G    在日志中,您应该会看到,bitcoind正在默认bitcoind目录的testnet3子目录中构建一个新的区块链:
( B9 a( ~( o& b1 Y" x8 S4 J+ O! c. b6 y) L$ @5 I; [7 O  D/ F
    bitcoind:Usingdatadirectory/home/username/.bitcoin/testnet3) i; _3 b; ]5 t5 E

1 p0 {/ U* k3 e: U' Z5 u    要连接bitcoind,可以使用bitcoin-cli命令行工具,但是要记得切换到testnet模式:
. E+ d  ~/ s2 c7 ]
  1. : d/ p0 v8 |) f# [; m* h% L
  2. $ bitcoin-cli -testnet getinfo
    0 G  h' a& ]. o% @
  3. {2 d0 g8 m9 {# d
  4.   "version": 130200,+ p8 E( N  W7 e
  5.   "protocolversion": 70015,
    ( ?1 c* A9 C/ T  N  H! D
  6.   "walletversion": 130000,% v" L8 N- V) i
  7.   "balance": 0.00000000,
    , L. x1 K, d% m" F9 v' k
  8.   "blocks": 416,/ `+ t; N. G9 ^1 a' `
  9.   "timeoffset": 0,
    & \& s5 N! [1 T* I+ Q
  10.   "connections": 3,
    0 i- Q5 |( l- _6 B5 l: B( A
  11.   "proxy": "",% y) b- p! s, C4 }
  12.   "difficulty": 1,9 @# {5 m1 e7 z1 B
  13.   "testnet": true,/ }8 n# \# m( T0 M4 Q/ n
  14.   "keypoololdest": 1484801486,
    . Z2 p' i  y& a/ Q; {$ @: w
  15.   "keypoolsize": 100,1 w' Y' E2 C8 f; s, V
  16.   "paytxfee": 0.00000000,4 a# n3 }' ^7 Z# L; e5 ]' l
  17.   "relayfee": 0.00001000,
    ( Z5 Q! X. S' T1 z' I: }2 Z
  18.   "errors": ""! m* o* ]# v5 n5 ~6 i! g
  19. }
复制代码
: T- t3 J4 t$ ~* I
您还可以使用getblockchaininfo命令确认testnet3区块链的详细信息和同步进度:
& y: @2 _6 t  G5 a
  1. $ bitcoin-cli -testnet getblockchaininfo
    / y3 V) z1 y' ^8 b& ^) d

  2. % c4 [) Q+ `8 M- i6 {  g* c" b' s
  3. {
    4 [* u1 |: `# n7 i! W
  4.   "chain": "test",
    ) a% v4 s6 M  {" g0 G+ r6 C5 J
  5.   "blocks": 1088,5 T0 s9 \9 y# P
  6.   "headers": 139999,
    * v1 c& E$ i+ ?2 S! v
  7.   "bestblockhash": "0000000063d29909d475a1c4ba26da64b368e56cce5d925097bf3a2084370128",6 T  j2 w7 V, J( H" Y
  8.   "difficulty": 1,3 \$ ?. }" G  E. H. s# N, b; {
  9.   "mediantime": 1337966158,2 d  ]9 v  o4 R2 O" A. `2 o
  10.   "verificationprogress": 0.001644065914099759,$ }" D$ A2 L8 Q4 j1 T4 B4 ^
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000044104410441",3 V9 `% u  D  k* M& g
  12.   "pruned": false,. U4 O5 ?0 u( e2 l+ |
  13.   "softforks": [5 i0 @: f+ _+ ^, i8 i* j$ G+ m

  14. $ Z  N! I+ o) }3 Y& x
  15.   [...]
复制代码
  1. $ bitcoin-cli -regtest getblockchaininfo
    1 U9 \  L2 `/ w3 X  x" y( x

  2. - c1 c+ d: M: k
  3. {$ u$ _6 F/ p6 m- e9 T2 a# i/ p
  4.   "chain": "regtest",1 @$ |6 R- e8 S3 j2 B0 T
  5.   "blocks": 0,
    ; c  y, h4 N3 R" {( v1 Q* L
  6.   "headers": 0,4 P5 h6 X; ~/ T. f" U
  7.   "bestblockhash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",
    6 ~& o. U$ f$ E( o
  8.   "difficulty": 4.656542373906925e-10,1 K- r" o1 s6 w, a
  9.   "mediantime": 1296688602,
    % y" M1 j+ V+ P
  10.   "verificationprogress": 1,' N# q; @' V& X5 `3 l" w! I; X
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",
    : V) K+ b4 o. @. f
  12.   "pruned": false,
复制代码
  s2 N8 |+ o: j" ?
你可以看到,还没有任何区块。 让我们开始挖一些(500块),赚取奖励:
; l& b( {# U4 k) U: L
  1. $ bitcoin-cli -regtest generate 5007 M$ N& u4 C: Z
  2. 6 h( e, h1 ~7 H, R# H
  3. [
    ! D9 a4 h* ]5 K  g+ G' i
  4.   "7afed70259f22c2bf11e406cb12ed5c0657b6e16a6477a9f8b28e2046b5ba1ca",
    : g, l+ F; e1 p
  5.   "1aca2f154a80a9863a9aac4c72047a6d3f385c4eec5441a4aafa6acaa1dada14",& c% V4 B. d0 @$ P0 _3 X( V  A; y
  6.   "4334ecf6fb022f30fbd764c3ee778fabbd53b4a4d1950eae8a91f1f5158ed2d1",: d# l. c# {6 X: c* f! \* O8 k
  7.   "5f951d34065efeaf64e54e91d00b260294fcdfc7f05dbb5599aec84b957a7766",! t/ H. \+ \$ v- x. O
  8.   "43744b5e77c1dfece9d05ab5f0e6796ebe627303163547e69e27f55d0f2b9353",8 m9 ?" h& s- J- a6 f
  9.    [...]
    - T0 c" I. O8 G- ]
  10.   "6c31585a48d4fc2b3fd25521f4515b18aefb59d0def82bd9c2185c4ecb754327"
复制代码

! ~- S5 |* N5 J  W: y0 _* |; [2 T! R  B* g4 N4 G- P7 J1 k

: _! a* m4 a8 z; a* v) \, d) F8 C$ W    挖掘所有这些块只需要几秒钟,这样就可以很容易地进行测试。如果您检查您的钱包余额,您将看到您获得了前400个区块的奖励(Coinbase的奖励必须挖满100块之后才能花费):
, [2 U7 A$ [5 T7 O4 o* \6 z
0 L+ ]8 }( R5 Q' R0 {9 r    $bitcoin-cli-regtestgetbalance
" X1 W2 t$ g8 y+ j: G! p1 `# m
) k) @! i& N) a: n    12462.50000000# Y% c; C8 h5 j3 U1 @- E! d* f* l
  E# w' t; L! l9 a
    5使用测试块链进行开发9 D& X$ H- I% X; R5 g3 W; i

; X1 a( A" {1 [, x6 s% ]0 d5 N    Bitcoin的各种区块链(regtest,segnet,testnet3,以及主干网)为比特币开发提供了一系列测试环境。无论您是开发比特币核心还是另一个全节点共识客户端,诸如钱包,交易所,电子商务网站等应用程序,甚至开发新颖的智能合同和复杂的脚本等等,请使用测试区块链网进行开发。; D! J& M, Q5 [* n0 V( e. W

; l( _6 n+ z( T9 l4 a' L    您可以使用测试区块链来建立开发管道。在开发它时,建议在本地测试代码。
0 L- p2 A) g% ]9 X5 G8 C0 [" r' E
    一旦您准备好在公共网络上尝试,请切换到testnet,将您的代码暴露在更加动态的环境中,并提供更多样化的代码和应用程序。
4 N5 q; Y: c4 Q2 c4 l  O: m- g, g* R5 E4 x; z! b
    最后,一旦您确信您的代码正常工作,请切换到主网以实现生产部署。9 j2 d- F5 P5 K# y4 ^; o  w  @

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

本版积分规则

成为第一个吐槽的人

青丝暮雪780 初中生
  • 粉丝

    0

  • 关注

    2

  • 主题

    11