From 298d38611af487de497a6323fcd5e5a5eb0a41d3 Mon Sep 17 00:00:00 2001 From: kevinheavey Date: Thu, 28 Nov 2024 18:29:05 +0400 Subject: [PATCH 1/4] extract system-transaction crate --- Cargo.lock | 14 ++++++++++++ Cargo.toml | 2 ++ programs/sbf/Cargo.lock | 14 ++++++++++++ sdk/Cargo.toml | 1 + sdk/src/lib.rs | 7 +++++- sdk/system-transaction/Cargo.toml | 22 +++++++++++++++++++ .../src/lib.rs} | 12 ++++------ svm/examples/Cargo.lock | 14 ++++++++++++ 8 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 sdk/system-transaction/Cargo.toml rename sdk/{src/system_transaction.rs => system-transaction/src/lib.rs} (92%) diff --git a/Cargo.lock b/Cargo.lock index f05f5b814697ff..e36d058618ace6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8558,6 +8558,7 @@ dependencies = [ "solana-short-vec", "solana-signature", "solana-signer", + "solana-system-transaction", "solana-sysvar", "solana-time-utils", "solana-transaction", @@ -9055,6 +9056,19 @@ dependencies = [ "solana-type-overrides", ] +[[package]] +name = "solana-system-transaction" +version = "2.2.0" +dependencies = [ + "solana-hash", + "solana-keypair", + "solana-program", + "solana-pubkey", + "solana-signer", + "solana-system-interface", + "solana-transaction", +] + [[package]] name = "solana-sysvar" version = "2.2.0" diff --git a/Cargo.toml b/Cargo.toml index c62c59226c78d2..4b772019b47900 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -173,6 +173,7 @@ members = [ "sdk/slot-hashes", "sdk/slot-history", "sdk/stable-layout", + "sdk/system-transaction", "sdk/sysvar", "sdk/sysvar-id", "sdk/time-utils", @@ -570,6 +571,7 @@ solana-svm-rent-collector = { path = "svm-rent-collector", version = "=2.2.0" } solana-svm-transaction = { path = "svm-transaction", version = "=2.2.0" } solana-system-interface = "1.0" solana-system-program = { path = "programs/system", version = "=2.2.0" } +solana-system-transaction = { path = "sdk/system-transaction", version = "=2.2.0" } solana-sysvar = { path = "sdk/sysvar", version = "=2.2.0" } solana-sysvar-id = { path = "sdk/sysvar-id", version = "=2.2.0" } solana-test-validator = { path = "test-validator", version = "=2.2.0" } diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index b4c81f1ffc7d59..3d1cb8b983b64b 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -7256,6 +7256,7 @@ dependencies = [ "solana-short-vec", "solana-signature", "solana-signer", + "solana-system-transaction", "solana-time-utils", "solana-transaction", "solana-transaction-context", @@ -7632,6 +7633,19 @@ dependencies = [ "solana-type-overrides", ] +[[package]] +name = "solana-system-transaction" +version = "2.2.0" +dependencies = [ + "solana-hash", + "solana-keypair", + "solana-program", + "solana-pubkey", + "solana-signer", + "solana-system-interface", + "solana-transaction", +] + [[package]] name = "solana-sysvar" version = "2.2.0" diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index a704a315a420b8..445fa9747e4470 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -175,6 +175,7 @@ solana-signature = { workspace = true, features = [ "verify", ], optional = true } solana-signer = { workspace = true, optional = true } +solana-system-transaction = { workspace = true } solana-time-utils = { workspace = true } solana-transaction = { workspace = true, features = [ "blake3", diff --git a/sdk/src/lib.rs b/sdk/src/lib.rs index 752ad612a5c7b5..3076c997b251a5 100644 --- a/sdk/src/lib.rs +++ b/sdk/src/lib.rs @@ -95,7 +95,6 @@ pub mod rpc_port; pub mod shred_version; pub mod signature; pub mod signer; -pub mod system_transaction; pub mod transaction; pub mod transport; pub mod wasm; @@ -201,6 +200,12 @@ pub use solana_serde as deserialize_utils; pub use solana_serde_varint as serde_varint; #[deprecated(since = "2.1.0", note = "Use `solana-short-vec` crate instead")] pub use solana_short_vec as short_vec; +#[cfg(feature = "full")] +#[deprecated( + since = "2.2.0", + note = "Use `solana-system-transaction` crate instead" +)] +pub use solana_system_transaction as system_transaction; #[deprecated(since = "2.2.0", note = "Use `solana-time-utils` crate instead")] pub use solana_time_utils as timing; #[cfg(feature = "full")] diff --git a/sdk/system-transaction/Cargo.toml b/sdk/system-transaction/Cargo.toml new file mode 100644 index 00000000000000..7ec54d88d6bea6 --- /dev/null +++ b/sdk/system-transaction/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "solana-system-transaction" +description = "Functionality for creating system transactions." +documentation = "https://docs.rs/solana-system-transaction" +version = { workspace = true } +authors = { workspace = true } +repository = { workspace = true } +homepage = { workspace = true } +license = { workspace = true } +edition = { workspace = true } + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] + +[dependencies] +solana-hash = { workspace = true } +solana-keypair = { workspace = true } +solana-program = { workspace = true } +solana-pubkey = { workspace = true } +solana-signer = { workspace = true } +solana-system-interface = { workspace = true, features = ["bincode"] } +solana-transaction = { workspace = true } diff --git a/sdk/src/system_transaction.rs b/sdk/system-transaction/src/lib.rs similarity index 92% rename from sdk/src/system_transaction.rs rename to sdk/system-transaction/src/lib.rs index 4de37dd56602db..6f34b8e836efce 100644 --- a/sdk/src/system_transaction.rs +++ b/sdk/system-transaction/src/lib.rs @@ -1,13 +1,9 @@ //! The `system_transaction` module provides functionality for creating system transactions. -#![cfg(feature = "full")] -use crate::{ - hash::Hash, - message::Message, - pubkey::Pubkey, - signature::{Keypair, Signer}, - system_instruction, - transaction::Transaction, +use { + solana_hash::Hash, solana_keypair::Keypair, solana_program::message::Message, + solana_pubkey::Pubkey, solana_signer::Signer, + solana_system_interface::instruction as system_instruction, solana_transaction::Transaction, }; /// Create and sign new SystemInstruction::CreateAccount transaction diff --git a/svm/examples/Cargo.lock b/svm/examples/Cargo.lock index c84b71398d81a5..d1f7c0e0c54abd 100644 --- a/svm/examples/Cargo.lock +++ b/svm/examples/Cargo.lock @@ -6584,6 +6584,7 @@ dependencies = [ "solana-short-vec", "solana-signature", "solana-signer", + "solana-system-transaction", "solana-time-utils", "solana-transaction", "solana-transaction-context", @@ -6977,6 +6978,19 @@ dependencies = [ "solana-type-overrides", ] +[[package]] +name = "solana-system-transaction" +version = "2.2.0" +dependencies = [ + "solana-hash", + "solana-keypair", + "solana-program", + "solana-pubkey", + "solana-signer", + "solana-system-interface", + "solana-transaction", +] + [[package]] name = "solana-sysvar" version = "2.2.0" From d35f9b35ab241e729e164776375572e1765d7ba3 Mon Sep 17 00:00:00 2001 From: kevinheavey Date: Wed, 4 Dec 2024 14:01:30 +0400 Subject: [PATCH 2/4] remove solana-program and activate required feature --- Cargo.lock | 2 +- programs/sbf/Cargo.lock | 2 +- sdk/system-transaction/Cargo.toml | 4 ++-- sdk/system-transaction/src/lib.rs | 2 +- svm/examples/Cargo.lock | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e36d058618ace6..c0b023c412f4b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9062,7 +9062,7 @@ version = "2.2.0" dependencies = [ "solana-hash", "solana-keypair", - "solana-program", + "solana-message", "solana-pubkey", "solana-signer", "solana-system-interface", diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 3d1cb8b983b64b..f07bd067ed86b7 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -7639,7 +7639,7 @@ version = "2.2.0" dependencies = [ "solana-hash", "solana-keypair", - "solana-program", + "solana-message", "solana-pubkey", "solana-signer", "solana-system-interface", diff --git a/sdk/system-transaction/Cargo.toml b/sdk/system-transaction/Cargo.toml index 7ec54d88d6bea6..1ef1875435c0b3 100644 --- a/sdk/system-transaction/Cargo.toml +++ b/sdk/system-transaction/Cargo.toml @@ -15,8 +15,8 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] solana-hash = { workspace = true } solana-keypair = { workspace = true } -solana-program = { workspace = true } +solana-message = { workspace = true } solana-pubkey = { workspace = true } solana-signer = { workspace = true } solana-system-interface = { workspace = true, features = ["bincode"] } -solana-transaction = { workspace = true } +solana-transaction = { workspace = true, features = ["bincode"] } diff --git a/sdk/system-transaction/src/lib.rs b/sdk/system-transaction/src/lib.rs index 6f34b8e836efce..4ea1a8ed2afffc 100644 --- a/sdk/system-transaction/src/lib.rs +++ b/sdk/system-transaction/src/lib.rs @@ -1,7 +1,7 @@ //! The `system_transaction` module provides functionality for creating system transactions. use { - solana_hash::Hash, solana_keypair::Keypair, solana_program::message::Message, + solana_hash::Hash, solana_keypair::Keypair, solana_message::Message, solana_pubkey::Pubkey, solana_signer::Signer, solana_system_interface::instruction as system_instruction, solana_transaction::Transaction, }; diff --git a/svm/examples/Cargo.lock b/svm/examples/Cargo.lock index d1f7c0e0c54abd..95b459b8e47d56 100644 --- a/svm/examples/Cargo.lock +++ b/svm/examples/Cargo.lock @@ -6984,7 +6984,7 @@ version = "2.2.0" dependencies = [ "solana-hash", "solana-keypair", - "solana-program", + "solana-message", "solana-pubkey", "solana-signer", "solana-system-interface", From b609c93176fccc2e527e7c5864559447b79bd6b2 Mon Sep 17 00:00:00 2001 From: kevinheavey Date: Wed, 4 Dec 2024 20:18:59 +0400 Subject: [PATCH 3/4] fmt --- sdk/system-transaction/src/lib.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/system-transaction/src/lib.rs b/sdk/system-transaction/src/lib.rs index 4ea1a8ed2afffc..850633e3b88fcb 100644 --- a/sdk/system-transaction/src/lib.rs +++ b/sdk/system-transaction/src/lib.rs @@ -1,9 +1,9 @@ //! The `system_transaction` module provides functionality for creating system transactions. use { - solana_hash::Hash, solana_keypair::Keypair, solana_message::Message, - solana_pubkey::Pubkey, solana_signer::Signer, - solana_system_interface::instruction as system_instruction, solana_transaction::Transaction, + solana_hash::Hash, solana_keypair::Keypair, solana_message::Message, solana_pubkey::Pubkey, + solana_signer::Signer, solana_system_interface::instruction as system_instruction, + solana_transaction::Transaction, }; /// Create and sign new SystemInstruction::CreateAccount transaction From 9259a3916ba1444690a9dd8e743166b24b89e82f Mon Sep 17 00:00:00 2001 From: kevinheavey Date: Thu, 5 Dec 2024 14:56:11 +0400 Subject: [PATCH 4/4] missing feature gating --- sdk/Cargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index 445fa9747e4470..2b42c3a884b3e2 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -47,6 +47,7 @@ full = [ "dep:solana-seed-derivable", "dep:solana-seed-phrase", "dep:solana-signer", + "dep:solana-system-transaction", "dep:solana-transaction", "dep:solana-transaction-error", ] @@ -175,7 +176,7 @@ solana-signature = { workspace = true, features = [ "verify", ], optional = true } solana-signer = { workspace = true, optional = true } -solana-system-transaction = { workspace = true } +solana-system-transaction = { workspace = true, optional = true } solana-time-utils = { workspace = true } solana-transaction = { workspace = true, features = [ "blake3",