Quest
This module wraps an object labeled as rewards that can only be unwrapped if a set of witness objects are passed as arguments to the complete function. A witness is a struct with the drop key. The idea is to have a user complete a set of tasks for a reward in different protocols . The protocols certify that the user completed the task via their Witnesses.
Structs
Quest
required_tasks - Stores the Witnesses of all required tasks.
completed_tasks - Contains all the Witnesses the user must complete to unwrap the {Reward}.
reward - An object that will be returned once the Quest has been completed.
Interface
new
Creates a {Quest} .
@param required_tasks: A vector set of the required tasks to unlock the
reward
.@param reward: An object with the store ability that can be redeemed once all tasks are completed.
@return Quest<Reward>.
required_tasks
Returns the required tasks of the self
.
@param self: A {Quest}.
@return vector<TypeName>. A vector of the required Witness names to complete the quest.
completed_tasks
Returns the completed tasks of the self
.
@param self: A {Quest}.
@return vector<TypeName>. A vector of the completed Witness names to complete the quest.
complete
Completes a quest by adding the witness Task
name to the self.completed_tasks
vector.
@param self: A {Quest}.
@param: _ A witness
Task
.
finish
Finishes a quest and returns the Reward
to the caller.
@param self: A {Quest}.
@return: Reward.
Aborts
If the required_tasks do not match the completed_tasks
Last updated