This repository has been archived by the owner on Aug 2, 2022. It is now read-only.
Allow struct serialization from array input #806
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Change Description
eosio::chain::abi_serializer
in libchain allows serialization of struct from array, but eosjs only serializes object to struct.When sending a transaction with transaction_extensions, the abi of transaction in eosjs defines transaction_extensions as
extension[]
, and extension is a struct with two fields,type
(uint16) anddata
(bytes). However, during callingtransact()
, it calls/v1/chain/get_required_keys
RPC, but in libchain, transaction_extensions is defined bystd::vector<std::pair<uint16_t,vector<char>>>
, so get_required_keys will be aborted, because libchain will fail to convert the parameters in json toeosio::chain::transaction
.At this time, there is no way to send a transaction with transaction extensions by
transact()
of eosjs-api. This PR will provide a way to serialize structs from array in the same manner aseosio::chain::abi_serializer
and user experience of cleos. Moreover, user can send a transaction with transaction_extensions by setting them in array like:API Changes
User will be able to pass action parameters by array instead of object.
Documentation Additions
User can pass an array to
transact()
of eosjs-api.