2 releases
0.1.7 | Feb 7, 2024 |
---|---|
0.1.6 | Dec 28, 2023 |
42KB
770 lines
litemint-royalty-contract
Litemint royalty smart contract powering the Litemint marketplace.
Licensed under MIT. This software is provided "AS IS", no liability assumed. More details.
Introduction
Royalties play a pivotal role in digital economies.
The industry has encountered numerous obstacles in achieving decentralized payment enforcements (we discussed this topic at Meridian 2022, see video excerpt here). Currently, most marketplaces retain significant control over enforcing royalty payments (see this Tweet from OpenSea), which poses challenges to creators.
To address these challenges, we have identified a unique combination with Soroban smart contracts, oracles, and Stellar classic primitives (pre-auth transactions) allowing us to implement an unobtrusive solution for on-chain NFT royalty payment enforcements.
The Litemint royalty contract implements multiple royalty payment schemes for non-fungible tokens, including fixed, subscription, and percentage-based models. A key feature is its ability to enforce royalty payments without isolating NFTs from the Stellar DEX. Our approach ensures that NFT creators and collectors can freely hold and trade their NFTs from any Stellar DEX compatible service, enjoying an unrestricted sales funnel.
Feature List
- Percentage-based royalty payments (see compensation_percentage.rs).
- Fixed royalty payments (see compensation_fixed.rs).
- Subcription royalty payments (see compensation_subscription.rs).
- Decentralized on-chain payment enforcement.
- NFTs compatibility with all ecosystem services.
- Support for all currencies and markets.
- Optional license transfer fee.
- Configurable grace period and marketplace commission rate.
- Strategy design pattern for easily adding new royalty schemes.
Dependencies
soroban-kit
soroban-kit
provides fast, lightweight functions and macros with lean, targeted functionality for Soroban smart contract development:
https://github.com/FredericRezeau/soroban-kit.
The Litemint royalty contract uses the following features from soroban-kit
:
-
oracles
to receive external market data feed. -
storage
for type safety with storage operations.
Getting Started
From the workspace root:
- Cloning the repository:
git clone https://github.com/Litemint/litemint-soroban-contracts.git
- Building the contracts:
soroban contract build
- Running Tests:
cargo test -- --nocapture
- Deploying to testnet:
soroban contract deploy --wasm target/wasm32-unknown-unknown/release/litemint_auction_contract.wasm --source ACCOUNT --rpc-url https://soroban-testnet.stellar.org:443 --network-passphrase "Test SDF Network ; September 2015"
output > CONTRACT_ID
Contributing
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/feature
) - Commit your Changes (
git commit -m 'Add some feature'
) - Push to the Branch (
git push origin feature/feature
) - Open a Pull Request
License
Distributed under the MIT License. See LICENSE for more information.
Contact
LitemintHQ on X - @LitemintHQ
Litemint Marketplace: https://litemint.com
Join our discord server: https://litemint.gg
Dependencies
~11–16MB
~328K SLoC