Apps call off-chain services. Only signed attestations and payment instructions reach ten small contracts on Ramestta. A contract cannot see a tree, so it checks that an authorised verifier signed the result.

| Contract | Responsibility | Key functions | Who can call | Key events |
|---|---|---|---|---|
| ProjectRegistry | Approved projects, sites, land-consent references, partner link | createProject, approveSite, suspendProject | Partner admin, platform multisig | ProjectCreated, SiteApproved, ProjectSuspended |
| FundingVault | Holds sponsor funds (on-chain mode), locks obligations, refunds; commitments only in fiat mode | deposit, lockForTask, refund | Sponsor (deposit); contracts for locks and refunds | Deposited, Locked, Refunded |
| TaskAllocation | Task creation, planter assignment, status | createTask, assign, markSubmitted | Partner admin, assigned planter | TaskCreated, TaskAssigned, TaskSubmitted |
| ProofRegistry | Evidence hashes, verifier decisions, appeals | submitEvidenceHash, attest, reject, appeal | Planter (submit); accredited verifier (attest, reject) | EvidenceSubmitted, Attested, Rejected, Appealed |
| MilestoneSettlement | Releases planting, survival and maintenance payments | settle, settleMaintenance | Only after a valid attestation | Settled, MaintenanceSettled |
| LivingTreeNFT | ERC-721 certificate; status history; metadata versions | mint, updateStatus, setMetadataVersion | ProofRegistry-approved callers | TreeMinted, StatusChanged, MetadataUpdated |
| ImpactMarketplace | Listings, offers, sales, royalty routing | list, buy, offer, cancel | Token owner, buyer | Listed, Sold, OfferMade |
| FeePolicyRegistry | Versioned payout and royalty rules per transaction type | publishPolicy, activatePolicy | Platform multisig through timelock | PolicyPublished, PolicyActivated |
| PartnerRegistry | Authorised NGOs, verifiers, accreditation and status | addPartner, setAccreditation, revoke | Platform multisig | PartnerAdded, AccreditationChanged |
| ProtocolTreasury | Operating funds and fee collection | withdraw (limits), setSigners | Multisig with timelock | FeeReceived, Withdrawn |
| Layer | Choice |
|---|---|
| Web portal | Next.js with React and TypeScript, multilingual, server-rendered public pages |
| Field app | React Native or a native camera module; offline queue, secure upload, device-integrity signals |
| Core API | TypeScript on Node.js, typed REST with OpenAPI, role- and tenant-aware authorisation |
| Database | PostgreSQL with PostGIS; append-only payout journal; event outbox |
| Media | Private encrypted object storage with content hashes; public IPFS mirrors; replicated backups |
| Async jobs | Queue for malware and media screening, risk scoring, notifications, indexing and scheduled checks |
| Chain | Solidity on the Ramestta EVM, OpenZeppelin base, indexed events with reorg handling |
| Auth and keys | OIDC or passkeys for web; wallet-signature sign-in where needed; multisig for the treasury |
| Observability | Audit logs, tracing, error monitoring, service-level dashboards, disaster-recovery drills |
| Threat | Control |
|---|---|
| Deepfake image or GPS spoof | Signed challenge, media hashes, risk flags, human review, independent site audit |
| Many-wallet voting (Sybil) | Identity and reputation rules, rate limits, random assignment, expert tie-break |
| Same tree claimed repeatedly | Tree ID, coordinates, geospatial dedupe, before-and-after similarity, site capacity |
| False partner or fake land | Landowner authorisation, NGO due diligence, third-party site proof |
| Payout diversion | Beneficiary bound to the payout, separate approvers, time delay, signed policy |
| NFT wash trades | Self-trade analytics, affiliated-account detection, no volume incentives |
| Personal data or GPS exposure | Private storage, blurred public location, least privilege, consent, retention rules |
| Smart-contract exploit | Audit, invariant and fuzz tests, reentrancy locks, bounded emergency controls |
| Verifier collusion | Random field audits, conflict disclosure, separate appeal reviewers, a stated sampling method |
Tick the boxes to see the readiness bar. This is a planning aid; a ticked box is the team's own record, not an independent certification.
0 of 10 gates ticked