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:

    • poaiBundleHash

    • assetProofHash

    • dataProofHash

    • processProofHash

    • reviewerSignatureHash (optional)

  • Enforcing gating checks:

    • ProjectRecord can only be minted if PoAI Approved

    • Credit issuance only if ProjectRecord exists + 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

  1. Canonicalize JSON (stable key ordering)

  2. Hash with SHA256 or Keccak256 (pick one standard)

  3. Store only the hashes on-chain

On-Chain Integration (Critical Gating)

ProjectRecord Contract Changes

When minting a ProjectRecord, require:

Store:

  • bundleHash

  • assetProofHash

  • dataProofHash

  • processProofHash

  • validUntil (optional)

Mint Function Signature

Credit Issuance Contract Gating

Issuance must check:

PoAI Developer Flow (Sequence)

1

Project Submission (Issuer)

  • Issuer creates project in platform (projects table)

  • Uploads required documents (project_documents table)

  • Clicks "Submit for PoAI"

  • System creates poai_case → state SUBMITTED

2

Review (Reviewer)

  • Reviewer opens PoAI case

  • System runs automated checks (optional)

  • Reviewer marks checks PASS/FAIL with evidence

  • If missing details → state CHANGES_REQUIRED and issuer notified

3

Approval

  • Reviewer clicks "Approve"

  • PoAI service:

    • Compiles proof bundle JSON

    • Creates proof hashes

    • Signs bundle hash (optional)

    • Stores bundle (encrypted)

    • Writes to poai_proofs table

  • Update poai_case.state = APPROVED

  • Update projects.status = PendingDAO

4

Governance Approval (DAO)

  • DAO votes to approve project + cap

  • If passed, platform triggers on-chain mint

  • Call mintProjectRecord(...) with PoAI hashes

  • Update project status to Approved

5

Credit Issuance

  • Issuer/admin calls issueCredits(projectId, amountUnits)

  • Contract enforces cap

  • Credits become purchasable/allocatable

6

Retirement

  • User retires units

  • Certificate references:

    • Retirement tx hash

    • Project tokenId

    • PoAI bundle hash

    • PoAI bundle URI (optional access-controlled)

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_hash exists

  • issuanceCap set 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