Struct snarkvm_dpc::testnet2::DPC [−][src]
pub struct DPC<C: Testnet2Components> { /* fields omitted */ }
Implementations
impl<C: Testnet2Components> DPC<C> where
<C::PolynomialCommitment as PolynomialCommitment<C::InnerScalarField>>::VerifierKey: ToConstraintField<C::OuterScalarField>,
<C::PolynomialCommitment as PolynomialCommitment<C::InnerScalarField>>::Commitment: ToConstraintField<C::OuterScalarField>,
impl<C: Testnet2Components> DPC<C> where
<C::PolynomialCommitment as PolynomialCommitment<C::InnerScalarField>>::VerifierKey: ToConstraintField<C::OuterScalarField>,
<C::PolynomialCommitment as PolynomialCommitment<C::InnerScalarField>>::Commitment: ToConstraintField<C::OuterScalarField>,
pub fn generate_system_parameters<R: Rng>(
rng: &mut R
) -> Result<SystemParameters<C>, DPCError>
pub fn generate_program_snark_universal_srs<R: Rng + CryptoRng>(
rng: &mut R
) -> Result<ProgramSNARKUniversalSRS<C>, DPCError>
pub fn generate_noop_program_snark_parameters<R: Rng + CryptoRng>(
system_parameters: &SystemParameters<C>,
universal_srs: &ProgramSNARKUniversalSRS<C>,
rng: &mut R
) -> Result<NoopProgramSNARKParameters<C>, DPCError>
Trait Implementations
impl<C: Testnet2Components, L: LedgerScheme> DPCScheme<L> for DPC<C> where
L: LedgerScheme<Commitment = <C::RecordCommitment as CommitmentScheme>::Output, MerkleParameters = C::MerkleParameters, MerklePath = MerklePath<C::MerkleParameters>, MerkleTreeDigest = MerkleTreeDigest<C::MerkleParameters>, SerialNumber = <C::AccountSignature as SignatureScheme>::PublicKey, Transaction = Transaction<C>>,
<C::PolynomialCommitment as PolynomialCommitment<C::InnerScalarField>>::VerifierKey: ToConstraintField<C::OuterScalarField>,
<C::PolynomialCommitment as PolynomialCommitment<C::InnerScalarField>>::Commitment: ToConstraintField<C::OuterScalarField>,
impl<C: Testnet2Components, L: LedgerScheme> DPCScheme<L> for DPC<C> where
L: LedgerScheme<Commitment = <C::RecordCommitment as CommitmentScheme>::Output, MerkleParameters = C::MerkleParameters, MerklePath = MerklePath<C::MerkleParameters>, MerkleTreeDigest = MerkleTreeDigest<C::MerkleParameters>, SerialNumber = <C::AccountSignature as SignatureScheme>::PublicKey, Transaction = Transaction<C>>,
<C::PolynomialCommitment as PolynomialCommitment<C::InnerScalarField>>::VerifierKey: ToConstraintField<C::OuterScalarField>,
<C::PolynomialCommitment as PolynomialCommitment<C::InnerScalarField>>::Commitment: ToConstraintField<C::OuterScalarField>,
fn verify_transactions(
parameters: &Self::NetworkParameters,
transactions: &[Self::Transaction],
ledger: &L
) -> bool
fn verify_transactions(
parameters: &Self::NetworkParameters,
transactions: &[Self::Transaction],
ledger: &L
) -> bool
Returns true iff all the transactions in the block are valid according to the ledger.
type NetworkParameters = PublicParameters<C>
type Payload = <Self::Record as RecordScheme>::Payload
type SystemParameters = SystemParameters<C>
type Transaction = Transaction<C>
type TransactionKernel = TransactionKernel<C>
fn setup<R: Rng + CryptoRng>(
ledger_parameters: &Arc<C::MerkleParameters>,
rng: &mut R
) -> Result<Self::NetworkParameters>
fn setup<R: Rng + CryptoRng>(
ledger_parameters: &Arc<C::MerkleParameters>,
rng: &mut R
) -> Result<Self::NetworkParameters>
Returns public parameters for the DPC.
fn create_account<R: Rng + CryptoRng>(
parameters: &Self::SystemParameters,
rng: &mut R
) -> Result<Self::Account>
fn create_account<R: Rng + CryptoRng>(
parameters: &Self::SystemParameters,
rng: &mut R
) -> Result<Self::Account>
Returns an account, given the system parameters, metadata, and an RNG.
fn execute_offline_phase<R: Rng + CryptoRng>(
parameters: Self::SystemParameters,
old_private_keys: &Vec<<Self::Account as AccountScheme>::PrivateKey>,
old_records: Vec<Self::Record>,
new_records: Vec<Self::Record>,
memorandum: <Self::Transaction as TransactionScheme>::Memorandum,
rng: &mut R
) -> Result<Self::TransactionKernel>
fn execute_offline_phase<R: Rng + CryptoRng>(
parameters: Self::SystemParameters,
old_private_keys: &Vec<<Self::Account as AccountScheme>::PrivateKey>,
old_records: Vec<Self::Record>,
new_records: Vec<Self::Record>,
memorandum: <Self::Transaction as TransactionScheme>::Memorandum,
rng: &mut R
) -> Result<Self::TransactionKernel>
Returns the execution context required for program snark and DPC transaction generation.
fn execute_online_phase<R: Rng + CryptoRng>(
parameters: &Self::NetworkParameters,
old_private_keys: &Vec<<Self::Account as AccountScheme>::PrivateKey>,
transaction_kernel: Self::TransactionKernel,
program_proofs: Vec<Self::PrivateProgramInput>,
ledger: &L,
rng: &mut R
) -> Result<(Vec<Self::Record>, Self::Transaction)>
fn execute_online_phase<R: Rng + CryptoRng>(
parameters: &Self::NetworkParameters,
old_private_keys: &Vec<<Self::Account as AccountScheme>::PrivateKey>,
transaction_kernel: Self::TransactionKernel,
program_proofs: Vec<Self::PrivateProgramInput>,
ledger: &L,
rng: &mut R
) -> Result<(Vec<Self::Record>, Self::Transaction)>
Returns new records and a transaction based on the authorized consumption of old records. Read more
fn verify(
parameters: &Self::NetworkParameters,
transaction: &Self::Transaction,
ledger: &L
) -> bool
fn verify(
parameters: &Self::NetworkParameters,
transaction: &Self::Transaction,
ledger: &L
) -> bool
Returns true iff the transaction is valid according to the ledger.
Auto Trait Implementations
impl<C> RefUnwindSafe for DPC<C> where
C: RefUnwindSafe,
impl<C> UnwindSafe for DPC<C> where
C: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
fn fmt_binary(self) -> FmtBinary<Self> where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self> where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.
fn fmt_display(self) -> FmtDisplay<Self> where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self> where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted. Read more
fn fmt_lower_exp(self) -> FmtLowerExp<Self> where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self> where
Self: LowerExp,
Causes self
to use its LowerExp
implementation when
Debug
-formatted. Read more
fn fmt_lower_hex(self) -> FmtLowerHex<Self> where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self> where
Self: LowerHex,
Causes self
to use its LowerHex
implementation when
Debug
-formatted. Read more
Causes self
to use its Octal
implementation when Debug
-formatted.
fn fmt_pointer(self) -> FmtPointer<Self> where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self> where
Self: Pointer,
Causes self
to use its Pointer
implementation when
Debug
-formatted. Read more
fn fmt_upper_exp(self) -> FmtUpperExp<Self> where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self> where
Self: UpperExp,
Causes self
to use its UpperExp
implementation when
Debug
-formatted. Read more
fn fmt_upper_hex(self) -> FmtUpperHex<Self> where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self> where
Self: UpperHex,
Causes self
to use its UpperHex
implementation when
Debug
-formatted. Read more
impl<T> Pipe for T where
T: ?Sized,
impl<T> Pipe for T where
T: ?Sized,
Pipes by value. This is generally the method you want to use. Read more
Borrows self
and passes that borrow into the pipe function. Read more
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R where
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R where
R: 'a,
Mutably borrows self
and passes that borrow into the pipe function. Read more
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R where
Self: Borrow<B>,
R: 'a,
B: 'a + ?Sized,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R where
Self: Borrow<B>,
R: 'a,
B: 'a + ?Sized,
Borrows self
, then passes self.borrow()
into the pipe function. Read more
fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R where
Self: BorrowMut<B>,
R: 'a,
B: 'a + ?Sized,
fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R where
Self: BorrowMut<B>,
R: 'a,
B: 'a + ?Sized,
Mutably borrows self
, then passes self.borrow_mut()
into the pipe
function. Read more
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R where
Self: AsRef<U>,
R: 'a,
U: 'a + ?Sized,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R where
Self: AsRef<U>,
R: 'a,
U: 'a + ?Sized,
Borrows self
, then passes self.as_ref()
into the pipe function.
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R where
Self: AsMut<U>,
R: 'a,
U: 'a + ?Sized,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R where
Self: AsMut<U>,
R: 'a,
U: 'a + ?Sized,
Mutably borrows self
, then passes self.as_mut()
into the pipe
function. Read more
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R where
Self: Deref<Target = T>,
R: 'a,
T: 'a + ?Sized,
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R where
Self: Deref<Target = T>,
R: 'a,
T: 'a + ?Sized,
Borrows self
, then passes self.deref()
into the pipe function.
type Output = T
type Output = T
Should always be Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self where
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self where
Self: Borrow<B>,
B: ?Sized,
Immutable access to the Borrow<B>
of a value. Read more
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self where
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self where
Self: BorrowMut<B>,
B: ?Sized,
Mutable access to the BorrowMut<B>
of a value. Read more
Immutable access to the AsRef<R>
view of a value. Read more
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self where
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self where
Self: AsMut<R>,
R: ?Sized,
Mutable access to the AsMut<R>
view of a value. Read more
Immutable access to the Deref::Target
of a value. Read more
Mutable access to the Deref::Target
of a value. Read more
Calls .tap()
only in debug builds, and is erased in release builds.
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls .tap_mut()
only in debug builds, and is erased in release
builds. Read more
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self where
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self where
Self: Borrow<B>,
B: ?Sized,
Calls .tap_borrow()
only in debug builds, and is erased in release
builds. Read more
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self where
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self where
Self: BorrowMut<B>,
B: ?Sized,
Calls .tap_borrow_mut()
only in debug builds, and is erased in release
builds. Read more
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self where
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self where
Self: AsRef<R>,
R: ?Sized,
Calls .tap_ref()
only in debug builds, and is erased in release
builds. Read more
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self where
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self where
Self: AsMut<R>,
R: ?Sized,
Calls .tap_ref_mut()
only in debug builds, and is erased in release
builds. Read more
pub fn vzip(self) -> V