As a witness, my task is to maintain a node that signs blocks for the Steem blockchain, but I've also set to develop tools that help everyone (mostly witnesses, though) manage their nodes and ensure the network is as strong as possible. More info can be found in my witness post and first bts_tools post on steemit.
I also plan to provide general services, such as the seed nodes status page (I have others in mind), but most importantly all the code needs to be open-source (free software, ideally, but I can compromise :p ) so that if anything happens to me, then others can just grab the code and keep providing the same services.
Unfortunately, I have a lot less time than ideas, so I have decided to devote part of my witness pay to bounties for people helping me on various development tasks that I feel are important.
So here's a list of current ideas and associated rewards, consider it non-exhaustive and if you feel like you have an idea for something you'd like to add (as long as it makes sense given the scope of the project) and would like to get a bounty for it too, please don't hesitate to contact me.
General / branding / documentation
The bts_tools project originated when BitShares was only nascent and hence inherited the name. However, the scope of the project has since then evolved and a re-branding would be quite welcome.
So:
- [??? STEEM] I'd like to open a contest for a new name. The new scope of the project is:
- support all Graphene-based blockchains, as I believe Graphene will become the main substrate of an entire ecosystem of scalable and efficient blockchains
- easily compile, run and monitor full nodes (witnesses), but also seed nodes, API nodes, IPFS nodes in the future, etc. (like before, but scope not limited to witnesses, now deals with all types of specialized nodes that can provide a useful service to the network)
- deploy and supervise a swarm of those nodes easily, automatically replace failing nodes, etc.
I've been thinking about graphene-tools
, but that's really un-original... I've been thinking about overmind
, for the ability to control a swarm of nodes, but maybe that's too much StarCraft-related... (I kinda like it, though!) So please, let me know suggestions and/or opinions! I didn't want to put a specific bounty on this, so I'll leave it up to my own judgement when/if someone comes up with a name I like.
- [200 STEEM] a logo! This will be dependent first on the new name, but I'd like to have a nice logo too :)
- [400 STEEM] beautify http://status.steemnodes.com, including the new map view. Nothing too fancy, but something better than default bootstrap theme and default highmaps theme would be welcome (see for instance: https://bitnodes.21.co/). Bounty is for design + implementation.
- [400 STEEM] revamp/reorganization of the documentation + adding documentation on the config file format and the new deployment capabilities. I take wayyy too long to write documentation because I want it to be perfect, and finally end up not writing it... I am more than willing to guide someone that has better writing skills than me, though, and show him all the tips and tricks that should appear in the doc.
Deploy script
The new deploy script in the bts_tools is already useful (I use it a lot, eating your own dog food and all), but I'd like to expand its breadth and diversity to ensure it is possible to quickly deploy a heterogeneous environment of nodes (IMO diversity is absolutely essential if you want to have security)
- [100 STEEM] more VPS support: DigitalOcean, Azure, etc. Bounty is for each provider.
- [200 STEEM] more OS support: CentOS, OpenBSD, etc. Bounty is for each OS.
- [100 STEEM] process supervision should be done using systemd instead of supervisord as is currently done. As a test, stopping the client should wait that it has properly exited (after having sent SIGINT), ie: restarting should not replay.
- [50 STEEM] deployed server should check green with ssllabs (https://www.ssllabs.com/ssltest/) (all at 100% if possible)
- [100+ STEEM] deploy script should install and configure logwatch, fail2ban and other IDS.
- [100 STEEM] deploy script should install some resource monitoring program (CPU, RAM, network, disk I/O, etc.)
- [100 STEEM] configure port knocking for SSH
- [??? STEEM] generally, more hardening of the entire system. For instance, no information should be leaked (eg: "nginx/1.10.0 (Ubuntu)" when uwsgi is down). Exact bounty to be discussed depending on what's done.
- [400 STEEM] adapt script to also be able to generate a Docker or rkt image
Other
- [100 STEEM] currently, the bts_tools can notify you by email or Boxcar. Add new ways, such as Telegram, an Android push notification system, etc. Bounty is per notification system.
- [400 STEEM] add latency, version and head block number to http://status.steemnodes.com. This involves communicating a bit with the nodes, not only checking that they accept connections.
- [400 STEEM] Fix https://github.com/steemit/steem/issues/36. Quite the annoyance for OSX users...
Parting thoughts
Bounties will be paid upon merging a pull request containing the work. Also note that if you have done a lot more work than anticipated for a bounty, I am open to discuss the final value of the bounty.
Please note: I will add a +50% bonus to each bounty if it is paid in Steem Power instead of liquid Steem.
With that being said, happy coding!