The example anchor implementation for solana-swap
Last updated May 21, 2026
13
Stars
5
Forks
0
Issues
0
Stars/day
Attention Score
5
Language breakdown
Rust 75.9%
TypeScript 24.1%
โธ Files
click to expand
README
anchor-liquidity-pool
This is the example anchor implementation for solana-swap.
- The curve is always
ConstantProductin this implementation. - The fee receiver is always Admin.
Run
Build the solana program
export ADMIN_PUBKEY=solana address npm run build
Run validator on the localnet
npm run validator
Get 10 SOL by airdrop and deploy program for localnet.
npm run deploy
Run the test(Create Pool / Deposit / Withdrow / Swap).
npm run test
Initialize
sequenceDiagram
participant Admin
participant PoolManager as -PDA- <br/> Pool Manager
PoolManager ->>+ Admin : mint 1000000000 LP Token
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ (index) โ name โ address โ owner โ amount โ
โโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 0 โ 'A for UserA' โ 'J8a4ENEMgUHHfAz9VH2BuApK6mS8mjcUZjHeBypKN1KE' โ 'EwznK8BuBdn918if9jeG3oBomZTpRi8ZHxcCeGXokGaL' โ 1000000 โ
โ 1 โ 'B for UserA' โ 'GmRp3YGmWFc2or9BkBuiANS9GZ7BEqxrg1ZPpCYvRqc2' โ 'EwznK8BuBdn918if9jeG3oBomZTpRi8ZHxcCeGXokGaL' โ 1000000 โ
โ 2 โ 'LP for UserA' โ '7BBxTGPFKxLmKVj6LV3yE6ojG9kFzRpFnunFxrsT7sW6' โ 'EwznK8BuBdn918if9jeG3oBomZTpRi8ZHxcCeGXokGaL' โ 0 โ
โ 3 โ 'A for PDA ' โ 'BVJohxH1hogZdcYBrTMuo7EVk9TSrjdGhrya4zzrGC7p' โ 'DtW9VUU8AtGSyrAo2kMH2rvJhjz97oLh5qfg1Ckubt5N' โ 1000000 โ
โ 4 โ 'B for PDA ' โ '9HRgCPn4nj415xayTHhLFqQrpWePPzewEmAqbUBDbtgZ' โ 'DtW9VUU8AtGSyrAo2kMH2rvJhjz97oLh5qfg1Ckubt5N' โ 1000000 โ
โ 5 โ 'LP for Admin' โ '7XAnDxYcCRRSKewLdMnqtrwhjnbUd2Kvq5FfG8xMdRsp' โ '9HKfUqNdHdgn4gYMjCrSoLAmY5USgwpfBSPdeW573ycc' โ 1000000000 โ
โโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
DepositAll
sequenceDiagram
participant PoolManager as -PDA- <br/> Pool Manager
participant Depositor
Depositor ->>+ PoolManager : send 10000 token A
Depositor ->>+ PoolManager : send 10000 token B
PoolManager ->>+ Depositor : mint 10000000 LP Token
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ (index) โ name โ address โ amount โ
โโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 0 โ 'A for UserA' โ 'J8a4ENEMgUHHfAz9VH2BuApK6mS8mjcUZjHeBypKN1KE' โ 990000 โ
โ 1 โ 'B for UserA' โ 'GmRp3YGmWFc2or9BkBuiANS9GZ7BEqxrg1ZPpCYvRqc2' โ 990000 โ
โ 2 โ 'LP for UserA' โ '7BBxTGPFKxLmKVj6LV3yE6ojG9kFzRpFnunFxrsT7sW6' โ 10000000 โ
โ 3 โ 'A for PDA ' โ 'BVJohxH1hogZdcYBrTMuo7EVk9TSrjdGhrya4zzrGC7p' โ 1010000 โ
โ 4 โ 'B for PDA ' โ '9HRgCPn4nj415xayTHhLFqQrpWePPzewEmAqbUBDbtgZ' โ 1010000 โ
โ 5 โ 'LP for Admin' โ '7XAnDxYcCRRSKewLdMnqtrwhjnbUd2Kvq5FfG8xMdRsp' โ 1000000000 โ
โโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
DepositSingle(Deposit Token A)
sequenceDiagram
participant PoolManager as -PDA- <br/> Pool Manager
participant Depositor
Depositor ->>+ PoolManager : send 100000 token A
PoolManager ->>+ Depositor : mint 48760478 LP Token
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ (index) โ name โ address โ amount โ
โโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 0 โ 'A for UserA' โ 'J8a4ENEMgUHHfAz9VH2BuApK6mS8mjcUZjHeBypKN1KE' โ 890000 โ
โ 1 โ 'B for UserA' โ 'GmRp3YGmWFc2or9BkBuiANS9GZ7BEqxrg1ZPpCYvRqc2' โ 990000 โ
โ 2 โ 'LP for UserA' โ '7BBxTGPFKxLmKVj6LV3yE6ojG9kFzRpFnunFxrsT7sW6' โ 58760478 โ
โ 3 โ 'A for PDA ' โ 'BVJohxH1hogZdcYBrTMuo7EVk9TSrjdGhrya4zzrGC7p' โ 1110000 โ
โ 4 โ 'B for PDA ' โ '9HRgCPn4nj415xayTHhLFqQrpWePPzewEmAqbUBDbtgZ' โ 1010000 โ
โ 5 โ 'LP for Admin' โ '7XAnDxYcCRRSKewLdMnqtrwhjnbUd2Kvq5FfG8xMdRsp' โ 1000000000 โ
โโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
WithdrawAll
sequenceDiagram
participant Admin
participant PoolManager as -PDA- <br/> Pool Manager
participant Depositor
PoolManager ->>+ Depositor : send 104 token A
PoolManager ->>+ Depositor : send 95 token B
PoolManager ->>+ Depositor : burn 100000 LP Token
Depositor ->>+ Admin : send 0 LP Token as fee
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ (index) โ name โ address โ amount โ
โโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 0 โ 'A for UserA' โ 'J8a4ENEMgUHHfAz9VH2BuApK6mS8mjcUZjHeBypKN1KE' โ 890104 โ
โ 1 โ 'B for UserA' โ 'GmRp3YGmWFc2or9BkBuiANS9GZ7BEqxrg1ZPpCYvRqc2' โ 990095 โ
โ 2 โ 'LP for UserA' โ '7BBxTGPFKxLmKVj6LV3yE6ojG9kFzRpFnunFxrsT7sW6' โ 58660478 โ
โ 3 โ 'A for PDA ' โ 'BVJohxH1hogZdcYBrTMuo7EVk9TSrjdGhrya4zzrGC7p' โ 1109896 โ
โ 4 โ 'B for PDA ' โ '9HRgCPn4nj415xayTHhLFqQrpWePPzewEmAqbUBDbtgZ' โ 1009905 โ
โ 5 โ 'LP for Admin' โ '7XAnDxYcCRRSKewLdMnqtrwhjnbUd2Kvq5FfG8xMdRsp' โ 1000000000 โ
โโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
WithdrawSingle(Withdraw Token A)
sequenceDiagram
participant Admin
participant PoolManager as -PDA- <br/> Pool Manager
participant Depositor
PoolManager ->>+ Depositor : send 100000 token A
PoolManager ->>+ Depositor : burn 48754928 LP Token
Depositor ->>+ Admin : send 0 LP Token as fee
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ (index) โ name โ address โ amount โ
โโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 0 โ 'A for UserA' โ 'J8a4ENEMgUHHfAz9VH2BuApK6mS8mjcUZjHeBypKN1KE' โ 990104 โ
โ 1 โ 'B for UserA' โ 'GmRp3YGmWFc2or9BkBuiANS9GZ7BEqxrg1ZPpCYvRqc2' โ 990095 โ
โ 2 โ 'LP for UserA' โ '7BBxTGPFKxLmKVj6LV3yE6ojG9kFzRpFnunFxrsT7sW6' โ 9905550 โ
โ 3 โ 'A for PDA ' โ 'BVJohxH1hogZdcYBrTMuo7EVk9TSrjdGhrya4zzrGC7p' โ 1009896 โ
โ 4 โ 'B for PDA ' โ '9HRgCPn4nj415xayTHhLFqQrpWePPzewEmAqbUBDbtgZ' โ 1009905 โ
โ 5 โ 'LP for Admin' โ '7XAnDxYcCRRSKewLdMnqtrwhjnbUd2Kvq5FfG8xMdRsp' โ 1000000000 โ
โโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
Swap 1 (Token A -> Token B)
sequenceDiagram
participant Admin
participant PoolManager as -PDA- <br/> Pool Manager
participant Swapper
Swapper ->>+ PoolManager : send 1999995 token A
PoolManager ->>+ Swapper : send 670379 token B
PoolManager ->>+ Admin : mint 167611 LP Token as fee
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ (index) โ name โ address โ amount โ
โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 0 โ 'A for userA' โ 'J8a4ENEMgUHHfAz9VH2BuApK6mS8mjcUZjHeBypKN1KE' โ 990104 โ
โ 1 โ 'B for userA' โ 'GmRp3YGmWFc2or9BkBuiANS9GZ7BEqxrg1ZPpCYvRqc2' โ 990095 โ
โ 2 โ 'LP for userA' โ '7BBxTGPFKxLmKVj6LV3yE6ojG9kFzRpFnunFxrsT7sW6' โ 9905550 โ
โ 3 โ 'A for PDA ' โ 'BVJohxH1hogZdcYBrTMuo7EVk9TSrjdGhrya4zzrGC7p' โ 3009891 โ
โ 4 โ 'B for PDA ' โ '9HRgCPn4nj415xayTHhLFqQrpWePPzewEmAqbUBDbtgZ' โ 339526 โ
โ 5 โ 'LP for Admin' โ '7XAnDxYcCRRSKewLdMnqtrwhjnbUd2Kvq5FfG8xMdRsp' โ 1000167611 โ
โ 6 โ 'A for swapper' โ '7NCo7QQyP1a1PSQMZZCFmxjYnAaWguX7r7MkuQcWAYu2' โ 8000005 โ
โ 7 โ 'B for swapper' โ 'AKUKWMmVPSjiVymMPshfd9HLhtKdDDg5CjmKQ7YePJfe' โ 10670379 โ
โโโโโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
Swap 2 (Token A -> Token B)
sequenceDiagram
participant Admin
participant PoolManager as -PDA- <br/> Pool Manager
participant Swapper
Swapper ->>+ PoolManager : send 1999984 token A
PoolManager ->>+ Swapper : send 135297 token B
PoolManager ->>+ Admin : mint 100713 LP Token as fee
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ (index) โ name โ address โ amount โ
โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 0 โ 'A for userA' โ 'J8a4ENEMgUHHfAz9VH2BuApK6mS8mjcUZjHeBypKN1KE' โ 990104 โ
โ 1 โ 'B for userA' โ 'GmRp3YGmWFc2or9BkBuiANS9GZ7BEqxrg1ZPpCYvRqc2' โ 990095 โ
โ 2 โ 'LP for userA' โ '7BBxTGPFKxLmKVj6LV3yE6ojG9kFzRpFnunFxrsT7sW6' โ 9905550 โ
โ 3 โ 'A for PDA ' โ 'BVJohxH1hogZdcYBrTMuo7EVk9TSrjdGhrya4zzrGC7p' โ 5009875 โ
โ 4 โ 'B for PDA ' โ '9HRgCPn4nj415xayTHhLFqQrpWePPzewEmAqbUBDbtgZ' โ 204229 โ
โ 5 โ 'LP for Admin' โ '7XAnDxYcCRRSKewLdMnqtrwhjnbUd2Kvq5FfG8xMdRsp' โ 1000268324 โ
โ 6 โ 'A for swapper' โ '7NCo7QQyP1a1PSQMZZCFmxjYnAaWguX7r7MkuQcWAYu2' โ 6000021 โ
โ 7 โ 'B for swapper' โ 'AKUKWMmVPSjiVymMPshfd9HLhtKdDDg5CjmKQ7YePJfe' โ 10805676 โ
โโโโโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
Swap 3 (Token A -> Token B)
sequenceDiagram
participant Admin
participant PoolManager as -PDA- <br/> Pool Manager
participant Swapper
Swapper ->>+ PoolManager : send 1999957 token A
PoolManager ->>+ Swapper : send 58143 token B
PoolManager ->>+ Admin : mint 71985 LP Token as fee
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ (index) โ name โ address โ amount โ
โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 0 โ 'A for userA' โ 'J8a4ENEMgUHHfAz9VH2BuApK6mS8mjcUZjHeBypKN1KE' โ 990104 โ
โ 1 โ 'B for userA' โ 'GmRp3YGmWFc2or9BkBuiANS9GZ7BEqxrg1ZPpCYvRqc2' โ 990095 โ
โ 2 โ 'LP for userA' โ '7BBxTGPFKxLmKVj6LV3yE6ojG9kFzRpFnunFxrsT7sW6' โ 9905550 โ
โ 3 โ 'A for PDA ' โ 'BVJohxH1hogZdcYBrTMuo7EVk9TSrjdGhrya4zzrGC7p' โ 7009832 โ
โ 4 โ 'B for PDA ' โ '9HRgCPn4nj415xayTHhLFqQrpWePPzewEmAqbUBDbtgZ' โ 146086 โ
โ 5 โ 'LP for Admin' โ '7XAnDxYcCRRSKewLdMnqtrwhjnbUd2Kvq5FfG8xMdRsp' โ 1000340309 โ
โ 6 โ 'A for swapper' โ '7NCo7QQyP1a1PSQMZZCFmxjYnAaWguX7r7MkuQcWAYu2' โ 4000064 โ
โ 7 โ 'B for swapper' โ 'AKUKWMmVPSjiVymMPshfd9HLhtKdDDg5CjmKQ7YePJfe' โ 10863819 โ
โโโโโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
Swap 4 (Token A -> Token B)
sequenceDiagram
participant Admin
participant PoolManager as -PDA- <br/> Pool Manager
participant Swapper
Swapper ->>+ PoolManager : send 1999970 token A
PoolManager ->>+ Swapper : send 32352 token B
PoolManager ->>+ Admin : mint 56010 LP Token as fee
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ (index) โ name โ address โ amount โ
โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 0 โ 'A for userA' โ 'J8a4ENEMgUHHfAz9VH2BuApK6mS8mjcUZjHeBypKN1KE' โ 990104 โ
โ 1 โ 'B for userA' โ 'GmRp3YGmWFc2or9BkBuiANS9GZ7BEqxrg1ZPpCYvRqc2' โ 990095 โ
โ 2 โ 'LP for userA' โ '7BBxTGPFKxLmKVj6LV3yE6ojG9kFzRpFnunFxrsT7sW6' โ 9905550 โ
โ 3 โ 'A for PDA ' โ 'BVJohxH1hogZdcYBrTMuo7EVk9TSrjdGhrya4zzrGC7p' โ 9009802 โ
โ 4 โ 'B for PDA ' โ '9HRgCPn4nj415xayTHhLFqQrpWePPzewEmAqbUBDbtgZ' โ 113734 โ
โ 5 โ 'LP for Admin' โ '7XAnDxYcCRRSKewLdMnqtrwhjnbUd2Kvq5FfG8xMdRsp' โ 1000396319 โ
โ 6 โ 'A for swapper' โ '7NCo7QQyP1a1PSQMZZCFmxjYnAaWguX7r7MkuQcWAYu2' โ 2000094 โ
โ 7 โ 'B for swapper' โ 'AKUKWMmVPSjiVymMPshfd9HLhtKdDDg5CjmKQ7YePJfe' โ 10896171 โ
โโโโโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
Relation
flowchart LR
Admin[-Account- <br/> Admin]
PoolManager[-PDA- <br/> Pool Manager]
Depositor[-Account- <br/> Depositor]
Swapper[-Account- <br/> Swapper]
SwapPair[-Account- <br/> SwapPair]
ThisProgram[-Program- <br/> This program]
A[-Mint- <br/> A Token]
B[-Mint- <br/> B Token]
LP[-Mint- <br/> LP Token]
DepositorTokenA[-TokenAccount- <br/> A for Depositor]
DepositorTokenB[-TokenAccount- <br/> B for Deposit0r]
DepositorTokenLP[-TokenAccount- <br/> LP for Depositor]
PoolManagerTokenA[-TokenAccount- <br/> A for Pool Manager]
PoolManagerTokenB[-TokenAccount- <br/> B for Pool Manager]
AdminTokenA[-TokenAccount- <br/> A for Admin]
AdminTokenB[-TokenAccount- <br/> A for Admin]
AdminTokenLP[-TokenAccount- <br/> LP for Admin]
SwapperTokenA[-TokenAccount- <br/> A for Swapper]
SwapperTokenB[-TokenAccount- <br/> A for Swapper]
A -- authority --> Admin
B -- authority --> Admin
LP -- authority --> PoolManager
DepositorTokenA -- mint --> A
DepositorTokenB -- mint --> B
DepositorTokenLP -- mint --> LP
DepositorTokenA -- owner --> Depositor
DepositorTokenB -- owner --> Depositor
DepositorTokenLP -- owner --> Depositor
PoolManagerTokenA -- mint --> A
PoolManagerTokenB -- mint --> B
PoolManagerTokenLP -- mint --> LP
PoolManagerTokenA -- owner --> PoolManager
PoolManagerTokenB -- owner --> PoolManager
AdminTokenA -- mint --> A
AdminTokenB -- mint --> B
AdminTokenLP -- mint --> LP
AdminTokenA -- owner --> Admin
AdminTokenB -- owner --> Admin
AdminTokenLP -- owner --> Admin
SwapperTokenA -- mint --> A
SwapperTokenB -- mint --> B
SwapperTokenA -- owner --> Swapper
SwapperTokenB -- owner --> Swapper
SwapPair -- owner --> ThisProgram๐ More in this category