v0.7.0
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