Skip to content

SPV support #219

Open
Open
@jrick

Description

@jrick

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions