Page MenuHomePhabricator

Add no-limits testnet (NOL) support to Bitcoin-ABC
AbandonedPublic

Authored by freetrader on Jun 13 2017, 19:54.

Details

Reviewers
deadalnix
sickpig
kyuupichan
awemany
Group Reviewers
Restricted Project
Summary

This is an experimental port of kyuupichan's 'Reboot nolnet' patch [1].
Features:

  • -chain_nol parameter to start on nolnet (port 9333)
  • New network bytes so we don't interfere with previous nolnet nodes
  • P2PKH addresses begin with B and P2SH with U
  • BIP32 xprv and xpub prefixes are "Big " and "Blks".
  • After 20 minutes difficulty resets to 1 like on testnet3

BU's CreateGenesisBlock() has been renamed to BU CreateGenesisBlock()
to avoid collision with Core's CreateGenesisBlock() which has been left in
until a further refactoring patch.

There are a number of FIXME's in the code which will require resolution.

[1] https://github.com/BitcoinUnlimited/BitcoinUnlimited/pull/642

Test Plan

Read the NOTE before you run on nolnet.
When you do, you need to set you EB to 16MB since there is already
nearly 9MB block (last checked today by someone else) in the nolnet chain.

bitcoind -chain_nol -excessiveblock=16000000

NOTE: Backup your existing nolnet wallet or mainchain datadir beforehand if you run on a machine you previously used for nolnet or mainnet. Use -datadir and -conf to direct away from any existing application folders.

Some points:

  • Check that you can do a successful sync from scratch.
  • Check that you can stop/restart and carry on.
  • Check that you can send/receive (ask others to provide you with some testcoins as you might not be able to mine yourself).
  • Check if you can spot any problems relating to nolnet operation of your client, and raise Issues if you do.
  • Feel the joy of mining your own coins again (if you have mining hardware or can figure out how to CPU mine via the RPC).
  • Check what happens when you run with too-low '-excessiveblocksize' (you should start banning peers with bad-blk-length reasons).
  • Check whether increasing the limit gets your node in trouble.

CAVEAT: ABC (based on Core 0.14) pruning implementation is not yet
adapted to handle big blocks. Calculate extra space as it will
scale the prune=XXX value by as much as the average block size
exceeds 1MB.

Diff Detail

Repository
rABC Bitcoin ABC
Branch
nolnet_support
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 297
Build 297: arc lint + arc unit

Event Timeline

Herald added 1 blocking reviewer(s): Restricted Project. · View Herald TranscriptJun 13 2017, 19:54

Rebased after submitting diffs to split out the clang-format changes

src/chainparamsbase.h
52 ↗(On Diff #454)

Incorrect parameter name.

deadalnix requested changes to this revision.Jun 14 2017, 22:57
This revision now requires changes to proceed.Jun 14 2017, 22:57
src/chainparamsbase.h
52 ↗(On Diff #454)

Thanks, leftover from previous naming attempt, will fix everywhere it occurs

freetrader edited edge metadata.

Fix outdated -nolnet picked up by review

As discussed on Slack, this is being held back since current ABC code already has the feature to refuse >1MB blocks before the fork activation time, so it cannot nicely play on nolnet anymore.

At some later stage it can be decided what to do with this change.

deadalnix requested changes to this revision.Jun 19 2017, 14:30

Just to get it out of the queue.

This revision now requires changes to proceed.Jun 19 2017, 14:30

If there is no intention to further test on nolnet (expressed by further comments / planning discussion on this ticket), I will withdraw (abandon) this Diff by Tue 4 Jul 12:00AM UTC .

Note that if we wished to make use of nolnet, we'd have to implement some sort of switch to allow bigger blocks prior to the activation as well, since the nolnet chain is obviously full of those. It is also unclear to me if there is a possibility of interference with ABC's fork activation due to the pre-existence of bigger blocks on the nolnet chain - it is certainly something we cannot exclude yet.

The only reason to test on nolnet would seem to be to interoperate with BU . But I think a UAHF-capable version of BU could also test with ABC on testnet3 .