Skip to content

Instantly share code, notes, and snippets.

@nodech
Last active June 21, 2023 21:04
Show Gist options
  • Save nodech/ccfe8df3516e73ac59a0f0a68d887b8f to your computer and use it in GitHub Desktop.
Save nodech/ccfe8df3516e73ac59a0f0a68d887b8f to your computer and use it in GitHub Desktop.

Name issue and solutions

Claim Stats

ICANN TLDs will become available for auction at block 210240, around January 31 to February 2, 2024. As there's interest in preventing ICANN TLD trading on chain, we need to either completely disable claims and permanently seal reservations (soft-fork), or extend the claim period for these reserved names (hard-fork). Names on the reserved list fall into several categories: ROOT (ICANN TLDs), TOP 100 (Unique 54), Custom (Unique 25), and Others. To gain a clearer understanding of the situation, we present the statistics of the claims on the network. Calculations are based on the unique list; entries falling into other categories are disregarded. Entries that belong to multiple categories will be grouped into the first category they fit into, in the following order:

June 1, 2023 - claim stats

Bucket Name Claimed Unique Total
ICAN TLDS 5 1,516
TOP 100 1 54
CUSTOM 9 25
Others 4,825 88,448

Some examples from unclaimed names for each:

  • ICANN TLD: "nec", "cern", "claims", "cafe" ...
  • TOP 100: "pinterest", "tribunnews", "bilibili" ...
  • CUSTOM: "ubuntu", "icann", "blockstack", "cloudflare" ...
  • Others: "123openload", "sungshin", "zonegfx", "openclassrooms" ...

Summary of soft-fork and hard-fork

The critical issue of preventing TLDs (and top100/custom names) from being auctioned can be resolved either through a soft-fork or a hard-fork. Here's a brief summary of what each type accomplishes.

soft-fork

A soft-fork will permanently disable TLDs, top100, and custom names. After January 31, they will no longer be available for claim or opening, effectively locking or sealing them. Implementation: handshake-org/hsd#819

Hard-fork

A hard-fork will extend the claim period for TLDs, top100, and custom names by four years, while allowing all other categories (OTHER) to be auctioned. After these four years, we will still need to implement a hard-fork or a soft-fork. What happens after this period can also be included in the hard-fork plan, such as a lockup scenario. Draft Implementation: https://github.com/pinheadmz/hsd/commits/thumbwrestle-1

soft-fork details

As previously mentioned, a soft-fork will permanently seal the TLDs, top100, and custom names. They will not be claimable (as they would typically become once tradable), nor can they be opened for auction. Upon activation of the soft-fork (BIP9), the OPENs for the reserved names will become illegal and will not be accepted in the mempool once the claim period ends. Blocks containing OPEN of these names will also be considered illegal. Note: Claims will also become illegal as they are no longer "normally reserved" as per usual rules. Names that have been claimed, but have expired or been revoked will also become locked.

  • Pros:

    • Only miners need to upgrade (and BIP9 tries to ensure they do).
      • Wallets, SPV nodes, and HNSD do not need to upgrade.
    • Wallets won't need to upgrade; they only need to be aware that transactions OPENing those names will fail in the mempool and block, which may cause them to get banned from the nodes.
  • Cons:

    • The names can no longer be claimed on the network and are sealed permanently.
    • There's a risk of activation failure, so names may end up being auctioned.

Hard-Fork

A hard-fork allows us greater flexibility with consensus rules. Instead of permanently sealing the names, we can grant TLDs, top100, and custom names additional time to claim their names on the network. We could also add a failsafe for sealing/locking these important names after four years (not part of the current "Thumb Wrestle" proposal). The current hard-fork implementation/proposal does not use BIP9 (which is generally intended for soft-forks) to signal the miner state. Therefore, I believe it would be a necessary addition to have a soft-fork BIP9 signal to activate the hard-fork. If the signalling fails, the hard-fork won't deploy. The hard-fork proposal has other security measures that are separate but carry different consequences. Because of this, instead of discussing the entire hard-fork, we will present a more detailed pros and cons list per feature.

  • Extending Name Claims

    • Pros
      • This allows name owners an additional four years to make claims.
      • We could also add a safeguard to lock them up when that time expires.
    • Cons
      • Every miner and full node needs to upgrade.
  • Light Node Fork Detection allows light clients, such as SPV or HNSD, to choose which network to follow and whether or not to accept a new fork.

    • Pros
      • Allows greater control for light clients.
    • Cons
      • All full nodes and light clients (SPV, HNSD) need to be updated to support hard fork detection using Name Set entries. Otherwise, they will follow the old chain. Essentially, every application needs to upgrade.
  • Replay Protection allows for safer chain splits, where a transaction sent by old clients on the old chain cannot be copied and replayed on the hard-forked network.

    • Pros
      • This protects users from accidentally spending money on both chains instead of just one.
      • Facilitates future hard-forks, as future hard-forks will already have this feature available and can use it for another hard-fork.
    • Cons
      • Every full node, light node, and Signer implementation (like LEDGER) will need to upgrade the code because it changes the transaction serialization. Essentially, anything that creates or verifies signatures needs to be updated.
  • BIP9 (not part of the draft implementation) will provide a better way to monitor the state of the deployment and allow it to fail if miners do not upgrade in time.

    • Instead of an unfavorable split, activation fails if not adopted in time.

    The general drawback of the current hard-fork is that every project and every code will need to be upgraded. Depending on which parts we omit from the implementation, this requirement could be lessened. For instance, if we decide not to implement replay protection and accept the associated risks, Ledger and other signer implementations won't need to be upgraded.

@Nathanwoodburn
Copy link

Nathanwoodburn commented Jun 6, 2023

We could use @Nathanwoodburn's hnscall.

As long as you only have a few people on the call. It is peer to peer so a bit slow when you have a large call.
https://hcall/fork

@nickorlabs
Copy link

We have a twitter space tonight, https://twitter.com/i/spaces/1LyxBqNkWROJN?s=20, we will be discussing the soft fork, hard fork, opinions etc.

@nickorlabs
Copy link

The next space, instead of a space I would like to use another medium with audio, video, and screen share capabilities. Thinking maybe hosting this 6/19 or 6/20, so there is plenty of time.

I would like to focus on the soft fork and I think there is some question on Alexa Top 101-100,000 (be it top 1000, top 10,000, I think we all agree not the entire A100K)

I was also planning on doing it in the middle of the night CST to hopefully accommodate more people.

I really hope you all will attend because I know we all want to do what is best for Handshake and the continued usability of the chain.

@nickorlabs
Copy link

https://twitter.com/Savethedoctor/status/1668419051754749953

https://star.vote/hnssoftfork23v2/

I have tweeted this and posting it here, I think we should have community discussion before 7/1/2023 on the Alexa 101 -100,000 Websites. Please review the vote and let's work as a community!

@nickorlabs
Copy link

List of top100 and custom. Roots were filtered from top100. Top100 + root was filtered from custom: https://gist.github.com/nodech/a5a308e2b01456d1ea0e34f4be4bd609

How was ICANN, Top 100, and custom determined to be the only name's from the name claim we will lock until a hard fork?

@nickorlabs
Copy link

https://star.vote/a100khsf23/ https://star.vote/hnssf23v3/ updated polls based on feedback and additional discussion on the list we use.

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