GoPlausible
  • GoPlausible
  • 🤖PLAUS Quick Intro
  • 🤖Anatomy of a PLAUS
  • 🤖PLAUS Claim instructions
  • 🤖Export PLAUS instructions
  • Overview
    • PLAUSIBLE & DIDs
    • PLAUSIBLE & Verifiable Credentials
    • PLAUSIBLE & OpenBadges
  • Tutorials
    • ⛵Creators: Onboarding
    • 📦Creators: Create PLAUS
    • ☢️Creators: Activate PLAUS
    • 🪄Creators: Fetch Magic Links
    • 💼Claimers: Claim PLAUS with wallet
    • 🏁Claimers: Claim PLAUS without wallet
    • 🏳️Claimers: Export locally claimed PLAUS
  • Features
    • 🔥Protocol Features
    • 🔏Claim controllers
  • Technical documentation
    • 🎴Concept poster
    • 📐Architecture
    • 💻Serverless backend
    • 🖥️UI / UX
  • Use Cases
    • 🎨NFT designers
    • ✈️Tourism
    • 🎵Music artists
    • 🗝️Fan clubs & social groups
    • 🏫DAOs
    • 🎮GameFi
    • 🎟️Ticketing services
    • ⚖️Law & legal entities
    • 🎸Entertainment services
    • ⚽Sport organizations
    • 🌎Venues & event organizers
    • 🏨Universities & educational entities
    • 👤Community managers
Powered by GitBook
On this page
  • PLAUSIBLE Protocol
  • Plausible links
  • Plausible concept:
  • Plausible technical design:
  • Plausible Smart Contracts
  1. Technical documentation

Architecture

PreviousConcept posterNextServerless backend

Last updated 7 months ago

PLAUSIBLE Protocol

W3C Compliant DIDs, Verifiable Credentials and OpenBadges powered by Algorand Blockchain

This documentation is subject to update for newer updates please refer to

Plausible is W3C Compliant DIDs, Verifiable Credentials, OpenBadges, and smart utility NFTs protocol built on .

Plausible links

top↑

Plausible concept:

top↑

GoPlausible dApp is consisted of a frontend calling an Algorand ASC system in which ASCs use each other via inner transactions and C2C calls.

Plausible technical design:

top↑

Plausible features :

  • Geo constraint option (Geofencing using connecting ISP country and allow and ban lists ).

  • Authorization Signature constraint option (Author must sign the release before Plausible issuance for claimed claimers).

  • Shared Secret constraint option (Claimer must scan a QRCode during calling the Plausible Item ASC with it in order to claim successfully).

  • Dynamic NFTs per Plausible item (Plausible is 100% token-less and NFTs are generated and owned by Plausible item contract and that belongs to Plausible item's author).

Plausible is consisted of a frontend and smart contracts on Algorand chain:

  • Frontend

  • Smart Contracts

Plausible frontend has 3 major functions (all in a single view for simplicity):

  • Wallet Session

  • Author UI

  • Claim UI

Note: Frontend will be available through both cloudflare (heavily distributed on edge) and IPFS to ensure decentralization (with transparent routing for best UX).


Author's Journey:

top↑

1- Author easily gets onboard by opting into Plausible's parent ASC.

2- Then can create a new Plausible venue.

3- Then activate the venue to let claims begin (This differs than start time option of Plausible).

Note : If SIG is not enabled for Plausible Venue, Claim approval will send Plausible NFT or TXN to Claimer's wallet but if SIG is enabled then after signing of Author, Plausible NFT or TXN will be sent automatically to Claimer's wallet, after author signs and sends a release method call transaction to release all successfully claimed Plausible Claimer.

Options available for Plausible creation:

  • Time (default enabled): Start time check (compared to LatestTimestamp)

  • Geo: Country allow and ban lists.

  • Signature: Author's signature is needed to make Plausible claimable for every Claimer, individually. Each and every Claimer can receive their single claimed Plausible (in NFT or TXN depending on Plausible config) only after Author's authorization via a successful method call (which obviously should happen after both venue activation and venue start time).

  • QRCode: Upon activation a secret key will be generated and included in a transaction as a method input parameter and this TXN is then communicated by a QRCode in venue location and Claimer scans this QRCode during physical presence and claims (other arguments will be added to this raw transaction object after scan and when claiming).

Note: QRCode feature is still under heavy re-ideation, re-design and re-everything! So please, kindly consider it WIP and FUTURE release functionality!


Claimer's Journey:

top↑

1- Claimer simply gets onboard by opting into parent ASC.

2- Then get a searchable list of Plausible venues and applys to one by opting into it.

3- Then after general venue activation (by author) and by satisfying what Plausible venue options require, claim the Plausible and get Plausible NFT if approved.

Note : If SIG is not enabled for Plausible Venue, Claim approval will send Plausible NFT to Claimer's wallet but if SIG is enabled then after signing of Author, it'l be sent automatically to Claimer's wallet.


Plausible Smart Contracts

top↑

Plausible ASC System is designed on basis of newest TEAL features came with TEAL v 8.0 on AVM8. Plausible Parent contract is created and thereafter every Plausible item is created by this parent contract based on configurations needed.

All methods expenses and fee details are in following table (those not in this table have just normal 1 MinFee):

Note: This section (Fees) is subject to further updates and changes and is work in progress!

Method
Fee
Amount

New Plausible

1 MinFee

2 MinFee

Setup Plausible

1 MinFee

1 MinFee

Activate Plausible(Author pays)

3 MinFee

Claimer_Qty * 4 * MinFee

Activate Plausible(Claimer pays)

3 MinFee

1 MinFee

Release Plausible

1 MinFee

1 MinFee

Claim Plausible(Author pays)

1 MinFee

0

Claim Plausible(Claimer pays)

4 MinFee

0


Entities Relations:


Lifecycle:


UseCase:

Note: The NoOp calls without args will be rejected with error. This is being examined as a security practice


Plausible ASC TEAL Graph:

top↑


Plausible ASC ABI :

top↑

Note 1: Data fields are global states of Plausible parent smart contract.

Note 2: Fee collection is not included anywhere at this phase of Plausible MVP development but certainly is a priority prior to public TESTNET deployment. It happens on parent smart contract.

Note 3: Author user has all metrics in localState of Plausible Item smart contract and all Authored Plausibles (upt to 16 item) in localState of Plausible smart contract (parent)


Plausible ASC ABI Schema :

top↑

{
  "name":"plausible-contract",
  "desc": "Plausible Parent smart contract",
  "networks":{
      "MainNet":{
          "appID": 0
      },
      "TestNet":{
          "appID": 0
      }
  },
  "methods":[
    {
          "name": "setup",
          "args": [
            {
              "type": "string",
              "name": "version"
            }
          ],
          "returns": {
            "type": "string"
          },
          "desc": "Sets up the Plausible main contract, sets and logs the version and returns"
        },
      {
          "name": "item_create",
          "args": [
            {
              "type": "pay",
              "name": "pay"
            },
            {
              "type": "byte[]",
              "name": "asc_approval_bytes"
            },
            {
              "type": "byte[]",
              "name": "asc_clear_bytes"
            }
          ],
          "returns": {
            "type": "string"
          },
          "desc": "Creates a new Plausible item smart contract and returns the app id"
        },
        {
          "name": "item_update",
          "args": [
            {
              "type": "application",
              "name": "application"
            },
            {
              "type": "byte[]",
              "name": "asc_approval_bytes"
            },
            {
              "type": "byte[]",
              "name": "asc_clear_bytes"
            }
          ],
          "returns": {
            "type": "string"
          },
          "desc": "Updates an Plausible item smart contract and returns item application ID"
        },
        {
          "name": "item_delete",
          "args": [
            {
              "type": "application",
              "name": "application"
            }
          ],
          "returns": {
            "type": "void"
          },
          "desc": "Deletes an Plausible item smart contract and returns void (approve only)"
        }
  ]
}

Plausible Item ASC TEAL Graph:

top↑

Plausible ASC ITEM ABI :

top↑

Note 1: Data fields are global states of Plausible item smart contract.


Plausible ASC ITEM ABI Schema :

top↑

{
    "name": "plausible-item-contract",
    "desc": "Plausible Item smart contract",
    "networks": {
        "MainNet": {
            "appID": 0
        },
        "TestNet": {
            "appID": 109691598
        }
    },
    "methods": [
        {
            "name": "setup",
            "args": [
                {
                    "type": "pay",
                    "name": "pay_min_fee"
                },
                {
                    "type": "account",
                    "name": "author_account"
                },
                {
                    "type": "application",
                    "name": "parent_application"
                },
                {
                    "type": "string",
                    "name": "reserved"
                },
                {
                    "type": "string",
                    "name": "plaus_name"
                },
                {
                    "type": "string",
                    "name": "plaus_logo"
                },
                {
                    "type": "string",
                    "name": "plaus_desc"
                },
                {
                    "type": "string",
                    "name": "plaus_timezone"
                },
                {
                    "type": "string",
                    "name": "plaus_address"
                },
                {
                    "type": "string",
                    "name": "plaus_url"
                },
                {
                    "type": "string",
                    "name": "plaus_web2"
                },
                {
                    "type": "(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)",
                    "name": "plaus_uint64_tuple"
                }
            ],
            "returns": {
                "type": "string"
            },
            "desc": "Sets up an Plausible smart contract item for the first time"
        },
        {
            "name": "activate",
            "args": [
                {
                    "type": "pay",
                    "name": "pay_min_fees"
                },
                {
                    "type": "axfer",
                    "name": "optin_plaus_nft"
                },
                {
                    "type": "application",
                    "name": "parent_application"
                },
                {
                    "type": "asset",
                    "name": "nft_asa"
                }
            ],
            "returns": {
                "type": "string"
            },
            "desc": "Activates an Plausible item smart contract and returns string"
        },
        {
            "name": "claim",
            "args": [
                {
                    "type": "pay",
                    "name": "pay_min_fee"
                },
                {
                    "type": "asset",
                    "name": "nft_asset"
                },
                {
                    "type": "application",
                    "name": "parent_application"
                },
                {
                    "type": "account",
                    "name": "claimer_account"
                },
                {
                    "type": "string",
                    "name": "qr_secret"
                },
                {
                    "type": "(uint64,uint64,uint64,uint64,uint64)",
                    "name": "claim_uint64_tuple"
                }
            ],
            "returns": {
                "type": "string"
            },
            "desc": "Claims an Plausible for a claimer and returns NFT sending inner-transaction hash"
        },
        {
            "name": "release",
            "args": [
                {
                    "type": "application",
                    "name": "parent_contract"
                }
            ],
            "returns": {
                "type": "string"
            },
            "desc": "Releases Plausible and allows all Plausible claimer's to start claiming"
        }
    ]
}

Since Plausible is totally decentralized, trustless and permission-less: Every Plausible item author has full authority of the created PLAUS items (Plausible-DAO is coming with dao, voting and governance features in near future, after startup formation. Preferably I will use integration to an already working service with ABI)!

The plaus_contract.json contains the ABI Schema for parent Plausible contract and plaus_item_contract.json is the full ABI Schema of Plausible item contract which will be created via an inner transaction.

Plausible protocol fully complies to and standards on Algorand as well as ARC13 and ARC113 proposed and heavily used internally by GoPlausible.

📐
ARC3
ARC4
Plausible FAQ
Algorand
GoP
lausible Github Repos & Documentation
Go
Plausible Website (plausible.com)
Go
Plausible dApp (plausible.xyz)
Go
Plausible TESTNET dApp (testnet.plausible.xyz)
GoPlausible NFD (plausible.algo)
Plausible Concept
Plausible Links
Plausible Technical Design
Author's Journey
Claimer's Journey
Smart Contracts