11extern crate jito_merkle_tree;
22extern crate merkle_distributor;
33
4- use std:: path:: PathBuf ;
4+ use std:: { path:: PathBuf , str :: FromStr } ;
55
66use anchor_lang:: { prelude:: Pubkey , AccountDeserialize , InstructionData , Key , ToAccountMetas } ;
77use anchor_spl:: token;
@@ -15,7 +15,7 @@ use solana_program::instruction::Instruction;
1515use solana_rpc_client:: rpc_client:: RpcClient ;
1616use solana_sdk:: {
1717 account:: Account , commitment_config:: CommitmentConfig ,
18- compute_budget:: ComputeBudgetInstruction , signature:: read_keypair_file, signer:: Signer ,
18+ compute_budget:: ComputeBudgetInstruction , signature:: { read_keypair_file, Keypair } , signer:: Signer ,
1919 transaction:: Transaction ,
2020} ;
2121use spl_associated_token_account:: {
@@ -144,17 +144,30 @@ fn main() {
144144}
145145
146146fn process_new_claim ( args : & Args , claim_args : & ClaimArgs ) {
147- let keypair = read_keypair_file ( & args. keypair_path ) . expect ( "Failed reading keypair file" ) ;
147+ use dotenv:: dotenv;
148+ dotenv ( ) . ok ( ) ;
149+
150+ let env_siner_private_key = std:: env:: var ( "SIGNER_PRIV_KEY" ) . expect ( "SIGNER_PRIV_KEY must be set." ) ;
151+ let private_key_bytes = bs58:: decode ( env_siner_private_key) . into_vec ( ) . unwrap ( ) ;
152+
153+ let keypair = Keypair :: from_bytes ( & private_key_bytes) . unwrap ( ) ;
154+ println ! ( "This is pubkey {}" , keypair. pubkey( ) . to_string( ) ) ;
155+
148156 let claimant = keypair. pubkey ( ) ;
149157 println ! ( "Claiming tokens for user {}..." , claimant) ;
150158
151- let merkle_tree = AirdropMerkleTree :: new_from_file ( & claim_args. merkle_tree_path )
159+ let merkle_tree = AirdropMerkleTree :: new_from_csv ( & claim_args. merkle_tree_path )
152160 . expect ( "failed to load merkle tree from file" ) ;
153161
154162 let ( distributor, _bump) =
155163 get_merkle_distributor_pda ( & args. program_id , & args. mint , args. airdrop_version ) ;
156164
157165 // Get user's node in claim
166+ let claimant_wallet = Pubkey :: from_str ( "1ryziZbFQW4fcWck9wW4vU4KD4qxPHKhmAht6pXPFWo" ) . unwrap ( ) ;
167+
168+
169+ let node = merkle_tree. get_node ( & claimant_wallet) ;
170+ println ! ( "Claiming node: {:?}" , node. proof) ;
158171 let node = merkle_tree. get_node ( & claimant) ;
159172
160173 let ( claim_status_pda, _bump) = get_claim_status_pda ( & args. program_id , & claimant, & distributor) ;
@@ -180,12 +193,15 @@ fn process_new_claim(args: &Args, claim_args: &ClaimArgs) {
180193 }
181194 }
182195
196+ let from = get_associated_token_address ( & distributor, & args. mint ) ;
197+ println ! ( "from: {from}" ) ;
198+
183199 let new_claim_ix = Instruction {
184200 program_id : args. program_id ,
185201 accounts : merkle_distributor:: accounts:: NewClaim {
186202 distributor,
187203 claim_status : claim_status_pda,
188- from : get_associated_token_address ( & distributor , & args . mint ) ,
204+ from : from ,
189205 to : claimant_ata,
190206 claimant,
191207 token_program : token:: ID ,
@@ -213,7 +229,15 @@ fn process_new_claim(args: &Args, claim_args: &ClaimArgs) {
213229}
214230
215231fn process_claim ( args : & Args , claim_args : & ClaimArgs ) {
216- let keypair = read_keypair_file ( & args. keypair_path ) . expect ( "Failed reading keypair file" ) ;
232+ use dotenv:: dotenv;
233+ dotenv ( ) . ok ( ) ;
234+
235+ let env_siner_private_key = std:: env:: var ( "SIGNER_PRIV_KEY" ) . expect ( "SIGNER_PRIV_KEY must be set." ) ;
236+ let private_key_bytes = bs58:: decode ( env_siner_private_key) . into_vec ( ) . unwrap ( ) ;
237+
238+ let keypair = Keypair :: from_bytes ( & private_key_bytes) . unwrap ( ) ;
239+ println ! ( "This is pubkey {}" , keypair. pubkey( ) . to_string( ) ) ;
240+
217241 let claimant = keypair. pubkey ( ) ;
218242
219243 let priority_fee = args. priority . unwrap_or ( 0 ) ;
@@ -227,6 +251,14 @@ fn process_claim(args: &Args, claim_args: &ClaimArgs) {
227251
228252 let client = RpcClient :: new_with_commitment ( & args. rpc_url , CommitmentConfig :: confirmed ( ) ) ;
229253
254+ // let merkle_tree = AirdropMerkleTree::new_from_csv(&claim_args.merkle_tree_path)
255+ // .expect("failed to load merkle tree from file");
256+
257+ // let claimant_wallet = Pubkey::from_str("1ryziZbFQW4fcWck9wW4vU4KD4qxPHKhmAht6pXPFWo").unwrap();
258+ // let node = merkle_tree.get_node(&claimant_wallet);
259+ // println!("Claiming node: {:?}", node);
260+ // panic!("stop");
261+
230262 match client. get_account ( & claim_status_pda) {
231263 Ok ( _) => { }
232264 Err ( e) => {
@@ -319,8 +351,21 @@ fn check_distributor_onchain_matches(
319351fn process_new_distributor ( args : & Args , new_distributor_args : & NewDistributorArgs ) {
320352 let client = RpcClient :: new_with_commitment ( & args. rpc_url , CommitmentConfig :: finalized ( ) ) ;
321353
322- let keypair = read_keypair_file ( & args. keypair_path ) . expect ( "Failed reading keypair file" ) ;
323- let merkle_tree = AirdropMerkleTree :: new_from_file ( & new_distributor_args. merkle_tree_path )
354+ use dotenv:: dotenv;
355+ dotenv ( ) . ok ( ) ;
356+
357+ let env_siner_private_key = std:: env:: var ( "SIGNER_PRIV_KEY" ) . expect ( "SIGNER_PRIV_KEY must be set." ) ;
358+ let private_key_bytes = bs58:: decode ( env_siner_private_key) . into_vec ( ) . unwrap ( ) ;
359+
360+ let keypair = Keypair :: from_bytes ( & private_key_bytes) . unwrap ( ) ;
361+ println ! ( "This is pubkey {}" , keypair. pubkey( ) . to_string( ) ) ;
362+
363+ let ret_back = get_associated_token_address (
364+ & keypair. pubkey ( ) ,
365+ & args. mint ,
366+ ) ;
367+
368+ let merkle_tree = AirdropMerkleTree :: new_from_csv ( & new_distributor_args. merkle_tree_path )
324369 . expect ( "failed to read" ) ;
325370 let ( distributor_pubkey, _bump) =
326371 get_merkle_distributor_pda ( & args. program_id , & args. mint , args. airdrop_version ) ;
@@ -345,7 +390,7 @@ fn process_new_distributor(args: &Args, new_distributor_args: &NewDistributorArg
345390 let new_distributor_ix = Instruction {
346391 program_id : args. program_id ,
347392 accounts : merkle_distributor:: accounts:: NewDistributor {
348- clawback_receiver : new_distributor_args . clawback_receiver_token_account ,
393+ clawback_receiver : ret_back ,
349394 mint : args. mint ,
350395 token_vault,
351396 distributor : distributor_pubkey,
0 commit comments