The software is under open source license, available on GitHub for everyone to use with required developer documentation, and tutorials
Parachains have become extremely popular for building unique use cases, all while maintaining a seamless interoperability amongst various parachains and blockchains, especially within the Polkadot ecosystem. Yet, beneath the surface of coding and implementing business logic on parachains, a labyrinth of vital DevOps activities — crucial for their deployment, management, and scaling — often remain overlooked.
Before any parachain goes into production, it’s essential to subject it to intense testing within a simulated mainnet environment. Zombienet becomes an invaluable tool in this context to test parachain’s resilience by taking it through numerous brute force scenarios, replicating every possible real-world challenge it might encounter. This includes simulations with all node types, from full nodes to validator nodes, and stress-testing configurations to ensure stability and optimal behavior. A discernible gap also lies in the domain of advanced analytics and proactive monitoring, both imperative to validate performance and ensure readiness for the mainnet.
In pursuit of a solution, Zeeve submitted a detailed grant proposal at Web3 Foundation. Recognizing the merit in addressing this operational gap, the foundation lent its support, awarding a grant to Zeeve for the development of a GUI tool (LARCH) designed to automate the parachain simulation testing workflow using Zombienet.
Details of the Grant:
We are happy to announce that we have successfully completed both milestone I and Milestone II of our grant from the Web3 Foundation. This grant has enabled us to focus on the development of Larch for enhanced management of Zombienet with automation and monitoring. More details of the grant can be found here.
The software is now available under an open-source license on GitHub and accessible to everyone, complete with its source code, developer documentation and tutorials. We’re confident that Larch will significantly benefit the Polkadot/Substrate parachain developer ecosystem, extending its advantages to the larger Web3 community.
What is Larch?
Zeeve’s Larch is a comprehensive frontend for Zombienet CLI, seamlessly integrating with K8 and Podman. Larch is thoughtfully designed to simplify the Zombienet network creation, management, and testing processes. With it, developers and parachain teams can swiftly set up the relay chains and parachains with Zombienet, unlocking the potential to test a plethora of configurations easily right from the dashboard.
Key Features of Larch:
- Comprehensive Automation: Parachain setups are crucial and complex. Larch enables a simple UI driven Zombienet setup, including relaychain and parachain core configurations.
- Intuitive Configurations: Larch allows for a ‘pick and choose’ based selection for genesis parameters and chain configurations, crucial for initializing parachain setups tailored for the desired Zombienet.
- Flexible Replication: Choose from the existing zombienet configurations, save them as templates, or quickly modify and retest using previously saved templates. Users can also effortlessly upload new ones without delving into manual configuration creation.
- More operational control: Users can conveniently execute key operations such as start, delete, view progress & metrics directly from the dashboard, ensuring optimal testing flexibility.
- All-Inclusive Nde Setup: Supports the setup of all node types, be it Full node, Validator node, or Collator node.
- Real-time Logging: Enables developers to monitor live logs during test runs and review post-run results directly through the interface.
- Advanced Monitoring: Incorporates a stack of Prometheus and Grafana for effortless monitoring of Zombienet.
- Cloud Agnostic: Larch’s setup is universal and can be installed on any cloud / local machine of choice with Linux based OS.
In summation, Zeeve’s Larch is set to transform the way substrate & parachain developers interact with Zombienet, offering a simplified, efficient, and intuitive experience.
Deploying a Zombienet Network using Larch in a few clicks:
This tutorial focuses on creating a template and subsequently, a network from this template. The intention is to emulate the official Zombienet example found at Zombienet on GitHub.
Note: This guide is tailored for Linux systems. For Mac users, please refer to the Larch Prerequisites section. Although Mac isn’t officially supported yet, if Podman emulation operates smoothly, then Larch should be able to manage the network effectively.
Likewise, K8 execution on a remote Linux cluster via a Mac’s kubectl setup should function.
Example 1:
Step 1:
Get the larch binary either by downloading from the releases or build it yourself.
Step 2:
Ensure Podman / kubectl is installed as per the instructions on your system for the orchestration of the Zombienet networks.
Step 3:
Assign execute permissions to the larch binary using:
chmod 755 larch
Run the larch binary by doing:
./larch
Step 4:
Navigate to http://localhost:9000 in your browser. Click on the ‘Network Template +’ button located at the page’s top.
Step 5:
Label the template as “sample-template“. Choose either Podman or Kubernetes as the Provider based on your setup. Proceed by clicking ‘Next’.
Step 6:
Under the Relaychain Configuration section, populate the Nodes subsection. Insert “alice” as the name and select the ‘Validator’ option. By pressing the + button, add a new node. For this node, input “bob” and again choose ‘Validator’. Press Next.
Step 7:
In the Parachain Configuration section, tap on the ‘+‘ button. Set the Parachain ID to 100 (or any other number). Name the collator “collator01” and for the command, use ‘polkadot-parachain’. Click ‘Next’.
Step 8:
For this tutorial, we’ll bypass HRMP. Simply click ‘Next’.
Step 9:
Within the Test Configuration section, after the pre-filled sections, append the necessary configuration. Store the template by hitting ‘Save’.
Step10:
On the Templates page, the new template should now be visible. Select ‘Create’ to initiate the network. A dialogue box will pop up – input the network’s name and click ‘Confirm’ to start the orchestration. The app will transition you to the networks page while in the creation state.
Step 11:
To inspect command and execution logs, click on the ‘Eye’ icon. For a detailed command, tap the ‘Command’ button; a modal will pop up with the command and other metadata. To peruse logs/outputs, select the ‘Output’ button, opening another modal revealing the streams.
The preceding step concludes the network creation.
Step 12:
To access metrics of the deployed network, head to the My Network page and tap the ‘Monitoring’ icon. This redirects you to the Grafana service (default login: admin/admin). Within the Dashboards segment, locate and open the dashboard from the ‘General’ folder to inspect metrics.
Example 2:
Step 1:
Follow the instructions till step 4 from Example 1, and enter “small network” (you use any other words of your choice) in the Template name field, then click on next.
Step 2:
Enter “alice” in name field of nodes sub section, and check validator field, now click on + icon in nodes section
Step 3:
Enter “bob” in the name field in the new node sub section, check the validator field, now click on arguments + button to add new arguments. Add the following “–database=paritydb-experimental” in the argument field.
Step 4:
Click on next, now no parachain has to be added, click on next
Step 5:
No HRMP channels are to be added, click on next
Step 6:
Append the following text in the text editor, then click on save and confirm.
Creds: config
# metrics
alice: reports node_roles is 4
alice: reports sub_libp2p_is_major_syncing is 0
# logs
bob: log line matches glob "*rted #1*" within 10 seconds
bob: log line matches "Imported #[0-9]+" within 10 seconds
Step 7:
Follow the instructions till step 10 through step 12 from Example 1
Wrapping up:
Zeeve is deeply committed to the web3 ecosystem. As we conclude, our goal is clear: we want ‘Larch’ getting adopted widely and put to use in a diverse parachain testing scenarios. We are encouraging Polkadot/Substrate developers to utilize it for their testing needs and share feedback. Zeeve will continue to update and enhance Larch, adding new features based on community inputs. Together, we’ll keep iterating on Larch, ensuring it remains relevant and beneficial for all developers.