We can follow the same pattern as in the new key registry to read multiple values in a multi-field SharedImmutable state variable provided we also store the hash of said values, and then privately a) perform a historical read of the hash and b) prove that the values are the preimage of the hash. The values would be fetched simply by calling oracles that read public state - no special infrastructure is needed.
This will likely require performing arithmetic over generic numeric params, since we'll need to be able to serialize a struct of serializable items (in order to serialize the struct prior to hashing).
We can follow the same pattern as in the new key registry to read multiple values in a multi-field SharedImmutable state variable provided we also store the hash of said values, and then privately a) perform a historical read of the hash and b) prove that the values are the preimage of the hash. The values would be fetched simply by calling oracles that read public state - no special infrastructure is needed.
This will likely require performing arithmetic over generic numeric params, since we'll need to be able to serialize a struct of serializable items (in order to serialize the struct prior to hashing).