Andamio LogoAndamio
Protocol/Protocol V2/Transactions/Course/Teacher/Assignments

Assignments Assess

Assess student assignment submissions

Course Teacher Assignments Assess

Assess student assignment submissions by accepting or rejecting them. Teachers can batch multiple decisions in a single transaction.

API Endpoint

POST /v2/tx/course/teacher/assignments/assess

Cost Summary

Cost TypeAmountNotes
Transaction Fee~0.27 ADANetwork fee
MinUTxO Refund~-0.07 ADADatum shrinks on accept
Protocol Fee0 ADANo service fee
Total Wallet Delta~0.21 ADATeacher may get small refund

The wallet delta is lower than the tx fee because the datum shrinks when an assignment is accepted (pending → completed), releasing some locked ADA.

Request Body

{
  "alias": "james",
  "course_id": "23a6bbce3a8deca8985764e847594f6956c9dc643e3f6c8efdba04e4",
  "assignment_decisions": [
    {
      "outcome": "accept",
      "alias": "student_001"
    }
  ]
}
FieldTypeRequiredDescription
aliasstringYesTeacher's access token alias
course_idstringYesCourse NFT policy ID (56 char hex)
assignment_decisionsobject[]YesList of assessment decisions
assignment_decisions[].outcomestringYes"accept" or "refuse"
assignment_decisions[].aliasstringYesStudent's alias

Transaction Pattern

Spend and Recreate - No minting. Consumes student's course state UTxO and recreates with updated datum.

┌─────────────────────────────────────────────────────────────────┐
│                ASSIGNMENTS ASSESS TRANSACTION                   │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  INPUTS                          OUTPUTS                        │
│  ──────                          ───────                        │
│  ┌─────────────────┐            ┌─────────────────┐            │
│  │ Course State    │───────────▶│ Course State    │            │
│  │ (student's      │  SPEND     │ (UPDATED:       │            │
│  │  pending)       │            │  completed)     │            │
│  └─────────────────┘            └─────────────────┘            │
│                                                                 │
│  ┌─────────────────┐            ┌─────────────────┐            │
│  │ Wallet          │───────────▶│ User Wallet     │            │
│  │ (u-token + ADA) │            │ (u-token +      │            │
│  └─────────────────┘            │  change)        │            │
│                                  └─────────────────┘            │
│  NO MINTING                                                     │
│                                                                 │
│  REFERENCE INPUTS                                               │
│  ────────────────                                               │
│  • global-state-v2 script ref                                   │
│  • LocalStateToken (course validator)                           │
│  • Governance UTxO (teacher verification)                       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Inputs

InputTypeValidatorDescription
Course StateScriptcourse-state-validatorStudent's pending assignment
Access TokenWallet-Teacher's u-token
Wallet UTxOsWallet-ADA for fees

Outputs

OutputValidatorValueDescription
Course Statecourse-state-validator~1.38 ADA + tokenUpdated: completed
User Walletwalletu-token + changeAccess token returned

Datum Changes

The course state datum changes when an assignment is accepted:

Before (Constructor 1 - active commitment):

Constructor 1:
├── slt_hash: "{module_token_name}"
├── assignment_info: "{evidence_hash}"
└── completed_modules: []

After (Constructor 0 - no active commitment):

Constructor 0:
└── completed_modules: ["{slt_hash}"]

The slt_hash moves from the commitment fields to the completed_modules list.

Redeemers

ScriptConstructorFieldsDescription
course-state-validator (spend)2teacher_aliasAssess action
{
  "constructor": 2,
  "fields": [
    { "bytes": "<teacher_alias>" }
  ]
}

Reference Inputs

UTxODescription
Script Refglobal-state-v2 script reference
LocalStateTokenCourse's LocalStateToken (validator script_ref)
GovernanceCourse governance UTxO (verifies teacher authorization)

Batching

Multiple assignment decisions can be batched in a single transaction:

{
  "assignment_decisions": [
    { "outcome": "accept", "alias": "student_001" },
    { "outcome": "accept", "alias": "student_002" },
    { "outcome": "refuse", "alias": "student_003" }
  ]
}

Key Notes

  • Teacher spends the student's course state UTxO
  • Authorization via teacher alias in redeemer + governance reference input
  • Datum shrinks on accept (drops assignment_info), reducing minUTxO
  • Completed SLT hashes accumulate in a list for credential claims
  • No protocol fee for assessments

See Also