< bitcoin-git>
bitcoin/master 7063401 clashicly: Elaborate on the need to re-login on Debian-based systems to use tor follo...
< bitcoin-git>
bitcoin/master a199f75 fanquake: Merge #16857: doc: Elaborate need to re-login on Debian-based after usermo...
< bitcoin-git>
[bitcoin] fanquake merged pull request #16857: doc: Elaborate need to re-login on Debian-based after usermod for Tor group (master...patch-1) https://github.com/bitcoin/bitcoin/pull/16857
< bitcoin-git>
[bitcoin] fanquake opened pull request #16861: doc: Remove release note fragment from #16639 (0.17...remove_release_note_fragment) https://github.com/bitcoin/bitcoin/pull/16861
< bitcoin-git>
bitcoin/master f390d85 Steven Roose: Prevent UpdateTip log message from being broken up
< bitcoin-git>
bitcoin/master fb4f5be Wladimir J. van der Laan: Merge #16854: Prevent UpdateTip log message from being broken up
< bitcoin-git>
[bitcoin] laanwj merged pull request #16854: Prevent UpdateTip log message from being broken up (master...log-break-updatetip) https://github.com/bitcoin/bitcoin/pull/16854
< bitcoin-git>
[bitcoin] darosior opened pull request #16863: NIT: Add a missing closing parenthesis in the bitcoin-wallet's help (master...bitcoin_wallet_nit) https://github.com/bitcoin/bitcoin/pull/16863
< bitcoin-git>
[bitcoin] soroosh-sdi opened pull request #16865: test: add some unit tests for merkle.cpp (master...13-09-19-merkle-unit-tests) https://github.com/bitcoin/bitcoin/pull/16865
< meshcollider>
#startmeeting
< lightningbot>
Meeting started Fri Sep 13 19:00:33 2019 UTC. The chair is meshcollider. Information about MeetBot at http://wiki.debian.org/MeetBot.
< gribble>
https://github.com/bitcoin/bitcoin/issues/16341 | Introduce ScriptPubKeyMan interface and use it for key and script management (aka wallet boxes) by achow101 · Pull Request #16341 · bitcoin/bitcoin · GitHub
< instagibbs>
sipa, haha
< instagibbs>
oh yeah #16341: I'd really like that in in not forever. It's a lot of manual looking, but not hard to track imo
< gribble>
https://github.com/bitcoin/bitcoin/issues/16341 | Introduce ScriptPubKeyMan interface and use it for key and script management (aka wallet boxes) by achow101 · Pull Request #16341 · bitcoin/bitcoin · GitHub
< meshcollider>
lol
< luke-jr>
I have to go get kids at school, but how about #15987
< achow101>
although, looking at it gives me an idea: what if we used a bloom filter for descriptor wallet ismine rather than generating and loading every scriptpubkey?
< meshcollider>
Basically none of these PRs have any review yet so if you want one of these in, go review it :)
< instagibbs>
false positives lol
< jonatack>
meshcollider: PR #16822 is tagged for 0.19
< sipa>
achow101: you'd generate the bloom filter on the fly from the scriptPubKeys i guess, still?
< achow101>
on second thought, it probably wouldn't work. we still need a map of scriptPubKeys to descriptor indexes in order to be able to get the keys to sign them
< sipa>
and false positives are not a problem; you do a full check for every match
< achow101>
is it really that much benefit to have both a filter and all of thes scriptpubkeys?
< sipa>
it may be much faster
< sipa>
though, that's a question for later
< achow101>
yes
< sipa>
just having an explicit set of scriptPubKeys to IsMineness will be much faster than the current IsMine logic already
< instagibbs>
good point
< achow101>
yes
< achow101>
although now I kinda want to know how long it takes IsMine to check that 2 GB testnet wallet that may or may not still exist
< meshcollider>
Just checking whether a key is in a map is not that slow is it?
< achow101>
I think std::map is O(nlog(n))
< instagibbs>
log(n) access...
< sipa>
std::unordered_map is O(1) (ignoring the fact that pointer size eventually has to grow O(log n) with the size of the table)
< meshcollider>
Yeah that's a hash map right sipa?
< achow101>
instagibbs: oh right. std::map is log(n) everything
< meshcollider>
So I think an unordered_map of your scriptPubKeys is efficient enough without worrying about filters or whatever
< achow101>
cool. I hadn't realized c++ actually provided a hash map
< tryphe>
unordered map averages amort O(1) for operations, which can initially be O(n), but ordered map is always O(log n), so it really depends on how you use it.
< instagibbs>
we're using chains of addresses we control, so hash collisions should be extremely rare?
< achow101>
tryphe: it depends on whether there are collisions, no? or resizing, but size can be set initially
< achow101>
not that it really matters, whatever we use will be faster than current IsMine
< tryphe>
achow101, iirc, it does something to prevent collisions (maybe i am thinking of just QHash<>),, but i think you are right
< meshcollider>
Yeah I think the O(n) is only the case where all n elements have the same hash and it has to linearly search through them all
< sipa>
indeed
< achow101>
let's just tell it to use sha256 :p
< sipa>
we use salted siphash for hashmaps elsewhere
< instagibbs>
more than sufficient considering wallet will control inputs
< sipa>
which is just as good as sha256 truncated to 64 bit output
< instagibbs>
(I think)
< achow101>
instagibbs: people could import some weird shit
< instagibbs>
SFTL :P
< achow101>
actually, that wouldn't matter since each import would be its own scriptpubkeyman and thus have it's own map
< meshcollider>
If people want to slow their own wallet down deliberately, let them :p
< instagibbs>
actually it's a reasonable point, never know how people are going to use thew allet
< meshcollider>
So anyway yeah in terms of PRs for 0.19, any other begs for review?
< meshcollider>
Nothing seems particularly pushed-for at the moment
< meshcollider>
And any other topics for today?
< achow101>
any suggestions for having the gui inform the wallet that it's done loading transactions?
< achow101>
context: the stuff I'm working on to not load every tx into memory
< achow101>
the gui does some thing where it reads through every txout in order to build the transactions list. i would like it to not hammer the disk so it should do it when the transactions are initially loaded into the wallet before they are kicked out later
< meshcollider>
It just does it once right
< achow101>
yes
< meshcollider>
I don't know off the top of my head but can't you do a callback thingy
< bitcoin-git>
[bitcoin] jnewbery opened pull request #16866: [wallet] Rename 'decode' argument in gettransaction method to 'verbose' (master...2019-09-change-gettransaction-arg-name) https://github.com/bitcoin/bitcoin/pull/16866
< achow101>
I guess I could just use a signal. there's some things with async that I'm not sure about (GUI has it's own thread, so may be ready before wallet is?)
< achow101>
any other topics?
< meshcollider>
Doesn't look like it :)
< meshcollider>
#endmeeting
< lightningbot>
Meeting ended Fri Sep 13 19:39:20 2019 UTC. Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4)
< bitcoin-git>
[bitcoin] kristapsk opened pull request #16869: Add missing walletconflicts to the help output of gettransaction and listtrasactions (master...help-walletconflicts) https://github.com/bitcoin/bitcoin/pull/16869
< bitcoin-git>
[bitcoin] fanquake closed pull request #16869: Add missing walletconflicts to the help output of gettransaction and listtrasactions (master...help-walletconflicts) https://github.com/bitcoin/bitcoin/pull/16869
< bitcoin-git>
[bitcoin] fanquake opened pull request #16870: build: update boost macros to latest upstream for improved error reporting (master...pull_upstream_boost_m4) https://github.com/bitcoin/bitcoin/pull/16870