← All guides

Secure V2 · SDK 0.3.0

Secure V2 and delivery guarantees

Updated October 11, 2026 · verified against repository implementation

Authentication, counters, receipts and batching without guessing about delivery.

Authenticated encryption

Secure V2 uses ChaCha20-Poly1305: a nine-byte header plus sixteen-byte authentication tag around the encoded sensor payload. Application datagrams exclude UDP/IP headers. The production gateway requires authentication; Protocol Lab plaintext is isolated benchmarking and is not an ingestion mode.

Each device has its own root secret and wire ID. Monotonic sequence reservation prevents nonce reuse; the gateway maintains durable replay state. Preserve NVS / counter.json across reboots and do not clone or restore old state. After state loss, rotate credentials. Do not disable certificate validation or invent a starting sequence.

Confirmed and unconfirmed delivery

Unconfirmed sends once and provides no storage receipt. Confirmed requests an authenticated 21-byte application receipt after telemetry and its outbox work commit. The SDK performs bounded retries of identical frame bytes; unknown after the deadline is ambiguous, not proof of failure.

Receipts confirm database acceptance and eligible outbox enqueue. They do not promise execution by your downstream application. Batching groups fixed-size readings with per-packet sequencing and receipts; splitting requires separate packets, counters and confirmations. See the SDK method documentation for its configured frame limits.

Open device setup · Contact support