Skip to content

Commit

Permalink
Add some details about the forking activities (#866)
Browse files Browse the repository at this point in the history
Add some deets about the forking activities

Co-authored-by: Joshy Orndorff <git-user-email.h0ly5@simplelogin.com>
  • Loading branch information
JoshOrndorff and Joshy Orndorff authored Dec 15, 2023
1 parent c9d3b0b commit 360a7c9
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions syllabus/3-Blockchain/Start_A_Blockchain_Activity.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,20 @@ Node runners can contribute PoW hashrate to the network in exchange for tokens.

### Fork the Network

In BA we forked the difficulty, but maybe there is something more compelling. Maybe fork to adjust max block size. Nice because it happened for real in bitcoin. Maybe hard because I believe max block size is controlled in the runtime.
Our chain's PoW is based on md5 which is getting old and weak, so we upgrade to add the newer standard sha3 while keeping the original md5 in place to facilitate a smooth transition. Actually we decide to add both sha3 and keccak just in case the NSA fucked with sha3.

Another idea:
When we launch the chain, we allow PoW block to have either of two valid kinds of seals. For example, one based on sha3 and another based on keccak. Then we pretend there is a cultural war and some people like one function or the other wnad some people don't care. When the time comes to fork, we have three different versions of the node available: 1 only accepts sha3, 2 only accepts keccak, 3 is the original that accepts either. In this way we can see that there will be at least two viable chains (the sha 3 chain and the keccak chain). If there are a lot of nodes that still run the old version and accept either hash, they will form a third chain. But if there are only a few such nodes, they will re-org into one of the other two chains, and potentially reorg back and forth between them.
(If desired, insert the [Forks lesson](./13-Forks_slides.md) here.)

We find out about a practical attack against md5 and decide to remove it.

Finally, there is a contentious fork. Some of the community are keccak maxis, others are sha3 maxis, others don't have a preference and are okay to allow both until the dust settles.

There could be three chains after step seven. But we want a relatively stable chain for the contracts work in the afternoon, so we try to guide the class toward agreeing on a single chain if it is not happening naturally.

### Light Clients

TODO
Would be nice to have a light client, but unlike the early days of Substrate, it is no longer included.
Last I heard from Nikos, Substrate connect / smoldot / etrc does not support PoW chains, so this will have to come later or be removed.

### Other Infrastructure

Expand Down

0 comments on commit 360a7c9

Please sign in to comment.