Open axic opened 6 years ago
I don't like the idea of trying to identify which useGas were inserted by the metering contract and which were not. Would only really be ok with it if there was no way for the user to write useGas
, but I don't think we want that either.
I think better solutions could be:
useGas
instead of a concrete number. Eg, call useGas Wlow
, where Wlow
is represented with 0x03
or the like. The useGas
function then is just a lookup table like Wlow => 3
and the like. Allows us to update the cost of operators without having to re-meter existing contracts, and we get to store the metered version. The problem here is that we need to pass in a list of arguments to useGas
instead of a single argument now, because we want to meter many operators at once. We could just provide 10 useGas
functions, accepting up to 10 gas enum elements. I believe that the function reference passing proposals for the WASM spec would allow us to pass a single function reference instead.
This has been suggested by @poemm as a possible solution for updating gas costs in deployed contracts.
The current proposal is to meter contracts at deployment time which would lock in gas costs from that point on. In this method any "metering statements" (aka.
call $useGas
) does not receive any special handling and is just treated as a regular call.With re-metering we could have two options: 1) update the constants in previously inserted metering statements (with the special rule of handling the first statement in each block) 2) always remove metering statements prior to metering