diff --git a/Cargo.lock b/Cargo.lock
index 82fb980766c..c18cf29ce3e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -7275,7 +7275,7 @@ dependencies = [
"serde",
"serde_json",
"solana-program",
- "solana-zk-token-sdk",
+ "solana-zk-sdk",
"spl-program-error 0.5.0",
]
@@ -7570,11 +7570,14 @@ dependencies = [
"solana-program-test",
"solana-sdk",
"solana-security-txt",
- "solana-zk-token-sdk",
+ "solana-zk-sdk",
"spl-memo 5.0.0",
"spl-pod 0.3.1",
"spl-tlv-account-resolution 0.7.0",
"spl-token 6.0.0",
+ "spl-token-confidential-transfer-ciphertext-arithmetic",
+ "spl-token-confidential-transfer-proof-extraction",
+ "spl-token-confidential-transfer-proof-generation",
"spl-token-group-interface 0.3.0",
"spl-token-metadata-interface 0.4.0",
"spl-transfer-hook-interface 0.7.0",
@@ -7588,6 +7591,7 @@ version = "0.0.1"
dependencies = [
"async-trait",
"borsh 1.5.1",
+ "bytemuck",
"futures-util",
"solana-program",
"solana-program-test",
@@ -7600,6 +7604,7 @@ dependencies = [
"spl-tlv-account-resolution 0.7.0",
"spl-token-2022 4.0.1",
"spl-token-client",
+ "spl-token-confidential-transfer-proof-generation",
"spl-token-group-interface 0.3.0",
"spl-token-metadata-interface 0.4.0",
"spl-transfer-hook-example",
@@ -7637,6 +7642,7 @@ dependencies = [
"spl-token 6.0.0",
"spl-token-2022 4.0.1",
"spl-token-client",
+ "spl-token-confidential-transfer-proof-generation",
"spl-token-group-interface 0.3.0",
"spl-token-metadata-interface 0.4.0",
"strum 0.26.3",
@@ -7667,6 +7673,7 @@ dependencies = [
"spl-record",
"spl-token 6.0.0",
"spl-token-2022 4.0.1",
+ "spl-token-confidential-transfer-proof-generation",
"spl-token-group-interface 0.3.0",
"spl-token-metadata-interface 0.4.0",
"spl-transfer-hook-interface 0.7.0",
diff --git a/libraries/pod/Cargo.toml b/libraries/pod/Cargo.toml
index d9a838907e1..0cd60ae3d2c 100644
--- a/libraries/pod/Cargo.toml
+++ b/libraries/pod/Cargo.toml
@@ -8,21 +8,21 @@ license = "Apache-2.0"
edition = "2021"
[features]
-serde-traits = ["dep:serde", "dep:base64"]
+serde-traits = ["dep:serde"]
borsh = ["dep:borsh"]
[dependencies]
-base64 = { version = "0.22.1", optional = true }
borsh = { version = "1.5.1", optional = true }
bytemuck = { version = "1.16.3" }
bytemuck_derive = { version = "1.7.0" }
serde = { version = "1.0.207", optional = true }
solana-program = "2.0.3"
-solana-zk-token-sdk = "2.0.3"
+solana-zk-sdk = "2.0.3"
spl-program-error = { version = "0.5.0", path = "../program-error" }
[dev-dependencies]
serde_json = "1.0.124"
+base64 = { version = "0.22.1" }
[lib]
crate-type = ["cdylib", "lib"]
diff --git a/libraries/pod/src/optional_keys.rs b/libraries/pod/src/optional_keys.rs
index ad71b1bcc4d..b31494d4ed7 100644
--- a/libraries/pod/src/optional_keys.rs
+++ b/libraries/pod/src/optional_keys.rs
@@ -1,18 +1,17 @@
//! Optional pubkeys that can be used a `Pod`s
#[cfg(feature = "borsh")]
use borsh::{BorshDeserialize, BorshSchema, BorshSerialize};
+use {
+ bytemuck_derive::{Pod, Zeroable},
+ solana_program::{program_error::ProgramError, program_option::COption, pubkey::Pubkey},
+ solana_zk_sdk::encryption::pod::elgamal::PodElGamalPubkey,
+};
#[cfg(feature = "serde-traits")]
use {
- base64::{prelude::BASE64_STANDARD, Engine},
serde::de::{Error, Unexpected, Visitor},
serde::{Deserialize, Deserializer, Serialize, Serializer},
std::{convert::TryFrom, fmt, str::FromStr},
};
-use {
- bytemuck_derive::{Pod, Zeroable},
- solana_program::{program_error::ProgramError, program_option::COption, pubkey::Pubkey},
- solana_zk_token_sdk::zk_token_elgamal::pod::ElGamalPubkey,
-};
/// A Pubkey that encodes `None` as all `0`, meant to be usable as a Pod type,
/// similar to all NonZero* number types from the bytemuck library.
@@ -131,21 +130,21 @@ impl<'de> Deserialize<'de> for OptionalNonZeroPubkey {
/// type.
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
#[repr(transparent)]
-pub struct OptionalNonZeroElGamalPubkey(ElGamalPubkey);
+pub struct OptionalNonZeroElGamalPubkey(PodElGamalPubkey);
impl OptionalNonZeroElGamalPubkey {
/// Checks equality between an OptionalNonZeroElGamalPubkey and an
/// ElGamalPubkey when interpreted as bytes.
- pub fn equals(&self, other: &ElGamalPubkey) -> bool {
+ pub fn equals(&self, other: &PodElGamalPubkey) -> bool {
&self.0 == other
}
}
-impl TryFrom