User Flow for GP Protocol

Giants Protocol User Flow
  1. Role Creation:

  • User Action: Create a new role using metadata and metaprotocol fields.

  • Process:

    • User inputs role attributes.

    • Use gpp:deploy to deploy the role.

  • Example:

  • Metaprotocol: gpp:deploy

  • Metadata:

    {

    "Giant":

    {

    "Attack": "90",

    "Defend": "20",

    "Element": "Wind"

    }

    }

  1. Adding Character Items/Role Upgrade:

2.1 Adding Character Items

Game developers can batch-etch items, and users can claim these items themselves when they meet the eligibility criteria, or the game developers can airdrop the items.

Process:

  • Game Developer Action: Batch-etch items.

  • User Action: Claim items upon meeting eligibility criteria or wait for an airdrop from the game developers.

2.2 Upgrading Characters When creating advanced characters, game developers can include the user's previous inscription ID as the parent ID to link the two characters. Alternatively, game developers can batch-produce upgraded characters, and users can send their original characters to the game developers to claim the advanced characters for an upgrade.

Process:

  • Creating Advanced Characters:

  1. Game Developer Action: Include the user's parent ID when creating advanced characters.

  • Batch-Producing Upgraded Characters:

  1. Game Developer Action: Batch-produce upgraded characters.

  2. User Action: Send the original character to the game developers and claim the advanced character for the upgrade.

Example: Creating Advanced Characters ( Linking Characters Using Inscription ID**)**

  • Scenario: The player adds the class: Assassin by Linking Characters Using Inscription ID. Game developers create advanced characters by including the user's previous character ID as the parent ID, linking the two characters.

  • New Attributes:

  • Class: Assassin

  • Metaprotocol: gpp:deploy

  • Metadata:

    {

    "Giant":

    {

    "Class": "Assassin"

    }

    }

For example, if a user has a basic character inscription ID example_inscription_id_001, game developers can use it as the parent ID when creating a new character.

When a user obtains an Assassin Badge in the game, the game can read the following metadata and metaprotocol information:

  • {

    "Giant": {

    "Attack": "90",

    "Defend": "20",

    "Element": "Wind"

    }

    }

    {

    "Giant": {

    "Class": "Assassin"

    }

    }

The user's character, "Giant", now has an additional attribute, "Class: Assassin".

3. Claiming Upgraded Role:

  • User Action: Manually claim the new role.

  • Process:

    • User sends a rune to claim the upgraded role.

  • Result: User receives the upgraded role attributes.

Application Scenarios

  • Performances: Manage tickets and credentials for events.

  • Competitions: Track and validate participant entries.

  • Games: Create and upgrade in-game characters and items.

  • Props: Manage ownership and attributes of digital props.

  • Real-World Assets: Represent and manage physical assets through etching on metadata and metaprotocol.

Random Data Example

The random data example involves specifying a public data source URL in the metadata and using multiple hash functions to process this data. By using random hash functions and random data sources, the security of the system is enhanced. This method can be applied to various domains requiring secure and unpredictable data generation.

Metadata Example

{

...

"data_source_url": "<https://ordinals.com/r/blockinfo/850000>",

"hash_function_0": "INSCRIPTION_ID",

"hash_function_1": "INSCRIPTION_ID",

...

"hash_function_N": "INSCRIPTION_ID",

...

}

Explanation

  1. Data Source URL:

  • The data_source_url is a URL pointing to a specific data source. In this example, it is a link to block information from a blockchain at a specific block height (850000). This URL provides data like the block's timestamp, hash, difficulty, weight, etc.

  • Example: "data_source_url": "<https://ordinals.com/r/blockinfo/850000>"

  1. Hash Functions:

  • The hash_function_X fields represent different hash functions used to process the data. Each hash_function_X can be linked to an inscription ID, which might be a reference to a specific hashing algorithm or process.

  • Example:

    "hash_function_0": "INSCRIPTION_ID",

    "hash_function_1": "INSCRIPTION_ID",

    "hash_function_N": "INSCRIPTION_ID"

  1. Purpose:

  • Using random hash functions and data sources enhances security by introducing unpredictability. The data source provides unique information at the time of the block, and the hash functions ensure that this information is processed in a secure manner.

  • Combining multiple hash functions and data sources makes it harder to predict or manipulate the outcome, thus improving security.

Last updated