بيئة | برنامج |
---|---|
mainnet | 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 |
devnet | HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8 |
solana-keygen new
لإنشاء مفتاح في الموقع الافتراضي. استنساخ المستودع وأدخل دليل رمز المصدر.
git clone https://github.com/raydium-io/raydium-amm
cd raydium-amm/program
cargo build-bpf
cargo build-bpf --features devnet
يجب عليك تحديث هذه pubKeys في "config_feature" كـ الخاص بك على ميزة LocalNet قبل الإنشاء ؛
cargo build-bpf --features localnet
بعد البناء ، توجد جميع ملفات العقد الذكية في الدليل المستهدف.
solana deploy
الاهتمام ، تحقق من التكوين الخاص بك وتأكيد البيئة التي تريد نشرها.
يجب أن يكون لديك سوق OpenBook غير مرتبط بأي تجمع AMM إذا كنت ترغب في تهيئة تجمع AMM جديد. ويمكنك الرجوع إلى Listmarket لإنشاء سوق جديد.
أضف تبعيات في شحنتك. toml
[ dependencies ]
[ features ]
# default is mainnet
devnet = [
"amm-cli/devnet" ,
"common/devnet" ,
]
[ dependencies ]
amm-cli = { git = "https://github.com/raydium-io/raydium-library" }
common = { git = "https://github.com/raydium-io/raydium-library" }
spl-token = { version = "4.0.0" , features = [ "no-entrypoint" ] }
spl-associated-token-account = { version = "2.2.0" , features = [
"no-entrypoint" ,
] }
spl-token- 2022 = { version = "0.9.0" , features = [ "no-entrypoint" ] }
solana-client = "<1.17.0"
solana-sdk = "<1.17.0"
anyhow = "1.0.53"
clap = { version = "4.1.8" , features = [ "derive" ] }
#! [ allow ( dead_code ) ]
use anyhow :: { Ok , Result } ;
use clap :: Parser ;
use solana_client :: rpc_client :: RpcClient ;
use solana_sdk :: { commitment_config :: CommitmentConfig , signer :: Signer } ;
use std :: sync :: Arc ;
use {
amm_cli :: { self , AmmCommands } ,
common :: { common_types , common_utils , rpc } ,
} ;
// default config
let mut config = common_types :: CommonConfig :: default ( ) ;
// Replace the default configuration parameters you need
config . set_cluster ( "http" , "ws" ) ;
config . set_wallet ( "your wallet path" ) ;
config . set_amm_program ( "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8" ) ;
config . set_openbook_program ( "srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX" ) ;
config . set_slippage ( 50 ) ;
let payer = common_utils :: read_keypair_file ( & config . wallet ( ) ) ? ;
let fee_payer = payer . pubkey ( ) ;
let mut signing_keypairs : Vec < Arc < dyn Signer > > = Vec :: new ( ) ;
let payer : Arc < dyn Signer > = Arc :: new ( payer ) ;
if !signing_keypairs . contains ( & payer ) {
signing_keypairs . push ( payer ) ;
}
// build initialize pool instruction
let subcmd = AmmCommands :: CreatePool {
market : Pubkey :: from_str ( "The amm associated with openbook market" ) . unwrap ( ) ,
coin_mint : Pubkey :: from_str ( "The openbook market's coin_mint" ) . unwrap ( ) ,
pc_mint : Pubkey :: from_str ( "The openbook market's pc_mint" ) . unwrap ( ) ,
user_token_coin : Pubkey :: from_str ( "User's token coin" ) . unwrap ( ) ,
user_token_pc : Pubkey :: from_str ( "User's token pc" ) . unwrap ( ) ,
init_coin_amount : 100000u64 ,
init_pc_amount : 100000u64 ,
open_time : 0 ,
} ;
let instruction = amm_cli :: process_amm_commands ( subcmd , & config ) . unwrap ( ) ;
// build deposit instruction
let subcmd = AmmCommands :: Deposit {
pool_id : Pubkey :: from_str ( "The specified pool of the assets deposite to" ) . unwrap ( ) ,
deposit_token_coin : Some ( Pubkey :: from_str ( "The specified token coin of the user deposit" ) . unwrap ( ) ) ,
deposit_token_pc : Some ( Pubkey :: from_str ( "The specified token pc of the user deposit" ) . unwrap ( ) ) ,
recipient_token_lp : Some ( Pubkey :: from_str ( "The specified lp token of the user will receive" ) . unwrap ( ) ) ,
amount_specified : 100000u64 ,
another_min_limit : false ,
base_coin : false ,
} ;
let instruction = amm_cli :: process_amm_commands ( subcmd , & config ) . unwrap ( ) ;
إذا كانت معلمة الإيداع _token_coin أو repart_token_pc أو recient_token_lp هي لا شيء ، فسيكون ذلك رمزًا افتراضيًا.
// build withdraw instruction
let subcmd = AmmCommands :: Withdraw {
pool_id : Pubkey :: from_str ( "The specified pool of the assets withdraw from" ) . unwrap ( ) ,
withdraw_token_lp : Some ( Pubkey :: from_str ( "The specified lp token of the user withdraw" ) . unwrap ( ) ) ,
recipient_token_coin : Some ( Pubkey :: from_str ( "The specified token coin of the user will receive" ) . unwrap ( ) ) ,
recipient_token_pc : Some ( Pubkey :: from_str ( "The specified token pc of the user will receive" ) . unwrap ( ) ) ,
input_lp_amount : 100000u64 ,
slippage_limit : false ,
} ;
let instruction = amm_cli :: process_amm_commands ( subcmd , & config ) . unwrap ( ) ;
إذا كانت المعلمة الخاصة بـ jack_token_lp أو recient_token_coin أو recient_token_pc هي لا شيء ، فسيكون ذلك رمزًا ata افتراضيًا.
// build swap instruction
let subcmd = AmmCommands :: Swap {
pool_id : Pubkey :: from_str ( " The specified pool of trading" ) . unwrap ( ) ,
user_input_token : Pubkey :: from_str ( "The token of user want to swap from" ) . unwrap ( ) ,
user_output_token : Some ( Pubkey :: from_str ( "The token of user want to swap to" ) . unwrap ( ) ) ,
amount_specified : 100000u64 ,
base_out : false ,
} ;
let instruction = amm_cli :: process_amm_commands ( subcmd , & config ) . unwrap ( ) ;
إذا كانت معلمة user_output_token لا شيء ، فستكون رمز ATA افتراضيًا.
لمزيد من المعلومات ، يمكنك رؤية مكتبة ريبو رايديوم