Why It Matters
- Authenticity first – every ingest request is checked against the robot’s DID and RBAC grants before it ever touches the blockchain.
- Tamper proof – payloads are hashed, pinned to IPFS, and referenced on-chain so downstream consumers can verify integrity independently (managed pinning services remain optional).
- Production ready – lifecycle nodes, retries, and detailed status topics keep operators informed without leaving ROS tools.
Big picture: ROS 2 fleets can now publish verifiable data streams that regulators, partners, or marketplaces can trust instantly.
Architecture
| Stage | What Happens | Verification Hooks |
|---|---|---|
| 1. Ingest | StorageIngest message arrives on peaq/storage/ingest | Bridge loads the robot wallet, derives its DID, and checks it exists on-chain when require_did is enabled |
| 2. Encode | Payload hashed, optional files pinned to IPFS (local or managed) | Hash and DID are logged together; RBAC rules (from the Access module) can gate who triggers ingest |
| 3. Submit | Transaction sent via peaq storage pallet | Transaction is signed by the robot’s keystore and tracked through peaq/tx_status |
| 4. Finalize | On-chain record references IPFS CID | Any consumer can fetch the CID, recompute the hash, and confirm the signing DID |
Launch the Bridge
Verification-Centric Configuration
IPFS Setup
Local IPFS (Kubo)
local_ipfs.save_dir: cache directory for downloaded blobslocal_ipfs.pin_results=true: keep data pinned locally for quick replays
Managed Gateway (Optional)
Use a third-party IPFS pinning/gateway provider (e.g., Pinata, web3.storage, NFT.storage) only if you need off-device persistence or public access. Example environment variables:pinata block name is historical—you can still point it at any managed gateway):
mode: both to mirror uploads.
Access Control & Wallets
- Ensure the wallet referenced in
wallet.pathhas enough balance on the target network (fund via faucet for Agung). - Combine with RBAC by allow-listing roles under
storage_bridge.robot.allowlist_roleswhen you want to restrict which robots can publish telemetry.
Publishing Verifiable Data
peaq/tx_status to see the confirmation phases tied back to the robot DID in logs.
Reading & Verifying Downstream
Manual Verification Checklist
- Fetch the CID from the service response.
- Retrieve the payload:
ipfs cat <CID>orcurl <gateway>/<CID>. - Recompute the hash and compare with the value logged in storage bridge outputs.
- Confirm DID ownership using
/peaq_core_node/identity/read.
Automated Attestation
- Attach mission metadata via the
metadata_jsonfield inStorageIngestso every record includes firmware versions or profile IDs. - Pair with the Access Control guides to revoke publishing rights instantly.
- Leverage
/tmp/storage_bridge_failures.jsonland the replay scripts to prove that no data was dropped—even during outages.
Observability & Audit
- Switch to JSON logs (
PEAQ_ROBOT_LOG_FORMAT=json) for ingestion into SIEM or compliance tooling. - Track wallet-derived DID and CID pairs in your log pipeline to detect impersonation attempts.
- Use
ros2 lifecycle get /peaq_storage_bridgein your health probes; the node exports ready/active states so Kubernetes or fleet managers can react quickly.
Dashboard Pointers
peaq/storage/status: success vs failure counts/tmp/storage_bridge_failures.jsonl: monitor size/age to detect backlogspeaq/tx_status: confirmation latency per network

