Expand description

Verifies bytecode sanity.

Re-exports

pub use check_duplication::DuplicationChecker;
pub use code_unit_verifier::CodeUnitVerifier;
pub use instruction_consistency::InstructionConsistency;
pub use script_signature::legacy_script_signature_checks;
pub use script_signature::no_additional_script_signature_checks;
pub use script_signature::FnCheckScriptSignature;
pub use signature::SignatureChecker;
pub use struct_defs::RecursiveStructDefChecker;
pub use verifier::verify_module;
pub use verifier::verify_script;

Modules

This module implements a checker for verifying that all of the struct’s fields satisfy the abilities required by the struct’s abilities

This module implements a checker for verifying that each vector in a CompiledModule contains distinct values. Successful verification implies that an index in vector can be used to uniquely name the entry at that index. Additionally, the checker also verifies the following:

This module implements the checker for verifying correctness of function bodies. The overall verification is split between stack_usage_verifier.rs and abstract_interpreter.rs. CodeUnitVerifier simply orchestrates calls into these two files.

This module implements a checker for verifying that

This module implements a checker for verifies control flow. The following properties are ensured:

This module contains verification of usage of dependencies for modules

This module contains verification of usage of dependencies for modules and scripts.

This module contains verification of usage of dependencies for modules

This implements an algorithm that detects loops during the instantiation of generics.

This module defines the transfer functions for verifying consistency of each bytecode instruction, in particular, for the bytecode instructions that come in both generic and non-generic flavors.

This module implements a checker for verifying that a script, public(script), or other entry point function a valid signature, which entails

This module implements a checker for verifying signature tokens used in types of function parameters, locals, and fields of structs are well-formed. References can only occur at the top-level in all tokens. Additionally, references cannot occur at all in field types.

This module provides a checker for verifying that struct definitions in a module are not recursive. Since the module dependency graph is acylic by construction, applying this checker to each module in isolation guarantees that there is no structural recursion globally.

This module contains the public APIs supported by the bytecode verifier.