New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SPV support #219

Open
jrick opened this Issue Mar 31, 2015 · 0 comments

Comments

Projects
None yet
1 participant
@jrick
Copy link
Member

jrick commented Mar 31, 2015

btcwallet should not only work with btcd, but other bitcoin nodes as well (Bitcoin Core and other alternate full node implementations) and should not require a user to set their own full node either locally or on another machine. In today's Bitcoin ecosystem, SPV is the accepted method of syncing wallets against both trusted and untrusted nodes on the network.

Tasks to complete this issue:

  • Refactor btcd peer code into a package usable by wallet to handle messages over the wire protocol (this will also handle connecting to the network, negotiating versions, etc.). This design is currently being planned out by @davecgh.
  • Find peers to connect to, if one was not specified, using btcd/addrmgr
  • Save known peers to the db (instead of serializing peers to a file in JSON format like btcd does)
  • Create bloom filters (btcutil/bloom) for active addresses and unspent outputs
  • Inform peers to respond to matching transactions with filterload
  • Reload filters for each new address generated, and perhaps periodically if the filter begins matching too many unrelevant transactions
  • Store block headers in the db
  • Validate merkleblocks
  • Decide which transactions in the merkleblock are relevant to the wallet
  • Make the RPC connection to btcd optional

cjepson added a commit to cjepson/btcwallet that referenced this issue May 2, 2016

Merge pull request btcsuite#219 from cjepson/cj_020516fixhang
Fix lockup relating to channel blocking
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment