ビットコインピアと直接通信してみたい
タイトルでビットコインピアと直接通信してみたいと書いてみましたが、実はすでにアルトコインとはDNS Seedというサービスで通信しております。
ソースはこれ。
https://github.com/ohac/dnsseed-ruby
これはdnsseedというPHPで書かれているコードをRubyに移植したものです。
ただ、これで通信しているのは以下のような流れで、ほんの少ししかコマンドを使っていないのです。
- version, verack でバージョンと最大ブロック高を送受信
- getaddr で既知のピアの情報をもらう
一方、bootstrap.datを作成するためのblockchain2torrentというのがあります。
https://github.com/ohac/blockchain2torrent
これはRPCで通信しているので、自分で立ち上げたノードとしか普通は通信できません。
これは以下のRPCコマンドを使っています。
これら3つのコマンドをRPCなしで得られれば、自分でノードを立ち上げる必要がなくなります。
ノードが信頼できるかどうか分かりませんので、なんらかの基準を設けて選定し、さらに複数ノードでベリファイするような処理が必要ですが、実験やbootstrap.datを得るためだけであればあまり慎重にならなくてもよいかもしれません。
さらにbitcoin-abeやelectrum-serverを動かすには下記RPCコマンドも必要となります。
- bitcoin-abe, electrum-serverに必要
- electrum-serverに必要
- sendrawtransaction - 送金などのbroadcastで必要
- estimatefee - feeの計算で必要
- getinfo - relayfeeも見る必要がある
ここまでサポートできたらSPVが各種コアデーモンを立ち上げずに実現できるのでうれしいかもしれません。