Skip to main content

What is the Move Registry?

Move Registry (MVR, pronounced mover) provides a uniform naming service for interacting and building with packages from the Sui ecosystem. You can reference packages by their names, and MVR resolves the package address for you, regardless of network.

You can access the front end of the Move Registry online at https://www.moveregistry.com/apps.

Use MVR to:

  • Reference both packages and types by name in programmable transaction blocks (PTBs).

  • Depend on other packages when developing with Move.

Additionally, MVR can help you manage package versioning. With MVR, you call a specific version of a package without having to resolve the addresses yourself. You also do not need to worry about someone updating the package, because if you use a name without a specified version, MVR automatically defaults to the latest version available.

info

MVR default service currently supports Mainnet and Testnet networks.

How is MVR designed?​

  • PackageInfo registration: Exists independently on each network.
  • MVR registration: A single source of truth located on Mainnet.

The following diagram shows the MVR design at a high level.

High level design

What are PackageInfo objects?​

The first step when publishing a package is to register its metadata object. This metadata object serves as a key source of information for:

  1. Locating the source code across different versions of the package.
  2. (Future) Providing text-based metadata (title, description, tags) for the package, which the MVR search engine can use.

You can reuse this metadata object when authorizing any package upgrades to supply source information for the new version. Sui indexers can index the metadata because you cannot store it within another object.

Package info objects

See Managing Package Metadata for examples of working with PackageInfo objects.

What is an MVR name?​

An MVR name consists of a SuiNS name and a package name, in the format <suins_name>/<pkg_name>. For example, if your SuiNS name is myname.sui, and your package name is mypackage, the MVR name can be @myname/mypackage or myname.sui/mypackage.

The MVR standard supports an optional /<version> that allows you to specify which onchain version to resolve to. For example, if your MVR name is @myname/mypackage and there are multiple versions of the package, you can specify @myname/mypackage/2 to use version 2.

How do I register a package with MVR?​

MVR registration is separate from the PackageInfo registration process. This separation is necessary because the PackageInfo object acts as both the source of truth for package metadata and a proof of package ownership, whereas MVR registers applications that MVR tooling can resolve.

The two processes connect in step 2 of the registration procedure: you first register the package's PackageInfo object as described in the section on PackageInfo objects, and MVR registration then links your application name to that object.

To register a package:

  1. Using your SuiNS name, register an application.
  2. Based on the network, associate the application name with a PackageInfo object:
  • Mainnet: Associate the application name with a complete PackageInfo object, which provides the full metadata and ownership proof.
  • Other networks: Associate the application name with the object ID, acting as a pointer without ensuring a full mapping.

Move Registry

info

The registry that stores name resolution for MVR exists only on Mainnet.

See Managing MVR Names for examples of MVR registration.

Development status​

MVR is currently in beta.

Source code​

Both the Sui and MVR repositories on GitHub contain the open source code for MVR.