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