Sui.

Post

Share your knowledge.

MarlKey.
Apr 30, 2025
Expert Q&A

Is the only way to publish Move packages through an EOA?

I assume there is no way on Sui chain as there is no module on chain which publishes packages.

  • Sui
  • SDKs and Developer Tools
  • Move
6
3
Share
Comments
.

Answers

3
MiniBob.
Apr 30 2025, 17:45

No, publishing Move packages on the Sui chain is not limited to EOAs. While EOAs are commonly used to publish packages, Sui's design allows other entities, such as smart contracts or modules, to initiate package publishing under certain conditions. However, the current implementation typically requires an EOA to sign and submit the transaction because there is no on-chain module that autonomously handles package publishing. This ensures accountability and security while maintaining flexibility for developers.

5
Best Answer
Comments
.
Vens.sui.
Apr 30 2025, 20:08

No, publishing Move packages on Sui is not limited to externally owned accounts (EOAs), but every package publish operation must be initiated by a transaction signed by an account with sufficient permissions and gas. On Sui, this is typically done via the Sui CLI, which uses the private key of an account (usually an EOA) to sign and submit the transaction that publishes the package.

There is indeed no on-chain module that acts as a "package publisher" for others; the Sui protocol requires the package publisher to sign and submit the publish transaction themselves. This means:

  • You cannot delegate package publishing to a smart contract or an on-chain module-there is no native mechanism for a contract to publish a new package on your behalf.
  • The process is always initiated by an account (EOA or potentially a multi-sig or other key management scheme), but not by another on-chain module.

The workflow is:

  • You compile your Move package locally.
  • You use the Sui CLI (sui client publish ...) to submit a transaction, signed by your account, to publish the package to the network.
  • After publishing, the package is immutable unless you retain and use the UpgradeCap for future upgrades[8].

In summary: On Sui, Move packages are always published through a transaction signed by an account (EOA or equivalent), not by an on-chain module. There is no on-chain module that can publish packages for you.

5
Comments
.
harry phan.
Apr 30 2025, 17:58

There’s no on-chain module or smart contract that can deploy a package on behalf of another address. This is because:

Move package publication is a special transaction type on Sui (MoveModulePublish) that: • Requires signing by an EOA • Directly uploads and compiles the .move source code on-chain • Creates an immutable Package object

No general publish() function exists on-chain. Unlike contracts that deploy contracts (e.g. factory pattern on Ethereum), in Sui the Move runtime doesn’t expose publishing as an on-chain callable action. It’s part of the protocol layer, not user-level modules.

2
Comments
.

Do you know the answer?

Please log in and share it.

Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

335Posts480Answers
Sui.X.Peera.

Earn Your Share of 1000 Sui

Gain Reputation Points & Get Rewards for Helping the Sui Community Grow.

Reward CampaignJune