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 failedNote: additionally typecheck and run script don't report an error, making the contract above seem usable.