A quick heads-up.
Status committed to Nim since the start of 2018 to build its research products, in particular a client for the Ethereum 2 blockchain, Nimbus.
Almost 3 years later, we are delivering our 1.0 version of Nimbus (https://github.com/status-im/nimbus-eth2) which will take part of Eth2 genesis at 12PM UTC (https://beaconcha.in/) today.
This is probably the most visible Nim project out there and it will help secure a network holding currently 880000 ETH of assets which is about 458M EUR or $548M at current exchange rate.
Hopefully this will promote Nim visibility and also prove that Nim is suitable for large scale project with high confidence and security requirements. This should also prove that building a Nim team is not impossible as we do have several people that had no Nim experience and picked it up quickly after Go or C++ experience i.e. a month to be productive while appropriating a new codebase and a new complex domain.
Unlike the teams building clients in Go, Java, Javascript, Rust, we did have to write a lot of our building blocks from scratch particularly pertaining to networking and cryptography. However the ability to easily interop with C or C++ and Nim's overall productivity allowed us to overcome the ecosystem immaturity.
Also we're still hiring Nim developers: https://status.im/our_team/open_positions.html
Amazing to see Nim at the forefront of this launch!
For people, such as myself, who don't follow this stuff. What is significant about Ethereum 2.0? What can I get out of running Nimbus on my devices?
The current Ethereum 1.0 network is home to hundreds of applications and heavily congested at the moment due to how heavy it is used even though it didn't even reach the general public.
As blocks have a limited space for transactions, users need to pay higher fees to have their transactions included but with new applications blocks are currently filled https://cointelegraph.com/news/ethereum-cumulative-fees-in-2020-eclipsed-bitcoin-s-for-the-first-time and Eth users paid more in Ethereum transaction fees in the last 3 months that what was paid before and it even overtook bitcoin. This is a signal of adoption and actual usage (though in my opinion the actual use case "yield farming" looks similar to me to the junk bonds that required completely revising how the whole finance industry was regulated in the 80s given how it's the wild wild west.)
So Eth1 has an issue of scalability. Ethereum 2.0 is part of the puzzle to solve that (though they are cryptographic techniques used on Ethereum 1 to bundle transactions that are very promising and being deployed as we speak).
The Ethereum 2.0 launch from today is also the first step to switch to a proof-of-stake network. A blockchain works by having a majority of the participants reach a consensus decided by an algorithm, Bitcoin and Ethereum 1 being proof-of-work (work = solving cryptographic challenge), Ethereum 2 being proof-of-stake (stake being money you can lose if you misbehave) and entreprise blockchain being proof-of-authority (similar to having admin rights for a specific purpose). The big difference for proof-of-stake is that there is no need to burn a lot of computing power to secure a blockchain (think climate change). And also it avoids risk due to sinking costs (Google, Amazon, Facebook repurposing vast unused computing power to takeover a chain, in proof-of-stake taking over a chain would require acquiring the corresponding cryptocurrency and burning it while proceeding with the attack while computing power is kept in proof-of-work) and also economies of scale where people with access to Iceland servers and dedicated hardware (ASIC) can optimize rewards while smaller holders can't. (https://blog.ethereum.org/2014/01/15/slasher-a-punitive-proof-of-stake-algorithm/)
Lastly, blockchains give use a distributed ledger that cannot be tampered with and transactions logged there cannot be reversed or removed. But actually due to the async nature of consensus, there is a time frame where blocks are competing to become the one who will be history and the other discarded, we call that a fork. So far, we used heuristic "wait for 6 blocks to be added so that that chain (version of history) has too much weight to be reversed" or "wait for 30min to confirm that the transaction is valid". That property of not being reversed is called finality. Ethereum 2 enshrines finality at the protocol level and so everyone has a known spec definition of what finality is and can rely on that to build applications. Also finality can be reached in 18min or we can be optimistic about it if the votes for a block reach a certain threshold. This is incredibly important as knowing that a transaction has been confirmed is key.
TLDR:
In terms of engineering and research effort, the work on Ethereum 2 has also been unprecedented. At one point we had 9 teams implementing the Ethereum 2 specs, teams working from different locations and coordinating to build 9 products securing billions of dollars. And the research was also ongoing and evolving as the implementation was hitting obstacles. And this was done in a period of high skepticism from both within the community (announcement was in 2014 but implementation started in 2018 so fear of never shipping) and outside (scam, a solution in search of a problem, ...).
In particular research challenges involved breathrough in cryptography (the Ethereum Foundation is sponsoring the Cryptography department at Stanford), pushing for cryptographic standardization for the whole internet:
and also heavy work on peer-to-peer research and implementation in multiple languages of libp2p (+ petitioning the team to write specs https://libp2p.io/)
Is there somewhere to see/show server stats for the Nim nodes? I imagine there's security implications, but having a status page showing some sanitized stats would be awesome. Something like: "running XYZ GFLOPs/Packets/EthBlocks of Nim based Ethereum2 peers" would be an easy way to show off Nim running in a real world setting. Plus it's just fun to see stats. :-) Though it'd be understandable if that's not possible/feasible.
And the state-of-the-art crypto and p2p networking is amazing! It gives me some ideas for application in embedded work.