token-swap: later deposits can dilute LPs after fee growth
I maintainer di solito rispondono entro 1 giorno
@Bismithblde ci sta già lavorando.
Dal 5/11/2026.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- rust
- Ambito
- blockchain, databases
Direzione di ricerca
Find the token-swap example and its existing LiteSVM harness, then read the deposit share calculation and the test setup. Reproduce the sequence with separate liquidity providers and compare the second provider’s minted shares against the proportional limit. Done means later deposits use the stated proportional calculation, zero-share deposits are rejected, and a LiteSVM regression test covers the dilution case.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
The Anchor token-swap example calculates LP shares as sqrt(amount_a * amount_b) for every deposit. Once swap fees increase the reserves, that calculation ignores the existing LP supply and can give a later depositor too large a share of the pool, diluting existing providers.
Reproduction
In the existing LiteSVM harness:
- Create a pool with a 5% swap fee and deposit 4,000,000 units of each token.
- Swap 2,000,000 units of token A for B, growing the pool's reserves through the fee.
- Have a second provider deposit up to 1,000,000 units of each token.
The second provider receives 672,292 LP tokens. Based on the actual deposited amounts and the effective existing supply (minted LP supply plus the locked minimum), a proportional deposit supports at most 666,665 LP tokens. The difference reduces the first provider's share of the reserves.
Suggested fix
Keep the geometric-mean calculation for the first deposit. For later deposits, calculate proportional shares from each actual deposited amount and its pre-deposit reserve, using the effective LP supply, and mint the smaller result rounded down. Reject deposits that mint no shares. Add a LiteSVM regression test using separate liquidity providers.
This concerns the educational example's accounting, not a claim about a deployed protocol. I have a tested patch and would like to contribute it.
- Lingua principale
- Rust
- Stelle
- 1.4k
- Fork
- 559
- Merge medio
- 20h 9m
- PR unite (30g)
- 17
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di solana-foundation/program-examples
-
Migrate deprecated .accounts() to .accountsPartial() in Anchor testsForse di nuovo libera @ankittiwari-04 l’ha presa 24 giorni fa e non c’è nessuna pull request aperta. Apertaaccepted
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
solana-foundation/program-examples#747 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
basics/pda-rent-payer: create_new_account has no caller check — worth a note for people copying it?Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
solana-foundation/program-examples#671 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
native/pinocchio examples: deploy script points at program.so, which the build never producesForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertaaccepted
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 35/100
solana-foundation/program-examples#787 ·
I maintainer di solito rispondono entro 1 giorno
-
token-2022/cpi-guard: add a Pinocchio versionForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertaaccepted
Difficoltà 3/5 1-2 giorni Idoneità per principianti 20/100
solana-foundation/program-examples#786 ·
I maintainer di solito rispondono entro 1 giorno
-
token-2022/memo-transfer: add a Pinocchio versionForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertaaccepted
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
solana-foundation/program-examples#785 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di solana-foundation/program-examples
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
RustCrypto/utils#1597 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Non-`main` default branchesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
max-sixty/worktrunk#4727 · 7 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
follow-up
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
carrick-sh/carrick#1859 ·
I maintainer di solito rispondono entro 1 giorno