Attributes
Author(s): Shane Burgett
Recipient(s): Shane and Ryan Burgett
Category: Reimbursement
Fulfills: RFP-7: Node Deployment Tools
Asking Amount: 192k POKT
Summary
The Node Pilot project is now almost one and a half years old and has been used to deploy hundreds of nodes and with 150+ mainnet POKT validators while in beta. Not only has development continued, but has led to the development of a powerful, open-source, node deployment engine called Node Launcher. While our April proposal reimbursed this project for much of the cost for the prior 7 months of development, we now want to introduce Node Launcher and ask for continued support to fund these free resources.
Background
Shane Burgett and Ryan Burgett started developing Node Pilot shortly after POKT mainnet launched in August 2020. Shane has been a full-time contributor to the Pocket ecosystem since 2019, first working in areas of business development and customer support and is now focused on Node Pilot and community support. Ryan is a full-stack crypto application developer with years of experience in the areas of wallets, interoperability platforms, mining, and node deployment.
Motivation/Rationale
Node Pilot has been a direct response to RFP-7: Node Deployment Tools, and we are now hitting a new phase of the project. After publicly launching the Node Pilot Beta back in April, we quickly realized scaling to more chains was going to create a lot of technical debt. At the time we were hard-coding docker files into Node Pilot and we knew we were going to need a better way to standardize how nodes can be deployed and updated. So instead of managing repositories of docker files (like DappNode and Avado do), we set out to build a programmatic platform that would act as a standardized toolkit developers could use to create other node deployment applications.
This resulted in the creation of Node Launcher, a node deployment engine written in TypeScript that enables the easy creation of node deployment applications. With a few lines of JavaScript, an application can deploy and manage Docker based nodes and validators. This mitigates the need for CLI, bash scripts, or wrestling docker config files, as developers can programmatically build full stack blockchain applications, similar to Node Pilot, using only JavaScript.
Notable core features include:
- Seamless updating
- Upgrading nodes to validators
- Unit/integration test suite
- Flexible API for enabling more features in the future.
Node Launcher has now been used by independent node runners to deploy hundreds of chain nodes via Node Pilot. To showcase Node Launcher’s abilities to be used for other applications, we have created an open-source demonstration app built with only Electron and Node Launcher. It is a simple Geth node launcher that was built in a few hours and shows how an application is able to launch and manage docker containers with only JavaScript via Node Launcher’s APIs.
Our desire is to grow this library to be an approachable tool for creating a new category of node deployment/management applications. Developers can create their own multi-chain, multi-shard, multi-client, multi-network deployment applications in a standardized and open way that can stay up-to-date with the latest client software.
Just like how Ethers.js made Ethereum application development more approachable to developers, Node Launcher can make node deployment just as approachable.
It can easily be used for applications ranging from user-facing applications (e.g. full-node wallets) to server applications (e.g. web3 backends) all the way to large software-controlled enterprise deployments. It is also extremely useful as a prototyping tool for developers who need local nodes during application development.
Objective(s)
- Reimburse for the past 7 months of development
- Setup Node Pilot and Node Launcher with 7 months of budget runway
Objective Key Results
Node Launcher:
- Enable Node Launcher to be a universally approachable toolkit for node deployment applications.
- Provide clear documentation on usage and APIs to allow other projects to build upon.
- Ensure seamless updating with the latest client versions.
- Finalize and standardize the validator node API.
- Automated testing to provide protection against potential breaking updates, via an automated test suite.
FUN FACT: Node Launcher’s test suite is what identified the RPC version discrepancy in Pocket’s 0.7.0 release.
Node Pilot:
- Continue expanding Node Pilot features now that the Node Launcher engine is built and integrated.
- Lean more into features that empower Pocket Valiators with more control and performance insights.
- Launch Node Pilot v1 in Q1 2022. This will take Node Pilot officially out of beta and be encouraged for production use.
Community Support:
- Continue providing consistent and timely support to new node runners.
- The Node Pilot Discord server fields the most questions from new node runners. The support Ryan and Shane provide has helped countless folks get their nodes running, since the launch of Node Pilot in April.
- Appropriate feedback from the community on features to add.
- Many Node Pilot updates in the past 7 months have focused on feedback we have received from the community. With Node Launcher coming close to completion, we hope to increase the speed to which we can add features from the community.
Needs Being Met
Node Launcher provides an expandable toolkit solution to RFP-7: Node Deployment Tools by enabling applications to be built deployment apps with simple APIs. See our Ethereum demonstration app.
Node Pilot continues growing in adoption and enables node runners to deploy self-hosted nodes.
Dissenting Opinions
No known dissenting opinions on Node Pilot or building Node Launcher. Node Pilot progresses reports have been given in 3 past community calls (since the original proposal), and Node Launcher was first presented in full to the Pocket Community in the June community call.
Deliverable(s)
- Complete Node Launcher development (80%):
- Completed:
- Node deployment APIs
- Node updating APIs
- Basic control command APIs (easily expandable)
- Start
- Stop
- Status
- Version
- Block height
- In progress:
- Validator deployment APIs
- Node Launcher update API
- Persistent containers (containers can persist even after Node Launcher is closed)
- Completed:
- Create Node Launcher documentation (10%)
- Complete Node Pilot v1 (85%)
- Completed:
- Node Launcher integration
- Daemon functionality
- System Debug Tool
- Terminal commands and flags
- Extensive logging
- Auto Backups for configs
- In progress features = Node Launcher in progress features
- Completed:
- Complete Node Pilot Documentation (~100%)
- Node Pilot has living documentation that is constantly being updated to include new features and relevant information.
- Launch Node Pilot v1 campaign (40%)
- Cross-community partnerships (Fuse and Harmony thus far and more are in the works)
- Walk-through videos
Budget
In the past 7 months, development and time invested has increased substantially since our initial reimbursement proposal last April. Between Ryan and Shane, 580+ hours have been put into these projects the past 7 months, including nearly 400 development hours. This reimbursement would cover time and and resources invested into:
- Development
- User Resources
- Testing
- Community Support
Instead of asking for a budget prior to showing work, we opted to develop first, prove the value of the software and tooling, and then ask the community and DAO to gauge if it’s worthy of reimbursement as a free tool for the community. This approach has been encouraged by the community and follows our April proposal.
Reimbursement budget: 124,000 POKT (similar value to our previous 7 month proposal)
Development has increased significantly since April, and a runway budget would enable momentum to continue uninterrupted. We are in the process of diversifying our funding by doing integrations with other chains like Fuse and Harmony. This will enable Node Pilot and Node Launcher to be cross-community projects and spread the funding burden.
Because of this, we are asking for a 50% runway to set us up for the next 7 months. We plan to make up the other 50% from the other project integrations. There is a good chance we will need to scale our team in 2022 and a runway would help make that a possibility.
Runway Budget: 68,000 POKT
Total Budget: 192,000 POKT
Development Goals Beyond This Proposal
- Multi-chain Validation
- Node Pooling
- Mobile application (iOS & Android)
- Notifications
- Fleets (enterprise-ready API platform for multi-instance orchestrations)
Contributor(s)
Shane Burgett - Long time contributor with a background in business development, marketing, design, and media production.
Ryan Burgett - Full-stack Web3 application developer with 4+ years of experience in the areas of wallets, interoperability platforms, mining, and node deployment.
Copyright
Copyright and related rights waived via CC0.