Crate ethers_solc
source ·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§
- Solc artifact types
- Represents an entire build
- Support for compiling contracts
- Hardhat support
- Commonly used identifiers for contracts in the compiled output
- The output of a compiled project
- Manages compiling of a
Project
- project_util
project-util
Utilities for creating, mocking and testing of (temporary) projects Utilities for mocking project workspaces - Subscribe to events in the compiler pipeline
- Resolution of the entire dependency graph for a project.
- Utility functions
Structs§
- The aggregated output of (multiple) compile jobs
- Helper struct for serializing
--allow-paths
arguments to Solc - Represents an artifact file representing a
crate::Contract
- Represents unique artifact metadata for identifying artifacts on output
- Represents a set of Artifacts
- An
Artifact
implementation that can be configured to include additional content and emit additional files - Represents the
Artifact
thatConfigurableArtifacts
emits. - Determines what to emit as additional file
- Determines the additional values to include in the contract’s artifact file
- An
Artifact
implementation that uses a compact representation - An Artifacts handler implementation that works the same as
MinimalCombinedArtifacts
but also supports reading hardhat artifacts if an initial attempt to deserialize an artifact failed - Additional context to use during
ArtifactOutput::on_output()
- Represents a project workspace and handles
solc
compiling of all contracts in that workspace. - Contains a mixture of already compiled/cached artifacts and the input set of sources that still need to be compiled.
- This is a subset of ProjectPathsConfig that contains all relevant folders in the project
- Where to find all files or where to write them
- Abstraction over
solc
command line utility - The config to use when compiling the contracts
- An FileFilter that matches all solidity files that end with
.t.sol
Enums§
- A
Solc
version is either installed (available locally) or can be downloaded, from the remote endpoint
Constants§
- Support for configuring the EVM version https://blog.soliditylang.org/2018/03/08/solidity-0.4.21-release-announcement/
- Bug fix for configuring the EVM version with Constantinople https://blog.soliditylang.org/2018/03/08/solidity-0.4.21-release-announcement/
- The name of the
solc
binary on the system
Statics§
- RELEASES
svm-solc
and non-WebAssemblyA 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
Traits§
- A trait representation for a
crate::Contract
artifact - Handler invoked with the output of
solc
- A predicate property that determines whether a file satisfies a certain condition