Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
1比特币的测试区块链
% l* y$ s6 t& ^/ c7 L4 X) n- ~
$ R% D$ {$ W- w' y    你可能会惊讶地发现,有多个比特币区块链。2009年1月3日由SatoshiNakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于测试的比特币区块链:现存的有testnet,segnet和regtest。我们依次看看每一个。
! @) _( h8 j& @3 _$ c, C0 u* J: x, }6 h8 w5 m+ l! D% h
    2Testnet——比特币的试验场
7 s& C* w3 q: h2 `
5 P) r" F/ }/ M6 a( O; S/ k    Testnet是用于测试的区块链,网络和货币的总称。testnet是一个功能齐全的在线P2P网络,包括钱包,测试比特币(testnet币),挖矿以及类似主干网的所有其他功能。实际上它和主网只有两个区别:testnet币是毫无价值的,挖掘难度足够低,任何人都可以相对容易地使用testnet币)。  i  F0 \% I+ D* r8 Q

) R/ E( ~6 ?' }, m) I! k6 x    任何打算在比特币主干网上用于生产的软件开发都应该首先在testnet上用测试币进行测试。这样可以保护开发人员免受由于软件错误而导致的金钱损失,也可以保护网络免受由于软件错误导致的意外攻击。' i& k# B1 X$ Z* B+ w' H, M  H/ G

  X. [  L+ s7 s1 _1 N% Z    然而,保持测试币的无价值和易挖掘并不容易。尽管有来自开发商的呼吁,但还是有人使用先进的设备(GPU和ASIC)在testnet上挖矿。这就增加了难度,使用CPU挖矿不可能,导致获取测试币非常困难,以致于人们开始赋予其一定价值,所以测试币并不是毫无价值。结果,时不时地testnet必须被报废并重新从创始区块启动,重新进行难度设置。  l" V5 x4 w( _# h, c5 C  [
  K3 D; }8 c. R1 X: z% S
    目前的testnet被称为testnet3,是testnet的第三次迭代,于2011年2月重启,重置了之前的testnet网络的难度。9 {* g& b5 I% p

  b& p. z' E6 C  H/ O* `5 n    请记住,testnet3是一个大区块链,在2017年初超过20GB。完全同步需要一天左右的时间,并占用您的计算机资源。它不像主干网,也不是“轻量级”。运行testnet节点的一个好方法就是将其运行为一个专用的虚拟机镜像(例如,VirtualBox,Docker,CloudServer等)。
9 U- o0 ~2 V2 ~9 i
) t! v- h; G' @, K7 D# W2 w6 U0 b    9.9.1.1使用testnet
0 r$ W& w7 K/ Q3 s( _
! |7 c( F+ t+ N8 B1 |4 g  Y0 p    像几乎所有其他比特币软件一样,BitcoinCore完全支持在testnet网络运行而不是只能在主干网上运行,还允许您进行测试币挖矿并运行一个testnet全节点。6 Y9 u! I( E1 ]/ V* t8 D% x
: @* J7 U  Y( c. ?$ X; y5 @
    如果要在testnet上启动BitcoinCore,而不是在主干网启动,您可以使用testnet开关:5 J& h4 R- q6 W8 I* d* Y
% E0 z5 C8 J9 r$ m* l1 R
    $bitcoind-testnet
+ q- V( V  S: K4 n- X3 Y' S. d/ P. n( n# E, P* k2 C8 S
    在日志中,您应该会看到,bitcoind正在默认bitcoind目录的testnet3子目录中构建一个新的区块链:. ]; Q1 ?/ Y5 w6 u

1 \/ _- R$ J" s, N1 A* w# v* s    bitcoind:Usingdatadirectory/home/username/.bitcoin/testnet3
* L5 G# |2 @/ M/ U* I5 Y
! j3 _! y* i' E! D8 h    要连接bitcoind,可以使用bitcoin-cli命令行工具,但是要记得切换到testnet模式:8 ]0 Z& Y5 K/ G% W" J9 z

  1. 4 X5 ^, c9 }9 K  }% N2 L
  2. $ bitcoin-cli -testnet getinfo
      E+ C7 r2 Z' _  w0 u) B. f: m
  3. {
    5 U0 S8 u  ~, |3 ?
  4.   "version": 130200,4 E- j% D  D' k/ e# b; |
  5.   "protocolversion": 70015,' D4 k1 J% |) n/ o7 c
  6.   "walletversion": 130000,
    4 M- o2 J4 j3 p6 g: n$ ?
  7.   "balance": 0.00000000,0 w$ g4 ^( p* F9 u
  8.   "blocks": 416,
    0 `. b' i: d, i8 a- }& |% y- y; d
  9.   "timeoffset": 0,
    3 {8 x* s* P" }# v- G
  10.   "connections": 3,  B. A% D' g2 r! L2 g! a4 }' u8 _
  11.   "proxy": "",
    & F7 r) r/ L5 \1 ?. N% `% D  f+ G' `, ~
  12.   "difficulty": 1,4 L' ?$ `, n$ K7 H7 e
  13.   "testnet": true,3 z2 y+ O6 Q: D$ ~, b+ q
  14.   "keypoololdest": 1484801486,
    2 s  {+ G+ Y- [/ s; s: c
  15.   "keypoolsize": 100,
    4 W1 ^( S. l, _
  16.   "paytxfee": 0.00000000,
    : d: I( T' J& V7 U' U
  17.   "relayfee": 0.00001000,/ |. i6 d& s  ^" I( K. _' ]
  18.   "errors": ""
    2 ]$ u! C# g/ z+ a
  19. }
复制代码
3 ~! _3 J4 u& J! A) T2 E
您还可以使用getblockchaininfo命令确认testnet3区块链的详细信息和同步进度:
( j+ c) V3 `# A7 u. H7 A
  1. $ bitcoin-cli -testnet getblockchaininfo0 X0 f3 m* H! a
  2. / j, B, M( q; {9 s/ z% {& o! u' C
  3. {
    * B# |# L8 c. M5 j4 n7 j5 r
  4.   "chain": "test",
    4 B* O7 f, B6 a0 ~9 }
  5.   "blocks": 1088,
    2 {4 ]8 H9 r% f( X6 n
  6.   "headers": 139999,
    7 G8 H: N( I: X) v1 B
  7.   "bestblockhash": "0000000063d29909d475a1c4ba26da64b368e56cce5d925097bf3a2084370128",4 M" [+ S: f8 N/ k- h
  8.   "difficulty": 1,- j" A6 g9 j/ {# v  d( _3 `
  9.   "mediantime": 1337966158,# P0 w- |: e( h; y
  10.   "verificationprogress": 0.001644065914099759,
    % K. Y& j. G: p. y
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000044104410441",+ r4 T: s0 ^3 O6 Y! L) s; {0 I
  12.   "pruned": false,3 m$ X2 e  D1 B; V, l7 N/ t
  13.   "softforks": [
    5 W$ K; v. }4 q! `; s

  14. * {3 L8 x. g6 D. d1 O6 B
  15.   [...]
复制代码
  1. $ bitcoin-cli -regtest getblockchaininfo
    7 k" H% b) c. P' i7 `( j
  2. " Z/ |# f# C! }/ W. \
  3. {- u+ k1 s# \1 H. q9 T$ x
  4.   "chain": "regtest",- ~; n. f$ E4 p+ N( q$ J
  5.   "blocks": 0,* \( n% _; i) C+ h2 s9 L  ^4 s
  6.   "headers": 0,- t* Q: H- w7 a
  7.   "bestblockhash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"," V3 }% R* H9 ?2 u4 A! l
  8.   "difficulty": 4.656542373906925e-10,
    % z8 V: z( [$ Q% ?8 h+ ?
  9.   "mediantime": 1296688602,
    4 [) X! b. _+ [
  10.   "verificationprogress": 1,: x* V% r9 v+ B
  11.   "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",
    3 r/ L* k1 Z' z0 G6 c
  12.   "pruned": false,
复制代码
9 i9 ?6 i+ q" o! j" T
你可以看到,还没有任何区块。 让我们开始挖一些(500块),赚取奖励:) S7 {- y" x, \
  1. $ bitcoin-cli -regtest generate 500& V% Q6 B, {9 D4 U

  2. 7 ~! H5 O: k1 N8 D
  3. [+ S/ L* e) [% t7 |; h* c1 M7 L: d
  4.   "7afed70259f22c2bf11e406cb12ed5c0657b6e16a6477a9f8b28e2046b5ba1ca",5 m2 ]/ L7 e! J' K" J; L
  5.   "1aca2f154a80a9863a9aac4c72047a6d3f385c4eec5441a4aafa6acaa1dada14",
    8 Q' N4 M/ N8 N% ]( {- D7 }
  6.   "4334ecf6fb022f30fbd764c3ee778fabbd53b4a4d1950eae8a91f1f5158ed2d1",
    " Y1 A6 e* J6 c, x! P
  7.   "5f951d34065efeaf64e54e91d00b260294fcdfc7f05dbb5599aec84b957a7766",- T( U/ U% `5 t& m- P( X) k
  8.   "43744b5e77c1dfece9d05ab5f0e6796ebe627303163547e69e27f55d0f2b9353",
    2 ]. }5 E! |% n+ `2 f6 }3 S( M* O
  9.    [...]
    6 Q4 u' T4 h$ K4 [6 O" m
  10.   "6c31585a48d4fc2b3fd25521f4515b18aefb59d0def82bd9c2185c4ecb754327"
复制代码

2 t: v9 ^1 Z& t3 W& q, J( p& O* }/ l9 z7 d3 N6 u
9 T! f% q& y% n9 j
    挖掘所有这些块只需要几秒钟,这样就可以很容易地进行测试。如果您检查您的钱包余额,您将看到您获得了前400个区块的奖励(Coinbase的奖励必须挖满100块之后才能花费):
  t" f7 T, V& ]1 Y+ d
$ I+ w$ g- k. j; @0 I0 E/ J    $bitcoin-cli-regtestgetbalance; e+ m  E+ K2 j. G6 w  A
5 F* z- a- l( l+ `" d
    12462.500000005 T* p0 @  J  ]! H( F! g/ z

% u# F* b3 Y  j# b% [    5使用测试块链进行开发9 E1 j( F& Z6 }
1 h% N1 }5 x( F$ }/ ~' e
    Bitcoin的各种区块链(regtest,segnet,testnet3,以及主干网)为比特币开发提供了一系列测试环境。无论您是开发比特币核心还是另一个全节点共识客户端,诸如钱包,交易所,电子商务网站等应用程序,甚至开发新颖的智能合同和复杂的脚本等等,请使用测试区块链网进行开发。
; d) A& l, O6 l' u4 U* J- G2 c3 o/ a& j6 |. N0 G
    您可以使用测试区块链来建立开发管道。在开发它时,建议在本地测试代码。
  M1 ]7 D5 y, c
; m9 ?6 T) ~. H6 c    一旦您准备好在公共网络上尝试,请切换到testnet,将您的代码暴露在更加动态的环境中,并提供更多样化的代码和应用程序。
9 z6 ]2 k2 g3 Q- N$ i) D( B7 S# ~2 d5 E+ O
    最后,一旦您确信您的代码正常工作,请切换到主网以实现生产部署。  j2 U% v, c  ^* L# f& K7 ~

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

本版积分规则

成为第一个吐槽的人

青丝暮雪780 初中生
  • 粉丝

    0

  • 关注

    2

  • 主题

    11