Protocol Mumbai#

This page documents the changes brought by protocol Mumbai with respect to Lima (see Protocol naming).

The code can be found in directory src/proto_016_PtMumbai of the master branch of Tezos.

New Environment Version (V8)#

This protocol requires a different protocol environment version than Lima. It requires protocol environment V8, compared to V7 for Lima. (MR !6439)

  • Update data-encoding to 0.7.1. (MR !6854)

  • Provide only modern bytes and string combinators in environment data encoding. (MR !6919)

  • Update Plonk in Environment V7 and V8. (MR !6925)

  • Remove Plonk from Environment V6. (MR !6952)

Michelson#

  • The AND, OR, XOR, and NOT bitwise instructions have been extended to support bytes. (MR !6055)

  • The LSL and LSR logical shift instructions have been extended to support bytes. (MR !6055)

  • The INT conversion instruction has been extended to support conversion from bytes to int. (MR !6681)

  • The new NAT conversion instruction has been added to convert bytes to nat. (MR !6681)

  • The new BYTES conversion instruction has been added to convert nat and int to bytes. (MR !6681)

Smart Rollups#

Rollups supporting execution of smart contracts. (MRs !6118, !6425, !6252, !6396, !6364, !6413, !6545, !6543, !6590, !6623, !6641, !6549, !6672, !6500, !6718, !6699, !6630, !6794, !6823, !6828, !6676, !6698, !6507, !6879, !6860, !6716, !6468, !6857, !6652, !6913, !6838, !6914, !6717, !6560, !6891, !6726, !6935, !6951, !6946, !6954, !6942, !6963, !5741, !6974, !7013, !7015, !6980, !6993, !6949, !6930, !6991, !6955, !6937, !7010, !7027, !7034, !7045, !7036, !6987, !7016, !6380, !7109, !7114, !6968, !7130, !7054, !7189, !7220, !7067, !7213, !7233, !7247, !7248, !7253, !7254, !7271, !7161, !7320, !7280)

Zero Knowledge Rollups (ongoing)#

Rollups supporting cryptographic proofs of correct execution. (MRs !6047, !6884, !6836, !6855, !6839)

Data Availability Layer (ongoing)#

Distribution of rollup operations data off-chain. (MRs !6174, !6388, !6527, !6505, !6553, !6685, !6470, !6643, !6704, !6683, !6702, !6728, !5905, !6762, !6703, !6796, !6821, !6852, !6811, !6887)

Breaking Changes#

  • Disable TORU. (MR !7087)

Ticket User-experience#

  • Allow implicit accounts to receive and send tickets. (MR !6108, !6490)

RPC Changes#

  • Add RPC to get contract’s balance of ticket with specified ticketer, content type, and content. Can be used for both implicit and originated contracts. POST /chains/<chain_id>/blocks/<block_id>/context/contracts/<contract_id>/ticket_balance. (MR !6488)

  • Add RPC to get the complete list of tickets owned by a given contract by scanning the contract’s storage. Can only be used for originated contracts. POST /chains/<chain_id>/blocks/<block_id>/context/contracts/<contract_id>/all_ticket_balances. (MR !6712)

Operation receipts#

Cryptography#

  • Support for BLS signatures and introduction of a new account type whose address has the prefix tz4 (whose keys are BLS-MinPk key pairs). The CHECK_SIGNATURE instruction of Michelson can also check BLS signatures. tz4 accounts are forbidden to be delegates. (MR !5444)

Bug Fixes#

15s Block Times (MR !7017)#

Blocks times have been reduced from 30 seconds to 15 seconds. That is, a block can be produced with a delay of 15 seconds with respect to the previous block, if both blocks have round 0. This change comes with updating many related protocol parameters in order to match the reduced block times. In particular, the following quantities are kept the same:

  • the minimal time period of a cycle (namely, 2 days, 20 hours, and 16 minutes),

  • the length of the nonce revelation period (namely, around 2 hours and 8 minutes)

  • the number of nonce commitments per cycle (namely, 128),

  • the number of stake snapshots per cycle (namely, 16),

  • the maximum rewards per minute (namely 80 tez), and therefore roughly the same inflation,

  • the minimal “time to live” of an operation (namely, 1 hour),

  • the block gas limit per minute (namely 10400000 gas),

  • the ratio between the liquidity baking subsidy and the maximum rewards per block (namely, 1/16).

Changes to protocol parameters#

Parameter (unit)

Old (Lima) value

New value

minimal_block_delay (seconds)

30

15

delay_increment_per_round (seconds)

15

8

blocks_per_cycle (blocks)

8192

16384

blocks_per_commitment (blocks)

64

128

nonce_revelation_threshold (blocks)

256

512

blocks_per_stake_snapshot (blocks)

512

1024

max_operations_time_to_live (blocks)

120

240

hard_gas_limit_per_block (gas unit)

5200000

2600000

baking_reward_fixed_portion (mutez)

10000000

5000000

baking_reward_bonus_per_slot (mutez)

4286

2143

endorsing_reward_per_slot (mutez)

2857

1428

liquidity_baking_subsidy (mutez)

2500000

1250000

Minor Changes#

  • Give a positive gas cost to the BALANCE instruction. (MR !6564)

  • Enable transferring tickets to/from implicit accounts. (MRs !6108, !6490, !6867)

  • Update gas for Mumbai. (MRs !7061, !7299)

Internal#

  • Update migration for Lima. (MR !6504)

  • Introduce local context access APIs to the indexed subcontext for optimized accesses with locality. (MR !5922)

  • Optimized cleaning of implicit contract with 0 balance using local context accesses (MR !5922)

  • Improve ex_ticket_size. (MR !6209)

  • Clean up validation code. (MR !6526)

  • Remove Script_typed_ir.comparable_option_t. (MR !6513)

  • Restrict functions to originated contracts. (MR !6198)

  • Minor fixes for Consensus key. (MR !6567)

  • Enrich execution traces with “just consumed gas”. (MR !6565)

  • Fix ignored values. (MRs !6577, !6579, !6583)

  • Separate Generated_cost module. (MR !6253)

  • Remove unused parameter in gas model for SPLIT_TICKET. (MR !6489)

  • Remove function for computing baking rights without cache update. (MR !6605)

  • Move the definition of boxed_list to Script_list. (MR !5954)

  • Make counter an abstract type instead of an alias of Z.t. (MRs !6647, !6648)

  • Move interpreter logging to the plugin. (MR !5778)

  • Use let-bindings in ticket-accounting module. (MR !6770)

  • Use condensed syntax modules in protocol. (MRs !6844, !6864)

  • Do not fully parse head fitness in Mempool.init. (MR !7000)