Sui MVR Provenance โ
Overview โ
This guide explains how to use the sui-mvr-provenance
GitHub Action to publish and register Move packages on the Sui blockchain with full SLSA-backed provenance.
Each deployment:
- Builds a Move package and generates
bytecode.dump.json
- Produces a signed
mvr.intoto.jsonl
provenance file - Registers the provenance metadata and transaction digest to the Move Registry (MVR)
This ensures your smart contract is verifiably built, tamper-evident, and traceable to source.
Features โ
- โ SLSA-compatible provenance for Move packages
- ๐ GitHub OIDC-based signing via Sigstore
- ๐ Optional remote signing with GitSigner
- ๐ฆ On-chain metadata registration to MVR
- ๐งพ Full artifact output:
.jsonl
,deploy.json
,mvr.config.json
Quick Start โ
Add the GitHub Action to your workflow:
yaml
- name: Build and Upload Move Bytecode
uses: zktx-io/sui-mvr-provenance@v0.2.0
with:
working-directory: my-move-package
env:
ED25519_PRIVATE_KEY: ${{ secrets.ED25519_PRIVATE_KEY }}
GIT_SIGNER_PIN: ${{ secrets.GIT_SIGNER_PIN }} # optional
โ ๏ธ Your Move package must include a
mvr.config.json
file in the working directory.
Configuration: mvr.config.json
โ
This file defines the deployment and metadata registration details:
json
{
"network": "mainnet",
"owner": "0x123...abc",
"app_name": "@myname/app",
"app_desc": "My App Description",
"upgrade_cap": "0xabc...def",
"app_cap": "0xappcap...123",
"pkg_info": "0xpackageinfo...456",
"icon_url": "https://example.com/icon.png",
"homepage_url": "https://myapp.site",
"documentation_url": "https://docs.myapp.site",
"contact": "team@myapp.site"
}
Signing Options โ
๐ ED25519_PRIVATE_KEY โ
- Default signing method
- Requires a Sui-format secret key (
suiprivkey...
)
๐ GIT_SIGNER_PIN (Optional) โ
- Enables secure remote signing via notary.wal.app/sign
- Useful when keeping keys outside CI or requiring human approval
Provenance Workflow โ
Each deployment:
- Compiles your Move package and generates
bytecode.dump.json
- Captures build provenance in
mvr.intoto.jsonl
(via GitHub OIDC) - Registers metadata and signature to the Move Registry (MVR)
- Outputs artifacts for independent verification
You can verify your package using Notary at:
https://notary.wal.app/mvr/@your-name/your-app
Replace
your-name/your-app
with the MVR package name (e.g.,@notary/hello-mvr
).
Output Artifacts โ
File | Description |
---|---|
bytecode.dump.json | Base64-encoded compiled Move bytecode |
deploy.json | Deployment result (e.g. package_id , upgrade_id ) |
mvr.config.json | Deployment configuration input |
mvr.intoto.jsonl | SLSA provenance bundle |
These are used across provenance
, verify
, and register
steps in full CI workflows.
Resources โ
- ๐ GitHub Action: sui-mvr-provenance
- ๐งพ Example config: mvr.config.json
- ๐ Verifier UI: notary.wal.app
- ๐ MVR Explorer: moveregistry.com
- ๐ SLSA: slsa.dev
- ๐ Sigstore: sigstore.dev