# Ethers v0.7.0 - Table of Contents

> A comprehensive Web3 library for interacting with smart contracts on Ethereum using Elixir.

## Pages

- [Introduction](readme.md)
- [Changelog](changelog.md)
- [Typed Arguments](typed-arguments.md)
- [EIP-712 Typed Data](eip-712.md)
- [Sign-In with Ethereum](siwe.md)
- [Configuration](configuration.md)
- [Upgrading](upgrading.md)

## Modules

- [Ethers](Ethers.md): high-level module providing a convenient and efficient interface for interacting
with the Ethereum blockchain using Elixir.
- [Ethers.CcipRead](Ethers.CcipRead.md): CCIP Read ([EIP-3668](https://eips.ethereum.org/EIPS/eip-3668)) implementation
- [Ethers.CombinedEventFilter](Ethers.CombinedEventFilter.md): A filter matching any of multiple events (OR semantics) in a single `eth_getLogs` request.
- [Ethers.Contract](Ethers.Contract.md): Dynamically creates modules for ABIs at compile time.
- [Ethers.Event](Ethers.Event.md): EVM Event struct and helpers

- [Ethers.EventFilter](Ethers.EventFilter.md): Event Filter struct and helper functions to work with the event filters

- [Ethers.Multicall](Ethers.Multicall.md): This module offers convenient utilities and a user-friendly API for interacting with
`Multicall3` (for more information, visit https://www.multicall3.com).
- [Ethers.NameService](Ethers.NameService.md): Name Service resolution implementation for ENS (Ethereum Name Service).
Supports both forward and reverse resolution plus reverse lookups.
- [Ethers.PersonalMessage](Ethers.PersonalMessage.md): [EIP-191](https://eips.ethereum.org/EIPS/eip-191) personal message utilities
(the `personal_sign` scheme, version byte `0x45`).
- [Ethers.Signature](Ethers.Signature.md): Universal signature verification: EOA (`ecrecover`), smart-contract wallets
([ERC-1271](https://eips.ethereum.org/EIPS/eip-1271)) and counterfactual —
not-yet-deployed — wallets ([ERC-6492](https://eips.ethereum.org/EIPS/eip-6492)).
- [Ethers.TxData](Ethers.TxData.md): Transaction struct to hold information about the ABI selector, encoded data
and the target `to` address.

- [Ethers.Types](Ethers.Types.md): EVM types and compound type definitions
- [Ethers.Utils](Ethers.Utils.md): Utilities for interacting with ethereum blockchain

- Transactions
  - [Ethers.Transaction](Ethers.Transaction.md): Transaction struct and helper functions for handling EVM transactions.
  - [Ethers.Transaction.Eip1559](Ethers.Transaction.Eip1559.md): Transaction struct and protocol implementation for Ethereum Improvement Proposal (EIP) 1559
transactions. EIP-1559 introduced a new fee market mechanism with base fee and priority fee.
  - [Ethers.Transaction.Eip2930](Ethers.Transaction.Eip2930.md): Transaction struct and protocol implementation for Ethereum Improvement Proposal (EIP) 2930
transactions. EIP-2930 introduced a new transaction type that includes an access list,
allowing transactions to pre-specify and pre-pay for account and storage access to mitigate
gas cost changes from EIP-2929 and prevent contract breakage. The access list format also
enables future use cases like block-wide witnesses and static state access patterns.
  - [Ethers.Transaction.Eip4844](Ethers.Transaction.Eip4844.md): Transaction struct and protocol implementation for Ethereum Improvement Proposal (EIP) 4844
transactions. EIP-4844 introduced "blob-carrying transactions" which contain a large amount
of data that cannot be accessed by EVM execution, but whose commitment can be accessed.
  - [Ethers.Transaction.Legacy](Ethers.Transaction.Legacy.md): Legacy transaction struct and implementation of Transaction.Protocol.

  - [Ethers.Transaction.Metadata](Ethers.Transaction.Metadata.md): Metadata for a transaction like block hash, block number, and transaction index.

  - [Ethers.Transaction.Protocol](Ethers.Transaction.Protocol.md): Protocol for handling Ethereum Virtual Machine (EVM) transactions.

  - [Ethers.Transaction.Signed](Ethers.Transaction.Signed.md): A struct that wraps a transaction and its signature values.

- Builtin Contracts
  - [Ethers.Contracts.CcipRead](Ethers.Contracts.CcipRead.md): CCIP Read ([EIP-3668](https://eips.ethereum.org/EIPS/eip-3668)) contract

  - [Ethers.Contracts.ENS](Ethers.Contracts.ENS.md): Ethereum Name Service (ENS) Contract

  - [Ethers.Contracts.ENS.ExtendedResolver](Ethers.Contracts.ENS.ExtendedResolver.md): Extended ENS resolver as per [ENSIP-10](https://docs.ens.domains/ensip/10)

  - [Ethers.Contracts.ENS.Resolver](Ethers.Contracts.ENS.Resolver.md): Ethereum Name Service (ENS) Resolver Contract

  - [Ethers.Contracts.ERC1155](Ethers.Contracts.ERC1155.md): ERC1155 token interface
  - [Ethers.Contracts.ERC165](Ethers.Contracts.ERC165.md): ERC-165 Standard Interface Detection
  - [Ethers.Contracts.ERC20](Ethers.Contracts.ERC20.md): ERC20 token interface
  - [Ethers.Contracts.ERC721](Ethers.Contracts.ERC721.md): ERC721 token interface
  - [Ethers.Contracts.ERC777](Ethers.Contracts.ERC777.md): ERC777 token interface
  - [Ethers.Contracts.Multicall3](Ethers.Contracts.Multicall3.md): Multicall3 token interface
  - [Ethers.Contracts.UniversalSigValidator](Ethers.Contracts.UniversalSigValidator.md): [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492) universal signature validator
(the `ValidateSigOffchain` helper contract).

- Builtin EventFilters
  - [Ethers.Contracts.CcipRead.EventFilters](Ethers.Contracts.CcipRead.EventFilters.md): Events for `Ethers.Contracts.CcipRead`
  - [Ethers.Contracts.ENS.EventFilters](Ethers.Contracts.ENS.EventFilters.md): Events for `Ethers.Contracts.ENS`
  - [Ethers.Contracts.ENS.ExtendedResolver.EventFilters](Ethers.Contracts.ENS.ExtendedResolver.EventFilters.md): Events for `Ethers.Contracts.ENS.ExtendedResolver`
  - [Ethers.Contracts.ENS.Resolver.EventFilters](Ethers.Contracts.ENS.Resolver.EventFilters.md): Events for `Ethers.Contracts.ENS.Resolver`
  - [Ethers.Contracts.ERC1155.EventFilters](Ethers.Contracts.ERC1155.EventFilters.md): Events for `Ethers.Contracts.ERC1155`
  - [Ethers.Contracts.ERC165.EventFilters](Ethers.Contracts.ERC165.EventFilters.md): Events for `Ethers.Contracts.ERC165`
  - [Ethers.Contracts.ERC20.EventFilters](Ethers.Contracts.ERC20.EventFilters.md): Events for `Ethers.Contracts.ERC20`
  - [Ethers.Contracts.ERC721.EventFilters](Ethers.Contracts.ERC721.EventFilters.md): Events for `Ethers.Contracts.ERC721`
  - [Ethers.Contracts.ERC777.EventFilters](Ethers.Contracts.ERC777.EventFilters.md): Events for `Ethers.Contracts.ERC777`
  - [Ethers.Contracts.Multicall3.EventFilters](Ethers.Contracts.Multicall3.EventFilters.md): Events for `Ethers.Contracts.Multicall3`

- Signer
  - [Ethers.Signer](Ethers.Signer.md): Signer behaviour.
  - [Ethers.Signer.JsonRPC](Ethers.Signer.JsonRPC.md): Signer capable of signing transactions with a JSON RPC server
capable of `eth_signTransaction`, `eth_signTypedData_v4`, `personal_sign` and `eth_accounts`
RPC functions.
  - [Ethers.Signer.Local](Ethers.Signer.Local.md): Local signer works with a private key.

- Sign-In with Ethereum
  - [Ethers.Siwe](Ethers.Siwe.md): Sign-In with Ethereum ([EIP-4361](https://eips.ethereum.org/EIPS/eip-4361)) messages.
  - [Ethers.Siwe.Message](Ethers.Siwe.Message.md): A Sign-In with Ethereum ([EIP-4361](https://eips.ethereum.org/EIPS/eip-4361)) message.

- Typed Data
  - [Ethers.TypedData](Ethers.TypedData.md): Models an [EIP-712](https://eips.ethereum.org/EIPS/eip-712) typed structured data payload.
  - [Ethers.TypedData.Domain](Ethers.TypedData.Domain.md): The EIP-712 domain separator data (`EIP712Domain`).
  - [Ethers.TypedData.Field](Ethers.TypedData.Field.md): A single member of an EIP-712 struct type.
  - [Ethers.TypedData.Schema](Ethers.TypedData.Schema.md): Compile-time DSL for declaring [EIP-712](https://eips.ethereum.org/EIPS/eip-712) typed-data
struct types as native Elixir modules.

- Builtin Contract Errors
  - [Ethers.Contracts.CcipRead.Errors.OffchainLookup](Ethers.Contracts.CcipRead.Errors.OffchainLookup.md): Error struct for `error OffchainLookup`
  - [Ethers.Contracts.ERC1155.Errors.ERC1155InsufficientBalance](Ethers.Contracts.ERC1155.Errors.ERC1155InsufficientBalance.md): Error struct for `error ERC1155InsufficientBalance`
  - [Ethers.Contracts.ERC1155.Errors.ERC1155InvalidApprover](Ethers.Contracts.ERC1155.Errors.ERC1155InvalidApprover.md): Error struct for `error ERC1155InvalidApprover`
  - [Ethers.Contracts.ERC1155.Errors.ERC1155InvalidArrayLength](Ethers.Contracts.ERC1155.Errors.ERC1155InvalidArrayLength.md): Error struct for `error ERC1155InvalidArrayLength`
  - [Ethers.Contracts.ERC1155.Errors.ERC1155InvalidOperator](Ethers.Contracts.ERC1155.Errors.ERC1155InvalidOperator.md): Error struct for `error ERC1155InvalidOperator`
  - [Ethers.Contracts.ERC1155.Errors.ERC1155InvalidReceiver](Ethers.Contracts.ERC1155.Errors.ERC1155InvalidReceiver.md): Error struct for `error ERC1155InvalidReceiver`
  - [Ethers.Contracts.ERC1155.Errors.ERC1155InvalidSender](Ethers.Contracts.ERC1155.Errors.ERC1155InvalidSender.md): Error struct for `error ERC1155InvalidSender`
  - [Ethers.Contracts.ERC1155.Errors.ERC1155MissingApprovalForAll](Ethers.Contracts.ERC1155.Errors.ERC1155MissingApprovalForAll.md): Error struct for `error ERC1155MissingApprovalForAll`
  - [Ethers.Contracts.ERC165.Errors.NotERC165CompatibleError](Ethers.Contracts.ERC165.Errors.NotERC165CompatibleError.md)
  - [Ethers.Contracts.ERC20.Errors.ERC20InsufficientAllowance](Ethers.Contracts.ERC20.Errors.ERC20InsufficientAllowance.md): Error struct for `error ERC20InsufficientAllowance`
  - [Ethers.Contracts.ERC20.Errors.ERC20InsufficientBalance](Ethers.Contracts.ERC20.Errors.ERC20InsufficientBalance.md): Error struct for `error ERC20InsufficientBalance`
  - [Ethers.Contracts.ERC20.Errors.ERC20InvalidApprover](Ethers.Contracts.ERC20.Errors.ERC20InvalidApprover.md): Error struct for `error ERC20InvalidApprover`
  - [Ethers.Contracts.ERC20.Errors.ERC20InvalidReceiver](Ethers.Contracts.ERC20.Errors.ERC20InvalidReceiver.md): Error struct for `error ERC20InvalidReceiver`
  - [Ethers.Contracts.ERC20.Errors.ERC20InvalidSender](Ethers.Contracts.ERC20.Errors.ERC20InvalidSender.md): Error struct for `error ERC20InvalidSender`
  - [Ethers.Contracts.ERC20.Errors.ERC20InvalidSpender](Ethers.Contracts.ERC20.Errors.ERC20InvalidSpender.md): Error struct for `error ERC20InvalidSpender`
  - [Ethers.Contracts.ERC721.Errors.ERC721IncorrectOwner](Ethers.Contracts.ERC721.Errors.ERC721IncorrectOwner.md): Error struct for `error ERC721IncorrectOwner`
  - [Ethers.Contracts.ERC721.Errors.ERC721InsufficientApproval](Ethers.Contracts.ERC721.Errors.ERC721InsufficientApproval.md): Error struct for `error ERC721InsufficientApproval`
  - [Ethers.Contracts.ERC721.Errors.ERC721InvalidApprover](Ethers.Contracts.ERC721.Errors.ERC721InvalidApprover.md): Error struct for `error ERC721InvalidApprover`
  - [Ethers.Contracts.ERC721.Errors.ERC721InvalidOperator](Ethers.Contracts.ERC721.Errors.ERC721InvalidOperator.md): Error struct for `error ERC721InvalidOperator`
  - [Ethers.Contracts.ERC721.Errors.ERC721InvalidOwner](Ethers.Contracts.ERC721.Errors.ERC721InvalidOwner.md): Error struct for `error ERC721InvalidOwner`
  - [Ethers.Contracts.ERC721.Errors.ERC721InvalidReceiver](Ethers.Contracts.ERC721.Errors.ERC721InvalidReceiver.md): Error struct for `error ERC721InvalidReceiver`
  - [Ethers.Contracts.ERC721.Errors.ERC721InvalidSender](Ethers.Contracts.ERC721.Errors.ERC721InvalidSender.md): Error struct for `error ERC721InvalidSender`
  - [Ethers.Contracts.ERC721.Errors.ERC721NonexistentToken](Ethers.Contracts.ERC721.Errors.ERC721NonexistentToken.md): Error struct for `error ERC721NonexistentToken`

- Exceptions
  - [Ethers.ExecutionError](Ethers.ExecutionError.md): Execution Error Exception.

