public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: Wladimir <laanwj@gmail•com>
To: "Jorge Timón" <jtimon@monetize•io>
Cc: Bitcoin Development <bitcoin-development@lists•sourceforge.net>
Subject: Re: [Bitcoin-development] Plans to separate wallet from core
Date: Tue, 24 Jun 2014 11:07:16 +0200	[thread overview]
Message-ID: <CA+s+GJBT9u+LMqTfrTwUQrGbnrqj2u==1kmx17uQyY8899O8sw@mail.gmail.com> (raw)
In-Reply-To: <CAC1+kJOQ2uBo2peYKZJyPSQL6qzk6Yu-cF-tPs3GzVS6cAc53w@mail.gmail.com>

On Mon, Jun 23, 2014 at 10:15 PM, Jorge Timón <jtimon@monetize•io> wrote:
> On 6/23/14, Wladimir <laanwj@gmail•com> wrote:
>> It's least surprising if the wallet works as a SPV client by default.
>> Then, users can use it without first setting up a core. Thus the idea
>> would be to use P2P primarily.
>
> So first bitcoind will support SPV mode then we separate the wallet?
> Are the core and the wallet share any code (say, the p2p messages via
> a sub-repo or something)?

Yes, they will share code. At least the basic data structures and
serialization and deserialization. Probably also part of the network
code and utilities like argument parsing (although that's not a hard
requirement - it may be an opportunity to do things better).

So part of Bitcoin Core will have to be turned into a library or
libraries. Movement toward this is already in progress for a while.

>> There could be a mode to use a trusted core by RPC for
>> mempool/conflicted transaction validation and such. But I'm not sure
>> about this - as we've seen, pure-SPV wallets work pretty well. If you
>> want it to act as an edge router you can point a SPV wallet at your
>> trusted core as well.
>
> I thought we would first separate wallet from core (maintaining the
> full-node wallet status) and then implement an optional SPV mode for
> the core (and transitively for "qt-wallet", which would support both
> full and SPV mode).

We want to move away from "full node wallets". In the beginning it
made some sense to jump-start the network, but the more the chain
grows the less unwieldy they become.

My main argument for the split is that full nodes and wallets have
completely different usage scenarios:

- A wallet should be online as little as possible, ideally only when
you do transactions or want to check for them.

- A full node should be online 24/7 or it is virtually useless to the network.

>> There are no plans for adding Electrum-like functionality to bitcoind.
>> There is already Electrum. Let's not reinvent any wheels.
>
> I'm sorry, but I still don't know what Electrum has to do with all this.

I suggest you look at the interface for Electrum. It probably does
exactly what you expected the interface between the Bitcoin Core
wallet and Bitcoin Core to become. Electrum server keeps some extra
indices that can be queried by the wallets. It already exists!

But IMO this is a passed stage. SPV wallets w/ Bloom filtering can
work without any special servers, so why require a 'close binding' to
a trusted bitcoin core?

(As said - I'm fine with optional close binding to a core using RPC
with slight security benefits like utxo queries and conflicted
transaction checking, and to get the dynamic fee data, but it should
not be required)

>> It does not need to keep a full chain database. But it needs its own
>> record of the chain, headers-only + what concerns the keys in the
>> wallet.
>
> Why cannot consume that data from a bitcoind node that always run alongside it?

To not require having a bitcoind node always running alongside it.

Wladimir



  reply	other threads:[~2014-06-24  9:07 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-23  9:50 Jorge Timón
2014-06-23 10:32 ` Wladimir
2014-06-23 20:15   ` Jorge Timón
2014-06-24  9:07     ` Wladimir [this message]
2014-06-24  9:44       ` Wladimir
2014-06-24 13:24         ` Thomas Voegtlin
2014-06-24 15:33       ` Justus Ranvier
2014-06-24 16:40         ` Jorge Timón
2014-06-25  5:43           ` Wladimir
2014-06-24  9:11     ` Mike Hearn
2014-06-24  9:40       ` Wladimir
2014-06-24 10:12         ` Mike Hearn
2014-06-24 11:29       ` Jorge Timón
2014-06-24 11:48         ` Tamas Blummer
2014-06-24 13:26           ` Jorge Timón
2014-06-24 13:37             ` Pieter Wuille
2014-06-24 11:58         ` Wladimir
2014-06-24 12:16           ` Mike Hearn
2014-06-24 12:41             ` Wladimir

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CA+s+GJBT9u+LMqTfrTwUQrGbnrqj2u==1kmx17uQyY8899O8sw@mail.gmail.com' \
    --to=laanwj@gmail$(echo .)com \
    --cc=bitcoin-development@lists$(echo .)sourceforge.net \
    --cc=jtimon@monetize$(echo .)io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox