Welcome to Streamit, a decentralized content-sharing platform that empowers creators to retain ownership of their intellectual property (IP) while sharing and monetizing their digital content. Built on Stacks blockchain with Clarity smart contracts, Streamit provides a trustless environment where creators have full control over their content and are fairly compensated for their work. Whether you're a writer, artist, musician, or any other kind of digital creator, Streamit ensures that you can share your content, retain ownership, and get paid for every interaction with your work.
This README outlines the features of Streamit, the smart contracts powering the platform, and instructions for installing, deploying, and using the platform.
Streamit is a decentralized platform for content creators to upload, share, license, and monetize their digital content. The platform uses NFTs (Non-Fungible Tokens) to represent ownership of digital content and Clarity smart contracts on the Stacks blockchain to manage licensing, royalties, content ownership, and transactions. Streamit enables creators to keep full control over their intellectual property while ensuring that they are compensated whenever their content is used or sold.
- Content Ownership: Every piece of content uploaded to Streamit is represented by an NFT, allowing creators to maintain full ownership of their work.
- Monetization: Creators can monetize their content by setting licensing fees or charging for access (pay-per-view or subscription models).
- Royalty Distribution: Creators earn royalties every time their content is used, licensed, or resold.
- Content Licensing: Creators can define the terms under which their content can be used or licensed, including restrictions on commercial use or redistribution.
- Content Marketplace: Users can buy, sell, or license digital content on the marketplace, with creators receiving fair compensation for every interaction.
- Transparent Transactions: Every transaction is recorded on the blockchain, ensuring transparency and eliminating the need for intermediaries.
- User Profiles: Users can create profiles to showcase their content and track earnings, transactions, and other activities.
- Governance: Platform-wide decisions can be made through decentralized governance, allowing the community to vote on key changes (e.g., fee structures, policies).
- Secure Payments: Payments for content licensing, purchases, and royalties are handled via smart contracts, ensuring secure and trustless transactions.
The Clarity smart contracts used in Streamit are designed to handle content ownership, licensing, royalties, user profiles, and governance. Below is a list of the key smart contracts and their functionalities:
Purpose: Manages the ownership of digital content, represented as NFTs.
Key Functions:
mint-content
: Mints an NFT representing a piece of content and assigns it to the creator.transfer-content
: Transfers ownership of the content NFT from one user to another (e.g., in case of a sale).get-content-owner
: Retrieves the owner of a specific content NFT.get-content-metadata
: Retrieves metadata (e.g., title, description, content type, creator) for a content NFT.
Purpose: Allows creators to list their content for sale or licensing on the marketplace.
Key Functions:
list-content
: Lists a content NFT for sale or licensing at a specified price.update-listing
: Updates the sale or licensing terms for a listed content item (e.g., price, terms).delist-content
: Removes a content NFT from the marketplace.get-listing
: Retrieves the details of a content NFT listing (e.g., price, status, owner).
Purpose: Manages the licensing terms for content, allowing creators to set specific conditions under which their content can be used.
Key Functions:
set-license
: Defines the licensing terms for a content NFT (e.g., commercial use, redistribution, time-limited access).get-license
: Retrieves the license associated with a content NFT.transfer-license
: Allows users to transfer licenses to other users (if permitted).check-license
: Verifies if a user has the right to use or modify the content based on the license terms.
Purpose: Ensures that creators receive royalties every time their content is sold, licensed, or resold.
Key Functions:
set-royalty
: Allows creators to set a royalty percentage on their content NFT, which will be paid on resales and licenses.pay-royalty
: Automatically pays the royalty to the creator when their content is used or resold.get-royalty
: Retrieves the royalty percentage for a specific content NFT.
Purpose: Handles the payment and monetization process when content is sold, licensed, or accessed.
Key Functions:
buy-content
: Facilitates the purchase of content from the marketplace.pay-for-access
: Allows users to pay for access to premium content (e.g., pay-per-view).set-access-price
: Allows creators to set an access price for their content (e.g., subscription or pay-per-view model).get-access-price
: Retrieves the access price set by the creator for a piece of content.
Purpose: Manages user profiles and tracks content ownership, earnings, and transactions.
Key Functions:
create-profile
: Creates a user profile on the platform.update-profile
: Updates a user's profile information (e.g., name, bio, social links).get-profile
: Retrieves a user's profile and transaction history, including content ownership and earnings.
Purpose: Enables platform-wide governance and administrative control over platform policies.
Key Functions:
set-fee
: Allows administrators to set platform transaction fees for content sales, licenses, and other activities.update-policies
: Allows admins to modify platform rules or policies, such as content guidelines or fee structures.admin-override
: Provides platform administrators with the ability to intervene in disputes or address technical issues.
Purpose: Manages the collection of platform fees from transactions on the marketplace.
Key Functions:
collect-fee
: Collects a fee from users when they buy, sell, or license content on the platform.set-fee-percentage
: Defines the percentage of each transaction that is collected as a platform fee.distribute-fee
: Distributes collected fees to the platform's treasury or designated account.
To deploy and interact with Streamit, you'll need the following tools:
- Stacks CLI: For deploying and managing Clarity smart contracts on the Stacks blockchain.
- Clarity Language: For writing the smart contracts that power the platform.
- Node.js and NPM: For managing backend scripts and dependencies.
- Stacks Testnet: For testing the smart contracts before deployment to the mainnet.
-
Install Stacks CLI:
curl -fsSL https://stacks.co/install.sh | bash
-
Install Node.js and NPM:
sudo apt install nodejs sudo apt install npm
-
Write the Clarity smart contracts for each feature (e.g., content ownership, royalties, marketplace).
-
Use the Stacks CLI to deploy the contracts to Stacks Testnet or Mainnet.
stacks deploy contract <contract-file> --network testnet
- Build the frontend of Streamit using a framework like React or Vue.js.
- Deploy the frontend using Netlify, Vercel, or another deployment platform of your choice.
Once deployed, users can interact with Streamit via the frontend to:
- Create a Profile: Sign up and create a profile to track content ownership and earnings.
- Upload Content: Mint content NFTs and define licensing terms.
- Sell or License Content: List your content on the marketplace for sale or licensing, with transparent and secure payment mechanisms.
- Track Earnings: View transaction history and royalties in your user profile.
- Participate in Content Monetization: Purchase access to exclusive content or license content for personal or commercial use.
- **Governance Participation
**: If you hold governance tokens, vote on important platform decisions (optional).
We welcome contributions to Streamit! To get started:
- Fork the repository.
- Create a feature branch (
git checkout -b feature/your-feature
). - Make your changes.
- Commit your changes (
git commit -am 'Add new feature'
). - Push to the branch (
git push origin feature/your-feature
). - Create a new Pull Request.
Please ensure your contributions follow the code style and conventions used in the project.
Streamit is released under the MIT License.
Thank you for using Streamit — the platform where creators truly own their work and get paid for it!