# liquidity-pools

<!-- generated by site/scripts/gen-skills.ts; do not hand-edit -->

# Liquidity Pools

Instruction text for agents that use the Liquidity Pools skill, loaded by `bb dev skills liquidity-pools` and the MCP `get_skill_instructions` tool.

## Try it

Paste this into Claude Code, Codex, or Cursor with the BitBadges MCP server wired. The agent loads the skill, builds, verifies, and hands back a link to review and sign.

```text
Load the liquidity-pools skill and build me one: liquidity pool standard with the "Liquidity Pools" protocol standard tag, used for tradable assets that can be swapped on a DEX. Use the session tools, run validate, review, and simulate in parallel, fix anything critical, then call get_review_url and give me the link.
```

From a shell, `bb dev skills liquidity-pools` prints the same instructions.

## Summary

Required standards: ["Liquidity Pools"]

- Must set invariants.disablePoolCreation: false
- Must configure at least one alias path (required for liquidity pools to function)
- Merkle challenges are not compatible with liquidity pools
- Enables decentralized exchange (DEX) trading interfaces

## Instructions

## Liquidity Pools Configuration

When enabling liquidity pools for a collection, follow these requirements:

### Required Structure

1. **Standards**: must include "Liquidity Pools"
   - "standards": ["Liquidity Pools"]

2. **Invariants**: must set disablePoolCreation to false
   ```json
   {
     "standards": ["Liquidity Pools"],
     "invariants": {
       "disablePoolCreation": false
     }
   }
   ```

3. **Alias Paths**: must configure at least one alias path
   - This is required for liquidity pools to function
   - Use the alias path configuration provided in the skill config
   ```json
   {
     "aliasPathsToAdd": [{
       "denom": "uvatom",
       "symbol": "uvatom",
       "conversion": {
         "sideA": { "amount": "1" },
         "sideB": [{ "amount": "1", "tokenIds": [{ "start": "1", "end": "1" }], "ownershipTimes": [{ "start": "1", "end": "18446744073709551615" }] }]
       },
       "denomUnits": [{
         "decimals": "6",
         "symbol": "vATOM",
         "isDefaultDisplay": true,
         "metadata": { "uri": "ipfs://METADATA_ALIAS_uvatom_UNIT", "customData": "" }
       }],
       "metadata": { "uri": "ipfs://METADATA_ALIAS_uvatom", "customData": "" }
     }]
   }
   ```

### Liquidity Pools Gotchas

- disablePoolCreation must be false (not true)
- Must configure at least one alias path (required for liquidity pools)
- PathMetadata (on every aliasPath and denomUnit) is only `{ uri, customData }`. Put the token logo in the off-chain JSON at the placeholder URI and register a matching entry in `metadataPlaceholders`, never put `image` on the proto.
- Merkle challenges are not compatible with liquidity pools
- This enables decentralized exchange (DEX) trading interfaces
