Meme Atlas AZ · pumpswap-pool-fields
Pump swap liquidity pool: Pool hesabının sahələri, effective quote reserves və xəzinə balansı niyə likvidlik deyil
PumpSwap pump.fun-un sabit hasil AMM-idir; koin bonding curve-dən köçəndən sonra ticarət burada gedir. Bu mətn rəsmi proqram sənədi əsasında Pool hesabının sahələrini, qiymət üçün işlənən effective quote reserves-i, mənfi ola bilən virtual_quote_reserves-i və eyni koinin niyə bir neçə hovuzu ola biləcəyini oxuyur.
- Dərc edilib
- Yenilənib
- Redaksiya məsuliyyəti
- Meme Atlas AZ
Pump.fun koininin bonding curve-ü satılıb qurtaranda ticarət PumpSwap-a keçir. Çoxları bu mərhələdə hovuzun xəzinə hesabını açıb oradakı SOL-u hovuzun likvidliyi kimi götürür. Rəsmi sənədin indiki mətninə görə belə oxumaq səhvdir.
Bu mətn pump.fun-un GitHub-da açıq saxladığı proqram sənədlərinə əsaslanır (pump-fun/pump-public-docs deposu, oxunan vaxt son commit 2026-10-13 tarixli idi). Əyri mərhələsinin necə oxunduğu ayrıca yazıdadır: Bonding curve pump.fun. İngiliscə sitatlar orijinaldır, izahlar bu mətnin öz ifadəsidir. «Bu mətnin izahı» kimi qeyd olunan hissələrdə sənədin bəndlərini özümüz birləşdirmişik.
PumpSwap nədir: sabit hasil AMM
Sənəd proqramı bir cümlə ilə təqdim edir: "PumpSwap program is a constant-product AMM". Proqramın ünvanı `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA`-dir, Mainnet və Devnet-də eynidir.
Proqramın yalnız bir `GlobalConfig` hesabı var, ünvanı `["global_config"]` toxumlarından törəyir. Orada `admin` sahəsi saxlanılır; sənədə görə bu, "the pubkey authorized to update the `GlobalConfig` account". İdarəetmə əmrlərindən `disable` həmin ünvana "globally disable any Pump Swap operation" imkanı verir. Tədqiqat qeydində bunu açıq yazmaq lazımdır: hovuzun dəyişdirilə bilən ümumi parametrləri var və dəyişmə hüququ bir ünvandadır.
Alış-satış komissiyaları da `GlobalConfig`-də, basis points ilə ölçülən iki sahədədir; `admin` onları `update_fee_config` ilə dəyişə bilər. Bu mətn komissiya rəqəmlərini köçürmür, oxunduğu andakı hesab məzmunu əsas götürülməlidir.
Pool hesabı: ünvan haradan gəlir, hər sahə nədir
Hər hovuz bir `Pool` hesabıdır və ünvanı `["pool", index, creator, baseMint, quoteMint]` toxumlarından törəyir. Sənədin göstərdiyi əsas sahələr:
- `base_mint`, `quote_mint`: hovuzdakı iki aktivin mint ünvanları. Sənəddəki nümunə hovuzda `quote_mint` `So11111111111111111111111111111111111111112`-dir.
- `lp_mint`: LP tokeninin mint-i.
- `pool_base_token_account`, `pool_quote_token_account`: hovuzun iki aktivi saxladığı əlaqəli token hesabları, yəni xəzinələr.
- `lp_supply`: LP təklifi; tərifi aşağıdadır.
- `coin_creator`: koin yaradıcısının komissiyasının toplandığı ünvan; bu komissiyadan əvvəl yaranmış hovuzlarda `Pubkey::default()`-dur.
- `virtual_quote_reserves`: tipi `i128`-dir, işarəlidir. Bu mətnin əsas mövzusu budur.
- Bir neçə bayraq: `is_mayhem_mode`, `is_cashback_coin`, `is_holder_reward`.
Hesabın sonuna sonradan əlavə olunan sahələr barədə sənəd xəbərdarlıq edir: "Pools written before an appended field existed are shorter than the current layout; read the missing trailing fields as `0` / `false`." Eyni proqramın köhnə və yeni hovuzlarının hesab uzunluğu fərqli ola bilər.
Eyni koinin bir neçə hovuzu ola bilər
Toxumların içində `index` və `creator` var. `create_pool` haqqında sənəd yazır: "The `index` allows the same `creator` to create multiple pools for the same `(baseMint, quoteMint)` pair." Yəni eyni cütlük üçün müxtəlif yaradıcılar, ya da eyni yaradıcı fərqli index ilə ayrıca hovuz aça bilər.
Bonding curve-dən köçən hovuzun index-i sabitdir: sənədə görə Pump proqramının `migrate` əmri ilə yaranan hovuzlar index 0 istifadə edir. Aqreqatorda bir koinin bir neçə PumpSwap hovuzu görünürsə, əvvəl hər hovuz hesabının `index` və `creator` sahələrini oxuyun, sonra hansının köçmədən yarandığını müəyyən edin. Bizim tövsiyəmiz: qeyddə hovuz ünvanını həmişə bu iki sahə ilə birlikdə yazın, sadəcə «PumpSwap hovuzu» yazmayın.
Qiymət effective quote reserves üzərində hesablanır
Sənəddə qiymət qaydasına ayrıca bölmə ayrılıb: "Buys and sells are priced on the pool's effective quote reserves, which are the raw quote-vault token balance plus `Pool::virtual_quote_reserves`":
```text effective_quote_reserves = pool_quote_token_account.amount + Pool::virtual_quote_reserves ```
Ardınca birbaşa tələb gəlir: "Use `effective_quote_reserves` (not the raw `pool_quote_token_account.amount`) wherever you quote, price, or index a pool, for both `buy` and `sell`." Base tərəfdə belə düzəliş yoxdur; sənədə görə base ehtiyatı hələ də `pool_base_token_account.amount`-dur.
Sənəddə iki fərqli ifadə: 0, yoxsa mənfi
Burada bir uyğunsuzluq var. PumpSwap-ın əsas sənədi `Pool` sahələrini izah edərkən yazır ki, `virtual_quote_reserves` "is `0` on all pools today, so effective quote reserves currently equal the raw vault balance". Bu fayl depoda sonuncu dəfə 2026-09-12-də dəyişdirilib.
Ayrıca sənəd olan «Negative Virtual Quote Reserves» isə belə başlayır: "Starting September 30, `Pool::virtual_quote_reserves` on PumpSwap pools can be negative." Bu fayl depoya 2026-09-29-da əlavə olunub, 2026-10-07-də yenidən dəyişdirilib.
Hər ikisi rəsmi sənəddir və zaman ardıcıllığı aydındır: «hamısında 0-dır» cümləsi dəyişiklikdən əvvəl yazılıb və yenilənməyib. Bu mətn daha yeni sənədə əsaslanır, köhnə cümləni isə burada olduğu kimi saxlayır ki, köhnə inteqrasiyaların bu sahəni niyə 0 kimi sabit yaza biləcəyi aydın olsun.
Niyə mənfi olur: hələ süpürülməmiş komissiyalar (bu mətnin izahı)
Səbəbi «Virtual Quote Reserves and Fees Kept in the Pool» sənədi izah edir. PumpSwap-ın v2 ticarət əmrləri (`buy_v2`, `buy_exact_quote_in_v2`, `sell_v2`) və `multi_hop_swap` protokol komissiyasını və yaradıcı komissiyasını hər əməliyyatda ödəmir, əvvəlcə hovuzun quote xəzinəsində saxlayır. Sənədin mövqeyi aydındır: "That money is not liquidity. It must not change the price."
Buna görə hər dəfə komissiya saxlananda proqram eyni məbləği `virtual_quote_reserves`-dən çıxır; süpürmə (sweep) komissiyanı ödəyəndə isə geri əlavə edir. Sənədin verdiyi əlaqə:
```text pool_quote_token_account.amount = real_quote_reserves + Pool::protocol_fees + Pool::creator_fees Pool::virtual_quote_reserves = boost_reserves - Pool::protocol_fees - Pool::creator_fees ```
İki ifadəni toplayanda gözləyən komissiyalar bir-birini silir və effective quote reserves real likvidlik üstəgəl boost-a bərabər olur. Simvolla göstərək (bu mətnin izahı; F xəzinədə qalan, hələ süpürülməmiş komissiyadır, hovuzda boost yoxdur):
- Əməliyyatdan əvvəl: xəzinə 100 SOL, `virtual_quote_reserves` 0, effective 100.
- v2 alışı ilə 10 SOL daxil olur: xəzinə 110, `virtual_quote_reserves` −F, effective 110 − F.
- Süpürmə F-i ödəyir: xəzinə 110 − F, `virtual_quote_reserves` yenidən 0, effective yenə 110 − F.
Süpürmədən əvvəl və sonra qiymət eynidir, çünki effective quote reserves F-i heç vaxt saymayıb. Sənədin bu xəbərdarlığının mənası da budur: "Do not read the raw vault balance as liquidity. It now includes fees waiting to be swept."
Sənəd iki zəmanət də verir: `pool_quote_token_account.amount + virtual_quote_reserves` daşmır və mənfi olmur. Öz indeksatorunu yazanlar üçün sənəd bu dəyəri işarəli sütunda saxlamağı tələb edir, çünki "a `u64` column will reject or corrupt negative values".
Asanlıqla səhv salınan daha bir məqam: hovuzun boosted olub-olmaması. Sənədə görə şərt `virtual_quote_reserves + protocol_fees + creator_fees` cəminin 0 olmamasıdır, "not when the stored field alone is not `0`". Yalnız `virtual_quote_reserves` sıfır deyil deyə hovuzu boosted saymaq gözləyən komissiyanı boost ilə qarışdırmaq deməkdir.
Hesabı sorğulamadan: hovuzun vəziyyətini ticarət hadisələrindən bərpa etmək
Öz indeksatorunu yazan və hər əməliyyatda hovuz hesabını oxumaq istəməyənlər üçün sənəd başqa yol göstərir: "Indexers: the `BuyEvent` and `SellEvent` logs include `virtual_quote_reserves` (appended field), so effective quote reserves can be reconstructed directly from the event stream." Hər alış-satış hadisəsində həmin andakı `virtual_quote_reserves` var; onu xəzinə balansına əlavə etməklə qiymət üçün işlənən ehtiyatı bərpa etmək olur.
Komissiya sənədi daha bir neçə sahə əlavə edir: ticarət hadisələri işarəli `virtual_quote_reserves`, `protocol_fee`, `coin_creator_fee` və `creator_fee_unclaimed` sahələrini bildirir; hər süpürmə ödənişi üçün isə ayrıca `SweepPoolFeeEvent` var. Hovuzun boosted olub-olmamasını da özünüz hesablamalı deyilsiniz: `BuyEvent` və `SellEvent` bunu `can_boost` kimi daşıyır. Bizim tövsiyəmiz: hər iki üsulu saxlayın; hadisə axını zaman sırasını izləmək, hesab oxunuşu isə müəyyən anda tutuşdurmaq üçündür. İkisi uyğun gəlmirsə, əvvəl arada süpürmə hadisəsinin buraxılıb-buraxılmadığına baxın.
Depozit və çıxarış: LP iki aktivə qayıdır
Hovuzun likvidliyi depozit (deposit) və çıxarış (withdraw) əmrləri ilə dəyişir. Sənədə görə `deposit` "allows a `user` to deposit at most `maxBaseIn` and `maxQuoteIn` tokens into the `pool` in order to get exactly `lpTokenOut` tokens in return"; `withdraw` isə dəqiq `lpTokenIn` qədər LP yandırıb ən azı `minBaseOut` və `minQuoteOut` qaytarır. Hər iki əmrdə LP miqdarı dəqiq verilir, iki aktiv üçün isə yuxarı və aşağı hədd qoyulur; alış-satış əmrlərində sürüşməyə qarşı qoyulan həddlərlə eyni məntiqdir.
Sənəd ayrıca yazır: "No fees are charged on `deposit` / `withdraw` instruction"; komissiya yalnız alış-satışda tutulur. Buna görə xəzinə balansı birdən artıb-azalırsa və uyğun alış-satış hadisəsi tapılmırsa, əvvəl həmin vaxt aralığında depozit və ya çıxarış olub-olmadığını yoxlayın, sonra süpürmə ehtimalına baxın.
lp_supply yandırılmanı çıxmır
`lp_supply` belə təyin olunur: "the total supply of the `lp_mint` without burns and lock-ups". Sənədin nümunəsinə görə kimsə likvidlik qoyub sonra LP tokenini özü yandırarsa, `Pool::lp_supply` əvvəlki təklifi göstərməkdə davam edir; bununla hovuz LP-nin istifadəçi tərəfindən birbaşa yandırıldığını `withdraw` əmri ilə yandırılandan ayırır.
LP-nin yandırılıb-yandırılmadığını yoxlamaq üçün `lp_mint`-in zəncirdəki təklifini oxumaq lazımdır, `lp_supply` sahəsini yox.
Sonuncu alış: hovuz açılmamış ticarət
«Synthetic Migration» sənədi yeni bir qayda yazır. v3 alış əmrləri (`buy_v3`, `buy_exact_quote_in_v3`) və ya `multi_hop_swap`-ın əyri addımı ilə "the buy that empties the curve has no max size": bu alış əvvəl əyridə qalanların hamısını alır, əyri tamamlanır, artıq hissə isə köçmədən sonra hovuzun tətbiq edəcəyi qiymətlə, PumpSwap hovuzuna gedəcək tokenlərdən alınır. Sənəd bunu synthetic migration adlandırır: "the buy trades against the pool before the pool exists".
Bundan sonra `migrate_v2` həmin alışın qoyub getdiyi ehtiyatlarla hovuz yaradır; sənəd yazır: "The pool opens at the price where the buy stopped." Hovuzu oxuyan üçün bunun iki nəticəsi var:
- Hovuz açılanda ilk ehtiyatlar artıq bu alışla dəyişmiş ola bilər. Sənədə görə ardıcıl olaraq `TradeEvent`, `CompleteEvent` və `PostCompleteBuyEvent` buraxılır; sonuncuda hovuzun açılış ehtiyatları `pool_base_reserves_after` və `pool_quote_reserves_after` kimi yazılır.
- Alıcının bu əməliyyatda aldığı ümumi miqdar sənədə görə `TradeEvent` və `PostCompleteBuyEvent` miqdarlarının cəmidir; yalnız birinci hadisəyə baxsanız azını sayarsınız.
Bu, hər koinə aid deyil. Sənədə görə mayhem rejimli koinlərdə synthetic migration yoxdur, köhnə `buy`, `buy_v2`, `buy_exact_quote_in_v2` əmrləri isə əvvəlki kimi işləyir.
Tədqiqat qeydində hansı xanalar olmalıdır
- Hovuz ünvanı, `index`, `creator`, `base_mint`, `quote_mint`. Bir neçə hovuz varsa, index-i 0 olanı qeyd edin.
- Oxunma vaxtı və həmin andakı `pool_base_token_account.amount`, `pool_quote_token_account.amount`, `virtual_quote_reserves` (işarəsi ilə).
- Effective quote reserves ilə hesablanan quote tərəfi ayrıca xanada; xəzinə balansı ilə qarışdırmayın, çünki balansın içində süpürülməyi gözləyən komissiyalar var.
- Boost barədə nəticə çıxarmaq üçün `protocol_fees` və `creator_fees`-i də yazın, üç sahəyə birlikdə baxın.
- LP: `lp_mint`-in zəncirdəki təklifi `lp_supply`-dən ayrı yazılsın.
- Sənəd versiyası: deponun commit tarixi. Bu yazının istinad etdiyi iki sənəd arasında bir cümlə sinxron deyil; sonradan yenidən oxuyanda əvvəlcə commit tarixçəsinə baxın.
Hovuz dərinliyinin necə oxunduğu üçün bax: DEX likvidlik dərinliyi; sahədən dəyər alınmayanda qeydin necə aparılacağı üçün: null və ya tapılmadı.
Bu səhifə hovuz hesabının və sənəd bəndlərinin necə oxunduğunu göstərir; PumpSwap-dakı heç bir hovuz və ya koin barədə hökm vermir və ticarət tövsiyəsi deyil.
Məzmun mənbələri
- pump-fun/pump-public-docs — PumpSwap (Pump AMM) programNaşir: pump.funBaxış tarixi:
- pump-fun/pump-public-docs — Negative Virtual Quote ReservesNaşir: pump.funBaxış tarixi:
- pump-fun/pump-public-docs — Virtual Quote Reserves and Fees Kept in the PoolNaşir: pump.funBaxış tarixi:
- pump-fun/pump-public-docs — Synthetic MigrationNaşir: pump.funBaxış tarixi: