The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Greatly improved performance of
NameToString
(~230%
) method. TimePoint
will decode with0
nanoseconds, when thefitNodeos
flag is set on the ABI.- Ability to decode a
int128
anduint128
in decimal format whenfitNodeos
flag is set on the ABI - Ability to decode nested
arrays
in ABI decoder. - Added
BlockState.Header
field of typeSignedBlockHeader
that was previously missing from the struct definition. - Added
BlockState.AdditionalSignatures
field of type[]ecc.Signature
that was previously missing from the struct definition. - Added
ActionTrace.ContextFree
field of typebool
that was previously missing from the struct definition.
-
Optional encoding of primitive types.
A struct with a non-pointer type tagged with
eos:"optional"
is now properly encoded at the binary level. Important that means that for non-pointer type, when the value of the type is the "emtpy" value according to Golang rules, it will be written as not-present at the binary level. If it's something that you do want want, use a pointer to a primitive type. It's actually a good habit to use a pointer type for "optional" element anyway, to increase awarness. -
Fix json tags for delegatebw action data.
-
Unpacking binary
Except
now correctly works. -
Unpacking binary
Action
andActionTrace
now correctly works. -
Unpacking binary
TransactionTrace
now correctly works. -
Unpacking binary
TransactionReceipt
type will now correctly set the innerTransactionWithID.ID
field correctly. -
Unpacking binary
BlockState
now correctly works but is restricted to EOSIO 2.0.x version.
- Renamed
JSONFloat64
toFloat64
, to follow the same convention that was changed years ago withUint64
, etc. Type alias left for backwards compatibility.
-
BREAKING: Fixed binary unpacking of
BlockState
,TransactionTrace
,SignedTransaction
,Action
(and some inner types). This required changing a few struct fields to better fit with EOSIO definition, here the full list:MerkleRoot.ActiveNodes
is now a[]Checksum256
, was previously[]string
MerkleRoot.NodeCount
is now auint64
, was previouslyuint32
- Type
EOSNameOrUint32
has been removed and replaced byPairAccountNameBlockNum
which is strictly typed now. BlockState.ProducerToLastProduced
is now[]PairAccountNameBlockNum
, was previously[][2]EOSNameOrUint32
.BlockState.ProducerToLastImpliedIRB
is now[]PairAccountNameBlockNum
, was previously[][2]EOSNameOrUint32
.BlockState.BlockID
is now aChecksum256
, was previouslystring
.BlockState.ActivatedProtocolFeatures
is now a*ProtocolFeatureActivationSet
, was previouslymap[string][]HexBytes
.BlockState.ConfirmCount
is now a[]uint8
, was previously[]uint32
.PendingSchedule.ScheduleHash
is now aChecksum256
, was previouslyHexBytes
.ActionTraceReceipt.ActionDigest
is now aChecksum256
, was previouslystring
.ActionTraceReceipt.CodeSequence
is now aVaruint32
, was previouslyUint64
.ActionTraceReceipt.ABISequence
is now aVaruint32
, was previouslyUint64
.ActionTrace.ActionOrdinal
is now aVaruint32
, was previouslyuint32
.ActionTrace.CreatorActionOrdinal
is now aVaruint32
, was previouslyuint32
.ActionTrace.ClosestUnnotifiedAncestorActionOrdinal
is now aVaruint32
, was previouslyuint32
.Except.Code
is now aInt64
, was previouslyint
.ExceptLogContext.Level
is now aExceptLogLevel
, was previouslystring
.ExceptLogContext.Line
is now auint64
, was previouslyint
.
Note While those are flagged as breaking change to augment the visibility, they are really bug fixes to fit with the behavior of
nodeos
directly. -
BREAKING: The decoding for ABI
variant
was not returning the correctjson
representation. Now ABIvariant
is returned as a two elements array, the first element being thevariant
type name as astring
and the second the actual value as JSON. For example, assuming avariant
type defined asgame_type: ["string", "uint32"]
, and afield
of typegame_type
, before, the JSON serialization would have looked like{"field":"some_string"}
or{"field":100}
while after the change, it will get serialized to the correct form{"field":["string", "some_string"]}
or{"field":["uint32", 100]}
.Note While this is flagged as breaking change to augment the visibility, this is really a bug fix to fit with the behavior of
nodeos
directly. -
BREAKING: The serialization for
ExtendedAsset
was aligned with theeos
codebase. Beforehand, it would serialize the field name"Contract"
with a capitalC
, and theAsset
field as"asset"
where it should have been"quantity"
. -
BREAKING: We started adding an initial
context.Context
to all interruptible functions. All method performing an HTTP call have the new parameter as well as a bunch of other method. We cannot list all of them. If the caller already have acontext.Context
value, pass it to the function that now require one. Otherwise, simply passcontext.Background()
.