New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Testnet3 & Mainnet Todo List #92

Open
chjj opened this Issue Jan 22, 2019 · 0 comments

Comments

Projects
None yet
1 participant
@chjj
Copy link
Contributor

chjj commented Jan 22, 2019

Testnet3 is now up and running with the same seed nodes as the previous testnet. If we have another testnet after this, I think our testnet intervals should start becoming much quicker.

This testnet implements some of the final aspects of the protocol, including the new proof-of-work and private airdrop to open source developers.

Testnet3 begins on the testnet3 tag, if you checkout any head prior to that, expect consensus failures.

Major changes/hard-forks from testnet2

  • Cuckoo Cycle has been dropped for good. The PoW is now "cBLAKE" (KMAC/cSHAKE + BLAKE2b). Thanks to David Vorick for his input.
    • Note that the initial target is relatively high since we don't have a new miner written yet.
  • The faucet is now handled at the protocol level in addition to a new airdrop. Much thanks to Dan Boneh and Riad Wahby for making the private airdrop possible.
  • Block times have been increased to 10 minutes for more DoS mitigation.
  • The TX merkle root has once again been split into two roots: the witness root and non-witness root. This makes our non-witness sync much more sane (in retrospect, our original deviation from bitcoin was probably a bad idea).
  • Another reserved field has been added to the block header. This field is designated to become a filter commitment for neutrino.
  • Blacklisted names belonging to other naming projects (ENS, GNS, Namecoin, etc) are now blacklisted by policy rules instead of consensus. This allows those projects the ability to create some kind of compatibility bridge in the future. A few more "blacklist" names have been added at the suggestion of Jeremy Rand.
  • Name rollout has been reduced to 6 hours instead of 12 (the testnet still has a finite lifespan of 1 month).

Minor changes

  • Various updates to dependencies. bdb has been upgraded to the new leveldown backend, written in N-API.

Todo list for mainnet

Basically some ideas that have been lingering in my head and expressed in various conversations but never actually written down:

  • Finalize the reserved names list and values.
  • Update SSH/PGP keys for the airdrop once again.
  • Remove government names from the reserved names list.
  • Improve UI/API (move some RPC calls into the REST api).
  • Investigate some potential wallet bugs pertaining to names.
  • Write a new cBLAKE miner (hopefully with OpenCL/CUDA support).
  • Fork & modify bstratum to work with HSD.
  • Revise/improve name record serialization and draw up a specification.
  • Decide on which version of the urkel tree to use.
  • Improve some privacy aspects of the airdrop. This includes padding a recipient's subtree with dummy leaves to conceal the number of keys associated with their github account (thanks to Dan & Riad for noticing this).
  • Add more policy rules regarding names.
  • Implement neutrino on the consensus layer (at least). If we don't get to this, it can be deployed via softfork later.
  • Improve peer address gossip.
  • Implement a decaying ban score for name resolution, similar to btcd's decaying ban score.
  • Reconsider name DoS limits (these are actually very tricky).
  • Consider making invalid covenants not update an on-chain state (ethereum-style -- this potentially solves the race condition with OPEN transactions, but makes DoS limit counting annoying). Thanks to Jeremy Rubin for this suggestion.
  • Experiment with Bitcoin Cash's retargetting algorithm and see how it compares to DigiShield.
  • Switch to bthreads as our worker backend.
  • Consider running the urkel tree in a separate thread using bthreads.
  • Get an anycast network ready for public resolvers.
  • Drop SIG(0) in favor of a cache/proxy-friendly signing mechanism.
  • Consider possible "KSK switcharoo" attacks from ICANN given the recent rollover (will be explained in a separate issue).
  • Examine and document "BIND consensus quirks" (will be explained in another issue).
  • NPM-less install: start using bpkg for releases. This allows us to distribute signed tarballs instead of relying on NPM.
  • More tests! Always more tests.

I'll be separating this out into issues, and I think this list can be updated as we go along.

More to come...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment