Merge native programs parts into one unit (#7047)
This commit is contained in:
parent
42da1ce4e2
commit
d184d3a732
95
Cargo.lock
generated
95
Cargo.lock
generated
@ -3216,16 +3216,16 @@ dependencies = [
|
||||
"solana-budget-program 0.21.0",
|
||||
"solana-clap-utils 0.21.0",
|
||||
"solana-client 0.21.0",
|
||||
"solana-config-api 0.21.0",
|
||||
"solana-config-program 0.21.0",
|
||||
"solana-core 0.21.0",
|
||||
"solana-drone 0.21.0",
|
||||
"solana-logger 0.21.0",
|
||||
"solana-net-utils 0.21.0",
|
||||
"solana-runtime 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-stake-api 0.21.0",
|
||||
"solana-stake-program 0.21.0",
|
||||
"solana-storage-api 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
"solana-vote-signer 0.21.0",
|
||||
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -3252,22 +3252,13 @@ dependencies = [
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-config-api"
|
||||
name = "solana-config-program"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-sdk 0.21.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-config-program"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-config-api 0.21.0",
|
||||
"solana-logger 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
]
|
||||
@ -3281,7 +3272,6 @@ dependencies = [
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-config-api 0.21.0",
|
||||
"solana-config-program 0.21.0",
|
||||
"solana-logger 0.21.0",
|
||||
"solana-runtime 0.21.0",
|
||||
@ -3342,10 +3332,10 @@ dependencies = [
|
||||
"solana-reed-solomon-erasure 4.0.1-3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-runtime 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-stake-api 0.21.0",
|
||||
"solana-stake-program 0.21.0",
|
||||
"solana-storage-api 0.21.0",
|
||||
"solana-storage-program 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
"solana-vote-signer 0.21.0",
|
||||
"symlink 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -3455,9 +3445,9 @@ dependencies = [
|
||||
"solana-genesis-programs 0.21.0",
|
||||
"solana-ledger 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-stake-api 0.21.0",
|
||||
"solana-stake-program 0.21.0",
|
||||
"solana-storage-api 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@ -3470,19 +3460,15 @@ dependencies = [
|
||||
"solana-bpf-loader-program 0.21.0",
|
||||
"solana-budget-api 0.21.0",
|
||||
"solana-budget-program 0.21.0",
|
||||
"solana-config-api 0.21.0",
|
||||
"solana-config-program 0.21.0",
|
||||
"solana-exchange-api 0.21.0",
|
||||
"solana-exchange-program 0.21.0",
|
||||
"solana-runtime 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-stake-api 0.21.0",
|
||||
"solana-stake-program 0.21.0",
|
||||
"solana-storage-api 0.21.0",
|
||||
"solana-storage-program 0.21.0",
|
||||
"solana-vest-api 0.21.0",
|
||||
"solana-vest-program 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
]
|
||||
|
||||
@ -3523,7 +3509,7 @@ dependencies = [
|
||||
"sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-clap-utils 0.21.0",
|
||||
"solana-client 0.21.0",
|
||||
"solana-config-api 0.21.0",
|
||||
"solana-config-program 0.21.0",
|
||||
"solana-logger 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -3584,8 +3570,8 @@ dependencies = [
|
||||
"solana-reed-solomon-erasure 4.0.1-3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-runtime 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-stake-api 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
"solana-stake-program 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -3607,7 +3593,7 @@ dependencies = [
|
||||
"solana-logger 0.21.0",
|
||||
"solana-runtime 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -3633,7 +3619,7 @@ dependencies = [
|
||||
"serial_test 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serial_test_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-client 0.21.0",
|
||||
"solana-config-api 0.21.0",
|
||||
"solana-config-program 0.21.0",
|
||||
"solana-core 0.21.0",
|
||||
"solana-drone 0.21.0",
|
||||
"solana-exchange-api 0.21.0",
|
||||
@ -3644,11 +3630,11 @@ dependencies = [
|
||||
"solana-rayon-threadlimit 0.21.0",
|
||||
"solana-runtime 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-stake-api 0.21.0",
|
||||
"solana-stake-program 0.21.0",
|
||||
"solana-storage-api 0.21.0",
|
||||
"solana-storage-program 0.21.0",
|
||||
"solana-vest-api 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
"solana-vest-program 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
"symlink 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
@ -3869,10 +3855,8 @@ dependencies = [
|
||||
"solana-noop-program 0.21.0",
|
||||
"solana-rayon-threadlimit 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-stake-api 0.21.0",
|
||||
"solana-stake-program 0.21.0",
|
||||
"solana-storage-api 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -3921,7 +3905,7 @@ dependencies = [
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-stake-api"
|
||||
name = "solana-stake-program"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -3931,21 +3915,11 @@ dependencies = [
|
||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-config-api 0.21.0",
|
||||
"solana-config-program 0.21.0",
|
||||
"solana-logger 0.21.0",
|
||||
"solana-metrics 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-stake-program"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-logger 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-stake-api 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -3957,9 +3931,8 @@ dependencies = [
|
||||
"solana-logger 0.21.0",
|
||||
"solana-runtime 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-stake-api 0.21.0",
|
||||
"solana-stake-program 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -4023,14 +3996,14 @@ dependencies = [
|
||||
"solana-perf 0.21.0",
|
||||
"solana-runtime 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
"solana-vote-program 0.21.0",
|
||||
"solana-vote-signer 0.21.0",
|
||||
"tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-vest-api"
|
||||
name = "solana-vest-program"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -4040,23 +4013,13 @@ dependencies = [
|
||||
"num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-config-api 0.21.0",
|
||||
"solana-config-program 0.21.0",
|
||||
"solana-runtime 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-vest-program"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-logger 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-vest-api 0.21.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-vote-api"
|
||||
name = "solana-vote-program"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -4070,16 +4033,6 @@ dependencies = [
|
||||
"solana-sdk 0.21.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-vote-program"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-logger 0.21.0",
|
||||
"solana-sdk 0.21.0",
|
||||
"solana-vote-api 0.21.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-vote-signer"
|
||||
version = "0.21.0"
|
||||
|
12
Cargo.toml
12
Cargo.toml
@ -31,23 +31,19 @@ members = [
|
||||
"programs/btc_spv_program",
|
||||
"programs/btc_spv_api",
|
||||
"programs/btc_spv_bin",
|
||||
"programs/config_api",
|
||||
"programs/config_program",
|
||||
"programs/config",
|
||||
"programs/config_tests",
|
||||
"programs/exchange_api",
|
||||
"programs/exchange_program",
|
||||
"programs/failure_program",
|
||||
"programs/noop_program",
|
||||
"programs/ownable_api",
|
||||
"programs/stake_api",
|
||||
"programs/stake_program",
|
||||
"programs/stake",
|
||||
"programs/stake_tests",
|
||||
"programs/storage_api",
|
||||
"programs/storage_program",
|
||||
"programs/vest_api",
|
||||
"programs/vest_program",
|
||||
"programs/vote_api",
|
||||
"programs/vote_program",
|
||||
"programs/vest",
|
||||
"programs/vote",
|
||||
"archiver",
|
||||
"runtime",
|
||||
"sdk",
|
||||
|
@ -26,10 +26,8 @@ declare print_free_tree=(
|
||||
'sdk/bpf/rust/rust-utils'
|
||||
'sdk/src'
|
||||
'programs/bpf/rust'
|
||||
'programs/stake_api/src'
|
||||
'programs/stake_program/src'
|
||||
'programs/vote_api/src'
|
||||
'programs/vote_program/src'
|
||||
'programs/stake/src'
|
||||
'programs/vote/src'
|
||||
)
|
||||
|
||||
if _ git --no-pager grep -n --max-depth=0 "${prints[@]/#/-e }" -- "${print_free_tree[@]}"; then
|
||||
|
@ -30,15 +30,15 @@ serde_yaml = "0.8.11"
|
||||
solana-budget-api = { path = "../programs/budget_api", version = "0.21.0" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.0" }
|
||||
solana-client = { path = "../client", version = "0.21.0" }
|
||||
solana-config-api = { path = "../programs/config_api", version = "0.21.0" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.0" }
|
||||
solana-drone = { path = "../drone", version = "0.21.0" }
|
||||
solana-logger = { path = "../logger", version = "0.21.0" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.0" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.0" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.0" }
|
||||
solana-stake-api = { path = "../programs/stake_api", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.0" }
|
||||
solana-storage-api = { path = "../programs/storage_api", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../programs/vote_api", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.0" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "0.21.0" }
|
||||
url = "2.1.0"
|
||||
|
||||
|
@ -29,9 +29,9 @@ use solana_sdk::{
|
||||
system_transaction,
|
||||
transaction::{Transaction, TransactionError},
|
||||
};
|
||||
use solana_stake_api::stake_state::{Lockup, StakeAuthorize};
|
||||
use solana_stake_program::stake_state::{Lockup, StakeAuthorize};
|
||||
use solana_storage_api::storage_instruction::StorageAccountType;
|
||||
use solana_vote_api::vote_state::VoteAuthorize;
|
||||
use solana_vote_program::vote_state::VoteAuthorize;
|
||||
use std::{
|
||||
fs::File,
|
||||
io::{Read, Write},
|
||||
|
@ -18,12 +18,12 @@ use solana_sdk::{
|
||||
},
|
||||
transaction::Transaction,
|
||||
};
|
||||
use solana_stake_api::stake_state::Meta;
|
||||
use solana_stake_api::{
|
||||
use solana_stake_program::stake_state::Meta;
|
||||
use solana_stake_program::{
|
||||
stake_instruction::{self, StakeError},
|
||||
stake_state::{Authorized, Lockup, StakeAuthorize, StakeState},
|
||||
};
|
||||
use solana_vote_api::vote_state::VoteState;
|
||||
use solana_vote_program::vote_state::VoteState;
|
||||
use std::ops::Deref;
|
||||
|
||||
pub trait StakeSubCommands {
|
||||
@ -536,7 +536,7 @@ pub fn process_show_stake_account(
|
||||
use_lamports_unit: bool,
|
||||
) -> ProcessResult {
|
||||
let stake_account = rpc_client.get_account(stake_account_pubkey)?;
|
||||
if stake_account.owner != solana_stake_api::id() {
|
||||
if stake_account.owner != solana_stake_program::id() {
|
||||
return Err(CliError::RpcRequestError(
|
||||
format!("{:?} is not a stake account", stake_account_pubkey).to_string(),
|
||||
)
|
||||
|
@ -13,7 +13,7 @@ use solana_clap_utils::{
|
||||
input_validators::{is_pubkey, is_url},
|
||||
};
|
||||
use solana_client::rpc_client::RpcClient;
|
||||
use solana_config_api::{config_instruction, get_config_data, ConfigKeys, ConfigState};
|
||||
use solana_config_program::{config_instruction, get_config_data, ConfigKeys, ConfigState};
|
||||
use solana_sdk::{
|
||||
account::Account,
|
||||
commitment_config::CommitmentConfig,
|
||||
@ -137,7 +137,7 @@ fn parse_validator_info(
|
||||
pubkey: &Pubkey,
|
||||
account: &Account,
|
||||
) -> Result<(Pubkey, Map<String, serde_json::value::Value>), Box<dyn error::Error>> {
|
||||
if account.owner != solana_config_api::id() {
|
||||
if account.owner != solana_config_program::id() {
|
||||
return Err(format!("{} is not a validator info account", pubkey).into());
|
||||
}
|
||||
let key_list: ConfigKeys = deserialize(&account.data)?;
|
||||
@ -281,7 +281,7 @@ pub fn process_set_validator_info(
|
||||
info: validator_string,
|
||||
};
|
||||
// Check for existing validator-info account
|
||||
let all_config = rpc_client.get_program_accounts(&solana_config_api::id())?;
|
||||
let all_config = rpc_client.get_program_accounts(&solana_config_program::id())?;
|
||||
let existing_account = all_config
|
||||
.iter()
|
||||
.filter(|(_, account)| {
|
||||
@ -371,7 +371,7 @@ pub fn process_get_validator_info(rpc_client: &RpcClient, pubkey: Option<Pubkey>
|
||||
rpc_client.get_account(&validator_info_pubkey)?,
|
||||
)]
|
||||
} else {
|
||||
let all_config = rpc_client.get_program_accounts(&solana_config_api::id())?;
|
||||
let all_config = rpc_client.get_program_accounts(&solana_config_program::id())?;
|
||||
all_config
|
||||
.into_iter()
|
||||
.filter(|(_, validator_info_account)| {
|
||||
@ -494,7 +494,7 @@ mod tests {
|
||||
parse_validator_info(
|
||||
&Pubkey::default(),
|
||||
&Account {
|
||||
owner: solana_config_api::id(),
|
||||
owner: solana_config_program::id(),
|
||||
data,
|
||||
..Account::default()
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ use solana_sdk::{
|
||||
account::Account, pubkey::Pubkey, signature::KeypairUtil, system_instruction::SystemError,
|
||||
transaction::Transaction,
|
||||
};
|
||||
use solana_vote_api::{
|
||||
use solana_vote_program::{
|
||||
vote_instruction::{self, VoteError},
|
||||
vote_state::{VoteAuthorize, VoteInit, VoteState},
|
||||
};
|
||||
@ -309,7 +309,7 @@ fn get_vote_account(
|
||||
) -> Result<(Account, VoteState), Box<dyn std::error::Error>> {
|
||||
let vote_account = rpc_client.get_account(vote_account_pubkey)?;
|
||||
|
||||
if vote_account.owner != solana_vote_api::id() {
|
||||
if vote_account.owner != solana_vote_program::id() {
|
||||
return Err(CliError::RpcRequestError(
|
||||
format!("{:?} is not a vote account", vote_account_pubkey).to_string(),
|
||||
)
|
||||
|
@ -57,10 +57,10 @@ solana-net-utils = { path = "../net-utils", version = "0.21.0" }
|
||||
solana-perf = { path = "../perf", version = "0.21.0" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.0" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.0" }
|
||||
solana-stake-api = { path = "../programs/stake_api", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.0" }
|
||||
solana-storage-api = { path = "../programs/storage_api", version = "0.21.0" }
|
||||
solana-storage-program = { path = "../programs/storage_program", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../programs/vote_api", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.0" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "0.21.0" }
|
||||
symlink = "0.1.0"
|
||||
sys-info = "0.5.8"
|
||||
|
@ -86,8 +86,8 @@ mod tests {
|
||||
use solana_sdk::hash::Hash;
|
||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||
use solana_sdk::transaction::Transaction;
|
||||
use solana_vote_api::vote_instruction;
|
||||
use solana_vote_api::vote_state::Vote;
|
||||
use solana_vote_program::vote_instruction;
|
||||
use solana_vote_program::vote_state::Vote;
|
||||
|
||||
#[test]
|
||||
fn test_max_vote_tx_fits() {
|
||||
|
@ -1,7 +1,7 @@
|
||||
use crate::result::{Error, Result};
|
||||
use solana_runtime::bank::Bank;
|
||||
use solana_sdk::clock::Slot;
|
||||
use solana_vote_api::{vote_state::VoteState, vote_state::MAX_LOCKOUT_HISTORY};
|
||||
use solana_vote_program::{vote_state::VoteState, vote_state::MAX_LOCKOUT_HISTORY};
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
sync::atomic::{AtomicBool, Ordering},
|
||||
@ -238,8 +238,8 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::genesis_utils::{create_genesis_config, GenesisConfigInfo};
|
||||
use solana_sdk::pubkey::Pubkey;
|
||||
use solana_stake_api::stake_state;
|
||||
use solana_vote_api::vote_state;
|
||||
use solana_stake_program::stake_state;
|
||||
use solana_vote_program::vote_state;
|
||||
|
||||
#[test]
|
||||
fn test_block_commitment() {
|
||||
|
@ -2,7 +2,7 @@ use solana_ledger::bank_forks::BankForks;
|
||||
use solana_metrics::datapoint_debug;
|
||||
use solana_runtime::bank::Bank;
|
||||
use solana_sdk::{account::Account, clock::Slot, hash::Hash, pubkey::Pubkey};
|
||||
use solana_vote_api::vote_state::{Lockout, Vote, VoteState, MAX_LOCKOUT_HISTORY};
|
||||
use solana_vote_program::vote_state::{Lockout, Vote, VoteState, MAX_LOCKOUT_HISTORY};
|
||||
use std::{
|
||||
collections::{HashMap, HashSet},
|
||||
sync::Arc,
|
||||
|
@ -28,7 +28,7 @@ use solana_sdk::{
|
||||
timing::{self, duration_as_ms},
|
||||
transaction::Transaction,
|
||||
};
|
||||
use solana_vote_api::vote_instruction;
|
||||
use solana_vote_program::vote_instruction;
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
collections::HashSet,
|
||||
@ -1081,7 +1081,7 @@ mod test {
|
||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||
use solana_sdk::system_transaction;
|
||||
use solana_sdk::transaction::TransactionError;
|
||||
use solana_vote_api::vote_state::VoteState;
|
||||
use solana_vote_program::vote_state::VoteState;
|
||||
use std::fs::remove_dir_all;
|
||||
use std::iter::FromIterator;
|
||||
use std::sync::{Arc, RwLock};
|
||||
|
@ -30,7 +30,7 @@ use solana_sdk::{
|
||||
signature::Signature,
|
||||
transaction::{self, Transaction},
|
||||
};
|
||||
use solana_vote_api::vote_state::{VoteState, MAX_LOCKOUT_HISTORY};
|
||||
use solana_vote_program::vote_state::{VoteState, MAX_LOCKOUT_HISTORY};
|
||||
use std::{
|
||||
net::{SocketAddr, UdpSocket},
|
||||
sync::{Arc, RwLock},
|
||||
|
@ -9,7 +9,7 @@ use solana_runtime::bank::Bank;
|
||||
use solana_sdk::{
|
||||
account::Account, clock::Slot, pubkey::Pubkey, signature::Signature, transaction,
|
||||
};
|
||||
use solana_vote_api::vote_state::MAX_LOCKOUT_HISTORY;
|
||||
use solana_vote_program::vote_state::MAX_LOCKOUT_HISTORY;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::{Arc, RwLock};
|
||||
|
||||
|
@ -14,20 +14,16 @@ solana-bpf-loader-api = { path = "../programs/bpf_loader_api", version = "0.21.0
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader_program", version = "0.21.0" }
|
||||
solana-budget-api = { path = "../programs/budget_api", version = "0.21.0" }
|
||||
solana-budget-program = { path = "../programs/budget_program", version = "0.21.0" }
|
||||
solana-config-api = { path = "../programs/config_api", version = "0.21.0" }
|
||||
solana-config-program = { path = "../programs/config_program", version = "0.21.0" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.0" }
|
||||
solana-exchange-api = { path = "../programs/exchange_api", version = "0.21.0" }
|
||||
solana-exchange-program = { path = "../programs/exchange_program", version = "0.21.0" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.0" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.0" }
|
||||
solana-stake-api = { path = "../programs/stake_api", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../programs/stake_program", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.0" }
|
||||
solana-storage-api = { path = "../programs/storage_api", version = "0.21.0" }
|
||||
solana-storage-program = { path = "../programs/storage_program", version = "0.21.0" }
|
||||
solana-vest-api = { path = "../programs/vest_api", version = "0.21.0" }
|
||||
solana-vest-program = { path = "../programs/vest_program", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../programs/vote_api", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote_program", version = "0.21.0" }
|
||||
solana-vest-program = { path = "../programs/vest", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.0" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@ -19,7 +19,7 @@ solana-clap-utils = { path = "../clap-utils", version = "0.21.0" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.0" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.0" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.0" }
|
||||
solana-stake-api = { path = "../programs/stake_api", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.0" }
|
||||
solana-storage-api = { path = "../programs/storage_api", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../programs/vote_api", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.0" }
|
||||
tempfile = "3.1.0"
|
||||
|
@ -20,9 +20,9 @@ use solana_sdk::{
|
||||
signature::{read_keypair_file, Keypair, KeypairUtil},
|
||||
system_program, timing,
|
||||
};
|
||||
use solana_stake_api::stake_state;
|
||||
use solana_stake_program::stake_state;
|
||||
use solana_storage_api::storage_contract;
|
||||
use solana_vote_api::vote_state;
|
||||
use solana_vote_program::vote_state;
|
||||
use std::{collections::HashMap, error, fs::File, io, path::PathBuf, str::FromStr, time::Duration};
|
||||
|
||||
pub enum AccountFileFormat {
|
||||
@ -446,7 +446,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
||||
|
||||
// add genesis stuff from storage and stake
|
||||
solana_storage_api::rewards_pools::add_genesis_accounts(&mut genesis_config);
|
||||
solana_stake_api::add_genesis_accounts(&mut genesis_config);
|
||||
solana_stake_program::add_genesis_accounts(&mut genesis_config);
|
||||
|
||||
create_new_ledger(&ledger_path, &genesis_config)?;
|
||||
Ok(())
|
||||
|
@ -29,7 +29,7 @@ serde_yaml = "0.8.11"
|
||||
sha2 = "0.8.0"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.0" }
|
||||
solana-client = { path = "../client", version = "0.21.0" }
|
||||
solana-config-api = { path = "../programs/config_api", version = "0.21.0" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.0" }
|
||||
solana-logger = { path = "../logger", version = "0.21.0" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.0" }
|
||||
tar = "0.4.26"
|
||||
|
@ -6,7 +6,7 @@ use console::{style, Emoji};
|
||||
use indicatif::{ProgressBar, ProgressStyle};
|
||||
use sha2::{Digest, Sha256};
|
||||
use solana_client::rpc_client::RpcClient;
|
||||
use solana_config_api::{config_instruction, get_config_data};
|
||||
use solana_config_program::{config_instruction, get_config_data};
|
||||
use solana_sdk::message::Message;
|
||||
use solana_sdk::pubkey::Pubkey;
|
||||
use solana_sdk::signature::{read_keypair_file, Keypair, KeypairUtil, Signable};
|
||||
|
@ -1,5 +1,5 @@
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use solana_config_api::ConfigState;
|
||||
use solana_config_program::ConfigState;
|
||||
use solana_sdk::pubkey::Pubkey;
|
||||
use solana_sdk::signature::{Signable, Signature};
|
||||
use std::borrow::Cow;
|
||||
|
@ -20,7 +20,7 @@ solana-ledger = { path = "../ledger", version = "0.21.0" }
|
||||
solana-logger = { path = "../logger", version = "0.21.0" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.0" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../programs/vote_api", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.0" }
|
||||
|
||||
[dev-dependencies]
|
||||
assert_cmd = "0.11"
|
||||
|
@ -12,7 +12,7 @@ use solana_sdk::{
|
||||
clock::Slot, genesis_config::GenesisConfig, instruction_processor_utils::limited_deserialize,
|
||||
native_token::lamports_to_sol, pubkey::Pubkey,
|
||||
};
|
||||
use solana_vote_api::vote_state::VoteState;
|
||||
use solana_vote_program::vote_state::VoteState;
|
||||
use std::{
|
||||
collections::{BTreeMap, HashMap, HashSet},
|
||||
ffi::OsStr,
|
||||
@ -76,10 +76,10 @@ fn output_slot(blocktree: &Blocktree, slot: Slot, method: &LedgerOutputMethod) {
|
||||
}
|
||||
|
||||
let mut raw = true;
|
||||
if program_pubkey == solana_vote_api::id() {
|
||||
if program_pubkey == solana_vote_program::id() {
|
||||
if let Ok(vote_instruction) =
|
||||
limited_deserialize::<
|
||||
solana_vote_api::vote_instruction::VoteInstruction,
|
||||
solana_vote_program::vote_instruction::VoteInstruction,
|
||||
>(&instruction.data)
|
||||
{
|
||||
println!(" {:?}", vote_instruction);
|
||||
|
@ -39,8 +39,8 @@ ed25519-dalek = "1.0.0-pre.1"
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.0" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.0" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.0" }
|
||||
solana-stake-api = { path = "../programs/stake_api", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../programs/vote_api", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.0" }
|
||||
sys-info = "0.5.8"
|
||||
tar = "0.4.26"
|
||||
tempfile = "3.1.0"
|
||||
|
@ -4,7 +4,7 @@ use solana_sdk::{
|
||||
clock::{Epoch, Slot},
|
||||
pubkey::Pubkey,
|
||||
};
|
||||
use solana_vote_api::vote_state::VoteState;
|
||||
use solana_vote_program::vote_state::VoteState;
|
||||
use std::{borrow::Borrow, collections::HashMap};
|
||||
|
||||
/// Looks through vote accounts, and finds the latest slot that has achieved
|
||||
@ -113,11 +113,11 @@ pub(crate) mod tests {
|
||||
},
|
||||
transaction::Transaction,
|
||||
};
|
||||
use solana_stake_api::{
|
||||
use solana_stake_program::{
|
||||
stake_instruction,
|
||||
stake_state::{Authorized, Stake},
|
||||
};
|
||||
use solana_vote_api::{vote_instruction, vote_state::VoteInit};
|
||||
use solana_vote_program::{vote_instruction, vote_state::VoteInit};
|
||||
use std::sync::Arc;
|
||||
|
||||
fn new_from_parent(parent: &Arc<Bank>, slot: Slot) -> Bank {
|
||||
@ -180,6 +180,7 @@ pub(crate) mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_epoch_stakes_and_lockouts() {
|
||||
solana_logger::setup();
|
||||
let stake = BOOTSTRAP_LEADER_LAMPORTS * 100;
|
||||
let leader_stake = Stake {
|
||||
stake: BOOTSTRAP_LEADER_LAMPORTS,
|
||||
|
@ -11,7 +11,7 @@ homepage = "https://solana.com/"
|
||||
[dependencies]
|
||||
log = "0.4.8"
|
||||
rand = "0.6.5"
|
||||
solana-config-api = { path = "../programs/config_api", version = "0.21.0" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.0" }
|
||||
solana-core = { path = "../core", version = "0.21.0" }
|
||||
solana-client = { path = "../client", version = "0.21.0" }
|
||||
solana-drone = { path = "../drone", version = "0.21.0" }
|
||||
@ -22,11 +22,11 @@ solana-ledger = { path = "../ledger", version = "0.21.0" }
|
||||
solana-logger = { path = "../logger", version = "0.21.0" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.0" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.0" }
|
||||
solana-stake-api = { path = "../programs/stake_api", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.0" }
|
||||
solana-storage-api = { path = "../programs/storage_api", version = "0.21.0" }
|
||||
solana-storage-program = { path = "../programs/storage_program", version = "0.21.0" }
|
||||
solana-vest-api = { path = "../programs/vest_api", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../programs/vote_api", version = "0.21.0" }
|
||||
solana-vest-program = { path = "../programs/vest", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.0" }
|
||||
symlink = "0.1.0"
|
||||
tempfile = "3.1.0"
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.0" }
|
||||
|
@ -23,7 +23,7 @@ use solana_sdk::{
|
||||
system_transaction,
|
||||
transaction::Transaction,
|
||||
};
|
||||
use solana_stake_api::{
|
||||
use solana_stake_program::{
|
||||
config as stake_config, stake_instruction,
|
||||
stake_state::{Authorized as StakeAuthorized, StakeState},
|
||||
};
|
||||
@ -31,7 +31,7 @@ use solana_storage_api::{
|
||||
storage_contract,
|
||||
storage_instruction::{self, StorageAccountType},
|
||||
};
|
||||
use solana_vote_api::{
|
||||
use solana_vote_program::{
|
||||
vote_instruction,
|
||||
vote_state::{VoteInit, VoteState},
|
||||
};
|
||||
|
@ -416,10 +416,10 @@ fn test_softlaunch_operating_mode() {
|
||||
|
||||
// Programs that are not available at soft launch
|
||||
for program_id in [
|
||||
&solana_config_api::id(),
|
||||
&solana_config_program::id(),
|
||||
&solana_sdk::bpf_loader::id(),
|
||||
&solana_sdk::system_program::id(),
|
||||
&solana_vest_api::id(),
|
||||
&solana_vest_program::id(),
|
||||
]
|
||||
.iter()
|
||||
{
|
||||
|
@ -9,8 +9,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
bincode = "1.2.0"
|
||||
log = "0.4.8"
|
||||
solana-config-api = { path = "../config_api", version = "0.21.0" }
|
||||
serde = "1.0.102"
|
||||
serde_derive = "1.0.102"
|
||||
solana-logger = { path = "../../logger", version = "0.21.0" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.0" }
|
||||
|
@ -29,7 +29,7 @@ pub fn process_instruction(
|
||||
.collect();
|
||||
|
||||
if current_signer_keys.is_empty() {
|
||||
// Config account keypair must be a signer on account initilization,
|
||||
// Config account keypair must be a signer on account initialization,
|
||||
// or when no signers specified in Config data
|
||||
if config_keyed_account.signer_key().is_none() {
|
||||
error!("account[0].signer_key().is_none()");
|
@ -1,18 +1,21 @@
|
||||
pub mod config_instruction;
|
||||
pub mod config_processor;
|
||||
|
||||
use crate::config_processor::process_instruction;
|
||||
use bincode::{deserialize, serialize, serialized_size};
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use solana_sdk::{account::Account, pubkey::Pubkey, short_vec};
|
||||
|
||||
pub mod config_instruction;
|
||||
pub mod config_processor;
|
||||
|
||||
const CONFIG_PROGRAM_ID: [u8; 32] = [
|
||||
3, 6, 74, 163, 0, 47, 116, 220, 200, 110, 67, 49, 15, 12, 5, 42, 248, 197, 218, 39, 246, 16,
|
||||
64, 25, 163, 35, 239, 160, 0, 0, 0, 0,
|
||||
];
|
||||
|
||||
solana_sdk::solana_name_id!(
|
||||
solana_sdk::declare_program!(
|
||||
CONFIG_PROGRAM_ID,
|
||||
"Config1111111111111111111111111111111111111"
|
||||
"Config1111111111111111111111111111111111111",
|
||||
solana_config_program,
|
||||
process_instruction
|
||||
);
|
||||
|
||||
pub trait ConfigState: serde::Serialize + Default {
|
@ -1,21 +0,0 @@
|
||||
[package]
|
||||
name = "solana-config-api"
|
||||
version = "0.21.0"
|
||||
description = "config program API"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
bincode = "1.2.0"
|
||||
log = "0.4.8"
|
||||
serde = "1.0.102"
|
||||
serde_derive = "1.0.102"
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.0" }
|
||||
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
name = "solana_config_api"
|
@ -1,9 +0,0 @@
|
||||
#[macro_export]
|
||||
macro_rules! solana_config_program {
|
||||
() => {
|
||||
("solana_config_program".to_string(), solana_config_api::id())
|
||||
};
|
||||
}
|
||||
use solana_config_api::config_processor::process_instruction;
|
||||
|
||||
solana_sdk::solana_entrypoint!(process_instruction);
|
@ -15,8 +15,7 @@ serde = "1.0.102"
|
||||
serde_derive = "1.0.102"
|
||||
solana-logger = { path = "../../logger", version = "0.21.0" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.0" }
|
||||
solana-config-api = { path = "../config_api", version = "0.21.0" }
|
||||
solana-config-program = { path = "../config_program", version = "0.21.0" }
|
||||
solana-config-program = { path = "../config", version = "0.21.0" }
|
||||
|
||||
|
||||
[dev-dependencies]
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
use bincode::{deserialize, serialized_size};
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use solana_config_api::{
|
||||
use solana_config_program::{
|
||||
config_instruction, config_processor::process_instruction, get_config_data, id, ConfigKeys,
|
||||
ConfigState,
|
||||
};
|
||||
|
@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "solana-stake-api"
|
||||
name = "solana-stake-program"
|
||||
version = "0.21.0"
|
||||
description = "Solana Stake program API"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
@ -19,9 +19,9 @@ serde_derive = "1.0.102"
|
||||
solana-logger = { path = "../../logger", version = "0.21.0" }
|
||||
solana-metrics = { path = "../../metrics", version = "0.21.0" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../vote_api", version = "0.21.0" }
|
||||
solana-config-api = { path = "../config_api", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../vote", version = "0.21.0" }
|
||||
solana-config-program = { path = "../config", version = "0.21.0" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
name = "solana_stake_api"
|
||||
crate-type = ["lib", "cdylib"]
|
||||
name = "solana_stake_program"
|
@ -2,7 +2,7 @@
|
||||
//! carries variables that the stake program cares about
|
||||
use bincode::{deserialize, serialized_size};
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use solana_config_api::{create_config_account, get_config_data, ConfigState};
|
||||
use solana_config_program::{create_config_account, get_config_data, ConfigState};
|
||||
use solana_sdk::{
|
||||
account::{Account, KeyedAccount},
|
||||
instruction::InstructionError,
|
@ -1,5 +1,6 @@
|
||||
use crate::config::create_genesis_account;
|
||||
use crate::rewards_pools::create_rewards_accounts;
|
||||
use crate::stake_instruction::process_instruction;
|
||||
use solana_sdk::genesis_config::GenesisConfig;
|
||||
|
||||
pub mod config;
|
||||
@ -12,9 +13,11 @@ const STAKE_PROGRAM_ID: [u8; 32] = [
|
||||
120, 114, 43, 104, 164, 157, 192, 0, 0, 0, 0,
|
||||
];
|
||||
|
||||
solana_sdk::solana_name_id!(
|
||||
solana_sdk::declare_program!(
|
||||
STAKE_PROGRAM_ID,
|
||||
"Stake11111111111111111111111111111111111111"
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
solana_stake_program,
|
||||
process_instruction
|
||||
);
|
||||
|
||||
pub fn add_genesis_accounts(genesis_config: &mut GenesisConfig) {
|
@ -17,7 +17,7 @@ use solana_sdk::{
|
||||
stake_history::{StakeHistory, StakeHistoryEntry},
|
||||
},
|
||||
};
|
||||
use solana_vote_api::vote_state::VoteState;
|
||||
use solana_vote_program::vote_state::VoteState;
|
||||
use std::collections::HashSet;
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Copy)]
|
||||
@ -804,7 +804,7 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::id;
|
||||
use solana_sdk::{account::Account, pubkey::Pubkey, system_program};
|
||||
use solana_vote_api::vote_state;
|
||||
use solana_vote_program::vote_state;
|
||||
|
||||
#[test]
|
||||
fn test_stake_state_stake_from_fail() {
|
@ -1,19 +0,0 @@
|
||||
[package]
|
||||
name = "solana-stake-program"
|
||||
version = "0.21.0"
|
||||
description = "Solana stake program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
log = "0.4.8"
|
||||
solana-logger = { path = "../../logger", version = "0.21.0" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.0" }
|
||||
solana-stake-api = { path = "../stake_api", version = "0.21.0" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
name = "solana_stake_program"
|
@ -1,9 +0,0 @@
|
||||
#[macro_export]
|
||||
macro_rules! solana_stake_program {
|
||||
() => {
|
||||
("solana_stake_program".to_string(), solana_stake_api::id())
|
||||
};
|
||||
}
|
||||
|
||||
use solana_stake_api::stake_instruction::process_instruction;
|
||||
solana_sdk::solana_entrypoint!(process_instruction);
|
@ -12,9 +12,8 @@ edition = "2018"
|
||||
log = "0.4.8"
|
||||
solana-logger = { path = "../../logger", version = "0.21.0" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.0" }
|
||||
solana-stake-api = { path = "../stake_api", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../stake_program", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../vote_api", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../stake", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../vote", version = "0.21.0" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.0" }
|
||||
|
@ -12,11 +12,11 @@ use solana_sdk::{
|
||||
signature::{Keypair, KeypairUtil},
|
||||
sysvar::{self, rewards::Rewards, stake_history::StakeHistory, Sysvar},
|
||||
};
|
||||
use solana_stake_api::{
|
||||
use solana_stake_program::{
|
||||
stake_instruction::{self},
|
||||
stake_state::{self, StakeState},
|
||||
};
|
||||
use solana_vote_api::{
|
||||
use solana_vote_program::{
|
||||
vote_instruction,
|
||||
vote_state::{Vote, VoteInit, VoteState},
|
||||
};
|
||||
|
@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "solana-vest-api"
|
||||
name = "solana-vest-program"
|
||||
version = "0.21.0"
|
||||
description = "Solana Vest program API"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
@ -17,11 +17,11 @@ num-traits = "0.2"
|
||||
serde = "1.0.102"
|
||||
serde_derive = "1.0.102"
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.0" }
|
||||
solana-config-api = { path = "../config_api", version = "0.21.0" }
|
||||
solana-config-program = { path = "../config", version = "0.21.0" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.0" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
name = "solana_vest_api"
|
||||
name = "solana_vest_program"
|
@ -7,7 +7,7 @@ use chrono::{
|
||||
serde::ts_seconds,
|
||||
};
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use solana_config_api::{config_instruction, ConfigState};
|
||||
use solana_config_program::{config_instruction, ConfigState};
|
||||
use solana_sdk::{instruction::Instruction, pubkey::Pubkey};
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
|
@ -4,12 +4,16 @@ pub mod vest_processor;
|
||||
pub mod vest_schedule;
|
||||
pub mod vest_state;
|
||||
|
||||
use crate::vest_processor::process_instruction;
|
||||
|
||||
const VEST_PROGRAM_ID: [u8; 32] = [
|
||||
7, 87, 23, 47, 219, 236, 238, 33, 137, 188, 215, 141, 32, 229, 155, 195, 133, 124, 23, 232,
|
||||
113, 153, 252, 252, 111, 5, 187, 128, 0, 0, 0, 0,
|
||||
];
|
||||
|
||||
solana_sdk::solana_name_id!(
|
||||
solana_sdk::declare_program!(
|
||||
VEST_PROGRAM_ID,
|
||||
"Vest111111111111111111111111111111111111111"
|
||||
"Vest111111111111111111111111111111111111111",
|
||||
solana_vest_program,
|
||||
process_instruction
|
||||
);
|
@ -5,7 +5,7 @@ use crate::{
|
||||
vest_state::VestState,
|
||||
};
|
||||
use chrono::prelude::*;
|
||||
use solana_config_api::get_config_data;
|
||||
use solana_config_program::get_config_data;
|
||||
use solana_sdk::{
|
||||
account::{Account, KeyedAccount},
|
||||
instruction::InstructionError,
|
||||
@ -17,7 +17,7 @@ fn verify_date_account(
|
||||
keyed_account: &mut KeyedAccount,
|
||||
expected_pubkey: &Pubkey,
|
||||
) -> Result<Date<Utc>, InstructionError> {
|
||||
if keyed_account.account.owner != solana_config_api::id() {
|
||||
if keyed_account.account.owner != solana_config_program::id() {
|
||||
return Err(InstructionError::IncorrectProgramId);
|
||||
}
|
||||
|
||||
@ -149,8 +149,8 @@ mod tests {
|
||||
let (genesis_config, mint_keypair) = create_genesis_config(lamports);
|
||||
let mut bank = Bank::new(&genesis_config);
|
||||
bank.add_instruction_processor(
|
||||
solana_config_api::id(),
|
||||
solana_config_api::config_processor::process_instruction,
|
||||
solana_config_program::id(),
|
||||
solana_config_program::config_processor::process_instruction,
|
||||
);
|
||||
bank.add_instruction_processor(id(), process_instruction);
|
||||
(bank, mint_keypair)
|
||||
@ -252,7 +252,7 @@ mod tests {
|
||||
fn test_verify_account_unauthorized() {
|
||||
// Ensure client can't sneak in with an untrusted date account.
|
||||
let date_pubkey = Pubkey::new_rand();
|
||||
let mut account = Account::new(1, 0, &solana_config_api::id());
|
||||
let mut account = Account::new(1, 0, &solana_config_program::id());
|
||||
let mut keyed_account = KeyedAccount::new(&date_pubkey, false, &mut account);
|
||||
|
||||
let mallory_pubkey = Pubkey::new_rand(); // <-- Attack! Not the expected account.
|
||||
@ -266,7 +266,7 @@ mod tests {
|
||||
fn test_verify_signed_account_missing_signature() {
|
||||
// Ensure client can't sneak in with an unsigned account.
|
||||
let date_pubkey = Pubkey::new_rand();
|
||||
let mut account = Account::new(1, 0, &solana_config_api::id());
|
||||
let mut account = Account::new(1, 0, &solana_config_program::id());
|
||||
let mut keyed_account = KeyedAccount::new(&date_pubkey, false, &mut account); // <-- Attack! Unsigned transaction.
|
||||
|
||||
assert_eq!(
|
||||
@ -291,7 +291,7 @@ mod tests {
|
||||
fn test_verify_date_account_uninitialized_config() {
|
||||
// Ensure no panic when `get_config_data()` returns an error.
|
||||
let date_pubkey = Pubkey::new_rand();
|
||||
let mut account = Account::new(1, 0, &solana_config_api::id()); // <-- Attack! Zero space.
|
||||
let mut account = Account::new(1, 0, &solana_config_program::id()); // <-- Attack! Zero space.
|
||||
let mut keyed_account = KeyedAccount::new(&date_pubkey, false, &mut account);
|
||||
assert_eq!(
|
||||
verify_date_account(&mut keyed_account, &date_pubkey).unwrap_err(),
|
||||
@ -303,7 +303,7 @@ mod tests {
|
||||
fn test_verify_date_account_invalid_date_config() {
|
||||
// Ensure no panic when `deserialize::<DateConfig>()` returns an error.
|
||||
let date_pubkey = Pubkey::new_rand();
|
||||
let mut account = Account::new(1, 1, &solana_config_api::id()); // Attack! 1 byte, enough to sneak by `get_config_data()`, but not DateConfig deserialize.
|
||||
let mut account = Account::new(1, 1, &solana_config_program::id()); // Attack! 1 byte, enough to sneak by `get_config_data()`, but not DateConfig deserialize.
|
||||
let mut keyed_account = KeyedAccount::new(&date_pubkey, false, &mut account);
|
||||
assert_eq!(
|
||||
verify_date_account(&mut keyed_account, &date_pubkey).unwrap_err(),
|
||||
@ -315,7 +315,7 @@ mod tests {
|
||||
fn test_verify_date_account_deserialize() {
|
||||
// Ensure no panic when `deserialize::<DateConfig>()` returns an error.
|
||||
let date_pubkey = Pubkey::new_rand();
|
||||
let mut account = Account::new(1, 1, &solana_config_api::id()); // Attack! 1 byte, enough to sneak by `get_config_data()`, but not DateConfig deserialize.
|
||||
let mut account = Account::new(1, 1, &solana_config_program::id()); // Attack! 1 byte, enough to sneak by `get_config_data()`, but not DateConfig deserialize.
|
||||
let mut keyed_account = KeyedAccount::new(&date_pubkey, false, &mut account);
|
||||
assert_eq!(
|
||||
verify_date_account(&mut keyed_account, &date_pubkey).unwrap_err(),
|
@ -1,19 +0,0 @@
|
||||
[package]
|
||||
name = "solana-vest-program"
|
||||
version = "0.21.0"
|
||||
description = "Solana Vest program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
log = "0.4.8"
|
||||
solana-logger = { path = "../../logger", version = "0.21.0" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.0" }
|
||||
solana-vest-api = { path = "../vest_api", version = "0.21.0" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
name = "solana_vest_program"
|
@ -1,9 +0,0 @@
|
||||
#[macro_export]
|
||||
macro_rules! solana_vest_program {
|
||||
() => {
|
||||
("solana_vest_program".to_string(), solana_vest_api::id())
|
||||
};
|
||||
}
|
||||
|
||||
use solana_vest_api::vest_processor::process_instruction;
|
||||
solana_sdk::solana_entrypoint!(process_instruction);
|
@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "solana-vote-api"
|
||||
name = "solana-vote-program"
|
||||
version = "0.21.0"
|
||||
description = "Solana Vote program API"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
@ -20,5 +20,5 @@ solana-metrics = { path = "../../metrics", version = "0.21.0" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.0" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
name = "solana_vote_api"
|
||||
crate-type = ["lib", "cdylib"]
|
||||
name = "solana_vote_program"
|
@ -1,12 +1,16 @@
|
||||
pub mod vote_instruction;
|
||||
pub mod vote_state;
|
||||
|
||||
use crate::vote_instruction::process_instruction;
|
||||
|
||||
const VOTE_PROGRAM_ID: [u8; 32] = [
|
||||
7, 97, 72, 29, 53, 116, 116, 187, 124, 77, 118, 36, 235, 211, 189, 179, 216, 53, 94, 115, 209,
|
||||
16, 67, 252, 13, 163, 83, 128, 0, 0, 0, 0,
|
||||
];
|
||||
|
||||
solana_sdk::solana_name_id!(
|
||||
solana_sdk::declare_program!(
|
||||
VOTE_PROGRAM_ID,
|
||||
"Vote111111111111111111111111111111111111111"
|
||||
"Vote111111111111111111111111111111111111111",
|
||||
solana_vote_program,
|
||||
process_instruction
|
||||
);
|
@ -1,19 +0,0 @@
|
||||
[package]
|
||||
name = "solana-vote-program"
|
||||
version = "0.21.0"
|
||||
description = "Solana Vote program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
log = "0.4.8"
|
||||
solana-logger = { path = "../../logger", version = "0.21.0" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../vote_api", version = "0.21.0" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
name = "solana_vote_program"
|
@ -1,9 +0,0 @@
|
||||
#[macro_export]
|
||||
macro_rules! solana_vote_program {
|
||||
() => {
|
||||
("solana_vote_program".to_string(), solana_vote_api::id())
|
||||
};
|
||||
}
|
||||
|
||||
use solana_vote_api::vote_instruction::process_instruction;
|
||||
solana_sdk::solana_entrypoint!(process_instruction);
|
@ -30,11 +30,9 @@ solana-metrics = { path = "../metrics", version = "0.21.0" }
|
||||
solana-bpf-loader-api = { path = "../programs/bpf_loader_api", version = "0.21.0" }
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader_program", version = "0.21.0" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.0" }
|
||||
solana-stake-api = { path = "../programs/stake_api", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../programs/stake_program", version = "0.21.0" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.0" }
|
||||
solana-storage-api = { path = "../programs/storage_api", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../programs/vote_api", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote_program", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.0" }
|
||||
sys-info = "0.5.8"
|
||||
tempfile = "3.1.0"
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.0" }
|
||||
|
@ -1306,7 +1306,7 @@ pub mod tests {
|
||||
}
|
||||
for t in 0..num_vote {
|
||||
let pubkey = Pubkey::new_rand();
|
||||
let account = Account::new((num + t + 1) as u64, space, &solana_vote_api::id());
|
||||
let account = Account::new((num + t + 1) as u64, space, &solana_vote_program::id());
|
||||
pubkeys.push(pubkey.clone());
|
||||
let ancestors = vec![(slot, 0)].into_iter().collect();
|
||||
assert!(accounts.load_slow(&ancestors, &pubkey).is_none());
|
||||
|
@ -1637,8 +1637,8 @@ mod tests {
|
||||
system_instruction,
|
||||
sysvar::{fees::Fees, rewards::Rewards},
|
||||
};
|
||||
use solana_stake_api::stake_state::Stake;
|
||||
use solana_vote_api::{
|
||||
use solana_stake_program::stake_state::Stake;
|
||||
use solana_vote_program::{
|
||||
vote_instruction,
|
||||
vote_state::{self, Vote, VoteInit, VoteState, MAX_LOCKOUT_HISTORY},
|
||||
};
|
||||
@ -3281,9 +3281,9 @@ mod tests {
|
||||
Err(InstructionError::CustomError(42))
|
||||
}
|
||||
|
||||
assert!(bank.get_account(&solana_vote_api::id()).is_none());
|
||||
bank.add_instruction_processor(solana_vote_api::id(), mock_vote_processor);
|
||||
assert!(bank.get_account(&solana_vote_api::id()).is_some());
|
||||
assert!(bank.get_account(&solana_vote_program::id()).is_none());
|
||||
bank.add_instruction_processor(solana_vote_program::id(), mock_vote_processor);
|
||||
assert!(bank.get_account(&solana_vote_program::id()).is_some());
|
||||
|
||||
let mock_account = Keypair::new();
|
||||
let instructions = vote_instruction::create_account(
|
||||
@ -3340,9 +3340,9 @@ mod tests {
|
||||
bank.last_blockhash(),
|
||||
);
|
||||
|
||||
let vote_loader_account = bank.get_account(&solana_vote_api::id()).unwrap();
|
||||
bank.add_instruction_processor(solana_vote_api::id(), mock_vote_processor);
|
||||
let new_vote_loader_account = bank.get_account(&solana_vote_api::id()).unwrap();
|
||||
let vote_loader_account = bank.get_account(&solana_vote_program::id()).unwrap();
|
||||
bank.add_instruction_processor(solana_vote_program::id(), mock_vote_processor);
|
||||
let new_vote_loader_account = bank.get_account(&solana_vote_program::id()).unwrap();
|
||||
// Vote loader account should not be updated since it was included in the genesis config.
|
||||
assert_eq!(vote_loader_account.data, new_vote_loader_account.data);
|
||||
assert_eq!(
|
||||
|
@ -7,8 +7,8 @@ use solana_sdk::{
|
||||
signature::{Keypair, KeypairUtil},
|
||||
system_program::{self, solana_system_program},
|
||||
};
|
||||
use solana_stake_api::stake_state;
|
||||
use solana_vote_api::vote_state;
|
||||
use solana_stake_program::stake_state;
|
||||
use solana_vote_program::vote_state;
|
||||
|
||||
// The default stake placed with the bootstrap leader
|
||||
pub const BOOTSTRAP_LEADER_LAMPORTS: u64 = 42;
|
||||
@ -85,7 +85,7 @@ pub fn create_genesis_config_with_leader(
|
||||
..GenesisConfig::default()
|
||||
};
|
||||
|
||||
solana_stake_api::add_genesis_accounts(&mut genesis_config);
|
||||
solana_stake_program::add_genesis_accounts(&mut genesis_config);
|
||||
solana_storage_api::rewards_pools::add_genesis_accounts(&mut genesis_config);
|
||||
|
||||
GenesisConfigInfo {
|
||||
|
@ -89,8 +89,11 @@ pub fn invoke_entrypoint(
|
||||
let path = create_path(&name);
|
||||
match library_open(&path) {
|
||||
Ok(library) => unsafe {
|
||||
let entrypoint: Symbol<instruction_processor_utils::Entrypoint> =
|
||||
match library.get(instruction_processor_utils::ENTRYPOINT.as_bytes()) {
|
||||
let entrypoint: Symbol<instruction_processor_utils::Entrypoint> = match library
|
||||
.get(name.as_bytes())
|
||||
{
|
||||
Ok(s) => s,
|
||||
Err(_) => match library.get(instruction_processor_utils::ENTRYPOINT.as_bytes()) {
|
||||
Ok(s) => s,
|
||||
Err(e) => {
|
||||
warn!(
|
||||
@ -100,7 +103,8 @@ pub fn invoke_entrypoint(
|
||||
);
|
||||
return Err(InstructionError::GenericError);
|
||||
}
|
||||
};
|
||||
},
|
||||
};
|
||||
let ret = entrypoint(program_id, params, ix_data);
|
||||
symbol_cache
|
||||
.write()
|
||||
|
@ -4,8 +4,8 @@ use solana_sdk::account::Account;
|
||||
use solana_sdk::clock::Epoch;
|
||||
use solana_sdk::pubkey::Pubkey;
|
||||
use solana_sdk::sysvar::stake_history::StakeHistory;
|
||||
use solana_stake_api::stake_state::{new_stake_history_entry, StakeState};
|
||||
use solana_vote_api::vote_state::VoteState;
|
||||
use solana_stake_program::stake_state::{new_stake_history_entry, StakeState};
|
||||
use solana_vote_program::vote_state::VoteState;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Default, Clone, PartialEq, Debug, Deserialize, Serialize)]
|
||||
@ -96,13 +96,13 @@ impl Stakes {
|
||||
}
|
||||
|
||||
pub fn is_stake(account: &Account) -> bool {
|
||||
solana_vote_api::check_id(&account.owner)
|
||||
|| solana_stake_api::check_id(&account.owner)
|
||||
solana_vote_program::check_id(&account.owner)
|
||||
|| solana_stake_program::check_id(&account.owner)
|
||||
&& account.data.len() >= std::mem::size_of::<StakeState>()
|
||||
}
|
||||
|
||||
pub fn store(&mut self, pubkey: &Pubkey, account: &Account) {
|
||||
if solana_vote_api::check_id(&account.owner) {
|
||||
if solana_vote_program::check_id(&account.owner) {
|
||||
if account.lamports == 0 {
|
||||
self.vote_accounts.remove(pubkey);
|
||||
} else {
|
||||
@ -124,7 +124,7 @@ impl Stakes {
|
||||
|
||||
self.vote_accounts.insert(*pubkey, (stake, account.clone()));
|
||||
}
|
||||
} else if solana_stake_api::check_id(&account.owner) {
|
||||
} else if solana_stake_program::check_id(&account.owner) {
|
||||
// old_stake is stake lamports and voter_pubkey from the pre-store() version
|
||||
let old_stake = self.stake_accounts.get(pubkey).and_then(|old_account| {
|
||||
StakeState::stake_from(old_account).map(|stake| {
|
||||
@ -210,8 +210,8 @@ impl Stakes {
|
||||
pub mod tests {
|
||||
use super::*;
|
||||
use solana_sdk::{pubkey::Pubkey, rent::Rent};
|
||||
use solana_stake_api::stake_state;
|
||||
use solana_vote_api::vote_state::{self, VoteState, MAX_LOCKOUT_HISTORY};
|
||||
use solana_stake_program::stake_state;
|
||||
use solana_vote_program::vote_state::{self, VoteState, MAX_LOCKOUT_HISTORY};
|
||||
|
||||
// set up some dummies for a staked node (( vote ) ( stake ))
|
||||
pub fn create_staked_node_accounts(stake: u64) -> ((Pubkey, Account), (Pubkey, Account)) {
|
||||
@ -508,7 +508,10 @@ pub mod tests {
|
||||
}
|
||||
|
||||
// not a stake account, and whacks above entry
|
||||
stakes.store(&stake_pubkey, &Account::new(1, 0, &solana_stake_api::id()));
|
||||
stakes.store(
|
||||
&stake_pubkey,
|
||||
&Account::new(1, 0, &solana_stake_program::id()),
|
||||
);
|
||||
{
|
||||
let vote_accounts = stakes.vote_accounts();
|
||||
assert!(vote_accounts.get(&vote_pubkey).is_some());
|
||||
|
@ -8,7 +8,7 @@ pub use crate::clock::{Epoch, Slot, DEFAULT_SLOTS_PER_EPOCH};
|
||||
/// the beginning of epoch X - 1.
|
||||
pub const DEFAULT_LEADER_SCHEDULE_SLOT_OFFSET: u64 = DEFAULT_SLOTS_PER_EPOCH;
|
||||
|
||||
/// based on MAX_LOCKOUT_HISTORY from vote_api
|
||||
/// based on MAX_LOCKOUT_HISTORY from vote_program
|
||||
pub const MINIMUM_SLOTS_PER_EPOCH: u64 = 32;
|
||||
|
||||
#[repr(C)]
|
||||
|
@ -11,6 +11,7 @@ pub type Entrypoint = unsafe extern "C" fn(
|
||||
data: &[u8],
|
||||
) -> Result<(), InstructionError>;
|
||||
|
||||
// Deprecated
|
||||
// Convenience macro to define the native program entrypoint. Supply a fn to this macro that
|
||||
// conforms to the `Entrypoint` type signature.
|
||||
#[macro_export]
|
||||
@ -27,6 +28,65 @@ macro_rules! solana_entrypoint(
|
||||
)
|
||||
);
|
||||
|
||||
/// Convenience macro to declare a native program
|
||||
///
|
||||
/// id: Variable containing the program's id (public key bytes)
|
||||
/// bs58: BS58 encoding of the id, used verify check the id bytes
|
||||
/// name: Name of the program, must match the library name in Cargo.toml
|
||||
/// entrypoint: Program's entrypoint, must be of `type Entrypoint`
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// use solana_sdk::account::KeyedAccount;
|
||||
/// use solana_sdk::instruction::InstructionError;
|
||||
/// use solana_sdk::pubkey::Pubkey;
|
||||
/// use solana_sdk::declare_program;
|
||||
///
|
||||
/// const MY_PROGRAM_ID: [u8; 32] = [
|
||||
/// 6, 161, 216, 23, 145, 55, 84, 42, 152, 52, 55, 189, 254, 42, 122, 178, 85, 127, 83, 92, 138,
|
||||
/// 120, 114, 43, 104, 164, 157, 192, 0, 0, 0, 0,
|
||||
/// ];
|
||||
///
|
||||
/// fn my_process_instruction(
|
||||
/// program_id: &Pubkey,
|
||||
/// keyed_accounts: &mut [KeyedAccount],
|
||||
/// data: &[u8],
|
||||
/// ) -> Result<(), InstructionError> {
|
||||
/// // Process an instruction
|
||||
/// Ok(())
|
||||
/// }
|
||||
///
|
||||
/// solana_sdk::declare_program!(
|
||||
/// MY_PROGRAM_ID,
|
||||
/// "My!!!11111111111111111111111111111111111111",
|
||||
/// solana_my_program,
|
||||
/// my_process_instruction
|
||||
/// );
|
||||
/// ```
|
||||
#[macro_export]
|
||||
macro_rules! declare_program(
|
||||
($id:ident, $bs58:expr, $name:ident, $entrypoint:ident) => (
|
||||
$crate::solana_name_id!($id, $bs58);
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! $name {
|
||||
() => {
|
||||
(stringify!($name).to_string(), $crate::id())
|
||||
};
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn $name(
|
||||
program_id: &$crate::pubkey::Pubkey,
|
||||
keyed_accounts: &mut [$crate::account::KeyedAccount],
|
||||
data: &[u8],
|
||||
) -> Result<(), $crate::instruction::InstructionError> {
|
||||
$entrypoint(program_id, keyed_accounts, data)
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
impl<T> From<T> for InstructionError
|
||||
where
|
||||
T: ToPrimitive,
|
||||
|
@ -28,7 +28,7 @@ solana-metrics = { path = "../metrics", version = "0.21.0" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.0" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.0" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.0" }
|
||||
solana-vote-api = { path = "../programs/vote_api", version = "0.21.0" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.0" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "0.21.0" }
|
||||
tempfile = "3.1.0"
|
||||
tar = "0.4.26"
|
||||
|
@ -244,7 +244,7 @@ fn check_vote_account(
|
||||
.get_account(vote_pubkey)
|
||||
.map_err(|err| format!("Failed to get vote account: {}", err.to_string()))?;
|
||||
|
||||
if found_vote_account.owner != solana_vote_api::id() {
|
||||
if found_vote_account.owner != solana_vote_program::id() {
|
||||
return Err(format!(
|
||||
"not a vote account (owned by {}): {}",
|
||||
found_vote_account.owner, vote_pubkey
|
||||
@ -255,7 +255,7 @@ fn check_vote_account(
|
||||
.get_account(node_pubkey)
|
||||
.map_err(|err| format!("Failed to get identity account: {}", err.to_string()))?;
|
||||
|
||||
let found_vote_account = solana_vote_api::vote_state::VoteState::from(&found_vote_account);
|
||||
let found_vote_account = solana_vote_program::vote_state::VoteState::from(&found_vote_account);
|
||||
if let Some(found_vote_account) = found_vote_account {
|
||||
if found_vote_account.authorized_voter != *voting_pubkey {
|
||||
return Err(format!(
|
||||
|
Loading…
x
Reference in New Issue
Block a user