ethPM
  • Introduction
  • ethPM Specification
  • ERC1319: Package Registry Standard
  • URIs
  • ethPM Registry Directory
  • ethPM Developer Guide
    • ethPM & Remix IDE
    • Getting Started with ethPM CLI
    • ethPM & Etherscan Verified Contracts
    • Compound Finance & ethPM
    • ethPM Library Support
    • FAQs
Powered by GitBook
On this page

Was this helpful?

ERC1319: Package Registry Standard

PreviousethPM SpecificationNextURIs

Last updated 4 years ago

Was this helpful?

An ethPM registry is an on-chain datastore for package releases. For each package release, three pieces of information are committed to storage:

  • a package name

  • a package version

  • the content-addressed URI associated with the package's manifest.

was written to define the API for an on-chain ethPM registry. It is the minimum feasible API for a registry to interoperate with various ethPM tooling. It is encouraged for people to build their own registry implementations that extend upon the standard to support any kind of specialized behavior.

Reference Registry Implementations

There are a couple different implementations of ERC1319 available.

    • Solidity implementation with release deletion (but prevents re-releasing the same package version)

    • Solidity implementation without release deletion

  • Vyper (experimental)

Deploying your own registry.

ethPM-CLI provides deploy the Simple Registry to any blockchain.

Escape-Truffle provides to assist with deploying its series of smart contracts.

Package Naming and Versioning

As of ethPM V3, the name and version field of a manifest are no longer strictly required. Best practice is that every package should define these in their manifest. Some tooling may even go as far as requiring these fields are defined before cutting a release. When a package is released on a registry, users must provide an official name and version under which to identify a release on the blockchain. The following table defines how a package should be identified, considering the various cases when manifest defines / omits the name and version, and whether or not the manifest is stored on an on-chain registry.

Manifest contains name and version

Manifest omits name and version

Sourced from registry

Manifest name, version must match registry name, version

Registry name, version is valid identifier

Not sourced from registry

Manifest name, version is the valid identifier

Ambiguous, user must define name, version

ERC1319
Escape-Truffle
Simple Registry
with release deletion
without release deletion
this script
a simple command