CREATE_CONTRACT fails when the storage is created with EMPTY_BIG_MAP
Environment (Mainnet, test network, build from source, ...)
tezos-client
version 8.2
on edo2net
testnet
Summary
CREATE_CONTRACT
called using as storage a big_map
that was just pushed to the stack with EMPTY_BIG_MAP
results in a failure.
Minimal example contract:
parameter unit ;
storage address ;
code { DROP;
EMPTY_BIG_MAP int int;
PUSH mutez 0;
NONE key_hash;
CREATE_CONTRACT
{ parameter unit;
storage (big_map int int);
code { CDR; NIL operation; PAIR } };
NIL operation;
SWAP;
CONS;
PAIR }
Steps to reproduce
originate
the contract above with any address
and make a unit
transfer to its default entrypoint.
Example on the testnet: KT1RK9N1kAj6b44PZuUfTNPSU7hAWDXdWeN8
tezos-client transfer 0 from alice to KT1RK9N1kAj6b44PZuUfTNPSU7hAWDXdWeN8 --entrypoint 'default' --arg 'Unit'
Expected behavior
A transfer to such a contract is successful and an internal operation originates a new contract.
Actual behavior
tezos-client
returns an error:
Storage error:
Cannot initialize defined key 'big_maps/index/12/48/8d/41/ba/69/-2/total_bytes'.
Fatal error:
transfer simulation failed
Note: additionally typecheck
and run script
don't report an error, making the contract above seem usable.