View Verified Move Source Code in Sui Explorer

Sui Explorer now supports a widely requested feature, viewing source code for certain packages within the interface.

View Verified Move Source Code in Sui Explorer

Sui Explorer now incorporates a source code view for Sui framework packages, which has been a widely requested feature. This new Source Verified tab sits alongside the existing Bytecode tab, letting developers click to view source code for the following packages:

Sui Explorer screen shot showing source code feature
The Source Verified tab in Sui Explorer shows source code for specific framework packages.

This new feature lets Sui developers easily find, read, understand, and share Move code to ease development or auditing. For supported packages, developers no longer need to track down the specific repositories or branches that correspond to published on-chain bytecode. Simply look up the source, including docstrings, for modules in Sui explorer.

Verifying the source code

This new feature verifies that it is displaying the correct and up-to-date source code for a published package through a backend service which checks that the reference source code compiles to the same bytecode on-chain. That is, the service verifies that compiling the source code locally yields the exact same bytecode. 

flow digram showing system architecture
This feature ensures accurate source code by compiling it and comparing its bytecode to the on-chain bytecode.

The system works by cloning a well-known source repository with published packages (1) and downloading the corresponding on-chain bytecode for the published packages as specified in the source repository (2). The service compiles the source code and verifies that it matches the bytecode (3). If the compiled source code matches, Sui Explorer displays the source code when requested (4). When a source repository is updated for a tracked branch, the process effectively repeats, and the server updates tracked branches at a steady cadence.

This system does not derive or decompile source code from on-chain bytecode, instead expecting an existing repository containing a reference implementation to verify against.

More packages to come

In this first phase, the feature supports source display for a handful of well-known packages (0x1, 0x2, 0x3, 0xdee9), and will support more in the future. Developers interested in contributing their own reference source code can take a look at the configuration file and consider making a pull request to track and display their Move code in Sui Explorer.