FIO Upgrade/Migration to EOSIO 2.0.x

Tracks the upgrade of FIO to the latest codebase for EOSIO 2.0.x. Another important objective of this migration is to be able to support FIO code in a drop-in manner for upgrades to later versions of EOSIO codebase.

Upgrade branch: https://github.com/fioprotocol/fio/tree/apollo/develop

Migration steps (high-level)

https://fioprotocol.atlassian.net/browse/BD-2058

  • https://fioprotocol.atlassian.net/browse/BD-2091

  • Preliminary research (2 weeks):

    • Overview of EOSIO 2.0.x codebase group session(2/3 hours) (Complete)

  • Support of FIO contracts in new environment (14 weeks)

  • Successful launch of fio.devtools startup script plus testing of tools (1 week)

    • Must test replay and resync of live blockchain after upgrade

  • Research regarding

    • Risk analysis (@Adam Androulidakis )

    • Definition of feature and technical benefits

    • @Todd G

    • Migration of chain_plugin to fio_plugin group brainstorm (2 hours)

    • Duplication of http_plugin for fio error code as fio_http_plugin group brainstorm(2 hours)

    • History plugin rollout for FIO 2.x (2 hours)


      • Also see issue here

    • Security issues from block.one: intrinsics

    • EOSIO msig contract update

    • Research viability of implementing FIO code in plugin vs in smart contracts

  • Code portability development (~1 month)

  • Successful launch of fio.devtools startup script plus testing of tools(1 week)

  • Core tests (Typescript test framework) ( 1 week)

  • API testing on Devnet (SDKs, web platforms) (~1 month, should overlap portability development))

    Notes:
    These changes need verification and testing

  • fio.common.hpp line 385 verify return from ripemd is correct

  • send_response is now wrapped in fio.common.hpp

  • now() is a call to current_time_point().sec_since_epoch() defined in fio.common.hpp

    • current_time is now defined in fio.common.hpp for (uint64_t)current_time_point().time_since_epoch().count(). This replaced use of current_time in native eosio.wrap.cpp