pub struct Transaction {
pub sender: Vec<u8>,
pub recipient: Vec<u8>,
pub amount: f64,
pub data: Vec<u8>,
/* private fields */
}Expand description
Represents a transaction in a quantum blockchain
Fields§
§sender: Vec<u8>Sender’s public key hash
recipient: Vec<u8>Recipient’s public key hash
amount: f64Amount to transfer
data: Vec<u8>Additional data (can be used for smart contracts)
Implementations§
Source§impl Transaction
impl Transaction
Sourcepub fn new(
sender: Vec<u8>,
recipient: Vec<u8>,
amount: f64,
data: Vec<u8>,
) -> Self
pub fn new( sender: Vec<u8>, recipient: Vec<u8>, amount: f64, data: Vec<u8>, ) -> Self
Creates a new transaction
Examples found in repository?
examples/quantum_crypto.rs (line 237)
215fn run_blockchain_example() -> Result<()> {
216 println!("\nQuantum Blockchain Example");
217 println!("-------------------------");
218
219 use quantrs2_ml::blockchain::{ConsensusType, QuantumBlockchain, Transaction};
220
221 // Create a quantum blockchain
222 let difficulty = 2; // 2 leading zeros required for mining
223 println!("Creating quantum blockchain with difficulty {difficulty}");
224 let mut blockchain = QuantumBlockchain::new(ConsensusType::QuantumProofOfWork, difficulty);
225
226 // Create a transaction
227 let sender = vec![1, 2, 3, 4];
228 let recipient = vec![5, 6, 7, 8];
229 let amount = 100.0;
230
231 println!(
232 "Creating transaction: {} sends {} units to recipient",
233 sender.iter().map(|&b| b.to_string()).collect::<String>(),
234 amount
235 );
236
237 let transaction = Transaction::new(sender, recipient, amount, Vec::new());
238
239 // Add transaction
240 println!("Adding transaction to blockchain...");
241 blockchain.add_transaction(transaction)?;
242
243 // Mine a block
244 println!("Mining new block...");
245 let start = Instant::now();
246 let block = blockchain.mine_block()?;
247 println!("Block mined in {:.2?}", start.elapsed());
248
249 println!(
250 "Block hash: {:02x?}",
251 &block.hash[0..8.min(block.hash.len())]
252 );
253 println!("Blockchain length: {}", blockchain.chain.len());
254
255 // Verify blockchain
256 println!("Verifying blockchain integrity...");
257 let is_valid = blockchain.verify_chain()?;
258
259 if is_valid {
260 println!("✓ Blockchain verification successful!");
261 } else {
262 println!("✗ Blockchain verification failed!");
263 }
264
265 Ok(())
266}Trait Implementations§
Source§impl Clone for Transaction
impl Clone for Transaction
Source§fn clone(&self) -> Transaction
fn clone(&self) -> Transaction
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for Transaction
impl RefUnwindSafe for Transaction
impl Send for Transaction
impl Sync for Transaction
impl Unpin for Transaction
impl UnwindSafe for Transaction
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.