Use procedural macro to generate static public keys (bp #7219) (#7241)

automerge
This commit is contained in:
Justin Starry
2019-12-03 22:07:19 -05:00
committed by Grimes
parent 57dce86d5e
commit 35ae76532a
13 changed files with 298 additions and 167 deletions

203
programs/bpf/Cargo.lock generated
View File

@@ -245,12 +245,12 @@ dependencies = [
[[package]]
name = "chrono"
version = "0.4.9"
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
"num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -822,7 +822,7 @@ dependencies = [
[[package]]
name = "itertools"
version = "0.8.1"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1117,7 +1117,7 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1585,156 +1585,157 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "solana-bpf-loader-program"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.65 (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)",
"solana-logger 0.21.0",
"solana-sdk 0.21.0",
"solana-logger 0.21.1",
"solana-sdk 0.21.1",
"solana_rbpf 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-bpf-programs"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-bpf-loader-program 0.21.0",
"solana-logger 0.21.0",
"solana-runtime 0.21.0",
"solana-sdk 0.21.0",
"solana-bpf-loader-program 0.21.1",
"solana-logger 0.21.1",
"solana-runtime 0.21.1",
"solana-sdk 0.21.1",
"solana_rbpf 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)",
"walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-bpf-rust-128bit"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-bpf-rust-128bit-dep 0.21.0",
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-bpf-rust-128bit-dep 0.21.1",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-128bit-dep"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-alloc"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-dep-crate"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-external-spend"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-iter"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-many-args"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-bpf-rust-many-args-dep 0.21.0",
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-bpf-rust-many-args-dep 0.21.1",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-many-args-dep"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-noop"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-panic"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-param-passing"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-bpf-rust-param-passing-dep 0.21.0",
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-bpf-rust-param-passing-dep 0.21.1",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-param-passing-dep"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-bpf-rust-sysval"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-sdk 0.21.0",
"solana-sdk-bpf-test 0.21.0",
"solana-sdk 0.21.1",
"solana-sdk-bpf-test 0.21.1",
]
[[package]]
name = "solana-config-program"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono 0.4.10 (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-logger 0.21.0",
"solana-sdk 0.21.0",
"solana-logger 0.21.1",
"solana-sdk 0.21.1",
]
[[package]]
name = "solana-crate-features"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)",
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1757,7 +1758,7 @@ dependencies = [
[[package]]
name = "solana-logger"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1766,26 +1767,26 @@ dependencies = [
[[package]]
name = "solana-measure"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"solana-sdk 0.21.0",
"solana-sdk 0.21.1",
]
[[package]]
name = "solana-metrics"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.21.0",
"solana-sdk 0.21.1",
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-rayon-threadlimit"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1793,14 +1794,14 @@ dependencies = [
[[package]]
name = "solana-runtime"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"bv 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
"fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
"itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
"libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1811,22 +1812,22 @@ dependencies = [
"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)",
"serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-bpf-loader-program 0.21.0",
"solana-logger 0.21.0",
"solana-measure 0.21.0",
"solana-metrics 0.21.0",
"solana-rayon-threadlimit 0.21.0",
"solana-sdk 0.21.0",
"solana-stake-program 0.21.0",
"solana-storage-program 0.21.0",
"solana-vote-program 0.21.0",
"solana-bpf-loader-program 0.21.1",
"solana-logger 0.21.1",
"solana-measure 0.21.1",
"solana-metrics 0.21.1",
"solana-rayon-threadlimit 0.21.1",
"solana-sdk 0.21.1",
"solana-stake-program 0.21.1",
"solana-storage-program 0.21.1",
"solana-vote-program 0.21.1",
"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)",
]
[[package]]
name = "solana-sdk"
version = "0.21.0"
version = "0.21.1"
dependencies = [
"assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1836,8 +1837,7 @@ dependencies = [
"generic-array 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1850,17 +1850,28 @@ dependencies = [
"serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
"sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-crate-features 0.21.0",
"solana-logger 0.21.0",
"solana-crate-features 0.21.1",
"solana-logger 0.21.1",
"solana-sdk-macro 0.21.1",
]
[[package]]
name = "solana-sdk-bpf-test"
version = "0.21.0"
version = "0.21.1"
[[package]]
name = "solana-sdk-macro"
version = "0.21.1"
dependencies = [
"bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-stake-program"
version = "0.21.0"
version = "0.21.1"
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)",
@@ -1869,16 +1880,16 @@ 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-program 0.21.0",
"solana-logger 0.21.0",
"solana-metrics 0.21.0",
"solana-sdk 0.21.0",
"solana-vote-program 0.21.0",
"solana-config-program 0.21.1",
"solana-logger 0.21.1",
"solana-metrics 0.21.1",
"solana-sdk 0.21.1",
"solana-vote-program 0.21.1",
]
[[package]]
name = "solana-storage-program"
version = "0.21.0"
version = "0.21.1"
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)",
@@ -1887,13 +1898,13 @@ 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-logger 0.21.0",
"solana-sdk 0.21.0",
"solana-logger 0.21.1",
"solana-sdk 0.21.1",
]
[[package]]
name = "solana-vote-program"
version = "0.21.0"
version = "0.21.1"
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)",
@@ -1901,9 +1912,9 @@ dependencies = [
"num-traits 0.2.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-logger 0.21.0",
"solana-metrics 0.21.0",
"solana-sdk 0.21.0",
"solana-logger 0.21.1",
"solana-metrics 0.21.1",
"solana-sdk 0.21.1",
]
[[package]]
@@ -2601,7 +2612,7 @@ dependencies = [
"checksum cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc9a35e1f4290eb9e5fc54ba6cf40671ed2a2514c3eeb2b2a908dda2ea5a1be"
"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
"checksum cgmath 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "64a4b57c8f4e3a2e9ac07e0f6abc9c24b6fc9e1b54c3478cfb598f3d0023e51c"
"checksum chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e8493056968583b0193c1bb04d6f7684586f3726992d6c573261941a895dbd68"
"checksum chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01"
"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
"checksum clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17"
"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
@@ -2662,7 +2673,7 @@ dependencies = [
"checksum indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a61202fbe46c4a951e9404a720a0180bcf3212c750d735cb5c4ba4dc551299f3"
"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08"
"checksum itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d"
"checksum itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "87fa75c9dea7b07be3138c49abbb83fd4bea199b5cdc76f9804458edc5da0d6e"
"checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484"
"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
"checksum jobserver 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b1d42ef453b30b7387e113da1c83ab1605d90c5b4e0eb8e96d016ed3b8c160"
"checksum js-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)" = "1efc4f2a556c58e79c5500912e221dd826bec64ff4aabd8ce71ccef6da02d7d4"

View File

@@ -6,10 +6,11 @@ use solana_sdk::{
clock::{get_segment_from_slot, DEFAULT_SLOTS_PER_EPOCH, DEFAULT_SLOTS_PER_SEGMENT},
entrypoint,
entrypoint::SUCCESS,
info,
pubkey::Pubkey,
rent,
sysvar::{
clock::Clock, fees::Fees, rent::Rent, rewards::Rewards, slot_hashes::SlotHashes,
self, clock::Clock, fees::Fees, rent::Rent, rewards::Rewards, slot_hashes::SlotHashes,
stake_history::StakeHistory, Sysvar,
},
};
@@ -17,6 +18,8 @@ use solana_sdk::{
entrypoint!(process_instruction);
fn process_instruction(_program_id: &Pubkey, accounts: &mut [AccountInfo], _data: &[u8]) -> u32 {
// Clock
info!("Clock identifier:");
sysvar::clock::id().log();
let clock = Clock::from_account_info(&accounts[2]).expect("clock");
assert_eq!(clock.slot, DEFAULT_SLOTS_PER_EPOCH + 1);
assert_eq!(
@@ -25,18 +28,26 @@ fn process_instruction(_program_id: &Pubkey, accounts: &mut [AccountInfo], _data
);
// Fees
info!("Fees identifier:");
sysvar::fees::id().log();
let fees = Fees::from_account_info(&accounts[3]).expect("fees");
let burn = fees.fee_calculator.burn(42);
assert_eq!(burn, (21, 21));
// Rewards
info!("Rewards identifier:");
sysvar::rewards::id().log();
let _rewards = Rewards::from_account_info(&accounts[4]).expect("rewards");
// Slot Hashes
info!("SlotHashes identifier:");
sysvar::slot_hashes::id().log();
let slot_hashes = SlotHashes::from_account_info(&accounts[5]).expect("slot_hashes");
assert!(slot_hashes.len() >= 1);
// Stake History
info!("StakeHistory identifier:");
sysvar::stake_history::id().log();
let stake_history = StakeHistory::from_account_info(&accounts[6]).expect("stake_history");
assert!(stake_history.len() >= 1);

View File

@@ -7,7 +7,6 @@ use byteorder::{ByteOrder, LittleEndian, WriteBytesExt};
use log::*;
use solana_rbpf::{memory_region::MemoryRegion, EbpfVm};
use solana_sdk::account::KeyedAccount;
use solana_sdk::bpf_loader;
use solana_sdk::instruction::InstructionError;
use solana_sdk::instruction_processor_utils::{limited_deserialize, next_keyed_account};
use solana_sdk::loader_instruction::LoaderInstruction;
@@ -19,7 +18,7 @@ use std::io::Error;
use std::mem;
solana_sdk::declare_program!(
bpf_loader::BS58_STRING,
solana_sdk::bpf_loader::ID,
solana_bpf_loader_program,
process_instruction
);

View File

@@ -4,10 +4,9 @@ pub mod error_mappers;
pub mod processor;
use crate::processor::process_instruction;
use solana_sdk::move_loader;
solana_sdk::declare_program!(
move_loader::BS58_STRING,
solana_sdk::move_loader::ID,
solana_move_loader_program,
process_instruction
);