o1.exchange 백서

o1.exchange

원문

bitpro가 원문에서 글자만 모은 내용이에요. 표·그림·수식은 빠지거나 깨질 수 있어요. 전체 35쪽 중 7쪽

ion, unavailable reason and supported funding assets | | Each route's `funding_assets` | Asset address, symbol, decimals, raw amount step and approval/repreparation requirements | | Quote `swap_settlement_tokens` | Admitted payment/receipt assets for exact-input trades | An attached adapter or configured route is not an executable quote. `adapter_admission` and `requires_amount_simulation` require preparation to verify the exact binding and requested amount. Refresh configuration after adapter, quote or protected-setting changes. Send funding assets explicitly. Standard/Tax Dev Buy defaults to native currency; \$O Dev Buy defaults to held wstO for compatibility. The website uses native funding. See [Dev Buy](/launchpad/api/launches#atomic-dev-buy) for approvals and continuations, and [trading](/launchpad/api/trading) for settlement units. ## Poll the paired-asset catalog Use `GET /v1/config?chain_id=8453&market=all&include=chains,suites,quotes&active_only=false` with an `x-api-key` that has `config:read`. Change `chain_id` to `4663` for Robinhood, `143` for Monad, `5042` for Arc, `56` for BSC or `196` for X Layer. Quote rows are in `data.quotes`; factory references and creation fees are in `data.suites`. Use `data.as_of_block` for the live-state observation block. Add `launch_product=tax` for Tax or `launch_product=wsto` for Base or Robinhood \$O launch quotes; registration on the Standard factory does not register the Tax factory automatically. The API combines the platform catalog with live registration checks. `active_only=false` includes configured entries that are not registered or not currently usable; `active_only=true` filters to creation-available entries. It does not discover arbitrary addresses added by a factory owner outside the platform catalog. Pair registration monitoring with catalog polling and review any unknown address. The current production schema exposes address, symbol, name, decimals, route, suite, registration status, selectability, and quote revision. `route` is a product classification, not an issuer identity or a complete asset taxonomy. The downloadable JSON snapshots are dated reference data; poll the API for current registration status. When returned, `asset_type` and `issuer` describe the paired asset separately from its market route. Asset types distinguish native currency, stablecoins, wrapped crypto, direct protocol and ecosystem tokens (`crypto_token`), and tokenized securities, including stocks and ETFs. Issuer metadata includes an ID, name, legal entities and official sources. Clients should tolerate absent metadata fields. A null issuer means native currency or unverified attribution; an empty legal-entity list means only the brand is confirmed. This metadata is not token security approval. Quote revisions track onchain settings, so compare issuer metadata separately. Catalog decimals apply to unregistered entries; factory decimals apply to registered quotes. The paired-asset catalog includes these issuer groups: | Chain | Quote group | Attribution | | - | - | - | | Base | Stock Tokens | Coinbase Onchain SPV Ltd, linked through the [official stock prospectuses](https://www.base.org/stocks) | | Base | 8 wrapped crypto assets | [Coinbase Wrapped Assets](https://help.coinbase.com/en/coinbase/trading-and-funding/sending-or-receiving-cryptocurrency/coinbase-wrapped-btc); legal entity attribution is not asserted | | Base | USDC | [Circle](https://www.circle.com/legal/mica-usdc-whitepaper) | | Robinhood | 194 stock and ETF tokens | [Robinhood Assets (Jersey) Limited](https://robinhood.com/rhj/stocktokens/) | | Robinhood | USDG | [Paxos](https://www.paxos.com/terms-and-conditions/usdg-eu-whitepaper) | | Base / Robinhood | Native ETH | No issuer | | Monad | MON | Native currency; no issuer | | Monad / Arc | USDC | Circle | | Monad | WETH | Wrapped crypto; issuer attribution unverified | The factory owner controls quote registration; creators can use only registered quote tokens. The contracts do not enforce a fixed issuer set, and the catalog is not a promise that issuers will never change. In particular, cbZEC and cbHYPE are wrapped crypto despite sharing an address prefix with Base stock tokens. Issuer metadata stays offchain, so it adds no contract storage or registration gas. `QuoteRegistered` and `quoteConfig(address)` remain the onchain registration evidence; issuer identity comes from the catalog's explicit source-backed attribution. ## Token browsing `GET /tokens` browses and ranks tracked launches: | Parameter | Behavior | | - | - | | `chain_id` | `8453`, `4663`, `143`, `5042`, `56` or `196`, required | | `market` | `standard` for crypto-paired, `rwa` for stock-paired, or `all` | | `quote_address` | Exact quote asset | | `sort` | `newest`, `oldest`, `trending`, `liquidity`, `market_cap`, or `volume_24h` | | `cursor` | Opaque continuation cursor | | `limit` | Default `25`, maximum `100` | Direction is part of `sort`, so there is no separate `order` parameter and every displayed sort is executable. Each result has stable sections: * `token`: address, name, symbol, decimals, and effective image * `launch`: backward-compatible creator, immutable original creator, current and pending creator rights when supported, current creator fee recipient, recorded contract configuration, pool, paired asset, feature flags, transaction provenance, creation time, and a creation fee only when the paid amount was nonzero * `market_data`: price, market cap, liquidity, 1-hour, 6-hour, 24-hour, and lifetime activity, plus freshness fields Missing market values are `null`, not zero. Trending returns ordinary market values and order only; ranking scores, scoring explanations, pins, and internal quality fields are private. Quote decimals come from the indexed launch or the shared quote registry. A truly unknown historical admin-added quote returns `quote.decimals: null`; the API never guesses units. Ranked lists are live rather than frozen snapshots. A cursor binds the filters and source position, not an immutable ranking snapshot, so tokens can move between pages while ranking updates. Deduplicate by `(chain_id, token.address)` and restart when the API returns `409 cursor_stale`. ## Token search and creator launches Use the focused routes when the query has different ordering semantics: ```http theme={null} GET /tokens/search?chain_id=8453&q=alpha GET /creators/0x1111111111111111111111111111111111111111/tokens?chain_id=8453&sort=newest ``` Search accepts `chain_id`, `market`, `quote_address`, `q`, `cursor`, and `limit`. It matches token address, name, symbol, creator, pool ID, or launch transaction and uses one deterministic liquidity ordering. Creator launches accept the same chain, market, quote, and pagination fields plus `sort=newest|oldest`. Search and creator cursors are not interchangeable with browsing cursors. <Note> Earlier combined query forms remain available during migration and return deprecation headers. New integrations should use the focused routes described here. See the [migration guide](/launchpad/api/migration). </Note> ## Token detail ```http theme={null} GET /tokens/8453/0x...01?include=pool,market,announcements ``` The default include set is `pool,market`. `announcements_limit` defaults to 3 and is capped at 10. Supply it only when `include` contains `announcements`. The detailed token object adds full metadata, links, total supply, historical contract addresses, and these optional sections: * `pool`: currencies, PoolManager, hook, frozen fee split, anti-snipe clock, locked seed ranges, and initial seeded token amount * `market_data`: ATH market cap in quote currency, unique traders, pool state, and fee revenue by currency * `announcements`: recent creator messages and their on-chain provenance Arbitrary token extra-metadata keys are not returned by default. ## Trades and announcements Use independent collection routes: ```http theme={null} GET /tokens/{chain_id}/{token_address}/trades GET /tokens/{chain_id}/{token_address}/announcements ``` Trades contain structured token and quote amounts, pool state, fee credits, referrer, comment, timestamp, and on-chain provenance. Announcements contain the creator message, URI, timestamp, and provenance. Trades accept one optional identity filter: `wallet`, `transaction_hash`, or `referrer`. `from` is inclusive and `to` is exclusive; both use Unix seconds. Announcements accept only pagination, so trade-only filters never appear on their reference page. Token detail, activity, and holder routes first verify that the address is a visible launchpad token on the selected chain. An unknown or arbitrary external token returns `404 not_found` with the checked chain, token address, and a `suggested_endpoint` for token search. Verify the identifier or rediscover it through `GET /tokens` or `GET /tokens/search`; do not poll an unchanged `404`. ## Holder snapshots A holder response has a normal page plus top-level `summary`: ```json theme={null} { "summary": { "status": "ready", "total_holders": 128, "top_10_percent": 62.4 } } ``` Balances remain exact strings, and `supply_percent` is derived from indexed total supply. `meta.generated_at` records when the gateway formed the response; the API does not invent a provider snapshot timestamp. If the provider cannot produce a holder result, it returns `503 temporarily_unavailable` instead of a misleading empty list. ## Wallet activity and fee claims Wallet activity is structured by `kind`; it does not return UI titles, raw metadata JSON, or internal event keys. Current launch flows use launch, launch fee, trade, fee credit or claim, announcement, and metadata activity kinds. Fee positions use a separate cursor domain, default to 25 results, and are capped at 50. * `GET /wallets/{address}/fee-claims` supports `state=claimable|all` and optional `currency_address`. * A fee balance is scoped to escrow, recipient, and currency. It may represent credits from multiple pools, so it is not assigned to one launch incorrectly. ## Transaction status `GET /transactions/{chain_id}/{tx_hash}` is the indexed public view, not a live RPC receipt endpoint. When indexed, it separates two states: * `chain.status`: unknown, pending, succeeded, reverted, or replaced * `indexing.status`: not seen, processing, or complete `operations` contains only public launchpad actions with their transaction provenance. Raw worker jobs, provider responses, governance events, queue state, and internal errors are never returned. Existing chain indexers and webhooks discover wallet-broadcast transactions normally, so the API does not expose a transaction-notification write. Before a hash is observed, `data` is `null`; use your own chain provider to poll the receipt for immediate confirmation and retry this endpoint for launchpad indexing state. ## Pagination and freshness ```json theme={null} { "pagination": { "next_cursor": "opaque-signed-cursor", "has_more": true, "limit": 25 }, "meta": { "request_id": "req_...", "generated_at": "2026-07-31T12:00:00.000Z", "warnings": [] } } ``` Do not parse or edit cursors. They are bound to the route, filters, ordering, API version, and expiry. `meta.generated_at` is when the gateway formed the response. Resource-level `updated_at`, observed or confirmed block, and finality fields describe source freshness. The gateway does not add another product-response cache. ## Monad configuration Use `GET /v1/config?chain_id=143&market=standard&include=chains,suites,quotes&active_only=false`. The default Standard suite supports `standard` only. Add `launch_product=tax` to request `monad-mainnet-tax-token-v2`, also crypto-only. MON is native, USDC is a Circle stablecoin and WETH is wrapped crypto with unverified issuer attribution. Both deployments have three registered quotes in their reference snapshots. Read the selected factory's current creation status from `/config`. `active_only=true` filters to creation-available catalog entries; `false` also retains entries if creation is later disabled. Read the current configuration before preparing a transaction. ## Arc configuration Use `GET /v1/config?chain_id=5042&market=standard&include=chains,suites,quotes&active_only=false`. Arc Standard and Tax use the crypto route with ERC-20 USDC at `0x3600000000000000000000000000000000000000` as its six-decimal pool quote. The native currency is USDC with 18 decimals. These are two interfaces to one balance, not two assets to add together. Read the live launch fee from the suite configuration and the quote decimals from the paired-asset row. `active_only=true` filters by creation availability; it does not remove issuer metadata. Launches, trades and fee positions retain their currency-specific raw amounts. USD enrichment is separate from those amounts and may be absent without invalidating an indexed transaction. For Arc Tax, add `launch_product=tax` and require `arc-mainnet-tax-token-v2` from `/config`. Both USDC and cirBTC are crypto pairs; cirBTC uses eight decimals. The 2-USDC native launch fee uses 18 decimals, while USDC rewards use six-decimal ERC-20 units. No wrapped-native conversion is applied to Arc claims. See the [Arc snapshot](/launchpad/reference/arc-tax-suite.json). # Quote and prepare trades Source: https://docs.o1.exchange/launchpad/api/trading Quote exact-input trades and prepare wallet transactions with the configured router. The trading API supports exact-input buys and sells against the token's own Uniswap v4 launch pool. Buys and sells can use the pool quote or a supported alternative payment/receipt asset. Read `swap_settlement_tokens` for the quote in `/config`, then send `settlement_token` to select one. **\$O launches support ETH, \$O and wstO on both chains, plus USDC on Base or USDG on Robinhood.** The API builds and validates the complete route; caller-supplied targets and arbitrary route data are not accepted. ## Quote `POST /swaps/quote` ```json theme={null} { "chain_id": 4663, "wallet": "0x1111111111111111111111111111111111111111", "token_address": "0x2222222222222222222222222222222222222201", "side": "sell", "amount_in_raw": "1000000000000000000", "slippage_bps": 50, "referrer": "0x3333333333333333333333333333333333333333", "comment": "API trade" } ``` `amount_in_raw` uses the input currency's base units: the selected payment asset for a buy and launch-token units for a sell. `settlement_token` selects the buy's payment currency or the sell's receipt currency; omission preserves settlement in the pool's paired asset. Native currency uses the zero address. Slippage uses basis points, where 1 bps is 0.01%; `50` means 0.5%, `100` means 1%, and the maximum is `4999`. The API resolves the contracts recorded for the token, including its pool key, hook, paired asset, tick spacing, router and its quoting and approval requirements. It does not guess from `tx.to` or use only the latest factory. For Standard tokens, the optional referrer is preserved through quote and preparation and encoded in the same hook data used by the Launchpad app. It must be a separate eligible wallet, not zero, the trader, creator, platform treasury, or router. Invalid choices return `422 invalid_referrer`; valid referrals accrue their fee share in FeeEscrow and claim it through `POST /claims/fees/prepare`. The response contains: * signed `quote_id` and expiry * `prepared_at` and the chain block used for all quote, balance, and allowance reads * input and output currencies * expected and minimum output * estimated quote gas when returned; a missing estimate is not a zero gas cost * a normalized `review` of the exact route, amounts, slippage, referrer, and comment * balance and allowance issues * ERC-20 approval transactions for the spender required by the selected router * Permit2 typed data when the selected route requires it ## Tax-token trades The token's recorded suite selects inclusive Tax decoding automatically; do not replace its Hook or charge protocol again on top of the selected total. Quotes include current ordinary taxes, burn settlement and any active anti-sniping surcharge. Supported alternative settlement routes wrap the same launch-pool trade without changing its frozen tax policy. Dev Buy is prepared through the separate [launch endpoint](/launchpad/api/launches#atomic-dev-buy). A swap-level `referrer` does not earn financial referral fees for inclusive Tax tokens. Integrator attribution is fixed at launch; ordinary comments remain supported. Quote and launched-token burn amounts have different currencies and must not be summed as raw fee units. Approvals follow the returned route and are unrelated to approval-free Dividend claims. <span /> ## \$O launch trades Use the launched token's address on the requested chain, not the wstO vault as `token_address`. Select `settlement_token` from that chain's assets. ### Base (`8453`) | Asset | Address | Decimals | | - | - | -: | | Native ETH | `0x0000000000000000000000000000000000000000` | 18 | | USDC | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | 6 | | \$O | `0x182FA643E5f29d5EcA75e7b9CF9336A3fe4620b2` | 18 | | wstO | `0x80C6BAE89B636c6Ee96FE8F198c0D6926C2C91df` | 18 | ### Robinhood (`4663`) | Asset | Address | Decimals | | - | - | -: | | Native ETH | `0x0000000000000000000000000000000000000000` | 18 | | USDG | `0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168` | 6 | | \$O | `0x500A02a20B0B0A3F3efCCFc0559543F5743bd1C4` | 18 | | wstO | `0xE92bD1C05E4E308792003C8205127A6FA662b4D4` | 18 | Robinhood ETH routes pass through WETH/USDG v3 and \$O/USDG v4; USDG routes start at the latter pool. Both then use the local vault and launch pool. Sells reverse the selected route. These are exact-input routes, with a whole-route minimum in the final asset. For example, an ETH buy uses `side: "buy"`, the zero-address `settlement_token` and an ETH amount in wei. A USDC sell on Base or USDG sell on Robinhood uses `side: "sell"`, that stablecoin's `settlement_token` and an input amount in launched-token units. Minimum output is always in the final receipt asset. The pool stays paired with wstO. The full quote includes acquisition-pool costs, the actual vault conversion and the pool's wstO burn. Sells redeem net wstO after its fee burn. Do not send `referrer` for this product; it has no financial referral allocation. Comments remain supported. Fund the quoting wallet for the selected route and follow the returned spender and approval steps. ## Actionable issues A valid request can return HTTP 200 with: ```json theme={null} { "code": "erc20_allowance_required", "severity": "action_required", "asset": "0x...", "spender": "0x...", "actual_raw": "0", "required_raw": "1000000", "remediation_step_id": "approve-input-token" } ``` `blocking` means funds or state must change. `action_required` points to a provided step. `warning` is reviewable but does not stop preparation. ## Prepare `POST /swaps/prepare` accepts the reviewed `quote_id`, wallet, and optional Permit2 signature. The API: 1. verifies the quote signature, wallet binding, and expiry 2. verifies current input balance and the selected router's approval requirements 3. requotes the exact route 4. rejects a price move beyond the reviewed minimum 5. uses the stricter valid minimum 6. validates the deadline and any required Permit2 nonce and signature 7. builds calldata for the exact chain, suite and route, including SwapX conversion/vault routes or Universal Router direct routes as appropriate 8. appends ERC-8021 builder attribution on Base 9. simulates the exact transaction from the expected wallet The prepare response shows reviewed, refreshed, and execution-minimum amounts together. An expired or moved quote returns `409 stale_quote`, an unconfirmed ERC-20 approval returns `409 approval_not_confirmed`, and changed Permit2 state returns `409 invalid_permit`. A missing required Permit2 signature returns `400 invalid_request
프로젝트로 돌아가기