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 bytessigBytes, _ := signature.SerializeErc6492SignatureBytes(signature.SerializeErc6492SignatureParams{ Address: "0xCAFEBABECAFEBABECAFEBABECAFEBABECAFEBABE", Data: "0xdeadbeef", Signature: "0xa461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b",})// []byte{...}Returns
- Type:
(string, error)forSerializeErc6492Signature,([]byte, error)forSerializeErc6492SignatureBytes
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