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 typekey_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 attemptedfio.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
See patch https://github.com/EOSIO/eosio.contracts/releases/tag/v1.8.3-inline-msig-patch2
Builds, no error
eosio.wrap
Builds, no error
FIO Chain Migration
libraries/chain
Migrate/Troubleshoot issues w/ intrinsics and wasm_interface
eosio_assert_message_code
send_response
get_account_ram_usage
Decide on future plugin support
Fate of multiple push_transaction endpoints
Will custom getters be replaced with another api [Simplify Development/Deployment of Read only Chain API endpoints]
Code portability for future releases
Release FIO 4 under separate Core/API releases
FIO CDT no longer a requirement to install FIO Core and API
FIO History
Release with only state_history or 3rd party?
[Simplify Development/Deployment of Read only Chain API endpoints]
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