Overview
Allow invoice creators to attach structured metadata stored on IPFS. The CID is stored in the contract memo field. The SDK should pin metadata to IPFS, verify the CID matches the content, and enrich invoice reads with the resolved metadata.
Requirements
- pinInvoiceMetadata(metadata: InvoiceMetadata): Promise — pins JSON to IPFS, returns CID
- InvoiceMetadata { title, description, lineItems: LineItem[], attachmentCIDs: string[] }
- verifyCID(cid, content): Promise — fetches and checks content hash
- enrichInvoice(invoiceId): Promise — merges on-chain + IPFS data
- Support IPFS HTTP gateway and kubo RPC backends (configurable)
- Tests with mock IPFS server; CID mismatch handled gracefully
Acceptance Criteria
Definition of Done
All CI checks must pass before the PR is reviewed.
Overview
Allow invoice creators to attach structured metadata stored on IPFS. The CID is stored in the contract memo field. The SDK should pin metadata to IPFS, verify the CID matches the content, and enrich invoice reads with the resolved metadata.
Requirements
Acceptance Criteria
Definition of Done
All CI checks must pass before the PR is reviewed.