The Loot Exchange is a marketplace dedicated to the Loot Universe. It's built by the community, for the community. Contribution is strongly encouraged.
- No platform fees
- All royalties (currently 1%) go to a treasury controlled by Loot token holders, to reinvest back into the community.
- Designed for Loot
- Includes UX touches like character art and rarity color-coding that general-purpose marketplaces lack.
- Can also support non-standard Loot features like Extensions and Synthetics
- Aggregated Order Book
- Includes both Open Sea orders and native Loot Exchange orders. This helps to avoid fragmented liquidity
- Open API
- Fetch metadata and market information. No API keys required.
- Battle-tested contracts
- Leverages the same exchange contract as Open Sea (Wyvern), which minimizes risk
- Anyone who has approved Open Sea for trading does not need to re-approve
- Core Front-End design
- Metadata and Order APIs
- SDK for signing and submitting orders
- Support for original Loot Bags
- Selling UX
- Purchasing UX
- Loot-specific rarity data
- Community treasury for managing royalties
- Support for More Loot and other derivatives
- Support for Extensions
- Show which Loot derivatives
- Offers UX
For feature requests, create an Issue or join the Discord to discuss.
A 1% royalty is collected on all trades, and sent to a community-operated treasury. The treasury is controlled by RoyaltyDAO, a fork of the NounsDAO, which implements Compound-style on-chain voting using Loot balances. Rather than trying to be "The DAO", this is simply "a DAO", with the sole purpose of collecting and allocating royalties.
The DAO contract contains a small modification, to account for the fact that the Loot contract does not implement check-pointed balances. In order to prevent voting twice with the same tokens, each vote is tied to a particular token id. The main downside of this technique is that it is less efficient for large token holders to vote (requires multiple transactions), but the flipside is that this helps to democratize voting by taxing whales.
Instead, each vote is tied to a particular
Use the Base URL of https://api.loot.exchange/ and the following endpoints:
- /collections - get list of supported collections
- /collections/:address - get full information about a collection
- /collections/:address/tokens - get list of tokens in a collection
- /collections/:address/listing-infos - compact list of items for sale
- /collections/:address/attributes - compact list attributes, for filtering
- /collections/:address/metadata - compact list metadata, for client-side rendering
- /collections/:address/tokens/:tokenId - get info about a single token
- /collections/:address/tokens/:tokenId/orders - get orders for a single token
The tokens API supports filters and pagination:
- tokens - all tokens, sorted by id
- tokens?limit=20&offset=40 - pagination
- tokens?id=10&id=11 - request specific tokens
- tokens?forSale=true - on sale items, sort by price
- tokens?_weapon=Wand&_neck=Amulet - filter by attribute
If you are planning to use the API, let us know so that we can cater to your use case.
The project is still in active development, which means that things might change quickly (eg. structure, configuration). Proceed with caution.
This repository is structured as a Yarn 2 monorepo, consisting of the following packages:
Since this project is set up as a Yarn 2 monorepo, make sure to always use yarn
instead of npm
, otherwise some things might not work properly.
In the repository's root directory, run yarn
to install all dependencies across all monorepo's packages. Afterwards, specific package commands should be run in the corresponding package directory.
The global commands yarn deps:check
and yarn deps:update
will help to maintain the same versions across the entire monorepo. After running yarn deps:update
, a yarn install
is required. To prevent having duplicates in the yarn.lock
, you can run yarn dedupe --check
and yarn dedupe
to apply deduplication.
- Participate in the poll to decide on Royalties
- Reach out in the #loot-marketplace-dev Discord channel