Hello, Nim community!
I'm happy to announce that Status.im is resuming the bounty program for the development of Nimbus, our Ethereum 1.0 and 2.0 client for resource-restricted devices. The bounty program has been a great way for us to introduce more developers to our projects and libraries and we've seen some significant successes stemming from it. Andri Lim, for example, has been one of our most active bounty hunters in the past and today he sits as the top committer in the Nimbus repository, now as a full-time member of our team and the sole driving force behind our Ethereum 1.0 development, while the rest of the team is focused on Ethereum 2.0.
For those of you, unfamiliar with the notion of open-source bounties, here is a short description of what this program is about:
- You get to pick a task from a varied list of available ones (these are the bounties).
- You work in your favourite language, Nim.
- Everything you do is given back to the community as open-source software (licensed under MIT and Apache 2.0).
- Once the work is complete, you get a predefined reward equal to roughly 30 USD per hour (paid in ETH, DAI or SNT).
For this restart of the program, we've tried to gather a very varied set of bounties to choose from. I think everyone will find something familiar in there, but we encourage you to pick a task that will give you a chance to learn more about Ethereum. Here are the best options for doing this:
Implement a JSON-RPC server in our beacon node
https://github.com/status-im/nim-beacon-chain/issues/723
Introduce the beacon-node/validator-client split
https://github.com/status-im/nim-beacon-chain/issues/767
Implement a "cold storage" database for historic blocks
https://github.com/status-im/nim-beacon-chain/issues/754
Add a report for passed/skipped/failed test in the Eth2 test suite
https://github.com/status-im/nim-beacon-chain/issues/744
Implement a transaction pool for Ethereum 1.0
https://github.com/status-im/nimbus/issues/469
Implement Turboproofs (an efficient scheme for compressing multiple merkle-proofs)
https://github.com/status-im/nimbus/issues/468
Support HTTPS in Nim's web3 client
https://github.com/status-im/nim-chronos/issues/78
Add fuzzing tests for existing components (SSZ and BLS)
https://github.com/status-im/nim-beacon-chain/issues/765
Ship the Nimbus EVM as a WebAssembly package
https://github.com/status-im/nimbus/issues/467
The rest of the bounties require only general programming knowledge. I've tried to loosely group them in the following categories:
System programming:
Implement async sub-process I/O in Chronos
https://github.com/status-im/nim-chronos/issues/77
Implementing standards and formats
Support ProtoBuf in nim-serialization
https://github.com/status-im/nim-serialization/issues/20
https://github.com/status-im/nim-snappy/issues/4
Implement TOML/YAML config file support in Confutils
https://github.com/status-im/nim-confutils/issues/13
Meta-programming:
Implement schema checksums in nim-serialization for quick version incompatibility detection
https://github.com/status-im/nim-serialization/issues/19
Chronicles enhancements:
Allow finer control when specifying the compile-time log level
https://github.com/status-im/nim-chronicles/issues/76
https://github.com/status-im/nim-chronicles/issues/75
https://github.com/status-im/nim-chronicles/issues/74
Make trace similar to debugEcho (no side effects)
https://github.com/status-im/nim-chronicles/issues/73
Prettier human-readable output for exceptions and complex record types
https://github.com/status-im/nim-chronicles/issues/72
Build scripts and Project automation:
Add cross-compiled targets in our Makefiles
https://github.com/status-im/nim-beacon-chain/issues/766
Automatically cross-link our READMEs with our reference documentation in https://libs.nimbus.team/
https://github.com/status-im/nimbus-docs-suite/issues/3
Publish Nimbus packages (for any OS of interest)
https://github.com/status-im/nimbus/issues/470
Refactoring:
Move the kvstore modules to nim-eth
https://github.com/status-im/nim-beacon-chain/issues/750
If you are interested in any of the bounties, please leave a comment in the underlying Github issue. We'll try to further clarify the work and provide an estimation for the bounty reward. If somebody else has already expressed interest, don't be shy to apply as well. On 10th of March, we'll be selecting the best candidates who have signed up for bounties that we consider to have highest priority.
During the implementation of the bounties, you'll have our continuous support. I'm available for a chat in gitter.im (username zah) or within our Discord server.
Good luck and may the source be with you!