Sendo Spotlight is a Solana-based auction platform that enables users to participate in time-bound auctions with a unique payout distribution model. The smart contract implements a complete auction system with bid placement, auction timing, and automated fund distribution to specific wallet addresses.
- Time-based Auctions: Auctions have defined start and end times
- Bid Management: Users can place bids with automatic refund of previous bids
- Automated Payouts: Funds distributed according to specific 15%/50%/35% split
- Immutable SOL-only: Built on Solana with native SOL transactions only
- Event-driven Architecture: Comprehensive event emission for frontend integration
The smart contract is built using the Anchor framework and follows a modular architecture:
- Accounts:
SpotState: Stores auction information and bid detailsEscrowVault: Manages funds for each auction
- Instructions:
init_spot: Initialize new auction spotsplace_bid: Place bids on active auctionssettle: Distribute funds when auctions end
- Events:
BidPlaced: Emitted when a bid is successfully placedBidRefunded: Emitted when previous bidders are refundedSpotSettled: Emitted when an auction is settled
The contract distributes funds according to the following split to specific wallet addresses:
- 15% to:
5FzC7gETJdwwKL71w1VkCKEmFSTzhvtTAUPQsxYEHDTp(elizaosDAO) - 50% to:
J9LT87vTYGpPCrr795PSYSwqXUfu6RmULj4hq5UzswHD(Contributor) - 35% to:
2zB6ySzH2PFKX3f9XZLUKJfP44fwyn69Bp6YaD6LEsqP(Core Team)
To get started quickly:
npm i
anchor build
anchor test- Rust 1.60 or later
- Node.js 14 or later
- Anchor CLI
- Solana CLI
- Clone the repository:
git clone <repository-url>
cd sendo_spotlight_program- Install dependencies:
npm install- Install Anchor dependencies:
anchor install- Start a local Solana validator:
solana-test-validator- Deploy the program:
anchor deploy- Configure your wallet:
solana config set --url <network-url>
solana config set --keypair <path-to-keypair>- Deploy to the network:
anchor deploy --provider.cluster <network>anchor run init_spot --args <spot_id> <auction_duration>anchor run place_bid --args <spot_id> <amount>anchor run settle --args <spot_id>- Description: Emitted when a successful bid is placed
- Fields:
spot_id: Identifier of the auction spotbidder: Public key of the bidderamount: Amount of the bid in lamports
- Description: Emitted when a previous bidder is refunded
- Fields:
spot_id: Identifier of the auction spotbidder: Public key of the refunded bidderamount: Amount refunded in lamports
- Description: Emitted when an auction is successfully settled
- Fields:
spot_id: Identifier of the auction spotwinner: Public key of the winning biddertotal_amount: Total amount distributed in lamports
- Access Control: Only authorized admin can settle auctions
- Time Validation: Auctions can only be settled after they end
- Bid Validation: Bids must be higher than current bid
- Reentrancy Protection: No reentrant calls in critical sections
- Input Validation: All inputs are validated before processing
- Account Rent: Proper account initialization with rent exemption
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
For support, please open an issue in the repository or contact the development team.