Skip to content

Latest commit

 

History

History
279 lines (205 loc) · 8.37 KB

README.md

File metadata and controls

279 lines (205 loc) · 8.37 KB

Tangle Network: Gadget SDK

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.

Table of Contents

Overview

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.

🌟 Features

  • 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

🛠 Project Structure

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

📋 Prerequisites

  • 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

🚀 Getting Started

Installation

  1. 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

Creating Your First Blueprint

  1. Create a new blueprint:
cargo tangle blueprint create --name my_blueprint
  1. Build your blueprint:
cargo build
  1. Deploy to Tangle Network:
cargo tangle blueprint deploy --rpc-url wss://rpc.tangle.tools --package my_blueprint

🔑 Key Management

Key Generation

Generate cryptographic keys using the CLI:

cargo tangle blueprint generate-keys -k <KEY_TYPE> -p <PATH> -s <SURI/SEED> --show-secret

Supported Key Types

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

🔧 Configuration

Feature Flags

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"

Environment Variables

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"

🔨 Core Components

Blueprint System

The Blueprint system is the core of the Tangle Network Gadget framework:

  • Template Engine: Standardized blueprint creation
  • Metadata Management: Blueprint information and configuration

Network Clients

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

Cryptography

Comprehensive cryptographic implementations:

  • Multiple Schemes: Support for various signature algorithms
  • Key Management: Secure key storage and handling

Event System

Robust event handling system:

  • Event Listeners: Custom event monitoring
  • Async Processing: Non-blocking event handling
  • Filtering: Configurable event filtering
  • Error Handling: Robust error recovery

Storage

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)

🧪 Development

Testing

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

🤝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details on how to get started.

📮 Support

  • Issues: Use GitHub Issues for bug reports and feature requests
  • Discussions: Join our community discussions on GitHub
  • Discord: Join our Discord server