ProgramCore

Struct ProgramCore 

Source
pub struct ProgramCore<N: Network> { /* private fields */ }

Implementations§

Source§

impl<N: Network> ProgramCore<N>

Source

pub fn to_checksum(&self) -> [U8<N>; 32]

Returns the checksum of the program.

The checksum is a 32-byte hash of the program’s source code in string format. This ensures a strict definition of program equivalence, useful for program upgradability.

Source§

impl<N: Network> ProgramCore<N>

Source

pub const KEYWORDS: &'static [&'static str]

A list of reserved keywords for Aleo programs, enforced at the parser level.

Source

pub const RESTRICTED_KEYWORDS: &'static [(ConsensusVersion, &'static [&'static str])]

A list of restricted keywords for Aleo programs, enforced at the VM-level for program hygiene. Each entry is a tuple of the consensus version and a list of keywords. If the current consensus version is greater than or equal to the specified version, the keywords in the list should be restricted.

Source

pub fn new(id: ProgramID<N>) -> Result<Self>

Initializes an empty program.

Source

pub fn credits() -> Result<Self>

Initializes the credits program.

Source

pub const fn id(&self) -> &ProgramID<N>

Returns the ID of the program.

Source

pub const fn imports(&self) -> &IndexMap<ProgramID<N>, Import<N>>

Returns the imports in the program.

Source

pub const fn constructor(&self) -> Option<&ConstructorCore<N>>

Returns the constructor for the program.

Source

pub const fn mappings(&self) -> &IndexMap<Identifier<N>, Mapping<N>>

Returns the mappings in the program.

Source

pub const fn structs(&self) -> &IndexMap<Identifier<N>, StructType<N>>

Returns the structs in the program.

Source

pub const fn records(&self) -> &IndexMap<Identifier<N>, RecordType<N>>

Returns the records in the program.

Source

pub const fn closures(&self) -> &IndexMap<Identifier<N>, ClosureCore<N>>

Returns the closures in the program.

Source

pub const fn functions(&self) -> &IndexMap<Identifier<N>, FunctionCore<N>>

Returns the functions in the program.

Source

pub fn contains_import(&self, id: &ProgramID<N>) -> bool

Returns true if the program contains an import with the given program ID.

Source

pub const fn contains_constructor(&self) -> bool

Returns true if the program contains a constructor.

Source

pub fn contains_mapping(&self, name: &Identifier<N>) -> bool

Returns true if the program contains a mapping with the given name.

Source

pub fn contains_struct(&self, name: &Identifier<N>) -> bool

Returns true if the program contains a struct with the given name.

Source

pub fn contains_record(&self, name: &Identifier<N>) -> bool

Returns true if the program contains a record with the given name.

Source

pub fn contains_closure(&self, name: &Identifier<N>) -> bool

Returns true if the program contains a closure with the given name.

Source

pub fn contains_function(&self, name: &Identifier<N>) -> bool

Returns true if the program contains a function with the given name.

Source

pub fn get_mapping(&self, name: &Identifier<N>) -> Result<Mapping<N>>

Returns the mapping with the given name.

Source

pub fn get_struct(&self, name: &Identifier<N>) -> Result<&StructType<N>>

Returns the struct with the given name.

Source

pub fn get_record(&self, name: &Identifier<N>) -> Result<&RecordType<N>>

Returns the record with the given name.

Source

pub fn get_closure(&self, name: &Identifier<N>) -> Result<ClosureCore<N>>

Returns the closure with the given name.

Source

pub fn get_function(&self, name: &Identifier<N>) -> Result<FunctionCore<N>>

Returns the function with the given name.

Source

pub fn get_function_ref(&self, name: &Identifier<N>) -> Result<&FunctionCore<N>>

Returns a reference to the function with the given name.

Source

pub fn is_reserved_opcode(name: &str) -> bool

Returns true if the given name is a reserved opcode.

Source

pub fn is_reserved_keyword(name: &Identifier<N>) -> bool

Returns true if the given name uses a reserved keyword.

Source

pub fn restricted_keywords_for_consensus_version( consensus_version: ConsensusVersion, ) -> impl Iterator<Item = &'static str>

Returns an iterator over the restricted keywords for the given consensus version.

Source

pub fn check_restricted_keywords_for_consensus_version( &self, consensus_version: ConsensusVersion, ) -> Result<()>

Checks a program for restricted keywords for the given consensus version. Returns an error if any restricted keywords are found. Note: Restrictions are not enforced on the import names in case they were deployed before the restrictions were added.

Source

pub fn check_program_naming_structure(&self) -> Result<()>

Checks that the program structure is well-formed under the following rules:

  1. The program ID must not contain the keyword “aleo” in the program name.
  2. The record name must not contain the keyword “aleo”.
  3. Record names must not be prefixes of other record names.
  4. Record entry names must not contain the keyword “aleo”.
Source

pub fn check_external_calls_to_credits_upgrade(&self) -> Result<()>

Checks that the program does not make external calls to credits.aleo/upgrade.

Source

pub fn contains_v9_syntax(&self) -> bool

Returns true if a program contains any V9 syntax. This includes constructor, Operand::Edition, Operand::Checksum, and Operand::ProgramOwner. This is enforced to be false for programs before ConsensusVersion::V9.

Source

pub fn exceeds_max_array_size(&self, max_array_size: u32) -> bool

Returns true if the program contains an array type with a size that exceeds the given maximum.

Source

pub fn contains_v11_syntax(&self) -> bool

Returns true if a program contains any V11 syntax. This includes:

  1. .raw hash or signature verification variants
  2. ecdsa.verify.* opcodes
  3. arrays that exceed the previous maximum length of 32.

Trait Implementations§

Source§

impl<N: Clone + Network> Clone for ProgramCore<N>

Source§

fn clone(&self) -> ProgramCore<N>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<N: Network> Debug for ProgramCore<N>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Prints the program as a string.

Source§

impl<'de, N: Network> Deserialize<'de> for ProgramCore<N>

Source§

fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>

Deserializes the program from a string or bytes.

Source§

impl<N: Network> Display for ProgramCore<N>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Prints the program as a string.

Source§

impl<N: Network> FromBytes for ProgramCore<N>

Source§

fn read_le<R: Read>(reader: R) -> IoResult<Self>

Reads Self from reader as little-endian bytes.
Source§

fn from_bytes_le(bytes: &[u8]) -> Result<Self, Error>
where Self: Sized,

Returns Self from a byte array in little-endian order.
Source§

fn from_bytes_le_unchecked(bytes: &[u8]) -> Result<Self, Error>
where Self: Sized,

Same behavior as Self::from_bytes_le but avoids costly checks. This shall only be called when deserializing from a trusted source, such as local storage. Read more
Source§

fn read_le_unchecked<R>(reader: R) -> Result<Self, Error>
where R: Read, Self: Sized,

Same behavior as Self::read_le but avoids costly checks. This shall only be called when deserializing from a trusted source, such as local storage. Read more
Source§

fn read_le_with_unchecked<R>(reader: R, unchecked: bool) -> Result<Self, Error>
where R: Read, Self: Sized,

Helper function that deserializes either unchecked or checked based on the given boolean flag.
Source§

impl<N: Network> FromStr for ProgramCore<N>

Source§

fn from_str(string: &str) -> Result<Self>

Returns a program from a string literal.

Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

impl<N: Network> Parser for ProgramCore<N>

Source§

fn parse(string: &str) -> ParserResult<'_, Self>

Parses a string into a program.

Source§

impl<N: Network> PartialEq for ProgramCore<N>

Source§

fn eq(&self, other: &Self) -> bool

Compares two programs for equality, verifying that the components are in the same order. The order of the components must match to ensure that deployment tree is well-formed.

1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<N: Network> Serialize for ProgramCore<N>

Source§

fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serializes the program into string or bytes.

Source§

impl<N: Network> ToBytes for ProgramCore<N>

Source§

fn write_le<W: Write>(&self, writer: W) -> IoResult<()>

Writes self into writer as little-endian bytes.
Source§

fn to_bytes_le(&self) -> Result<Vec<u8>, Error>
where Self: Sized,

Returns self as a byte array in little-endian order.
Source§

impl<N: Network> TypeName for ProgramCore<N>

Source§

fn type_name() -> &'static str

Returns the type name as a string.

Source§

impl<N: Network> Eq for ProgramCore<N>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<'de, T> DeserializeExt<'de> for T

Source§

fn take_from_value<D>( value: &mut Value, field: &str, ) -> Result<T, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToSmolStr for T
where T: Display + ?Sized,

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,