Files
40eadc995e Feat/1285 es ucan formatting (#1302)
* feat: Add Enclave Usage Examples

* feat(es/ucan): Add comprehensive integration tests

- Create integration.test.ts with full UCAN token lifecycle testing
- Cover end-to-end token creation, parsing, and validation
- Test capability attenuation and delegation chains
- Validate multi-algorithm support and timestamp scenarios
- Implement error recovery and performance test scenarios

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>

* No commit suggestions generated

* No commit suggestions generated

* chore: Remove migrated components and add migration documentation

Removed all code and references for components that have been moved to separate repositories:

**Moved to sonr-io/hway:**
- bridge/ - HTTP service with OAuth2/OIDC/WebAuthn handlers
- cmd/hway/ - Highway service binary
- internal/migrations/ - PostgreSQL schema migrations

**Moved to sonr-io/motr:**
- cmd/motr/ - Motor worker service (WASM vault operations)
- cmd/vault/ - Vault CLI tool
- crypto/ - Comprehensive cryptographic library
- packages/ - TypeScript SDK packages (es, sdk, ui, com, pkl)
- web/auth/ - Authentication web application
- web/dash/ - Dashboard web application

**Updated Configuration:**
- Makefile: Removed build/test/release targets for moved components
- CLAUDE.md: Simplified to focus on core blockchain components
- devbox.json: Removed scripts for moved services
- docker-compose.yml: Removed hway, postgres, redis, auth, dash services
- .github/scopes.yml: Removed CI scopes for migrated components
- .goreleaser.yml: Updated release configuration

**Added Migration Documentation:**
- MIGRATE_HWAY.md: Comprehensive Highway service architecture and migration guide
- MIGRATE_MOTR.md: Comprehensive Motor/Worker/Vault architecture and migration guide

These migration documents provide complete context for setting up the new repositories including architecture diagrams, component breakdowns, API documentation, and migration checklists.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* No commit suggestions generated

* chore: Remove contracts references and documentation

Removed all references to the contracts directory that was migrated to a separate repository.

**Changes:**
- .gitignore: Removed contract-specific ignore patterns for DAO and wSNR contracts
- .gitignore: Removed hway and motr binary references (already migrated)
- .rgignore: Removed contracts, chains, and crypto directory references
- docs/reference/contracts/: Removed DAO.mdx and wSNR.mdx documentation files

This completes the cleanup of migrated components from the repository.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: add crypto library migration documentation

Added comprehensive migration documentation for the crypto library that was
moved to sonr-io/crypto repository. This documentation provides complete context
for understanding the cryptographic primitives and protocols used throughout
the Sonr ecosystem.

## Key Documentation Added

### MIGRATE_CRYPTO.md
Complete documentation of the crypto library covering:

**Core Cryptographic Primitives**
- Elliptic curve implementations (Ed25519, Secp256k1, P-256, BLS12-381, Pallas/Vesta)
- Native curve arithmetic with optimized field operations
- Pairing-friendly curves for BLS signatures

**Multi-Party Computation (MPC)**
- MPC enclave for vault key generation and management
- Threshold cryptography (TECDSA, TED25519 with FROST protocol)
- Distributed Key Generation (DKG) via Gennaro and FROST protocols
- Secret sharing schemes (Shamir, Feldman VSS, Pedersen VSS)

**Digital Signature Schemes**
- BLS signatures with aggregation support
- BBS+ signatures for selective disclosure
- Schnorr signatures (standard and Mina/NEM variants)
- ECDSA with deterministic nonce generation

**Zero-Knowledge Proofs**
- Bulletproofs for range proofs
- Inner Product Arguments (IPA)
- Batch verification support

**Advanced Cryptographic Protocols**
- Cryptographic accumulators for set membership proofs
- Paillier homomorphic encryption
- Oblivious Transfer (OT) protocols
- Verifiable Random Functions (VRF)

**Key Management & Identity**
- DID key management with multi-chain support
- Multi-algorithm public key handling
- Wallet address derivation (Bitcoin, Ethereum, Cosmos, Solana, etc.)

**UCAN Integration**
- User-Controlled Authorization Networks
- Capability delegation and attenuation
- JWT-based capability tokens
- MPC-enabled UCAN signing

**Security Utilities**
- AEAD encryption (AES-GCM, AES-SIV)
- Argon2 key derivation
- ECIES encryption
- Secure memory handling

### MIGRATE_MOTR.md Updates
Updated Motor migration documentation to clarify that the crypto library
is now a separate external dependency at github.com/sonr-io/crypto v1.0.1

## Repository Context

The crypto library has been successfully migrated to its own repository
and is published as a Go module. It serves as the foundational cryptographic
layer for:
- Sonr blockchain (snrd) - DID signatures, vault operations
- Highway service (hway) - UCAN token signing, WebAuthn
- Motor/Worker (motr) - MPC vault operations, threshold signatures

## Integration Impact

All Sonr ecosystem components now depend on the external crypto library:
```go
require github.com/sonr-io/crypto v1.0.1
```

The migration enables independent versioning and maintenance of cryptographic
primitives while maintaining security and compatibility across the ecosystem.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* No commit suggestions generated

* No commit suggestions generated

* No commit suggestions generated

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-10 11:47:18 -04:00
..
2025-10-03 14:45:52 -04:00
2025-10-03 14:45:52 -04:00
2025-10-03 14:45:52 -04:00
2025-10-03 14:45:52 -04:00
2025-10-10 11:47:18 -04:00
2025-10-03 14:45:52 -04:00
2025-10-03 14:45:52 -04:00
2025-10-03 14:45:52 -04:00

Sonr E2E Testing Framework

This directory contains the new Starship-based E2E testing framework that replaces the previous InterchainTest infrastructure.

Architecture

The E2E tests use Starship for local blockchain network deployment and HTTP REST API calls for chain interactions, providing a 75% reduction in test code complexity while maintaining full test coverage.

Directory Structure

test/e2e/
├── client/          # HTTP client utilities for Starship REST API
│   ├── chain.go     # Chain query methods (balances, supply, node info)
│   ├── tx.go        # Transaction broadcasting utilities  
│   └── ibc.go       # IBC operations (channels, connections, clients)
├── fixtures/        # Test data and configurations
│   └── config.yaml  # Test configuration with endpoints and accounts
├── tests/           # Test suites organized by functionality
│   ├── basic/       # Basic chain functionality tests
│   ├── ibc/         # IBC-related tests
│   └── modules/     # Module-specific tests (DID, DWN, SVC)
├── utils/           # Helper functions and common utilities
│   ├── faucet.go    # Account funding via faucet API
│   └── assert.go    # Test assertions and setup helpers
└── go.mod           # Go module definition

Configuration

The tests are configured to work with Starship using:

  • Chain ID: sonrtest_1-1
  • Staking Denom: usnr
  • Normal Denom: snr
  • REST API: http://localhost:1317
  • Faucet API: http://localhost:8000

These values are defined in utils/assert.go and can be customized as needed.

Prerequisites

  1. Starship Network: Tests require a running Starship network
  2. IPFS Infrastructure: Some tests may require IPFS nodes for vault operations
  3. Redis: Required for Highway service integration

Running Tests

Start the Network

# Start Starship network (uses chains/standalone.json config)
make testnet

# Verify network is running
kubectl get pods

# Check service endpoints
kubectl get services

Run E2E Tests

# Run all E2E tests
cd test/e2e
go test ./...

# Run specific test suites
go test ./tests/basic/...     # Basic functionality
go test ./tests/ibc/...       # IBC operations
go test ./tests/modules/...   # Module-specific tests

# Run with verbose output
go test -v ./tests/basic/

# Run specific test
go test -v ./tests/basic/ -run TestBasicChain

Stop the Network

make stop

Available Test Suites

Basic Tests (tests/basic/)

  • TestBasicChain: Node connectivity, funding validation, supply queries
  • TestFaucetOperations: Faucet funding with different amounts
  • TestChainConnectivity: REST API and faucet connectivity tests

IBC Tests (tests/ibc/)

  • TestIBCBasic: Channel existence and query operations
  • TestIBCDenomTrace: IBC denomination trace generation
  • TestIBCTransferSimulation: Transfer logic validation
  • TestIBCConnectionStatus: Connection state verification

Module Tests (tests/modules/)

  • TestSvcModule: Service module parameter queries
  • TestDIDModule: DID module functionality tests
  • TestDWNModule: DWN module parameter queries
  • TestTokenFactoryModule: Token factory integration tests

Client Libraries

StarshipClient

The main HTTP client for Starship REST API operations:

client := client.NewStarshipClient("http://localhost:1317")

// Query balances
balance, err := client.GetBalance(ctx, address, denom)

// Query node info
nodeInfo, err := client.GetNodeInfo(ctx)

// Get IBC channels
channels, err := client.GetChannels(ctx)

FaucetClient

Client for funding test accounts via Starship faucet:

faucet := utils.NewFaucetClient("http://localhost:8000")

// Fund account
coins := []sdk.Coin{{Denom: "snr", Amount: math.NewInt(1000000)}}
err := faucet.FundAccount(ctx, address, coins)

Test Utilities

Test Configuration

cfg := utils.NewTestConfig()
// Provides default endpoints, denoms, timeouts

Assertions

// Assert exact balance
utils.AssertBalance(t, cfg, address, denom, expectedAmount)

// Assert balance constraints
utils.AssertBalanceGreaterThan(t, cfg, address, denom, minAmount)
utils.AssertBalanceLessThan(t, cfg, address, denom, maxAmount)

// Assert supply
utils.AssertSupply(t, cfg, denom, expectedSupply)

// Assert node info
utils.AssertNodeInfo(t, cfg, expectedChainID)

User Setup

// Setup and fund test users
fundAmount := math.NewInt(10_000_000)
users := utils.SetupTestUsers(t, cfg, fundAmount)

Error Handling

All client operations include retry logic and proper error handling:

  • HTTP requests: 3 retries with exponential backoff
  • Transaction waiting: Configurable timeout with polling
  • Network connectivity: Graceful failure handling

Extending Tests

Adding New Tests

  1. Create test file in appropriate directory (tests/basic/, tests/ibc/, tests/modules/)
  2. Use table-driven test patterns for multiple scenarios
  3. Use the provided utility functions for common operations
  4. Follow existing naming conventions

Adding New Client Methods

  1. Add method to appropriate client file (client/chain.go, client/tx.go, client/ibc.go)
  2. Include proper error handling and retry logic
  3. Add corresponding response type structs
  4. Document the new functionality

Example New Test

func TestNewFeature(t *testing.T) {
    cfg := utils.NewTestConfig()
    ctx := context.Background()

    tests := []struct {
        name        string
        input       string
        expectError bool
    }{
        {"valid_case", "valid_input", false},
        {"invalid_case", "invalid_input", true},
    }

    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            // Test implementation
        })
    }
}

Migration Notes

This E2E framework replaces the previous InterchainTest-based tests with:

  • 75% less code: Simplified HTTP-based operations vs Docker container management
  • Faster execution: Direct REST API calls vs container orchestration
  • Better reliability: Leverages Starship's proven infrastructure
  • Easier debugging: Standard HTTP debugging tools and logs

The test assertions and coverage remain identical to ensure no regression in test quality.