4 releases
0.1.7 | Feb 7, 2024 |
---|---|
0.1.5 | Dec 26, 2023 |
0.1.4 | Dec 19, 2023 |
0.1.3 | Dec 19, 2023 |
#6 in #smart-contract
57KB
995 lines
litemint-auction-contract
Litemint auction smart contract powering the Litemint marketplace.
Licensed under MIT. This software is provided "AS IS", no liability assumed. More details.
Introduction
Since 2021, the Litemint marketplace has utilized the Stellar DEX for time-based auctions, leveraging time-bound, pre-auth transactions details in our blog. While these auctions offer security and interoperability, they lack flexibilities, such as anti-snipe mechanisms and varied bidding strategies like descending auctions.
The Litemint Auction Contract on Soroban (Stellar's Rust-based smart contracts platform), addresses these limitations. The smart contract enhances the Litemint marketplace while co-existing with our SDEX-based method, offering users a comprehensive and versatile auction experience.
Feature List
- Time-based auctions with decentralized resolution.
- Sealed bid auctions.
- Descending price auctions (see behavior_descending_price.rs) supporting linear or compound discount, and customizable frequency/rate.
- Ascending price auctions (see behavior_ascending_price.rs) with "buy now" option.
- Support for
reserve price
andask price
. - Anti-snipe mechanism. Auction sniping automatically increases the auction duration (time configurable by admin) and prevents the sniper to either cancel or submit a new bid.
- Configurable marketplace commission rate.
- Extendable auction duration by seller.
- Support for concurrent and cancellable bids.
- Strategy design pattern for easily adding new auction behaviors.
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 auction contract uses the following features from soroban-kit
:
-
commitment-scheme
to implement sealed bid auctions. -
state-machine
to manage auction phases. -
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
- Initialize admin:
soroban contract invoke --id CONTRACT_ID --source ACCOUNT --rpc-url https://soroban-testnet.stellar.org:443 --network-passphrase "Test SDF Network ; September 2015" -- initialize --admin ACCOUNT --anti_snipe_time 60 --commission_rate 5 --extendable_auctions true
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
~12–16MB
~330K SLoC