Sui.

Post

Share your knowledge.

Meaning.Sui.
Jul 23, 2025
Discussion

Upgrade cap to 0x0

If I want to make a package immutable, can I send the upgrade cap to 0x0 upon deployment? Will this cause any issues down the line? for a coin. let upgrade_cap = sui::package::claim_upgrade_cap(ctx); transfer::public_transfer(upgrade_cap, @0x0);

  • Sui
0
1
Share
Comments
.

Answers

1
shamueely.
Jul 23 2025, 04:14

Yeah, I’ve actually looked into this too—and yes, you can make a package immutable by transferring the upgrade_cap to 0x0. It’s kind of like saying, “no one, not even me, can upgrade this package anymore.” So once you do:

let upgrade_cap = sui::package::claim_upgrade_cap(ctx);
transfer::public_transfer(upgrade_cap, @0x0);

…that package becomes permanent—no more edits, no upgrades, no patching.

From what I understand, this is often done intentionally, especially for things like coins or public-facing assets, where trust and transparency are essential. Once it's deployed and locked, users know the logic can't be changed later in a way that might affect them—like changing how transfers work or adjusting fees.

That said, the one thing to keep in mind is: you better be absolutely sure the code is final. Any bugs, gas inefficiencies, or improvements you wish you had made—there’s no going back. I’ve seen people recommend doing extensive dry-run tests and maybe even audits before transferring the cap to zero address.

So yeah, no immediate "issues" from Sui’s side—it’ll work just fine. But down the line, if you ever wish to update your coin logic or fix something critical, you’ll be stuck unless you deploy a brand-new package and migrate everyone to it, which can be a hassle.

Hope that helps! And if anyone else here has done it and had to deal with the consequences, would love to hear how that played out.

1
Comments
.

Do you know the answer?

Please log in and share it.