Several of you have been following our adventures on Github issues in the past 
6 months.

[Status.im](https://status.im/) is betting on Nim for a next-gen mobile 
friendly Ethereum client called Nimbus.

[Announcement is here](https://our.status.im/introducing-nimbus-an/).

Feel free to ask me anything. Let's start by the most obvious questions:

**A. What does it mean for Nim?**

Obviously more visibility, the blockchain community is growing at a rapid pace, 
with unique challenge and they are no afraid of adopting new things.

More libraries, with a mobile device focus, especially state-of-the art binary 
blob, networking, big integer, cryptographic, testing and logging libraries. 
Note that those will be security audited to work in adversarial settings and 
protect users' money.

Samples:
    

  * [nim-chronicles](https://github.com/status-im/nim-chronicles), 
super-charged logging library
  * [nimcrypto](https://github.com/cheatfate/nimcrypto), native crypto and 
hashing library, supports: Blake2, AES (Rijndael), PBKDF2, SHA2, SHA3, Keccak 
and several other schemes, ...
  * [Stint](https://github.com/status-im/nim-stint), The fastest portable 
Uint128, Uint256, Uint512, ... Uint[PowerOf2] library. Carefully tuned for best 
assembly generated and using state-of-the-art bigint algorithms. All fixed size 
stack allocated and allows compile-time calculation of every unsigned 
operations.
  * [Ranges](https://github.com/status-im/nim-ranges), the memory 
range/span/slice/blob swiss-army knife library. Also serve as a playground for 
what might be needed by openarrays in the future.
    * [Byteutils](https://github.com/status-im/nim-byteutils) A small utility 
library to work with memory blobs and their hex representation.
  * [AsyncDispatch2](https://github.com/status-im/nim-asyncdispatch2), an 
alternative to asyncdispatch, tradeoffs and design in the README.
  * [Daemon](https://github.com/status-im/nim-daemon), a daemonization library


Besides pure Nim libraries, several wrappers were also created:
    

  * [RocksDB](https://github.com/status-im/nim-rocksdb), a state-of-the-art 
key-value store
  * [MpDecimal](https://github.com/status-im/nim-decimal), a fixed precision 
decimal library. This is the default library used by Python to handle arbitrary 
precision integers and floats.



Honorary mention:

>   * [Quicktest](https://github.com/alehander42/nim-quicktest) A 
> Quickcheck/hypothesis testing to test assertions with random inputs.
> 


**B. Why Nim?**

  * Opportunity: Ethereum 2.0 is still at a pure research phase, and due to 
changes, this is will be a completely fresh start.
  * Performance: The original Status client backend is the official one written 
in Go. Unfortunately for mobile devices benchmarks showed that Nim could 
improve performance (and so power consumption)
  * C interface: Even though Nim ecosystem is small, it's easy to tap into 
existing C code, which is especially important for cryptography, and also to 
quickly test the waters before dedicating more time to a native Nim 
implementation.
  * Research: The Ethereum Foundation research is done in Python, Nim enables 
us to quickly reproduce research for our own proof-of-concepts or bridge the 
gap between research and production.



You are also very welcome to contribute, sorry for the state of documentation 
in some projects, we're always available on Gitter/IRC in any case.

Reply via email to