[][src]Struct solana_libra_bytecode_verifier::verifier::VerifiedScript

pub struct VerifiedScript(_);

A script that has been verified for internal consistency.

This does not include cross-module checking -- that needs to be done separately.

Methods

impl VerifiedScript[src]

pub fn new(
    script: CompiledScript
) -> Result<Self, (CompiledScript, Vec<VMStatus>)>
[src]

Verifies this CompiledScript, returning a VerifiedScript on success.

On failure, returns the original CompiledScript and a list of verification errors.

Verification of a script is done in two steps:

  • Convert the script into a module and run all the usual verification performed on a module
  • Check the signature of the main function of the script

This approach works because critical operations such as MoveFrom, MoveToSender, and BorrowGlobal that are not allowed in the script function take a StructDefinitionIndex as an argument. Since the module constructed from a script is guaranteed to have an empty vector of struct definitions, the bounds checker will catch any occurrences of these illegal operations.

pub fn into_module(self) -> VerifiedModule[src]

Returns the corresponding VerifiedModule for this script.

Every VerifiedScript is a VerifiedModule, but the inverse is not true, so there's no corresponding VerifiedModule::into_script function.

pub fn serialize(&self, buf: &mut Vec<u8>) -> Result<(), Error>[src]

Serializes this script into the provided buffer.

This is merely a convenience wrapper around script.as_inner().serialize(buf).

VerifiedScript instances cannot be deserialized directly, since the input is potentially untrusted. Instead, one must go through CompiledScript.

pub fn deserialize(binary: &[u8]) -> BinaryLoaderResult<Self>[src]

Deserializes a &u8 slice into a VerifiedScript instance.

pub fn as_inner(&self) -> &CompiledScript[src]

Returns a reference to the CompiledScript within.

pub fn into_inner(self) -> CompiledScript[src]

Returns the CompiledScript within. Conversion back to VerifiedScript will require going through the verifier again.

Trait Implementations

impl Clone for VerifiedScript[src]

impl Debug for VerifiedScript[src]

impl Display for VerifiedScript[src]

impl Eq for VerifiedScript[src]

impl PartialEq<VerifiedScript> for VerifiedScript[src]

impl ScriptAccess for VerifiedScript[src]

impl StructuralEq for VerifiedScript[src]

impl StructuralPartialEq for VerifiedScript[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

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

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> SendSyncUnwindSafe for T where
    T: Send + Sync + UnwindSafe + ?Sized

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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