1 unstable release
0.1.0 | Feb 1, 2024 |
---|
#31 in #marketplaces
355KB
10K
SLoC
Marketplace
The Stargaze NFT auction happens as a perpetual auction. Asks and bids have time limits set by governance.
Anyone can call the SetBid
method and make an offer on any listed NFT. The funds are sent to the marketplace contract which serves as an escrow.
Bidders can remove their bids and reclaim their funds with RemoveBid
. When a bid is removed, its deposit is refunded. New bids automatically remove and refund previous bids.
The NFT owner can at any point pick a bid they like and call the AcceptBid
method, which will transfer both the funds and the NFT.
Optionally, the NFT owner can set an ask price with the SetAsk
method. If an ask is set, any bid that meets the ask requirements is automatically accepted and transferred to the bidder. The owner can remove the ask with RemoveAsk
.
When a bid is accepted, both the payment and NFT are automatically transferred. Payment is split up and distributed according to royalties specified when the NFT was minted.
Authorizing Marketplace
In order to accept a bid or set an asking price, the owner needs to grant approval to the marketplace contract for transferring the NFT. This can be done with an NFT's Approve
method for each NFT, or by using ApproveAll
for all NFTs in the collection.
Running this Contract
You will need Rust 1.44.1+ with wasm32-unknown-unknown
target installed.
You can run unit tests on this via:
cargo test
Once you are happy with the content, you can compile it to wasm via:
RUSTFLAGS='-C link-arg=-s' cargo wasm
cp ../../target/wasm32-unknown-unknown/release/sg_marketplace.wasm .
ls -l sg_marketplace.wasm
sha256sum sg_marketplace.wasm
Or for a production-ready (optimized) build, run the build command in the repository root: https://github.com/CosmWasm/cosmwasm-plus#compiling.
Dependencies
~8.5MB
~189K SLoC