jorgenbuilder / tixto

2 stars 0 forks source link

Logo

Tixto (tickets to): a generalizable nfts-as-tickets service on the Internet Computer.

Specification for a General Purpose Event Tickets Open Internet Service

Impetus

There are a great number of potential uses for a general purpose ticket NFT service, which would allow creators to monetize and control access to online meetup events, public NFT sale events, early access to a new dApp, and so on.

Primary Components

Standard NFT Interface: Should implement the implied NFT standard of the IC, making sure to include the ability to burn, and perhaps the ability to perform allowances.

Minting: Users must be able to mint tickets, with parameters:

Ticket Display: The ticket display should be a simple SVG graphic that has an attractively simple design, injected with the metadata of each token. Standard views should be adhered to (ext token identifier, token index, thumbnail view.)

Payments: Users should be charged to mint tickets, and payouts should be regularly made based on a distribution that all developers agree upon.

Limitation of Scope

There are tempting functions to add to this canister, but I think they should be resisted. For example, logic for the initial allocation of tickets, or the initial sale of tickets, or the use of a ticket by a holder, etc. Instead, these would be valuable later additions, or services of their own.

Ticket Lifecycle Example:

Minting: A batch of tickets would be minted by a creator, who would specify the metadata and display information that they require for their purpose. The ticket canister stores the metadata and mints the run of ticket NFTs to the desired address.

Burning: The general use case of a ticket is to spend that ticket in order to gain access to some event, dApp feature, etc. This is achieved by allowing a dApp to take control the users ticket NFT and burning that NFT. This is done by transferring the NFT to the blackhole principal.

Expiration: A ticket may be given an expiration date. In those cases, we should indicate with a bright colour that the ticket has expired, and expired tickets should perhaps be evicted from memory after some time.

Scaling to an arbitrary number of tickets

How do we keep the service running as more and more tickets are minted?

CAP integration

Provenance and transaction history would be very good to have.

DAB integration

Plus creating PRs into other wallets, so that we are automatically discovered.

Use Case #1: NFT Pre Sale

Use Case (Common) - Events Ticket

Milestones