Updated 468 days ago

the sticker protocol

the sticker protocol is a public good and fully permissionless and open hyperstructure for selling, printing, trading, and redeeming digital stickers backed by frxETH

  • Crypto / Web3
  • Ethereum
  • Optimism
  • DAO / Community
  • NFT
  • DeFi
  • Liquid Staking

the sticker protocol

print digital stickers, imbue them with value, and trade them across the web


here's a video tour of this repo



the sticker protocol is a public good and fully permissionless and open hyperstructure for selling, printing, trading, and redeeming digital stickers backed by frxETH.


welcome to DeFi Sticker.0

the sticker protocol eliminates the mental transaction costs of moving money on the internet — social micropayments are back, baby, and they're cooler than ever.

stickers are an adhesive art form, a unique medium of creativity and expression that helps the p2p social web stick together.


protocol overview

a sticker is an individual edition of an ERC1155 NFT living on a dedicated OP Stack rollup in which transfers and trades are fully subsidized and account-abstracted. stickers, upon minting, are fully backed by mainnet frxETH, which is staked for risk-free yield. upon burning a sticker on the rollup, the backing mainnet frxETH is unstaked and returned.

as users react to their friends or creators around the web, the sticker NFTs are transferred, sending both meaning and money to another.

as non-fungible stores of frxETH, stickers have an insane monetary premium and yield from the sfrxETH is streamed to protocol participants (platforms, artists, and others). additionally, any stickers minted with ETH facilitate the locking of frxETH behind the scenes.


technical details

printing

artists provide sticker packs for printing. when a pack they've designed is minted, they earn a fee (calculated by IPrinter#primarySaleInfo(...)).

anyone can produce a sticker to be sold on any platform — they're just NFTs and follow the NFT Metadata standard. artists can use the full expressivity of solidity to restrict the supply of their stickers or how they're distributed.

anyone can write a UI to facilitate the minting of stickers, and claim a Finders Fee in exchange, giving them a pro-rata % of all yield generated by the ETH they facilitated the locking of. minting UIs should not charge an additional minting fee but can—if they do so they should explicitly make that fact know in the breakdown of costs.

users print a sticker pack by providing the backing (frx)ETH, along with the artist's printing fee

ex: to mint a pack of 10 stickers backed by 0.0001 ETH each, the user pays 0.0012 (frx)ETH. 0.0002 frxETH goes directly to the artist, and each minted sticker is imbued with 0.0001 frxETH.

tokenIds are deterministic by implementation — we pack the following information into a tokenId:

uint8 uint8 8 bytes 20 bytes
tier id salt printer
= 32 bytes

using this model, an artist defines a pack of stickers by providing a salt and printer contract.

the purpose of the salt is to support multiple packs of stickers with a single printer implementation.

because id is a uint8, the maximum number of unique sticker designs in any one given pack is 256.

mint with ETH, frxETH, frxETH#permit()

stickers can be minted with ETH and frxETH, and optionally with permit()

because ETH <> frxETH goes through the swap facility, the protocol opts to forward the frxETH directly to artists who can swap it to their preferred currency independently

sticker tiers

stickers have tiers of value, satisfying the requirement that users be able to contribute a lot of value in a single sticker interaction

Tier Color Value (frxETH) Est. Value (USD)
Common White 0.0001 $0.2
Uncommon Green 0.001 $2
Rare Blue 0.01 $20
Epic Purple 0.1 $200
Legendary Orange 1 $2000

(modeled after Blizzard rarity tiers)

sticker printers

sticker printers are sticker implementation contracts, primarily responsible for defining the additional behavior and display of a sticker, as well as secondary sale royalties.

sticker printers abide by the following interfaces

  • IERC1155MetadataURI — (uri(...))
  • IERC2981 — (royaltyInfo(...))
  • IPrinter
    • primarySaleInfo(...)
    • onBeforeMint
    • onAfterBurn

(v1.0) Stick Together, The DAO

the sticker protocol should be a primitive, and as governance-minimized as possible, but i can't think of a way to efficiently and fairly distribute yield from the vault to protocol participants that isn't prey to sybil attacks or gamification.

the solution is to inject some human verification into the mix and distribute rewards through a combination of:

  • retroactive subsidization of integrations
  • retroactive subsidization
  • proactive grant distribution, nouns-style

for v0.1, the 'dao' is just a multisig that can claim and direct yield from the sfrxETH Vault. in v1.0, one could consider veTokenomics w/ guage voting to redirect vault yield per-epoch

(v1.0) subsidized transactions

the Sticker chain is operated by Stick Together, which is a paymaster for known transaction types on the OP chain, effectively providing free transactions for all sticker-related operations, especially transfers and distributions.

(v1.0) marketplaces

user-facing marketplaces for stickers can be incentivized with a claim on some % of the yield they facilitating locking per-epoch. this probably requires some sort of minimum-flow calculation, or otherwise requires stickers to be locked in the protocol per-epoch in order to measure yield distcretely, but there's something here.

can support counterfactual printers / sticker packs — just calculate the CREATE2 address of the printer and you'll know your token ids, etc.

mvp

v0.1 — the protocol is first developed as a single-chain hyperstructure

v1.0 — cross-chain messaging & dedicated OP Stack operated by Stick Together w/ account-abstracted subsidized txs

with the split-chain v1.0, minting-related logic (gating, total supply, etc) will live on mainnet and we want display/trading (uri, royalty info, etc) logic available on the sidechain — do we use deterministic deploys to deploy the same IPrinter on each chain? allows for easy message passing