A comprehensive toolkit for building, deploying, and managing blueprints to run on gadgets on the Tangle Network. This workspace provides a collection of Rust crates that enable developers to create and interact with blockchain-based applications.
- Overview
- Features
- Project Structure
- Prerequisites
- Getting Started
- Key Management
- Configuration
- Core Components
- Development
- Contributing
- Support
Tangle Network's Gadget SDK is a modular framework designed to simplify the development and deployment of blockchain applications (blueprints) on the Tangle Network. It provides a comprehensive set of tools and libraries for blockchain interaction, cryptographic operations, and network communication.
-
Blueprint System
- Template-based blueprint creation
- Automated deployment workflows
- Metadata Management
-
Multi-Chain Support
- Native Tangle Network integration
- EigenLayer compatibility
- EVM chain support
- Cross-chain communication
-
Advanced Cryptography
- Multiple signature schemes (BLS, Ed25519, SR25519)
- Secure key management
-
Networking
- P2P communication via libp2p
- Custom protocol implementations
- NAT traversal
- Peer discovery and management
-
Development Tools
- CLI for common operations
- Comprehensive testing framework
- Performance benchmarking
- Debugging utilities
tangle-network-gadget-workspace/
โโโ cli/ # Command-line interface tools
โ โโโ src/ # CLI implementation
โ โโโ README.md # CLI documentation
โโโ crates/ # Core functionality crates
โ โโโ benchmarking/ # Performance testing tools
โ โโโ blueprint/ # Blueprint core system
โ โ โโโ manager/ # Blueprint lifecycle management
โ โ โโโ metadata/ # Blueprint metadata handling
โ โ โโโ serde/ # Serialization utilities
โ โโโ clients/ # Network clients
โ โ โโโ core/ # Shared client functionality
โ โ โโโ eigenlayer/ # EigenLayer integration
โ โ โโโ evm/ # Ethereum Virtual Machine client
โ โ โโโ tangle/ # Tangle Network client
โ โโโ crypto/ # Cryptographic implementations
โ โโโ event-listeners/ # Event handling system
โ โโโ keystore/ # Key management
โ โโโ networking/ # P2P networking
โ โโโ runners/ # Execution environments
โ โโโ utils/ # Shared utilities
โโโ .config/ # Configuration files
- Rust (nightly-2024-10-13)
- Cargo
- OpenSSL development packages
- CMake (for certain dependencies)
For Ubuntu/Debian:
apt install build-essential cmake libssl-dev pkg-config
For macOS:
brew install openssl cmake
- Install the Tangle CLI:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tangle-network/gadget/releases/download/cargo-tangle/v0.1.1-beta.7/cargo-tangle-installer.sh | sh
Or install from source:
cargo install cargo-tangle --git https://github.com/tangle-network/gadget --force
- Create a new blueprint:
cargo tangle blueprint create --name my_blueprint
- Build your blueprint:
cargo build
- Deploy to Tangle Network:
cargo tangle blueprint deploy --rpc-url wss://rpc.tangle.tools --package my_blueprint
Generate cryptographic keys using the CLI:
cargo tangle blueprint generate-keys -k <KEY_TYPE> -p <PATH> -s <SURI/SEED> --show-secret
Key Type | Description | Use Case |
---|---|---|
sr25519 | Schnorrkel/Ristretto x25519 | Tangle Network account keys |
ecdsa | Elliptic Curve Digital Signature Algorithm | EVM compatible chains |
bls_bn254 | BLS signatures on BN254 curve | EigenLayer validators |
ed25519 | Edwards-curve Digital Signature Algorithm | General purpose signatures |
bls381 | BLS signatures on BLS12-381 curve | Advanced cryptographic operations |
The CLI and core libraries support various feature flags for customizing functionality when building blueprints:
Feature Flag | Description | Components Included |
---|---|---|
default | Standard installation | Tangle + EVM support with standard library features |
std | Standard library features | Core functionality with std support |
tangle | Tangle Network support | Tangle Network client, keystore, and EVM integration |
eigenlayer | EigenLayer integration | EigenLayer clients, keystore, and EVM support |
evm | EVM chain support | Ethereum JSON ABI, provider, network, and signer support |
The crypto system supports multiple signature schemes:
- k256 (ECDSA)
- sr25519 (Schnorrkel)
- ed25519
- BLS (including BN254)
- Tangle pair signer
- Substrate crypto (sp-core)
Installation examples:
# Default installation (includes Tangle + EVM)
cargo install cargo-tangle
# EVM support only
cargo install cargo-tangle --features evm
# Full installation with EigenLayer support
cargo install cargo-tangle --features "tangle,eigenlayer"
Required environment variables for different operations:
Variable | Description | Example |
---|---|---|
SIGNER | Substrate signer account SURI | export SIGNER="//Alice" |
EVM_SIGNER | EVM signer private key | export EVM_SIGNER="0xcb6df..." |
RPC_URL | Tangle Network RPC endpoint | export RPC_URL="wss://rpc.tangle.tools" |
HTTP_RPC_URL | HTTP RPC endpoint | export HTTP_RPC_URL="https://rpc.tangle.tools" |
The Blueprint system is the core of the Tangle Network Gadget framework:
- Template Engine: Standardized blueprint creation
- Metadata Management: Blueprint information and configuration
Specialized clients for different blockchain networks:
- Tangle Client: Native integration with Tangle Network
- EigenLayer Client: AVS (Actively Validated Service) integration
- EVM Client: Ethereum and EVM-compatible chain support
Comprehensive cryptographic implementations:
- Multiple Schemes: Support for various signature algorithms
- Key Management: Secure key storage and handling
Robust event handling system:
- Event Listeners: Custom event monitoring
- Async Processing: Non-blocking event handling
- Filtering: Configurable event filtering
- Error Handling: Robust error recovery
Flexible storage solutions:
- Local Database: Efficient local storage
- Key-Value Store: Fast key-value operations
- File System: Secure file storage
- Remote Storage: Cloud storage integration (e.g., AWS, GCP, Ledger)
The framework includes comprehensive testing tools:
# Run all tests
cargo test
# Run specific test suite
cargo test --package my_blueprint
# Run with logging
RUST_LOG=gadget=debug cargo test
We welcome contributions! Please see our Contributing Guidelines for details on how to get started.
- Issues: Use GitHub Issues for bug reports and feature requests
- Discussions: Join our community discussions on GitHub
- Discord: Join our Discord server