ビットコインのブロックエクスプローラーにコマンドラインツールからアクセスする

# モチベーション

ビットコインのブロックチェーンにアクセスするにはbitcoindを入れてコマンドラインを叩くか
webブラウザを開いてポチポチGUIでやるかのどちらかです
コマンドラインからアドレスの残高を調べたり、トランザクションの内容を確認するのを
手軽にやりたかったので作りました

# 環境

前提としてnode.jsをインストールする必要があります。
動作確認はbash on ubuntu on windows, linux, macosのみで行っています。
ブロックエクスプローラーinsightに接続します（デフォルトではinsight.bitpay.com）

## インストール

```
sudo npm i -g insight-cli
```

# 使い方

insight-cli コマンド オプション

## オプション

* blocksummary
* tx
* balance
* utxo
* stream
* streamfull



## ブロックの要約情報

* 最後にブロックが発掘されてからどのくらい経過したか
* 直近２０件の平均など

```
$ insight-cli blocksummary

======= blockexplorer ========
host: https://insight.bitpay.com/api
======= last block info ========
date: 2016-10-31 20:43:05
block height: 436755
block age: 15 min
tx size: 999972 byte
tx count: 566
======= 20 block average ========
block age: 13 min
tx size: 983060 byte
tx count: 2140
```

## トランザクション情報


```
$ insight-cli tx 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098

{
  "txid": "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098",
  "version": 1,
  "locktime": 0,
  "vin": [
    {
      "coinbase": "04ffff001d0104",
      "sequence": 4294967295,
      "n": 0
    }
  ],
  "vout": [
    {
      "value": "50.00000000",
      "n": 0,
      "scriptPubKey": {
        "hex": "410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac",
        "asm": "0496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858ee OP_CHECKSIG",
        "addresses": [
          "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX"
        ],
        "type": "pubkeyhash"
      },
      "spentTxId": null,
      "spentIndex": null,
      "spentHeight": null
    }
  ],
  "blockhash": "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048",
  "blockheight": 1,
  "confirmations": 436757,
  "time": 1231469665,
  "blocktime": 1231469665,
  "isCoinBase": true,
  "valueOut": 50,
  "size": 134
}
```

## アドレスの残高を確認する

```
$ insight-cli balance 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX

{
  "addrStr": "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX",
  "balance": 0.04299071,
  "balanceSat": 4299071,
  "totalReceived": 0.04299071,
  "totalReceivedSat": 4299071,
  "totalSent": 0,
  "totalSentSat": 0,
  "unconfirmedBalance": 0,
  "unconfirmedBalanceSat": 0,
  "unconfirmedTxApperances": 0,
  "txApperances": 45
}
```

## 未使用トランザクション一覧

```
$ insight-cli utxo 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX

[
  {
    "address": "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX",
    "txid": "0f0e6be0dcaa7a4f7a351033d48a0c5dbfe34e3a81596c66c684b102fe104edc",
    "vout": 0,
    "scriptPubKey": "76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac",
    "amount": 0.00287646,
    "satoshis": 287646,
    "height": 436749,
    "confirmations": 10
  },
  {
    "address": "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX",
    "txid": "48e76c0ba8b766a2e1ba0ad3ddb9a510fe1410fbcf5c76d9e5cb231c25c05a78",
    "vout": 2225,
    "scriptPubKey": "76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac",
    "amount": 0.00062175,
    "satoshis": 62175,
    "height": 436683,
    "confirmations": 76
  },
  {
    "address": "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX",
    "txid": "f684914938dedf40b64eaaeccddfed6e9a830b3f2505aa576b826593d43391cc",
    "vout": 0,
    "scriptPubKey": "76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac",
    "amount": 0.0000175,
    "satoshis": 1750,
    "height": 425802,
    "confirmations": 10957
  },
  {
    "address": "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX",
    "txid": "fda45dc723ff174cd2c8cfd3dd42d3c8fd20f18f3fc5dc16913e3283b6195471",
    "vout": 0,
    "scriptPubKey": "76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac",
    "amount": 0.00156973,
    "satoshis": 156973,
    "height": 420000,
    "confirmations": 16759
  },
  {
    "address": "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX",
    "txid": "d6be34ccf6edddc3cf69842dce99fe503bf632ba2c2adb0f95c63f6706ae0c52",
    "vout": 1,
    "scriptPubKey": "76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac",
    "amount": 0.02,
    "satoshis": 2000000,
    "height": 127659,
    "confirmations": 309100
  }
]
```

## ストリームモード

* socket-ioで接続してリアルタイムにトランザクションとブロックが表示されます

```
$ insight-cli stream

New transaction received: 40314ce18ae2d44bcd4c22f1a7f7cded32aaf3ab9a4ad89e114a57c0513aa210
New transaction received: 39a6828a0287ecb1a283b7d0d0ef1c9fc77d6f1e796fc4992c73a49283cbc2bd
New transaction received: dd6d51c3457ebce2a4fbcb81481d1d4bd59ea4d7e0cb53a668e3d6b0dd546eb6
New transaction received: fcaef02092bc67c51090c5f29a0ffe1cb473c0f04973addadc624ccd7da659ca
New transaction received: 89188a4ff71d598c390afd9f95ecb202486b79b8925c9b2c8852b39243c9daf1
New transaction received: 0fd706a7a0a83ead1fb6e80452ba517a9a26dd146e7fc6d0be80d1183a19e1d0
New transaction received: 2ed30a27f9557b7d0e49691285750bd6617f2e8cd9eca370aaaf733d242c6f47
New transaction received: 78b35b0c0d26e37525c424da09c54a60a61e75c7b8e0ab203f57b14b41e71d31
New transaction received: e01f7a4a26ce58512d6f4fcf95438e80ca1de71ea12fcd4070f056d4ad3f2ae9
```

## ストリームモードフル

* socket-ioで接続してリアルタイムにトランザクション詳細とブロックが表示されます
* 流れるデータを整形していないのであとで表示変わる可能性あり

```
$ insight-cli streamfull

New transaction received: 9ab8f746f3325d8142f44b861b141b4b1b3867e40e4fbe7cb9044d29599dce96
{ txid: '9ab8f746f3325d8142f44b861b141b4b1b3867e40e4fbe7cb9044d29599dce96',
  valueOut: 0.0296,
  vout: [ { '13eh4wPLe1nCsh8FXJNpL6e9D1edWNT1Ub': 2960000 } ],
  isRBF: false }
New transaction received: 23fa1ef1df3bc2cb5a8b05ec75da1d597133c539e18d144a52b1e14300f03fc2
{ txid: '23fa1ef1df3bc2cb5a8b05ec75da1d597133c539e18d144a52b1e14300f03fc2',
  valueOut: 32.93531199,
  vout: 
   [ { '1Pvs4Bvw6vbrq21KvU8Xg1dDets32gLsA4': 378470000 },
     { '1wiPuQiZEoZ7MxdiNbj4yQhDY8in1Sozp': 9551125 },
     { '16erznpzJzj9om3RAE6G97au8DZ1pF1Kw7': 680144555 },
     { '15c2ftSY1P8B6qdePUnewe8WJYL2NwVqKd': 14353100 },
     { '13P2TFoXe5ELhWS5qx4Chtz9WageJ4asc9': 2211012419 } ],
  isRBF: false }
New transaction received: d58f146c0bbda33c58e3593cdda96c68d6480bee22c54e2b7e8615d9696ec7d9
{ txid: 'd58f146c0bbda33c58e3593cdda96c68d6480bee22c54e2b7e8615d9696ec7d9',
  valueOut: 0.0895072,
  vout: 
   [ { '1LvWxFwEgx9QkryCuGjkpGLwYx7inN7C2P': 720 },
     { '1Lp5kptcu9XXgRzKXYnjVztYXAUXCgfGQL': 8950000 } ],
  isRBF: false }
```


# その他

自前のinsightや他のコインのinsightに接続先を変更する場合には
環境変数INSIGHT_URLを指定します
以下は例としてdashのinsightに接続する場合です。

```
INSIGHT_URL="https://insight.dash.siampm.com/api" insight-cli blocksummary
```