Skip to content

Deploy and upgrade a smart contract

Node, CLI, and RPC examples target FullOn Core v0.9.2. Contracts, CDT, and wallets have independent versions; their stated verification scope does not automatically change with Core. See version baseline and migration.

Prerequisites

You need compiled WASM/ABI, a contract account on the target network, sufficient resources, and a signing wallet satisfying its deployment authority. The example modifies on-chain code. Run it on an isolated chain or testnet first and replace contractacct.

export FULLON_RPC='http://127.0.0.1:8888'
fucli -u "$FULLON_RPC" get account contractacct
fucli -u "$FULLON_RPC" set contract contractacct ./build   hello.wasm hello.abi -p contractacct@active
fucli -u "$FULLON_RPC" get code contractacct -c deployed.wasm -a deployed.abi

WASM/ABI filenames in set contract are relative to ./build. Whether active suffices depends on current permissions and action links. Do not change owner arbitrarily to make an example work.

Verify

Keep the deployment transaction ID and confirm successful irreversible execution. Compare downloaded code hashes with the local WASM, check ABI actions/tables, and call a controlled action. The contract's declared name hello can differ from the deployment account.

Upgrade

Save prior WASM, ABI, hashes, permissions, and a data-migration plan. Replacing code does not reset tables. Rolling code back does not roll data back.

Configure eosio.code only when inline authorization actually requires it, using minimum scope. Deploying a basic hello contract does not by itself require additional authority.

Retrieve ABI / code · Call actions

Sources and scope

Source 1. Source review: 2026-11-02. This does not verify the version deployed on every network.