Andamio Logo
Protocol/Protocol V2

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_state

The protocol-wide registry of participant identities and their local-state pointers — the on-chain identity every course and project interaction checks.

Authorized actions
  • MintLocalState
  • BurnLocalState
  • DeleteState
  • ChangeUserInfo
  • MoveState
Governs

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_ref

Bootstraps a new entry in the registry's index linked list so the global state stays ordered and append-only.

Authorized actions
  • NewGlobalRefPair
Governs

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/governance

The shared authorization registry for an instance — who may act as a course's teachers or a project's managers.

Authorized actions
  • Use
  • AddInstanceCreators
  • RemoveInstanceCreators
  • MoveNew
Governs

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_provider

Authorizes minting and burning on behalf of an instance, letting a course or project's sub-validators issue their own state tokens.

Authorized actions
  • ProvideMint
  • ProvideBurn
Governs

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/instances

Registers a new instance — the on-chain container for a single course or project — and links its local state into the global registry.

Authorized actions
  • MintInstanceRefScr
  • RemoveInstanceRefScr
  • BurnInstance
Governs

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_validator

Adjudicates assignment evidence — students submit, teachers accept or refuse.

Authorized actions
  • Refuse
  • Accept
  • StudentAction
Governs

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_state

Tracks each student's enrollment and progress within one specific course.

Authorized actions
  • MintCourseState
  • CommitAssignment
  • BurnCourseState
Governs

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_scripts

Manages a course's modules — the published units of learning content and the Student Learning Targets they require.

Authorized actions
  • MintModule
  • UpdateModule
  • BurnModule
Governs

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_state

Tracks each contributor's enrollment, task commitments, and completed work within one specific project.

Authorized actions
  • MintContributor
  • SpendingBurnRewards
  • BurnContributor
  • CommitProject
  • AddCompleted
  • AdminRemove
  • AdminAdd
Governs

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/escrow1

Holds task deposits in escrow and settles them when a manager assesses a contributor's work.

Authorized actions
  • Deny
  • Refuse
  • Accept
  • UserAction
Governs

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/treasury

Holds and disburses a project's shared funds and defines its tasks.

Authorized actions
  • CommitFunds
  • CommitToken
  • Manage
  • BurnTreasuryToken
Governs

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_token

Mints the per-task treasury tokens that earmark funds for individual tasks.

Authorized actions
  • MintTT
  • BurnTT
Governs

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.