Overview
Banquet is a place to launch and trade tokens on Arc, Circle's layer 1. You can browse launches, open any token to see its details, and trade straight from your wallet.
USDC is the native gas token on Arc. Every price, fee and balance you see is a dollar amount, and there is no second asset to acquire before you can transact.
Banquet never holds your funds. Every launch and trade is a transaction your wallet asks you to approve.
Protocol
Launch mechanism
Creating a launch deploys the token, its bonding curve and its creator vault in a single transaction. The whole supply is minted to the curve, so the creator starts with no tokens. The creator sets the name, symbol, image, description, links, graduation target and any tax at creation.
Every token trades against USDC. Trading runs on the curve until the curve allocation is sold, then moves to a Uniswap v4 pool whose liquidity is locked forever.
token, curve and vault deploy in one transaction
1% flat, no anti-snipe premium
straight to 02 Trade
anyone buys and sells on the curve
the pool opens and the curve closes, in one transaction
Each launch uses a fixed supply of one billion tokens, 750,000,000 of them on the curve, a 1% trading fee, and a $1 launch fee.
| Field | Constraint |
|---|---|
| Name | Up to 28 characters |
| Ticker | 1 to 10 characters |
| Image | PNG, JPEG, WEBP or GIF, up to 5 MB |
| Description | Up to 280 characters |
| Links | X, a website, Telegram |
| Graduation target | $5,625 to $50,000, so a token opens at a market cap of at least $2,500 |
Trading and pricing
Before graduation the price comes from a constant-product curve with a virtual reserve:
V0 is a virtual USDC reserve fixed at deploy, R is what the curve has collected, and S is what it still holds. Spot price is (V0 + R) / S.
The price rises as tokens are sold and falls as they are sold back. From launch to graduation it travels 9x, the same for every token whatever the target.
After graduation the price comes from the token's Uniswap v4 pool. Trading continues there, through Banquet or any router that reaches the pool, and nothing migrates again.
The amount you receive can differ from the quote, because the price moves between the quote and the block your transaction lands in.
| Price impact | The curve or pool movement caused by the size of your trade |
| Slippage | The maximum execution movement your transaction accepts |
| Cover charge | The fee on this trade, including the anti-snipe premium if it is still open |
Graduation
A launch graduates once 750,000,000 tokens have been sold, which is the whole curve allocation. The progress line tracks how close a launch is.
It triggers on tokens sold, not on money raised. Fees injected into the reserve raise the money collected without emitting tokens, so a target on money raised would fire early with supply unsold. Every token that graduates has therefore distributed the same supply.
Graduation happens in the same transaction as the final buy:
- The remaining 250,000,000 tokens and every dollar raised go to the graduation adapter.
- It opens a Uniswap v4 pool for the token against USDC, at the curve's closing price, with Banquet's hook attached.
- It adds everything as full range liquidity and locks it forever. The adapter has no function that can withdraw it.
- The curve closes permanently. Trading continues in the pool.
Only the token's own curve can graduate it, and only Banquet's adapter can open a pool on the hook, so nobody can open a token's pool early at a wrong price.
Graduation only confirms the curve was sold. It is not a quality signal and does not guarantee future liquidity, price, or an exit.
Fees
Every trade pays 1%, on the curve and in the pool after graduation.
| Protocol | 0.50% |
| Creator | 0.50%, for life, divided by the creator's split |
On the curve, the fee accrues to a ledger and is claimed, so a recipient who cannot receive USDC can never block a trade for anybody else.
In the pool, the fee is taken by Banquet's Uniswap v4 hook on the swap itself. The pool charges no fee of its own, so the 1% is the whole cost, the same as a standard 1% Uniswap pool. The protocol's half is paid in USDC. The creator's half follows their split:
| Split | Paid in | Where it goes |
|---|---|---|
| Kept | USDC | the creator's vault, claimable at any time |
| Burn | the token | sent to 0x…dEaD |
| Liquidity | half USDC, half the token | queued, then added to the pool as locked liquidity |
| Holder rewards | USDC | the token's reward pool, claimed by holders (Tax mode only) |
A token launched with everything on "kept" burns nothing. The creator's own share can only ever go down: what they give up goes to the burn, liquidity or holders.
A creator can split their vault across up to ten addresses and can hand the vault to somebody else. Neither changes the rate.
The anti-snipe premium is charged on top for the first 15 blocks and goes entirely to the protocol. See launch mechanism.
A perpetual tax, if the creator chose Tax mode, is charged on top of the 1%. See taxes.
Taxes
A tax is optional and chosen at launch. Both modes graduate into the same Uniswap v4 pool and pay the same 1% fee there.
| Mode | While bonding | After graduation |
|---|---|---|
| Clean | Up to 50% creator tax, collected by the curve | The 1% only |
| Tax | Up to 50% creator tax, collected by the curve | The 1% plus a perpetual tax of up to 10% a side |
The perpetual tax is charged by the pool's hook, not by the token, so the token is an ordinary ERC20 to every router and wallet. Taxes hit swaps only, never wallet to wallet. Buy and sell rates are set separately.
The protocol takes 5% of the perpetual tax. The rest joins the creator's half of the 1% and is divided by the same split: kept, burnt, added as liquidity, or paid to holders. Holder rewards accrue in USDC in proportion to balance, and only Tax mode tokens can pay them.
Rates can never be raised. The curve tax can be lowered by the creator; the perpetual rate is fixed at graduation.
The Tag
Every token launched through Banquet has an address ending in feed.
0x7f3d4b2a91c05e6dbb4417c8e2f0a5d8dd12feed
^^^^
The factory checks the last two bytes against 0xfeed when it deploys, so a token that does not carry it was not launched here. It cannot be faked by calling the factory with a different salt.
The check is numeric, so casing does not matter: compare case-insensitively, or read tag() and tagMask() off the factory and mask the address yourself.
The Tag proves where a token came from. It proves nothing about the token itself: a tagged token can still have a 50% tax, a large bundle, and a creator who disappears.
Community takeovers (CTO)
When a token's original creator steps away, the creator's fee stream can be handed to somebody else. That is a community takeover, or CTO.
The token, its pool and its locked liquidity are unaffected, and the rate does not change.
Ask on the token's own page, under Take this token over: a payout address and why. Asking needs 5% of the token's supply, held by the wallet asking. One request stands per token. We read it by hand. Quiet for a week is not gone.
Granting calls reassignCreator on the vault, which only the platform address can do. It emits CreatorReassigned with both addresses, so every takeover is on the chain. A creator who still has their key does not need us: transferCreator is theirs.
Approval is administrative. It is not an endorsement or a statement about a token's safety or value.
The stream can also be pointed at a contract that buys the token on the open market and burns what it buys. That contract has no owner, no pause and no withdrawal, and anybody can trigger it.
Never share a private key or seed phrase. Banquet will never ask you to send funds to process a request.
Risk disclosures
Tokens launched through Banquet are user-created and experimental. Review the token address, the creator, the liquidity, the holder concentration and the transaction preview before signing.
- Prices can move quickly and liquidity can be thin.
- Similar names and images can represent unrelated tokens.
- Smart contracts, wallets, RPCs and indexers can fail.
- Displayed values are estimates, not execution guarantees.
- Nothing at launch can be changed afterwards, and there is no support path.
Banquet is an interface, not investment advice or a representation of token quality.
Integration
Network
Banquet runs on Arc mainnet. Tokens trade on a bonding curve, then graduate into a Uniswap v4 pool, and are quoted against USDC only.
| Network | Arc |
| Chain ID | 5042 |
| Native asset | USDC |
| Public RPC | https://rpc.mainnet.arc.io |
| USDC (ERC-20) | 0x3600000000000000000000000000000000000000 |
| Pool | Uniswap v4, dynamic fee, tick spacing 200, Banquet hook |
| Pool fee | 1%, taken by the hook |
| Launch fee | $1 |
| Supply | 1,000,000,000 (1e9) |
USDC is the native gas token and is also an ERC-20 at the address above, with 6 decimals. Never assume 18.
Contracts
Arc mainnet#
| Contract | Address | What it is |
|---|---|---|
| TokenFactory | 0x38d155cb80b845b66260295c68f0b663040c4ac2 | The one you call. Deploys and owns nothing after. |
| LaunchToken implementation | 0xb727db5b250ccb74cafa3cb68ef539d9b6a1f8ff | Cloned for a launch with no tax. |
| TaxToken implementation | 0xb1460d69d0d2c3375300d1757ad2db2e21bf30b3 | Cloned for a taxed launch. |
| BondingCurve implementation | 0x0db4735eba3479f8c9badba796d5e27eed3bcd98 | Cloned once per token. |
| CreatorVault implementation | 0xd73ad0733e3bcf57589398d4006b3e2d8375529b | Cloned once per token. Holds creator fees. |
| BanquetV4Hook | 0xdb8239736c7ab108fd95a02af55589092c2420cc | Takes the 1% and any perpetual tax on every pool swap. |
| UniV4Adapter | 0x5879a28948ef54308b1a1b9d84e9a0562992bb55 | Opens the Uniswap v4 pool at graduation and locks its liquidity for good. |
| Uniswap v4 PoolManager | 0x8366a39cc670b4001a1121b8f6a443a643e40951 | Uniswap's. Every graduated pool lives inside it. |
| Uniswap Universal Router | 0x4fca4a51ab4f23a7447b3284fbd7d73289a89fb1 | Uniswap's. What the app trades through after graduation. |
| Permit2 | 0x000000000022d473030f116ddee9f6b43ac78ba3 | Uniswap's. Holds the router's allowance, with an expiry. |
| Uniswap v4 StateView | 0xf3334192d15450cdd385c8b70e03f9a6bd9e673b | Uniswap's. Reads a pool's price and liquidity. |
| Uniswap V4Quoter | 0x8dc178efb8111bb0973dd9d722ebeff267c98f94 | Uniswap's. Quotes a trade with the hook included. |
| Disperse | 0x0c4e16c9562954da2d6fe98e176e5ba78ad296ad | Sends one token to many wallets in one transaction. |
Indexing starts at block 21196020, where the factory was deployed.
Earlier versions, still trading#
| Factory | Hook | Adapter |
|---|---|---|
0xd3e26ef8316dde01a2295a8365ba4087ebefb051 | 0xdefe9cae31ebd52e124125797e657fad80d4c088 | 0x1e20d1fb68891a111b8cbcd4a1ffe5708bcfad6d |
Per-token addresses#
Token and curve addresses are not listed anywhere, because there will be thousands. Both are deterministic: the factory deploys EIP-1167 clones through CREATE2, and emits TokenLaunched at every launch.
Every token address ends in feed, checked on chain by the factory. Verify it against tag() and tagMask() rather than the literal, and check the factory emitted it.
Onchain events
For a trust-minimized integration, index the factory's CurveReady and TokenLaunched events, register each emitted curve, and index its Bought, Sold and Graduated events. After graduation, index the adapter's Graduated for the pool id and the hook's events for what each swap paid. Onchain events are the authoritative source of truth.
| Contract | Event | topic0 |
|---|---|---|
| Factory | TokenLaunched | 0x5b296911b7a0146e120ae1fb6b8be7710a7c85b2ac77d7d31654192e87668656 |
| Factory | CurveReady | 0xb2bc2a1d77374590aba07729e6e0b8615ae7d0df8ded9fc9e0c863f641e8a54b |
| Factory | LaunchExtras | 0x816c0318420e57b5b41fd51f7f182003b479dbc49828acf299f99214b4152b31 |
| Curve | Bought | 0x27330bd7589580547b6437e08f9c60653de63691d2d2b2c13bff9ee67da2a68d |
| Curve | Sold | 0x490fdc1c23c0f3a84bf80a0384eaadcb9188c9ef71b9430da391a0e4c4c39bf6 |
| Curve | Graduated | 0x1c858049e704460ab9455025be4078f9e746e3fd426a56040d06389edb8197db |
| Adapter | Graduated(token, poolId, liquidity) | 0x0679d6268f9e4abb74afa977f548840167fb3409ecf2b596128e65990aa10988 |
| Hook | CutTaken(poolId, toCreator, toPlatform) | 0x71902a4f16088bf96f470c3d48efd7c29388924ffe2fc9424c93eb349718cdce |
| Hook | CutBurnt(poolId, amount) | 0x487ed7e78e7e3b75a1b85bc7d2b094429205b13abbdfe1c3a6ac569a6c4545b6 |
| Hook | HoldersPaid(poolId, amount) | 0x3aa79f12131ca184f157391ac454a907f50820756452154855b09d90b58e7bca |
| Hook | LiquidityAdded(poolId, liquidity, usdc, tokens) | 0x491804742ecda0a8eac7ede1889f8661bcf9cb3847e12b0f389ef5fe12b0d168 |
CurveReady is emitted before the launch transaction's own bundle buy, so a bundle is attributable to the token. Open the token on CurveReady and fill in its metadata from TokenLaunched.
Pool trades are Uniswap's own Swap events on the PoolManager, keyed by pool id. Their amounts are the pool's, before the hook's fee, and negative means into the pool.
import { createPublicClient, http, parseAbiItem } from "viem";
const client = createPublicClient({
chain: {
id: 5042,
name: "Arc",
nativeCurrency: { name: "USDC", symbol: "USDC", decimals: 18 },
rpcUrls: { default: { http: ["https://rpc.mainnet.arc.io"] } },
},
transport: http(),
});
const launches = await client.getLogs({
address: FACTORY,
event: parseAbiItem(
"event CurveReady(address indexed token, address indexed curve, address indexed creator, uint256 targetUsdc, uint16 curveTaxBps, bool taxMode)"
),
fromBlock: START_BLOCK,
});
Reading token state
Before graduation, everything a price needs is on the curve.
| Call | Returns |
|---|---|
reserveUsdc() | USDC collected so far, 6 decimals |
tokensSold() | Tokens sold so far, net of sales back, 18 decimals |
tokensRemaining() | What the curve still has for sale, 18 decimals |
config() | The launch configuration, including virtualUsdc, the virtual reserve |
currentFeeBps() | The fee on the next trade, premium included |
graduated() | Whether the curve has closed |
quoteBuy(usdcIn) | Tokens out and the fee, in bps |
quoteSell(tokenIn) | USDC out and the fee, in bps |
Spot price is (virtualUsdc + reserveUsdc) / (1,125,000,000 - tokensSold), where 1,125,000,000 is the curve's virtual token reserve. Use it for display only. Price a trade with the quote functions, which account for the impact of the trade itself.
A launch has graduated when graduated() is true. Trading then happens in its Uniswap v4 pool: read the price from Uniswap's StateView and quote with Uniswap's V4Quoter, which include the hook's fee and any perpetual tax.
On the curve, fees are pulled: feesOwed(address) reads what an address can claim, and claim() pays it. In the pool, the hook pays the creator's vault on every swap.
Trading bots and aggregators
Everything a bot needs to list, quote and trade Banquet tokens on Arc mainnet. Every contract is permissionless: no key, no allowlist, no API key.
Kit#
| ABIs | https://banquet.fun/abi/TokenFactory.json, BondingCurve.json, LaunchToken.json, LaunchTokenTax.json, CreatorVault.json, UniV4Adapter.json, BanquetV4Hook.json |
| Addresses | https://banquet.fun/abi/deployment.json, also on the contracts page |
| Chain | Arc mainnet, chain id 5042, RPC https://rpc.mainnet.arc.io |
| Quote asset | USDC. Native gas token with 18 decimals, ERC-20 at 0x3600000000000000000000000000000000000000 with 6 |
| Token | ERC-20, 18 decimals, 1,000,000,000 supply, address ends in feed |
1. Find launches#
Index CurveReady(address indexed token, address indexed curve, address indexed creator, uint256 targetUsdc, uint16 curveTaxBps, bool taxMode) on the factory, from its start block in deployment.json. It fires once per launch, before the launch's own bundle buy, and names the curve every pre-graduation trade goes to. TokenLaunched follows in the same transaction with the name and symbol.
To check any address: factory.carriesTag(token) is true only for a Banquet token, and factory.curveOf(token) returns its curve.
2. Before graduation: trade on the curve#
The curve is the only market until it sells out. curve.graduated() is false.
Quote
| Call | Returns |
|---|---|
quoteBuy(uint256 usdcIn) | (tokensOut, feeBps), usdcIn in 6 decimals |
quoteSell(uint256 tokensIn) | (usdcOut, feeBps), usdcOut in 6 decimals |
Both include every fee in force, the anti-snipe premium included.
Buy, paid in native USDC:
function buy(uint256 minTokensOut, address integrator) external payable returns (uint256);
msg.valueis USDC at 18 decimals and must be a whole multiple of1e12(whole 6-decimal units), or it reverts withNotExact.- Pass
integrator = address(0). The integrator share is zero on these curves. - A buy that fills the curve is clamped to what is left, graduates the token in the same transaction, and refunds the unused value.
Sell, paid out in USDC (ERC-20):
function sell(uint256 tokensIn, uint256 minUsdcOut, address integrator) external returns (uint256);
Approve the curve on the token first: the curve pulls tokensIn with transferFrom.
Fees on the curve: 1% (0.5% creator, 0.5% protocol), plus the creator's curve tax if any (config().curveTaxBps, up to 50%), plus the anti-snipe premium for the first 15 blocks after trading opens: 75% at the first block, decaying quadratically to zero. currentFeeBps() is the total on the next trade.
3. Graduation#
When the last curve token is sold, in that same transaction:
- the curve emits
Graduated(address target, uint256 tokenAmount, uint256 usdcAmount)and closes: furtherbuyandsellrevert withAlreadyGraduated; - the adapter opens the Uniswap v4 pool and emits
Graduated(address indexed token, bytes32 indexed poolId, uint128 liquidity); - 250,000,000 tokens and the whole raise are locked as full range liquidity, for ever.
4. After graduation: trade on Uniswap v4#
A graduated token trades in an ordinary Uniswap v4 pool. Any router that reaches the PoolManager works, including Uniswap's Universal Router.
Pool key
| Field | Value |
|---|---|
currency0, currency1 | the token and USDC 0x3600…0000, sorted ascending |
fee | 0x800000 (dynamic, set by the hook) |
tickSpacing | 200 |
hooks | v4Hook in deployment.json |
poolId = keccak256(abi.encode(poolKey)), also emitted by the adapter.
Uniswap on Arc
| PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| Universal Router | 0x4fcA4a51Ab4F23A7447b3284fBd7D73289A89Fb1 |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
| V4Quoter | 0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94 |
| StateView | 0xF3334192D15450CdD385c8B70e03f9A6bD9E673b |
Quote with the V4Quoter. The hook takes its fee inside the swap, so the quoter's answer already includes it; a price computed from sqrtPriceX96 alone does not. Exact input and exact output are both supported and both charged.
Fees in the pool: 1% on every swap, taken by the hook (the pool's own LP fee is zero), plus a Tax mode token's perpetual tax, read with hook.poolOf(poolId) (buyBps, sellBps, up to 10% each). Taxes apply to swaps only; wallet transfers are never taxed.
5. Events worth indexing#
See onchain events for every topic. The short list for a bot:
| Where | Event | Meaning |
|---|---|---|
| Factory | CurveReady | a new token and its curve |
| Curve | Bought, Sold | a curve trade |
| Curve | Graduated | the curve closed |
| Adapter | Graduated | the pool id to trade on |
| PoolManager | Swap | a pool trade, filtered by pool id |
6. Read-only API (optional)#
The chain is authoritative. For convenience, the indexer behind banquet.fun answers JSON at https://banquet-production-fecb.up.railway.app:
| Route | Returns |
|---|---|
/tokens?limit=50&offset=0&sort=newest | tokens with price, market cap, volume, progress, pool id |
/tokens/count | how many |
/trades/:token | recent trades |
/holders/:token | holders |
/candles/:token?interval=60 | OHLCV, intervals 60, 300, 3600, 86400 |
Prices are 18-decimal USDC per whole token (priceWad), USDC amounts are 6 decimals.
Contact#
contact@banquet.fun or @Banquetdotfun.
Errors
Custom errors, so a revert says what happened.
| Error | Meaning |
|---|---|
BadParams | A launch parameter is out of range |
BadConfig | A tax or allocation is out of range |
TooManyWallets | A bundle names more than 100 recipients |
DuplicateRecipient | A bundle names the same wallet twice |
NotStarted | Trading has not opened yet |
AlreadyGraduated | The curve has closed |
Slippage | The quote moved past your minimum |
NothingToClaim | The address is owed nothing |
NotCreator | The caller is not the creator |
NotTheCurve | Something other than the token's own curve tried to graduate it |
NotAdapter | Something other than Banquet's adapter tried to open or register a pool |
AlreadyRegistered | The pool's fee is already set |
FeeTooHigh | A perpetual rate is above 10% |
NotADecrease | A split change would raise the creator's own share |
A revert costs gas and changes nothing else. A launch that reverts deploys no token.
Support
Read the risk disclosures before anything else.
For a security issue, write to security@banquet.fun. Do not open a public issue for a vulnerability that can be exploited.
For anything else, contact@banquet.fun or @Banquetdotfun.
Banquet holds no key to any token launched through it. Nothing can be paused, moved, seized or refunded, including by us.
Legal
Terms of use
Last updated 12 September 2026.
What Banquet is#
Banquet is an interface to a set of immutable smart contracts on the Arc network. The contracts hold no owner, no pause, no mint and no upgrade path. Every transaction is signed by your own wallet.
Banquet does not take custody of funds, execute trades on your behalf, hold keys to any token launched through it, or act as a broker, exchange or adviser.
What we do not do#
We do not offer investment advice, endorse any token, or make any statement about a token's quality, safety or value. A token appearing on Banquet means it exists on the chain and nothing else.
Nothing on Banquet is a solicitation to buy or sell anything.
Who may use it#
You may not use Banquet if you are subject to sanctions, if doing so would breach the law where you are, or if you are under the age of majority where you are.
USDC is issued by Circle and can be frozen or blocked by its issuer at any address. Banquet has no involvement in that and cannot reverse it.
User-created content#
Anyone can launch a token with any name, ticker, description, picture and links. We do not review them in advance. Similar names and images can represent unrelated tokens, and the only identifier that means anything is the contract address.
You are responsible for what you publish through Banquet, including that you have the right to publish it. We may remove a description, picture or link from our interface. We cannot remove anything from the chain, and neither can anyone else.
Fees#
Fees are charged by the contracts, not by this interface, and they are described in the documentation. The rate is fixed at launch and can never be raised. A creator may reduce their own share of it and can never increase it.
Community takeovers#
Where a creator has abandoned a token, we may reassign the creator fee stream to somebody else. That is an administrative act on the fee stream only. It is not an endorsement, it changes no rule a buyer read before buying, and it moves nothing but who is paid.
No warranty#
Banquet is provided as it is. Smart contracts, wallets, networks, RPC providers and indexers can fail, and displayed values are estimates rather than execution guarantees. We do not warrant that the interface will be available, accurate or uninterrupted.
To the extent the law allows, we are not liable for any loss arising from use of Banquet, including loss of funds, missed transactions, incorrect displayed values, or the actions of any token creator.
Changes#
We may change these terms. The date at the top says when they last changed. Continuing to use Banquet after a change means you accept it.
Contact#
contact@banquet.fun
Privacy
Last updated 17 September 2026.
The short version#
We set no cookies. We run no analytics, no tracking pixels and no third-party scripts that watch you. There is nothing on this site that follows you anywhere else.
What we store, and why#
Your wallet address, when you connect one. It is public on the chain already. We store it against a seat, a takeover request or a note so that the same address is not counted twice.
The X handle you type, if you ask for a seat. You type it, we do not read it from X and we have no connection to your X account. It is shown to whoever reads the queue, and on a seat receipt if you make one.
What you write: a note on the comment card, the reason on a takeover request, and a token's description, links and picture. A token's details are public by design and are served to anybody who asks. A note is not published anywhere.
Your IP address, to count requests against a rate limit. It is held in memory only, never written to a database, and gone when the process restarts.
What we do not store#
We ask for no email, no name, no phone number and no document. We do not have your private key and cannot have it. We do not build a profile of you, and we do not sell, rent or share anything with anybody for advertising.
What your browser keeps#
Seven things, in your own browser, that never reach us:
| key | what it remembers |
|---|---|
banquet.prefs.v1 | your theme, sort order, filters and slippage |
banquet.gate.v1 | whether the door was open last time |
banquet.factory.v1 | which contracts this browser last used |
banquet.meta.v1 | a token's details you set, before the server has them |
banquet.cto.queue.v1 | an operator's working list, for one session |
banquet.wallet.v1 | which wallet you picked, when you have more than one |
banquet.lang | the language you picked |
Clearing your site data removes all of them. Nothing breaks.
Who else sees it#
The interface is served by Vercel. The API and its database run on Railway. Reading the chain goes through an RPC provider. Each of those sees the requests you make to it, including your IP, as any host does. On Deliveries, your browser also asks Circle's API for the fee on a route and the status of a transfer you started.
If you connect with WalletConnect, and only then, your browser loads Reown's AppKit from jsDelivr, and WalletConnect's relay carries the messages between this page and your wallet app. AppKit keeps that session in your browser, under keys that start with wc@2:, until you disconnect.
A request for a seat or a note sends a notification to a Telegram chat we run, so somebody sees it. That notification carries what you wrote and the address or handle attached.
The chain is not private and we cannot make it so#
Every transaction you sign is public and permanent. Your address, what you launched, what you bought and what you sold are readable by anybody, for ever, and nothing in this policy changes that. We cannot delete anything from the chain.
Your requests#
Ask and we will tell you what we hold against your address or handle, and delete what is ours to delete. What is on the chain is not ours to delete.
Contact#
contact@banquet.fun