< Jmabsd>
wait, hashes are such are binary/byte concepts so the whole idea of relating to them as comparable numbers, is a concept that Bitcoin adds on top of them, right? the inventor of SHA256 never related to hashing as SHA256(byte string) => 256bit integer which may be little or big endian, right?
< Jmabsd>
dcousens: aha. Bitcoin Core would print the merkle root in reverse order. anyhow right.
< Jmabsd>
(which is some Bitcoin transaction for some purpose)
< Jmabsd>
for instance, for symmetry with Bitcoin, if you make a Dcousens Bitcoin Transaction format, then obviously its hash should be printed in reverse order.
< Jmabsd>
dcousens: yeap i see. i'm trying to make just a bit of sense here, so that, if you make a Dcousens Protocol to do some Bitcoin-related stuff, and you have some structure in your protocol that you hash and then give to people, in what order should it be.
< Jmabsd>
that makes sense yes. what code in Bitcoin Core compares two uint256:es, which would be used for sorting?
< gmaxwell>
21:30:21 < gmaxwell> block hash is interpreted as a 256-bit little endian number for target comparison as luke says, so then bitcoin needed to print it that way too, otherwise the 0s would have been on the right which would have been confusing... and the same code was then used to print other hashes.
< jonasschnelli>
Maybe they don't fall on bitcoin/bitcoin travis due to the exta CPU cycles we bought
< sipa>
airplanemod: bitcoin core is primarily developed on unix systems (and the windows binaries are produced through cross compiling on linux)
< sipa>
setting up a development environment isn't very bitcoin core specific, so i wouldn't say is on topic here
< airplanemod>
Hey guys, I would like to know if it is possible to set up a development environment for bitcoin-qt and/or bitcoind that will allow me to set breakpoints and step through live code as it is running? I cannot seem to find a tutorial or any good starting point for how to do this. I have been testing my own edits in a simple text editor and using gitian builder to compile and test using
< Jmabsd>
(yes I totally see that Bitcoin Core or the Bitcoin protocol never represent data in reverse order internally - it's only a human representation thing)
< gmaxwell>
block hash is interpreted as a 256-bit little endian number for target comparison as luke says, so then bitcoin needed to print it that way too, otherwise the 0s would have been on the right which would have been confusing... and the same code was then used to print other hashes.
< gmaxwell>
Jmabsd: the point is that bitcoin's UI uses the same stuff to print all these 256 bit hashes.
< Jmabsd>
gmaxwell, yes interesting, i see clearly in Bitcoin Core and other implementations that indeed there is no reversing whatsoever, no "endianness" or the like here. you are right that the code in the wild must have been mitigating some kind of user-facing hex representation quirk.
< gmaxwell>
Bitcoin "UI" hashes are backwards for path dependant but otherwise explicable reasons...
< gmaxwell>
Jmabsd: Sipa already answered this question previously. The bitcoin protocol uses sha256 exactly as it is.
< Jmabsd>
luke-jr: is any particular byte ordering or "endianness" to the SHA256 used here, i've seen some Bitcoin merkle node calculation use byte-reverse logics
< Jmabsd>
sipa, two quick off-topic but conceptually related questions, as general guidance for design of any new signing protocols, would you suggest using a single hash instead of double, or could it make sense to recycle Bitcoin's double-hash for symmetry with Bitcoin? also for guidance for other protocols, if you're going to do a salted hash of some message e.g. SHA256HMAC(protocolmessage,"SIPAPROTOCOL"), then for extension
< sipa>
bitcoin basically everywhere either uses ripemd160(sha256(x)) or sha256(sha256(x))
< Jmabsd>
and so Bitcoin is really only dealing with the "contract endorsement" structures, and hence in the real world those are 72B+1B sighhash=73B max.
< Jmabsd>
sipa: ah right, so, the zoomed-out situation in Bitcoin is that DER situations are in sigscript, redeem script (part of sigscript right) and P2WSH witness script (input's last witness element), only.
< sipa>
every signature in bitcoin script has a sighash byte
< Jmabsd>
Wait, in what situations are sighash bytes not added vs. added, to ecdsa signatures in Bitcoin? With a sighhash byte the DER signature max size is 73B (if low-s, 72B) whereas without sighash byte the max size is 72B (if low-s, 71B).
< Jmabsd>
wait, where are Bitcoin Core's logics to actually enforce little-endian serialization - say I run Bitcoin Core on an ARM.. is this the line that will cause the big endian (native to my computer) to little endian (serialization form) conversoin: https://github.com/bitcoin/bitcoin/blob/master/src/serialize.h#L89 ?
< Jmabsd>
sipa, the SHA256 specific about Bitcoin is why you need to byte-reverse most(all?) SHA256 libraries' results within Bitcoin merkle tree merkle node calculations, right?
< sipa>
(SHA256 internally uses big endian, but that's black box - it's a function that takes as input a byte array and produces another byte array from bitcoin's pov)
< sipa>
everything in bitcoin uses little endian
< Jmabsd>
Where is Bitcoin Core's serialization and deserialization code for values in various structures such as transactions, block headers, and protocol data? This code shows the endianness used
< wumpus>
Zenton: better ask in #bitcoin, this is a developer channel, you'd probably want to mention your perceived threat model for 'secure enough' as well
< sipa>
this discussion should probably move to #bitcoin
< unixb0y>
sipa: I run bitcoin-qt tbh :P
< gmaxwell>
Unfortunately, Bitcoin actually makes quite full use of the computer and so if its flaky at all it'll croak out. deleting blk and rev files is never going to help anything.
< unixb0y>
HI guys, I have a little issue with the initial Bitcoin Core setup.
< achow101>
oh, nvm, i see what you meant by bitcoin-qt being the non-deterministic one
< wumpus>
bitcoin-qt only suggests to me it's another non-determinism thing with the qt tooling, maybe file ordering or date/time in metadata in the qrc archives
< ken2812221>
The difference is on bitcoin-qt, I've compared it before but I deleted the docker one.
< promag>
in 13501, I was puzzled to know why bitcoin-cli worked differently than AuthProxy
< kevink>
I'm using Bitcoin Core's API and am wondering whats the difference between `duplicate-inconclusive` and `duplicate` when calling `submitblock`. I'm just trying to verify that a block exists in the blockchain and `submitblock` seems like the simplest way to do that.
< gmaxwell>
https://github.com/bitcoin/bitcoin/pull/13657 I don't understand this change. Coinbase transactions can be conflicted, by being orphaned block. I guess GetDepthInMainChain doesn't return negative in the case, but I think it probably should.
< Jmabsd>
sipa: exactly, i'm rading the relay code and can't find it too. so i was thinking maybe that bitcoin.org article is bss*ahem*incorrect*ahem*obsolete.
< Jmabsd>
"Bitcoin Core 0.12.0 defaults to relaying and mining null data outputs with up to 83 bytes with any number of data pushes, provided the total byte limit is not exceeded. There must still only be a single null data output and it must still pay exactly 0 satoshis."
< Gnappuraz>
Hi, I was going through the bitcoin documentation but I can't find the rationale behind the fact of using the prevTx.scriptPubKey in the place of curTx.scriptSig when creating the signature
< waiting2compile>
hi, could someone walk me a bit through running Bitcoin's tests? I tried following the instructions in the README.md, though I suspect there's some extra setup that needs to be done that's missing, since running the command just gives make errors and the like (pardon me, I'm new to this and am trying to fix one of the good first bugs :))
2018-08-13
< nmnkgl>
MarcoFalke: Could you point me to anything would prevent bitcoin core nodes from having crazy everlasting loops in case when there is a ring of whitelisted peers? In regular mode the loop will break at least because of using INVs. That may be very unlikely case though.
< gmaxwell>
I totally agree that wallets shoudl be batching and whatnot, but consider: we don't even have a friendly way to do that... There is no dohicky in bitcoin core where you can queue a payment, have it draft it, but not send it, waiting for either more payments it can be bached with, timeout, or shutdown trigger.
< itaseski>
i wasn't able to find anything bitcoin specific ...
< devmob>
hi, I'd really like to know how bitcoin does gossip, like how the gossip protocol is implemented
< reald0ff1>
well thanks for the answer. I think I will try to contact bitcoincore.org via email and bitcoin.org also via email to the website maintainer. Maybe some of them could provide me stats
< harding>
reald0ff1: I don't know if anyone has that information for BitcoinCore.org, sorry. In addition, the binaries can also be downloaded from Bitcoin.org (maintained by a different team) or via a torrent (with optional magnet URI) that contains the binaries for all platforms.
< reald0ff1>
Can someone please provide me download stats (or at least share in %) of bitcoin core, regarding the different platform versions (Win, Linux, OSX, etc) ?
2018-08-10
< gribble>
https://github.com/bitcoin/bitcoin/issues/13930 | Better explain GetAncestor check for m_failed_blocks in AcceptBlockHeader by Sjors · Pull Request #13930 · bitcoin/bitcoin · GitHub
< sipa>
this channel is mostly about developmemt of the bitcoin core software
< sipa>
Jmabsd: i think your questions are probably better suited for bitcoin.stackexchange.com
< Jmabsd>
are we in a place today where you can assume that every relevant participant in the Bitcoin ecosystem will be fine with Bitcoin transactions with version = 2?
2018-08-09
< sipa>
2018-08-09T18:55:00.301077Z receive version message: /bitcoinj:0.14.7/Bitcoin Wallet:6.28/: version 70001, blocks=535894, us=127.0.0.1:8333, peer=414
< sipa>
and your ISP's cost, and the bitcoin exchange rate?
< Jmabsd>
aj: ah, so Bitcoin Core nodes will accept a nonstandard tx when it's in a block, but it will not accept them in gossiping, right?
< Jmabsd>
Where in Bitcoin Core's code are the constraints on what scripts are allowed, implemented? E.g., gossiped transaction's lock scripts must be either of P2PK, P2PKH, multisig, nulldata or P2SH in order to be considered valid and be gossiped?
< MarcoFalke>
githubs send from:"notifications@github.com" to:"bitcoin@noreply.github.com" with cc:"comment@noreply.github.com" and cc you
< harding>
MarcoFalke: to ping privately, the bot could just pull the email address of the committer from the most recent commit message and email them. Alternatively, the bot could open an issue on the repository they're making their PR from, e.g. github.com/harding/bitcoin/issues/new
< gribble>
https://github.com/bitcoin/bitcoin/issues/13808 | wallet: shuffle coins before grouping, where warranted by kallewoof · Pull Request #13808 · bitcoin/bitcoin · GitHubAsset 1Asset 1
< gmaxwell>
https://github.com/bitcoin/bitcoin/pull/12495#issuecomment-367815005 < eklitzke suggests increasing leveldb's mmap limit here. ossifrage also apparently did that and reported it fixed his problems, though his specific problems are likely better fixed by switching to poll.
< gribble>
https://github.com/bitcoin/bitcoin/issues/13789 | crypto/sha256: Use pragmas to enforce necessary intrinsics for GCC and Clang by luke-jr · Pull Request #13789 · bitcoin/bitcoin · GitHub
< ossifrage>
mmap() is a great way to generate a very large amount of write pressure, but it seems like most of the leveldb use in bitcoin has a very low change rate
< gribble>
https://github.com/bitcoin/bitcoin/issues/13662 | Explain when reindex-chainstate can be used instead of reindex by Sjors · Pull Request #13662 · bitcoin/bitcoin · GitHubAsset 1Asset 1
< gribble>
https://github.com/bitcoin/bitcoin/issues/13676 | Explain that mempool memory is added to -dbcache during IBD by Sjors · Pull Request #13676 · bitcoin/bitcoin · GitHubAsset 1Asset 1
< bitcoin-git>
[bitcoin] MarcoFalke closed pull request #13247: Add tests to SingleThreadedSchedulerClient() and document the memory model (master...scheduler-tests) https://github.com/bitcoin/bitcoin/pull/13247
< bitcoin-git>
bitcoin/master cbeaa91 Jesse Cohen: Update ValidationInterface() documentation to explicitly specify threading and memory model
< bitcoin-git>
bitcoin/master b296b42 Jesse Cohen: Update documentation for SingleThreadedSchedulerClient() to specify the memory model
< bitcoin-git>
bitcoin/master 9994d01 Jesse Cohen: Add Unit Test for SingleThreadedSchedulerClient...
< bitcoin-git>
[bitcoin] MarcoFalke opened pull request #13823: qa: quote path in authproxy for external multiwallets (master...Mf1808-qaAuthProxyQuotePath) https://github.com/bitcoin/bitcoin/pull/13823
< bitcoin-git>
[bitcoin] laanwj closed pull request #13776: net: Add missing verification of IPv6 address in CNetAddr::GetIn6Addr(...) (master...call-IsIPv6-in-GetIn6Addr) https://github.com/bitcoin/bitcoin/pull/13776
< bitcoin-git>
bitcoin/master 7d36237 Wladimir J. van der Laan: Merge #13776: net: Add missing verification of IPv6 address in CNetAddr::GetIn6Addr(...)...
< bitcoin-git>
bitcoin/master 2fb0066 practicalswift: net: Add missing verification of IPv6 address in CNetAddr::GetIn6Addr(...)
< bitcoin-git>
[bitcoin] achow101 opened pull request #13822: bench: Make CoinSelection output groups pass eligibility filter (master...fix-out-groups-bench) https://github.com/bitcoin/bitcoin/pull/13822
< bitcoin-git>
[bitcoin] MarcoFalke closed pull request #13821: qa: Re-enable test for unknown arg in conf file (master...Mf1808-qaConfWarn) https://github.com/bitcoin/bitcoin/pull/13821
< bitcoin-git>
[bitcoin] MarcoFalke opened pull request #13821: qa: Re-enable test for unknown arg in conf file (master...Mf1808-qaConfWarn) https://github.com/bitcoin/bitcoin/pull/13821
< bitcoin-git>
[bitcoin] Sjors opened pull request #13818: More intuitive GUI settings behavior when -proxy is set (master...2018/07/gui-proxy) https://github.com/bitcoin/bitcoin/pull/13818
< bitcoin-git>
[bitcoin] scravy opened pull request #13816: travis: build and run tests on os: osx (master...run-functional-tests-on-macos) https://github.com/bitcoin/bitcoin/pull/13816
< harding>
various places in their home directory for different Bitcoin-related resources.
< harding>
mryandao: ok. I guess I have a different backup philosophy than you do. I use cheap external HDs, and so I just grab everything indiscriminately. I think there probably is an advantage to fully separating stuff we really want users to backup (e..g bitcoin.conf and wallets) from stuff that's just nice to backup (e.g. old blocks), but I personally don't think that's enough of an advantage to make them have to go looking around
< mryandao>
typically most linux distribution follow XDG specification for looking up config files, would this be preferable in Core? I know there was a previous closed issue which mentioned this, but we could keep the datadir cache separate in ~/.bitcoin as is
< sipa>
bitcoin-cli needs to know what arguments to treat as string literals and which ones not
< luke-jr>
kallewoof: for bitcoin-cli, which isn't tested by assert_raises_rpc_error
< bitcoin-git>
[bitcoin] practicalswift opened pull request #13815: build: Add linter to make sure the return value of Parse[...](...) is checked (master...check-return-values-from-parse) https://github.com/bitcoin/bitcoin/pull/13815
< satwo>
wumpus: thanks! I definitely need to familiarize myself with functional vs unit tests in bitcoin. I'll continue to come here to ask my noobish questions.
< fanquake>
There was at one point a bitcoin test cases/writeups repo, but I don't think it ever got much traction
< Fuzzbawls>
Question: (please ping me directly with answer) Given the recent acquisition of GitHub by Microsoft, is a relocation of the bitcoin source code to an alternative platform (like GitLab) being considered at all? If so, has anyone been actively working towards porting the `.travis.yml` file over to an alternative CI provider? I've had mixed results with such a port; some features can be duplicated/represented, and some cannot (like the $TRAVIS_COMMIT
< jonasschnelli>
ken2812221: sry. :) now my fault. I need: e56b7d20bc7bfb8203f1651ddcf4fc18d8685acf942a8c7b90919f29e24db3a1 bitcoin-0.16.2-osx-unsigned.tar.gz
< jonasschnelli>
You file: e56b7d20bc7bfb8203f1651ddcf4fc18d8685acf942a8c7b90919f29e24db3a1 bitcoin-osx-unsigned.tar.gz
< luke-jr>
wumpus: actually, it might be annoying if users get errors for Knots configs in bitcoin.conf
< sipa>
(by default it's enforced, unless you pass -ignoreunknownconfigoptions or so; and then it still only applies to bitcoin.conf and not to command line options)
< sipa>
wumpus: or we need a way to specify bitcoin.conf options that only apply to a particular binary
< sipa>
but we should probably make it ignore bitcoin-cli only options like this one, when present in bitcoin.conf
< sipa>
right; you can't put it in bitcoin.conf anymore, because it's not a bitcoind option
< sipa>
in bitcoin.conf it should work fine; that file should be read by both bitcoind and bitcoin-cli