Private/Subscriber-only model of decentralized live streaming platform
This project combines fine-grained access control and decentralized video transcoding technology to create fans/subscribers-only live streaming platform. Streamers can create multiple live-streaming channels that have one-to-one relationship to ERC721A Smart Contract. When they create a channel, they set different business logics by controlling the number of maximum fans allowed and the price of each NFT pass. Also for subscribers, buying an NFT pass for a "newbie"s channel could be a great investment opportunity as they're investing in the streamer's potentials to grow, not in the market value of NFTs.
This project uses @Livepeer's decentralized transcoding tech, @Zora's ERC721Drop contracts for more cost-efficient minting and deploying NFT contracts, @NFTStorage for storing metadata assets, and last but not least, @Lit-Protocol's jwt-based token-gating technology to control user's access to resources based on their status.
Streamers: End users can sign-in with their wallets, and they can choose to create a live-streaming channel or subscribe to a channel that they're interested in . When they decide to create a channel, after filling in the form, Zora's NFT Edition Contract gets deployed to the testnet. After the contract is generated, streamer is redirected to the channel dashboard, and after being redirected to the server, nextjs server makes an API call to livepeer to create a streamKey that's required for streamer's to go live on streaming. Streamers can enter their streamKeys into broadcaster softwares like OBS and start streaming.
Subscribers: If end users are interested in this channel, they can enter the channel's address(same as contract's address) and purchase a pass (mint a token) to subscribe to the streamer. Then they're redirected to the channel dashboard and click a button to watch a live streaming event. When subscribers click the button, lit-sdk gets started, and sign to create a jwt and store jwt in Cookies. Then in nextJs server, jwts are verified by lit-sdk, and if parsed tokens contain correct resources, subscribers get granted access to the video playback url.