< meow>
i was wondering if i wanted to test myself and make a simple bitcoin app that is a website which allows you to enter an address and then list all the addresses that have sent the given address bitcoin, how would i go about doing this at a high level?
< sipa_>
try #bitcoin or #bitcoin-dev... bitcoin core can't do this
< meow>
ok ty
< sipa_>
(it doesn't have a model of 'addresses that send', only wallets)
< bitcoin-git>
[bitcoin] gmaxwell opened pull request #9319: Break addnode out from the outbound connection limits. (master...addnode_own_count) https://github.com/bitcoin/bitcoin/pull/9319
< paveljanik>
sipa_, restarting bitcoind, it was started at 13:17:26 and Import mempool run at 13:18:40, ie. more than one minute after the new start. Is this as designed? I was even able to getmempoolinfo in between...
< sipa_>
paveljanik: it runs after connecting blocks on disk
< paveljanik>
sipa_, yes.
< paveljanik>
I have added some debugging
< paveljanik>
load speed here is 1000 tx per 10seconds...
< Chris_Stewart_5>
How is OP_0 handled inside of a witness, because it is an empty byte vector when actually placed onto the stack? Is it replaced some where in the serialization code from 0x00 -> []?
< luke-jr>
0x00 has always been []
< sipa_>
OP_0 produces [] on the stack
< sipa>
in the witness stack, we just bypass the opcode, and use [] directly
< Chris_Stewart_5>
So that is done the witness serialization code? the 'bypass the opcode'?
< luke-jr>
oh, hm. I guess small numbers take 2x the bytes in segwit then
< luke-jr>
Chris_Stewart_5: segwit witnesses aren't scripts, so it's just automatic
< luke-jr>
although AFAIK OP_0 is just serialized as 0 which is also the length of [] so I'm not sure why that specific case would appear any different?
< sipa>
Chris_Stewart_5: scriptSigs being a script is just a legacy, probably intended to support delegation
< sipa>
the script witness stack is just encoded as a vector of vectors of bytes
< Chris_Stewart_5>
Maybe this is what I'm getting confused about, when a vector is '00' it is indicating that the length of the vector is zero in the witness, correct?
< sipa>
yes
< Chris_Stewart_5>
yeah, doh! Thanks guys.
< luke-jr>
☺
< Chris_Stewart_5>
luke-jr: What did you mean by 2x the bytes in segwit?
< Chris_Stewart_5>
because they require a pushop to be encoded before the actual number if it is only a number in a byte vector?
< luke-jr>
Chris_Stewart_5: OP_1 would be a single byte (0x81) in Script, but in segwit it is 0x01 (length) 0x01 (data)
< Chris_Stewart_5>
Yeah, I think that is what was confusing me. A small but important difference
< luke-jr>
of course, it rarely makes sense to have a small integer in a witness by itself I think
< luke-jr>
usually it'd be part of the program
< Chris_Stewart_5>
Yeah I agree, I can't think of anything off of the top of my head
< sipa>
luke-jr: i recently generated a histogram of the sizes of pushes in scriptSigs
< sipa>
there are 48M 1-byte pushes
< sipa>
sorry, 23.5M 1-byte pushes
< luke-jr>
sipa: exclude OP_1 and scriptSigs which are only OP_TRUE?
< luke-jr>
OP_0*
< sipa>
408M signatures
< sipa>
359M pubkeys
< sipa>
15.3M 107-byte pushes
< sipa>
7.7M 72-byte pushes (= mostly non-DER signatures, as those aren't counted under the signatures field)
< sipa>
0.5M 138-byte pushes
< sipa>
all the rest is less than 0.2M
< luke-jr>
1-byte pushes besides OP_0 and entire-scriptSig-is-OP_TRUE seem like they wouldn't be used much, but I have no real data measuring it
< sipa>
i agree, i don't know what they're for
< gmaxwell>
hm? checkmultisig paramters
< gmaxwell>
oh in signatures. hm
< gmaxwell>
well used to activate if branches.
< sipa>
i would be surprised if there are 23M spends of outputs with branches in the chain
< sipa>
(but i don't know)
< gmaxwell>
Oh I missed the number, that is a lot
< gmaxwell>
sipa: would you like me to give a crack at writing a release note for 9302?