Understand how to best use system contracts on Abstract.
Name | Description |
---|---|
EfficientCall.sol | Perform ultra-efficient calls using zkEVM-specific features. |
RLPEncoder.sol | Recursive-length prefix (RLP) encoding functionality. |
SystemContractHelper.sol | Library used for accessing zkEVM-specific opcodes, needed for the development of system contracts. |
SystemContractsCaller.sol | Allows calling contracts with the isSystem flag. It is needed to call ContractDeployer and NonceHolder. |
TransactionHelper.sol | Used to help custom smart contract accounts to work with common methods for the Transaction type. |
UnsafeBytesCalldata.sol | Provides a set of functions that help read data from calldata bytes. |
Utils.sol | Common utilities used in Abstract system contracts. |
isSystem
flag that indicates whether the transaction
intends to use a system contract’s functionality. Specifically, this flag needs to be true
when interacting with the ContractDeployer
or the NonceHolder system contracts.
To make a call with this flag, use the SystemContractsCaller
library, which exposes functions like systemCall
, systemCallWithPropagatedRevert
, and systemCallWithReturndata
.
Example transaction using the isSystem flag
isSystem
flag for your smart contract development environment.
enableEraVMExtensions: true
within the settings
object of the zksolc
object in the hardhat.config.js
file.
View Hardhat configuration
is_system = true
flag to the foundry.toml
configuration file.
View Foundry configuration