ContractCodeUpdated

Event v334 → current #5

Emitted when a contract's code is updated to a different code hash.

View events on chain
Useful for: developersanalytics

The Big Picture

A privileged upgrade mechanism that swaps contract code in-place, preserving address and storage.

Use Cases

  • Track contract upgrades
  • Monitor governance-approved changes
  • Build upgrade history

From Chain Metadata

A contract's code was updated.

Triggers

Emitted by

Preconditions

  • Contract exists
  • Caller has root privileges
  • New code exists

Effects

Storage Modified

Postconditions

  • Contract references new code_hash

Side Effects

  • Contract behavior changes immediately

Event Data

#NameTypeDescription
0
contract
AccountId Contract whose code was upgraded (hex -> SS58)
1
new_code_hash
H256 Hash of the new code now running
2
old_code_hash
H256 Hash of the previous code (before upgrade)

Code Examples

import { ApiPromise, WsProvider } from "@polkadot/api";
import { stringCamelCase } from "@polkadot/util";

const provider = new WsProvider("wss://entrypoint-finney.opentensor.ai:443");
const api = await ApiPromise.create({ provider });

// Subscribe to ContractCodeUpdated events
api.query.system.events((events) => {
  events
    .filter(({ event }) =>
      event.section === stringCamelCase("Contracts") &&
      event.method === "ContractCodeUpdated"
    )
    .forEach(({ event }) => {
      console.log("ContractCodeUpdated:", event.data.toHuman());
    });
});

Runtime Info

Pallet Index
29
Event Index
5
First Version
v334
Current Version
v393