pub struct Stack<N>where
N: Network,{ /* private fields */ }
Implementations§
Source§impl<N> Stack<N>where
N: Network,
impl<N> Stack<N>where
N: Network,
Authorizes a call to the program function for the given inputs.
Source§impl<N> Stack<N>where
N: Network,
impl<N> Stack<N>where
N: Network,
Sourcepub fn deploy<A, R>(&self, rng: &mut R) -> Result<Deployment<N>, Error>
pub fn deploy<A, R>(&self, rng: &mut R) -> Result<Deployment<N>, Error>
Deploys the given program ID, if it does not exist.
Sourcepub fn verify_deployment<A, R>(
&self,
deployment: &Deployment<N>,
rng: &mut R,
) -> Result<(), Error>
pub fn verify_deployment<A, R>( &self, deployment: &Deployment<N>, rng: &mut R, ) -> Result<(), Error>
Checks each function in the program on the given verifying key and certificate.
Source§impl<N> Stack<N>where
N: Network,
impl<N> Stack<N>where
N: Network,
Sourcepub fn sample_plaintext<R>(
&self,
plaintext_type: &PlaintextType<N>,
rng: &mut R,
) -> Result<Plaintext<N>, Error>
pub fn sample_plaintext<R>( &self, plaintext_type: &PlaintextType<N>, rng: &mut R, ) -> Result<Plaintext<N>, Error>
Samples a plaintext value according to the given plaintext type.
Source§impl<N> Stack<N>where
N: Network,
impl<N> Stack<N>where
N: Network,
Sourcepub fn synthesize_key<A, R>(
&self,
function_name: &Identifier<N>,
rng: &mut R,
) -> Result<(), Error>
pub fn synthesize_key<A, R>( &self, function_name: &Identifier<N>, rng: &mut R, ) -> Result<(), Error>
Synthesizes the proving key and verifying key for the given function name.
Sourcepub fn synthesize_from_assignment(
&self,
function_name: &Identifier<N>,
assignment: &Assignment<<N as Environment>::Field>,
) -> Result<(), Error>
pub fn synthesize_from_assignment( &self, function_name: &Identifier<N>, assignment: &Assignment<<N as Environment>::Field>, ) -> Result<(), Error>
Synthesizes and stores the (proving_key, verifying_key)
for the given function name and assignment.
Source§impl<N> Stack<N>where
N: Network,
impl<N> Stack<N>where
N: Network,
Sourcepub fn new(
process: &Process<N>,
program: &ProgramCore<N, Instruction<N>, Command<N>>,
) -> Result<Stack<N>, Error>
pub fn new( process: &Process<N>, program: &ProgramCore<N, Instruction<N>, Command<N>>, ) -> Result<Stack<N>, Error>
Initializes a new stack, if it does not already exist, given the process and the program.
Source§impl<N> Stack<N>where
N: Network,
impl<N> Stack<N>where
N: Network,
Sourcepub fn contains_proving_key(&self, function_name: &Identifier<N>) -> bool
pub fn contains_proving_key(&self, function_name: &Identifier<N>) -> bool
Returns true
if the proving key for the given function name exists.
Sourcepub fn contains_verifying_key(&self, function_name: &Identifier<N>) -> bool
pub fn contains_verifying_key(&self, function_name: &Identifier<N>) -> bool
Returns true
if the verifying key for the given function name exists.
Sourcepub fn get_proving_key(
&self,
function_name: &Identifier<N>,
) -> Result<ProvingKey<N>, Error>
pub fn get_proving_key( &self, function_name: &Identifier<N>, ) -> Result<ProvingKey<N>, Error>
Returns the proving key for the given function name.
Sourcepub fn get_verifying_key(
&self,
function_name: &Identifier<N>,
) -> Result<VerifyingKey<N>, Error>
pub fn get_verifying_key( &self, function_name: &Identifier<N>, ) -> Result<VerifyingKey<N>, Error>
Returns the verifying key for the given function name.
Sourcepub fn insert_proving_key(
&self,
function_name: &Identifier<N>,
proving_key: ProvingKey<N>,
) -> Result<(), Error>
pub fn insert_proving_key( &self, function_name: &Identifier<N>, proving_key: ProvingKey<N>, ) -> Result<(), Error>
Inserts the given proving key for the given function name.
Sourcepub fn insert_verifying_key(
&self,
function_name: &Identifier<N>,
verifying_key: VerifyingKey<N>,
) -> Result<(), Error>
pub fn insert_verifying_key( &self, function_name: &Identifier<N>, verifying_key: VerifyingKey<N>, ) -> Result<(), Error>
Inserts the given verifying key for the given function name.
Sourcepub fn remove_proving_key(&self, function_name: &Identifier<N>)
pub fn remove_proving_key(&self, function_name: &Identifier<N>)
Removes the proving key for the given function name.
Sourcepub fn remove_verifying_key(&self, function_name: &Identifier<N>)
pub fn remove_verifying_key(&self, function_name: &Identifier<N>)
Removes the verifying key for the given function name.
Trait Implementations§
Source§impl<N> StackEvaluate<N> for Stack<N>where
N: Network,
impl<N> StackEvaluate<N> for Stack<N>where
N: Network,
Source§fn evaluate_closure<A>(
&self,
closure: &ClosureCore<N, Instruction<N>>,
inputs: &[Value<N>],
call_stack: CallStack<N>,
signer: Address<N>,
caller: Address<N>,
tvk: Field<N>,
) -> Result<Vec<Value<N>>, Error>where
A: Aleo<Network = N>,
fn evaluate_closure<A>(
&self,
closure: &ClosureCore<N, Instruction<N>>,
inputs: &[Value<N>],
call_stack: CallStack<N>,
signer: Address<N>,
caller: Address<N>,
tvk: Field<N>,
) -> Result<Vec<Value<N>>, Error>where
A: Aleo<Network = N>,
Evaluates a program closure on the given inputs.
§Errors
This method will halt if the given inputs are not the same length as the input statements.
Source§fn evaluate_function<A>(
&self,
call_stack: CallStack<N>,
caller: Option<ProgramID<N>>,
) -> Result<Response<N>, Error>where
A: Aleo<Network = N>,
fn evaluate_function<A>(
&self,
call_stack: CallStack<N>,
caller: Option<ProgramID<N>>,
) -> Result<Response<N>, Error>where
A: Aleo<Network = N>,
Evaluates a program function on the given inputs.
§Errors
This method will halt if the given inputs are not the same length as the input statements.
Source§impl<N> StackExecute<N> for Stack<N>where
N: Network,
impl<N> StackExecute<N> for Stack<N>where
N: Network,
Source§fn execute_closure<A>(
&self,
closure: &ClosureCore<N, Instruction<N>>,
inputs: &[Value<A>],
call_stack: CallStack<N>,
signer: Address<A>,
caller: Address<A>,
tvk: Field<A>,
) -> Result<Vec<Value<A>>, Error>where
A: Aleo<Network = N>,
fn execute_closure<A>(
&self,
closure: &ClosureCore<N, Instruction<N>>,
inputs: &[Value<A>],
call_stack: CallStack<N>,
signer: Address<A>,
caller: Address<A>,
tvk: Field<A>,
) -> Result<Vec<Value<A>>, Error>where
A: Aleo<Network = N>,
Executes a program closure on the given inputs.
§Errors
This method will halt if the given inputs are not the same length as the input statements.
Source§fn execute_function<A, R>(
&self,
call_stack: CallStack<N>,
console_caller: Option<ProgramID<N>>,
root_tvk: Option<Field<N>>,
rng: &mut R,
) -> Result<Response<N>, Error>
fn execute_function<A, R>( &self, call_stack: CallStack<N>, console_caller: Option<ProgramID<N>>, root_tvk: Option<Field<N>>, rng: &mut R, ) -> Result<Response<N>, Error>
Executes a program function on the given inputs.
Note: To execute a transition, do not call this method. Instead, call Process::execute
.
§Errors
This method will halt if the given inputs are not the same length as the input statements.
Source§impl<N> StackMatches<N> for Stack<N>where
N: Network,
impl<N> StackMatches<N> for Stack<N>where
N: Network,
Source§fn matches_value_type(
&self,
value: &Value<N>,
value_type: &ValueType<N>,
) -> Result<(), Error>
fn matches_value_type( &self, value: &Value<N>, value_type: &ValueType<N>, ) -> Result<(), Error>
Checks that the given value matches the layout of the value type.
Source§fn matches_register_type(
&self,
stack_value: &Value<N>,
register_type: &RegisterType<N>,
) -> Result<(), Error>
fn matches_register_type( &self, stack_value: &Value<N>, register_type: &RegisterType<N>, ) -> Result<(), Error>
Checks that the given stack value matches the layout of the register type.
Source§fn matches_external_record(
&self,
record: &Record<N, Plaintext<N>>,
locator: &Locator<N>,
) -> Result<(), Error>
fn matches_external_record( &self, record: &Record<N, Plaintext<N>>, locator: &Locator<N>, ) -> Result<(), Error>
Checks that the given record matches the layout of the external record type.
Source§fn matches_record(
&self,
record: &Record<N, Plaintext<N>>,
record_name: &Identifier<N>,
) -> Result<(), Error>
fn matches_record( &self, record: &Record<N, Plaintext<N>>, record_name: &Identifier<N>, ) -> Result<(), Error>
Checks that the given record matches the layout of the record type.
Source§fn matches_plaintext(
&self,
plaintext: &Plaintext<N>,
plaintext_type: &PlaintextType<N>,
) -> Result<(), Error>
fn matches_plaintext( &self, plaintext: &Plaintext<N>, plaintext_type: &PlaintextType<N>, ) -> Result<(), Error>
Checks that the given plaintext matches the layout of the plaintext type.
Source§impl<N> StackProgram<N> for Stack<N>where
N: Network,
impl<N> StackProgram<N> for Stack<N>where
N: Network,
Source§fn program(&self) -> &ProgramCore<N, Instruction<N>, Command<N>>
fn program(&self) -> &ProgramCore<N, Instruction<N>, Command<N>>
Returns the program.
Source§fn program_id(&self) -> &ProgramID<N>
fn program_id(&self) -> &ProgramID<N>
Returns the program ID.
Source§fn program_depth(&self) -> usize
fn program_depth(&self) -> usize
Returns the program depth.
Source§fn program_address(&self) -> &Address<N>
fn program_address(&self) -> &Address<N>
Returns the program address.
Source§fn contains_external_record(&self, locator: &Locator<N>) -> bool
fn contains_external_record(&self, locator: &Locator<N>) -> bool
Returns true
if the stack contains the external record.
Source§fn get_external_stack(
&self,
program_id: &ProgramID<N>,
) -> Result<&Arc<Stack<N>>, Error>
fn get_external_stack( &self, program_id: &ProgramID<N>, ) -> Result<&Arc<Stack<N>>, Error>
Returns the external stack for the given program ID.
Source§fn get_external_program(
&self,
program_id: &ProgramID<N>,
) -> Result<&ProgramCore<N, Instruction<N>, Command<N>>, Error>
fn get_external_program( &self, program_id: &ProgramID<N>, ) -> Result<&ProgramCore<N, Instruction<N>, Command<N>>, Error>
Returns the external program for the given program ID.
Source§fn get_external_record(
&self,
locator: &Locator<N>,
) -> Result<&RecordType<N>, Error>
fn get_external_record( &self, locator: &Locator<N>, ) -> Result<&RecordType<N>, Error>
Returns the external record if the stack contains the external record.
Source§fn get_finalize_cost(&self, function_name: &Identifier<N>) -> Result<u64, Error>
fn get_finalize_cost(&self, function_name: &Identifier<N>) -> Result<u64, Error>
Returns the expected finalize cost for the given function name.
Source§fn get_function(
&self,
function_name: &Identifier<N>,
) -> Result<FunctionCore<N, Instruction<N>, Command<N>>, Error>
fn get_function( &self, function_name: &Identifier<N>, ) -> Result<FunctionCore<N, Instruction<N>, Command<N>>, Error>
Returns the function with the given function name.
Source§fn get_function_ref(
&self,
function_name: &Identifier<N>,
) -> Result<&FunctionCore<N, Instruction<N>, Command<N>>, Error>
fn get_function_ref( &self, function_name: &Identifier<N>, ) -> Result<&FunctionCore<N, Instruction<N>, Command<N>>, Error>
Returns a reference to the function with the given function name.
Source§fn get_number_of_calls(
&self,
function_name: &Identifier<N>,
) -> Result<usize, Error>
fn get_number_of_calls( &self, function_name: &Identifier<N>, ) -> Result<usize, Error>
Returns the expected number of calls for the given function name.
Source§impl<N> StackProgramTypes<N> for Stack<N>where
N: Network,
impl<N> StackProgramTypes<N> for Stack<N>where
N: Network,
Source§fn get_register_types(
&self,
name: &Identifier<N>,
) -> Result<&RegisterTypes<N>, Error>
fn get_register_types( &self, name: &Identifier<N>, ) -> Result<&RegisterTypes<N>, Error>
Returns the register types for the given closure or function name.
Source§fn get_finalize_types(
&self,
name: &Identifier<N>,
) -> Result<&FinalizeTypes<N>, Error>
fn get_finalize_types( &self, name: &Identifier<N>, ) -> Result<&FinalizeTypes<N>, Error>
Returns the register types for the given finalize name.
impl<N> Eq for Stack<N>where
N: Network,
Auto Trait Implementations§
impl<N> Freeze for Stack<N>
impl<N> !RefUnwindSafe for Stack<N>
impl<N> Send for Stack<N>
impl<N> Sync for Stack<N>
impl<N> Unpin for Stack<N>where
<N as Environment>::Projective: Unpin,
<N as Environment>::Field: Unpin,
N: Unpin,
<N as Environment>::Scalar: Unpin,
impl<N> !UnwindSafe for Stack<N>
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,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
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