scilla icon indicating copy to clipboard operation
scilla copied to clipboard

Remote read of contract parameters

Open jjcnn opened this issue 4 years ago • 3 comments

We currently only support remote reads of the mutable state of a contract, but not of the immutable state (the contract parameters).

To support this we need the following:

  • A syntax for contract parameters in address types. Contract parameters may have the same name as a field, so we need to be able to distinguish syntactically between a remote field and a remote contract parameter. One idea is ByStr20 with contract (x : Uint128) ... end.
  • A syntax for remote reads of contract parameters. One idea is x <-& c.(x).
  • On the C++ side, a way to fetch the value of a contract parameter. One suggestion is that we add contract parameters to the levelDB database with a suitable prefix (e.g., _cparam_<parameter name>), so that we can fetch them in the same way as we do for mutable fields, but that requires a database migration.

jjcnn avatar Jul 22 '21 08:07 jjcnn

Resolving this issue would simplify contract auditing. As of now contract writers create read-only contract fields initialized with immutable contract parameters to be able to read those. And the dead code detector reports these fields in warning which can be distracting from actual errors when the contract author forgot to put in code that updates a field.

anton-trunov avatar Jun 17 '22 14:06 anton-trunov

This has been asked to be implemented by some users. CC @chetan-zilliqa

anton-trunov avatar Aug 18 '22 13:08 anton-trunov

Moving this to v0.14. It's an important issue, but because of the integration with the state database we won't have time to do it in time for v0.13.

jjcnn avatar Sep 16 '22 15:09 jjcnn