FIO 4 Upgrade Plan and Details

 

  • FIO CDT migration
    fio-1.6.x was completed for the December 2020 stable release of the fio.contracts (upgrade/apollo) and fully able to produce compiled wasm code. A number of examples were migrated to create fio-1.8.x-12102021 which still has a few outstanding issues needing resolution to be compatible with the latest release of EOSIO 2.2.x, as well as a few other intricacies such as changes to the public_key type

    • key_weight struct is now defined here with supporting elements for the new public_key type, making it incompatible with key_weight defined in fio.system

  • FIO Contract Migration

    • fio.common headers

      • abieos_numeric.hpp

        • line 56 string_to_key: used by string_to_public_key, function is no longer compatible with public_key type from fio.cdt 1.8 implementation

        • line 64 string_to_public_key: Uses an operation for string_to_key that does not compile

      • account_operations.hpp

        • All key_weight structures and types should be moved here if the one in fio.cdt 1.8

      • fio.common.hpp

        • send_response and get_account_ram_usage created here to call from their internal namespace. See fio.common.hpp in upgrade/apollo

    • eosio.bios

      • Changes will replicate from fio.system?

      • Error: Tried to get a non-existent template argument

      • Implementation update outdated, need develop

    • fio.system

      • Build error:

        “Tried to get a non-existent template argument” Terminate called after throwing an instance of ‘eosio::cdt::internal_error' What(): eosio tool internal error | Aborted (core dumped)


        This error occurs at the end of the contracts that have completed code changes to support CDT. Contract structure was thought to be the cause but eliminating all conflicting code with comments still brings this error. Installed eosio.cdt with latest LLVM from eosio.2.2.x release and still producing this error. Next thought is to go over all CMakeLists.txt in fio.contracts

    • fio.token

      • Error: Tried to get a non-existent template argument

      • Implementation update outdated, need develop

    • fio.fee

      • Error: Tried to get a non-existent template argument

      • Implementation update outdated, need develop

    • fio.address

      • Error: Tried to get a non-existent template argument

      • Implementation update outdated, need develop

    • fio.staking
      Changes for CDT not attempted

    • fio.treasury

      • Error: Tried to get a non-existent template argument

      • Implementation update outdated

    • fio.tpid

      • Error: Tried to get a non-existent template argument

      • Implementation update outdated

    • fio.request.obt

      • Error: Tried to get a non-existent template argument

      • Implementation update outdated

    • eosio.msig

    • eosio.wrap

      • Builds, no error

  • FIO Chain Migration

  • FIO 4 SDK Updates

  • FIO 4 Test Framework

    • New metrics for pre/post upgrade scenarios

    • Performance testing

CDT Migration Tasks -

https://fioprotocol.atlassian.net/browse/BD-3070 (In development testing)

Contract Migration Tasks -

  • All contracts link and generate wasm/abi

Core Migration Tasks -

  • net_plugin

  • http_plugin

  • chain_api_plugin/chain_plugin

  • producer_plugin

  • core library

  • config.hpp (cpu limits may possibly not be migrated)

  • history_plugin

  • clio