package
0.0.0-20221218120333-a376c7093645
Repository: https://github.com/satornetwork/sator-api.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

Quiz service

Messages

Message types list

Server side messages:

  • player_connected
  • player_disconnected
  • countdown
  • question
  • question_result
  • challenge_result
  • time_out

Client side message

  • answer

Message structure

{
    "type":"player_connected",
    "sent_at":"2021-05-28T18:42:57.969135+03:00",
    "payload": {
        "user_id":"24adf20e-61e1-439f-b650-56886320501e",
        "username":"johndoe",
    }
}

Payload types

player_connected / player_disconnected

{
    "user_id":"24adf20e-61e1-439f-b650-56886320501e",
    "username":"johndoe",
}

countdown

{
    "countdown": 3 // from 3 to 0
}

question

{
    "question_id": "24adf20e-61e1-439f-b650-56886320501e",
    "question_text": "Question text",
    "time_for_answer": 8,
    "total_questions": 10,
    "question_number": 3, // number of current question
    "answer_options": [
        {
            "answer_id": "14adf20e-61e1-439f-b650-56886320501e",
            "answer_text": "Answer text"
        },
        {
            "answer_id": "24adf20e-61e1-439f-b650-56886320501e",
            "answer_text": "Socond text"
        },
        {
            "answer_id": "34adf20e-61e1-439f-b650-56886320501e",
            "answer_text": "third text"
        },
        {
            "answer_id": "44adf20e-61e1-439f-b650-56886320501e",
            "answer_text": "fourth text"
        }
    ]
}

answer

{
    "question_id": "24adf20e-61e1-439f-b650-56886320501e",
    "answer_id": "44adf20e-61e1-439f-b650-56886320501e"
}

question_result

{
    "question_id": "24adf20e-61e1-439f-b650-56886320501e",
    "result": true,
    "rate": 3, // from 0 to 3
    "correct_answer_id": "44adf20e-61e1-439f-b650-56886320501e",
    "questions_left": 7,
    "additional_pts": 2,
}

challenge_result

{
    "challenge_id": "44adf20e-61e1-439f-b650-56886320501e",
    "prize_pool": "250 SAO",
    "show_transaction_url": "https://....",
    "winners": [
        {
            "user_id": "24adf20e-61e1-439f-b650-56886320501e",
            "username": "johndoe",
            "prize": "2.45",
        }
    ]
}

Reward example calculation:

Prize poolTotal questionsWinners
250 SAO105

Formula:

Rate

rate = round(4-(round(answerTimeSec / (questionTimeSec / 4))))

Reward

reward = (prizePool / ((totalWinners * totalQuestions) + totalPts + totalRate)) * (totalQuestions + pts + rate)
Winner #PTSRatePointsReward
#1010~21.74
#21020~43.48
#32030~65.22
#43040~86.96
#5515~32.61