eosjs icon indicating copy to clipboard operation
eosjs copied to clipboard

Inconsistent behaviors between eosio::chain::abi_serializer and eosjs-serialize

Open conr2d opened this issue 3 years ago • 0 comments

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:

  1. Define new type with built-in type name in contract ABI like:
  "types": [
    {
      "new_type_name": "bytes",
      "type": "checksum256"
    }
  ],
  1. Send an action including argument with the user-defined new type
  • cleos: cleos uses eosio::chain::abi_serializer, so bytes still follows the serialization rule of built-in type bytes.
  • eosjs: eosjs overwrites built-in type serializer with user-defined one, so it would be serialized like checksum256 here.

conr2d avatar Jan 18 '21 13:01 conr2d