在Eclipse下运行比特币全节点之二

动手篇

本篇讲如何在比特币TestNet上申请免费的BTC,如何在线查看交易。

最后,如何在Eclipse下运行bitcoinj的代码,建立Wallet、要钱(TxIn)、查钱包余额(dump),花费(TxOut)

 Project一览


上一篇我们用Maven导入bitcoinj之后,会在project视图下出现如图红框标出的project,简述如下:

Bitcoinj-parent是父目录,其他几个是:

Bitcoinj-core :不用说它就是所有全节点的功能实现。

Bitcoinj-examples:几个调用core的例子,

Bitcoinj-tool: 小工具(废话)

Wallettemplate则是一款图形化的Wallet,运行起来看这样的:

(用12个单词作为生成脑钱包的种子)



 

扫描二维码关注公众号,回复: 396341 查看本文章

这篇文章介绍了bitcoinj的个部分如何协同工作的:https://bitcoinj.github.io/how-things-fit-together

 检查网络

根据这篇帖子:https://groups.google.com/forum/#!topic/bitcoinj/DMOMWHBv5b4

我决定先运行 PeerMonitor, 探探可连接的其他节点。

修改line80行,将Mode由MainNet改为TestNet

		// params = MainNetParams.get();
		params = TestNet3Params.get();

 运行Main方法,效果见下图:


基本上,看到周围有可以连接的Peer,就算吃了个定心丸,知道可以继续下面的事情。


 生成钱包

运行Kit.java的main方法,会在本地目录下生成一个名为:"walletappkit-example" 的钱包。

注意,如果是首次运行,会阻塞在这行进行同步Block Chain的工作,控制台会不断输出同步进度。

        kit.startAsync();
        kit.awaitRunning();

我在一台i5的笔记本上同步共耗时: 2369801 毫秒, 即不到一小时.初始阶段同步区块总数信息:

Chain download 5% done with 275824 blocks to go, block date 2015-06-16T20:59:31Z

  

最后会打印一行与这个钱包关联的公开地址:

send money to: n1BkPrL72W4VjpGbZ2YEasWiqSr2GWGoN7

 有了这个地址,就可以去化缘了:)

获取免费测试币 

访问这个网址:http://tpfaucet.appspot.com/

填入你的要钱的地址,会每次送你0.017 BTC,注意人家希望用完之后归还到:n2eMqTT929pb1RDNuqEnxdaLau1rxy3efi

以方便后面的人继续用。

成功获取之后,访问以下的公开网址,看看是否到账:

https://testnet.blockexplorer.com/address/n1BkPrL72W4VjpGbZ2YEasWiqSr2GWGoN7

由于交易广播得相当快,基本上可以立即看到这笔送你钱的交易,

 

 但在没有打入Block之前,这笔交易的状态是: UNCONFIRMED, 耐心等几分钟,它被打包到Block Chain之后,确认数目就有了。

 

 

查看余额

然后在Eclipse下运行 DumpWallet,钱包文件的名字就是上面那个:walletappkit-example.wallet

dump这命令挺形象的,把钱包翻过来,看看里面每笔账:

咦!为师刚化的缘咋看不到?八戒你说说! ---师父,问猴子!

——师父,您需要同步下BlockChain信息啦,再次运行Kit就好。好吧,看到了:

>>> UNSPENT:
Sends 0.00 BTC and receives 0.017 BTC, total value 0.017 BTC.
  93b0b7c7d93b82c782fe4fc875d96835c57434d81806c778c9f18ae33a029549
  confidence: Appeared in best chain at height 743264, depth 14.
  time locked until block 743253
  opts into full replace-by-fee
     in   PUSHDATA(71)[3044022020f257560321d2eb65564dbd0c8356544f81a5239445394e42f5e6b54c7bdf5c022023182265012097634cc0c0732eb6a271d9cf868ab32bda84df32ce0814cd388401] PUSHDATA(33)[03312c21eaec8e40ba16ae333f53f5146953e9af61b4dcf3f0c11d72c069afea28] 1.97616516 BTC
          outpoint:b9014701997ec9766e672616304b11752860104fb21d8f7bd13887d310af4cac:1 hash160:e5611ed3aa4b454aae788713eae355e318a60f88
          (has sequence, opts into full RBF)
     out  DUP HASH160 PUSHDATA(20)[7de84c6ff0b2e9b6efda94cdf54476a4ffef0019] EQUALVERIFY CHECKSIG 1.95904247 BTC
     out  DUP HASH160 PUSHDATA(20)[d7c0adc2199ab8c05f6403da3b456dd894f94337] EQUALVERIFY CHECKSIG 0.017 BTC
     fee  0.00054528 BTC/kB, 0.00012269 BTC for 225 bytes
     prps UNKNOWN

花钱

运行SendRequest 可以把钱花出去,做两个简单的代码改动:

line42,将钱包名字改成上面那个同名:

		WalletAppKit kit = new WalletAppKit(params, new File("."), "walletappkit-example");

 line51: 没那么多钱,少花点:

		Coin value = Coin.parseCoin("0.009");

 line55: 送回给施主:

		Address to = Address.fromBase58(params, "n2eMqTT929pb1RDNuqEnxdaLau1rxy3efi");

 改好之后运行,会打印一条交易的hash:

coins sent. transaction hash: b63046fd1a7f4cff1948207f60072c4218321ce583263d96de4b73c9f7157b6d

 用这条hash去楼上那个公开网址检索:

 

 

 再dump本地的钱包:

>>> UNSPENT:
Sends 0.017 BTC and receives 0.00795 BTC, total value -0.00905 BTC.
  b63046fd1a7f4cff1948207f60072c4218321ce583263d96de4b73c9f7157b6d
  confidence: Appeared in best chain at height 743279, depth 1.
     in   PUSHDATA(72)[3045022100f3e937ab19e8893a06e0761872837ce4e7e3aa22062eda8513a298edd5ed4b0d02207a11a0663105c8d4f7a70da283caec72c03086faa27e80bcdf7f45a085393b4d01] PUSHDATA(33)[03686221d30de645ef53588c6454403d0bf336980592b1a22ce697dc582cf10679] 0.017 BTC
          outpoint:ce1e5d13246befbfcddd636041719560ea2358093c157c34d3ab13aea3c3d91f:0 hash160:e17b8e9296c8267f38aa6b3ef92881cc68572cce
     out  DUP HASH160 PUSHDATA(20)[3f5de630a7f2bac6c11c92942940a76c80dc85b6] EQUALVERIFY CHECKSIG 0.00795 BTC
     out  DUP HASH160 PUSHDATA(20)[e7c1345fc8f87c68170b3aa798a956c2fe6a9eff] EQUALVERIFY CHECKSIG 0.009 BTC
     fee  0.00022123 BTC/kB, 0.00005 BTC for 226 bytes
     prps USER_PAYMENT

 少了-0.00905 BTC,其中那个5是当着交易费,在打包请求时设定的。

猜你喜欢

转载自chen4w.iteye.com/blog/2286504