pub enum BlackBoxOp {
Show 17 variants
AES128Encrypt {
inputs: HeapVector,
iv: HeapArray,
key: HeapArray,
outputs: HeapVector,
},
Blake2s {
message: HeapVector,
output: HeapArray,
},
Blake3 {
message: HeapVector,
output: HeapArray,
},
Keccakf1600 {
input: HeapArray,
output: HeapArray,
},
EcdsaSecp256k1 {
hashed_msg: HeapVector,
public_key_x: HeapArray,
public_key_y: HeapArray,
signature: HeapArray,
result: MemoryAddress,
},
EcdsaSecp256r1 {
hashed_msg: HeapVector,
public_key_x: HeapArray,
public_key_y: HeapArray,
signature: HeapArray,
result: MemoryAddress,
},
MultiScalarMul {
points: HeapVector,
scalars: HeapVector,
outputs: HeapArray,
},
EmbeddedCurveAdd {
input1_x: MemoryAddress,
input1_y: MemoryAddress,
input1_infinite: MemoryAddress,
input2_x: MemoryAddress,
input2_y: MemoryAddress,
input2_infinite: MemoryAddress,
result: HeapArray,
},
BigIntAdd {
lhs: MemoryAddress,
rhs: MemoryAddress,
output: MemoryAddress,
},
BigIntSub {
lhs: MemoryAddress,
rhs: MemoryAddress,
output: MemoryAddress,
},
BigIntMul {
lhs: MemoryAddress,
rhs: MemoryAddress,
output: MemoryAddress,
},
BigIntDiv {
lhs: MemoryAddress,
rhs: MemoryAddress,
output: MemoryAddress,
},
BigIntFromLeBytes {
inputs: HeapVector,
modulus: HeapVector,
output: MemoryAddress,
},
BigIntToLeBytes {
input: MemoryAddress,
output: HeapVector,
},
Poseidon2Permutation {
message: HeapVector,
output: HeapArray,
len: MemoryAddress,
},
Sha256Compression {
input: HeapArray,
hash_values: HeapArray,
output: HeapArray,
},
ToRadix {
input: MemoryAddress,
radix: MemoryAddress,
output_pointer: MemoryAddress,
num_limbs: MemoryAddress,
output_bits: MemoryAddress,
},
}
Expand description
These opcodes provide an equivalent of ACIR blackbox functions. They are implemented as native functions in the VM.
Variants§
AES128Encrypt
Encrypts a message using AES128.
Blake2s
Calculates the Blake2s hash of the inputs.
Blake3
Calculates the Blake3 hash of the inputs.
Keccakf1600
Keccak Permutation function of 1600 width
EcdsaSecp256k1
Verifies a ECDSA signature over the secp256k1 curve.
EcdsaSecp256r1
Verifies a ECDSA signature over the secp256r1 curve.
MultiScalarMul
Performs multi scalar multiplication over the embedded curve.
EmbeddedCurveAdd
Performs addition over the embedded curve.
Fields
input1_x: MemoryAddress
input1_y: MemoryAddress
input1_infinite: MemoryAddress
input2_x: MemoryAddress
input2_y: MemoryAddress
input2_infinite: MemoryAddress
BigIntAdd
BigInt addition
BigIntSub
BigInt subtraction
BigIntMul
BigInt multiplication
BigIntDiv
BigInt division
BigIntFromLeBytes
BigInt from le bytes
BigIntToLeBytes
BigInt to le bytes
Poseidon2Permutation
Applies the Poseidon2 permutation function to the given state, outputting the permuted state.
Sha256Compression
Applies the SHA-256 compression function to the input message
ToRadix
Returns a decomposition in num_limbs
limbs of the given input over the given radix.
- The value stored in
radix
must be in the range [2, 256] num_limbs
must be at least one if the value stored ininput
is not zero.- The value stored in
output_bits
must have abit_size
of one. That value specifies whether we should decompose into bits. The value stored in theradix
address must be two if the value stored inoutput_bits
is equal to one.
Native to the Brillig VM and not supported as an ACIR black box function.
Fields
input: MemoryAddress
radix: MemoryAddress
output_pointer: MemoryAddress
num_limbs: MemoryAddress
output_bits: MemoryAddress
Trait Implementations§
Source§impl Clone for BlackBoxOp
impl Clone for BlackBoxOp
Source§fn clone(&self) -> BlackBoxOp
fn clone(&self) -> BlackBoxOp
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for BlackBoxOp
impl Debug for BlackBoxOp
Source§impl<'de> Deserialize<'de> for BlackBoxOp
impl<'de> Deserialize<'de> for BlackBoxOp
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Hash for BlackBoxOp
impl Hash for BlackBoxOp
Source§impl PartialEq for BlackBoxOp
impl PartialEq for BlackBoxOp
Source§impl Serialize for BlackBoxOp
impl Serialize for BlackBoxOp
impl Copy for BlackBoxOp
impl Eq for BlackBoxOp
impl StructuralPartialEq for BlackBoxOp
Auto Trait Implementations§
impl Freeze for BlackBoxOp
impl RefUnwindSafe for BlackBoxOp
impl Send for BlackBoxOp
impl Sync for BlackBoxOp
impl Unpin for BlackBoxOp
impl UnwindSafe for BlackBoxOp
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
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>
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>
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