This repository was 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_serializerin 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_keysRPC, 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_serializerand 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.