Cosmos-SDK NFT marketplace and asset framework. Runs as `mantleNode` (the AssetMantle chain in the Cosmos ecosystem) plus the MantlePlace marketplace dApp. Exposes Cosmos REST/gRPC endpoints for assets, identities, splits, and orders, all defined as native Cosmos modules.
- 01Cosmos NFT marketplace integrations
- 02IBC-aware NFT issuance
- 03metadata-as-on-chain-state (`assets` module)
- 04Cosmos-native identity + splits
- pnpm add @cosmjs/stargate @cosmjs/proto-signing
- # AssetMantle protobufs are in AssetMantle/modules — generate TS types from the .proto files for typed messages.
| Variable | Scope | Description |
|---|---|---|
| ASSETMANTLE_RPC_URL | Client | Tendermint RPC endpoint for the AssetMantle chain (e.g. `https://rpc.assetmantle.one`). |
| ASSETMANTLE_REST_URL | Client | Cosmos LCD/REST endpoint (e.g. `https://rest.assetmantle.one`) for queries. |
| NEXT_PUBLIC_ASSETMANTLE_CHAIN_ID | Client | Chain ID — `mantle-1` for mainnet. |
Connect with CosmJS: `const client = await SigningStargateClient.connectWithSigner(ASSETMANTLE_RPC_URL, signer, { gasPrice: GasPrice.fromString('0.01umntl') })`. AssetMantle defines custom Cosmos modules — to mint an NFT, broadcast `MsgDefine` (declare an asset class) then `MsgMint` (issue an asset) from `assetmantle.modules.assets.transactions`. Listings live in the `orders` module via `MsgPut` (put an asset on order) and `MsgTake` (fulfill). Query state through the Cosmos REST gateway: `GET /assetmantle/assets/v1beta1/assets`, `GET /assetmantle/orders/v1beta1/orders`, `GET /assetmantle/identities/v1beta1/identities`. The MantlePlace marketplace UI is a thin client over these messages — same flows from your own app are first-class.
- ⚑AssetMantle uses custom Cosmos modules (`assets`, `identities`, `splits`, `classifications`, `orders`, `metas`) — generic `cosmos.nft.v1beta1` (Cosmos SDK x/nft) clients will not see AssetMantle assets; you must use AssetMantle's protobufs from `AssetMantle/modules`.
- ⚑Royalty enforcement: royalties are encoded in the asset's `metas` and enforced by the `orders` module at `MsgTake` settlement — but only when traded through AssetMantle's orders module; transferring via `MsgSend` bypasses royalties entirely.
- ⚑Marketplace fee is governance-controlled and can change via on-chain proposals; read `params` from the `orders` module rather than hardcoding.
- ⚑Chain coverage is the AssetMantle Cosmos chain only — IBC transfer is supported but receiving chains lose the AssetMantle metadata model and treat the asset as a generic IBC denom.
- ⚑Gas token is `umntl` (micro-MNTL); transactions fail with `insufficient fees` if you submit with `uatom` or other denoms.
- ⚑Project momentum: as of 2026 AssetMantle development has slowed and validator set is small — assess decentralization/uptime risk before relying on it for production marketplaces.