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
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)
https://fioprotocol.atlassian.net/browse/BD-2147
Migration of intrinsics, wasm interfaces
rewrite or updates of all fio contracts (4 weeks)
Updates to fio.system using newest eosio.system contract compatbile with CDT 1.6.3
EOSIO msig::exec by inline action released! https://github.com/EOSIO/eosio.contracts/releases/tag/v1.8.3-inline-msig-patch2
https://fioprotocol.atlassian.net/browse/BD-2166
https://fioprotocol.atlassian.net/browse/BD-2170
Other/Currently undefined (~2 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
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)
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 testingfio.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