<div dir="ltr">Interesting stuff! I have some comments, mostly about the header.<div><br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The header of forcenet is mostly described in Luke’s BIP, but I have made some amendments as I implemented it. The format is (size in parentheses; little endian):<br>
<br>
Height (4), BIP9 signalling field (4), hardfork signalling field (3), merge-mining hard fork signalling field (1), prev hash (32), timestamp (4), nonce1 (4), nonce2 (4), nonce3 (compactSize + variable), Hash TMR (32), Hash WMR (32), total tx size (8) , total tx weight (8), total sigops (8), number of tx (4), merkle branches leading to header C (compactSize + 32 bit hashes)<br></blockquote><div><br></div><div>First, I&#39;d really rather not have variable length fields in the header.  It&#39;s so much nicer to just have a fixed size.</div><div><br></div><div>Is having both TMR and WMR really needed?  As segwit would be required with this header type, and the WMR covers a superset of the data that the TMR does, couldn&#39;t you get rid of the TMR?  The only disadvantage I can see is that light clients may want a merkle proof of a transaction without having to download the witnesses for that transaction.  This seems pretty minor, especially as once they&#39;re convinced of block inclusion they can discard the witness data, and also the tradeoff is that light clients will have to download and store and extra 32 bytes per block, likely offsetting any savings from omitting witness data.</div><div><br></div><div>The other question is that there&#39;s a bit that&#39;s redundant: height is also committed to in the coinbase tx via bip 34 (speaking of which, if there&#39;s a hard-fork, how about reverting bip 34 and committing to the height with coinbase tx nlocktime instead?)</div><div><br></div><div>Total size / weight / number of txs also feels pretty redundant.  Not a lot of space but it&#39;s hard to come up with a use for them.  Number of tx could be useful if you want to send all the leaves of a merkle tree, but you could also do that by committing to the depth of the merkle tree in the header, which is 1 byte.</div><div><br></div><div>Also how about making timestamp 8 bytes?  2106 is coming up soon :)</div><div><br></div><div>Maybe this is too nit-picky; maybe it&#39;s better to put lots of stuff in for testing the forcenet and then take out all the stuff that wasn&#39;t used or had issues as it progresses.</div><div><br>Thanks and looking forward to trying out forcenet!</div><div><br></div><div>-Tadge</div></div></div></div>