pub struct MerkleTreeGpu<F, Digest> { /* private fields */ }Implementations§
Source§impl<F, Digest> MerkleTreeGpu<F, Digest>
impl<F, Digest> MerkleTreeGpu<F, Digest>
pub fn root(&self) -> Digestwhere
Digest: Clone,
pub fn query_stride(&self) -> usize
pub fn proof_depth(&self) -> usize
Source§impl<D: Copy + Send + Sync + 'static> MerkleTreeGpu<F, D>
impl<D: Copy + Send + Sync + 'static> MerkleTreeGpu<F, D>
Sourcepub fn new_with_hash<MH: MerkleTreeConstructor<Digest = D>>(
matrix: DeviceMatrix<F>,
rows_per_query: usize,
cache_backing_matrix: bool,
device_ctx: &GpuDeviceCtx,
) -> Result<Self, MerkleTreeError>
pub fn new_with_hash<MH: MerkleTreeConstructor<Digest = D>>( matrix: DeviceMatrix<F>, rows_per_query: usize, cache_backing_matrix: bool, device_ctx: &GpuDeviceCtx, ) -> Result<Self, MerkleTreeError>
Build a Merkle tree using the given hash scheme MH.
This is the primary constructor; new() is a convenience wrapper that
fixes MH = Poseidon2MerkleHash.
pub fn batch_open_rows( backing_matrices: &[&DeviceMatrix<F>], query_indices: &[usize], query_stride: usize, rows_per_query: usize, device_ctx: &GpuDeviceCtx, ) -> Result<Vec<Vec<Vec<F>>>, MerkleTreeError>
Source§impl MerkleTreeGpu<F, Digest>
impl MerkleTreeGpu<F, Digest>
Sourcepub fn new(
matrix: DeviceMatrix<F>,
rows_per_query: usize,
cache_backing_matrix: bool,
device_ctx: &GpuDeviceCtx,
) -> Result<Self, MerkleTreeError>
pub fn new( matrix: DeviceMatrix<F>, rows_per_query: usize, cache_backing_matrix: bool, device_ctx: &GpuDeviceCtx, ) -> Result<Self, MerkleTreeError>
Build a Merkle tree using the default Poseidon2 hash.
Equivalent to new_with_hash::<Poseidon2MerkleHash>(...).
Source§impl<D: BatchQueryMerkle + Send + Sync + 'static> MerkleTreeGpu<F, D>
impl<D: BatchQueryMerkle + Send + Sync + 'static> MerkleTreeGpu<F, D>
Sourcepub fn batch_query_merkle_proofs(
trees: &[&Self],
query_indices: &[usize],
device_ctx: &GpuDeviceCtx,
) -> Result<Vec<Vec<Vec<D>>>, MerkleTreeError>where
D: MerkleProofQueryDigest,
pub fn batch_query_merkle_proofs(
trees: &[&Self],
query_indices: &[usize],
device_ctx: &GpuDeviceCtx,
) -> Result<Vec<Vec<Vec<D>>>, MerkleTreeError>where
D: MerkleProofQueryDigest,
Batch queries multiple trees at the same query_indices for merkle proofs.
§Assumptions
- All
treeshave the same depth.
Source§impl<D: Copy + Send + Sync + 'static> MerkleTreeGpu<EF, D>
impl<D: Copy + Send + Sync + 'static> MerkleTreeGpu<EF, D>
Sourcepub fn new_with_hash<MH: GpuMerkleHash<Digest = D>>(
matrix: DeviceMatrix<EF>,
rows_per_query: usize,
cache_backing_matrix: bool,
device_ctx: &GpuDeviceCtx,
) -> Result<Self, MerkleTreeError>
pub fn new_with_hash<MH: GpuMerkleHash<Digest = D>>( matrix: DeviceMatrix<EF>, rows_per_query: usize, cache_backing_matrix: bool, device_ctx: &GpuDeviceCtx, ) -> Result<Self, MerkleTreeError>
Build a Merkle tree from an extension-field matrix using hash scheme MH.
Source§impl MerkleTreeGpu<EF, Digest>
impl MerkleTreeGpu<EF, Digest>
Sourcepub fn new(
matrix: DeviceMatrix<EF>,
rows_per_query: usize,
cache_backing_matrix: bool,
device_ctx: &GpuDeviceCtx,
) -> Result<Self, MerkleTreeError>
pub fn new( matrix: DeviceMatrix<EF>, rows_per_query: usize, cache_backing_matrix: bool, device_ctx: &GpuDeviceCtx, ) -> Result<Self, MerkleTreeError>
Build a Merkle tree from an extension-field matrix using Poseidon2.
NOTE: currently unused because we transpose DeviceMatrix<EF> to
DeviceMatrix<F> beforehand in our use cases.
Auto Trait Implementations§
impl<F, Digest> Freeze for MerkleTreeGpu<F, Digest>where
Digest: Freeze,
impl<F, Digest> RefUnwindSafe for MerkleTreeGpu<F, Digest>where
Digest: RefUnwindSafe,
F: RefUnwindSafe,
impl<F, Digest> Send for MerkleTreeGpu<F, Digest>where
Digest: Send,
impl<F, Digest> Sync for MerkleTreeGpu<F, Digest>where
Digest: Sync,
impl<F, Digest> Unpin for MerkleTreeGpu<F, Digest>where
Digest: Unpin,
impl<F, Digest> UnsafeUnpin for MerkleTreeGpu<F, Digest>where
Digest: UnsafeUnpin,
impl<F, Digest> UnwindSafe for MerkleTreeGpu<F, Digest>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 more