Skip to content

Commit 1f42e73

Browse files
committed
chore: rebase and update
1 parent bfa2efc commit 1f42e73

File tree

8 files changed

+180
-128
lines changed

8 files changed

+180
-128
lines changed

.github/workflows/ci-development.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
branches:
66
- main
77
- "release/*"
8-
- "feat/solana-versioned-transaction-base-branch"
8+
- "feat/solana-versioned-transaction-*"
99
concurrency:
1010
group: ${{ github.ref }}-release-development
1111
cancel-in-progress: true

foreign-chains/solana/sol-prim/src/alt.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ pub struct MessageAddressTableLookup {
2626
/// The definition of address lookup table accounts.
2727
///
2828
/// As used by the `crate::message::v0` message format.
29-
#[derive(Debug, PartialEq, Eq, Clone)]
29+
#[derive(
30+
Debug, PartialEq, Eq, Clone, Encode, Decode, Serialize, Deserialize, TypeInfo, Default,
31+
)]
3032
pub struct AddressLookupTableAccount {
3133
pub key: Pubkey,
3234
pub addresses: Vec<Pubkey>,

state-chain/chains/src/sol.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ pub use sol_prim::{
3737
VersionedTransaction as SolVersionedTransaction,
3838
},
3939
Address as SolAddress, AddressLookupTableAccount as SolAddressLookupTableAccount,
40-
Amount as SolAmount, ComputeLimit as SolComputeLimit, Digest as SolHash, Hash as RawSolHash,
41-
Instruction as SolInstruction, InstructionRpc as SolInstructionRpc, Pubkey as SolPubkey,
42-
Signature as SolSignature, SlotNumber as SolBlockNumber,
40+
AddressLookupTableAccount, Amount as SolAmount, ComputeLimit as SolComputeLimit,
41+
Digest as SolHash, Hash as RawSolHash, Instruction as SolInstruction,
42+
InstructionRpc as SolInstructionRpc, Pubkey as SolPubkey, Signature as SolSignature,
43+
SlotNumber as SolBlockNumber,
4344
};
4445
pub use sol_tx_core::{
4546
rpc_types, AccountMeta as SolAccountMeta, CcmAccounts as SolCcmAccounts,
@@ -469,7 +470,7 @@ pub struct SolApiEnvironment {
469470
pub swap_endpoint_program: SolAddress,
470471
pub swap_endpoint_program_data_account: SolAddress,
471472
pub alt_manager_program: SolAddress,
472-
pub address_lookup_table_account: (SolAddress, Vec<SolAddress>),
473+
pub address_lookup_table_account: AddressLookupTableAccount,
473474
}
474475

475476
impl DepositDetailsToTransactionInId<SolanaCrypto> for () {}

state-chain/chains/src/sol/api.rs

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ pub struct CurrentAggKey;
4444
pub struct CurrentOnChainKey;
4545
#[derive(Clone, Encode, Decode, PartialEq, Debug, TypeInfo)]
4646
pub struct SolanaAddressLookupTables(pub SwapRequestId);
47-
#[derive(Clone, Encode, Decode, PartialEq, Debug, TypeInfo)]
48-
pub struct ChainflipAddressLookupTable;
4947

5048
pub type DurableNonceAndAccount = (SolAddress, SolHash);
5149

@@ -78,7 +76,6 @@ pub trait SolanaEnvironment:
7876
+ ChainEnvironment<DurableNonce, DurableNonceAndAccount>
7977
+ ChainEnvironment<AllNonceAccounts, Vec<DurableNonceAndAccount>>
8078
+ ChainEnvironment<SolanaAddressLookupTables, Vec<SolAddressLookupTableAccount>>
81-
+ ChainEnvironment<ChainflipAddressLookupTable, SolAddressLookupTableAccount>
8279
+ RecoverDurableNonce
8380
{
8481
fn compute_price() -> Result<SolAmount, SolanaTransactionBuildingError> {
@@ -110,18 +107,9 @@ pub trait SolanaEnvironment:
110107
.ok_or(SolanaTransactionBuildingError::NoNonceAccountsSet)
111108
}
112109

113-
/// Get all relevant Address lookup tables from the Environment.
114-
/// Returns Chainflip's ALT proceeded with user's ALTs.
115-
fn get_address_lookup_tables(id: Option<SwapRequestId>) -> Vec<SolAddressLookupTableAccount> {
116-
let mut alts = Self::get_cf_address_lookup_table().map(|alt| vec![alt]).unwrap_or_default();
117-
if let Some(id) = id {
118-
alts.extend(Self::lookup(SolanaAddressLookupTables(id)).unwrap_or_default());
119-
}
120-
alts
121-
}
122-
123-
fn get_cf_address_lookup_table() -> Option<SolAddressLookupTableAccount> {
124-
Self::lookup(ChainflipAddressLookupTable)
110+
/// Get any relevant Address lookup tables from the Environment. Those are user-defined.
111+
fn get_address_lookup_tables(id: SwapRequestId) -> Vec<SolAddressLookupTableAccount> {
112+
Self::lookup(SolanaAddressLookupTables(id)).unwrap_or_default()
125113
}
126114
}
127115

@@ -329,7 +317,6 @@ impl<Environment: SolanaEnvironment> SolanaApi<Environment> {
329317
let nonce_accounts = Environment::all_nonce_accounts()?;
330318
let compute_price = Environment::compute_price()?;
331319
let durable_nonce = Environment::nonce_account()?;
332-
let address_lookup_tables = Environment::get_address_lookup_tables(None);
333320

334321
// Build the transaction
335322
let transaction = SolanaTransactionBuilder::rotate_agg_key(
@@ -341,7 +328,7 @@ impl<Environment: SolanaEnvironment> SolanaApi<Environment> {
341328
sol_api_environment.alt_manager_program,
342329
durable_nonce,
343330
compute_price,
344-
address_lookup_tables,
331+
vec![sol_api_environment.address_lookup_table_account],
345332
)
346333
.inspect_err(|e| {
347334
// Vault Rotation call building NOT transactional - meaning when this fails,
@@ -409,7 +396,10 @@ impl<Environment: SolanaEnvironment> SolanaApi<Environment> {
409396
let sol_api_environment = Environment::api_environment()?;
410397
let agg_key = Environment::current_agg_key()?;
411398
// TODO roy: Coordinate with Ramiz on the interface for getting ALTS
412-
let address_lookup_tables = Environment::get_address_lookup_tables(Some(swap_request_id));
399+
let user_address_lookup_tables = Environment::get_address_lookup_tables(swap_request_id);
400+
401+
let mut address_lookup_tables = vec![sol_api_environment.address_lookup_table_account];
402+
address_lookup_tables.extend(user_address_lookup_tables);
413403

414404
// Ensure the CCM parameters do not contain blacklisted accounts.
415405
check_ccm_for_blacklisted_accounts(
@@ -507,7 +497,6 @@ impl<Environment: SolanaEnvironment> SolanaApi<Environment> {
507497
let sol_api_environment = Environment::api_environment()?;
508498
let compute_price = Environment::compute_price()?;
509499
let durable_nonce = Environment::nonce_account()?;
510-
let address_lookup_tables = Environment::get_address_lookup_tables(None);
511500

512501
// Build the transaction
513502
let transaction = SolanaTransactionBuilder::fetch_and_close_vault_swap_accounts(
@@ -518,7 +507,7 @@ impl<Environment: SolanaEnvironment> SolanaApi<Environment> {
518507
agg_key,
519508
durable_nonce,
520509
compute_price,
521-
address_lookup_tables,
510+
vec![sol_api_environment.address_lookup_table_account],
522511
)?;
523512

524513
Ok(Self {
@@ -541,7 +530,6 @@ impl<Environment: SolanaEnvironment> SolanaApi<Environment> {
541530
let sol_api_environment = Environment::api_environment()?;
542531
let compute_price = Environment::compute_price()?;
543532
let durable_nonce = Environment::nonce_account()?;
544-
let address_lookup_tables = Environment::get_address_lookup_tables(None);
545533

546534
// Build the transaction
547535
let transaction = SolanaTransactionBuilder::set_program_swaps_parameters(
@@ -557,7 +545,7 @@ impl<Environment: SolanaEnvironment> SolanaApi<Environment> {
557545
agg_key,
558546
durable_nonce,
559547
compute_price,
560-
address_lookup_tables,
548+
vec![sol_api_environment.address_lookup_table_account],
561549
)?;
562550

563551
Ok(Self {
@@ -576,7 +564,6 @@ impl<Environment: SolanaEnvironment> SolanaApi<Environment> {
576564
let sol_api_environment = Environment::api_environment()?;
577565
let compute_price = Environment::compute_price()?;
578566
let durable_nonce = Environment::nonce_account()?;
579-
let address_lookup_tables = Environment::get_address_lookup_tables(None);
580567

581568
// Build the transaction
582569
let transaction = SolanaTransactionBuilder::enable_token_support(
@@ -589,7 +576,7 @@ impl<Environment: SolanaEnvironment> SolanaApi<Environment> {
589576
agg_key,
590577
durable_nonce,
591578
compute_price,
592-
address_lookup_tables,
579+
vec![sol_api_environment.address_lookup_table_account],
593580
)?;
594581

595582
Ok(Self {

state-chain/node/src/chain_spec.rs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ use cf_chains::{
44
btc::{BitcoinFeeInfo, BitcoinTrackedData, BITCOIN_DUST_LIMIT},
55
dot::{PolkadotAccountId, PolkadotHash, PolkadotTrackedData, RuntimeVersion},
66
eth::EthereumTrackedData,
7-
sol::{api::DurableNonceAndAccount, SolAddress, SolApiEnvironment, SolHash, SolTrackedData},
7+
sol::{
8+
api::DurableNonceAndAccount, AddressLookupTableAccount, SolAddress, SolApiEnvironment,
9+
SolHash, SolTrackedData,
10+
},
811
Arbitrum, Bitcoin, ChainState, Ethereum, Polkadot,
912
};
1013
use cf_primitives::{
@@ -347,10 +350,14 @@ pub fn inner_cf_development_config(
347350
swap_endpoint_program: sol_swap_endpoint_program,
348351
swap_endpoint_program_data_account: sol_swap_endpoint_program_data_account,
349352
alt_manager_program: sol_alt_manager_program,
350-
address_lookup_table_account: (
351-
sol_address_lookup_table_account.0,
352-
sol_address_lookup_table_account.1.to_vec(),
353-
),
353+
address_lookup_table_account: AddressLookupTableAccount {
354+
key: sol_address_lookup_table_account.0.into(),
355+
addresses: sol_address_lookup_table_account
356+
.1
357+
.into_iter()
358+
.map(|addr| addr.into())
359+
.collect(),
360+
},
354361
},
355362
sol_durable_nonces_and_accounts: sol_durable_nonces_and_accounts.to_vec(),
356363
network_environment: NetworkEnvironment::Development,
@@ -517,10 +524,14 @@ macro_rules! network_spec {
517524
swap_endpoint_program_data_account:
518525
sol_swap_endpoint_program_data_account,
519526
alt_manager_program: sol_alt_manager_program,
520-
address_lookup_table_account: (
521-
sol_address_lookup_table_account.0,
522-
sol_address_lookup_table_account.1.to_vec(),
523-
),
527+
address_lookup_table_account: AddressLookupTableAccount {
528+
key: sol_address_lookup_table_account.0.into(),
529+
addresses: sol_address_lookup_table_account
530+
.1
531+
.into_iter()
532+
.map(|addr| addr.into())
533+
.collect(),
534+
},
524535
},
525536
network_environment: NETWORK_ENVIRONMENT,
526537
..Default::default()

0 commit comments

Comments
 (0)