viem-goviem-go

serializeErc6492Signature

Serializes an ERC-6492 flavored signature into hex format

serializeErc6492Signature

Serializes an ERC-6492 flavored signature into hex format. Used for counterfactual contract account verification.

Import

import "github.com/ChefBingbong/viem-go/utils/signature"

Usage

import "github.com/ChefBingbong/viem-go/utils/signature"
hex, err := signature.SerializeErc6492Signature(signature.SerializeErc6492SignatureParams{
Address: "0xCAFEBABECAFEBABECAFEBABECAFEBABECAFEBABE",
Data: "0xdeadbeef",
Signature: "0xa461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("ERC-6492 Signature: %s
", hex)
// Serialize to bytes
sigBytes, _ := signature.SerializeErc6492SignatureBytes(signature.SerializeErc6492SignatureParams{
Address: "0xCAFEBABECAFEBABECAFEBABECAFEBABECAFEBABE",
Data: "0xdeadbeef",
Signature: "0xa461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b",
})
// []byte{...}

Returns

  • Type: (string, error) for SerializeErc6492Signature, ([]byte, error) for SerializeErc6492SignatureBytes

The serialized ERC-6492 signature. SerializeErc6492Signature returns a hex string with 0x prefix, SerializeErc6492SignatureBytes returns raw bytes.

Parameters

params (required)

  • Type: signature.SerializeErc6492SignatureParams

Parameters for serializing the ERC-6492 signature.

hex, _ := signature.SerializeErc6492Signature(signature.SerializeErc6492SignatureParams{
Address: "0xCAFEBABECAFEBABECAFEBABECAFEBABECAFEBABE",
Data: "0xdeadbeef",
Signature: "0xa461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b",
})

params.Address (required)

  • Type: string

The ERC-4337 Account Factory address to use for counterfactual verification.

params := signature.SerializeErc6492SignatureParams{
Address: "0xCAFEBABECAFEBABECAFEBABECAFEBABECAFEBABE",
// ...
}

params.Data (required)

  • Type: string

The calldata to pass to deploy account (if not deployed).

params := signature.SerializeErc6492SignatureParams{
Data: "0xdeadbeef",
// ...
}

params.Signature (required)

  • Type: string

The original signature.

params := signature.SerializeErc6492SignatureParams{
Signature: "0xa461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b",
// ...
}

Functions

SerializeErc6492Signature

Serializes an ERC-6492 signature to a hex string:

hex, _ := signature.SerializeErc6492Signature(params)

SerializeErc6492SignatureBytes

Serializes an ERC-6492 signature to bytes:

sigBytes, _ := signature.SerializeErc6492SignatureBytes(params)

Signature Format

The ERC-6492 signature format is:

abi.encode(factoryAddress, factoryData, originalSignature) + magicBytes

Where magicBytes is 0x6492649264926492649264926492649264926492649264926492649264926492.

Notes

  • ERC-6492 signatures enable counterfactual contract account verification
  • Allows verification of signatures from accounts that haven't been deployed yet
  • The signature wraps the original signature with factory address and deployment data