Transcript for #bitcoin-dev 2018/01/02

03:29 xiedeacc hi, output of block 0 can't be spent as this would allow Satoshi to fork the network. how could this happen ? because at first bitcoin released by Satoshi, the coinbase of block 0 cannot spendable, so if some client allow that address spend, then Satoshi can fork a new blockchain from block 0, and mine his own blockchain more longer than legal blockchain in a private way, then satoshi publish his blockchain, made legal blcokchain cancelled?
04:11 achow101 xiedeacc: it would be a hard fork and be completely backwards incompatible. to allow people to use older software, that output cannot be allowed to be spent from
04:11 achow101 there is no blockchain wipeout risk. rather it is a hard fork risk
11:44 bsdnoob hey
11:45 bsdnoob can anyone help me create the genesis block?
12:14 fluffypony hello frenz
12:15 fluffypony I'm confused about the order in which inv / tx messages are sent
12:16 fluffypony if a node is first to broadcast a tx, it uses inv to let its peers know it has new data for them, right?
12:16 fluffypony because tx is only in reply to getdata?
13:01 echeveria fluffypony: yes.
13:02 fluffypony kk tks
13:03 echeveria fluffypony: eventually it should probably be a protocol violation to send an unsolicited transaction message, but it's not today, though I think in debug mode it had a message about it. there's a couple of wallets that do it, and some insane software doing the same.
13:05 fluffypony echeveria: so tx propagation through periodic requests from peers instead of broadcasting them out?
13:06 echeveria fluffypony: that's something different. the protocol is that you send an inv for things you learn about, and the node responds with a getdata if it needs it, and you send that data in response.
13:07 fluffypony ahhhh
13:07 fluffypony ok
13:07 echeveria bitcoin nodes today do transaction batching, where they will selectively delay or bundle up transaction inventory messages in an attempt to improve privacy.
13:08 echeveria
13:08 echeveria this is a tool which implements the bare minimum logic needed to connect to a node, handshake, send inventory, and reply with a given transaction.
13:09 fluffypony perfect, tks
13:10 echeveria what do you mean by broadcast backbone?
13:14 fluffypony echeveria: if a bunch of currencies shared a tx broadcast backbone that would be beneficial from a privacy perspective
13:14 echeveria why?
13:15 fluffypony BlueMatt can explain a bit more when he's around
13:15 fluffypony got to go get food
13:32 bsdnoob does anyone knows how to print a merkle root?
13:33 iwkse bsdnoob: do you mean the merkle tree?
13:34 iwkse the merkle root is written in any blocks you can easily get it
13:34 bsdnoob iwkse, each block stores merkle root right?
13:34 iwkse yes
13:34 bsdnoob iwkse, I am creating my own genesis block
13:34 iwkse blocks/blocks header
13:34 bsdnoob and assertion fails
13:35 iwkse I'm afraid I cannot help much with that, just jumped into that these days, but if you just want to print the merkle root, well I think you can get it from the block's header
13:36 bsdnoob iwkse, it's in weird uint256 format
13:36 iwkse bsdnoob: why weird?
13:37 bsdnoob iwkse, but fear not I think it got ToString() method
13:37 bsdnoob iwkse, first time I am seeing that type
13:38 iwkse well the merkle root is an hash
13:38 bsdnoob yupp
13:38 iwkse was just checking if I can get that from bitcoin-cli
13:38 iwkse I think it's possible
13:40 iwkse yup
13:40 iwkse with getblockheader
13:40 iwkse you give the block hash and you get it all
13:40 bsdnoob iwkse, yup got it
13:40 bsdnoob but I ran into other problem
13:40 bsdnoob bitcoind is crashing
13:40 bsdnoob ERROR: ReadBlockFromDisk: Errors in block header at CBlockDiskPos(nFile=0, nPos=8)
13:41 iwkse guessing, maybe something wrong with the nonce
13:42 bsdnoob maybe this is because I messed with hash?
13:43 iwkse I'm not sure
13:44 bsdnoob what does checkpoints do?
13:46 iwkse it's something hardcoded in the client to accept transactions as valid till that point