CPS: Kurtosis Deployment Package for ICON
Project Overview
This Project aims to implement kurtosis services and API for ICON Blockchain. The kurtosis services and API are designed to simplify the process of deploying various nodes and services for development and testing and enhance the overall user experience. Implementing kurtosis for the ICON blockchain can help ease the developers in the ecosystem to focus more on building the business logic without worrying about the setup which consumes a significant amount of time.
The project complements the vision of making ICON the interoperable hub by easing the setup of BTP and IBC for ICON and the connecting chains.
Ecosystem Fit
Kurtosis is a distributed application development platform. Its goal is to make building a distributed application as easy as developing a single-server app. Setting up nodes individually is a tedious and time-consuming task for developers that can take up a significant amount of time. It requires developers to perform several manual steps to get the nodes up and running, which can be a frustrating experience.
Fortunately, the implementation of Kurtosis in the deployment ecosystem provides a solution to this problem. Kurtosis is a multi-container system that simplifies the deployment process and enables the running of multiple blockchain nodes. This feature significantly reduces the amount of time and effort required to set up nodes individually and makes the deployment process more efficient.
Moreover, the dynamic setup of nodes can be a source of errors. For instance, passing IPs or runtime-generated data between services or contracts can lead to errors during the setup. Kurtosis eliminates these issues, making the deployment process more reliable and error-free.
By implementing Kurtosis, errors during deployment can be reduced, and it becomes easier to set up environments for development and testing purposes. It streamlines the entire process, allowing developers to focus on other essential tasks and enhancing the overall user experience.
Why use Kurtosis?
Developers usually set up dynamic environments with a free-form scripting language like bash or Python, interacting with the Docker CLI or Docker Compose. Kurtosis is designed to make these setups easier to maintain and reuse in different test scenarios.
In Kurtosis, test environments have these properties:
- Environment-level portability: the entire test environment always runs the same way, regardless of the host machine
- Composability: environments can be composed and connected without needing to know the inner details of each setup
- Parameterizability: environments can be parameterized, so that they’re easy to modify for use across different test scenarios
Kurtosis aims to bring DevOps back, by providing the developer with a single platform for prototyping, testing, debugging, deploying to Prod, and observing the live system.
Challenges with Existing Solutions
While working on multi-chain projects like ICON Bridge, BTP, and IBC we have faced significant challenges in having the development environment setup where we had used docker-compose and bash scripts. But it requires modifying too many commands depending on what the target environment is and runs a very high risk of user error and unreliable. Source
Technologies
- GoLang
- Docker
- StarLark
- Kurtosis
- Bash
Our Team
Our team at HugoByte is comprised of the developers who contributed towards the implementation of xCall, the Inter-Blockchain Communication Module (IBC), and the Blockchain Transmission Protocol (BTP) in the ICON Ecosystem. This extensive experience has made our team highly acclimated to the ICON Ecosystem, BTP, and IBC, allowing us to deliver results with confidence and efficiency.
We are proud to have assembled a team of highly experienced and skilled professionals, including a senior developer, a mid-level developer, and a senior tester known for their precision and accuracy. With our team at HugoByte, you can be confident that we will deliver top-notch results.
Team members
-
Siddh Jain - Project Lead
-
Muhammed Irfan - Principle Engineer
As a Senior Principal Engineer and CTO at HugoByte with over 10+ years of invaluable experience, Muhammed Irfan possesses exceptional expertise in multiple domains such as Blockchain and AI. He is also highly proficient in designing state-of-the-art architecture and infrastructure, as well as mastering full-stack development.
-
Shreyas K S - Senior Developer
As a Senior Developer with over 4 years of experience in Rust and GoLang, he is also knowledgeable in Python, C#, and C. He is one of the Core developers and Tech Lead in the implementation of IBC and BTP integration to the ICON Ecosystem
-
Pratiksha M N - Mid Level Dev
As an Associate Level Rust Developer with nearly 2 years of experience, she also has knowledge of Python and Java. Core developer on implementation of IBC and BTP integration to Icon Ecosystem
-
Hemanth Kumar - Senior Tester
He is a senior tester with over 8 years of experience in testing, skilled in manual, automation, end-to-end, and integration testing. Additionally, He is proficient in Golang, Java, and Python.
Overview
- Category: Infrastructure
- Estimated Duration: 3-4 weeks
- Full-time equivalent (FTE): 2 FTE
- Costs: $6,600
Development Roadmap and Deliverables
Future Plan
Integration with Cross-Chain Testing Framework
As a future plan, this solution can be integrated with a test framework that supports cross-chain testing. This integration will provide developers with a seamless experience in setting up nodes for testing purposes. By integrating this solution with a cross-chain testing framework, developers can save significant time and effort that would otherwise be required to manually set up nodes for testing.
This integration will also make the deployment process more efficient and reliable. With this solution and a cross-chain testing framework, developers can automate the process of node deployment, thus reducing the possibility of errors during the setup and making the deployment process more reliable.
The integration of this solution with a cross-chain testing framework will enhance the overall user experience by streamlining the entire process, allowing developers to focus on other essential tasks. It will also make it easier for developers to test their applications in a multi-chain environment, thus providing a more comprehensive testing experience.