chaintope / bitcoinrb

The implementation of the bitcoin protocol for ruby.
MIT License
61 stars 19 forks source link

SPV node does not receive tx message for addresses in wallet. #18

Closed Yamaguchi closed 6 years ago

Yamaguchi commented 6 years ago

I have some keys in my spv wallet (testnet). these are added bloom filter and watch_targets when connection is established.


...(connect peer)...

irb(main):019:0> spv.wallet.watch_targets.first
=> "5c41d00108478898102f5d3ce24c1b94bdd17efe"

irb(main):021:0> extkey = spv.wallet.accounts.first.derived_receive_keys.first
=> #<Bitcoin::ExtPubkey:0x007f9d4a950cd8 @ver="045f1cf6", @depth=5, @parent_fingerprint="a98946f5", @number=0, @chain_code="-*~$r\x9A,)16\x9C\xD2\xB3\xC3\xBA\x100\x81C\xCA\xCDq\x95p\xAC%\x7F\xE1Q\xC0Z\x19", @pubkey="035519a8837c17b239464f788fc05dee5ef3ff6a198374235a934920d50dc524b8">

irb(main):022:0> extkey.addr
=> "tb1qt3qaqqggg7yfsyp0t57wynqmjj7azlh7dlxugs"

irb(main):029:0> extkey.hash160
=> "5c41d00108478898102f5d3ce24c1b94bdd17efe"

when I send bitcoin to tb1qt3qaqqggg7yfsyp0t57wynqmjj7azlh7dlxugs, spv node did not receive any tx message.

https://testnet.blockchain.info/tx/ddcefb20c48131f9c985a374fc39f595408ebe3b62f8bafae141dea1392fa40e

output script is :

0[] PUSHDATA(20)[5c41d00108478898102f5d3ce24c1b94bdd17efe]

I'm afraid that reversing addresses is not required when adding them to bloom filter

def setup_filter
  @bloom = Bitcoin::BloomFilter.create_filter(512, 0.01)
  wallet.watch_targets.each{|t|bloom.add(t.htb.reverse)} if wallet
end