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:
- Submitting exam creation request with 500 SUI deposit
- Proposing initial parameters (questions, time, fees)
- Passing validator review
- Waiting for automatic activation when quiz threshold is met
Governance-Managed Parameters
| Parameter | Default Value | Governance Required |
|---|---|---|
| Total Questions | 80 questions | Yes |
| Time Limit | 100 minutes | Yes |
| Pass Threshold | 70% | Yes |
| Retry Cooldown | 7 days | Yes |
| Exam Fee | 5 SUI | Yes |
| Retry Fee | 3 SUI | Yes |
| Required Quizzes | 200 | Set 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
-
Registration Stage
- Pay 5 SUI fee
- Create exam session
- Random selection of 80 questions
-
Variation Generation
- Generate unique variation for each question
- Compose unique exam paper per user
-
Progress Stage
- Start 100-minute timer
- Sequential question presentation
- Answers cannot be modified after submission
- Real-time progress display
-
Completion and Grading
- Automatic or manual submission
- Immediate grading
- Result announcement
-
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 Item | Implementation | Purpose |
|---|---|---|
| Identity Verification | Wallet signature | User authentication |
| Session Integrity | Hash checksum | Prevent data tampering |
| Time Tracking | Blockchain timestamp | Accurate time management |
| Answer Locking | Smart contract enforcement | Prevent answer changes |
| Randomization | Sui Random module | Fair question selection |
Fraud Prevention
- Question Variation: Generate different questions each time using on-chain variation engine
- Time Limit: Strict management with blockchain timestamps
- Sequential Submission: Cannot return to previous questions
- On-chain Recording: All answers recorded on blockchain
Answer Submission Features
Sequential Submission System
- Answer selection
- Confirmation request
- Final submission (cannot be changed)
- 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 Range | Grade | Badge | Special Benefits |
|---|---|---|---|
| 90-100% | Distinction | Gold | Priority matching, premium features |
| 80-89% | Merit | Silver | Advanced networking |
| 70-79% | Pass | Bronze | Basic 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