token-swap: later deposits can dilute LPs after fee growth
Los mantenedores suelen responder en 1 día
@Bismithblde ya está trabajando en esto.
Desde el 5/11/2026.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- rust
- Área
- blockchain, databases
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Rust
- Estrellas
- 1.4k
- Forks
- 559
- Merge medio
- 20 h 9 min
- PR fusionados (30 d)
- 17
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de solana-foundation/program-examples
-
Migrate deprecated .accounts() to .accountsPartial() in Anchor testsQuizá libre de nuevo @ankittiwari-04 la tomó hace 24 días y no hay ningún pull request abierto. Abiertoaccepted
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
solana-foundation/program-examples#747 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
basics/pda-rent-payer: create_new_account has no caller check — worth a note for people copying it?Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
solana-foundation/program-examples#671 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
native/pinocchio examples: deploy script points at program.so, which the build never producesQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertoaccepted
Dificultad 1/5 Menos de una hora Aptitud para principiantes 35/100
solana-foundation/program-examples#787 ·
Los mantenedores suelen responder en 1 día
-
token-2022/cpi-guard: add a Pinocchio versionQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertoaccepted
Dificultad 3/5 1-2 días Aptitud para principiantes 20/100
solana-foundation/program-examples#786 ·
Los mantenedores suelen responder en 1 día
-
token-2022/memo-transfer: add a Pinocchio versionQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertoaccepted
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
solana-foundation/program-examples#785 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de solana-foundation/program-examples
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
RustCrypto/utils#1597 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Non-`main` default branchesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
max-sixty/worktrunk#4727 · 7 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
follow-up
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
carrick-sh/carrick#1859 ·
Los mantenedores suelen responder en 1 día