Validators
The 12 Andamio V2 validators across four protocol layers, with each validator's authorized actions sourced directly from the compiled on-chain contracts.
Andamio's on-chain logic is enforced by 12 validators organized into the four-layer model: a Global registry of identities, the Instances that hold a course or project, and the Course and Project layers that run each one. Every validator below lists its authorized redeemer actions and the token or state it mints, burns, or governs — tokens are explained inline, in the validator that controls them.
Sourced from the compiled contracts
Each validator's name and authorized actions are extracted mechanically from
the pinned plutus.json blueprint (the deployed, immutable on-chain code), so
this page cannot drift from the contracts. The layer, purpose, and
token/state notes are hand-curated; a prebuild guard fails the build if they
ever disagree with the blueprint. See
Contract Verification to check the
deployed scripts yourself.
Global registry
Protocol-wide identity and the index that keeps it ordered.
Global State
global/global_stateThe protocol-wide registry of participant identities and their local-state pointers — the on-chain identity every course and project interaction checks.
- MintLocalState
- BurnLocalState
- DeleteState
- ChangeUserInfo
- MoveState
Governs the Access Token global state. Mints a g-prefixed global-state token per registered alias (datum {alias, local_state_information}); the user's wallet holds the matching u-prefixed user access token from the index policy. Records credential-claim attestations back into a user's global state, and moves or retires that state as users enroll, claim, and update.
Global State Reference
global/global_state_refBootstraps a new entry in the registry's index linked list so the global state stays ordered and append-only.
- NewGlobalRefPair
Creates a new global reference pair — the index linked-list marker (the 0x20 space-prefixed token in the index policy) carrying {prev_alias, next_alias} so each new alias inserts in order. This is the index/reference plumbing behind access-token minting.
Instances
The shared container, governance, and minting authority a course or project is built on.
Governance
ls_instances/governanceThe shared authorization registry for an instance — who may act as a course's teachers or a project's managers.
- Use
- AddInstanceCreators
- RemoveInstanceCreators
- MoveNew
Holds the governance token (course-governance policy, token name = the courseId) in a UTxO with datum {participants: [aliases]}. The same validator backs both course teachers and project managers (the instance-admin role). AddInstanceCreators/RemoveInstanceCreators edit the participant set; MoveNew rolls it forward.
Instance Provider
ls_instances/instance_providerAuthorizes minting and burning on behalf of an instance, letting a course or project's sub-validators issue their own state tokens.
- ProvideMint
- ProvideBurn
Provides the mint/burn authority (ProvideMint/ProvideBurn) for instance-scoped tokens — notably the LocalStateToken, the UTxO that registers a course/project and embeds that instance's own validator as a script reference.
Instances
ls_instances/instancesRegisters a new instance — the on-chain container for a single course or project — and links its local state into the global registry.
- MintInstanceRefScr
- RemoveInstanceRefScr
- BurnInstance
Mints the LocalStateNFT (LocalStateNFT), whose minting-policy ID is the course/project identifier (the courseId/projectId), and the Local State Registration token that connects the instance's local state to global V2 state. MintInstanceRefScr/RemoveInstanceRefScr manage its reference scripts; BurnInstance retires it.
Course
Everything that runs a single course — enrollment, modules, assignments.
Assignment Validator
course/assignment_validatorAdjudicates assignment evidence — students submit, teachers accept or refuse.
- Refuse
- Accept
- StudentAction
Drives the assignment lifecycle on the student's Course State UTxO (it mints no token of its own). StudentAction submits or updates evidence; Accept (a teacher) records the completion that advances the Course State token; Refuse rejects the submission.
Course State
course/course_stateTracks each student's enrollment and progress within one specific course.
- MintCourseState
- CommitAssignment
- BurnCourseState
Mints the Course State token (course-state policy, parameterized per course; token name = the student's alias, so one enrollment per student per course). The datum holds the student's completed modules and any active assignment commitment. CommitAssignment records a commitment; BurnCourseState retires the token on credential claim.
Module Scripts
course/module_scriptsManages a course's modules — the published units of learning content and the Student Learning Targets they require.
- MintModule
- UpdateModule
- BurnModule
Mints module tokens (module policy; token name = the 32-byte hash of the module's SLT list), held with datum {courseId, allowed_course_state_ids, prereq_slt_hashes}. UpdateModule revises a module; BurnModule removes it.
Project
Everything that runs a single project — contributors, treasury, task escrow.
Contributor State
project/contributor_stateTracks each contributor's enrollment, task commitments, and completed work within one specific project.
- MintContributor
- SpendingBurnRewards
- BurnContributor
- CommitProject
- AddCompleted
- AdminRemove
- AdminAdd
Mints the Contributor State token (contributor-state policy, parameterized per project; token name = the contributor's alias). The mint redeemer carries prerequisite proof (courseId + completed SLTs). CommitProject commits to a task, AddCompleted records finished tasks, SpendingBurnRewards distributes rewards, BurnContributor retires the token on credential claim, and AdminAdd/AdminRemove are manager overrides.
Task Escrow
project/escrow1Holds task deposits in escrow and settles them when a manager assesses a contributor's work.
- Deny
- Refuse
- Accept
- UserAction
Custodies task-escrow UTxOs (datum = the list of task content hashes) plus the treasury deposits backing them. UserAction is the contributor's move; Accept (a manager) releases the reward and pairs with contributor_state: AddCompleted; Deny/Refuse reject the submission.
Treasury
project/treasuryHolds and disburses a project's shared funds and defines its tasks.
- CommitFunds
- CommitToken
- Manage
- BurnTreasuryToken
Custodies treasury funds keyed by the TreasuryScriptV2 token (treasury-script policy) in a UTxO with datum {projectId} and the treasury validator's embedded script reference. Manage defines and edits tasks; CommitFunds/CommitToken add ADA or native tokens; BurnTreasuryToken tears the treasury down.
Treasury Token
project/treasury_tokenMints the per-task treasury tokens that earmark funds for individual tasks.
- MintTT
- BurnTT
Mints treasury tokens (treasury-token policy; token name = a hash tied to the contributor_state_id) that sit in the treasury/escrow to back each task's reward. MintTT issues them; BurnTT releases them on payout.