Module ethers_solc::artifacts

source ·
Expand description

Solc artifact types

Re-exports

pub use serde_helpers::deserialize_bytes;
pub use serde_helpers::deserialize_opt_bytes;
pub use ast::*;
pub use bytecode::*;
pub use contract::*;

Modules

Bindings for solc’s ast output field
Bytecode related types
Contract related types
bindings for standard json output selection
serde helpers

Structs

Input type solc expects
Output type solc produces
Debugging settings for solc
A wrapper type for all libraries in the form of <file>:<lib>:<addr>
A helper type that ensures lossless (de)serialisation unlike [ethers_core::abi::Abi] which omits some information of (nested) components in a serde roundtrip. This is a problem for abienconderv2 structs because [ethers_core::abi::Contract]’s representation of those are [ethers_core::abi::Param] and the kind field of type [ethers_core::abi::ParamType] does not support deeply nested components as it’s the case for structs. This is not easily fixable in ethabi as it would require a redesign of the overall Param and ParamType types. Instead, this type keeps a copy of the serde_json::Value when deserialized from the solc json compiler output and uses it to serialize the abi without loss.
A helper type that ensures lossless (de)serialisation so we can preserve the exact String metadata value that’s being hashed by solc
Compiler settings
Compilation source files/source units, keys are file names
Model checker settings for solc
Byte offsets into the bytecode. Linking replaces the 20 bytes located there.
A wrapper helper type for the Contracts type alias
A wrapper type for a list of source files path -> SourceFile
A CompilerInput representation used for verify
Represents the storage-layout section of the CompilerOutput if selected.

Enums

Determines the hash method for the metadata hash that is appended to the bytecode.
Which model checker engine to run.
Which model checker targets to check.
How to treat revert (and require) reason strings.

Type Definitions

file -> (contract name -> Contract)
Solidity files are made up of multiple source units, a solidity contract is such a source unit, therefore a solidity file can contain multiple contracts: (1-N*) relationship.
An ordered list of files and their source