06 poai system
What is PoAI?
PoAI (Proof of Asset Integrity) is the platform's verification pipeline that ensures:
Asset Integrity: The real-world project exists and is legitimate
Data Integrity: The documents and metrics are consistent and verifiable
Process Integrity: The approval workflow is authentic (reviewers, signatures, governance)
PoAI produces a proof bundle and immutable hashes that get anchored on-chain.
Key Design Rule
No ProjectRecord minting and no credit issuance should be allowed unless PoAI is "Approved" and the PoAI proof hashes are attached.
PoAI Module Boundaries
Off-Chain Components (PoAI Service)
Document ingestion
Validation checks + reviewer workflow
Proof bundle creation (structured JSON)
Hashing and signing
Storage of proof bundle (encrypted file storage / IPFS / S3)
API endpoints for status, approvals, audits
On-Chain Components
Storing minimal, immutable proof anchors:
poaiBundleHashassetProofHashdataProofHashprocessProofHashreviewerSignatureHash(optional)
Enforcing gating checks:
ProjectRecordcan only be minted if PoAI ApprovedCredit issuance only if
ProjectRecordexists + PoAI hash attached
PoAI State Machine
A single project moves through these PoAI states:
State Definitions
DRAFT: Project created, docs not submitted
SUBMITTED: Docs submitted, awaiting review
IN_REVIEW: PoAI reviewer assigned & checks running
CHANGES_REQUIRED: Missing info/clarifications needed
APPROVED: PoAI passed (proof hashes generated)
REJECTED: Failed due to fraud/inconsistency/unverifiable data
EXPIRED: PoAI validity window expired; needs re-validation
Important: State transitions must be auditable (log every action, actor, timestamp).
PoAI Data Model (DB Schema)
Tables
projects
project_documents
poai_cases
poai_checks
poai_proofs
audit_logs
PoAI Proof Bundle (Canonical JSON)
This is what PoAI generates and stores (as JSON) after approval.
Example Structure
Hashing Rule
Canonicalize JSON (stable key ordering)
Hash with SHA256 or Keccak256 (pick one standard)
Store only the hashes on-chain
On-Chain Integration (Critical Gating)
ProjectRecord Contract Changes
When minting a ProjectRecord, require:
Store:
bundleHashassetProofHashdataProofHashprocessProofHashvalidUntil(optional)
Mint Function Signature
Credit Issuance Contract Gating
Issuance must check:
PoAI Developer Flow (Sequence)
APIs for PoAI Module (REST)
Issuer Endpoints
Reviewer Endpoints (RBAC)
Governance/Mint Orchestration
UI Screens for PoAI Module (Minimum)
Issuer Side
Project submission form
Project details input
Document upload checklist (progress-based)
Submit button
PoAI status timeline
Visual timeline: submitted → review → changes → approved
Status badges
Reviewer comments
Reviewer Side
PoAI case list
Filters by state, project type, date
Assigned cases highlighted
Case detail page
Document viewer + hash check
Checklist status (Asset/Data/Process)
Approve / Reject / Request changes buttons
Evidence upload
Admin Side
Governance proposal status view
List of proposals
Voting status
Execution status
On-chain mint trigger
Manual trigger (or automatic after DAO pass)
Transaction status
Audit log export
Filterable logs
CSV/JSON export
Acceptance Criteria (PoAI Module)
A project cannot move to on-chain mint unless:
✅
poai_case.state == APPROVED✅
poai_proofs.bundle_hashexists✅
issuanceCapset and consistent✅ All required checks passed
PoAI module must provide:
✅ Full audit trail of every decision
✅ Evidence links for checks
✅ Revalidation path (EXPIRED → IN_REVIEW)
Implementation Note (Security & Privacy)
Proof Bundle Storage
Proof bundles often contain sensitive documents:
Store bundles encrypted (S3 with presigned URLs / IPFS encrypted payloads)
On-chain store only hashes + minimal metadata
Allow auditors access via time-limited secure links
Access Control
Reviewers can only access assigned cases
Issuers can only view their own projects
Admins have full audit access
Public can view PoAI status (approved/rejected) but not full bundles
Last updated