$npx skillfedfor your agent

eip712

eip712: Message classes for typed structured data hashing and signing in Ethereum

With conditionsPyPI CryptographyReleased Dec 2025113.9K downloads / moApache-2.0Pure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — eip712-0.3.3-py3-none-any.whl
v0.3.3 · released 2025-12-23 · Python <4,>=3.10 · 4 runtime deps: pydantic, eth-account, eth-pydantic-types, eth-utils

Yes, if you need to sign EIP-712 messages in Python. The library is production-stable, has low install friction, and integrates cleanly with eth-account. Maintenance is aging (last release 234 days ago), but the repo is active and there are no known vulnerabilities. It's a focused, well-scoped tool for a specific cryptographic task in the Ethereum ecosystem.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Requires Python 3.10 or later (up to 3.14); eth-account and eth-pydantic-types must be installed.
  • Low install friction; pure Python wheel with four runtime dependencies (pydantic, eth-account, eth-pydantic-types, eth-utils).
  • Maintenance is aging—last release 234 days ago—but the repo is active and not archived.

License · maintenance · safety

Apache-2.0 (permissive) — Apache-2.0 permissive license allows commercial and private use with minimal restrictions, making it suitable for most projects.

last release 2025-12-23 (234 days) · last repo commit 2025-12-23 · 46 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 113,885 downloads/mo, #12,323 on PyPI

Verify before relying

pip install eip712

from eip712.messages import EIP712Message
from eth_pydantic_types import abi
from eth_account import Account

class Mail(EIP712Message):
    eip712_domain = EIP712Domain(name="Ether Mail", version="1", chainId=1)
    sender: abi.address

mail = Mail(sender="0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa")
acct = Account.from_key(private_key)
sig = acct.sign_message(mail.signable_message)
  • Whether the library handles all EIP-712 domain configurations (chainId, verifyingContract, salt) beyond the examples shown.
  • Performance characteristics when signing large nested message structures or arrays.
  • Compatibility with hardware wallets or other signing backends beyond eth-account.
Same gist for agents: .md · .json

What it is and what it does

eip712 is a Python library that wraps EIP-712 message specification into Pydantic-based classes, letting you define strongly-typed Ethereum messages and sign them cryptographically. You define message structures by subclassing EIP712Message and EIP712Type, specify your domain configuration (name, version, contract address, chain ID), and then instantiate and sign messages using eth-account or Ape. The library handles the encoding and hashing required by the EIP-712 standard, so you work with plain Python objects rather than raw bytes.

It's built on pydantic for validation and eth-pydantic-types for ABI-compliant field types (address, uint256, string, etc.), making it natural to define domain-specific message schemas. The typical workflow is: define your message class, create instances with your data, and pass them to Account.sign_message() to get a signature. It's most useful in DeFi protocols, governance systems, or any Ethereum application that needs to sign structured data off-chain and verify it on-chain.

Use it for

  • Define and sign EIP-712 messages for DeFi permit() functions, governance votes, or off-chain orders that will be verified on-chain.
  • Build typed message schemas for multi-signature wallets or threshold signing schemes where structured data must be cryptographically committed.
  • Create domain-specific signing protocols in Ape scripts or Python automation that interact with Ethereum smart contracts.
  • Validate and sign complex nested message structures with arrays and custom types without manually encoding bytes.
  • Integrate EIP-712 signing into Python-based wallet or key management tools that need to sign Ethereum messages.

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

With conditions

Yes, if you need to sign EIP-712 messages in Python.

The library is production-stable, has low install friction, and integrates cleanly with eth-account. Maintenance is aging (last release 234 days ago), but the repo is active and there are no known vulnerabilities. It's a focused, well-scoped tool for a specific cryptographic task in the Ethereum ecosystem.

Install

eip712 on PyPI

Before you install

Low install friction; pure Python wheel with four runtime dependencies (pydantic, eth-account, eth-pydantic-types, eth-utils). Maintenance is aging—last release 234 days ago—but the repo is active and not archived.

Requires Python 3.10 or later (up to 3.14); eth-account and eth-pydantic-types must be installed.

License in practice

Apache-2.0 permissive license allows commercial and private use with minimal restrictions, making it suitable for most projects.

Quickstart

pip install eip712

from eip712.messages import EIP712Message
from eth_pydantic_types import abi
from eth_account import Account

class Mail(EIP712Message):
    eip712_domain = EIP712Domain(name="Ether Mail", version="1", chainId=1)
    sender: abi.address

mail = Mail(sender="0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa")
acct = Account.from_key(private_key)
sig = acct.sign_message(mail.signable_message)

Verify before relying

  • Whether the library handles all EIP-712 domain configurations (chainId, verifyingContract, salt) beyond the examples shown.
  • Performance characteristics when signing large nested message structures or arrays.
  • Compatibility with hardware wallets or other signing backends beyond eth-account.

Package facts

LicenseApache-2.0 permissive
Python supportSupports the current Python release <4,>=3.10
Install frictionLow. Pure-Python wheel
Runtime dependencies
4 packages
pydanticeth-accounteth-pydantic-typeseth-utils
MaintenanceAging 234 days since the last release
Last repo commit
First released
Downloads113,885 / month, #12,323 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
Development Status :: 5 - Production/StableIntended Audience :: DevelopersNatural Language :: EnglishOperating System :: MacOSOperating System :: Microsoft :: WindowsOperating System :: POSIXProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14

Evidence: eip712-0.3.3-py3-none-any.whl

Tags

Capabilities
EIP-712 message signingEthereum structured data hashingtyped message signingeth-account integrationPydantic Ethereum messagesdomain-specific message typescryptographic message signing
Topics
ethereumcryptographyeip-712

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “EIP-712 message signing”

  • eip712Provides Python message classes for EIP-712 typed structured data…
  • poly-eip712-structsConstructs and serializes EIP-712 structured data for Ethereum…
  • py-order-utilsGenerates and cryptographically signs orders for Polymarket's CLOB…

Give your agent the search over MCP, or paste the wish link into any chat.

More Cryptography packages

certifi Worth it
PyPI · Cryptography · released Jul 2026

Certifi provides Mozilla's curated collection of root SSL certificates for Python applications to validate TLS hosts and verify certificate trustworthiness.

MPL-2.0pure Python · 3.7+
1.9Bdownloads / mo
cryptography Worth it
PyPI · Cryptography · released Jul 2026

cryptography provides cryptographic recipes and low-level primitives for symmetric encryption, message digests, key derivation, and other common cryptographic algorithms in Python.

Apache-2.0 OR BSD-3-Clausecompiled wheel
1.5Bdownloads / mo
rsa Skip
PyPI · Cryptography · released Apr 2025

Pure-Python RSA encryption, decryption, signing, and key generation following PKCS#1 v1.5, with command-line and library interfaces.

Apache-2.0pure Pythonabandoned
299.6Mdownloads / mo
pyOpenSSL With conditions
PyPI · Python Modules · released Aug 2026

pyOpenSSL wraps OpenSSL's SSL/TLS functionality for Python, providing high-level connection objects and certificate handling through a Python-friendly interface around OpenSSL's cryptographic operations.

Apache-2.0pure Python · 3.9+
294.2Mdownloads / mo
azure-identity Worth it
PyPI · Cryptography · released Mar 2026

Provides Microsoft Entra ID token-based authentication for Azure SDK clients through a set of TokenCredential implementations that handle OAuth flows and managed identity support.

license unclearpure Python · 3.9+
247.2Mdownloads / mo
PyNaCl Worth it
PyPI · Cryptography · released Jan 2026

PyNaCl provides Python bindings to libsodium for digital signatures, secret-key and public-key encryption, hashing, message authentication, and password-based key derivation.

Apache-2.0compiled wheel · 3.8+
246.6Mdownloads / mo

See also eth-account · poly-eip712-structs · siwe · pyas2lib · ed25519-blake2b-fork · eth-hash · dkimpy · crypto-cpp-py · eth-keys · x402