Skip to content

Perspectivize the OOB module #255

@OlivierBBB

Description

@OlivierBBB

Main point

The OOB module has 56 columns of which 32 are exclusive binary flags. We could reduce this significantly by perspectivizing the module. We would add

MACRO
SCENARIO          // potentially several of them
COMPUTATION

columns, and within SCENARIO we could have for instance, the following columns

scenario/OPC                  // for EVM opcodes
scenario/PRC                  // for non BLS precompile
scenario/BLS                  // for BLS precompile
scenario/BIT_k, k = 1 .. m    // for some small m

or some other, more efficient splitting.

Example specification

This could drop the module down to ~ 18 columns

// 7 shared columns
IOMF
MACRO
SCENARIO_FAMILY_A
SCENARIO_FAMILY_B
SCENARIO_FAMILY_C
SCENARIO_FAMILY_D
COMPUTATION

// 11 columns
macro/DATA[10]
macro/OOB_INST

// 8 scenario/ columns
scenario/BIT_k[8]
// which multiplexes, depending on the SCENARIO_FAMILY, to one of
// IS_JUMP
// IS_JUMPI
// IS_RDC
// IS_CDL
// IS_XCALL
// IS_CALL
// IS_XCREATE
// IS_CREATE
// IS_SSTORE
// IS_DEPLOYMENT
// IS_ECRECOVER
// IS_SHA2
// IS_RIPEMD
// IS_IDENTITY
// IS_ECADD
// IS_ECMUL
// IS_ECPAIRING
// IS_BLAKE2F_CDS
// IS_BLAKE2F_PARAMS
// IS_MODEXP_CDS
// IS_MODEXP_XBS
// IS_MODEXP_LEAD
// IS_MODEXP_PRICING
// IS_MODEXP_EXTRACT
// IS_POINT_EVALUATION
// IS_BLS_G1_ADD
// IS_BLS_G1_MSM
// IS_BLS_G2_ADD
// IS_BLS_G2_MSM
// IS_BLS_PAIRING_CHECK
// IS_BLS_MAP_FP_TO_G1
// IS_BLS_MAP_FP2_TO_G2

// 10 computation columns
computation/WCP_FLAG
computation/ADD_FLAG
computation/MOD_FLAG
computation/BLS_REF_TABLE_FLAG
computation/OUTGOING_INST
computation/OUTGOING_DATA[4]
computation/OUTGOING_RES_LO

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions