Trait Network

Source
pub trait Network:
    'static
    + Environment
    + Copy
    + Clone
    + Debug
    + Eq
    + PartialEq
    + Hash
    + Serialize
    + DeserializeOwned
    + for<'a> Deserialize<'a>
    + Send
    + Sync {
    type StateRoot: Bech32ID<Field<Self>>;
    type BlockHash: Bech32ID<Field<Self>>;
    type RatificationID: Bech32ID<Field<Self>>;
    type TransactionID: Bech32ID<Field<Self>>;
    type TransitionID: Bech32ID<Field<Self>>;
Show 33 associated constants and 59 methods const ID: u16; const NAME: &'static str; const EDITION: u16; const INCLUSION_FUNCTION_NAME: &'static str; const GENESIS_TIMESTAMP: i64 = 1_696_118_400i64; const GENESIS_COINBASE_TARGET: u64 = 4_294_967_295u64; const GENESIS_PROOF_TARGET: u64 = 33_554_432u64; const STARTING_SUPPLY: u64 = 1_500_000_000_000_000u64; const DEPLOYMENT_FEE_MULTIPLIER: u64 = 1_000u64; const MAX_FEE: u64 = 1_000_000_000_000_000u64; const ANCHOR_HEIGHT: u32 = _; const ANCHOR_TIME: u16 = 25u16; const BLOCK_TIME: u16 = 10u16; const COINBASE_PUZZLE_DEGREE: u32 = 8_191u32; const MAX_SOLUTIONS: usize = 256usize; const NUM_BLOCKS_PER_EPOCH: u32 = _; const MAX_DATA_ENTRIES: usize = 32usize; const MAX_DATA_DEPTH: usize = 32usize; const MAX_DATA_SIZE_IN_FIELDS: u32 = _; const MIN_STRUCT_ENTRIES: usize = 1usize; const MAX_STRUCT_ENTRIES: usize = Self::MAX_DATA_ENTRIES; const MIN_ARRAY_ELEMENTS: usize = 1usize; const MAX_ARRAY_ELEMENTS: usize = Self::MAX_DATA_ENTRIES; const MIN_RECORD_ENTRIES: usize = 1usize; const MAX_RECORD_ENTRIES: usize = _; const MAX_MAPPINGS: usize = 31usize; const MAX_FUNCTIONS: usize = 31usize; const MAX_OPERANDS: usize = Self::MAX_INPUTS; const MAX_INSTRUCTIONS: usize = 65_535usize; const MAX_COMMANDS: usize = 65_535usize; const MAX_WRITES: u16 = 16u16; const MAX_INPUTS: usize = 16usize; const MAX_OUTPUTS: usize = 16usize; // Required methods fn genesis_bytes() -> &'static [u8] ; fn get_credits_proving_key( function_name: String, ) -> Result<&'static Arc<CircuitProvingKey<Self::PairingCurve, VarunaHidingMode>>, Error>; fn get_credits_verifying_key( function_name: String, ) -> Result<&'static Arc<CircuitVerifyingKey<Self::PairingCurve>>, Error>; fn inclusion_proving_key( ) -> &'static Arc<CircuitProvingKey<Self::PairingCurve, VarunaHidingMode>>; fn inclusion_verifying_key( ) -> &'static Arc<CircuitVerifyingKey<Self::PairingCurve>>; fn g_powers() -> &'static Vec<Group<Self>>; fn g_scalar_multiply(scalar: &Scalar<Self>) -> Group<Self>; fn varuna_universal_prover() -> &'static UniversalProver<Self::PairingCurve>; fn varuna_universal_verifier( ) -> &'static UniversalVerifier<Self::PairingCurve>; fn varuna_fs_parameters( ) -> &'static <PoseidonSponge<<Self::PairingCurve as PairingEngine>::Fq, 2, 1> as AlgebraicSponge<<Self::PairingCurve as PairingEngine>::Fq, 2>>::Parameters; fn encryption_domain() -> Field<Self>; fn graph_key_domain() -> Field<Self>; fn serial_number_domain() -> Field<Self>; fn commit_bhp256( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>; fn commit_bhp512( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>; fn commit_bhp768( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>; fn commit_bhp1024( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>; fn commit_ped64( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>; fn commit_ped128( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>; fn commit_to_group_bhp256( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>; fn commit_to_group_bhp512( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>; fn commit_to_group_bhp768( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>; fn commit_to_group_bhp1024( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>; fn commit_to_group_ped64( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>; fn commit_to_group_ped128( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>; fn hash_bhp256(input: &[bool]) -> Result<Field<Self>, Error>; fn hash_bhp512(input: &[bool]) -> Result<Field<Self>, Error>; fn hash_bhp768(input: &[bool]) -> Result<Field<Self>, Error>; fn hash_bhp1024(input: &[bool]) -> Result<Field<Self>, Error>; fn hash_keccak256(input: &[bool]) -> Result<Vec<bool>, Error>; fn hash_keccak384(input: &[bool]) -> Result<Vec<bool>, Error>; fn hash_keccak512(input: &[bool]) -> Result<Vec<bool>, Error>; fn hash_ped64(input: &[bool]) -> Result<Field<Self>, Error>; fn hash_ped128(input: &[bool]) -> Result<Field<Self>, Error>; fn hash_psd2(input: &[Field<Self>]) -> Result<Field<Self>, Error>; fn hash_psd4(input: &[Field<Self>]) -> Result<Field<Self>, Error>; fn hash_psd8(input: &[Field<Self>]) -> Result<Field<Self>, Error>; fn hash_sha3_256(input: &[bool]) -> Result<Vec<bool>, Error>; fn hash_sha3_384(input: &[bool]) -> Result<Vec<bool>, Error>; fn hash_sha3_512(input: &[bool]) -> Result<Vec<bool>, Error>; fn hash_many_psd2( input: &[Field<Self>], num_outputs: u16, ) -> Vec<Field<Self>>; fn hash_many_psd4( input: &[Field<Self>], num_outputs: u16, ) -> Vec<Field<Self>>; fn hash_many_psd8( input: &[Field<Self>], num_outputs: u16, ) -> Vec<Field<Self>>; fn hash_to_group_bhp256(input: &[bool]) -> Result<Group<Self>, Error>; fn hash_to_group_bhp512(input: &[bool]) -> Result<Group<Self>, Error>; fn hash_to_group_bhp768(input: &[bool]) -> Result<Group<Self>, Error>; fn hash_to_group_bhp1024(input: &[bool]) -> Result<Group<Self>, Error>; fn hash_to_group_ped64(input: &[bool]) -> Result<Group<Self>, Error>; fn hash_to_group_ped128(input: &[bool]) -> Result<Group<Self>, Error>; fn hash_to_group_psd2(input: &[Field<Self>]) -> Result<Group<Self>, Error>; fn hash_to_group_psd4(input: &[Field<Self>]) -> Result<Group<Self>, Error>; fn hash_to_group_psd8(input: &[Field<Self>]) -> Result<Group<Self>, Error>; fn hash_to_scalar_psd2(input: &[Field<Self>]) -> Result<Scalar<Self>, Error>; fn hash_to_scalar_psd4(input: &[Field<Self>]) -> Result<Scalar<Self>, Error>; fn hash_to_scalar_psd8(input: &[Field<Self>]) -> Result<Scalar<Self>, Error>; fn merkle_tree_bhp<const DEPTH: u8>( leaves: &[Vec<bool>], ) -> Result<MerkleTree<Self, BHP<Self, 8, 54>, BHP<Self, 6, 43>, DEPTH>, Error>; fn merkle_tree_psd<const DEPTH: u8>( leaves: &[Vec<Field<Self>>], ) -> Result<MerkleTree<Self, Poseidon<Self, 4>, Poseidon<Self, 2>, DEPTH>, Error>; fn verify_merkle_path_bhp<const DEPTH: u8>( path: &MerklePath<Self, DEPTH>, root: &Field<Self>, leaf: &Vec<bool>, ) -> bool; fn verify_merkle_path_psd<const DEPTH: u8>( path: &MerklePath<Self, DEPTH>, root: &Field<Self>, leaf: &Vec<Field<Self>>, ) -> bool;
}

Required Associated Constants§

Source

const ID: u16

The network ID.

Source

const NAME: &'static str

The network name.

Source

const EDITION: u16

The network edition.

Source

const INCLUSION_FUNCTION_NAME: &'static str

The function name for the inclusion circuit.

Provided Associated Constants§

Source

const GENESIS_TIMESTAMP: i64 = 1_696_118_400i64

The fixed timestamp of the genesis block.

Source

const GENESIS_COINBASE_TARGET: u64 = 4_294_967_295u64

The genesis block coinbase target.

Source

const GENESIS_PROOF_TARGET: u64 = 33_554_432u64

The genesis block proof target.

Source

const STARTING_SUPPLY: u64 = 1_500_000_000_000_000u64

The starting supply of Aleo credits.

Source

const DEPLOYMENT_FEE_MULTIPLIER: u64 = 1_000u64

The cost in microcredits per byte for the deployment transaction.

Source

const MAX_FEE: u64 = 1_000_000_000_000_000u64

The maximum number of microcredits that can be spent as a fee.

Source

const ANCHOR_HEIGHT: u32 = _

The anchor height, defined as the expected number of blocks to reach the coinbase target.

Source

const ANCHOR_TIME: u16 = 25u16

The anchor time in seconds.

Source

const BLOCK_TIME: u16 = 10u16

The expected time per block in seconds.

Source

const COINBASE_PUZZLE_DEGREE: u32 = 8_191u32

The coinbase puzzle degree.

Source

const MAX_SOLUTIONS: usize = 256usize

The maximum number of solutions that can be included per block.

Source

const NUM_BLOCKS_PER_EPOCH: u32 = _

The number of blocks per epoch.

Source

const MAX_DATA_ENTRIES: usize = 32usize

The maximum number of entries in data.

Source

const MAX_DATA_DEPTH: usize = 32usize

The maximum recursive depth of an entry. Note: This value must be strictly less than u8::MAX.

Source

const MAX_DATA_SIZE_IN_FIELDS: u32 = _

The maximum number of fields in data (must not exceed u16::MAX).

Source

const MIN_STRUCT_ENTRIES: usize = 1usize

The minimum number of entries in a struct.

Source

const MAX_STRUCT_ENTRIES: usize = Self::MAX_DATA_ENTRIES

The maximum number of entries in a struct.

Source

const MIN_ARRAY_ELEMENTS: usize = 1usize

The minimum number of elements in an array.

Source

const MAX_ARRAY_ELEMENTS: usize = Self::MAX_DATA_ENTRIES

The maximum number of elements in an array.

Source

const MIN_RECORD_ENTRIES: usize = 1usize

The minimum number of entries in a record.

Source

const MAX_RECORD_ENTRIES: usize = _

The maximum number of entries in a record.

Source

const MAX_MAPPINGS: usize = 31usize

The maximum number of mappings in a program.

Source

const MAX_FUNCTIONS: usize = 31usize

The maximum number of functions in a program.

Source

const MAX_OPERANDS: usize = Self::MAX_INPUTS

The maximum number of operands in an instruction.

Source

const MAX_INSTRUCTIONS: usize = 65_535usize

The maximum number of instructions in a closure or function.

Source

const MAX_COMMANDS: usize = 65_535usize

The maximum number of commands in finalize.

Source

const MAX_WRITES: u16 = 16u16

The maximum number of write commands in finalize.

Source

const MAX_INPUTS: usize = 16usize

The maximum number of inputs per transition.

Source

const MAX_OUTPUTS: usize = 16usize

The maximum number of outputs per transition.

Required Associated Types§

Source

type StateRoot: Bech32ID<Field<Self>>

The state root type.

Source

type BlockHash: Bech32ID<Field<Self>>

The block hash type.

Source

type RatificationID: Bech32ID<Field<Self>>

The ratification ID type.

Source

type TransactionID: Bech32ID<Field<Self>>

The transaction ID type.

Source

type TransitionID: Bech32ID<Field<Self>>

The transition ID type.

Required Methods§

Source

fn genesis_bytes() -> &'static [u8]

Returns the genesis block bytes.

Source

fn get_credits_proving_key( function_name: String, ) -> Result<&'static Arc<CircuitProvingKey<Self::PairingCurve, VarunaHidingMode>>, Error>

Returns the proving key for the given function name in credits.aleo.

Source

fn get_credits_verifying_key( function_name: String, ) -> Result<&'static Arc<CircuitVerifyingKey<Self::PairingCurve>>, Error>

Returns the verifying key for the given function name in credits.aleo.

Source

fn inclusion_proving_key() -> &'static Arc<CircuitProvingKey<Self::PairingCurve, VarunaHidingMode>>

Returns the proving key for the inclusion circuit.

Source

fn inclusion_verifying_key() -> &'static Arc<CircuitVerifyingKey<Self::PairingCurve>>

Returns the verifying key for the inclusion circuit.

Source

fn g_powers() -> &'static Vec<Group<Self>>

Returns the powers of G.

Source

fn g_scalar_multiply(scalar: &Scalar<Self>) -> Group<Self>

Returns the scalar multiplication on the generator G.

Source

fn varuna_universal_prover() -> &'static UniversalProver<Self::PairingCurve>

Returns the Varuna universal prover.

Source

fn varuna_universal_verifier() -> &'static UniversalVerifier<Self::PairingCurve>

Returns the Varuna universal verifier.

Source

fn varuna_fs_parameters() -> &'static <PoseidonSponge<<Self::PairingCurve as PairingEngine>::Fq, 2, 1> as AlgebraicSponge<<Self::PairingCurve as PairingEngine>::Fq, 2>>::Parameters

Returns the sponge parameters for Varuna.

Source

fn encryption_domain() -> Field<Self>

Returns the encryption domain as a constant field element.

Source

fn graph_key_domain() -> Field<Self>

Returns the graph key domain as a constant field element.

Source

fn serial_number_domain() -> Field<Self>

Returns the serial number domain as a constant field element.

Source

fn commit_bhp256( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>

Returns a BHP commitment with an input hasher of 256-bits and randomizer.

Source

fn commit_bhp512( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>

Returns a BHP commitment with an input hasher of 512-bits and randomizer.

Source

fn commit_bhp768( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>

Returns a BHP commitment with an input hasher of 768-bits and randomizer.

Source

fn commit_bhp1024( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>

Returns a BHP commitment with an input hasher of 1024-bits and randomizer.

Source

fn commit_ped64( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>

Returns a Pedersen commitment for the given (up to) 64-bit input and randomizer.

Source

fn commit_ped128( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Field<Self>, Error>

Returns a Pedersen commitment for the given (up to) 128-bit input and randomizer.

Source

fn commit_to_group_bhp256( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>

Returns a BHP commitment with an input hasher of 256-bits and randomizer.

Source

fn commit_to_group_bhp512( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>

Returns a BHP commitment with an input hasher of 512-bits and randomizer.

Source

fn commit_to_group_bhp768( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>

Returns a BHP commitment with an input hasher of 768-bits and randomizer.

Source

fn commit_to_group_bhp1024( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>

Returns a BHP commitment with an input hasher of 1024-bits and randomizer.

Source

fn commit_to_group_ped64( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>

Returns a Pedersen commitment for the given (up to) 64-bit input and randomizer.

Source

fn commit_to_group_ped128( input: &[bool], randomizer: &Scalar<Self>, ) -> Result<Group<Self>, Error>

Returns a Pedersen commitment for the given (up to) 128-bit input and randomizer.

Source

fn hash_bhp256(input: &[bool]) -> Result<Field<Self>, Error>

Returns the BHP hash with an input hasher of 256-bits.

Source

fn hash_bhp512(input: &[bool]) -> Result<Field<Self>, Error>

Returns the BHP hash with an input hasher of 512-bits.

Source

fn hash_bhp768(input: &[bool]) -> Result<Field<Self>, Error>

Returns the BHP hash with an input hasher of 768-bits.

Source

fn hash_bhp1024(input: &[bool]) -> Result<Field<Self>, Error>

Returns the BHP hash with an input hasher of 1024-bits.

Source

fn hash_keccak256(input: &[bool]) -> Result<Vec<bool>, Error>

Returns the Keccak hash with a 256-bit output.

Source

fn hash_keccak384(input: &[bool]) -> Result<Vec<bool>, Error>

Returns the Keccak hash with a 384-bit output.

Source

fn hash_keccak512(input: &[bool]) -> Result<Vec<bool>, Error>

Returns the Keccak hash with a 512-bit output.

Source

fn hash_ped64(input: &[bool]) -> Result<Field<Self>, Error>

Returns the Pedersen hash for a given (up to) 64-bit input.

Source

fn hash_ped128(input: &[bool]) -> Result<Field<Self>, Error>

Returns the Pedersen hash for a given (up to) 128-bit input.

Source

fn hash_psd2(input: &[Field<Self>]) -> Result<Field<Self>, Error>

Returns the Poseidon hash with an input rate of 2.

Source

fn hash_psd4(input: &[Field<Self>]) -> Result<Field<Self>, Error>

Returns the Poseidon hash with an input rate of 4.

Source

fn hash_psd8(input: &[Field<Self>]) -> Result<Field<Self>, Error>

Returns the Poseidon hash with an input rate of 8.

Source

fn hash_sha3_256(input: &[bool]) -> Result<Vec<bool>, Error>

Returns the SHA-3 hash with a 256-bit output.

Source

fn hash_sha3_384(input: &[bool]) -> Result<Vec<bool>, Error>

Returns the SHA-3 hash with a 384-bit output.

Source

fn hash_sha3_512(input: &[bool]) -> Result<Vec<bool>, Error>

Returns the SHA-3 hash with a 512-bit output.

Source

fn hash_many_psd2(input: &[Field<Self>], num_outputs: u16) -> Vec<Field<Self>>

Returns the extended Poseidon hash with an input rate of 2.

Source

fn hash_many_psd4(input: &[Field<Self>], num_outputs: u16) -> Vec<Field<Self>>

Returns the extended Poseidon hash with an input rate of 4.

Source

fn hash_many_psd8(input: &[Field<Self>], num_outputs: u16) -> Vec<Field<Self>>

Returns the extended Poseidon hash with an input rate of 8.

Source

fn hash_to_group_bhp256(input: &[bool]) -> Result<Group<Self>, Error>

Returns the BHP hash with an input hasher of 256-bits.

Source

fn hash_to_group_bhp512(input: &[bool]) -> Result<Group<Self>, Error>

Returns the BHP hash with an input hasher of 512-bits.

Source

fn hash_to_group_bhp768(input: &[bool]) -> Result<Group<Self>, Error>

Returns the BHP hash with an input hasher of 768-bits.

Source

fn hash_to_group_bhp1024(input: &[bool]) -> Result<Group<Self>, Error>

Returns the BHP hash with an input hasher of 1024-bits.

Source

fn hash_to_group_ped64(input: &[bool]) -> Result<Group<Self>, Error>

Returns the Pedersen hash for a given (up to) 64-bit input.

Source

fn hash_to_group_ped128(input: &[bool]) -> Result<Group<Self>, Error>

Returns the Pedersen hash for a given (up to) 128-bit input.

Source

fn hash_to_group_psd2(input: &[Field<Self>]) -> Result<Group<Self>, Error>

Returns the Poseidon hash with an input rate of 2 on the affine curve.

Source

fn hash_to_group_psd4(input: &[Field<Self>]) -> Result<Group<Self>, Error>

Returns the Poseidon hash with an input rate of 4 on the affine curve.

Source

fn hash_to_group_psd8(input: &[Field<Self>]) -> Result<Group<Self>, Error>

Returns the Poseidon hash with an input rate of 8 on the affine curve.

Source

fn hash_to_scalar_psd2(input: &[Field<Self>]) -> Result<Scalar<Self>, Error>

Returns the Poseidon hash with an input rate of 2 on the scalar field.

Source

fn hash_to_scalar_psd4(input: &[Field<Self>]) -> Result<Scalar<Self>, Error>

Returns the Poseidon hash with an input rate of 4 on the scalar field.

Source

fn hash_to_scalar_psd8(input: &[Field<Self>]) -> Result<Scalar<Self>, Error>

Returns the Poseidon hash with an input rate of 8 on the scalar field.

Source

fn merkle_tree_bhp<const DEPTH: u8>( leaves: &[Vec<bool>], ) -> Result<MerkleTree<Self, BHP<Self, 8, 54>, BHP<Self, 6, 43>, DEPTH>, Error>

Returns a Merkle tree with a BHP leaf hasher of 1024-bits and a BHP path hasher of 512-bits.

Source

fn merkle_tree_psd<const DEPTH: u8>( leaves: &[Vec<Field<Self>>], ) -> Result<MerkleTree<Self, Poseidon<Self, 4>, Poseidon<Self, 2>, DEPTH>, Error>

Returns a Merkle tree with a Poseidon leaf hasher with input rate of 4 and a Poseidon path hasher with input rate of 2.

Source

fn verify_merkle_path_bhp<const DEPTH: u8>( path: &MerklePath<Self, DEPTH>, root: &Field<Self>, leaf: &Vec<bool>, ) -> bool

Returns true if the given Merkle path is valid for the given root and leaf.

Source

fn verify_merkle_path_psd<const DEPTH: u8>( path: &MerklePath<Self, DEPTH>, root: &Field<Self>, leaf: &Vec<Field<Self>>, ) -> bool

Returns true if the given Merkle path is valid for the given root and leaf.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl Network for Testnet3

Source§

const EDITION: u16 = 0u16

Source§

const ID: u16 = 3u16

Source§

const INCLUSION_FUNCTION_NAME: &'static str = snarkvm_parameters::testnet3::TESTNET3_INCLUSION_FUNCTION_NAME

Source§

const NAME: &'static str = "Aleo Testnet 3"

Source§

type BlockHash = AleoID<Field<Testnet3>, snarkvm_console_network::::testnet3::{impl#2}::BlockHash::{constant#0}>

Source§

type RatificationID = AleoID<Field<Testnet3>, snarkvm_console_network::::testnet3::{impl#2}::RatificationID::{constant#0}>

Source§

type StateRoot = AleoID<Field<Testnet3>, snarkvm_console_network::::testnet3::{impl#2}::StateRoot::{constant#0}>

Source§

type TransactionID = AleoID<Field<Testnet3>, snarkvm_console_network::::testnet3::{impl#2}::TransactionID::{constant#0}>

Source§

type TransitionID = AleoID<Field<Testnet3>, snarkvm_console_network::::testnet3::{impl#2}::TransitionID::{constant#0}>