Expand description
§ethers-solc
Utilities for working with native solc and compiling projects.
Warning
This crate is deprecated in favor of
foundry-compilers(foundry-rs/compilers). See #2667 for more information.
To also compile contracts during cargo build (so that ethers abigen! can pull in updated abi automatically) you can configure a ethers_solc::Project in your build.rs file
First add ethers-solc to your cargo build-dependencies.
Once you compiled the project, you can configure cargo change detection with rerun_if_sources_changed, so that cargo will execute the build.rs file if a contract in the sources directory has changed
[build-dependencies]
ethers-solc = { git = "https://github.com/gakonst/ethers-rs" }use ethers_solc::{Project, ProjectPathsConfig};
fn main() {
    // configure the project with all its paths, solc, cache etc.
    let project = Project::builder()
        .paths(ProjectPathsConfig::hardhat(env!("CARGO_MANIFEST_DIR")).unwrap())
        .build()
        .unwrap();
    let output = project.compile().unwrap();
    // Tell Cargo that if a source file changes, to rerun this build script.
    project.rerun_if_sources_changed();
}Re-exports§
pub use artifacts::CompilerInput;pub use artifacts::CompilerOutput;pub use artifacts::EvmVersion;pub use hh::HardhatArtifact;pub use hh::HardhatArtifacts;pub use resolver::Graph;
Modules§
- artifacts
 - Solc artifact types
 - buildinfo
 - Represents an entire build
 - cache
 - Support for compiling contracts
 - contracts
 - error
 - hh
 - Hardhat support
 - info
 - Commonly used identifiers for contracts in the compiled output
 - many
 - output
 - The output of a compiled project
 - project
 - Manages compiling of a 
Project - project_
util project-util - Utilities for creating, mocking and testing of (temporary) projects Utilities for mocking project workspaces
 - remappings
 - report
 - Subscribe to events in the compiler pipeline
 - resolver
 - Resolution of the entire dependency graph for a project.
 - sourcemap
 - sources
 - utils
 - Utility functions
 
Structs§
- Aggregated
Compiler Output  - The aggregated output of (multiple) compile jobs
 - Allowed
LibPaths  - Helper struct for serializing 
--allow-pathsarguments to Solc - Artifact
File  - Represents an artifact file representing a 
crate::Contract - Artifact
Id  - Represents unique artifact metadata for identifying artifacts on output
 - Artifacts
 - Represents a set of Artifacts
 - Configurable
Artifacts  - An 
Artifactimplementation that can be configured to include additional content and emit additional files - Configurable
Contract Artifact  - Represents the 
ArtifactthatConfigurableArtifactsemits. - Extra
Output Files  - Determines what to emit as additional file
 - Extra
Output Values  - Determines the additional values to include in the contract’s artifact file
 - Minimal
Combined Artifacts  - An 
Artifactimplementation that uses a compact representation - Minimal
Combined Artifacts Hardhat Fallback  - An Artifacts handler implementation that works the same as 
MinimalCombinedArtifactsbut also supports reading hardhat artifacts if an initial attempt to deserialize an artifact failed - Output
Context  - Additional context to use during 
ArtifactOutput::on_output() - Project
 - Represents a project workspace and handles 
solccompiling of all contracts in that workspace. - Project
Builder  - Project
Compile Output  - Contains a mixture of already compiled/cached artifacts and the input set of sources that still need to be compiled.
 - Project
Paths  - This is a subset of ProjectPathsConfig that contains all relevant folders in the project
 - Project
Paths Config  - Where to find all files or where to write them
 - Solc
 - Abstraction over 
solccommand line utility - Solc
Config  - The config to use when compiling the contracts
 - Test
File Filter  - An FileFilter that matches all solidity files that end with 
.t.sol 
Enums§
- Path
Style  - Solc
Version  - A 
Solcversion is either installed (available locally) or can be downloaded, from the remote endpoint 
Constants§
- BERLIN_
SOLC  - Berlin support https://blog.soliditylang.org/2021/06/10/solidity-0.8.5-release-announcement/
 - BYZANTIUM_
SOLC  - Support for configuring the EVM version https://blog.soliditylang.org/2018/03/08/solidity-0.4.21-release-announcement/
 - CONSTANTINOPLE_
SOLC  - Bug fix for configuring the EVM version with Constantinople https://blog.soliditylang.org/2018/03/08/solidity-0.4.21-release-announcement/
 - ISTANBUL_
SOLC  - Istanbul support https://blog.soliditylang.org/2019/12/09/solidity-0.5.14-release-announcement/
 - LONDON_
SOLC  - London support https://blog.soliditylang.org/2021/08/11/solidity-0.8.7-release-announcement/
 - PARIS_
SOLC  - Paris support https://blog.soliditylang.org/2023/02/01/solidity-0.8.18-release-announcement/
 - PETERSBURG_
SOLC  - Petersburg support https://blog.soliditylang.org/2019/03/05/solidity-0.5.5-release-announcement/
 - SHANGHAI_
SOLC  - Shanghai support https://blog.soliditylang.org/2023/05/10/solidity-0.8.20-release-announcement/
 - SOLC
 - The name of the 
solcbinary on the system 
Statics§
- RELEASES
svm-solcand non-WebAssembly - A list of upstream Solc releases, used to check which version we should download. The boolean value marks whether there was an error accessing the release list
 - SUPPORTS_
BASE_ PATH  - SUPPORTS_
INCLUDE_ PATH  
Traits§
- Artifact
 - A trait representation for a 
crate::Contractartifact - Artifact
Output  - Handler invoked with the output of 
solc - File
Filter  - A predicate property that determines whether a file satisfies a certain condition