BitcoinプロトコルをGo言語で少し書いてみた

前回、ビットコインピアと直接通信してみたいという話をしました。

ohac.hatenablog.com

今回はdnsseed-rubyの一部をGo言語に移植して、通信するところまで作成してみました。 プロトコルは下記サイトを参照。エンディアンが入り乱れていて、コーディングしにくかったです。

Protocol documentation - Bitcoin Wiki

以下のgistがソースコード。 ライブラリとかすでにありそうだけど、何も見ずに作りました。(dnsseed-rubyは見てます。) ライセンスはdnsseedと同じにしようと思います。

fake-coind.go · GitHub

以下、実行例。あ、ちなみにビットコインじゃなくてモナーコインで試しています。

$ go run fake-coind.go 
xx.xx.xx.xx
version 104
more data 1 [1]
/Satoshi:0.10.2.2/ 70003 692751
verack 0
alert 165
ping 8
inv 37
1
1
inv 37
1
1
inv 37
1
2
62804b60c5242c9882db6d28a83e0bb87be220d38dee863361edb6ffe890f09f

こんな感じでブロックのハッシュが届きます。

Insight でちゃんとあるかどうか確認するとよいと思います。

Go言語なのでコンパイルすればWindowsでも動くと思います。 試していませんが。

次は実際にブロックをダウンロードできるようにして、さらに並列ダウンロードに対応して bootstrap.dat の高速生成なんかができたらいいなぁと妄想しています。

最終的には electrum-server のお供にできるようにしたいです。

にほんブログ村 その他生活ブログ 仮想通貨へ
にほんブログ村