Banquet 文件
EN 打開應用程式

總覽

Banquet 是在 Arc(Circle 的第一層區塊鏈)上發行與交易代幣的地方。你可以瀏覽各項發行、打開任一代幣查看詳情,並直接用你的錢包交易。

USDC 是 Arc 的原生 gas 代幣。你看到的每個價格、手續費和餘額都是美元金額,交易前不需要先取得第二種資產。

Banquet 從不保管你的資金。每一次發行和交易都是由你的錢包請你核准的交易。

協議

發行機制

建立一項發行會在單一交易中部署代幣、其聯合曲線和創作者金庫。全部供應量都鑄造給曲線,所以創作者一開始沒有任何代幣。創作者在建立時設定名稱、代號、圖片、描述、連結、畢業目標以及任何稅。

每個代幣都以 USDC 交易。交易在曲線上進行,直到曲線配額賣完,之後移到流動性永久鎖定的 Uniswap v4 流動性池。

01 建立
代幣、曲線和金庫在一筆交易中部署
捆綁購買?
是
創作者自己的購買在同一筆交易中執行
固定 1%,沒有防狙擊溢價
否

straight to 02 交易

02 交易
任何人都能在曲線上買賣
03 畢業
流動性池開啟、曲線關閉,在同一筆交易中完成

每項發行使用固定的十億枚供應量,其中 750,000,000 枚在曲線上,交易手續費 1%,發行費 $1。

欄位限制
名稱最多 28 個字元
代號1 到 10 個字元
圖片PNG、JPEG、WEBP 或 GIF,最大 5 MB
描述最多 280 個字元
連結X、網站、Telegram
畢業目標$5,625 到 $50,000,因此代幣開盤市值至少為 $2,500

交易與定價

畢業前,價格來自帶有虛擬儲備的恆定乘積曲線:

(V0 + R) · S = k

V0 是部署時固定的虛擬 USDC 儲備,R 是曲線已收取的金額,S 是曲線仍持有的代幣。現價為 (V0 + R) / S。

代幣賣出時價格上漲,賣回時價格下跌。從發行到畢業,價格會上漲 9 倍,無論目標為何,每個代幣都一樣。

畢業後,價格來自代幣的 Uniswap v4 流動性池。交易在那裡繼續,可透過 Banquet 或任何能連到該流動性池的路由進行,之後不會再遷移。

你實際收到的數量可能與報價不同,因為報價與交易上鏈的區塊之間價格會變動。

價格影響你的交易規模造成的曲線或流動性池變動
滑點你的交易可接受的最大成交變動
服務費此筆交易的手續費,若防狙擊溢價仍在進行也包含在內

畢業

當 750,000,000 枚代幣賣出,也就是整個曲線配額賣完時,發行就會畢業。進度條顯示發行距離畢業還有多遠。

觸發條件是賣出的代幣數量,而不是募集的金額。注入儲備的手續費會增加收取的金額但不會發出代幣,所以若以募集金額為目標,會在供應量還沒賣完時提前觸發。因此每個畢業的代幣都分發了相同的供應量。

畢業與最後一筆買入在同一筆交易中發生:

  1. 剩餘的 250,000,000 枚代幣和所有募集的美元轉入畢業轉接合約。
  2. 它以曲線的收盤價為代幣開啟一個對 USDC 的 Uniswap v4 流動性池,並掛上 Banquet 的 hook。
  3. 它把全部資產作為全區間流動性加入並永久鎖定。轉接合約沒有任何能提領它的函式。
  4. 曲線永久關閉。交易在流動性池中繼續。

只有代幣自己的曲線能讓它畢業,也只有 Banquet 的轉接合約能在 hook 上開啟流動性池,所以沒有人能以錯誤價格提前開啟代幣的流動性池。

畢業只代表曲線已賣完。它不是品質指標,也不保證未來的流動性、價格或退出機會。

手續費

每筆交易支付 1%,無論是在曲線上,還是畢業後在流動性池中。

協議0.50%
創作者0.50%,終身有效,依創作者的分配方式分配

在曲線上,手續費記入帳本並需要領取,所以無法接收 USDC 的收款人永遠不會阻擋其他人的交易。

在流動性池中,手續費由 Banquet 的 Uniswap v4 hook 在兌換時直接收取。流動性池本身不收手續費,所以 1% 就是全部成本,與標準的 1% Uniswap 流動性池相同。協議的一半以 USDC 支付。創作者的一半依其分配方式:

分配支付資產去向
保留USDC創作者金庫,隨時可領取
銷毀該代幣送到 0x…dEaD
流動性一半 USDC,一半該代幣先排隊,再作為鎖定的流動性加入流動性池
持有者獎勵USDC代幣的獎勵池,由持有者領取(僅限稅務模式)

全部設為「保留」的代幣不會銷毀任何東西。創作者自己的分成只能調低:放棄的部分會進入銷毀、流動性或持有者。

創作者可以把金庫分到最多十個地址,也可以把金庫交給別人。兩者都不會改變費率。

防狙擊溢價會在前 15 個區塊額外收取,全部歸協議所有。請參閱發行機制。

永久稅(若創作者選擇稅務模式)會在 1% 之外另行收取。請參閱稅。

稅

稅是選填的,在發行時選擇。兩種模式都會畢業到相同的 Uniswap v4 流動性池,並在那裡支付相同的 1% 手續費。

模式聯合曲線期間畢業後
純淨最高 50% 創作者稅,由曲線收取僅 1%
稅務最高 50% 創作者稅,由曲線收取1% 加上每邊最高 10% 的永久稅

永久稅由流動性池的 hook 收取,而不是由代幣收取,所以對所有路由和錢包而言,代幣都是普通的 ERC20。稅只對兌換收取,錢包之間的轉帳不收。買入與賣出費率分開設定。

協議收取永久稅的 5%。其餘部分併入創作者在 1% 中的一半,並依相同的分配方式分配:保留、銷毀、加入流動性或支付給持有者。持有者獎勵以 USDC 依餘額比例累積,只有稅務模式的代幣可以發放。

費率永遠無法調高。創作者可以調低曲線稅;永久稅率在畢業時固定。

地址標記

透過 Banquet 發行的每個代幣,地址都以 feed 結尾。

0x7f3d4b2a91c05e6dbb4417c8e2f0a5d8dd12feed
                                      ^^^^

工廠合約部署時會檢查最後兩個位元組是否為 0xfeed,所以沒有這個標記的代幣就不是在這裡發行的。用不同的 salt 呼叫工廠合約也無法偽造。

這項檢查是數值比對,所以大小寫不影響:請以不分大小寫的方式比對,或從工廠合約讀取 tag() 和 tagMask() 自行遮罩地址。

地址標記證明代幣的來源,但不證明代幣本身的任何特性:帶有標記的代幣仍可能有 50% 的稅、大量捆綁購買,以及會消失的創作者。

社群接管(CTO)

當代幣的原創作者離開時,創作者的手續費收入可以交給別人。這就是社群接管,也就是 CTO。

代幣、其流動性池和鎖定的流動性都不受影響,費率也不會改變。

請在代幣自己的頁面上的 接手這個代幣 提出申請:填寫收款地址和原因。申請需要申請錢包持有 該代幣供應量的 5%。每個代幣同時只能有一個申請。我們會人工審閱。沉寂一週不代表離開。

核准時會在金庫上呼叫 reassignCreator,只有平台地址能執行。它會發出包含兩個地址的 CreatorReassigned 事件,所以每次接管都記錄在鏈上。仍持有金鑰的創作者不需要我們:transferCreator 由他們自己執行。

核准屬於行政作業,並不代表背書,也不代表對代幣安全性或價值的任何陳述。

收入也可以指向一個在公開市場買入該代幣並銷毀所買代幣的合約。該合約沒有擁有者、無法暫停、無法提領,任何人都可以觸發它。

絕對不要分享私鑰或助記詞。Banquet 絕不會要求你轉帳來處理申請。

風險揭露

透過 Banquet 發行的代幣由使用者建立,屬於實驗性質。簽名前請檢查代幣地址、創作者、流動性、持有者集中度和交易預覽。

  • 價格可能快速變動,流動性可能很薄。
  • 相似的名稱和圖片可能代表無關的代幣。
  • 智慧合約、錢包、RPC 和索引器都可能故障。
  • 顯示的數值是估計值,不保證成交結果。
  • 發行時設定的任何內容之後都無法更改,也沒有客服途徑。

Banquet 只是一個介面,不構成投資建議,也不代表代幣品質。

整合

網路

Banquet 運行於 Arc 主網。代幣先在聯合曲線上交易,之後畢業到 Uniswap v4 流動性池,且只以 USDC 報價。

網路Arc
Chain ID5042
原生資產USDC
公開 RPChttps://rpc.mainnet.arc.io
USDC(ERC-20)0x3600000000000000000000000000000000000000
流動性池Uniswap v4,動態手續費,tick 間距 200,Banquet hook
流動性池手續費1%,由 hook 收取
發行費$1
供應量1,000,000,000(1e9)

USDC 是原生 gas 代幣,同時也是位於上方地址的 ERC-20,精度為 6 位小數。絕對不要假設是 18 位。

合約

Arc 主網#

合約地址說明
TokenFactory0x38d155cb80b845b66260295c68f0b663040c4ac2你呼叫的合約。部署後不持有任何東西。
LaunchToken implementation0xb727db5b250ccb74cafa3cb68ef539d9b6a1f8ff無稅發行時被複製的合約。
TaxToken implementation0xb1460d69d0d2c3375300d1757ad2db2e21bf30b3含稅發行時被複製的合約。
BondingCurve implementation0x0db4735eba3479f8c9badba796d5e27eed3bcd98每個代幣複製一次。
CreatorVault implementation0xd73ad0733e3bcf57589398d4006b3e2d8375529b每個代幣複製一次,存放創作者手續費。
BanquetV4Hook0xdb8239736c7ab108fd95a02af55589092c2420cc畢業後在每筆兌換中收取 1% 內的手續費與永久稅。
UniV4Adapter0x5879a28948ef54308b1a1b9d84e9a0562992bb55畢業時開啟 Uniswap v4 流動性池並永久鎖定其流動性。
Uniswap v4 PoolManager0x8366a39cc670b4001a1121b8f6a443a643e40951Uniswap 的合約。每個已畢業的流動性池都在其中。
Uniswap Universal Router0x4fca4a51ab4f23a7447b3284fbd7d73289a89fb1Uniswap 的合約。應用程式在畢業後透過它交易。
Permit20x000000000022d473030f116ddee9f6b43ac78ba3Uniswap 的合約。保存路由的授權額度,並有到期時間。
Uniswap v4 StateView0xf3334192d15450cdd385c8b70e03f9a6bd9e673bUniswap 的合約。讀取流動性池的價格與流動性。
Uniswap V4Quoter0x8dc178efb8111bb0973dd9d722ebeff267c98f94Uniswap 的合約。報價時包含 hook。
Disperse0x0c4e16c9562954da2d6fe98e176e5ba78ad296ad在一筆交易中把一種代幣發送給多個錢包。

索引從區塊 21196020 開始,也就是工廠合約部署的位置。

較早的版本,其代幣仍在交易#

工廠合約Hook轉接合約
0xd3e26ef8316dde01a2295a8365ba4087ebefb0510xdefe9cae31ebd52e124125797e657fad80d4c0880x1e20d1fb68891a111b8cbcd4a1ffe5708bcfad6d

各代幣地址#

代幣和曲線地址不會在任何地方列出,因為數量會有數千個。兩者都是確定性的:工廠合約透過 CREATE2 部署 EIP-1167 clone,並在每次發行時發出 TokenLaunched。

每個代幣地址都以 feed 結尾,由工廠合約在鏈上檢查。請以 tag() 和 tagMask() 驗證,而不是比對字面值,並確認該事件是由工廠合約發出的。

鏈上事件

若要進行信任最小化的整合,請索引工廠合約的 CurveReady 和 TokenLaunched 事件,登記每個發出的曲線,並索引其 Bought、Sold 和 Graduated 事件。畢業後,索引轉接合約的 Graduated 以取得流動性池 ID,並索引 hook 的事件以得知每筆兌換支付了什麼。鏈上事件是權威的真實來源。

合約事件topic0
工廠合約TokenLaunched0x5b296911b7a0146e120ae1fb6b8be7710a7c85b2ac77d7d31654192e87668656
工廠合約CurveReady0xb2bc2a1d77374590aba07729e6e0b8615ae7d0df8ded9fc9e0c863f641e8a54b
工廠合約LaunchExtras0x816c0318420e57b5b41fd51f7f182003b479dbc49828acf299f99214b4152b31
曲線Bought0x27330bd7589580547b6437e08f9c60653de63691d2d2b2c13bff9ee67da2a68d
曲線Sold0x490fdc1c23c0f3a84bf80a0384eaadcb9188c9ef71b9430da391a0e4c4c39bf6
曲線Graduated0x1c858049e704460ab9455025be4078f9e746e3fd426a56040d06389edb8197db
轉接合約Graduated(token, poolId, liquidity)0x0679d6268f9e4abb74afa977f548840167fb3409ecf2b596128e65990aa10988
HookCutTaken(poolId, toCreator, toPlatform)0x71902a4f16088bf96f470c3d48efd7c29388924ffe2fc9424c93eb349718cdce
HookCutBurnt(poolId, amount)0x487ed7e78e7e3b75a1b85bc7d2b094429205b13abbdfe1c3a6ac569a6c4545b6
HookHoldersPaid(poolId, amount)0x3aa79f12131ca184f157391ac454a907f50820756452154855b09d90b58e7bca
HookLiquidityAdded(poolId, liquidity, usdc, tokens)0x491804742ecda0a8eac7ede1889f8661bcf9cb3847e12b0f389ef5fe12b0d168

CurveReady 會在發行交易自身的捆綁購買之前發出,因此捆綁購買可以歸屬到該代幣。請在 CurveReady 時建立代幣,並從 TokenLaunched 補上其中繼資料。

流動性池的交易是 PoolManager 上 Uniswap 自己的 Swap 事件,以流動性池 ID 為鍵。其金額是流動性池的金額,未扣除 hook 的手續費,負數表示流入流動性池。

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,
});

讀取代幣狀態

畢業前,計算價格所需的一切都在曲線上。

呼叫回傳
reserveUsdc()至今收取的 USDC,6 位小數
tokensSold()至今賣出的代幣(扣除賣回),18 位小數
tokensRemaining()曲線仍待售的數量,18 位小數
config()發行設定,包括虛擬儲備 virtualUsdc
currentFeeBps()下一筆交易的手續費,含溢價
graduated()曲線是否已關閉
quoteBuy(usdcIn)可得代幣數量與手續費(bps)
quoteSell(tokenIn)可得 USDC 與手續費(bps)

現價為 (virtualUsdc + reserveUsdc) / (1,125,000,000 - tokensSold),其中 1,125,000,000 是曲線的虛擬代幣儲備。僅用於顯示。交易請使用報價函式定價,它們會計入交易本身造成的影響。

當 graduated() 為 true 時,發行已畢業。之後交易在其 Uniswap v4 流動性池中進行:從 Uniswap 的 StateView 讀取價格,並用 Uniswap 的 V4Quoter 報價,其中包含 hook 的手續費和任何永久稅。

在曲線上,手續費需要提領:feesOwed(address) 讀取某地址可領取的金額,claim() 進行支付。在流動性池中,hook 在每筆兌換時支付給創作者金庫。

交易機器人與聚合器

機器人在 Arc 主網上架、報價和交易 Banquet 代幣所需的一切。每個合約都是無需許可的:不需要金鑰、白名單或 API 金鑰。

工具包#

ABIhttps://banquet.fun/abi/TokenFactory.json、BondingCurve.json、LaunchToken.json、LaunchTokenTax.json、CreatorVault.json、UniV4Adapter.json、BanquetV4Hook.json
地址https://banquet.fun/abi/deployment.json,也列在合約頁面
鏈Arc 主網,chain id 5042,RPC https://rpc.mainnet.arc.io
報價資產USDC。原生 gas 代幣為 18 位小數,位於 0x3600000000000000000000000000000000000000 的 ERC-20 為 6 位
代幣ERC-20,18 位小數,供應量 1,000,000,000,地址以 feed 結尾

1. 找到發行#

從 deployment.json 中的起始區塊開始,索引工廠合約上的 CurveReady(address indexed token, address indexed curve, address indexed creator, uint256 targetUsdc, uint16 curveTaxBps, bool taxMode)。每次發行觸發一次,在發行自身的捆綁購買之前,並指出畢業前所有交易要送往的曲線。TokenLaunched 會在同一筆交易中隨後發出,包含名稱與代號。

檢查任一地址:只有 Banquet 代幣的 factory.carriesTag(token) 為 true,factory.curveOf(token) 會回傳其曲線。

2. 畢業前:在曲線上交易#

在賣完之前,曲線是唯一的市場。此時 curve.graduated() 為 false。

報價

呼叫回傳
quoteBuy(uint256 usdcIn)(tokensOut, feeBps),usdcIn 為 6 位小數
quoteSell(uint256 tokensIn)(usdcOut, feeBps),usdcOut 為 6 位小數

兩者都包含所有生效中的手續費,包括防狙擊溢價。

買入,以原生 USDC 支付:

function buy(uint256 minTokensOut, address integrator) external payable returns (uint256);
  • msg.value 是 18 位小數 的 USDC,必須是 1e12 的整數倍(完整的 6 位小數單位),否則會以 NotExact 回退。
  • 傳入 integrator = address(0)。這些曲線上的整合者分成為零。
  • 填滿曲線的買入會被限制為剩餘數量,在同一筆交易中讓代幣畢業,並退還未使用的金額。

賣出,以 USDC(ERC-20)支付:

function sell(uint256 tokensIn, uint256 minUsdcOut, address integrator) external returns (uint256);

請先在代幣上授權曲線:曲線會以 transferFrom 拉取 tokensIn。

曲線上的手續費: 1%(0.5% 創作者、0.5% 協議),另加創作者的曲線稅(若有,config().curveTaxBps,最高 50%),再加上交易開放後前 15 個區塊的防狙擊溢價:第一個區塊為 75%,以二次曲線遞減至零。currentFeeBps() 是下一筆交易的總手續費。

3. 畢業#

當曲線上最後一枚代幣賣出時,在同一筆交易中:

  • 曲線發出 Graduated(address target, uint256 tokenAmount, uint256 usdcAmount) 並關閉:之後的 buy 和 sell 會以 AlreadyGraduated 回退;
  • 轉接合約開啟 Uniswap v4 流動性池並發出 Graduated(address indexed token, bytes32 indexed poolId, uint128 liquidity);
  • 250,000,000 枚代幣和全部募集資金以全區間流動性永久鎖定。

4. 畢業後:在 Uniswap v4 上交易#

已畢業的代幣在一般的 Uniswap v4 流動性池中交易。任何能連到 PoolManager 的路由都可以使用,包括 Uniswap 的 Universal Router。

流動性池鍵

欄位值
currency0、currency1代幣與 USDC 0x3600…0000,依升序排列
fee0x800000(動態,由 hook 設定)
tickSpacing200
hooksdeployment.json 中的 v4Hook

poolId = keccak256(abi.encode(poolKey)),轉接合約也會發出。

Arc 上的 Uniswap

PoolManager0x8366a39CC670B4001A1121B8F6A443A643e40951
Universal Router0x4fcA4a51Ab4F23A7447b3284fBd7D73289A89Fb1
Permit20x000000000022D473030F116dDEE9F6B43aC78BA3
V4Quoter0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94
StateView0xF3334192D15450CdD385c8B70e03f9A6bD9E673b

使用 V4Quoter 報價。 hook 在兌換過程中收取手續費,所以報價器的回答已包含它;僅由 sqrtPriceX96 計算的價格則不包含。精確輸入與精確輸出都支援,也都會收費。

流動性池中的手續費: 每筆兌換 1%,由 hook 收取(流動性池本身的 LP 手續費為零),另加稅務模式代幣的永久稅,可透過 hook.poolOf(poolId) 讀取(buyBps、sellBps,各最高 10%)。稅只適用於兌換;錢包轉帳永遠不收稅。

5. 值得索引的事件#

所有 topic 請參閱鏈上事件。機器人需要的精簡清單:

位置事件意義
工廠合約CurveReady新代幣及其曲線
曲線Bought、Sold曲線交易
曲線Graduated曲線已關閉
轉接合約Graduated要交易的流動性池 ID
PoolManagerSwap流動性池交易,以流動性池 ID 過濾

6. 唯讀 API(選用)#

鏈上資料才是權威來源。為了方便,banquet.fun 背後的索引器在 https://banquet-production-fecb.up.railway.app 提供 JSON:

路由回傳
/tokens?limit=50&offset=0&sort=newest代幣及其價格、市值、交易量、進度、流動性池 ID
/tokens/count數量
/trades/:token近期交易
/holders/:token持有者
/candles/:token?interval=60OHLCV,區間 60、300、3600、86400

價格是每枚完整代幣的 18 位小數 USDC(priceWad),USDC 金額為 6 位小數。

聯絡#

contact@banquet.fun 或 @Banquetdotfun。

錯誤

合約使用自訂錯誤,因此回退時會說明發生了什麼。

錯誤意義
BadParams發行參數超出範圍
BadConfig稅或分配超出範圍
TooManyWallets捆綁購買列出超過 100 個接收者
DuplicateRecipient捆綁購買重複列出同一個錢包
NotStarted交易尚未開放
AlreadyGraduated曲線已關閉
Slippage報價變動超過你設定的最小值
NothingToClaim該地址沒有可領取的款項
NotCreator呼叫者不是創作者
NotTheCurve不是代幣自己的曲線試圖讓它畢業
NotAdapter不是 Banquet 的轉接合約試圖開啟或登記流動性池
AlreadyRegistered流動性池的手續費已經設定
FeeTooHigh永久稅率高於 10%
NotADecrease分配變更會提高創作者自己的分成

回退會花費 gas,但不會改變任何其他東西。回退的發行不會部署任何代幣。

支援

在做任何事之前,請先閱讀風險揭露。

安全問題請寫信到 security@banquet.fun。可被利用的漏洞請勿公開提出 issue。

其他事項請聯絡 contact@banquet.fun 或 @Banquetdotfun。

Banquet 沒有透過它發行的任何代幣的金鑰。任何東西都無法被暫停、轉移、沒收或退款,包括我們在內。

法律