Create Swap Pool
Command Line instruction how create a Swap Pool
Required environment Ubuntu 20.04. Other Linux distributives and Mac should work too, but it can require additional steps to prepare the machine. We don’t recommend using Windows for this procedure.
git clone https://github.com/soldex-ai/soldex-token-swap-SC.git
sudo apt install nodejs
sudo apt-get install libudev-dev cargo
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
sh -c "$(curl -sSfL https://release.solana.com/stable/install)"
cargo install spl-token-cli
solana-keygen new --outfile ~/.config/solana/mainnet.json
Passphrase can be empty. Non-empty passphrase store in a safe place! Without passphrase, you will not be able to recover private-key (mainnet.json) from seed!
You will get:
- path to ID:
~/.config/solana/mainnet.json
- pubkey:
A8wk...Xu
[you can see it by typingsolana-keygen pubkey
] - seed phrase to recover your new keypair:
throw garden ... low response
. Store seed phrase in a safe place!
Next, say Solana to use your generated key and set network to mainnet
solana config set --keypair ~/.config/solana/mainnet.json --url https://api.mainnet.solana.com
Run command:
solana config get
You should receive:
Config File: </path_to>/.config/solana/cli/config.yml
RPC URL: https://api.mainnet.solana.com
WebSocket URL: wss://api.mainnet.solana.com/ (computed)
Keypair Path: </path_to>/.config/solana/mainnet.json
Commitment: confirmed
Verify your
RPC URL
and Keypair Path
solana address
You should receive your public Solana address related to you
Keypair Path
Send SOL (at least 4 SOL) and pool tokens to that address. If your token pair includes SOL, at first we need to get Wrapped SOL. Let’s say your initial Pool Liquidity contains 10 SOLX and 1 SOLX.
To get Wrapped SOL run:
spl-token wrap 1.1
You should see:
Wrapping 1.1 SOL into <your_account_address>
Signature: <your tx signature>
Please safe your_account_address. You will need it later.
Run the command:
spl-token accounts
You should see:
Token Balance
So11111111111111111111111111111111111111112 1.09796072
Here you can see other tokens too if you already sent them to your address. If you don’t - it is time to send them. In the example below we are going to create a SOLX/SOL pool with 1 SOL and 10 SOLX as initial liquidity. In your case, you need to change token addresses to yours.
cd soldex-token-swap-SC/js
You can use any favorite text editor for this. Just create a new .env file in the project
js
directory.nano .env
Fulfill your
.env
fileHere is an example of SOLX/SOL token pair:
1LIVE=1 2CLUSTER=mainnet-beta 3RPC_URL='https://api.mainnet-beta.solana.com' 4TOKEN_SWAP_PROGRAM_ID='FvpxMskJCC43Nswc3W3HnyE4fWcXsiawzbkPfRYpDYmD' 5FEE_OWNER_KEY='63g44H9eJAc4DuAxv1vRMbTqZUmrtzFD247fTfuRVgh5' 6OWNER_TRADING_FEE_NUMERATOR=5 7OWNER_TRADING_FEE_DENOMINATOR=10000 8TRADING_FEE_NUMERATOR=20 9TRADING_FEE_DENOMINATOR=10000 10OWNER_WITHDRAW_FEE_NUMERATOR=0 11OWNER_WITHDRAW_FEE_DENOMINATOR=10000 12HOST_FEE_NUMERATOR=0 13HOST_FEE_DENOMINATOR=100 14 15# Variables to set 16WALLET_FILE='<Set full path /home/user/.config/solana/mainnet.json>' 17BASE_MINT_TOKEN='CH74tuRLTYcxG7qNJCsV9rghfLXJCQJbsu7i52a8F1Gn' 18BASE_AMOUNT=10 19QUOTE_MINT_TOKEN='So11111111111111111111111111111111111111112' 20QUOTE_AMOUNT=1 21LP_MINT_DECIMALS=9
Make sure you set the correct
TOKEN_SWAP_PROGRAM_ID
and FEE_OWNER_KEY
:TOKEN_SWAP_PROGRAM_ID='FvpxMskJCC43Nswc3W3HnyE4fWcXsiawzbkPfRYpDYmD'
FEE_OWNER_KEY='63g44H9eJAc4DuAxv1vRMbTqZUmrtzFD247fTfuRVgh5'
Set correct
Soldex (SOLX) | Solscan
BASE_MINT_TOKEN
. It’s the first token in your pool token pair. SOLX token address is: BASE_MINT_TOKEN='CH74tuRLTYcxG7qNJCsV9rghfLXJCQJbsu7i52a8F1Gn'
BASE_AMOUNT
is the inited amount of the first token in your pool:BASE_AMOUNT=10
Set correct
Wrapped SOL (SOL) | Solscan
QUOTE_MINT_TOKEN
. It’s the second token in your pool token pair. Wrapped SOL token address is: QUOTE_MINT_TOKEN='So11111111111111111111111111111111111111112'
QUOTE_AMOUNT
is the inited amount of the second token in your pool:QUOTE_AMOUNT=1
To calculate inited tokens price in a pool you need:
QUOTE_AMOUNT / BASE_AMOUNT = TOKEN_PRICE
11 / 10 = 0.1 2where 1 SOLX = 0.1 SOL 3or 41 SOL = 10 SOLX
Double-check that everything is correct and save your
.env
file.Make sure, you have enough token balance in your wallet
~/.config/solana/mainnet.json
Soldex Pool fee policy is available here. If you don’t follow it your pool can be danylisted and not supported by Soldex protocol. For additional questions please write us by email at [email protected].
Make sure you are in the project directory
soldex-token-swap-SC
Run
npm install
Create pool
cd js; npm run create-pool; cd -
If everything is ok, you should receive something like:
1fetchedTokenSwap.tokenProgramId: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA :TOKEN_PROGRAM_ID :TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA 2fetchedTokenSwap.tokenAccountA: J7KrzLz58u44WJQjnfVRWqfG3v65voUUfJd94YuAffNo :tokenAccountA :HDosqJarQUqUWHTDP7GLZj6ukGTkn1GWYZreWQgrR4HN 3fetchedTokenSwap.tokenAccountB: 8Wx3GYEt1wMNpuFswvEuncGyQc8UZyo2fZhpyLVjgsyx :tokenAccountB :J7FoUw4mL3GBucvn7sup7Sg2HfxiumPA61KG63p4hU1h 4tokenSwap.mintA: CH74tuRLTYcxG7qNJCsV9rghfLXJCQJbsu7i52a8F1Gn :mintA.publicKey :CH74tuRLTYcxG7qNJCsV9rghfLXJCQJbsu7i52a8F1Gn 5tokenSwap.mintB: So11111111111111111111111111111111111111112 :mintB.publicKey :So11111111111111111111111111111111111111112 6tokenSwap.poolToken: 3jkJdWKdst2rL2ab7HKong1YNXf2pwgfptizoRFa2pME 7tokenSwap.feeAccount: GqzfNL9gre1zj6roZw3CJtfwK1aYe6dzG3wCvXeoiqG4 8TRADING_FEE_NUMERATOR: 20 :tokenSwap.tradeFeeNumerator.toNumber() :20 9TRADING_FEE_DENOMINATOR: 10000 :tokenSwap.tradeFeeDenominator.toNumber() :10000 10OWNER_TRADING_FEE_NUMERATOR: 5 :tokenSwap.ownerTradeFeeNumerator.toNumber() :5 11OWNER_TRADING_FEE_DENOMINATOR: 10000 :tokenSwap.ownerTradeFeeDenominator.toNumber() :10000 12OWNER_WITHDRAW_FEE_NUMERATOR: 0 :tokenSwap.ownerWithdrawFeeNumerator.toNumber() :0 13OWNER_WITHDRAW_FEE_DENOMINATOR: 10000 :tokenSwap.ownerWithdrawFeeDenominator.toNumber() :10000 14HOST_FEE_NUMERATOR: 0 :tokenSwap.hostFeeNumerator.toNumber() :0 15HOST_FEE_DENOMINATOR: 100 :tokenSwap.hostFeeDenominator.toNumber() :100 16curveType: 0 :tokenSwap.curveType :0
Last modified 1yr ago