Bitcoin(Mainnet, Testnet)への接続方法

Bitcoinへの接続環境をMacにインストールし、ネットワークに接続する方法です。

用語

  • Mainnet...実際に市場で取引されるBitcoinデータが格納されているBlockchain
  • Testnet...開発のためのBlockchainネットワーク。TestnetのBitcoinならばネットで無料で手に入る。
  • Blockchain...Bitcoinの取引記録。BitcoinP2Pネットワークに参加している全てのノードが同一のデータを持つ

何が出来るか

取引所でBitcoinを購入するなど単純にBitcoinの売り買いをしたり、Bitcoinで投資をしてみたり、友人に送金してみたり、といったことは、下記に記載するような、Bitcoinへの接続環境をローカルに作らなくても問題なく行えます。

ただ、自分でBitcoinウォレットを作ってみたり、取引所を作ってみたり、他にもBitcoinを用いたアプリケーションを作ってみたり、(あまり現実的ではないですが)個人でマイニングを行ったりする際には、このような環境構築が必要になってきます。

また、実際に手元で動かしてみることで、Blockchainとはどういうものかというのが実感として理解出来ると思います。

インストール

Githubからインストールしてビルドするか、公式サイトから最新版をインストールしてください。 https://bitcoin.org/ja/download

公式サイトからのインストールの場合、dmgファイルからダウンロードするとBitcoin-QtというGUIアプリケーションがインストールされると思います。

私は今回は、tar.gzファイルをダウンロードして展開、最低限必要な、 bin/bitcoindbin/bitcoin-cli/usr/local/bin/シンボリックリンクを貼ることでセットアップを行いました。

Bitcoinの動作確認

bitcoind -daemon コマンドを入力して、 Bitcoin server starting と返って来たら問題なく起動出来ています。
一旦、 bitcoin-cli stop で停止します。

設定

$HOME/Library/Application Support/Bitcoin/bitcoin.conf ファイルを作成します。
このディレクトリ内にblock情報などが保存されていきます。

bitcoin.confの記載は今回下記のようにしました。

詳しい書き方は公式Wikiをご覧ください。 BitcoinWiki (Bitcoin.conf Configuration File)

testnet=3
server=1

rpcuser=bitcoinrpc
rpcpassword= <<password>>
rpcallowip= <<allowIP>>
rpcport=8332

bitcoindはRPCサーバとして起動するため、外部から接続する場合は allowip などの設定が必要になってきます( server=1 でRPC接続を許可するようです)。

また、 testnet=3 と記載することにより、testnetに接続するよう設定しています(3というのは現在の最新バージョンです)
mainnetと接続する場合には、 testnet の記載をしなければ自動的にmainnetに接続すると思います。

なので、この設定ファイルで接続するnetworkを変更することになります。 (起動時に、 bitcoind -testnet と、オプションをつけることでもtestnet接続が可能になります)

testnetへの接続

さて、設定ファイルを書き換えた段階で、もう一度bitcoindを立ち上げて、接続します。
そのままいくつか、 bitcoin-cli というコマンドラインツールを使って立ち上がっているBitcoinと対話を行ってみます。

bitcoin-cliで提供されているAPIの詳細は公式Wikiをご覧ください Original Bitcoin client/API calls list

アドレスとアカウントの関係は、1つのアカウントに対して複数アドレスが作成所有される、という関係性です。
残高の単位は、アカウントごとであり、これは、Bitcoinを受け取る際にあるアカウントに所属する新しいアドレスを発行してそのアドレスで受け取ることにより、個人の特定を避ける、といった意味合いになっているかと思われます。

$ bitcoind -daemon  // 起動コマンド
Bitcoin server starting

$ bitcoin-cli getinfo  // blockchainの情報を取得
{
  "version": 120100,  //version
  "protocolversion": 70012,
  "walletversion": 60000,
  "balance": 12.49739739,  //
  "blocks": 870042,  // 現在同期済みの最新ブロック
  "timeoffset": 0,
  "connections": 3,
  "proxy": "",
  "difficulty": 1,
  "testnet": true,  // trueになっていたらtestnetに接続中
  "keypoololdest": 1452476315,
  "keypoolsize": 100,
  "unlocked_until": 0,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
}

$ bitcoin-cli getnewaddress <<アカウント名>> //新しいアドレスを作成
<<new address>>

$ bitcoin-cli getaddressesbyaccount // アカウントに所属するアドレスのリストを表示
<<address1>>
<<address2>>
<<address3>>

$ bitcoin-cli getbalance <<アカウント名>>  // アカウントが保有するBitcoin残高を表示
30.25

$ bitcoin-cli encryptwallet <<passphrase>>  // 送金する際のpassphraseを登録

$ bitcoin-cli walletpassphrase <<passphrase>>  // unlockする

$ bitcoin-cli  sendtoaddress <<to address>> <<send amount>>  // 送金する

以上、bitcoindにコマンドラインからアクセスして、基本的な動作を行う、というところを見ていきました。