Interchaintest v8.7
Aug 26, 2024
Reece Williams
Summary
Interchaintest v8.7 is live! This version adds support for new networks including Bitcoin, Litecoin, Dogecoin, Thorchain, Binance Smart Chain, and Penumbra IBC. Further, we expand our interaction drivers to include Typescript and Bash.
New Networks
As IBC expands, we must support more networks within the suite to assist in expanding IBC everywhere. Early this year we added Ethereum foundry support, which developers now use for IBC light client development(sp1-ics07-tendermint), Solidity IBC implementation, and bringing decentralized storage to the EVM.
Today, we take the next step by adding Ethereum geth support to enable networks like Binance Smart Chain. Developers can now run, test, and interact with the most popular EVMs to further interoperability.
The next significant ecosystem aside from Cosmos and Ethereum consists of UTXO networks. This includes the likes of Bitcoin, Litecoin, and Dogecoin. With the release of v8.7, you can use any of these networks with the same configuration experience as other networks, delivering excellent DevX, streamlined setup, and easy interaction within your workflows.
With UTXO and Ethereum geth support in place, Thorchain has also been added to the stack for full network simulations. This allows testing native asset settlement between cross-chain ecosystems.
NOTE: Avalanche support is a work-in-process.
More Languages
Interchaintest is the first language-agnostic end-to-end testing framework in all of crypto, and now supports Typescript and Bash in addition to the launch support for Golang, Rust, and Python. Both new drivers are at feature parity with one another and existing drivers. These new drivers allow you to write tests in an environment you are comfortable with, while using the common tooling in your workflows.
Typescript is the language of choice for many web developers. Today nearly all Cosmos and interchain-based websites use this language alongside CosmJS or interchain-js. Frontend developers can now test their applications, in the Typescript driver alongside CosmJS, using tooling and syntax they already know.
Bash is one of the most used scripting languages in computing, especially for infrastructure and DevOps. Sometimes you just want to throw something together and it works. Currently, many teams write locally idiosyncratic bash testing scripts, with highly divergent formats and patterns. Now you can get the power and flexibility of Bash but with just a single source line for your script.
Notable Features
Signal Handling
We’ve added improved OS signal handling to ensure that when you interrupt a test the system properly cleans up all dangling images. This prevents leftover container processes and makes your local testing environment more stable for fresh test runs. This change only affects local environments and does not extend to Github CI/CD pipelines.
Config Builder
Building a config file can be really hard, especially when there are lots of values to configure. To simplify this process we introduce ChainBuilder. This programmatic approach allows you to script extremely time-consuming and difficult connections when building new networks. One example would be to launch 30 unique chains and connect them all with IBC in just a few lines of code.
YAML Config Support
We understand that not all developers like JSON config files. We have now added YAML as a supported config file type, allowing you to write comments. Example: local-interchain/chains/hub.yaml.
Remote Configs
When using local-ic, you may want to share network configurations with other team members and not have to push code up, git pull, and run. With the latest release you can upload your json or yaml config to any raw text sharing platform and run directly in local-ic.
local-ic start https://pastebin.com/raw/Ummk4DTM
Native Binary Interaction
Local-Interchain can now query, transact, or modify networks directly in the CLI. Previously, you had to interact with one of our language drivers, which wasn’t always the ideal solution. The new interact command simplifies this process by wrapping a curl request to the API.
We simplify this:
curl -X POST -H "Content-Type: application/json" -d '{"chain_id": "localcosmos-1","action": "query","cmd": "bank balances cosmos1hj5fveer5cjtn4wd6wstzugjfdxzl0xpxvjjvr"}' http://127.0.0.1:8080/
To just:
local-ic interact localcosmos-1 query bank balances cosmos1hj5fveer5cjtn4wd6wstzugjfdxzl0xpxvjjvr
Anything you can do in one of the drivers you can do within this interaction for quick modifications or data analysis.
Improved Error Handling for Cosmos Queries
We’ve fixed error handling for Cosmos staking and slashing queries, making interactions with Cosmos blockchains more reliable.
Conclusion
Interchaintest v8.7 marks a major milestone in our mission to support the broadest range of networks and to streamline development processes for everyone in the stack. With the addition of UTXO and Ethereum Geth support, expanded language drivers, and enhanced features and fixes, this release empowers developers to build, test, and deploy with greater efficiency and confidence. Whether you're working with established networks like Bitcoin and Ethereum or exploring the latest interchain technologies, Interchaintest v8.7 provides the tools you need to advance your projects and contribute to the growing ecosystem.