An Envio Hyperindexer-as-a-Service Blueprint for Tangle
A Tangle Blueprint for managing multiple Envio indexers through job execution. This blueprint enables automated deployment and management of Envio indexers through Tangle's job system.
- Spawn multiple Envio indexers per instance
- Manage indexers through Tangle jobs
The blueprint exposes jobs that can be called through Tangle's job system. All configurations are passed as serialized bytes.
// Example job call (from your application)
let config = IndexerConfig {
name: "uniswap_v3",
contracts: vec![
ContractConfig {
name: "UniswapV3Pool",
address: "0x...",
events: vec![...]
abi: "..."
}
]
};
let params = serde_json::to_vec(&SpawnIndexerParams { config })?;
let result = call_job(0, params).await?; // Returns indexer ID
Before you can run this project, you will need to have the following software installed on your machine:
You will also need to install cargo-tangle, our CLI tool for creating and deploying Tangle Blueprints:
To install the Tangle CLI, run the following command:
Supported on Linux, MacOS, and Windows (WSL2)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tangle-network/gadget/releases/download/cargo-tangle-v0.1.2/cargo-tangle-installer.sh | sh
Or, if you prefer to install the CLI from crates.io:
cargo install cargo-tangle --force # to get the latest version.
Before running tests, ensure you have the following installed:
- Create a local Kubernetes cluster using Kind:
kind create cluster --name test-cluster
- Create the test namespace:
kubectl create namespace test-namespaces
- Set up a local Docker registry:
docker run -d -p 5000:5000 --name registry registry:2
- Connect the registry to Kind network
docker network connect kind registry
The test suite includes both unit tests and integration tests that interact with the local Kubernetes cluster. Run them with:
cargo test
Key test files:
src/kubernetes/deployment.rs
: Tests for Kubernetes deployment managementsrc/lib.rs
: Integration tests for indexer spawningsrc/envio.rs
: Tests for Envio project lifecycle
The tests verify:
- Deployment configuration building
- Service configuration building
- Local indexer spawning
- Kubernetes indexer deployment
- Envio project lifecycle management
Reference implementation:
- Delete the Kind cluster
kind delete cluster --name test-cluster
- Remove the local Docker registry
docker rm -f registry
- Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
We welcome feedback and contributions to improve this blueprint. Please open an issue or submit a pull request on our GitHub repository.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.