Types Package


Represents an enumeration of account abstraction versions.

type AccountAbstractionVersion uint8

const (
    None AccountAbstractionVersion = iota


Represents an enumeration of account nonce ordering formats.

type AccountNonceOrdering uint8

const (
    Sequential AccountNonceOrdering = iota


Contains approval-based paymaster input. It should be used if the user is required to set a certain allowance to a token for the paymaster to operate.

type ApprovalBasedPaymasterInput struct {
    Token common.Address // ERC20 token used to pay transaction fee.
    // Minimal allowance of Token towards the paymaster from the account that pays the fee with the token.
    MinimalAllowance *big.Int
    InnerInput       []byte // Additional payload that can be sent to the paymaster to implement any logic.


Contains batch information.

type BatchDetails struct {
    BaseSystemContractsHashes struct {
        Bootloader common.Hash `json:"bootloader"`
        DefaultAa  common.Hash `json:"default_aa"`
    } `json:"baseSystemContractsHashes"`
    CommitTxHash   common.Hash `json:"commitTxHash"`
    CommittedAt    time.Time   `json:"committedAt"`
    ExecuteTxHash  common.Hash `json:"executeTxHash"`
    ExecutedAt     time.Time   `json:"executedAt"`
    L1GasPrice     uint64      `json:"l1GasPrice"`
    L1TxCount      uint        `json:"l1TxCount"`
    L2FairGasPrice uint        `json:"l2FairGasPrice"`
    L2TxCount      uint        `json:"l2TxCount"`
    Number         uint        `json:"number"`
    ProveTxHash    common.Hash `json:"proveTxHash"`
    ProvenAt       time.Time   `json:"provenAt"`
    RootHash       common.Hash `json:"rootHash"`
    Status         string      `json:"status"`
    Timestamp      uint        `json:"timestamp"`


Extends the types.Block definition with additional L1BatchNumber, L1BatchTimestamp fields.

type Block struct {
    Header           *types.Header
    Uncles           []*types.Header
    Transactions     []*TransactionResponse
    Withdrawals      types.Withdrawals
    Hash             common.Hash
    Size             *big.Int
    TotalDifficulty  *big.Int
    SealFields       []interface{}
    ReceivedAt       time.Time
    ReceivedFrom     interface{}
    L1BatchNumber    *big.Int
    L1BatchTimestamp *big.Int


Contains block information.

type BlockDetails struct {
    CommitTxHash  common.Hash `json:"commitTxHash"`
    CommittedAt   time.Time   `json:"committedAt"`
    ExecuteTxHash common.Hash `json:"executeTxHash"`
    ExecutedAt    time.Time   `json:"executedAt"`
    L1TxCount     uint        `json:"l1TxCount"`
    L2TxCount     uint        `json:"l2TxCount"`
    Number        uint        `json:"number"`
    ProveTxHash   common.Hash `json:"proveTxHash"`
    ProvenAt      time.Time   `json:"provenAt"`
    RootHash      common.Hash `json:"rootHash"`
    Status        string      `json:"status"`
    Timestamp     uint        `json:"timestamp"`


Represents the addresses of default bridge contracts for both L1 and L2.

type BridgeContracts struct {
    L1Erc20DefaultBridge common.Address `json:"l1Erc20DefaultBridge"`  // Default L1Bridge contract address.
    L2Erc20DefaultBridge common.Address `json:"l2Erc20DefaultBridge"`  // Default L2Bridge contract address.
    L1WethBridge         common.Address `json:"l1WethBridge"`          // WETH L1Bridge contract address.
    L2WethBridge         common.Address `json:"l2WethBridge"`          // WETH L2Bridge contract address.
    L1SharedBridge       common.Address `json:"l1SharedDefaultBridge"` // Default L1SharedBridge contract address.
    L2SharedBridge       common.Address `json:"l2SharedDefaultBridge"` // Default L2SharedBridge contract address.


Contains parameters for contract call using EIP-712 transaction. Extends ethereum.CallMsg with additional Eip712Meta field.

type CallMsg struct {
    Meta *Eip712Meta // EIP-712 metadata.


Contains EIP-712 transaction metadata.

type Eip712Meta struct {
    // GasPerPubdata denotes the maximum amount of gas the user is willing
    // to pay for a single byte of pubdata.
    GasPerPubdata *hexutil.Big `json:"gasPerPubdata,omitempty"`
    // CustomSignature is used for the cases in which the signer's account
    // is not an EOA.
    CustomSignature hexutil.Bytes `json:"customSignature,omitempty"`
    // FactoryDeps is a non-empty array of bytes. For deployment transactions,
    // it should contain the bytecode of the contract being deployed.
    // If the contract is a factory contract, i.e. it can deploy other contracts,
    // the array should also contain the bytecodes of the contracts which it can deploy.
    FactoryDeps []hexutil.Bytes `json:"factoryDeps"`
    // PaymasterParams contains parameters for configuring the custom paymaster
    // for the transaction.
    PaymasterParams *PaymasterParams `json:"paymasterParams,omitempty"`


Represents the transaction fee parameters.

type Fee struct {
    GasLimit *hexutil.Big `json:"gas_limit"` // Maximum amount of gas allowed for the transaction.
    // Maximum amount of gas the user is willing to pay for a single byte of pubdata.
    GasPerPubdataLimit   *hexutil.Big `json:"gas_per_pubdata_limit"`
    MaxFeePerGas         *hexutil.Big `json:"max_fee_per_gas"`          // EIP-1559 fee cap per gas.
    MaxPriorityFeePerGas *hexutil.Big `json:"max_priority_fee_per_gas"` // EIP-1559 tip per gas.


Contains general paymaster input. It should be used if no prior actions are required from the user for the paymaster to operate.

type GeneralPaymasterInput []byte


Represents the L1 bridge contracts.

type L1BridgeContracts struct {
    Erc20  *l1bridge.IL1Bridge             // Default L1Bridge contract.
    Shared *l1sharedbridge.IL1SharedBridge // L1SharedBridge contract.


Represents the L2 bridge contracts.

type L2BridgeContracts struct {
    Erc20  *l2bridge.IL2Bridge // Default L2Bridge contract.
    Shared *l2bridge.IL2Bridge // Shared L2Bridge contract.


Represents a layer 2 to layer 1 transaction log.

type L2ToL1Log struct {
    BlockNumber      *hexutil.Big   `json:"blockNumber"`
    BlockHash        common.Hash    `json:"blockHash"`
    L1BatchNumber    *hexutil.Big   `json:"l1BatchNumber"`
    TransactionIndex *hexutil.Uint  `json:"transactionIndex"`
    ShardId          *hexutil.Uint  `json:"shardId"`
    IsService        bool           `json:"isService"`
    Sender           common.Address `json:"sender"`
    Key              string         `json:"key"`
    Value            string         `json:"value"`
    TxHash           common.Hash    `json:"transactionHash"`
    Index            *hexutil.Uint  `json:"logIndex"`


Extends the types.Log definition with additional L1BatchNumber field.

// Log represents a log entry.
type Log struct {
    L1BatchNumber *hexutil.Big `json:"l1BatchNumber"`


Represents a message proof.

type MessageProof struct {
    Id    int           `json:"id"`
    Proof []common.Hash `json:"proof"`
    Root  common.Hash   `json:"root"`


Represents a raw block transaction.

type RawBlockTransaction struct {
    CommonData struct {
        L1 struct {
            CanonicalTxHash    common.Hash    `json:"canonicalTxHash"`
            DeadlineBlock      *big.Int       `json:"deadlineBlock"`
            EthBlock           *big.Int       `json:"ethBlock"`
            EthHash            common.Hash    `json:"ethHash"`
            FullFee            hexutil.Big    `json:"fullFee"`
            GasLimit           hexutil.Big    `json:"gasLimit"`
            GasPerPubdataLimit hexutil.Big    `json:"gasPerPubdataLimit"`
            Layer2TipFee       hexutil.Big    `json:"layer2TipFee"`
            MaxFeePerGas       hexutil.Big    `json:"maxFeePerGas"`
            OpProcessingType   string         `json:"opProcessingType"`
            PriorityQueueType  string         `json:"priorityQueueType"`
            RefundRecipient    common.Address `json:"refundRecipient"`
            Sender             common.Address `json:"sender"`
            SerialId           *big.Int       `json:"serialId"`
            ToMint             string         `json:"toMint"`
        } `json:"L1"`
    } `json:"common_data"`
    Execute struct {
        Calldata        hexutil.Bytes   `json:"calldata"`
        ContractAddress common.Address  `json:"contractAddress"`
        FactoryDeps     []hexutil.Bytes `json:"factoryDeps"`
        Value           hexutil.Big     `json:"value"`
    } `json:"execute"`
    ReceivedTimestampMs uint64 `json:"received_timestamp_ms"`


Extends the types.Receipt definition with additional From, To, EffectiveGasPrice, L1BatchNumber, L1BatchTxIndex, Logs, L2ToL1Logs fields.

type Receipt struct {

    From              common.Address `json:"from"`
    To                common.Address `json:"to"`
    EffectiveGasPrice *hexutil.Big   `json:"effectiveGasPrice"`
    L1BatchNumber     *hexutil.Big   `json:"l1BatchNumber"`
    L1BatchTxIndex    *hexutil.Big   `json:"l1BatchTxIndex"`
    Logs              []*Log         `json:"logs"`
    L2ToL1Logs        []*L2ToL1Log   `json:"l2ToL1Logs"`


Represents the standard-json configuration generated as output of zksolc compiler.

type StandardConfiguration struct {
    Format       string `json:"_format"`
    ContractName string `json:"contractName"`
    SourceName   string `json:"sourceName"`
    Abi          []struct {
        Inputs []struct {
            InternalType string `json:"internalType"`
            Name         string `json:"name"`
            Type         string `json:"type"`
            Indexed      bool   `json:"indexed,omitempty"`
        } `json:"inputs"`
        StateMutability string `json:"stateMutability,omitempty"`
        Type            string `json:"type"`
        Anonymous       bool   `json:"anonymous,omitempty"`
        Name            string `json:"name,omitempty"`
        Outputs         []struct {
            InternalType string `json:"internalType"`
            Name         string `json:"name"`
            Type         string `json:"type"`
        } `json:"outputs,omitempty"`
    } `json:"abi"`
    Bytecode         string `json:"bytecode"`
    DeployedBytecode string `json:"deployedBytecode"`
    LinkReferences   struct {
    } `json:"linkReferences"`
    DeployedLinkReferences struct {
    } `json:"deployedLinkReferences"`
    FactoryDeps struct {
    } `json:"factoryDeps"`


Merkle proofs for one or more storage values at the specified account

type StorageProof struct {
    Address string `json:"address"`
    Proofs  []struct {
        Key   string   `json:"key"`
        Proof []string `json:"proof"`
        Value string   `json:"value"`
        Index int      `json:"index"`
    } `json:"storageProof"`


Contains parameters for configuring the custom paymaster for the transaction.

type PaymasterParams struct {
    Paymaster      common.Address `json:"paymaster"`      // address of the paymaster
    PaymasterInput []byte         `json:"paymasterInput"` // encoded input


Represents a token with addresses on both L1 and L2 chains.

type Token struct {
    L1Address common.Address `json:"l1Address"` // Token address on L1.
    L2Address common.Address `json:"l2Address"` // Token address on L2.
    Name      string         `json:"name"`      // Token name.
    Symbol    string         `json:"symbol"`    // Token symbol.
    Decimals  uint           `json:"decimals"`  // Number of decimals for the token.


Represents an EIP-712 transaction type.

const EIP712TxType = `0x71`


Represents an EIP-712 compliant transaction. It shares similarities with regular transactions but also includes ZKsync Era-specific features such as account abstraction and paymasters. Smart contracts must be deployed with support for the EIP-712 transaction type.

type Transaction712 struct {
    Nonce      *big.Int         // Nonce to use for the transaction execution.
    GasTipCap  *big.Int         // EIP-1559 tip per gas.
    GasFeeCap  *big.Int         // EIP-1559 fee cap per gas.
    Gas        *big.Int         // Gas limit to set for the transaction execution.
    To         *common.Address  // The address of the recipient.
    Value      *big.Int         // Funds to transfer along the transaction (nil = 0 = no funds).
    Data       hexutil.Bytes    // Input data, usually an ABI-encoded contract method invocation.
    AccessList types.AccessList // EIP-2930 access list.

    ChainID *big.Int        // Chain ID of the network.
    From    *common.Address // The address of the sender.
    Meta    *Eip712Meta     // EIP-712 metadata.


Contains transaction details.

type TransactionDetails struct {
    EthCommitTxHash  common.Hash    `json:"ethCommitTxHash"`
    EthExecuteTxHash common.Hash    `json:"ethExecuteTxHash"`
    EthProveTxHash   common.Hash    `json:"ethProveTxHash"`
    Fee              hexutil.Big    `json:"fee"`
    InitiatorAddress common.Address `json:"initiatorAddress"`
    IsL1Originated   bool           `json:"isL1Originated"`
    ReceivedAt       time.Time      `json:"receivedAt"`
    Status           string         `json:"status"`


Includes all properties of a transaction as well as several properties that are useful once it has been mined.

type TransactionResponse struct {
    BlockHash            *common.Hash   `json:"blockHash"`
    BlockNumber          *hexutil.Big   `json:"blockNumber"`
    ChainID              hexutil.Big    `json:"chainId"`
    From                 common.Address `json:"from"`
    Gas                  hexutil.Uint64 `json:"gas"`
    GasPrice             hexutil.Big    `json:"gasPrice"`
    Hash                 common.Hash    `json:"hash"`
    Data                 hexutil.Bytes  `json:"input"`
    L1BatchNumber        hexutil.Big    `json:"l1BatchNumber"`
    L1BatchTxIndex       hexutil.Big    `json:"l1BatchTxIndex"`
    MaxFeePerGas         hexutil.Big    `json:"maxFeePerGas"`
    MaxPriorityFeePerGas hexutil.Big    `json:"maxPriorityFeePerGas"`
    Nonce                hexutil.Uint64 `json:"nonce"`
    V                    *hexutil.Big   `json:"v"`
    R                    *hexutil.Big   `json:"r"`
    S                    *hexutil.Big   `json:"s"`
    To                   common.Address `json:"to"`
    TransactionIndex     hexutil.Uint   `json:"transactionIndex"`
    Type                 hexutil.Uint64 `json:"type"`
    Value                hexutil.Big    `json:"value"`

Made with ❤️ by the ZKsync Community