Library usage
Installation
The erc7730
library is available as a Python package on PyPI. You can install it
using pip
:
pip install --user erc7730
Overview
A typical usage of the erc7730
library is to load descriptors and compile them to a wallet manufacturer-specific
format:
--- title: Node --- flowchart TD input_json@{ shape: doc, label: "ERC-7730 descriptor file" } input[input ERC-7730 descriptor] resolved[resolved ERC-7730 descriptor] vendor[wallet specific ERC-7730 descriptor] input_json -- load/validate --> input input -- resolve/validate --> resolved resolved -- convert --> vendor
Packages
erc7730.model
The erc7730.model
package implements an object model mapping for ERC-7730 descriptors using
pydantic, allowing to easily read/write/transform descriptors.
input and resolved forms
Descriptors can be manipulated in 2 forms:
“Input” form: the descriptor document as defined in the ERC-7730 specification, after
include
tags have been resolved. It is possible to save back the descriptor back to the original descriptor document.“Resolved” form: the descriptor after pre-processing:
URLs have been fetched
Contract addresses have been normalized to lowercase
References have been inlined
Constants have been inlined
Field definitions have been inlined
Nested fields have been flattened where possible
Selectors have been converted to 4 bytes form This form is the most adapted to be used by tools and applications.
An ERC7730 Clear Signing descriptor. |
|
An ERC7730 Clear Signing descriptor. |
input data model
- pydantic model erc7730.model.input.descriptor.InputERC7730Descriptor[source]View on GitHub
An ERC7730 Clear Signing descriptor.
This model is directly serializable back the original JSON document.
Specification: https://github.com/LedgerHQ/clear-signing-erc7730-registry/tree/master/specs
JSON schema: https://github.com/LedgerHQ/clear-signing-erc7730-registry/blob/master/specs/erc7730-v1.schema.json
- field context: InputContractContext | InputEIP712Context [Required]
The binding context is a set of constraints that are used to bind the ERC7730 file to a specificstructured data being displayed. Currently, supported contexts include contract-specificconstraints or EIP712 message specific constraints.
- field display: InputDisplay [Required]
The display section contains all the information needed to format the data in a human readableway. It contains the constants and formatters used to display the data contained in the bound structure.
- field metadata: InputMetadata [Required]
The metadata section contains information about constant values relevant in the scope of thecurrent contract / message (as matched by the context section)
- field schema_: str | None = None (alias '$schema')
The schema that the document should conform to. This should be the URL of a version of the clear signing JSON schemas available under https://github.com/LedgerHQ/clear-signing-erc7730-registry/tree/master/specs
resolved data model
- pydantic model erc7730.model.resolved.descriptor.ResolvedERC7730Descriptor[source]View on GitHub
An ERC7730 Clear Signing descriptor.
- This model represents descriptors after resolution phase:
URLs have been fetched
Contract addresses have been normalized to lowercase
References have been inlined
Constants have been inlined
Field definitions have been inlined
Nested fields have been flattened where possible
Selectors have been converted to 4 bytes form
Specification: https://github.com/LedgerHQ/clear-signing-erc7730-registry/tree/master/specs
JSON schema: https://github.com/LedgerHQ/clear-signing-erc7730-registry/blob/master/specs/erc7730-v1.schema.json
- field context: ResolvedContractContext | ResolvedEIP712Context [Required]
The binding context is a set of constraints that are used to bind the ERC7730 file to a specificstructured data being displayed. Currently, supported contexts include contract-specificconstraints or EIP712 message specific constraints.
- field display: ResolvedDisplay [Required]
The display section contains all the information needed to format the data in a human readableway. It contains the constants and formatters used to display the data contained in the bound structure.
- field metadata: ResolvedMetadata [Required]
The metadata section contains information about constant values relevant in the scope of thecurrent contract / message (as matched by the context section)
- field schema_: str | None = None (alias '$schema')
The schema that the document should conform to. This should be the URL of a version of the clear signing JSON schemas available under https://github.com/LedgerHQ/clear-signing-erc7730-registry/tree/master/specs
erc7730.lint
The erc7730.lint
package implements the erc7730 lint
command. The main interface is ERC7730Linter
:
- class erc7730.lint.ERC7730Linter[source]View on GitHub
Linter for ERC-7730 descriptors, inspects a (structurally valid) descriptor and emits notes, warnings, or errors.
A linter may emit false positives or false negatives. It is up to the user to interpret the output.
The package contains several linter implementations:
|
|
|
erc7730.convert
The erc7730.convert
package implements the erc7730 convert
command. The main interface is ERC7730Converter
:
- class erc7730.convert.ERC7730Converter[source]View on GitHub
Converter from/to ERC-7730 descriptor.
A converter may fail partially, in which case it should emit errors with ERROR level, or totally, in which case it should emit errors with FATAL level.
- abstract convert(descriptor: InputType, out: OutputAdder) OutputType | dict[str, OutputType] | None [source]View on GitHub
Convert a descriptor from/to ERC-7730.
Conversion may fail partially, in which case it should emit errors with WARNING level, or totally, in which case it should emit errors with ERROR level.
Conversion can return a single descriptor, or multiple ones, in the form of a dictionary with unique identifiers.
- Parameters:
descriptor – input descriptor to convert
out – output sink
- Returns:
converted descriptor, or None if conversion failed
The package contains several converter implementations: