Implement the Scire (Latin for "to know/learn") contract providing
universal education infrastructure for citizens:
Core Features:
- Education accounts: One per Vita holder (soul-bound learning account)
- Learning credits: Annual allocation and spending system
- Certifications: Skill verification with expiry/renewal support
- Enrollments: Program enrollment with credit allocation
Contract Methods:
- Account management: createAccount, getAccount, allocateCredits, getCredits
- Enrollment: enroll, completeEnrollment, withdrawEnrollment, getActiveEnrollment
- Certification: issueCertification, revokeCertification, renewCertification
- Query: verifyCertification, hasCertification, getConfig
Cross-Contract Integration:
- Vita: Account tied to Vita token (one person = one account)
- Lex: Checks RightEducation via HasRightInternal (enforcement logging)
- RoleRegistry: RoleEducator (ID 20) for institutional authorization
- NEO: Committee authority for credit allocation
State Types (pkg/core/state/scire.go):
- EducationAccount, Certification, Enrollment, ScireConfig
- Status enums for each entity type
Technical Details:
- Contract ID: -18
- Storage prefixes: 0x01-0x02 (accounts), 0x10-0x13 (certs), 0x20-0x23 (enrolls)
- Fix: Use (uint64, bool) return for getVitaIDByOwner to properly handle
TokenID 0 (first registered Vita) instead of using 0 as sentinel value
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>