Prechádzať zdrojové kódy

Extract ed25519-instructions crate (#3330)

* strat extracting ed25519-instructions crate

* missing feature activation

* fix imports and deps

* update lock file

* import program id from solana_sdk_ids

* use more granular dev deps

* fix program id in tests
Kevin Heavey 1 rok pred
rodič
commit
22e10c7a1e

+ 21 - 0
Cargo.lock

@@ -6810,6 +6810,26 @@ dependencies = [
  "solana-sdk",
 ]
 
+[[package]]
+name = "solana-ed25519-instructions"
+version = "2.2.0"
+dependencies = [
+ "bytemuck",
+ "bytemuck_derive",
+ "ed25519-dalek",
+ "hex",
+ "rand 0.7.3",
+ "solana-feature-set",
+ "solana-hash",
+ "solana-instruction",
+ "solana-keypair",
+ "solana-logger",
+ "solana-precompile-error",
+ "solana-sdk",
+ "solana-sdk-ids",
+ "solana-signer",
+]
+
 [[package]]
 name = "solana-ed25519-program-tests"
 version = "2.2.0"
@@ -8328,6 +8348,7 @@ dependencies = [
  "solana-commitment-config",
  "solana-decode-error",
  "solana-derivation-path",
+ "solana-ed25519-instructions",
  "solana-feature-set",
  "solana-fee-structure",
  "solana-frozen-abi",

+ 2 - 0
Cargo.toml

@@ -111,6 +111,7 @@ members = [
     "sdk/decode-error",
     "sdk/define-syscall",
     "sdk/derivation-path",
+    "sdk/ed25519-instructions",
     "sdk/epoch-rewards",
     "sdk/epoch-schedule",
     "sdk/feature-set",
@@ -438,6 +439,7 @@ solana-decode-error = { path = "sdk/decode-error", version = "=2.2.0" }
 solana-define-syscall = { path = "sdk/define-syscall", version = "=2.2.0" }
 solana-derivation-path = { path = "sdk/derivation-path", version = "=2.2.0" }
 solana-download-utils = { path = "download-utils", version = "=2.2.0" }
+solana-ed25519-instructions = { path = "sdk/ed25519-instructions", version = "=2.2.0" }
 solana-entry = { path = "entry", version = "=2.2.0" }
 solana-program-entrypoint = { path = "sdk/program-entrypoint", version = "=2.2.0" }
 solana-epoch-rewards = { path = "sdk/epoch-rewards", version = "=2.2.0" }

+ 14 - 0
programs/sbf/Cargo.lock

@@ -5459,6 +5459,19 @@ dependencies = [
  "solana-sdk",
 ]
 
+[[package]]
+name = "solana-ed25519-instructions"
+version = "2.2.0"
+dependencies = [
+ "bytemuck",
+ "bytemuck_derive",
+ "ed25519-dalek",
+ "solana-feature-set",
+ "solana-instruction",
+ "solana-precompile-error",
+ "solana-sdk-ids",
+]
+
 [[package]]
 name = "solana-entry"
 version = "2.2.0"
@@ -7062,6 +7075,7 @@ dependencies = [
  "solana-commitment-config",
  "solana-decode-error",
  "solana-derivation-path",
+ "solana-ed25519-instructions",
  "solana-feature-set",
  "solana-fee-structure",
  "solana-inflation",

+ 2 - 0
sdk/Cargo.toml

@@ -35,6 +35,7 @@ full = [
     "digest",
     "solana-pubkey/rand",
     "dep:solana-cluster-type",
+    "dep:solana-ed25519-instructions",
     "dep:solana-keypair",
     "dep:solana-precompile-error",
     "dep:solana-presigner",
@@ -104,6 +105,7 @@ solana-cluster-type = { workspace = true, features = [
 solana-commitment-config = { workspace = true, optional = true, features = ["serde"] }
 solana-decode-error = { workspace = true }
 solana-derivation-path = { workspace = true }
+solana-ed25519-instructions = { workspace = true, optional = true }
 solana-feature-set = { workspace = true }
 solana-fee-structure = { workspace = true, features = ["serde"] }
 solana-frozen-abi = { workspace = true, optional = true, features = [

+ 34 - 0
sdk/ed25519-instructions/Cargo.toml

@@ -0,0 +1,34 @@
+[package]
+name = "solana-ed25519-instructions"
+description = "Instructions for the Solana ed25519 native program"
+documentation = "https://docs.rs/solana-ed25519-instructions"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
+
+[dependencies]
+bytemuck = { workspace = true }
+bytemuck_derive = { workspace = true }
+ed25519-dalek = { workspace = true }
+solana-feature-set = { workspace = true }
+solana-instruction = { workspace = true, features = ["std"] }
+solana-precompile-error = { workspace = true }
+solana-sdk-ids = { workspace = true }
+
+[dev-dependencies]
+hex = { workspace = true }
+rand0-7 = { workspace = true }
+solana-hash = { workspace = true }
+solana-keypair = { workspace = true }
+solana-logger = { workspace = true }
+solana-sdk = { path = ".." }
+solana-signer = { workspace = true }
+
+[package.metadata.docs.rs]
+targets = ["x86_64-unknown-linux-gnu"]
+
+[lints]
+workspace = true

+ 6 - 10
sdk/src/ed25519_instruction.rs → sdk/ed25519-instructions/src/lib.rs

@@ -2,8 +2,6 @@
 //!
 //! [np]: https://docs.solanalabs.com/runtime/programs#ed25519-program
 
-#![cfg(feature = "full")]
-
 use {
     bytemuck::bytes_of,
     bytemuck_derive::{Pod, Zeroable},
@@ -79,7 +77,7 @@ pub fn new_ed25519_instruction(keypair: &ed25519_dalek::Keypair, message: &[u8])
     instruction_data.extend_from_slice(message);
 
     Instruction {
-        program_id: solana_sdk::ed25519_program::id(),
+        program_id: solana_sdk_ids::ed25519_program::id(),
         accounts: vec![],
         data: instruction_data,
     }
@@ -190,15 +188,13 @@ fn get_data_slice<'a>(
 pub mod test {
     use {
         super::*,
-        crate::{
-            ed25519_instruction::new_ed25519_instruction,
-            hash::Hash,
-            signature::{Keypair, Signer},
-            transaction::Transaction,
-        },
         hex,
         rand0_7::{thread_rng, Rng},
         solana_feature_set::FeatureSet,
+        solana_hash::Hash,
+        solana_keypair::Keypair,
+        solana_sdk::transaction::Transaction,
+        solana_signer::Signer,
     };
 
     pub fn new_ed25519_instruction_raw(
@@ -249,7 +245,7 @@ pub mod test {
         instruction_data.extend_from_slice(message);
 
         Instruction {
-            program_id: solana_sdk::ed25519_program::id(),
+            program_id: solana_sdk_ids::ed25519_program::id(),
             accounts: vec![],
             data: instruction_data,
         }

+ 6 - 1
sdk/src/lib.rs

@@ -64,7 +64,6 @@ pub use solana_signer::signers;
 pub mod client;
 pub mod compute_budget;
 pub mod deserialize_utils;
-pub mod ed25519_instruction;
 pub mod entrypoint;
 pub mod entrypoint_deprecated;
 pub mod epoch_info;
@@ -120,6 +119,12 @@ pub use solana_bn254 as alt_bn128;
 pub use solana_decode_error as decode_error;
 #[deprecated(since = "2.1.0", note = "Use `solana-derivation-path` crate instead")]
 pub use solana_derivation_path as derivation_path;
+#[cfg(feature = "full")]
+#[deprecated(
+    since = "2.2.0",
+    note = "Use `solana-ed25519-instructions` crate instead"
+)]
+pub use solana_ed25519_instructions as ed25519_instruction;
 #[deprecated(since = "2.1.0", note = "Use `solana-feature-set` crate instead")]
 pub use solana_feature_set as feature_set;
 #[deprecated(since = "2.2.0", note = "Use `solana-fee-structure` crate instead")]