Skip to content

v3.0.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@tbfleming tbfleming released this 31 Jan 15:36
1a8407b

Mandel v3.0.0-rc1 Release Notes

This is the first RELEASE CANDIDATE for the first Mandel release.

Mandel is a fork of eosio, developed by ƒractally with funding from the EOS Network Foundation. Mandel v3.0 is based on eosio v2.0.13, which provides a solid foundation for future development. It includes cherry-picked features from eosio v2.1.x and eosio develop-boxed. It also includes some new features.

Changes from v2.0.13

Hard Forks

Name From Description
GET_CODE_HASH new The get_code_hash intrinsic allows contracts to check if an account has a contract set, get the hash of that account's contract, plus get the number of times that contract has changed.
ACTION_RETURN_VALUE v2.1 The set_action_return_value intrinsic allows actions to return values which appear in the action trace.
CONFIGURABLE_WASM_LIMITS2 v2.1, new This allows chain operators to increase various limits on WASM files. This is based on 2.1's CONFIGURABLE_WASM_LIMITS, but contains additional fixes.
BLOCKCHAIN_PARAMETERS v2.1 This provides an extensible mechanism to configure blockchain parameters. It includes the ability to configure the maximum return value size supported by ACTION_RETURN_VALUE.

Other Notable Changes

  • Chainbase ported from 2.1 has significant performance enhancements plus automatic huge page support. See EOSIO/eos#9577 for configuration changes.
  • Supports snapshot versions 4 and 5 from v2.1.
  • Has hooks to support cltester and debug_plugin. cltester supports creating deterministic test cases for contracts. debug_plugin supports debugging contracts using gdb and vscode. cltester and debug_plugin come with clsdk.
  • onblock logging helps diagnose system contract failures.
  • Enhanced snapshot reporting from v2.1: v1/producer/create_snapshot now includes the head block number, head block time, and snapshot format version in its output.

ABI Format Changes

The ABI is now at version 1.3. A new field action_results, a binary extension, is after the variants field. action_results is an array of struct with the following fields:

eosio::name     name;           // Name of the action
string          result_type;    // Return type

There's an entry in action_results for each action which returns data using the set_action_return_value intrinsic.

SHiP Format Changes

  • get_status_result_v0 has a new binary extension field, chain_id.
  • action_trace_v1 is a new struct version which adds return_value.
  • chain_config_v1 is a new struct version which adds max_action_return_value_size.
  • wasm_config_v0 is a new struct which stores configurable wasm limits.
  • global_property_v1 has a new binary extension field, wasm_configuration.

PRs

  • #1: Use a fork of 2.1's fc. The fc fork reintroduces code that 2.1 removed, but 2.0 still depends on. A future release may remove this reintroduced code.
  • #2: Backport 2.1's eos-vm. This is a step toward backporting CONFIGURABLE_WASM_LIMITS.
  • #3: Backport 2.1's SHiP refactor, but without most of the SHiP format changes. This turns SHiP into a library, needed for cltester. Its only user-facing change is the addition of chain_id as a binary extension to get_status_result_v0.
  • #4: Backport 2.1's chainbase. This includes significant performance enhancements plus automatic huge page support. See EOSIO/eos#9577 for configuration changes.
  • #5: Lighter-weight cicd system based on GitHub Actions. This runs the in-repo test suite using Ubuntu 20.04 (unpinned build).
  • #6: Backport 2.1's tester cmake changes. This allows tests in https://github.com/eosnetworkfoundation/mandel-contracts to build using Mandel.
  • #7: Backport 2.1's ACTION_RETURN_VALUE hard fork. This adds the set_action_return_value intrinsic, which allows contracts to place return values into the action trace. This PR adds action_trace_v1 and chain_config_v1 to SHiP.
  • #8: Backport 2.1's CONFIGURABLE_WASM_LIMITS hard fork, with additional fixes. The resulting hardfork is CONFIGURABLE_WASM_LIMITS2. This allows chain operators to increase various limits on WASM files. This PR also brings in 2.1's snapshot format versions 4 and 5. Mandel 3.0 should be able to import 2.1's snapshots as long as no 2.1 hard forks were active, though this hasn't been tested.
  • #11: Backport 2.1's BLOCKCHAIN_PARAMETERS hard fork. This provides an extensible mechanism to configure blockchain parameters. It includes the ability to configure the maximum return value size supported by ACTION_RETURN_VALUE.
  • #12: New GET_CODE_HASH hard fork provides the get_code_hash intrinsic. This allows contracts to check if an account has a contract set, get the hash of that account's contract, plus get the number of times that contract has changed.
  • #14: Backport 2.1 WASM tests.
  • #15: Add SHiP support for CONFIGURABLE_WASM_LIMITS. This adds wasm_config_v0 and wasm_config. It adds wasm_configuration as a binary extension to global_property_v1.
  • #16: Switch to develop-boxed's eos-vm. This adds contract profiling support and is a step toward supporting WASM debugging.
  • #17: Add hooks for clsdk or other development tools. This allows cltester to integrate with Mandel. It also allows debug_plugin (comes with clsdk) to integrate with Mandel.
  • #18: Port onblock logging from EOSIO/eos#11038. This helps diagnose system contract failures.
  • #19: Backport 2.1 enhanced snapshot reporting. v1/producer/create_snapshot now includes the head block number, head block time, and snapshot format version in its output.
  • #24: SHiP compressed deltas may exceed 4GB.
  • #25: Replace N macro with operator ""_n.
  • #26: Remove fc::optional and fc::static_variant.
  • #27: Bump version to v3.0.0-rc1.
  • #28: Increment codegen_version.