dex-skills v0.1.0

Zora

Zora is a token launchpad on Base that uses the @zoralabs/coins-sdk for token creation. It follows a two-step process: calling createCoin to submit the transaction, then extracting the token address from logs via getCoinCreateFromLogs. Social links and metadata are embedded as a data URI.

Chain

Base (Ethereum L2)

Key Details

Property Value
SDK @zoralabs/coins-sdk
Launch Flow createCoingetCoinCreateFromLogs
Token Standard ERC-20
Metadata Storage Data URI (inline)
Private Key Format Hex with 0x prefix

Setup

Initialize dex-skills for Zora
import { createSkills, getSkill } from "dex-skills";

const skills = createSkills({
  wallets: {
    base: {
      privateKey: "0x-prefixed-hex-private-key",
      rpcUrl: "https://mainnet.base.org",
    },
  },
});

const zora = getSkill(skills, "zora");

Launch a Token

Token creation on Zora constructs a metadata data URI containing name, description, image, and all social links. The createCoin function submits the transaction, and getCoinCreateFromLogs extracts the newly created token address from the transaction receipt logs.

Launch Example
const result = await zora.launch({
  name: "Zora Token",
  symbol: "ZTKN",
  description: "A token launched on Zora via dex-skills.",
  imageUrl: "https://example.com/token-logo.png",
  initialBuyAmount: "0.001",
  links: {
    twitter: "https://x.com/zoratoken",
    telegram: "https://t.me/zoratoken",
    website: "https://zoratoken.xyz",
  },
});

console.log("Token address:", result.tokenAddress);
console.log("Transaction:", result.txHash);

Launch Parameters

Parameter Type Description
name * string Display name of the token.
symbol * string Token ticker symbol.
description string Description of the token.
imageUrl string URL to the token image. Must be publicly accessible. Embedded in metadata URI.
initialBuyAmount string Amount of ETH to spend on an initial buy immediately after launch.
links object Social links object with optional keys: twitter, telegram, website. Embedded in metadata URI.

Query Token Info

Get Token Info
const token = await zora.getTokenInfo("0xTokenContractAddress...");

console.log("Name:", token.name);
console.log("Symbol:", token.symbol);
console.log("Total Supply:", token.totalSupply);
console.log("Market Cap:", token.marketCap);

List Tokens

List Tokens
const tokens = await zora.listTokens({
  limit: 20,
  sortBy: "createdAt",
  sortOrder: "desc",
});

for (const token of tokens) {
  console.log(token.symbol, token.tokenAddress);
}

Buy Tokens

Purchase tokens on Zora by specifying the token address, ETH amount, and optional slippage.

Buy Example
const result = await zora.buy({
  tokenAddress: "0xTokenContractAddress...",
  amount: "0.01",
  slippage: 5,
});

console.log("Tx Hash:", result.txHash);
console.log("Tokens received:", result.tokenAmount);

Sell Tokens

Sell tokens on Zora by specifying the token address and amount of tokens to sell.

Sell Example
const result = await zora.sell({
  tokenAddress: "0xTokenContractAddress...",
  amount: "1000000",
  slippage: 5,
});

console.log("Tx Hash:", result.txHash);
console.log("ETH received:", result.nativeAmount);

Get Trending

Trending Tokens
const trending = await zora.getTrending({
  category: "volume",
  limit: 20,
});

for (const token of trending) {
  console.log(token.symbol, token.volume24h);
}

Trade History

Trade History
const trades = await zora.getTradeHistory("0xTokenContractAddress...", { limit: 50 });

for (const trade of trades) {
  console.log(trade.action, trade.tokenAmount, trade.priceUsd);
}

Get Holders

Zora is the only platform that supports querying token holder information.

Token Holders
const holders = await zora.getHolders("0xTokenContractAddress...", { limit: 20 });

for (const holder of holders) {
  console.log(holder.address, holder.balance, holder.percentage + "%");
}

Supported Methods

Method Supported
launch() Yes
getTokenInfo() Yes
listTokens() Yes
buy() Yes
sell() Yes
getTrending() Yes
getTradeHistory() Yes
getHolders() Yes
estimatePrice() No

Platform Notes

Data URI Metadata
Zora does not use IPFS for metadata storage. Instead, all token metadata -- including social links -- is encoded as a data URI and passed directly to the contract during creation. This means metadata is immutable and permanently embedded on-chain. All social link fields are included in the URI regardless of whether they are populated.
Log-Based Token Address Detection
After the createCoin transaction is mined, the new token address is extracted from the transaction receipt logs using getCoinCreateFromLogs. This is handled automatically by dex-skills.
Private Key Format
Zora operates on Base, an EVM chain. Private keys must be in hex format with the 0x prefix. Do not use base58-encoded keys.

Supported Social Links

All social link fields are embedded directly in the metadata data URI. Any field can be included.

Field Description
twitter Twitter/X profile URL
telegram Telegram group or channel URL
website Project website URL
discord Discord server invite URL