[−][src]Struct solana_libra_bytecode_verifier::verifier::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]
script: CompiledScript
) -> Result<Self, (CompiledScript, Vec<VMStatus>)>
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]
fn clone(&self) -> VerifiedScript
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for VerifiedScript
[src]
impl Display for VerifiedScript
[src]
impl Eq for VerifiedScript
[src]
impl PartialEq<VerifiedScript> for VerifiedScript
[src]
fn eq(&self, other: &VerifiedScript) -> bool
[src]
fn ne(&self, other: &VerifiedScript) -> bool
[src]
impl ScriptAccess for VerifiedScript
[src]
fn as_script(&self) -> &CompiledScript
[src]
fn module_handle_at(&self, idx: ModuleHandleIndex) -> &ModuleHandle
[src]
fn struct_handle_at(&self, idx: StructHandleIndex) -> &StructHandle
[src]
fn function_handle_at(&self, idx: FunctionHandleIndex) -> &FunctionHandle
[src]
fn type_signature_at(&self, idx: TypeSignatureIndex) -> &TypeSignature
[src]
fn function_signature_at(
&self,
idx: FunctionSignatureIndex
) -> &FunctionSignature
[src]
&self,
idx: FunctionSignatureIndex
) -> &FunctionSignature
fn locals_signature_at(&self, idx: LocalsSignatureIndex) -> &LocalsSignature
[src]
fn identifier_at(&self, idx: IdentifierIndex) -> &IdentStr
[src]
fn byte_array_at(&self, idx: ByteArrayPoolIndex) -> &ByteArray
[src]
fn address_at(&self, idx: AddressPoolIndex) -> &AccountAddress
[src]
fn module_handles(&self) -> &[ModuleHandle]
[src]
fn struct_handles(&self) -> &[StructHandle]
[src]
fn function_handles(&self) -> &[FunctionHandle]
[src]
fn type_signatures(&self) -> &[TypeSignature]
[src]
fn function_signatures(&self) -> &[FunctionSignature]
[src]
fn locals_signatures(&self) -> &[LocalsSignature]
[src]
fn byte_array_pool(&self) -> &[ByteArray]
[src]
fn address_pool(&self) -> &[AccountAddress]
[src]
fn identifiers(&self) -> &[Identifier]
[src]
fn main(&self) -> &FunctionDefinition
[src]
impl StructuralEq for VerifiedScript
[src]
impl StructuralPartialEq for VerifiedScript
[src]
Auto Trait Implementations
impl RefUnwindSafe for VerifiedScript
impl Send for VerifiedScript
impl Sync for VerifiedScript
impl Unpin for VerifiedScript
impl UnwindSafe for VerifiedScript
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
[src]
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
fn equivalent(&self, key: &K) -> bool
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> SendSyncUnwindSafe for T where
T: Send + Sync + UnwindSafe + ?Sized,
T: Send + Sync + UnwindSafe + ?Sized,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,