Skip to content

v0.7.0

Choose a tag to compare

@odesenfans odesenfans released this 12 Mar 16:39
· 193 commits to main since this release
ccf8358

New Features

Message integrity verification (#46, #64)

  • New get_messages_and_verify() method verifies that message content hashes match, ensuring the CCN has not tampered with data.
  • Inline messages are verified locally; non-inline messages (storage/IPFS) are verified by downloading raw content from the CCN.
  • VerifiedMessage newtype provides compile-time proof that a message passed verification. Content is deserialized from the verified raw bytes, not from the CCN's pre-deserialized
    content field, closing a trust gap.
  • New types: VerifiedMessage, InvalidMessage, IntegrityError, MessageHeader.

Signature verification (#65, #67)

  • Message::verify_signature() verifies that a message was signed by its claimed sender.
  • Ethereum / EVM chains: EIP-191 personal sign + secp256k1 ECDSA recovery (all EVM-compatible chains).
  • Solana: Ed25519 signature verification via ed25519-dalek.
  • Gated behind feature flags — enable only what you need (see breaking changes).

Parallel verification with concurrency limiting (#66, #69)

  • get_messages_and_verify() now runs verifications concurrently via buffer_unordered.
  • New AlephClientBuilder with configurable max_concurrent_requests (default 16), backed by a tower::ConcurrencyLimit HTTP middleware that gates all outbound requests. The permit is
    held only during actual network I/O, not during retry backoff sleeps.

Breaking Changes

MessageWithStatus is now generic (#64)

  • MessageWithStatus changed from MessageWithStatus to MessageWithStatus, where M is the message type (e.g. Message, VerifiedMessage).

AlephClient construction (#66)

  • AlephClient::with_retry_config() is removed. Use the builder instead:
    AlephClient::builder(url)
    .retry_config(config)
    .max_concurrent_requests(32)
    .build()
  • AlephClient::new() still works for simple cases.

New feature flags on aleph-types (#65, #67, #68)

  • The signature feature (enabled by default) is now split into:
    • signature-evm — EVM/secp256k1 verification (k256, sha3, hex)
    • signature-sol — Solana/Ed25519 verification (ed25519-dalek, bs58)
    • signature — enables both (still the default)
  • To reduce dependencies, disable defaults and pick only the chain family you need:
    aleph-types = { version = "0.7.0", default-features = false, features = ["signature-evm"] }

What's Changed

  • feature: verification of Message item hashes by @odesenfans in #46
  • feature: deserialize message content from verified raw bytes by @odesenfans in #64
  • feature: Ethereum signature verification by @odesenfans in #65
  • feature: Solana (Ed25519) signature verification by @odesenfans in #67
  • feature: parallel verification with per-client concurrency limit by @odesenfans in #66
  • refactor: move concurrency limit into HTTP middleware by @odesenfans in #69
  • refactor: split signature feature into signature-evm and signature-sol by @odesenfans in #68
  • doc: update README by @odesenfans in #70

Full Changelog: v0.6.0...v0.7.0


Published to crates.io