Skip to content

gopulse-labs/gopulse-core

Repository files navigation

Project Overview

The GoPulse Protocol(GPP) enables users to create content posts, "validators" to validate those posts, and participants to earn rewards based on the outcome of the validation process. It implements a novel PvP AMM mechanism for managing funds and distributing rewards among the participants.

What is GoPulse?

GoPulse is a revolutionary PvP (Player versus Player) Automated Market Maker (AMM) system that combines the best of Web2 and Web3 technologies. This cutting-edge solution provides a unique and decentralized platform for content creators, validators, and participants to engage in a fair and rewarding ecosystem.

Unlike traditional Web2 platforms, GoPulse eliminates the need for intermediaries, ensuring direct interactions between content creators and validators. By leveraging the power of the Solana blockchain, transactions are efficient, secure, and transparent, guaranteeing trust and immutability.

Compared to existing Web3 competitors, GoPulse offers distinct advantages. First, it introduces a novel approach by focusing on player-driven content validation. Content creators and validators engage in a dynamic competition where validators stake funds to validate content quality and accuracy. This incentivizes both parties to actively participate, ensuring high-quality content and reducing the risk of fake or misleading information.

Second, it introduces a fair and transparent reward distribution model. When a content post is validated, funds are allocated based on the contributions of content creators and validators. This creates a self-balancing mechanism that rewards active participants, discourages manipulation, and promotes a vibrant ecosystem.

Third, GoPulse leverages the speed and scalability of the Solana blockchain. Transactions are processed rapidly and at low costs, enabling seamless user experiences and facilitating mass adoption. This scalability advantage positions us ahead of Web3 competitors that may suffer from congestion and high fees during peak usage periods.

By combining the benefits of Web2 convenience, Web3 decentralization, and the efficiency of Solana blockchain, GoPulse revolutionizes the way content is created, validated, and rewarded. We envision a future where users actively engage in a trustworthy and rewarding ecosystem, unlocking a new level of content quality and authenticity.

Incentive Structure

GoPulse can be considered as a combination of both cooperative and non-cooperative game elements, depending on the specific interactions and perspectives we consider.

  • Cooperative Game: The system incorporates cooperative elements as validators and content creators have a shared interest in maintaining the accuracy and quality of the content within the ecosystem. Both parties benefit from a cooperative environment where accurate content is validated and rewarded. Validators cooperate by providing accurate assessments, and content creators cooperate by producing high-quality content. The system's success relies on their collective efforts to maintain its integrity.

  • Non-Cooperative Game: At the same time, the PvP AMM system introduces non-cooperative elements through competition among validators. Validators compete against each other to stake their funds and validate content, aiming to secure higher rewards for themselves. This competitive aspect creates a non-cooperative game scenario where validators independently make decisions to maximize their own gains. Content creators also engage in non-cooperative competition by striving to produce outstanding content to attract validators' attention and validation.

While there are cooperative aspects in terms of maintaining the overall quality and accuracy of the system, the competitive nature of the PvP AMM system introduces non-cooperative elements where individual validators and content creators pursue their self-interests. As a result, we can view the system as a combination of both cooperative and non-cooperative game dynamics.

Code Overview

  • The code defines a program called gopulse using the #[program] attribute.
  • The program has several instruction methods, including post_v0, validate_v0, poster_collect_v0, validator_collect_v0, signup_user_v0, and update_user_v0. Each method represents a specific operation in the PvP AMM system.
  • The post_v0 method is used to create a new content post. It takes parameters such as content_link, topic, amount, validator_threshold, and post_counter. It performs various validations on the input parameters and initializes a new Content account. It also transfers funds (amount) from the poster account to a vault account.
  • The validate_v0 method is used by validators to validate a specific content post. It takes parameters such as amount and position. It initializes a new Validate account and updates the corresponding Content account with the validation information. It also transfers funds (amount) from the validator account to the vault account.
  • The poster_collect_v0 method is called by the poster to collect funds from a content post if the long position wins. It calculates the share based on the ratio of the poster's contribution to the short pool and transfers the funds from the vault account to the poster account.
  • The validator_collect_v0 method is called by validators to collect their funds from a content post if they have validated the winning position (long or short). It calculates the share based on the ratio of the validator's contribution to the winning pool (long or short) and transfers the funds from the vault account to the validator account.
  • The signup_user_v0 method is used to create a new user account with profile information. It initializes a new UserState account associated with the user's authority.
  • The update_user_v0 method is used to update the profile information of an existing user. It modifies the corresponding UserState account.
  • Several structs are defined to represent different types of accounts used in the program, such as Content, Validate, and UserState. These structs store various data related to content posts, validations, and user profiles.
  • Constants are defined to specify the lengths of different account fields and error codes are defined to represent specific error scenarios that can occur during the program execution.

Releases

No releases published

Packages

No packages published