Skip to main content

How do I participate in governance?

Tezos bakers can participate in the Etherlink governance process by submitting proposals and voting for them.

The voting power of a baker is the amount of tez that it has staked plus the tez that delegators have delegated to it, also called its staking balance.

Separate contracts manage the slow kernel updates, the fast kernel updates, and the sequencer operator, so to interact with them, bakers send transactions to those contracts, such as with the Octez client. The addresses of the governance contracts are specified in Etherlink's kernel. For information about the Octez client, see Command Line Interface in the Octez documentation.

Governance contract addresses

You need the address of the correct governance contract to propose changes and vote on changes.

 Mainnet addressTestnet address
Smart Rollup
Kernel governance (slow)
Kernel governance (fast)
Sequencer operator

Participating in kernel governance

Bakers can propose, vote on, and trigger kernel updates with these commands. The commands are the same for slow and fast upgrades but they target different governance contracts.

Getting information about the current period

You can get information about the current period at https://governance.etherlink.com.

To get information about the current state of either kernel governance contract directly from the contract, connect the Octez client to an active node and call the contract's get_voting_state view. For example, this Octez client command calls this view for the slow governance contract on Mainnet:

octez-client -E https://mainnet.ecadinfra.com \
run view get_voting_state on contract KT1XdSAYGXrUDE1U5GNqUKKscLWrMhzyjNeh

The view returns information about the current governance period in this order:

  • The index of the current period
  • Whether the current period is Proposal (Left Unit) or Promotion (Right Unit)
  • The number of blocks remaining in the period
  • Information about voting during the period

For example, this response shows that the contract is currently in the Proposal period:

(Pair 1619 (Left Unit) 64 None)

Block explorers show this information in a more human-readable format.

You can also subscribe to the voting_finished event to be notified when the Proposal period completes.

Proposing and upvoting upgrades

During a Proposal period, bakers can propose updates by calling the new_proposal entrypoint of the appropriate governance contract and passing the hash of their proposed kernel, as in this example, which uses <KERNEL_HASH> as the kernel hash:

octez-client transfer 0 from my_wallet to KT1XdSAYGXrUDE1U5GNqUKKscLWrMhzyjNeh \
--entrypoint "new_proposal" \
--arg "<KERNEL_HASH>"

The command takes these parameters:

  • The address or Octez client alias of your baker account
  • The address of the Etherlink kernel governance contract
  • The hash of the upgraded kernel, which the proposer must generate from the code of the new kernel

The proposer must make the code and hash of the new kernel available for people to evaluate. You can look for this information in blog posts or other announcements from proposal developers. Proposers can make it easier for bakers to upgrade to the new kernel by providing the preimages for the kernel online so nodes can update from them directly.

To upvote a proposed kernel update during a Proposal period, call the upvote_proposal entrypoint with the same parameters:

octez-client transfer 0 from my_wallet to KT1XdSAYGXrUDE1U5GNqUKKscLWrMhzyjNeh \
--entrypoint "upvote_proposal" \
--arg "<KERNEL_HASH>"

It's not necessary to upvote a proposal that you submitted; submitting a proposal implies that your account upvotes it.

Voting for or against upgrades

When a proposal is in the Promotion period, you can vote for or against it or pass on voting by calling the vote entrypoint of the appropriate governance contract:

octez-client transfer 0 from my_wallet to KT1XdSAYGXrUDE1U5GNqUKKscLWrMhzyjNeh \
--entrypoint "vote" --arg '"yea"'

The command takes these parameters:

  • The address or Octez client alias of your baker account
  • The address of the Etherlink kernel governance contract
  • "yea", "nay", or "pass", including the double quotes

The command does not need the hash of the kernel because only one kernel can be in the Promotion period at a time, so the options are to vote for or against that kernel or to abstain by voting "pass."

Triggering upgrades

After a proposal wins a vote, any user can trigger the kernel upgrade by calling the appropriate governance contract's trigger_kernel_upgrade entrypoint:

octez-client transfer 0 from my_wallet to KT1D1fRgZVdjTj5sUZKcSTPPnuR7LRxVYnDL \
--entrypoint "trigger_kernel_upgrade" \
--arg '"sr1Ghq66tYK9y3r8CC1Tf8i8m5nxh8nTvZEf"'

The command takes these parameters:

  • The address or Octez client alias of your baker account
  • The address of the appropriate Etherlink kernel governance contract
  • The address of the Etherlink Smart Rollup; the parameter must include the double quotes

After the new kernel becomes active, bakers must provide their nodes with the preimages for the new kernel to continue to participate in Etherlink. They can copy the new preimages into the node data directory without stopping or restarting the node. If a node uses a preimages endpoint as described in Running an Etherlink EVM node and Running an Etherlink Smart Rollup node, the node updates automatically.

Participating in sequencer governance

Bakers can propose an account to operate Etherlink's sequencer, vote for or against proposed members, and trigger the change to a new account. Currently the governance contract tracks a sequencer committee, even though at this stage only one account can be a member and therefore only one account can run a sequencer.

Getting information about the current period

You can get information about the current period at https://governance.etherlink.com.

To get information about the current state of the sequencer operator governance contract directly from the contract, call its get_voting_state view. For example, this Octez client command calls this view for the kernel governance contract on Mainnet:

octez-client run view get_voting_state on contract KT1NnH9DCAoY1pfPNvb9cw9XPKQnHAFYFHXa

The view returns information about the current governance period. Block explorers show this information in a more human-readable format.

You can also subscribe to the voting_finished event to be notified when the Proposal period completes.

Proposing and voting for a new member

To propose a member to be the sequencer operator, bakers can call the new_proposal entrypoint of the governance contract during the Proposal period:

octez-client transfer 0 from my_wallet to KT1NnH9DCAoY1pfPNvb9cw9XPKQnHAFYFHXa \
--entrypoint "new_proposal" \
--arg "Pair \"<PUBLIC_KEY>\" <L2_ADDRESS>"

The command takes these parameters:

  • The address or Octez client alias of your baker account
  • The address of the sequencer governance contract (referred to on the block explorer as the sequencer committee governance contract)
  • The public key (not the public key hash or account address) of the account to propose, including the double quotes, represented in this example as <PUBLIC_KEY>
  • The Etherlink address of the account to propose, represented in the previous example as <L2_ADDRESS>; the examples below use 0xb7a970 as the account address

For example:

octez-client transfer 0 from my_wallet to KT1NnH9DCAoY1pfPNvb9cw9XPKQnHAFYFHXa \
--entrypoint "new_proposal" \
--arg 'Pair "edpkurcgafZ2URyB6zsm5d1YqmLt9r1Lk89J81N6KpyMaUzXWEsv1X" 0xb7a97043983f24991398e5a82f63f4c58a417185'

To upvote a proposed sequencer operator during a Proposal period, call the upvote_proposal entrypoint with the same parameters:

octez-client transfer 0 from my_wallet to KT1NnH9DCAoY1pfPNvb9cw9XPKQnHAFYFHXa \
--entrypoint "upvote_proposal" \
--arg 'Pair "edpkurcgafZ2URyB6zsm5d1YqmLt9r1Lk89J81N6KpyMaUzXWEsv1X" 0xb7a97043983f24991398e5a82f63f4c58a417185'

It's not necessary to upvote a proposal that you submitted; submitting a proposal implies that your account upvotes it.

Voting for or against an operator

When a proposal is in the Promotion period, you can vote for or against it or pass on voting by calling the vote entrypoint of the governance contract:

octez-client transfer 0 from my_wallet to KT1XdSAYGXrUDE1U5GNqUKKscLWrMhzyjNeh \
--entrypoint "vote" --arg '"yea"'

The command takes these parameters:

  • The address or Octez client alias of your baker account
  • The address of the sequencer governance contract
  • "yea", "nay", or "pass", including the double quotes

For example:

octez-client transfer 0 from tz1RLPEeMxbJYQBFbXYw8WHdXjeUjnG5ZXNq to KT1FRzozuzFMWLimpFeSdADHTMxzU8KtgCr9 \
--entrypoint "vote" --arg "\"yea\""

Triggering sequencer operator updates

After a proposed account wins a vote, any user can trigger the change and enable that account to run the sequencer by calling the governance contract's trigger_committee_upgrade entrypoint:

octez-client transfer 0 from my_wallet to KT1XdSAYGXrUDE1U5GNqUKKscLWrMhzyjNeh \
--entrypoint "trigger_committee_upgrade" \
--arg '"sr1Ghq66tYK9y3r8CC1Tf8i8m5nxh8nTvZEf"'

The command takes these parameters:

  • The address or Octez client alias of your baker account
  • The address of the sequencer governance contract
  • The address of the Etherlink Smart Rollup; the parameter must include the double quotes
arrow icon

Prev

How is Etherlink governed?

Next

arrow icon
Kernel upgrades