Hi Graydon,
The proposal makes a lot of sense to me. It's simple and the permission scheme is easy to understand.
func $contract_data_put (param $key i64) (param $val i64) (result i64)
func $contract_data_del (param $key i64) (result i64)
In the _put, _del host functions are the results a SCV_STATIC with value SCS_VOID, or some other type/value?
/// Traps if ... there is no such ledger entry.
func $contract_data_get (param $key i64) (result i64)
This is another situation where the contract SDK may end up calling _has before calling _get so that it can offer up an API that encourages developers to handle error conditions. This is another situation where the resulting WASM might benefit from introducing a None type or bit into SCVal so that we can reduce the number of host fn calls by one.
Each write is visible immediately within the issuing transaction, but not to any other transaction, until the writing transaction commits
Are writes also visible if re-entry occurs via a cross-contract call?
Thanks,
Leigh