pub struct NonExistenceProof {
pub proof: Proof,
pub existing_pubkey: Pubkey,
pub existing_hash: Hash,
}Expand description
Result of a non-existence proof
Fields§
§proof: Proof§existing_pubkey: Pubkey§existing_hash: HashImplementations§
Source§impl NonExistenceProof
impl NonExistenceProof
Sourcepub fn to_wire(&self, slot: u64) -> Vec<u8> ⓘ
pub fn to_wire(&self, slot: u64) -> Vec<u8> ⓘ
Convert the non-existence proof to wire format compatible with C tn_state_proof_t This creates a CREATION type state proof with the proof data
Wire format layout:
- Header (40 bytes):
- type_slot (8 bytes): slot in low 62 bits, proof type (2=CREATION) in high 2 bits
- path_bitset (32 bytes): bitset indicating which proof indices are used
- Body (variable length):
- existing_leaf_pubkey (32 bytes): pubkey of the existing leaf found
- existing_leaf_hash (32 bytes): hash of the existing leaf value
- sibling_hashes (32 * n bytes): sibling hashes for the proof path
§Arguments
slot- The slot number to encode in the proof header
§Returns
A Vec
§Example
use thru_base::bintrie::BinTrie;
use thru_base::bintrie_types::{Pubkey, Hash};
let mut trie = BinTrie::new();
let existing_key = Pubkey::new([1u8; 32]);
let existing_value = Hash::new([2u8; 32]);
trie.insert(existing_key, existing_value).unwrap();
let missing_key = Pubkey::new([3u8; 32]);
let proof = trie.prove_non_existence(&missing_key).unwrap();
let wire_data = proof.to_wire(12345);
assert!(wire_data.len() >= 104); // At least header + existing pubkey + hashTrait Implementations§
Source§impl Clone for NonExistenceProof
impl Clone for NonExistenceProof
Source§fn clone(&self) -> NonExistenceProof
fn clone(&self) -> NonExistenceProof
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 NonExistenceProof
impl RefUnwindSafe for NonExistenceProof
impl Send for NonExistenceProof
impl Sync for NonExistenceProof
impl Unpin for NonExistenceProof
impl UnwindSafe for NonExistenceProof
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