This document provides a comprehensive API reference for the two core smart contracts: ProjectRegistry and InvestmentVault.
The ProjectRegistry contract manages project lifecycle, certification, reputation, and collateral.
ProjectData: Represents a project's state.pub struct ProjectData { pub owner: Address, pub uri: String, pub credit_quality: u32, pub green_impact: u32, pub maturity_date: u64, pub certification_status: CertificationStatus, pub last_update_timestamp: u64, pub archived: bool, }
CertificationStatus:None,Pending,Certified,Revoked.Proposal:pub struct Proposal { pub description: String, pub proposer: Address, pub voting_ends_at: u64, pub votes_for: i128, pub votes_against: i128, pub executed: bool, }
Creates a new project.
- Auth:
creatormust authorize. - Parameters:
creator: Project owner. Must be whitelisted.uri: Project metadata URI.maturity_date: Future Unix timestamp (0 for open-ended).
- Errors:
NotWhitelisted,UriTooShort,UriTooLong,InvalidUriScheme,MaturityDateInPast. - Example Usage:
const tx = await contract.invoke({ method: "create_project", args: [creator, "https://example.com/project1", 0] });
Returns the state of a project.
- Errors:
ProjectNotFound.
Updates the impact score (admin only).
- Auth: Admin.
- Errors:
ProjectNotFound.
Deposits collateral for a project.
- Auth:
depositor. - Errors:
ProjectNotFound,AmountMustBePositive.
Updates a project's certification status.
- Auth: Admin.
- Errors:
ProjectNotFound.
The InvestmentVault contract handles funding projects, claiming yields, and withdrawing investments.
VaultConfig:pub struct VaultConfig { pub admin: Address, pub registry_address: Address, pub token_address: Address, pub performance_fee_bps: u32, pub vault_cap: i128, }
InvestmentStrategy:RiskAverse,Balanced,HighGrowth.
Deposits underlying tokens into the vault and mints shares.
- Auth:
caller. - Parameters:
amountto deposit. - Errors:
VaultIsPaused,AmountMustBePositive,VaultCapExceeded. - Example Usage:
const tx = await vault.invoke({ method: "deposit", args: [caller, 100000000] // 10 tokens with 7 decimals });
Burns shares and returns underlying tokens.
- Auth:
caller. - Errors:
VaultIsPaused,AmountMustBePositive,InsufficientShares.
Funds a registered project (admin only).
- Auth: Admin.
- Errors:
VaultIsPaused,InsufficientVaultFunds,ProjectNotCertified.
- All base token values have 7 decimal places unless noted.
- Contract will panic on arithmetic overflow or if SDK constraints are violated.