API Reference
Creating a Loader
Before contracts can be loaded, a loader object must be configured.
function setupLoader({ provider, defaultSender, defaultGas, defaultGasPrice }: {
provider: any;
defaultSender: string?;
defaultGas: number?;
defaultGasPrice: number?;
artifactsDir?: string;
});
provider
The web3 provider to use when connecting to the blockchain.
This can be either a plan provider object, or a web3 instance connected to one.
defaultSender
The address to send transactions from when no explicit from
field is provided. Optional, no default value.
defaultGas
How much gas to allocate for transactions when no explicit gas
field is provided. Optional, defaults to 200 thousand.
defaultGasPrice
The gas price for transactions when no explicit gasPrice
field is provided. Optional, defaults to 1 gigawei.
artifactsDir
Available since v0.6.1
The directory from where local built (.json
) artifacts are loaded, relative to the project’s root directory. Artifacts from dependencies (such as '@openzeppelin/contracts/ERC20') are always loaded from the dependency’s directory.
Optional, defaults to build/contracts
.
Using the Loader
setupLoader
returns an object with a key for each contract type (web3
or truffle
).
Despite these contract abstractions being different, each specialized loader exposes the same Loader
interface:
interface Loader {
fromArtifact(name: string, address?: string): any;
fromABI(abi: object, bytecode?: string, address?: string): any;
};
function setupLoader(options) : {
web3: Loader;
truffle: Loader;
};
fromArtifact
function fromArtifact(name: string, address?: string): any;
Loads a contract abstraction object from artifacts built by the compiler. If address
is provided, it instead returns a contract instance initialized at the provided address.
Receives the contract’s name
and looks for its corresponding .json
artifact file in the build/contracts
directory.
Contracts from dependencies can be loaded by prefixing the contract name with the dependency:
|
fromABI
function fromABI(abi: object, bytecode?: string, address?: string): any;
Loads a contract abstraction object from the provided ABI. If address
is provided, it instead returns a contract instance initialized at the provided address.
To deploy new contract instances, bytecode
must be provided.
The .json artifact files are quite large: use fromABI to minimize how much data your application needs to bundle, or when you only need to interact with existing contracts, but not deploy new ones yourself.
|
Installing Extra Dependencies
Contract Loader needs to know how to create web3 and Truffle contracts, but it doesn’t force a specific version of either on you.
Instead, it is up to the caller to make sure the required dependencies are available. To load web3 contracts, you may need to install web3-eth-contract
, while you may require @truffle/contract
for Truffle contracts.
When using web3 contracts, you can pass a web3 instance as provider to setupLoader , and it will use that same instance to create new contracts.
|