Refactor - Move interfaces of address-lookup-table into the program SDK (#33165)
* Adds a module `address_lookup_table` to the SDK. * Adds a module `address_lookup_table::instruction` to the SDK. * Adds a module `address_lookup_table::error` to the SDK. * Adds a module `address_lookup_table::state` to the SDK. * Moves AddressLookupTable into SDK as well. * Moves AddressLookupTableAccount into address_lookup_table. * Adds deprecation messages. * Disentangles dependencies across cargo files.
This commit is contained in:
parent
18f321525a
commit
bbb57be0a5
|
@ -5085,7 +5085,6 @@ dependencies = [
|
|||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-config-program",
|
||||
"solana-sdk",
|
||||
"spl-token",
|
||||
|
@ -5184,7 +5183,6 @@ dependencies = [
|
|||
"serde_derive",
|
||||
"siphasher",
|
||||
"solana-accounts-db",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-bpf-loader-program",
|
||||
"solana-bucket-map",
|
||||
"solana-compute-budget-program",
|
||||
|
@ -5542,7 +5540,6 @@ dependencies = [
|
|||
"serde_derive",
|
||||
"serde_json",
|
||||
"solana-account-decoder",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-bpf-loader-program",
|
||||
"solana-clap-utils",
|
||||
"solana-cli-config",
|
||||
|
@ -5755,7 +5752,6 @@ dependencies = [
|
|||
"serde_json",
|
||||
"serial_test",
|
||||
"solana-accounts-db",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-bloom",
|
||||
"solana-client",
|
||||
"solana-core",
|
||||
|
@ -6693,7 +6689,6 @@ dependencies = [
|
|||
"soketto",
|
||||
"solana-account-decoder",
|
||||
"solana-accounts-db",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-client",
|
||||
"solana-entry",
|
||||
"solana-faucet",
|
||||
|
@ -7264,7 +7259,6 @@ dependencies = [
|
|||
"serde_derive",
|
||||
"serde_json",
|
||||
"solana-account-decoder",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-sdk",
|
||||
"spl-associated-token-account",
|
||||
"spl-memo",
|
||||
|
|
|
@ -19,7 +19,6 @@ lazy_static = { workspace = true }
|
|||
serde = { workspace = true }
|
||||
serde_derive = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
solana-address-lookup-table-program = { workspace = true }
|
||||
solana-config-program = { workspace = true }
|
||||
solana-sdk = { workspace = true }
|
||||
spl-token = { workspace = true, features = ["no-entrypoint"] }
|
||||
|
|
|
@ -8,14 +8,15 @@ use {
|
|||
inflector::Inflector,
|
||||
serde_json::Value,
|
||||
solana_sdk::{
|
||||
instruction::InstructionError, pubkey::Pubkey, stake, system_program, sysvar, vote,
|
||||
address_lookup_table, instruction::InstructionError, pubkey::Pubkey, stake, system_program,
|
||||
sysvar, vote,
|
||||
},
|
||||
std::collections::HashMap,
|
||||
thiserror::Error,
|
||||
};
|
||||
|
||||
lazy_static! {
|
||||
static ref ADDRESS_LOOKUP_PROGRAM_ID: Pubkey = solana_address_lookup_table_program::id();
|
||||
static ref ADDRESS_LOOKUP_PROGRAM_ID: Pubkey = address_lookup_table::program::id();
|
||||
static ref BPF_UPGRADEABLE_LOADER_PROGRAM_ID: Pubkey = solana_sdk::bpf_loader_upgradeable::id();
|
||||
static ref CONFIG_PROGRAM_ID: Pubkey = solana_config_program::id();
|
||||
static ref STAKE_PROGRAM_ID: Pubkey = stake::program::id();
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
use {
|
||||
crate::parse_account_data::{ParsableAccount, ParseAccountError},
|
||||
solana_address_lookup_table_program::state::AddressLookupTable,
|
||||
solana_sdk::instruction::InstructionError,
|
||||
solana_sdk::{address_lookup_table::state::AddressLookupTable, instruction::InstructionError},
|
||||
};
|
||||
|
||||
pub fn parse_address_lookup_table(
|
||||
|
@ -62,8 +61,10 @@ impl<'a> From<AddressLookupTable<'a>> for UiLookupTable {
|
|||
mod test {
|
||||
use {
|
||||
super::*,
|
||||
solana_address_lookup_table_program::state::{LookupTableMeta, LOOKUP_TABLE_META_SIZE},
|
||||
solana_sdk::pubkey::Pubkey,
|
||||
solana_sdk::{
|
||||
address_lookup_table::state::{LookupTableMeta, LOOKUP_TABLE_META_SIZE},
|
||||
pubkey::Pubkey,
|
||||
},
|
||||
std::borrow::Cow,
|
||||
};
|
||||
|
||||
|
|
|
@ -45,7 +45,6 @@ regex = { workspace = true }
|
|||
serde = { workspace = true, features = ["rc"] }
|
||||
serde_derive = { workspace = true }
|
||||
siphasher = { workspace = true }
|
||||
solana-address-lookup-table-program = { workspace = true }
|
||||
solana-bpf-loader-program = { workspace = true }
|
||||
solana-bucket-map = { workspace = true }
|
||||
solana-compute-budget-program = { workspace = true }
|
||||
|
|
|
@ -24,7 +24,6 @@ use {
|
|||
dashmap::DashMap,
|
||||
itertools::Itertools,
|
||||
log::*,
|
||||
solana_address_lookup_table_program::{error::AddressLookupError, state::AddressLookupTable},
|
||||
solana_program_runtime::{
|
||||
compute_budget::{self, ComputeBudget},
|
||||
loaded_programs::LoadedProgramsForTxBatch,
|
||||
|
@ -32,6 +31,7 @@ use {
|
|||
solana_sdk::{
|
||||
account::{Account, AccountSharedData, ReadableAccount, WritableAccount},
|
||||
account_utils::StateMut,
|
||||
address_lookup_table::{self, error::AddressLookupError, state::AddressLookupTable},
|
||||
bpf_loader_upgradeable::{self, UpgradeableLoaderState},
|
||||
clock::{BankId, Slot},
|
||||
feature_set::{
|
||||
|
@ -781,7 +781,7 @@ impl Accounts {
|
|||
.map(|(account, _rent)| account)
|
||||
.ok_or(AddressLookupError::LookupTableAccountNotFound)?;
|
||||
|
||||
if table_account.owner() == &solana_address_lookup_table_program::id() {
|
||||
if table_account.owner() == &address_lookup_table::program::id() {
|
||||
let current_slot = ancestors.max_slot();
|
||||
let lookup_table = AddressLookupTable::deserialize(table_account.data())
|
||||
.map_err(|_ix_err| AddressLookupError::InvalidAccountData)?;
|
||||
|
@ -1475,12 +1475,12 @@ mod tests {
|
|||
transaction_results::{DurableNonceFee, TransactionExecutionDetails},
|
||||
},
|
||||
assert_matches::assert_matches,
|
||||
solana_address_lookup_table_program::state::LookupTableMeta,
|
||||
solana_program_runtime::prioritization_fee::{
|
||||
PrioritizationFeeDetails, PrioritizationFeeType,
|
||||
},
|
||||
solana_sdk::{
|
||||
account::{AccountSharedData, WritableAccount},
|
||||
address_lookup_table::state::LookupTableMeta,
|
||||
compute_budget::ComputeBudgetInstruction,
|
||||
epoch_schedule::EpochSchedule,
|
||||
genesis_config::ClusterType,
|
||||
|
@ -2356,7 +2356,7 @@ mod tests {
|
|||
|
||||
let invalid_table_key = Pubkey::new_unique();
|
||||
let invalid_table_account =
|
||||
AccountSharedData::new(1, 0, &solana_address_lookup_table_program::id());
|
||||
AccountSharedData::new(1, 0, &address_lookup_table::program::id());
|
||||
accounts.store_slow_uncached(0, &invalid_table_key, &invalid_table_account);
|
||||
|
||||
let address_table_lookup = MessageAddressTableLookup {
|
||||
|
@ -2395,7 +2395,7 @@ mod tests {
|
|||
AccountSharedData::create(
|
||||
1,
|
||||
table_state.serialize_for_tests().unwrap(),
|
||||
solana_address_lookup_table_program::id(),
|
||||
address_lookup_table::program::id(),
|
||||
false,
|
||||
0,
|
||||
)
|
||||
|
|
|
@ -29,7 +29,6 @@ serde = { workspace = true }
|
|||
serde_derive = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
solana-account-decoder = { workspace = true }
|
||||
solana-address-lookup-table-program = { workspace = true }
|
||||
solana-bpf-loader-program = { workspace = true }
|
||||
solana-clap-utils = { workspace = true }
|
||||
solana-cli-config = { workspace = true }
|
||||
|
|
|
@ -1,21 +1,28 @@
|
|||
use {
|
||||
crate::cli::{CliCommand, CliCommandInfo, CliConfig, CliError, ProcessResult},
|
||||
clap::{App, AppSettings, Arg, ArgMatches, SubCommand},
|
||||
solana_address_lookup_table_program::{
|
||||
instruction::{
|
||||
close_lookup_table, create_lookup_table, create_lookup_table_signed,
|
||||
deactivate_lookup_table, extend_lookup_table, freeze_lookup_table,
|
||||
},
|
||||
state::AddressLookupTable,
|
||||
},
|
||||
solana_clap_utils::{self, input_parsers::*, input_validators::*, keypair::*},
|
||||
solana_cli_output::{CliAddressLookupTable, CliAddressLookupTableCreated, CliSignature},
|
||||
solana_remote_wallet::remote_wallet::RemoteWalletManager,
|
||||
solana_rpc_client::rpc_client::RpcClient,
|
||||
solana_rpc_client_api::config::RpcSendTransactionConfig,
|
||||
solana_sdk::{
|
||||
account::from_account, clock::Clock, commitment_config::CommitmentConfig, message::Message,
|
||||
pubkey::Pubkey, signer::Signer, sysvar, transaction::Transaction,
|
||||
account::from_account,
|
||||
address_lookup_table::{
|
||||
self,
|
||||
instruction::{
|
||||
close_lookup_table, create_lookup_table, create_lookup_table_signed,
|
||||
deactivate_lookup_table, extend_lookup_table, freeze_lookup_table,
|
||||
},
|
||||
state::AddressLookupTable,
|
||||
},
|
||||
clock::Clock,
|
||||
commitment_config::CommitmentConfig,
|
||||
message::Message,
|
||||
pubkey::Pubkey,
|
||||
signer::Signer,
|
||||
sysvar,
|
||||
transaction::Transaction,
|
||||
},
|
||||
std::{rc::Rc, sync::Arc},
|
||||
};
|
||||
|
@ -604,7 +611,7 @@ fn process_freeze_lookup_table(
|
|||
let lookup_table_account = get_lookup_table_result.value.ok_or_else(|| {
|
||||
format!("Lookup table account {lookup_table_pubkey} not found, was it already closed?")
|
||||
})?;
|
||||
if !solana_address_lookup_table_program::check_id(&lookup_table_account.owner) {
|
||||
if !address_lookup_table::program::check_id(&lookup_table_account.owner) {
|
||||
return Err(format!(
|
||||
"Lookup table account {lookup_table_pubkey} is not owned by the Address Lookup Table program",
|
||||
)
|
||||
|
@ -662,7 +669,7 @@ fn process_extend_lookup_table(
|
|||
let lookup_table_account = get_lookup_table_result.value.ok_or_else(|| {
|
||||
format!("Lookup table account {lookup_table_pubkey} not found, was it already closed?")
|
||||
})?;
|
||||
if !solana_address_lookup_table_program::check_id(&lookup_table_account.owner) {
|
||||
if !address_lookup_table::program::check_id(&lookup_table_account.owner) {
|
||||
return Err(format!(
|
||||
"Lookup table account {lookup_table_pubkey} is not owned by the Address Lookup Table program",
|
||||
)
|
||||
|
@ -721,7 +728,7 @@ fn process_deactivate_lookup_table(
|
|||
let lookup_table_account = get_lookup_table_result.value.ok_or_else(|| {
|
||||
format!("Lookup table account {lookup_table_pubkey} not found, was it already closed?")
|
||||
})?;
|
||||
if !solana_address_lookup_table_program::check_id(&lookup_table_account.owner) {
|
||||
if !address_lookup_table::program::check_id(&lookup_table_account.owner) {
|
||||
return Err(format!(
|
||||
"Lookup table account {lookup_table_pubkey} is not owned by the Address Lookup Table program",
|
||||
)
|
||||
|
@ -774,7 +781,7 @@ fn process_close_lookup_table(
|
|||
let lookup_table_account = get_lookup_table_result.value.ok_or_else(|| {
|
||||
format!("Lookup table account {lookup_table_pubkey} not found, was it already closed?")
|
||||
})?;
|
||||
if !solana_address_lookup_table_program::check_id(&lookup_table_account.owner) {
|
||||
if !address_lookup_table::program::check_id(&lookup_table_account.owner) {
|
||||
return Err(format!(
|
||||
"Lookup table account {lookup_table_pubkey} is not owned by the Address Lookup Table program",
|
||||
)
|
||||
|
@ -827,7 +834,7 @@ fn process_show_lookup_table(
|
|||
let lookup_table_account = get_lookup_table_result.value.ok_or_else(|| {
|
||||
format!("Lookup table account {lookup_table_pubkey} not found, was it already closed?")
|
||||
})?;
|
||||
if !solana_address_lookup_table_program::check_id(&lookup_table_account.owner) {
|
||||
if !address_lookup_table::program::check_id(&lookup_table_account.owner) {
|
||||
return Err(format!(
|
||||
"Lookup table account {lookup_table_pubkey} is not owned by the Address Lookup Table program",
|
||||
)
|
||||
|
|
|
@ -42,7 +42,6 @@ serde = { workspace = true }
|
|||
serde_bytes = { workspace = true }
|
||||
serde_derive = { workspace = true }
|
||||
solana-accounts-db = { workspace = true }
|
||||
solana-address-lookup-table-program = { workspace = true }
|
||||
solana-bloom = { workspace = true }
|
||||
solana-client = { workspace = true }
|
||||
solana-cost-model = { workspace = true }
|
||||
|
|
|
@ -737,7 +737,6 @@ mod tests {
|
|||
unprocessed_transaction_storage::ThreadType,
|
||||
},
|
||||
crossbeam_channel::{unbounded, Receiver},
|
||||
solana_address_lookup_table_program::state::{AddressLookupTable, LookupTableMeta},
|
||||
solana_cost_model::cost_model::CostModel,
|
||||
solana_entry::entry::{next_entry, next_versioned_entry},
|
||||
solana_ledger::{
|
||||
|
@ -754,6 +753,10 @@ mod tests {
|
|||
solana_runtime::prioritization_fee_cache::PrioritizationFeeCache,
|
||||
solana_sdk::{
|
||||
account::AccountSharedData,
|
||||
address_lookup_table::{
|
||||
self,
|
||||
state::{AddressLookupTable, LookupTableMeta},
|
||||
},
|
||||
instruction::InstructionError,
|
||||
message::{v0, v0::MessageAddressTableLookup, MessageHeader, VersionedMessage},
|
||||
poh_config::PohConfig,
|
||||
|
@ -844,7 +847,7 @@ mod tests {
|
|||
) -> AccountSharedData {
|
||||
let data = address_lookup_table.serialize_for_tests().unwrap();
|
||||
let mut account =
|
||||
AccountSharedData::new(1, data.len(), &solana_address_lookup_table_program::id());
|
||||
AccountSharedData::new(1, data.len(), &address_lookup_table::program::id());
|
||||
account.set_data(data);
|
||||
bank.store_account(&account_address, &account);
|
||||
|
||||
|
|
|
@ -105,11 +105,14 @@ impl ReadWriteAccountSet {
|
|||
mod tests {
|
||||
use {
|
||||
super::ReadWriteAccountSet,
|
||||
solana_address_lookup_table_program::state::{AddressLookupTable, LookupTableMeta},
|
||||
solana_ledger::genesis_utils::GenesisConfigInfo,
|
||||
solana_runtime::{bank::Bank, genesis_utils::create_genesis_config},
|
||||
solana_sdk::{
|
||||
account::AccountSharedData,
|
||||
address_lookup_table::{
|
||||
self,
|
||||
state::{AddressLookupTable, LookupTableMeta},
|
||||
},
|
||||
hash::Hash,
|
||||
message::{
|
||||
v0::{self, MessageAddressTableLookup},
|
||||
|
@ -178,7 +181,7 @@ mod tests {
|
|||
let address_table_key = Pubkey::new_unique();
|
||||
let data = address_lookup_table.serialize_for_tests().unwrap();
|
||||
let mut account =
|
||||
AccountSharedData::new(1, data.len(), &solana_address_lookup_table_program::id());
|
||||
AccountSharedData::new(1, data.len(), &address_lookup_table::program::id());
|
||||
account.set_data(data);
|
||||
bank.store_account(&address_table_key, &account);
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
use {
|
||||
lazy_static::lazy_static,
|
||||
solana_sdk::{
|
||||
bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, compute_budget, ed25519_program,
|
||||
loader_v4, pubkey::Pubkey, secp256k1_program,
|
||||
address_lookup_table, bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable,
|
||||
compute_budget, ed25519_program, loader_v4, pubkey::Pubkey, secp256k1_program,
|
||||
},
|
||||
std::collections::HashMap,
|
||||
};
|
||||
|
@ -37,7 +37,7 @@ lazy_static! {
|
|||
(solana_vote_program::id(), solana_vote_program::vote_processor::DEFAULT_COMPUTE_UNITS),
|
||||
(solana_system_program::id(), solana_system_program::system_processor::DEFAULT_COMPUTE_UNITS),
|
||||
(compute_budget::id(), solana_compute_budget_program::DEFAULT_COMPUTE_UNITS),
|
||||
(solana_address_lookup_table_program::id(), solana_address_lookup_table_program::processor::DEFAULT_COMPUTE_UNITS),
|
||||
(address_lookup_table::program::id(), solana_address_lookup_table_program::processor::DEFAULT_COMPUTE_UNITS),
|
||||
(bpf_loader_upgradeable::id(), solana_bpf_loader_program::UPGRADEABLE_LOADER_COMPUTE_UNITS),
|
||||
(bpf_loader_deprecated::id(), solana_bpf_loader_program::DEPRECATED_LOADER_COMPUTE_UNITS),
|
||||
(bpf_loader::id(), solana_bpf_loader_program::DEFAULT_LOADER_COMPUTE_UNITS),
|
||||
|
|
|
@ -50,6 +50,11 @@ Create and manage accounts that track validator voting state and rewards.
|
|||
- Program id: `Vote111111111111111111111111111111111111111`
|
||||
- Instructions: [VoteInstruction](https://docs.rs/solana-vote-program/VERSION_FOR_DOCS_RS/solana_vote_program/vote_instruction/enum.VoteInstruction.html)
|
||||
|
||||
## Address Lookup Table Program
|
||||
|
||||
- Program id: `AddressLookupTab1e1111111111111111111111111`
|
||||
- Instructions: [AddressLookupTableInstruction](https://docs.rs/solana-sdk/VERSION_FOR_DOCS_RS/solana_sdk/address_lookup_table/instruction/enum.ProgramInstruction.html)
|
||||
|
||||
## BPF Loader
|
||||
|
||||
Deploys, upgrades, and executes programs on the chain.
|
||||
|
|
|
@ -4,9 +4,9 @@ use {
|
|||
add_lookup_table_account, assert_ix_error, new_address_lookup_table,
|
||||
overwrite_slot_hashes_with_slots, setup_test_context,
|
||||
},
|
||||
solana_address_lookup_table_program::instruction::close_lookup_table,
|
||||
solana_program_test::*,
|
||||
solana_sdk::{
|
||||
address_lookup_table::instruction::close_lookup_table,
|
||||
clock::Clock,
|
||||
instruction::InstructionError,
|
||||
pubkey::Pubkey,
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#![allow(dead_code)]
|
||||
use {
|
||||
solana_address_lookup_table_program::{
|
||||
id,
|
||||
processor::process_instruction,
|
||||
state::{AddressLookupTable, LookupTableMeta},
|
||||
},
|
||||
solana_address_lookup_table_program::processor::process_instruction,
|
||||
solana_program_test::*,
|
||||
solana_sdk::{
|
||||
account::AccountSharedData,
|
||||
address_lookup_table::{
|
||||
program::id,
|
||||
state::{AddressLookupTable, LookupTableMeta},
|
||||
},
|
||||
clock::Slot,
|
||||
hash::Hash,
|
||||
instruction::{Instruction, InstructionError},
|
||||
|
@ -80,11 +80,7 @@ pub async fn add_lookup_table_account(
|
|||
let rent = context.banks_client.get_rent().await.unwrap();
|
||||
let rent_exempt_balance = rent.minimum_balance(data.len());
|
||||
|
||||
let mut account = AccountSharedData::new(
|
||||
rent_exempt_balance,
|
||||
data.len(),
|
||||
&solana_address_lookup_table_program::id(),
|
||||
);
|
||||
let mut account = AccountSharedData::new(rent_exempt_balance, data.len(), &id());
|
||||
account.set_data_from_slice(&data);
|
||||
context.set_account(&account_address, &account);
|
||||
|
||||
|
|
|
@ -1,16 +1,22 @@
|
|||
use {
|
||||
assert_matches::assert_matches,
|
||||
common::{assert_ix_error, overwrite_slot_hashes_with_slots, setup_test_context},
|
||||
solana_address_lookup_table_program::{
|
||||
id,
|
||||
instruction::{create_lookup_table, create_lookup_table_signed},
|
||||
processor::process_instruction,
|
||||
state::{AddressLookupTable, LOOKUP_TABLE_META_SIZE},
|
||||
},
|
||||
solana_address_lookup_table_program::processor::process_instruction,
|
||||
solana_program_test::*,
|
||||
solana_sdk::{
|
||||
clock::Slot, feature_set, instruction::InstructionError, pubkey::Pubkey, rent::Rent,
|
||||
signature::Signer, signer::keypair::Keypair, transaction::Transaction,
|
||||
address_lookup_table::{
|
||||
instruction::{create_lookup_table, create_lookup_table_signed},
|
||||
program::id,
|
||||
state::{AddressLookupTable, LOOKUP_TABLE_META_SIZE},
|
||||
},
|
||||
clock::Slot,
|
||||
feature_set,
|
||||
instruction::InstructionError,
|
||||
pubkey::Pubkey,
|
||||
rent::Rent,
|
||||
signature::Signer,
|
||||
signer::keypair::Keypair,
|
||||
transaction::Transaction,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -3,11 +3,9 @@ use {
|
|||
common::{
|
||||
add_lookup_table_account, assert_ix_error, new_address_lookup_table, setup_test_context,
|
||||
},
|
||||
solana_address_lookup_table_program::{
|
||||
instruction::deactivate_lookup_table, state::AddressLookupTable,
|
||||
},
|
||||
solana_program_test::*,
|
||||
solana_sdk::{
|
||||
address_lookup_table::{instruction::deactivate_lookup_table, state::AddressLookupTable},
|
||||
instruction::InstructionError,
|
||||
pubkey::Pubkey,
|
||||
signature::{Keypair, Signer},
|
||||
|
|
|
@ -3,13 +3,13 @@ use {
|
|||
common::{
|
||||
add_lookup_table_account, assert_ix_error, new_address_lookup_table, setup_test_context,
|
||||
},
|
||||
solana_address_lookup_table_program::{
|
||||
instruction::extend_lookup_table,
|
||||
state::{AddressLookupTable, LookupTableMeta},
|
||||
},
|
||||
solana_program_test::*,
|
||||
solana_sdk::{
|
||||
account::{ReadableAccount, WritableAccount},
|
||||
address_lookup_table::{
|
||||
instruction::extend_lookup_table,
|
||||
state::{AddressLookupTable, LookupTableMeta},
|
||||
},
|
||||
clock::Clock,
|
||||
instruction::{Instruction, InstructionError},
|
||||
pubkey::{Pubkey, PUBKEY_BYTES},
|
||||
|
|
|
@ -3,11 +3,9 @@ use {
|
|||
common::{
|
||||
add_lookup_table_account, assert_ix_error, new_address_lookup_table, setup_test_context,
|
||||
},
|
||||
solana_address_lookup_table_program::{
|
||||
instruction::freeze_lookup_table, state::AddressLookupTable,
|
||||
},
|
||||
solana_program_test::*,
|
||||
solana_sdk::{
|
||||
address_lookup_table::{instruction::freeze_lookup_table, state::AddressLookupTable},
|
||||
instruction::InstructionError,
|
||||
pubkey::Pubkey,
|
||||
signature::{Keypair, Signer},
|
||||
|
|
|
@ -2,12 +2,14 @@
|
|||
#![cfg_attr(RUSTC_WITH_SPECIALIZATION, feature(specialization))]
|
||||
#![cfg_attr(RUSTC_NEEDS_PROC_MACRO_HYGIENE, feature(proc_macro_hygiene))]
|
||||
|
||||
use solana_program::declare_id;
|
||||
|
||||
pub mod error;
|
||||
pub mod instruction;
|
||||
#[cfg(not(target_os = "solana"))]
|
||||
pub mod processor;
|
||||
pub mod state;
|
||||
|
||||
declare_id!("AddressLookupTab1e1111111111111111111111111");
|
||||
#[deprecated(
|
||||
since = "1.17.0",
|
||||
note = "Please use `solana_sdk::address_lookup_table` instead"
|
||||
)]
|
||||
pub use solana_sdk::address_lookup_table::{
|
||||
error, instruction,
|
||||
program::{check_id, id, ID},
|
||||
state,
|
||||
};
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
use {
|
||||
crate::{
|
||||
instruction::ProgramInstruction,
|
||||
state::{
|
||||
AddressLookupTable, LookupTableMeta, LookupTableStatus, ProgramState,
|
||||
LOOKUP_TABLE_MAX_ADDRESSES, LOOKUP_TABLE_META_SIZE,
|
||||
},
|
||||
},
|
||||
solana_program_runtime::{declare_process_instruction, ic_msg, invoke_context::InvokeContext},
|
||||
solana_sdk::{
|
||||
address_lookup_table::{
|
||||
instruction::ProgramInstruction,
|
||||
program::{check_id, id},
|
||||
state::{
|
||||
AddressLookupTable, LookupTableMeta, LookupTableStatus, ProgramState,
|
||||
LOOKUP_TABLE_MAX_ADDRESSES, LOOKUP_TABLE_META_SIZE,
|
||||
},
|
||||
},
|
||||
clock::Slot,
|
||||
feature_set,
|
||||
instruction::InstructionError,
|
||||
|
@ -117,7 +118,7 @@ impl Processor {
|
|||
&derivation_slot.to_le_bytes(),
|
||||
&[bump_seed],
|
||||
],
|
||||
&crate::id(),
|
||||
&id(),
|
||||
)?;
|
||||
|
||||
if table_key != derived_table_key {
|
||||
|
@ -132,7 +133,7 @@ impl Processor {
|
|||
if invoke_context
|
||||
.feature_set
|
||||
.is_active(&feature_set::relax_authority_signer_check_for_lookup_table_creation::id())
|
||||
&& crate::check_id(&lookup_table_owner)
|
||||
&& check_id(&lookup_table_owner)
|
||||
{
|
||||
return Ok(());
|
||||
}
|
||||
|
@ -157,7 +158,7 @@ impl Processor {
|
|||
)?;
|
||||
|
||||
invoke_context.native_invoke(
|
||||
system_instruction::assign(&table_key, &crate::id()).into(),
|
||||
system_instruction::assign(&table_key, &id()).into(),
|
||||
&[table_key],
|
||||
)?;
|
||||
|
||||
|
@ -178,7 +179,7 @@ impl Processor {
|
|||
|
||||
let lookup_table_account =
|
||||
instruction_context.try_borrow_instruction_account(transaction_context, 0)?;
|
||||
if *lookup_table_account.get_owner() != crate::id() {
|
||||
if *lookup_table_account.get_owner() != id() {
|
||||
return Err(InstructionError::InvalidAccountOwner);
|
||||
}
|
||||
drop(lookup_table_account);
|
||||
|
@ -233,7 +234,7 @@ impl Processor {
|
|||
let lookup_table_account =
|
||||
instruction_context.try_borrow_instruction_account(transaction_context, 0)?;
|
||||
let table_key = *lookup_table_account.get_key();
|
||||
if *lookup_table_account.get_owner() != crate::id() {
|
||||
if *lookup_table_account.get_owner() != id() {
|
||||
return Err(InstructionError::InvalidAccountOwner);
|
||||
}
|
||||
drop(lookup_table_account);
|
||||
|
@ -348,7 +349,7 @@ impl Processor {
|
|||
|
||||
let lookup_table_account =
|
||||
instruction_context.try_borrow_instruction_account(transaction_context, 0)?;
|
||||
if *lookup_table_account.get_owner() != crate::id() {
|
||||
if *lookup_table_account.get_owner() != id() {
|
||||
return Err(InstructionError::InvalidAccountOwner);
|
||||
}
|
||||
drop(lookup_table_account);
|
||||
|
@ -397,7 +398,7 @@ impl Processor {
|
|||
|
||||
let lookup_table_account =
|
||||
instruction_context.try_borrow_instruction_account(transaction_context, 0)?;
|
||||
if *lookup_table_account.get_owner() != crate::id() {
|
||||
if *lookup_table_account.get_owner() != id() {
|
||||
return Err(InstructionError::InvalidAccountOwner);
|
||||
}
|
||||
drop(lookup_table_account);
|
||||
|
|
|
@ -4456,7 +4456,6 @@ dependencies = [
|
|||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-config-program",
|
||||
"solana-sdk",
|
||||
"spl-token",
|
||||
|
@ -4505,7 +4504,6 @@ dependencies = [
|
|||
"serde",
|
||||
"serde_derive",
|
||||
"siphasher",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-bpf-loader-program",
|
||||
"solana-bucket-map",
|
||||
"solana-compute-budget-program",
|
||||
|
@ -4812,7 +4810,6 @@ dependencies = [
|
|||
"serde_bytes",
|
||||
"serde_derive",
|
||||
"solana-accounts-db",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-bloom",
|
||||
"solana-client",
|
||||
"solana-cost-model",
|
||||
|
@ -5684,7 +5681,6 @@ name = "solana-sbf-rust-dep-crate"
|
|||
version = "1.17.0"
|
||||
dependencies = [
|
||||
"byteorder 1.4.3",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
|
@ -6255,7 +6251,6 @@ dependencies = [
|
|||
"serde_derive",
|
||||
"serde_json",
|
||||
"solana-account-decoder",
|
||||
"solana-address-lookup-table-program",
|
||||
"solana-sdk",
|
||||
"spl-associated-token-account",
|
||||
"spl-memo",
|
||||
|
|
|
@ -28,7 +28,6 @@ serde_json = "1.0.56"
|
|||
solana_rbpf = "=0.7.1"
|
||||
solana-account-decoder = { path = "../../account-decoder", version = "=1.17.0" }
|
||||
solana-accounts-db = { path = "../../accounts-db", version = "=1.17.0" }
|
||||
solana-address-lookup-table-program = { path = "../../programs/address-lookup-table", version = "=1.17.0" }
|
||||
solana-bpf-loader-program = { path = "../bpf_loader", version = "=1.17.0" }
|
||||
solana-cli-output = { path = "../../cli-output", version = "=1.17.0" }
|
||||
solana-ledger = { path = "../../ledger", version = "=1.17.0" }
|
||||
|
|
|
@ -12,7 +12,6 @@ edition = { workspace = true }
|
|||
[dependencies]
|
||||
byteorder = { workspace = true }
|
||||
# list of crates which must be buildable for bpf programs
|
||||
solana-address-lookup-table-program = { workspace = true }
|
||||
solana-program = { workspace = true }
|
||||
|
||||
[lib]
|
||||
|
|
|
@ -61,7 +61,6 @@ tokio-util = { workspace = true, features = ["codec", "compat"] }
|
|||
|
||||
[dev-dependencies]
|
||||
serial_test = { workspace = true }
|
||||
solana-address-lookup-table-program = { workspace = true }
|
||||
solana-net-utils = { workspace = true }
|
||||
solana-stake-program = { workspace = true }
|
||||
symlink = { workspace = true }
|
||||
|
|
|
@ -4631,7 +4631,6 @@ pub mod tests {
|
|||
jsonrpc_core_client::transports::local,
|
||||
serde::de::DeserializeOwned,
|
||||
solana_accounts_db::{inline_spl_token, inline_spl_token_2022},
|
||||
solana_address_lookup_table_program::state::{AddressLookupTable, LookupTableMeta},
|
||||
solana_entry::entry::next_versioned_entry,
|
||||
solana_gossip::socketaddr,
|
||||
solana_ledger::{
|
||||
|
@ -4653,6 +4652,10 @@ pub mod tests {
|
|||
},
|
||||
solana_sdk::{
|
||||
account::{Account, WritableAccount},
|
||||
address_lookup_table::{
|
||||
self,
|
||||
state::{AddressLookupTable, LookupTableMeta},
|
||||
},
|
||||
clock::MAX_RECENT_BLOCKHASHES,
|
||||
compute_budget::ComputeBudgetInstruction,
|
||||
fee_calculator::{FeeRateGovernor, DEFAULT_BURN_PERCENT},
|
||||
|
@ -4934,7 +4937,7 @@ pub mod tests {
|
|||
AccountSharedData::create(
|
||||
min_balance_lamports,
|
||||
address_table_data,
|
||||
solana_address_lookup_table_program::id(),
|
||||
address_lookup_table::program::id(),
|
||||
false,
|
||||
0,
|
||||
)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use {
|
||||
super::Bank,
|
||||
solana_address_lookup_table_program::error::AddressLookupError,
|
||||
solana_sdk::{
|
||||
address_lookup_table::error::AddressLookupError,
|
||||
message::{
|
||||
v0::{LoadedAddresses, MessageAddressTableLookup},
|
||||
AddressLoaderError,
|
||||
|
|
|
@ -91,7 +91,7 @@ pub static BUILTINS: &[BuiltinPrototype] = &[
|
|||
},
|
||||
BuiltinPrototype {
|
||||
feature_id: None,
|
||||
program_id: solana_address_lookup_table_program::id(),
|
||||
program_id: solana_sdk::address_lookup_table::program::id(),
|
||||
name: "address_lookup_table_program",
|
||||
entrypoint: solana_address_lookup_table_program::processor::process_instruction,
|
||||
},
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
use {
|
||||
crate::id,
|
||||
serde::{Deserialize, Serialize},
|
||||
solana_program::{
|
||||
crate::{
|
||||
address_lookup_table::program::id,
|
||||
clock::Slot,
|
||||
instruction::{AccountMeta, Instruction},
|
||||
pubkey::Pubkey,
|
||||
system_program,
|
||||
},
|
||||
serde::{Deserialize, Serialize},
|
||||
};
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
|
||||
|
@ -78,6 +78,33 @@ pub fn derive_lookup_table_address(
|
|||
)
|
||||
}
|
||||
|
||||
/// Constructs an instruction to create a table account and returns
|
||||
/// the instruction and the table account's derived address.
|
||||
fn create_lookup_table_common(
|
||||
authority_address: Pubkey,
|
||||
payer_address: Pubkey,
|
||||
recent_slot: Slot,
|
||||
authority_is_signer: bool,
|
||||
) -> (Instruction, Pubkey) {
|
||||
let (lookup_table_address, bump_seed) =
|
||||
derive_lookup_table_address(&authority_address, recent_slot);
|
||||
let instruction = Instruction::new_with_bincode(
|
||||
id(),
|
||||
&ProgramInstruction::CreateLookupTable {
|
||||
recent_slot,
|
||||
bump_seed,
|
||||
},
|
||||
vec![
|
||||
AccountMeta::new(lookup_table_address, false),
|
||||
AccountMeta::new_readonly(authority_address, authority_is_signer),
|
||||
AccountMeta::new(payer_address, true),
|
||||
AccountMeta::new_readonly(system_program::id(), false),
|
||||
],
|
||||
);
|
||||
|
||||
(instruction, lookup_table_address)
|
||||
}
|
||||
|
||||
/// Constructs an instruction to create a table account and returns
|
||||
/// the instruction and the table account's derived address.
|
||||
///
|
||||
|
@ -110,33 +137,6 @@ pub fn create_lookup_table(
|
|||
create_lookup_table_common(authority_address, payer_address, recent_slot, false)
|
||||
}
|
||||
|
||||
/// Constructs an instruction to create a table account and returns
|
||||
/// the instruction and the table account's derived address.
|
||||
fn create_lookup_table_common(
|
||||
authority_address: Pubkey,
|
||||
payer_address: Pubkey,
|
||||
recent_slot: Slot,
|
||||
authority_is_signer: bool,
|
||||
) -> (Instruction, Pubkey) {
|
||||
let (lookup_table_address, bump_seed) =
|
||||
derive_lookup_table_address(&authority_address, recent_slot);
|
||||
let instruction = Instruction::new_with_bincode(
|
||||
id(),
|
||||
&ProgramInstruction::CreateLookupTable {
|
||||
recent_slot,
|
||||
bump_seed,
|
||||
},
|
||||
vec![
|
||||
AccountMeta::new(lookup_table_address, false),
|
||||
AccountMeta::new_readonly(authority_address, authority_is_signer),
|
||||
AccountMeta::new(payer_address, true),
|
||||
AccountMeta::new_readonly(system_program::id(), false),
|
||||
],
|
||||
);
|
||||
|
||||
(instruction, lookup_table_address)
|
||||
}
|
||||
|
||||
/// Constructs an instruction that freezes an address lookup
|
||||
/// table so that it can never be closed or extended again. Empty
|
||||
/// lookup tables cannot be frozen.
|
|
@ -0,0 +1,20 @@
|
|||
//! The [address lookup table program][np].
|
||||
//!
|
||||
//! [np]: https://docs.solana.com/developing/runtime-facilities/programs#address-lookup-table-program
|
||||
|
||||
pub mod error;
|
||||
pub mod instruction;
|
||||
pub mod state;
|
||||
|
||||
pub mod program {
|
||||
crate::declare_id!("AddressLookupTab1e1111111111111111111111111");
|
||||
}
|
||||
|
||||
/// The definition of address lookup table accounts.
|
||||
///
|
||||
/// As used by the `crate::message::v0` message format.
|
||||
#[derive(Debug, PartialEq, Eq, Clone)]
|
||||
pub struct AddressLookupTableAccount {
|
||||
pub key: crate::pubkey::Pubkey,
|
||||
pub addresses: Vec<crate::pubkey::Pubkey>,
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
use {
|
||||
crate::error::AddressLookupError,
|
||||
serde::{Deserialize, Serialize},
|
||||
solana_frozen_abi_macro::{AbiEnumVisitor, AbiExample},
|
||||
solana_program::{
|
||||
address_lookup_table::error::AddressLookupError,
|
||||
clock::Slot,
|
||||
instruction::InstructionError,
|
||||
pubkey::Pubkey,
|
||||
|
@ -17,16 +17,6 @@ pub const LOOKUP_TABLE_MAX_ADDRESSES: usize = 256;
|
|||
/// The serialized size of lookup table metadata
|
||||
pub const LOOKUP_TABLE_META_SIZE: usize = 56;
|
||||
|
||||
/// Program account states
|
||||
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone, AbiExample, AbiEnumVisitor)]
|
||||
#[allow(clippy::large_enum_variant)]
|
||||
pub enum ProgramState {
|
||||
/// Account is not initialized.
|
||||
Uninitialized,
|
||||
/// Initialized `LookupTable` account.
|
||||
LookupTable(LookupTableMeta),
|
||||
}
|
||||
|
||||
/// Activation status of a lookup table
|
||||
#[derive(Debug, PartialEq, Eq, Clone)]
|
||||
pub enum LookupTableStatus {
|
||||
|
@ -112,6 +102,16 @@ impl LookupTableMeta {
|
|||
}
|
||||
}
|
||||
|
||||
/// Program account states
|
||||
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone, AbiExample, AbiEnumVisitor)]
|
||||
#[allow(clippy::large_enum_variant)]
|
||||
pub enum ProgramState {
|
||||
/// Account is not initialized.
|
||||
Uninitialized,
|
||||
/// Initialized `LookupTable` account.
|
||||
LookupTable(LookupTableMeta),
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Clone, AbiExample)]
|
||||
pub struct AddressLookupTable<'a> {
|
||||
pub meta: LookupTableMeta,
|
||||
|
@ -218,7 +218,7 @@ impl<'a> AddressLookupTable<'a> {
|
|||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use {super::*, solana_sdk::hash::Hash};
|
||||
use {super::*, crate::hash::Hash};
|
||||
|
||||
impl AddressLookupTable<'_> {
|
||||
fn new_for_tests(meta: LookupTableMeta, num_addresses: usize) -> Self {
|
|
@ -1,13 +0,0 @@
|
|||
//! The definition of address lookup table accounts.
|
||||
//!
|
||||
//! As used by the [`v0` message format][v0].
|
||||
//!
|
||||
//! [v0]: crate::message::v0
|
||||
|
||||
use solana_program::pubkey::Pubkey;
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Clone)]
|
||||
pub struct AddressLookupTableAccount {
|
||||
pub key: Pubkey,
|
||||
pub addresses: Vec<Pubkey>,
|
||||
}
|
|
@ -113,7 +113,7 @@ pub mod solana_rpc_client_nonce_utils {
|
|||
/// programs.
|
||||
pub mod solana_sdk {
|
||||
pub use crate::{
|
||||
address_lookup_table_account, hash, instruction, keccak, message, nonce,
|
||||
hash, instruction, keccak, message, nonce,
|
||||
pubkey::{self, Pubkey},
|
||||
system_instruction, system_program,
|
||||
sysvar::{
|
||||
|
@ -273,10 +273,20 @@ pub mod solana_sdk {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[deprecated(
|
||||
since = "1.17.0",
|
||||
note = "Please use `solana_sdk::address_lookup_table` instead"
|
||||
)]
|
||||
pub use crate::address_lookup_table as address_lookup_table_account;
|
||||
}
|
||||
|
||||
#[deprecated(
|
||||
since = "1.17.0",
|
||||
note = "Please use `solana_sdk::address_lookup_table` instead"
|
||||
)]
|
||||
pub mod solana_address_lookup_table_program {
|
||||
crate::declare_id!("AddressLookupTab1e1111111111111111111111111");
|
||||
pub use crate::address_lookup_table::program::{check_id, id, ID};
|
||||
|
||||
pub mod state {
|
||||
use {
|
||||
|
|
|
@ -471,7 +471,7 @@
|
|||
extern crate self as solana_program;
|
||||
|
||||
pub mod account_info;
|
||||
pub mod address_lookup_table_account;
|
||||
pub mod address_lookup_table;
|
||||
pub mod alt_bn128;
|
||||
pub(crate) mod atomic_u64;
|
||||
pub mod big_mod_exp;
|
||||
|
@ -534,6 +534,14 @@ pub mod sysvar;
|
|||
pub mod vote;
|
||||
pub mod wasm;
|
||||
|
||||
#[deprecated(
|
||||
since = "1.17.0",
|
||||
note = "Please use `solana_sdk::address_lookup_table::AddressLookupTableAccount` instead"
|
||||
)]
|
||||
pub mod address_lookup_table_account {
|
||||
pub use crate::address_lookup_table::AddressLookupTableAccount;
|
||||
}
|
||||
|
||||
#[cfg(target_os = "solana")]
|
||||
pub use solana_sdk_macro::wasm_bindgen_stub as wasm_bindgen;
|
||||
/// Re-export of [wasm-bindgen].
|
||||
|
|
|
@ -179,24 +179,22 @@ impl Message {
|
|||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// This example uses the [`solana_address_lookup_table_program`], [`solana_rpc_client`], [`solana_sdk`], and [`anyhow`] crates.
|
||||
/// This example uses the [`solana_rpc_client`], [`solana_sdk`], and [`anyhow`] crates.
|
||||
///
|
||||
/// [`solana_address_lookup_table_program`]: https://docs.rs/solana-address-lookup-table-program
|
||||
/// [`solana_rpc_client`]: https://docs.rs/solana-rpc-client
|
||||
/// [`solana_sdk`]: https://docs.rs/solana-sdk
|
||||
/// [`anyhow`]: https://docs.rs/anyhow
|
||||
///
|
||||
/// ```
|
||||
/// # use solana_program::example_mocks::{
|
||||
/// # solana_address_lookup_table_program,
|
||||
/// # solana_rpc_client,
|
||||
/// # solana_sdk,
|
||||
/// # };
|
||||
/// # use std::borrow::Cow;
|
||||
/// # use solana_sdk::account::Account;
|
||||
/// use anyhow::Result;
|
||||
/// use solana_address_lookup_table_program::state::AddressLookupTable;
|
||||
/// use solana_rpc_client::rpc_client::RpcClient;
|
||||
/// use solana_program::address_lookup_table::{self, state::{AddressLookupTable, LookupTableMeta}};
|
||||
/// use solana_sdk::{
|
||||
/// address_lookup_table_account::AddressLookupTableAccount,
|
||||
/// instruction::{AccountMeta, Instruction},
|
||||
|
@ -215,9 +213,10 @@ impl Message {
|
|||
/// # client.set_get_account_response(address_lookup_table_key, Account {
|
||||
/// # lamports: 1,
|
||||
/// # data: AddressLookupTable {
|
||||
/// # meta: LookupTableMeta::default(),
|
||||
/// # addresses: Cow::Owned(instruction.accounts.iter().map(|meta| meta.pubkey).collect()),
|
||||
/// # }.serialize_for_tests().unwrap(),
|
||||
/// # owner: solana_address_lookup_table_program::ID,
|
||||
/// # owner: address_lookup_table::program::id(),
|
||||
/// # executable: false,
|
||||
/// # rent_epoch: 1,
|
||||
/// # });
|
||||
|
|
|
@ -40,20 +40,21 @@ extern crate self as solana_sdk;
|
|||
pub use signer::signers;
|
||||
// These solana_program imports could be *-imported, but that causes a bunch of
|
||||
// confusing duplication in the docs due to a rustdoc bug. #26211
|
||||
#[allow(deprecated)]
|
||||
pub use solana_program::address_lookup_table_account;
|
||||
#[cfg(not(target_os = "solana"))]
|
||||
pub use solana_program::program_stubs;
|
||||
pub use solana_program::{
|
||||
account_info, address_lookup_table_account, alt_bn128, big_mod_exp, blake3, borsh, borsh0_10,
|
||||
borsh0_9, bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, clock, config,
|
||||
custom_heap_default, custom_panic_default, debug_account_data, declare_deprecated_sysvar_id,
|
||||
declare_sysvar_id, decode_error, ed25519_program, epoch_rewards, epoch_schedule,
|
||||
fee_calculator, impl_sysvar_get, incinerator, instruction, keccak, lamports,
|
||||
loader_instruction, loader_upgradeable_instruction, loader_v4, loader_v4_instruction, message,
|
||||
msg, native_token, nonce, poseidon, program, program_error, program_memory, program_option,
|
||||
program_pack, rent, sanitize, sdk_ids, secp256k1_program, secp256k1_recover, serde_varint,
|
||||
serialize_utils, short_vec, slot_hashes, slot_history, stable_layout, stake, stake_history,
|
||||
syscalls, system_instruction, system_program, sysvar, unchecked_div_by_const, vote,
|
||||
wasm_bindgen,
|
||||
account_info, address_lookup_table, alt_bn128, big_mod_exp, blake3, borsh, borsh0_10, borsh0_9,
|
||||
bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, clock, config, custom_heap_default,
|
||||
custom_panic_default, debug_account_data, declare_deprecated_sysvar_id, declare_sysvar_id,
|
||||
decode_error, ed25519_program, epoch_rewards, epoch_schedule, fee_calculator, impl_sysvar_get,
|
||||
incinerator, instruction, keccak, lamports, loader_instruction, loader_upgradeable_instruction,
|
||||
loader_v4, loader_v4_instruction, message, msg, native_token, nonce, poseidon, program,
|
||||
program_error, program_memory, program_option, program_pack, rent, sanitize, sdk_ids,
|
||||
secp256k1_program, secp256k1_recover, serde_varint, serialize_utils, short_vec, slot_hashes,
|
||||
slot_history, stable_layout, stake, stake_history, syscalls, system_instruction,
|
||||
system_program, sysvar, unchecked_div_by_const, vote, wasm_bindgen,
|
||||
};
|
||||
|
||||
pub mod account;
|
||||
|
|
|
@ -22,7 +22,6 @@ serde = { workspace = true }
|
|||
serde_derive = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
solana-account-decoder = { workspace = true }
|
||||
solana-address-lookup-table-program = { workspace = true }
|
||||
solana-sdk = { workspace = true }
|
||||
spl-associated-token-account = { workspace = true, features = ["no-entrypoint"] }
|
||||
spl-memo = { workspace = true, features = ["no-entrypoint"] }
|
||||
|
|
|
@ -4,8 +4,10 @@ use {
|
|||
},
|
||||
bincode::deserialize,
|
||||
serde_json::json,
|
||||
solana_address_lookup_table_program::instruction::ProgramInstruction,
|
||||
solana_sdk::{instruction::CompiledInstruction, message::AccountKeys},
|
||||
solana_sdk::{
|
||||
address_lookup_table::instruction::ProgramInstruction, instruction::CompiledInstruction,
|
||||
message::AccountKeys,
|
||||
},
|
||||
};
|
||||
|
||||
pub fn parse_address_lookup_table(
|
||||
|
@ -115,8 +117,9 @@ fn check_num_address_lookup_table_accounts(
|
|||
mod test {
|
||||
use {
|
||||
super::*,
|
||||
solana_address_lookup_table_program::instruction,
|
||||
solana_sdk::{message::Message, pubkey::Pubkey, system_program},
|
||||
solana_sdk::{
|
||||
address_lookup_table::instruction, message::Message, pubkey::Pubkey, system_program,
|
||||
},
|
||||
std::str::FromStr,
|
||||
};
|
||||
|
||||
|
|
|
@ -13,8 +13,8 @@ use {
|
|||
serde_json::Value,
|
||||
solana_account_decoder::parse_token::spl_token_ids,
|
||||
solana_sdk::{
|
||||
instruction::CompiledInstruction, message::AccountKeys, pubkey::Pubkey, stake,
|
||||
system_program, vote,
|
||||
address_lookup_table, instruction::CompiledInstruction, message::AccountKeys,
|
||||
pubkey::Pubkey, stake, system_program, vote,
|
||||
},
|
||||
std::{
|
||||
collections::HashMap,
|
||||
|
@ -24,7 +24,7 @@ use {
|
|||
};
|
||||
|
||||
lazy_static! {
|
||||
static ref ADDRESS_LOOKUP_PROGRAM_ID: Pubkey = solana_address_lookup_table_program::id();
|
||||
static ref ADDRESS_LOOKUP_PROGRAM_ID: Pubkey = address_lookup_table::program::id();
|
||||
static ref ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = spl_associated_token_id();
|
||||
static ref BPF_LOADER_PROGRAM_ID: Pubkey = solana_sdk::bpf_loader::id();
|
||||
static ref BPF_UPGRADEABLE_LOADER_PROGRAM_ID: Pubkey = solana_sdk::bpf_loader_upgradeable::id();
|
||||
|
|
Loading…
Reference in New Issue