Skip to content

Commit a16c609

Browse files
authored
Merge pull request #28 from ComposableFi/godilov/polkadot-signature
fix: polkadot signatures
2 parents 999990e + 1151977 commit a16c609

File tree

103 files changed

+2525
-2910
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+2525
-2910
lines changed

cli/src/bin/cli.rs

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,13 @@ use merkle_distributor::state::merkle_distributor::MerkleDistributor;
1414
use solana_program::instruction::Instruction;
1515
use solana_rpc_client::rpc_client::RpcClient;
1616
use solana_sdk::{
17-
account::Account, bs58, commitment_config::CommitmentConfig, compute_budget::ComputeBudgetInstruction, signature::{read_keypair_file, Keypair}, signer::Signer, transaction::Transaction
17+
account::Account,
18+
bs58,
19+
commitment_config::CommitmentConfig,
20+
compute_budget::ComputeBudgetInstruction,
21+
signature::{read_keypair_file, Keypair},
22+
signer::Signer,
23+
transaction::Transaction,
1824
};
1925
use spl_associated_token_account::{
2026
get_associated_token_address, instruction::create_associated_token_account,
@@ -137,7 +143,6 @@ pub struct SetStakingArgs {
137143

138144
#[clap(long)]
139145
pub duration: i64,
140-
141146
}
142147

143148
fn main() {
@@ -148,7 +153,13 @@ fn main() {
148153
process_new_distributor(&args, new_distributor_args);
149154
}
150155
Commands::AdminNewClaim => {
151-
process_admin_claim(&args, Pubkey::from_str(&"5pT9ijgv2Qpxn4ux4u4crCCJhgAe4w7GoeaCPJKgP4NW").unwrap(), 1500, 1500, 1);
156+
process_admin_claim(
157+
&args,
158+
Pubkey::from_str(&"5pT9ijgv2Qpxn4ux4u4crCCJhgAe4w7GoeaCPJKgP4NW").unwrap(),
159+
1500,
160+
1500,
161+
1,
162+
);
152163
}
153164
Commands::Claim(claim_args) => {
154165
process_claim(&args, claim_args);
@@ -170,7 +181,8 @@ fn process_new_claim(args: &Args, claim_args: &ClaimArgs) {
170181
use dotenv::dotenv;
171182
dotenv().ok();
172183

173-
let env_siner_private_key = std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
184+
let env_siner_private_key =
185+
std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
174186
let private_key_bytes = bs58::decode(env_siner_private_key).into_vec().unwrap();
175187

176188
let keypair = Keypair::from_bytes(&private_key_bytes).unwrap();
@@ -248,13 +260,19 @@ fn process_new_claim(args: &Args, claim_args: &ClaimArgs) {
248260
println!("successfully created new claim with signature {signature:#?}");
249261
}
250262

251-
pub fn call_process_admin_claim(claimant: Pubkey, amount_unlocked: u64, amount_locked: u64, page_index: u8){
263+
pub fn call_process_admin_claim(
264+
claimant: Pubkey,
265+
amount_unlocked: u64,
266+
amount_locked: u64,
267+
page_index: u8,
268+
) {
252269
use dotenv::dotenv;
253270
dotenv().ok();
254271
let mint = std::env::var("WHITELIST_MINT").expect("WHITELIST_MINT must be set.");
255-
let vesting_program = std::env::var("VESTING_PROGRAM_ID").expect("VESTING_PROGRAM_ID must be set.");
272+
let vesting_program =
273+
std::env::var("VESTING_PROGRAM_ID").expect("VESTING_PROGRAM_ID must be set.");
256274
let solana_rpc_url = std::env::var("SOLANA_RPC_URL").expect("SOLANA_RPC_URL must be set.");
257-
let args: Args = Args{
275+
let args: Args = Args {
258276
command: Commands::AdminNewClaim,
259277
airdrop_version: 0,
260278
mint: Pubkey::from_str(&mint).unwrap(),
@@ -267,12 +285,18 @@ pub fn call_process_admin_claim(claimant: Pubkey, amount_unlocked: u64, amount_l
267285
process_admin_claim(&args, claimant, amount_unlocked, amount_locked, page_index);
268286
}
269287

270-
271-
fn process_admin_claim(args: &Args, claimant: Pubkey, amount_unlocked: u64, amount_locked: u64, page_index: u8) {
288+
fn process_admin_claim(
289+
args: &Args,
290+
claimant: Pubkey,
291+
amount_unlocked: u64,
292+
amount_locked: u64,
293+
page_index: u8,
294+
) {
272295
use dotenv::dotenv;
273296
dotenv().ok();
274297

275-
let env_siner_private_key = std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
298+
let env_siner_private_key =
299+
std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
276300
let admin_private_key_bytes = bs58::decode(env_siner_private_key).into_vec().unwrap();
277301

278302
let keypair = Keypair::from_bytes(&admin_private_key_bytes).unwrap();
@@ -281,7 +305,6 @@ fn process_admin_claim(args: &Args, claimant: Pubkey, amount_unlocked: u64, amou
281305
let (distributor, _bump) =
282306
get_merkle_distributor_pda(&args.program_id, &args.mint, args.airdrop_version);
283307

284-
285308
let (page_account_pda, _bump) = get_page_account_pda(&args.program_id, 1);
286309

287310
let client = RpcClient::new_with_commitment(&args.rpc_url, CommitmentConfig::confirmed());
@@ -346,7 +369,8 @@ fn process_claim(args: &Args, claim_args: &ClaimArgs) {
346369
use dotenv::dotenv;
347370
dotenv().ok();
348371

349-
let env_siner_private_key = std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
372+
let env_siner_private_key =
373+
std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
350374
let private_key_bytes = bs58::decode(env_siner_private_key).into_vec().unwrap();
351375

352376
let keypair = Keypair::from_bytes(&private_key_bytes).unwrap();
@@ -465,7 +489,8 @@ fn process_new_distributor(args: &Args, new_distributor_args: &NewDistributorArg
465489
use dotenv::dotenv;
466490
dotenv().ok();
467491

468-
let env_siner_private_key = std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
492+
let env_siner_private_key =
493+
std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
469494
let private_key_bytes = bs58::decode(env_siner_private_key).into_vec().unwrap();
470495

471496
let keypair = Keypair::from_bytes(&private_key_bytes).unwrap();
@@ -481,7 +506,7 @@ fn process_new_distributor(args: &Args, new_distributor_args: &NewDistributorArg
481506
// &args.mint,
482507
// );
483508
// let ret_back = Pubkey::from_str("PYsq43ovMAvj3yuiF7jgfcfbCgASapELHKAQPDS6WfU").unwrap();
484-
509+
485510
// let keypair = read_keypair_file(&args.keypair_path).expect("Failed reading keypair file");
486511

487512
let client = RpcClient::new_with_commitment(&args.rpc_url, CommitmentConfig::finalized());
@@ -508,8 +533,6 @@ fn process_new_distributor(args: &Args, new_distributor_args: &NewDistributorArg
508533

509534
println!("creating new distributor with args: {new_distributor_args:#?}");
510535

511-
512-
513536
let new_distributor_ix = Instruction {
514537
program_id: args.program_id,
515538
accounts: merkle_distributor::accounts::NewDistributor {
@@ -621,7 +644,8 @@ fn process_set_admin(args: &Args, set_admin_args: &SetAdminArgs) {
621644
use dotenv::dotenv;
622645
dotenv().ok();
623646

624-
let env_siner_private_key = std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
647+
let env_siner_private_key =
648+
std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
625649
let private_key_bytes = bs58::decode(env_siner_private_key).into_vec().unwrap();
626650

627651
let keypair = Keypair::from_bytes(&private_key_bytes).unwrap();
@@ -660,7 +684,8 @@ fn process_set_staking(args: &Args, set_admin_args: &SetStakingArgs) {
660684
use dotenv::dotenv;
661685
dotenv().ok();
662686

663-
let env_siner_private_key = std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
687+
let env_siner_private_key =
688+
std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
664689
let private_key_bytes = bs58::decode(env_siner_private_key).into_vec().unwrap();
665690

666691
let keypair = Keypair::from_bytes(&private_key_bytes).unwrap();
@@ -681,7 +706,8 @@ fn process_set_staking(args: &Args, set_admin_args: &SetStakingArgs) {
681706
data: merkle_distributor::instruction::SetStaking {
682707
staking: Some(set_admin_args.staking_contract),
683708
duration: set_admin_args.duration,
684-
}.data(),
709+
}
710+
.data(),
685711
};
686712

687713
let tx = Transaction::new_signed_with_payer(

cli/src/lib.rs

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,13 @@ use merkle_distributor::state::merkle_distributor::MerkleDistributor;
1414
use solana_program::instruction::Instruction;
1515
use solana_rpc_client::rpc_client::RpcClient;
1616
use solana_sdk::{
17-
account::Account, bs58, commitment_config::CommitmentConfig, compute_budget::ComputeBudgetInstruction, signature::{read_keypair_file, Keypair}, signer::Signer, transaction::Transaction
17+
account::Account,
18+
bs58,
19+
commitment_config::CommitmentConfig,
20+
compute_budget::ComputeBudgetInstruction,
21+
signature::{read_keypair_file, Keypair},
22+
signer::Signer,
23+
transaction::Transaction,
1824
};
1925
use spl_associated_token_account::{
2026
get_associated_token_address, instruction::create_associated_token_account,
@@ -133,7 +139,8 @@ fn process_new_claim(args: &Args, claim_args: &ClaimArgs) {
133139
use dotenv::dotenv;
134140
dotenv().ok();
135141

136-
let env_siner_private_key = std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
142+
let env_siner_private_key =
143+
std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
137144
let private_key_bytes = bs58::decode(env_siner_private_key).into_vec().unwrap();
138145

139146
let keypair = Keypair::from_bytes(&private_key_bytes).unwrap();
@@ -211,13 +218,19 @@ fn process_new_claim(args: &Args, claim_args: &ClaimArgs) {
211218
println!("successfully created new claim with signature {signature:#?}");
212219
}
213220

214-
pub fn call_process_admin_claim(claimant: Pubkey, amount_unlocked: u64, amount_locked: u64, page_index: u8) -> (bool, String) {
221+
pub fn call_process_admin_claim(
222+
claimant: Pubkey,
223+
amount_unlocked: u64,
224+
amount_locked: u64,
225+
page_index: u8,
226+
) -> (bool, String) {
215227
use dotenv::dotenv;
216228
dotenv().ok();
217229
let mint = std::env::var("WHITELIST_MINT").expect("WHITELIST_MINT must be set.");
218-
let vesting_program = std::env::var("VESTING_PROGRAM_ID").expect("VESTING_PROGRAM_ID must be set.");
230+
let vesting_program =
231+
std::env::var("VESTING_PROGRAM_ID").expect("VESTING_PROGRAM_ID must be set.");
219232
let solana_rpc_url = std::env::var("SOLANA_RPC_URL").expect("SOLANA_RPC_URL must be set.");
220-
let args: Args = Args{
233+
let args: Args = Args {
221234
command: Commands::AdminNewClaim,
222235
airdrop_version: 0,
223236
mint: Pubkey::from_str(&mint).unwrap(),
@@ -230,12 +243,18 @@ pub fn call_process_admin_claim(claimant: Pubkey, amount_unlocked: u64, amount_l
230243
return process_admin_claim(&args, claimant, amount_unlocked, amount_locked, page_index);
231244
}
232245

233-
234-
fn process_admin_claim(args: &Args, claimant: Pubkey, amount_unlocked: u64, amount_locked: u64, page_index: u8) -> (bool, String) {
246+
fn process_admin_claim(
247+
args: &Args,
248+
claimant: Pubkey,
249+
amount_unlocked: u64,
250+
amount_locked: u64,
251+
page_index: u8,
252+
) -> (bool, String) {
235253
use dotenv::dotenv;
236254
dotenv().ok();
237255

238-
let env_siner_private_key = std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
256+
let env_siner_private_key =
257+
std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
239258
let admin_private_key_bytes = bs58::decode(env_siner_private_key).into_vec().unwrap();
240259

241260
let keypair = Keypair::from_bytes(&admin_private_key_bytes).unwrap();
@@ -295,11 +314,14 @@ fn process_admin_claim(args: &Args, claimant: Pubkey, amount_unlocked: u64, amou
295314
ixs.push(new_claim_ix);
296315

297316
let blockhash = client.get_latest_blockhash().unwrap();
298-
let tx =
299-
Transaction::new_signed_with_payer(&ixs, Some(&keypair.pubkey().key()), &[&keypair], blockhash);
317+
let tx = Transaction::new_signed_with_payer(
318+
&ixs,
319+
Some(&keypair.pubkey().key()),
320+
&[&keypair],
321+
blockhash,
322+
);
300323

301-
let signature = client
302-
.send_and_confirm_transaction_with_spinner(&tx);
324+
let signature = client.send_and_confirm_transaction_with_spinner(&tx);
303325
let msg_signature = format!("{:?}", signature);
304326
println!("{}", msg_signature);
305327
if signature.is_err() {
@@ -312,7 +334,8 @@ fn process_claim(args: &Args, claim_args: &ClaimArgs) {
312334
use dotenv::dotenv;
313335
dotenv().ok();
314336

315-
let env_siner_private_key = std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
337+
let env_siner_private_key =
338+
std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
316339
let private_key_bytes = bs58::decode(env_siner_private_key).into_vec().unwrap();
317340

318341
let keypair = Keypair::from_bytes(&private_key_bytes).unwrap();
@@ -431,17 +454,15 @@ fn process_new_distributor(args: &Args, new_distributor_args: &NewDistributorArg
431454
use dotenv::dotenv;
432455
dotenv().ok();
433456

434-
let env_siner_private_key = std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
457+
let env_siner_private_key =
458+
std::env::var("SIGNER_PRIV_KEY").expect("SIGNER_PRIV_KEY must be set.");
435459
let private_key_bytes = bs58::decode(env_siner_private_key).into_vec().unwrap();
436460

437461
let keypair = Keypair::from_bytes(&private_key_bytes).unwrap();
438462
println!("This is pubkey {}", keypair.pubkey().to_string());
439463

440-
let ret_back = get_associated_token_address(
441-
&keypair.pubkey(),
442-
&args.mint,
443-
);
444-
464+
let ret_back = get_associated_token_address(&keypair.pubkey(), &args.mint);
465+
445466
// let keypair = read_keypair_file(&args.keypair_path).expect("Failed reading keypair file");
446467

447468
let client = RpcClient::new_with_commitment(&args.rpc_url, CommitmentConfig::finalized());
@@ -468,8 +489,6 @@ fn process_new_distributor(args: &Args, new_distributor_args: &NewDistributorArg
468489

469490
println!("creating new distributor with args: {new_distributor_args:#?}");
470491

471-
472-
473492
let new_distributor_ix = Instruction {
474493
program_id: args.program_id,
475494
accounts: merkle_distributor::accounts::NewDistributor {

common/cf-guest/src/client.rs

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -96,21 +96,27 @@ impl<PK: guestchain::PubKey> ClientState<PK> {
9696
this
9797
}
9898

99-
pub fn frozen(&self) -> Self { Self { is_frozen: true, ..self.clone() } }
99+
pub fn frozen(&self) -> Self {
100+
Self {
101+
is_frozen: true,
102+
..self.clone()
103+
}
104+
}
100105
}
101106

102107
impl<PK: guestchain::PubKey> From<ClientState<PK>> for proto::ClientState {
103-
fn from(state: ClientState<PK>) -> Self { Self::from(&state) }
108+
fn from(state: ClientState<PK>) -> Self {
109+
Self::from(&state)
110+
}
104111
}
105112

106113
impl<PK: guestchain::PubKey> From<&ClientState<PK>> for proto::ClientState {
107114
fn from(state: &ClientState<PK>) -> Self {
108-
let prev_epoch_commitment =
109-
if state.prev_epoch_commitment == state.epoch_commitment {
110-
alloc::vec::Vec::new()
111-
} else {
112-
state.prev_epoch_commitment.to_vec()
113-
};
115+
let prev_epoch_commitment = if state.prev_epoch_commitment == state.epoch_commitment {
116+
alloc::vec::Vec::new()
117+
} else {
118+
state.prev_epoch_commitment.to_vec()
119+
};
114120
Self {
115121
genesis_hash: state.genesis_hash.to_vec(),
116122
latest_height: state.latest_height.into(),
@@ -132,9 +138,7 @@ impl<PK: guestchain::PubKey> TryFrom<proto::ClientState> for ClientState<PK> {
132138
impl<PK: guestchain::PubKey> TryFrom<&proto::ClientState> for ClientState<PK> {
133139
type Error = proto::BadMessage;
134140
fn try_from(msg: &proto::ClientState) -> Result<Self, Self::Error> {
135-
let make_hash = |hash: &[u8]| {
136-
CryptoHash::try_from(hash).map_err(|_| proto::BadMessage)
137-
};
141+
let make_hash = |hash: &[u8]| CryptoHash::try_from(hash).map_err(|_| proto::BadMessage);
138142

139143
let genesis_hash = make_hash(&msg.genesis_hash)?;
140144
let epoch_commitment = make_hash(&msg.epoch_commitment)?;
@@ -167,23 +171,19 @@ fn test_decode() {
167171
use prost::Message;
168172

169173
const MESSAGE: [u8; 79] = [
170-
10u8, 32, 51, 149, 5, 79, 50, 53, 152, 49, 180, 107, 202, 134, 169,
171-
136, 236, 63, 188, 148, 223, 47, 72, 42, 1, 239, 198, 197, 0, 114, 147,
172-
202, 130, 249, 16, 211, 7, 24, 128, 128, 144, 202, 210, 198, 14, 34,
173-
32, 86, 12, 131, 131, 127, 125, 82, 54, 32, 207, 121, 149, 204, 11,
174-
121, 102, 180, 211, 111, 54, 0, 207, 247, 125, 195, 57, 10, 10, 80, 84,
175-
86, 152,
174+
10u8, 32, 51, 149, 5, 79, 50, 53, 152, 49, 180, 107, 202, 134, 169, 136, 236, 63, 188, 148,
175+
223, 47, 72, 42, 1, 239, 198, 197, 0, 114, 147, 202, 130, 249, 16, 211, 7, 24, 128, 128,
176+
144, 202, 210, 198, 14, 34, 32, 86, 12, 131, 131, 127, 125, 82, 54, 32, 207, 121, 149, 204,
177+
11, 121, 102, 180, 211, 111, 54, 0, 207, 247, 125, 195, 57, 10, 10, 80, 84, 86, 152,
176178
];
177179

178180
const GENESIS_HASH: [u8; 32] = [
179-
51, 149, 5, 79, 50, 53, 152, 49, 180, 107, 202, 134, 169, 136, 236, 63,
180-
188, 148, 223, 47, 72, 42, 1, 239, 198, 197, 0, 114, 147, 202, 130,
181-
249,
181+
51, 149, 5, 79, 50, 53, 152, 49, 180, 107, 202, 134, 169, 136, 236, 63, 188, 148, 223, 47,
182+
72, 42, 1, 239, 198, 197, 0, 114, 147, 202, 130, 249,
182183
];
183184
const EPOCH_COMMITMENT: [u8; 32] = [
184-
86, 12, 131, 131, 127, 125, 82, 54, 32, 207, 121, 149, 204, 11, 121,
185-
102, 180, 211, 111, 54, 0, 207, 247, 125, 195, 57, 10, 10, 80, 84, 86,
186-
152,
185+
86, 12, 131, 131, 127, 125, 82, 54, 32, 207, 121, 149, 204, 11, 121, 102, 180, 211, 111,
186+
54, 0, 207, 247, 125, 195, 57, 10, 10, 80, 84, 86, 152,
187187
];
188188

189189
let want_proto = proto::ClientState {
@@ -208,14 +208,10 @@ fn test_decode() {
208208
let proto = proto::ClientState::decode(MESSAGE.as_slice()).unwrap();
209209
assert_eq!(want_proto, proto);
210210

211-
let state =
212-
ClientState::<guestchain::validators::MockPubKey>::try_from(proto)
213-
.unwrap();
211+
let state = ClientState::<guestchain::validators::MockPubKey>::try_from(proto).unwrap();
214212
assert_eq!(want_state, state);
215213

216-
let state = ClientState::<guestchain::validators::MockPubKey>::decode(
217-
MESSAGE.as_slice(),
218-
)
219-
.unwrap();
214+
let state =
215+
ClientState::<guestchain::validators::MockPubKey>::decode(MESSAGE.as_slice()).unwrap();
220216
assert_eq!(want_state, state);
221217
}

0 commit comments

Comments
 (0)