SPVノードのサンプル的な実装です。以下のことができます。
- Walletの作成
- Wallet宛のTransactionの取得
- Blockヘッダの受信
- Walletから出金
あくまでサンプルなので、mainnetでの利用は想定していません。Bitcoinの紛失等が起きても責任は負いません。
- Ruby
- PostgreSQL
$ git clone https://github.com/kento1218/bitcoin-spv-sample.git
$ cd bitcoin-spv-sample
$ bundle install
$ createdb spvsample_development
$ bundle exec rake db:migrate
BlockをGenesisから取得すると遅いので、Blockヘッダを固めたファイルをロードします。
- https://bht-tech.net/bitcoin/blocks-test.bin.gz からtestnet用Blockヘッダをダウンロード
$ bundle exec rake load_blocks DATAFILE="blocks-test.bin.gzのパス"
を実行(約10分程度かかります)
$ bundle exec rake run_node &
$ bundle exec rake generate_addresses KEYFILE="どこか安全なパス"
を実行すると、アドレスを100個生成し、秘密鍵を指定したファイルへ保存します。鍵ファイルは管理に注意してください。
$ bundle exec rake get_address
を実行すると、未使用のアドレスを1つ表示します。
$ bundle exec rake get_balance
$ bundle exec rake pay_to_address ADDRESS="送り先アドレス" VALUE="金額 (satoshi)" KEYFILE="保存した鍵ファイル"
を実行すると、ウォレットから送金できます。