ChainAwareness

Git Source

Inherits: PathFinder

State Variables

activeChain

Name of the active chain, should match the name of the directory in deployments

string public activeChain

chainIdsLoaded

Whether chainIds and chainNames have been loaded

bool private chainIdsLoaded

chainIds

Map from chain name to chainId

mapping(string => uint256) public chainIds

chainNames

Map from chainId to chain name

mapping(uint256 => string) public chainNames

Functions

getFreshDeploymentFN

Returns the path to the FRESH contract deployment JSON for a contract on the active chain. Example: ".deployments/mainnet/SynapseRouter.json"

function getFreshDeploymentFN(string memory contractName) internal view returns (string memory);

getDeploymentFN

Returns the path to the contract deployment JSON for a contract on the active chain. Example: "deployments/mainnet/SynapseRouter.json"

function getDeploymentFN(string memory contractName) internal view returns (string memory);

getChainGenericFN

Returns the path to the generic file on the active chain.

Useful for the files that are not specific to a contract, but are specific to a chain.

function getChainGenericFN(string memory fileName) internal view returns (string memory);

getDeployConfigFN

Returns the path to the contract deployment configuration JSON for a contract on the active chain. Example: "script/configs/mainnet/SynapseRouter.json"

function getDeployConfigFN(string memory contractName) internal view returns (string memory);

getChainId

Returns the chain ID for a given chain by reading the chain ID file in the deployments directory.

Returns 0 or reverts if the chain ID is not found based on the flag.

function getChainId(string memory chain, bool revertIfNotFound) internal returns (uint256);

loadActiveChain

Sets active chain to the one matching block.chainid value. Reverts if the chain is not supported.

function loadActiveChain() internal;

loadChainIds

Reads all chain:chainId pairs from the deployments directory, and saves them in chainIds and chainNames mappings.

Will do this lazily, only once per the script run.

function loadChainIds() internal;

blockChainId

Wrapper for block.chainid, which only exists in Solidity 0.8+

function blockChainId() internal view returns (uint256 chainId);