eosjs
eosjs copied to clipboard
Inconsistent behaviors between eosio::chain::abi_serializer and eosjs-serialize
Version of EOSJS v21.0.3
Describe the bug
eosio::chain::abi_serializer
puts built-in types first, so even if user defines new type with built-in type name, it would be ignored. However, eosjs instantiates built-in types by createInitialTypes()
, but it would be overwritten by types read from abi. It would be better to keep consistency between two serializers.
To Reproduce Steps to reproduce the behavior:
- Define new type with built-in type name in contract ABI like:
"types": [
{
"new_type_name": "bytes",
"type": "checksum256"
}
],
- Send an action including argument with the user-defined new type
-
cleos
: cleos useseosio::chain::abi_serializer
, sobytes
still follows the serialization rule of built-in typebytes
. -
eosjs
: eosjs overwrites built-in type serializer with user-defined one, so it would be serialized likechecksum256
here.