[zk-token-sdk] Refactor pod `FeeParameters` conversion and remove manual byte conversion for the type (#32149)

* replace `decoded::TransferAmountCiphertext` to `DecodedTransferAmountCiphertext`

* refactor pod convert logic for fee parameters

* remove manual byte conversions for `FeeParameters`

* fix error from rebase
This commit is contained in:
samkim-crypto 2023-06-18 07:51:49 +09:00 committed by GitHub
parent de024bf98d
commit 428283c9ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 41 deletions

View File

@ -8,7 +8,6 @@ use {
elgamal::ElGamalCiphertext,
pedersen::{PedersenCommitment, PedersenOpening},
},
arrayref::{array_ref, array_refs},
curve25519_dalek::scalar::Scalar,
};
#[cfg(not(target_os = "solana"))]
@ -92,24 +91,3 @@ pub struct FeeParameters {
/// Maximum fee assessed on transfers, expressed as an amount of tokens
pub maximum_fee: u64,
}
#[cfg(not(target_os = "solana"))]
impl FeeParameters {
pub fn to_bytes(&self) -> [u8; 10] {
let mut bytes = [0u8; 10];
bytes[..2].copy_from_slice(&self.fee_rate_basis_points.to_le_bytes());
bytes[2..10].copy_from_slice(&self.maximum_fee.to_le_bytes());
bytes
}
pub fn from_bytes(bytes: &[u8]) -> Self {
let bytes = array_ref![bytes, 0, 10];
let (fee_rate_basis_points, maximum_fee) = array_refs![bytes, 2, 8];
Self {
fee_rate_basis_points: u16::from_le_bytes(*fee_rate_basis_points),
maximum_fee: u64::from_le_bytes(*maximum_fee),
}
}
}

View File

@ -53,7 +53,7 @@ mod target_arch {
crate::{
curve25519::scalar::PodScalar,
errors::ProofError,
instruction::transfer::{FeeParameters, TransferPubkeys, TransferWithFeePubkeys},
instruction::transfer::{TransferPubkeys, TransferWithFeePubkeys},
},
curve25519_dalek::{ristretto::CompressedRistretto, scalar::Scalar},
std::convert::TryFrom,
@ -132,24 +132,6 @@ mod target_arch {
})
}
}
impl From<FeeParameters> for pod::FeeParameters {
fn from(parameters: FeeParameters) -> Self {
Self {
fee_rate_basis_points: parameters.fee_rate_basis_points.into(),
maximum_fee: parameters.maximum_fee.into(),
}
}
}
impl From<pod::FeeParameters> for FeeParameters {
fn from(pod: pod::FeeParameters) -> Self {
Self {
fee_rate_basis_points: pod.fee_rate_basis_points.into(),
maximum_fee: pod.maximum_fee.into(),
}
}
}
}
#[cfg(target_os = "solana")]

View File

@ -70,3 +70,23 @@ pub struct FeeParameters {
/// Maximum fee assessed on transfers, expressed as an amount of tokens
pub maximum_fee: PodU64,
}
#[cfg(not(target_os = "solana"))]
impl From<decoded::FeeParameters> for FeeParameters {
fn from(decoded_fee_parameters: decoded::FeeParameters) -> Self {
FeeParameters {
fee_rate_basis_points: decoded_fee_parameters.fee_rate_basis_points.into(),
maximum_fee: decoded_fee_parameters.maximum_fee.into(),
}
}
}
#[cfg(not(target_os = "solana"))]
impl From<FeeParameters> for decoded::FeeParameters {
fn from(pod_fee_parameters: FeeParameters) -> Self {
decoded::FeeParameters {
fee_rate_basis_points: pod_fee_parameters.fee_rate_basis_points.into(),
maximum_fee: pod_fee_parameters.maximum_fee.into(),
}
}
}