Skip to content

Breaking changes list for Mainnet update (MAIN.2.5 Release) #4891

Open
@Leo-Besancon

Description

@Leo-Besancon

The release of MAIN.2.5 will bring several breaking changes that may impact builders (also the impact should be minimal in most cases), listed below:

  • Smart contracts now have a limit of 25 nested calls (no limit were applied previously)
  • Smart contracts can only emit 25 messages (per operation) and the message size limit is set to 1024 bytes
  • The following smart contract methods now have a gas cost:
    • assembly_script_console_log: 171,
    • assembly_script_console_info: 171,
    • assembly_script_console_debug: 171,
    • assembly_script_console_warn: 171,
    • assembly_script_console_error: 171,
    • assembly_script_trace: 171
  • Event created now always have a correct operation id
  • Smart contracts wasm are now checked before execution in order to prevent Wasm bomb with limits:
    • Maximum number of function defined in a smart contract: 512
    • Maximum number of arguments to a function: 64
    • Maximum number of value a function can return: 8
    • Maximum signature length for a function of a smart contract module: 64 + 8
    • Maximum length for the name of a function defined in a smart contract: 256
    • Maximum length for the name of a smart contract: 256
    • Maximum number of custom section data: 1
    • Maximum length for the custom section data: 1000000
    • Maximum number of functions a module can import: 256
    • Maximum number of memory a module can import: 1
    • Maximum number of elements a module can import: 256 + 1
    • Maximum number of table initializer in a smart contract: 512
    • Maximum number of passive element in a smart contract: 512
    • Maximum number of passive data in a smart contract: 512
    • Maximum number of global initializer in a smart contract: 512
    • Maximum number of table in a smart contract: 16
    • Maximum number of memories in a smart contract: 1
    • Maximum number of exports for a smart contract module (function and globals): 512 + 512
  • Only accept EVM Signature with v == 27 or == 28 and s is high order
  • Async message expiration should be properly handled (and consistent with operation expiration)
  • Block producer are now properly incentivized to include block endorsements
  • Wasmv1.get_address_category_wasmv1 now properly handle Massa address
  • Cannot create async message with invalid validity slot anymore
  • Misc
    • Can now transfer coins to Smart contract addresses
    • Several fixes regarding to async message handling
    • Node and client will now ask that you approve the Massa Community Charter on launch. If you read them and run from a script, you can use the CLI flags -a or --accept-community-charter to accept them automatically.

Note: This list is based on the previous buildnet DEVN.28.5 breaking list: #4808

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions