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 as Environment>::PairingCurve, VarunaHidingMode>>>; fn get_credits_verifying_key( function_name: String ) -> Result<&'static Arc<CircuitVerifyingKey<<Self as Environment>::PairingCurve>>>; fn inclusion_proving_key( ) -> &'static Arc<CircuitProvingKey<<Self as Environment>::PairingCurve, VarunaHidingMode>>; fn inclusion_verifying_key( ) -> &'static Arc<CircuitVerifyingKey<<Self as Environment>::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 FiatShamirParameters<Self>; 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>>; fn commit_bhp512( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Field<Self>>; fn commit_bhp768( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Field<Self>>; fn commit_bhp1024( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Field<Self>>; fn commit_ped64( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Field<Self>>; fn commit_ped128( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Field<Self>>; fn commit_to_group_bhp256( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Group<Self>>; fn commit_to_group_bhp512( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Group<Self>>; fn commit_to_group_bhp768( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Group<Self>>; fn commit_to_group_bhp1024( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Group<Self>>; fn commit_to_group_ped64( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Group<Self>>; fn commit_to_group_ped128( input: &[bool], randomizer: &Scalar<Self> ) -> Result<Group<Self>>; fn hash_bhp256(input: &[bool]) -> Result<Field<Self>>; fn hash_bhp512(input: &[bool]) -> Result<Field<Self>>; fn hash_bhp768(input: &[bool]) -> Result<Field<Self>>; fn hash_bhp1024(input: &[bool]) -> Result<Field<Self>>; fn hash_keccak256(input: &[bool]) -> Result<Vec<bool>>; fn hash_keccak384(input: &[bool]) -> Result<Vec<bool>>; fn hash_keccak512(input: &[bool]) -> Result<Vec<bool>>; fn hash_ped64(input: &[bool]) -> Result<Field<Self>>; fn hash_ped128(input: &[bool]) -> Result<Field<Self>>; fn hash_psd2(input: &[Field<Self>]) -> Result<Field<Self>>; fn hash_psd4(input: &[Field<Self>]) -> Result<Field<Self>>; fn hash_psd8(input: &[Field<Self>]) -> Result<Field<Self>>; fn hash_sha3_256(input: &[bool]) -> Result<Vec<bool>>; fn hash_sha3_384(input: &[bool]) -> Result<Vec<bool>>; fn hash_sha3_512(input: &[bool]) -> Result<Vec<bool>>; 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>>; fn hash_to_group_bhp512(input: &[bool]) -> Result<Group<Self>>; fn hash_to_group_bhp768(input: &[bool]) -> Result<Group<Self>>; fn hash_to_group_bhp1024(input: &[bool]) -> Result<Group<Self>>; fn hash_to_group_ped64(input: &[bool]) -> Result<Group<Self>>; fn hash_to_group_ped128(input: &[bool]) -> Result<Group<Self>>; fn hash_to_group_psd2(input: &[Field<Self>]) -> Result<Group<Self>>; fn hash_to_group_psd4(input: &[Field<Self>]) -> Result<Group<Self>>; fn hash_to_group_psd8(input: &[Field<Self>]) -> Result<Group<Self>>; fn hash_to_scalar_psd2(input: &[Field<Self>]) -> Result<Scalar<Self>>; fn hash_to_scalar_psd4(input: &[Field<Self>]) -> Result<Scalar<Self>>; fn hash_to_scalar_psd8(input: &[Field<Self>]) -> Result<Scalar<Self>>; fn merkle_tree_bhp<const DEPTH: u8>( leaves: &[Vec<bool>] ) -> Result<BHPMerkleTree<Self, DEPTH>>; fn merkle_tree_psd<const DEPTH: u8>( leaves: &[Vec<Field<Self>>] ) -> Result<PoseidonMerkleTree<Self, DEPTH>>; 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 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 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 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 as Environment>::PairingCurve, VarunaHidingMode>>>

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 as Environment>::PairingCurve>>>

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

source

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

Returns the proving key for the inclusion circuit.

source

fn inclusion_verifying_key( ) -> &'static Arc<CircuitVerifyingKey<<Self as Environment>::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 FiatShamirParameters<Self>

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>>

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>>

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>>

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>>

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>>

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>>

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>>

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>>

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>>

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>>

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>>

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>>

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

source

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

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

source

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

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

source

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

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

source

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

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

source

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

Returns the Keccak hash with a 256-bit output.

source

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

Returns the Keccak hash with a 384-bit output.

source

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

Returns the Keccak hash with a 512-bit output.

source

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

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

source

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

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

source

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

Returns the Poseidon hash with an input rate of 2.

source

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

Returns the Poseidon hash with an input rate of 4.

source

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

Returns the Poseidon hash with an input rate of 8.

source

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

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

source

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

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

source

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

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>>

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

source

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

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

source

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

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

source

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

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

source

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

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

source

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

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

source

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

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>>

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>>

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>>

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>>

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>>

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<BHPMerkleTree<Self, DEPTH>>

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<PoseidonMerkleTree<Self, DEPTH>>

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.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl Network for Testnet3

§

type BlockHash = AleoID<Field<Testnet3>, { hrp2!("ab") }>

§

type RatificationID = AleoID<Field<Testnet3>, { hrp2!("ar") }>

§

type StateRoot = AleoID<Field<Testnet3>, { hrp2!("sr") }>

§

type TransactionID = AleoID<Field<Testnet3>, { hrp2!(TRANSACTION_PREFIX) }>

§

type TransitionID = AleoID<Field<Testnet3>, { hrp2!("au") }>

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"