[FIP-46] Development - Spec

Links

 

Project level technical scope analysis

This section reviews the project management milestone checklist, and captures the logic and decision making surrounding the inclusion of checklist items in the deliveries for this FIP

Project checklist used

Dev checklist used

 

Excluded checklist items

item reason for exclusion. details

SDKs out of scope. project impacts nodeos exe only.

 

 

RAM Bumps

RAM Bump is not a consideration of this effort since we are making changes in the FIO Core which pertain only to FIO getters. More specifically we propose changes only to FIO getters that use secondary indexes to produce results.

 

Fee Analysis

FIO fees are not a consideration of this effort since we are making changes in the FIO Core which pertain only to FIO getters.

 

 

Design

Summary of changes to fio and fio.contracts

  • the config.hpp will be enhanced to contain two new max search time settings (one for secondary one for primary indices, primary will maintain the 100ms timeout, the secondary will be increased to 1 second.

  • the chain plugin get_table_rows for primary and secondary keys will be modified to use the new max time settings provided in the config.hpp

Actions and Endpoints

  • none

Structs and ABIs

  • none

Tables

  • none

Risks

  • we propose setting the timeout for FIO secondary indices to become 10X the present setting. this may have un-expected impacts to node performance (NONE have been found yet)

  • it has been mentioned that the WALKTIME in the chain plugin has been put into place to help to protect against denial of service attacks. Analysis of node deployments shows that there is alot of opportunity for node operators to protect against denial of service attacks in the hosting and networking of nodes being operated. It also seems logical that even with the WALKTIME set to its previous values, this does not prohibit denial of service attacks as all that need be done is to increase the number of callers that are calling readers from the client side.

SDK Requirements

  • none

Functional Testing

Design

  • All FIO getters should be regression tested.

    • run regression tests on all feature/function of FIO. (dev testing will run the smoke tests).

  • test domains access with get_fio_domains for an account with 25k domains, a dev testing case is created for this in the fio.test branch.

Performance Testing

Design

  • perf testing is same as functional testing for get_fio_domains with one account owning 25k domains.

    • dev testing was completed for this test case using the file register-domains-one-account-max-load.js

 

Fork Testing plan

  • no fork testing is required.

  • this is not a forking change to the FIO Core.

Rollout/Release plan

  • documentation must be updated on dev hub for the new timeouts for primary and secondary indices.

  • new FIO nodeos version needs to be supplied to the community.

Rollout/Release verification plan

  • verify domain access works as expected.

  • verify test net smoke tests complete without errors on test net.