Repository navigation
[Advanced] External integration: independent audit-trail anchor for Fundable payouts (real PR to fundable-protocol) #75
Description
Difficulty: Advanced (senior · 7/10). ~14–20h. TypeScript, reading a real Soroban/Stellar-native codebase.
Context
Fundable (GitHub org: fundable-protocol) is a real, Stellar-native onchain financial operations platform for global teams — automated payouts, payment streaming, crypto-to-fiat offramping — SCF-funded, with real Soroban contracts (Fundable-Soroban-Contracts, Rust) and an active TypeScript SDK (fundable-sdk). Like most disbursement platforms, their payouts aren't independently anchored outside their own system.
This issue is an external contribution to Fundable's own repos, not another example in this repo — it only counts if a real PR lands against fundable-protocol.
Goal
Independently anchor a hash-only summary of a completed Fundable payout or stream settlement via Nirium's Audit Trail node, and open a real PR against the relevant fundable-protocol repository.
Scope / Deliverables
- Read
fundable-sdkandFundable-Soroban-Contractsto find where a payout or stream settlement actually completes and what data is available (amount, recipient, asset, tx hash). - Build an adapter that, on settlement, builds an aggregate record and calls Nirium's
anchorAuditRecord(). - Open a real PR against the actual
fundable-protocolrepo, following their conventions. - A verification script that independently re-derives the hash from the anchored document — never trust an embedded claim.
- README/PR section explaining the value: an independently-verifiable payout receipt a payer's own finance team or an external auditor can check without trusting Fundable's dashboard.
Acceptance criteria
- A real PR opened against a
fundable-protocolGitHub repository — link it here. Merge isn't required, but the PR must target a real, correctly identified integration point. - End-to-end demo on testnet: a real or realistically-simulated settlement anchored, CID + passing independent verification included.
- Never touches Fundable's own contracts' custody or settlement logic — anchor-only, after the fact.
Pointers
- Fundable's org: https://github.com/fundable-protocol — read before writing code. Consider a small scoping issue on their repo first.
- Nirium's
anchorAuditRecord():packages/sdk/src/index.ts. Domain-separated signature scheme, same as feat(cli): add standalone offline audit-CID and ed25519 agent-attestation verifier #60/[Advanced] Generic Stellar Disbursement Platform (SDP) reconciliation adapter via Nirium's Audit Trail #71/the Rahat issue on this repo.
Out of scope
- Changing Fundable's Soroban contracts or payment/streaming logic.
- Mainnet.
- Contributing to Nirium's own repo instead of Fundable's.
References
- Dev docs: https://nirium.xyz/developers
- This repo's README: https://github.com/nirium-protocol/nirium-sdk/blob/main/README.md
- Contributing guide (how the GrantFox apply/assign flow works here): https://github.com/nirium-protocol/nirium-sdk/blob/main/CONTRIBUTING.md
- TypeScript SDK (npm): https://www.npmjs.com/package/nirium
- Questions: comment directly on this issue — there's no separate community chat for this repo yet.
Reward
Eligibility is subject to GrantFox review under this campaign. Rewards are decided by GrantFox based on quality and available budget and are not guaranteed.
Activity
Santia2004 commentedon Aug 26, 2026
Hi @Eras256, I would like to take on this issue. Here is my implementation plan for the external Fundable integration:
Implementation Plan
Codebase Exploration & Hook Point Identification (
fundable-protocol):Fundable-Soroban-Contractsevents and thefundable-sdkexecution handlers.amount,recipient,asset,tx_hash,contract_id,timestamp).Audit Adapter & Anchoring via Nirium SDK:
sha256(JSON.stringify(record))and create a domain-separated attestation signature (nirium-audit-v1:<sha256>) using the payer/agent Stellar ed25519 key.Agent.anchorAuditRecord()on the Nirium node.Standalone Verifier Script:
Upstream PR & Documentation:
fundable-protocolrepository adhering to their styling, commit standards, and tests.Please assign this issue to me so I can get started. Thanks!
DonCervantes commentedon Aug 27, 2026
Hi, I can help you. I have three years of experience in full-stack AI engineering and have worked on multiple projects on the Stellar network.
Eras256 commentedon Aug 27, 2026
@Santia2004 assigned — solid plan, correctly grounded in the real Fundable protocol structure and Nirium's actual attestation scheme. Go ahead.
Santia2004 commentedon Aug 27, 2026
Opened upstream PR to Fundable SDK: Fundable-Protocol/fundable-sdk#8
Implementation summary:
FundablePayoutAuditRecord.computeCanonicalAuditHash().nirium-audit-v1:<sha256>using Stellar Ed25519 keypairs.anchorFundablePayout()(IPFS CID generation without modifying core Soroban contracts or custody logic).verifyAnchoredPayoutReceipt()and runnable example script (examples/verify-anchored-payout.ts) for independent validation by finance teams/external auditors.pnpm test) and full pipeline verified withpnpm verify.Eras256 commentedon Aug 30, 2026
Closing as delivered. @Santia2004 opened a real PR against Fundable-Protocol/fundable-sdk#8: a proper settlement schema, deterministic canonical hashing, the correct nirium-audit-v1: domain-separated signing scheme (matches ours exactly, not guessed), unit tests, and a standalone verification example. Merge on their side isn't required by this issue's own criteria, and this is a real, correctly-targeted integration, not a stub. Nice work. Closing now that the campaign has ended, but this one counts as done.