Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
1比特币的测试区块链0 b# ~6 @- H' I, E$ i/ Y1 V  X

+ o' A- e- J, I- U/ u& Z* {    你可能会惊讶地发现,有多个比特币区块链。2009年1月3日由SatoshiNakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于测试的比特币区块链:现存的有testnet,segnet和regtest。我们依次看看每一个。
( S- _4 M" X' p  H. @* D/ r
6 T/ G$ j& P2 q    2Testnet——比特币的试验场
" G& y, F) j: y% \# g( q
6 f) ^. E- c& D1 I' y$ i1 S7 S    Testnet是用于测试的区块链,网络和货币的总称。testnet是一个功能齐全的在线P2P网络,包括钱包,测试比特币(testnet币),挖矿以及类似主干网的所有其他功能。实际上它和主网只有两个区别:testnet币是毫无价值的,挖掘难度足够低,任何人都可以相对容易地使用testnet币)。! u- ]+ ?7 `, s+ w  Y

* ~( V* f* `) W6 {# P0 K$ W    任何打算在比特币主干网上用于生产的软件开发都应该首先在testnet上用测试币进行测试。这样可以保护开发人员免受由于软件错误而导致的金钱损失,也可以保护网络免受由于软件错误导致的意外攻击。2 `2 s. T# v$ Q- y& b( a

9 P: S* G* M+ L6 k' G6 m, _0 Z    然而,保持测试币的无价值和易挖掘并不容易。尽管有来自开发商的呼吁,但还是有人使用先进的设备(GPU和ASIC)在testnet上挖矿。这就增加了难度,使用CPU挖矿不可能,导致获取测试币非常困难,以致于人们开始赋予其一定价值,所以测试币并不是毫无价值。结果,时不时地testnet必须被报废并重新从创始区块启动,重新进行难度设置。8 _. i* W/ W) X1 |7 `  `

% S$ y, f1 z% A  V    目前的testnet被称为testnet3,是testnet的第三次迭代,于2011年2月重启,重置了之前的testnet网络的难度。
& b$ J* w1 W0 x
4 y6 W0 [8 i4 Z. D    请记住,testnet3是一个大区块链,在2017年初超过20GB。完全同步需要一天左右的时间,并占用您的计算机资源。它不像主干网,也不是“轻量级”。运行testnet节点的一个好方法就是将其运行为一个专用的虚拟机镜像(例如,VirtualBox,Docker,CloudServer等)。4 @6 _* e7 C  H- i% m3 o

) ?- y9 f4 D, v1 i    9.9.1.1使用testnet/ H' c2 b' ?" c) k

/ n) ?" P# e; ~2 e8 w4 d) k. v. J    像几乎所有其他比特币软件一样,BitcoinCore完全支持在testnet网络运行而不是只能在主干网上运行,还允许您进行测试币挖矿并运行一个testnet全节点。
7 R7 r) ^" I: u/ ?$ t% S' {: Z' H- Z& H& O2 w
    如果要在testnet上启动BitcoinCore,而不是在主干网启动,您可以使用testnet开关:
: j5 r! d. q% W& ^$ X, d5 C8 \' z: o5 J5 ]% U* Q
    $bitcoind-testnet
: s! }/ G: `# U2 x: l
3 {, \1 f% e" ?6 u+ a: |$ d    在日志中,您应该会看到,bitcoind正在默认bitcoind目录的testnet3子目录中构建一个新的区块链:  \2 F* v% m" z$ T1 T3 N& m

. X9 r) F1 D& k    bitcoind:Usingdatadirectory/home/username/.bitcoin/testnet3
! t+ I( G& T. }( u$ J
: p7 q& H6 t) u    要连接bitcoind,可以使用bitcoin-cli命令行工具,但是要记得切换到testnet模式:
9 U: W( a) @$ C  a$ S/ K. o

  1. + s% w( A: I! v: K
  2. $ bitcoin-cli -testnet getinfo. D0 f) S% y$ F
  3. {& C- g9 k4 _' v2 O
  4.   "version": 130200,/ N" j& D+ `* o( W7 ]+ k0 q
  5.   "protocolversion": 70015," ]+ v2 Y' s& P; k7 r
  6.   "walletversion": 130000,% n8 _: k$ I3 @" F9 `
  7.   "balance": 0.00000000,$ r9 ~( @' `5 r, K: Q3 X2 W, p
  8.   "blocks": 416,
    4 c* U9 f0 b) [; P& h5 ?. e+ J
  9.   "timeoffset": 0,9 @- c" h/ c" S* A. k
  10.   "connections": 3,
    2 v7 u, }" r( r1 n
  11.   "proxy": "",
    5 k8 U+ g& q+ S2 p3 V
  12.   "difficulty": 1,
    & _) O: Y4 g+ s6 n
  13.   "testnet": true,) m+ F. U: m3 G$ y
  14.   "keypoololdest": 1484801486,/ x9 I' _6 {' X5 A. X3 v. n
  15.   "keypoolsize": 100,
    ' G2 Y. b9 I/ X; S' O  V& a
  16.   "paytxfee": 0.00000000,
    6 m# A6 M6 C7 ^9 ?9 [
  17.   "relayfee": 0.00001000,  L/ r/ F/ g( |' ~
  18.   "errors": ""
      Z, j) N& }2 D# R% ?1 c4 z
  19. }
复制代码

/ p6 O8 T' e4 k! N, |& H您还可以使用getblockchaininfo命令确认testnet3区块链的详细信息和同步进度:, y5 b4 c* w6 l
  1. $ bitcoin-cli -testnet getblockchaininfo
    / u  ], w# p/ K8 P1 k5 ?. A4 c
  2. 9 e" x! q3 T5 E7 e" o- O
  3. {0 G6 r0 ~* \; z6 I
  4.   "chain": "test",
    0 L/ p0 m+ ]% f) `. g  ~
  5.   "blocks": 1088,
    ; \( G8 b9 z2 h4 u
  6.   "headers": 139999,/ b. d$ \7 w& N
  7.   "bestblockhash": "0000000063d29909d475a1c4ba26da64b368e56cce5d925097bf3a2084370128",. _* T) r3 u0 @% ]! `
  8.   "difficulty": 1,: e, T4 o: d+ z  g* _
  9.   "mediantime": 1337966158,
    2 c' M' S( q5 H4 }1 \, l
  10.   "verificationprogress": 0.001644065914099759,
    , w6 a& y; B4 V0 ]# J
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000044104410441",5 [+ _0 l& ^$ i0 T+ d+ O( X9 C
  12.   "pruned": false,
    ; U1 U) N& M- U- w( h3 {* ]7 m
  13.   "softforks": [5 }" V8 n( ]7 H( t3 `  m

  14.   q; P) V0 V. @: `+ C
  15.   [...]
复制代码
  1. $ bitcoin-cli -regtest getblockchaininfo
    9 ]  n' t, C9 u! `$ M* |- P
  2. # s- a& i9 G( N" u) i: v) m1 L
  3. {
    ' w: C6 ]) N, [; S. D5 R6 j
  4.   "chain": "regtest",
    6 U( s. l0 g) S
  5.   "blocks": 0,0 _4 g6 c, H1 t
  6.   "headers": 0,
    # J1 b5 H; h/ r6 V0 \/ C9 e& B. g- z
  7.   "bestblockhash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",
    / a! @4 Q( }6 h2 Y
  8.   "difficulty": 4.656542373906925e-10,7 k; A8 f; S+ J; x# a  O
  9.   "mediantime": 1296688602,
    * D# B" l2 K7 ?6 D4 X
  10.   "verificationprogress": 1,( Q, j% z6 L. S1 ]  n
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",% U* T4 T4 |& j: |& b5 x
  12.   "pruned": false,
复制代码
4 ^5 s) i; M4 {" ~+ j4 m
你可以看到,还没有任何区块。 让我们开始挖一些(500块),赚取奖励:8 M' K1 P2 R" M2 _' R- K
  1. $ bitcoin-cli -regtest generate 500
    0 w2 }9 _' H% n! [( {& P9 K3 O
  2.   [5 s; I+ @# q6 x
  3. [9 |) {+ G0 T3 c% C. e
  4.   "7afed70259f22c2bf11e406cb12ed5c0657b6e16a6477a9f8b28e2046b5ba1ca",
    5 f* s# L$ i8 o
  5.   "1aca2f154a80a9863a9aac4c72047a6d3f385c4eec5441a4aafa6acaa1dada14",3 w- m  v0 H: I* L% W
  6.   "4334ecf6fb022f30fbd764c3ee778fabbd53b4a4d1950eae8a91f1f5158ed2d1",# K2 {# }! S; x/ }& f( k
  7.   "5f951d34065efeaf64e54e91d00b260294fcdfc7f05dbb5599aec84b957a7766",
    ) U0 }* g6 f* U' g
  8.   "43744b5e77c1dfece9d05ab5f0e6796ebe627303163547e69e27f55d0f2b9353",
    2 ]8 j# v' E0 O6 Z) G- e5 I
  9.    [...]
    # S4 k. V% f! n! Y
  10.   "6c31585a48d4fc2b3fd25521f4515b18aefb59d0def82bd9c2185c4ecb754327"
复制代码
0 B1 J$ O, N. U. C

+ q/ B$ M" G  s( J' p) K
' n1 r. ]4 j' A' y! z0 G; d$ [    挖掘所有这些块只需要几秒钟,这样就可以很容易地进行测试。如果您检查您的钱包余额,您将看到您获得了前400个区块的奖励(Coinbase的奖励必须挖满100块之后才能花费):
4 {2 {  p/ m1 H. J4 ~
, G% G5 b" D: `9 N# s9 J0 m0 |    $bitcoin-cli-regtestgetbalance
0 v8 G- ^6 B) _+ h$ j
# P- N8 N9 q  O- E4 x! M    12462.50000000
" l2 r& ?$ T: v; m3 a( B/ h
1 a( v3 v" l0 s    5使用测试块链进行开发
6 U: d; d) w6 O8 `$ U
! N; W  _3 Z4 C; O) {) i    Bitcoin的各种区块链(regtest,segnet,testnet3,以及主干网)为比特币开发提供了一系列测试环境。无论您是开发比特币核心还是另一个全节点共识客户端,诸如钱包,交易所,电子商务网站等应用程序,甚至开发新颖的智能合同和复杂的脚本等等,请使用测试区块链网进行开发。
/ f2 A7 z2 {% O: P+ t8 e4 f# {4 \, O; o
    您可以使用测试区块链来建立开发管道。在开发它时,建议在本地测试代码。
) r2 w3 K# P; x0 n  ?) \1 Q4 M! _* R, ^4 L0 H" g9 e/ h- C
    一旦您准备好在公共网络上尝试,请切换到testnet,将您的代码暴露在更加动态的环境中,并提供更多样化的代码和应用程序。: G; r, }1 K! W: E6 A( c

4 B2 a4 Y' U3 \2 k- d) _! N/ k    最后,一旦您确信您的代码正常工作,请切换到主网以实现生产部署。2 M. x/ D/ K3 u$ Q) A) y

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

本版积分规则

成为第一个吐槽的人

青丝暮雪780 初中生
  • 粉丝

    0

  • 关注

    2

  • 主题

    11