Skip to main content

Exam System

Overview

SuiVerse's exam system allows users to create exams with initial parameters, which are then managed through governance. Once approved and sufficient quizzes are available, exams automatically activate to issue verifiable certificates.

Exam Creation and Management

User-Created Exams

Any user can create an exam by:

  1. Submitting exam creation request with 500 SUI deposit
  2. Proposing initial parameters (questions, time, fees)
  3. Passing validator review
  4. Waiting for automatic activation when quiz threshold is met

Governance-Managed Parameters

ParameterDefault ValueGovernance Required
Total Questions80 questionsYes
Time Limit100 minutesYes
Pass Threshold70%Yes
Retry Cooldown7 daysYes
Exam Fee5 SUIYes
Retry Fee3 SUIYes
Required Quizzes200Set at creation

Automatic Activation

// Automatic activation when quiz threshold is met
public fun check_exam_activation(exam: &mut Exam) {
if (exam.status == 0 &&
exam.current_quiz_count >= exam.required_quiz_count) {
exam.status = 1; // Automatically activate
emit(ExamActivatedEvent { exam_id: object::id(exam) });
}
}

Exam Lifecycle

Creation to Activation Flow

Step-by-step Description

  1. Registration Stage

    • Pay 5 SUI fee
    • Create exam session
    • Random selection of 80 questions
  2. Variation Generation

    • Generate unique variation for each question
    • Compose unique exam paper per user
  3. Progress Stage

    • Start 100-minute timer
    • Sequential question presentation
    • Answers cannot be modified after submission
    • Real-time progress display
  4. Completion and Grading

    • Automatic or manual submission
    • Immediate grading
    • Result announcement
  5. Certificate Issuance

    • Pass with 70% or higher score
    • Immediate NFT certificate issuance
    • Kiosk placement option
    • Automatic skill profile update

Security and Integrity

Verification Mechanisms

Verification ItemImplementationPurpose
Identity VerificationWallet signatureUser authentication
Session IntegrityHash checksumPrevent data tampering
Time TrackingBlockchain timestampAccurate time management
Answer LockingSmart contract enforcementPrevent answer changes
RandomizationSui Random moduleFair question selection

Fraud Prevention

  1. Question Variation: Generate different questions each time using on-chain variation engine
  2. Time Limit: Strict management with blockchain timestamps
  3. Sequential Submission: Cannot return to previous questions
  4. On-chain Recording: All answers recorded on blockchain

Answer Submission Features

Sequential Submission System

  1. Answer selection
  2. Confirmation request
  3. Final submission (cannot be changed)
  4. Automatic move to next question

Time Management

  • Track time spent per question
  • Calculate average response time
  • Provide efficiency scores

Scoring System

Score Calculation

Final Score = (Correct Answers / Total Questions) × 100

Grade System

Score RangeGradeBadgeSpecial Benefits
90-100%DistinctionGoldPriority matching, premium features
80-89%MeritSilverAdvanced networking
70-79%PassBronzeBasic matching
Below 70%Fail-Retake required

Exam Statistics

Individual Statistics

  • Total exam attempts
  • Average score
  • Strengths/weaknesses analysis
  • Learning recommendations

Overall Statistics

  • Average score by subject
  • Pass rate
  • Difficulty distribution
  • Popular categories

Retake Policy

Retake Conditions

  • 7-day waiting period
  • 3 SUI discounted fee
  • Previous exam analysis provided

Improvement Support

  • Weakness analysis report
  • Customized learning material recommendations
  • Mentoring connection options

Fee Distribution

5 SUI Exam Fee Distribution

  • Quiz creators: 40% (2 SUI)
  • Platform operations: 40% (2 SUI)
  • Validator pool: 10% (0.5 SUI)
  • Treasury: 10% (0.5 SUI)

Technical Implementation

Smart Contract Functions

public fun start_exam(
config: &ExamConfig,
payment: Coin<SUI>,
ctx: &mut TxContext
): ExamSession

public fun submit_answer(
session: &mut ExamSession,
answer: String,
ctx: &TxContext
)

public fun complete_exam(
session: &mut ExamSession
): (bool, u64, u64)

Gas Optimization

  • Reduce gas costs through batch processing
  • Use efficient data structures
  • Minimal on-chain operations