SPVモードで自分のウォレットと関係ある取引だけ同期したい場合のやりとりを求める

技術メモ

今日は SPVモードで自分のウォレットと関係ある取引だけ同期したい場合のやりとりを求めてみる。

関係ある取引だけしたい場合は、filterloadを使うと思われる。

自信はないが以下2つの答えで迷っている。

S:version,R:verack,R:version,S:verack,S:filterload,S:getheaders,R:headers,{S:getdata,R:merkleblock}

もしくは

S:version,R:verack,R:version,S:verack,S:filterload,{S:getdata,R:merkleblock}

getheadersが必要なのかどうか。

上から順に解説していくと

version, verack
こちらは前回の記事でも記載していたので割愛。

filterload
BIP37を訳してくれているページ

filterloadのコマンドを実行すると、bloom filterで関連付けられたブロックのみ送られるようになる。
ここでわからないのが、いきなり getdata でよいのか、getblocks, getheaders を送信しなければあとの merkleblock は受信できないのかどうか。

この辺りは次回、なにかwalletソースを動かすか、サーバーソース見てみる。

そのあと、getdata を MSG_FILTERED_BLOCK (== 3) オプションでおくって
merkleblock を受けつける、、、はず。
特に順番に言及していないので実際の挙動見てみないとわからなさそう。

[追記]
S:version,R:verack,R:version,S:getheaders,R:headers,S:filterload,
{S:getblocks,R:inv,S:getdata,R:merkleblock,R:tx}
だそうです。

Sponsored Link
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


仮想通貨全般
TendermintをDocker使って起動してみる

以前、勉強会に行ってきた際にTendermintの事を聞いて ブロックチェーンプロトコルが実装できる …

仮想通貨全般
Bitcoinのdifficultyを決めるnBitsを理解する

マイニングする際の理解を深めようと思い、マイニング難易度(difficulty)を決めるnBitsに …

仮想通貨全般
EOS Night Meetupにいってきた

今回は、以前からEOSに興味があったので EOS Night Meetupにいってきました。 暗号通 …