โถ๏ธVideo NFTs
The canonical association to a piece of video content.
Preamble
This article will later be incorporated into the document at a later time.
Introduction
A passionate follower of some creator or topic may find significant value in being able to associated themselves with related creative content. They key is that the association is very public and visible, and thereby allows the owner to signal to their community and related audiences something about who they are, the resources they have - financial, social and human, in the latter for example by having discerning taste or judgement. This behavior is already very prevalent in lots of social arenas in the off-line world, in particular among collectors. People collect stamps, coins, art, cars, sneakers, etc., and motivations span:
inherent enjoyment in collecting anything durable, sort of like a hobby, where you also get to curate a collection
a tasteful way to demonstrate you have access to resources like time, money and information
showing you have good judgement and taste
owning a piece of history in some way
making a good investment
Video NFTs play into all of these objectives, and arguably substantially amplify your ability to achieve those goals through the following
More public: you and your assets are visible for everyone to see, and is a highly entertaining and viral medium, e.g. unlike a painting hanging on a wall in your house.
More financial: anyone can bid on and buy your assets 24/7/365, giving you increased liquidity and greater price discovery. This makes it particularly valuable to be early, with good judgement, before something goes viral or gains attention, and perhaps even makes it valuable to be able to market something and make it valuable.
Hence the name of the game here is really to empower the owner to be visible as the owner, to support all these goals, and to make it easy to transact in this ownership. For the creator the value is in monetising the exclusive ownership status over their content.
Critically, owning a video, in the sense described herein, is not a claim on the intellectual property, revenue or any other rivalrous property of using the actual content itself.
Concepts
NFT Owner
An NFT Owner refers to one among two distinct varieties of possible owners of a given NFT, and they are
ChannelOwner: This means that whomever owns the channel in which the video to whicht he NFT corresponds, is also the owner of the NFT.
Member: This means that a given specified member owns the video.
Notice that curator groups, curators or the content directory lead cannot directly own an NFT, only by owning the channel. This also implies that, as will be seen further down, neither of these actors can participate as possible beneficiaries of an NFT, for example as bidders, buyer or offer recipients.
Auction Type
An Auction Type refers to one among the two distinct varieties of auctions which can be used to reallocate ownership of an NFT, hence it is either
English: An English Auction is an auction where the highest bid, above some possibly set reservation price, is maintained and updated over time until some block in the future, called the finalization block. Lastly there is an associated notion of an extension period, which is a period before the finalization bloc, where submitting any bid below the possible buy now price will result in pushing the finalization block forward by the extension period. This is to avoid sniping.
Open: An Open Auction is an auction which operates the same way as an English auction, except that there is no predefined duration, hence no finalization block. For this reason there is a bid locking duration, which is the number of blocks which must pass from the time a bid is submitted until the bidder can withdraw the bid if it is not accepted by the current owner.
In both kinds of auctions, there is the concept of a buy now price, which if set, means that if any bid matches this amount at any time, the auction is automatically concluded in favor of this bid.
Bid
A bid represents a binding financial commitment from a member to aquire ownership of an NFT from the current owner at a given price in an auction, and it is defined by
Bidder: The identifier of the member who is making the bid.
Account: The identifier for the account which holds the committed funds, which will be encumbered by a reservation for as long as the bid exists.
Amount: The balance of funds committed in the bid.
MadeAtBlock: The block number in which the bid was created.
Notice that only members can be bidders, no other kind of actor.
Auction
An auction represents the structured process through which the current owner can transfer ownership of an NFT through an open non-intermediated bidding process, and it is defined by the following
Reservation Price: The minimum balance required for amount of any bid to be valid.
Type: The representing what type of auction this is.
Minimal Bid Step: The minimum difference in amount between two consecutive bids in order for the new bid to be valid.
Last Bid: If present, is the last which was successfully submitted.
Starts At: The block after which point it becomes possible to submit bids in the auction.
Whitelist: The set, which if non-empty, contains the set of members who are permitted to submit bids in the auction.
Content Actor
A Content Actor represents a potential owner of an NFT, either through direct ownership or control over a channel.
Curator: A given curator in a given curator group. The curator is a valid controller of any channel owned by a curator group in which it is a member.
Member: A given member.
Lead: The lead of content directory working group. The lead is a valid controller of any channel owned by a curator group.
NB: This is top level content directory concept, so this will def. need to be moved out of the NFT specific section.
Transactional Status
The transactional status of an NFT represents the state of current opportunities to change the ownership, and it has the following distinct varieties
Idle: There is no currently available opportunity, and the only relevant action is to transition to one of the other three other statuses.
Offered: The current owner has extended an offer for a specific other member, called the beneficiary to acquire ownership of the NFT, possibly for some require payment. In this status, the beneficiary can at any time accept the offer, which results in title transfer, or the current owner can withdraw the offer, which results in returning to the idle status.
Auction: There is a currently active auction of some kind, as represented by an . The owner can cancel the auction at any time so long as there is no bid currently present in the auction. Anyone, possible screened by the whitelist, is free to submit a bid, which will only be successfully registered if is the amount is no less than the minimum bid step above any prior existing bid, or if it is the first bid, is no less than the reservation price. Beyond this, things work a bit differently depend on on the
AuctionType
Open: Once a bid is submitted, it can also be withdrawn at any time by the bidder, so long as the locking duration has passed since the time of submission of this bid. The winner is selected by being chosen by the owner as the winning bid through.
English: A bid cannot be withdrawn, and any bid which still is active when the finalization block has passed, is considered the winner. Any bid submitted within the extension period of the current finalization block results in the finalization block being pushed forward by the extension period. In order to trigger the actual competiton of the auction, causing the ownership transfer and payments, an active call must be made after the finalization block has passed.
Buy Now: Anyone can instantly become the owner by paying a given amount. The owner can change the status back to idle at any time.
The stages and transitions are summarized in the image below.
NFT
An NFT represents ownership title over video, and it is defined by the following information
Owner: The representing the current owner.
Status: The representing the state of the NFT currently.
Royalty: If set, it specifies the fraction of the paid value of later transactions which must accrue to the issuer.
Minting Limits
Minting limits on NFTs are applied to avoid massive proliferation of low quality NFT projects.
There are several types of limits, depending on the time window considered and context:
Global Limits
Global weekly limit: max number of NFT that can be minted each week, stored on chain
Global daily limit: max number of NFT that can be minted each day, stored on chain
The above values are updated via a UpdateGlobalNftLimit
proposal.
Channel Limits
Channel weekly limit: max number of NFT that can be minted each week by a particular channel, they are set at channel creation with a value of
DefaultWeeklyChannelLimit
Channel daily limit: max number of NFT that can be minted each day by a particular channel, they are set at channel creation with a value of
DefaultDailyChannelLimit
Their value can be modified on a per-channel basis by the Lead or a Curator having sufficient permission level.
Toggling the limit functionality
The whole limiting functionality can be disabled. The status of the NFT limit functionality can be inspected by looking at the Content.nft_limit_enabled
value on chain
Parameters
The following mutable parameters.
MinRoundTime
BlockNumber
Min auction round time.
MaxRoundTime
BlockNumber
Max auction round time.
MinBidLockDuration
BlockNumber
Min bid lock duration.
MaxBidLockDuration
BlockNumber
Max bid lock duration.
MinStartingPrice
Balance
Min auction staring price.
MinCreatorRoyalty
Perbill
Min creator royalty percentage.
MaxCreatorRoyalty
Perbill
Max creator royalty percentage.
MinBidStep
Balance
Min auction bid step.
MaxBidStep
Balance
Max auction bid step.
AuctionFeePercentag
Perbill
Auction platform fee percentage.
AuctionStartsAtMaxDelta
BlockNumber
Max delta between current block and starts at.
DefaultWeeklyChannelLimit
u64
Max amount of NFT that a newly created channel can mint in a week
DefaultDailyChannelLimit
u64
Max amount of NFT that a newly created channel can mint in a day
Constants
The following constants are hard coded into the system, they can only be updated with a runtime upgrade.
INVITE_LOCK_ID
The identifier value for the lock applied to root account of a new member
fill-in
xxx
fill-in
Extrinsics
Issue NFT
Parameters
actor
The ContentActor
attempting to issue the NFT.
video_id
Video on which NFT is to be issued.
royalty
If present, the royalty for all future auctions
metadata
The raw metadata for the issuance.
to
If present, the member who should be set as the initial owner.
Conditions
WIP.
Effect
WIP.
Offer NFT
Parameters
video_id
The video corresponding to the NFT for which offer is to be made.
owner_id
ContentActor
identifying caller.
to
The beneficiary member of the offer.
price
If present, the amount which must be paid by beneficiary to accept offer.
Conditions
WIP.
Effect
WIP.
Accept Offer
Parameters
video_id
The video corresponding to the NFT for which offer is to be made.
recipient_id
Identifier of beneficiary.
Conditions
WIP.
Effect
WIP.
Sell NFT
Parameters
video_id
The video corresponding to the NFT for which offer is to be made.
owner_id
ContentActor
identifying the caller.
price
Price of buying the NFT.
Conditions
WIP.
Effect
WIP.
Buy NFT
Parameters
video_id
The video corresponding to the NFT for which offer is to be made.
participant_id
Member attempting to buy the NFT.
metadata
User provided metadata associated with the purchase and ownership.
Conditions
WIP.
Effect
WIP.
Start NFT Auction
Parameters
owner_id
ContentActor
who owns the NFT.
video_id
Video identifier for video to which NFT corresponds.
auction_type
AuctionType designating what kind of auction should be used.
reservation_price
Balance that sets lower bound for first valid bid amount.
minimal_bid_step
Balance that sets lower bound for how much each new bid must exceed last valid bid amount, if it exists.
buy_now_price
If provided, the Balance at which one would instantly be able to buy the NFT.
starts_at
If provided, the BlockNumber at which it becomes possible to bid in the auction or buy now.
whitelist
Set of membership identifiers which, at leats one is provided, restricts bidders or buyers to be among these.
Conditions
WIP.
Effect
WIP.
Make Bid
Parameters
participant_id
Member attempting to buy the NFT.
video_id
The video corresponding to the NFT for which offer is to be made.
bid_amount
The amount of the bid.
metadata
User metadata in the bid.
Conditions
WIP.
Effect
WIP.
Cancel Open Auction Bid
Parameters
participant_id
Member attempting to buy the NFT.
video_id
The video corresponding to the NFT for which offer is to be made.
Conditions
WIP.
Effect
WIP.
Claim Won English Auction
Parameters
member_id
To be root account of membership.
video_id
The video corresponding to the NFT for which offer is to be made.
metadata
User provided metadata associated with the purchase and ownership.
Conditions
WIP.
Effect
WIP.
Cancel Transaction
Parameters
owner_id
ContentActor
who owns the NFT.
video_id
The video corresponding to the NFT for which offer is to be made.
metadata
User provided metadata associated with the purchase and ownership.
Conditions
WIP.
Effect
WIP.
Pick Open Auction Winner
Parameters
owner_id
ContentActor
who owns the NFT.
video_id
The video corresponding to the NFT for which offer is to be made.
metadata
User provided metadata associated with the purchase and ownership.
Conditions
WIP.
Effect
WIP
Sling Back
Description
Returns ownership of idle status NFT from owner to channel itself, even if the channel is owned by the same member who possibly is the owner.
Parameters
video_id
The video corresponding to the NFT for which sling back is to be done.
owner_id
ContentActor
who owns the NFT.
Conditions
WIP.
Effect
WIP.
Update Channel NFT Limit
Parameters
actor
ContentActor
either Lead or Curator with sufficient permission.
nft_limit_period
Type of period for the limit: either Weekly or Daily.
channel_id
Channel which limit we want to set.
limit
Value for the new limit to be set.
Conditions
WIP.
Effect
WIP
Last updated