The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Changed valueToInt, valueToUint, valueToFload function in abiencode.go for compatible with double quoted string to number.
- Changed
NewAssetFromString
validation to allow parsing of empty assets - Added
action_trace_v1
field - Added
AsTime
helper functions to convertTimePoint
andTimePointSec
totime.Time
- Added support for decoding action results
- Raised the minimum supporting Go version 1.13 -> 1.17
- Added unit tests of REST API
- Added
earliest_available_block_num
,fork_db_head_block_num
,fork_db_head_block_id
,last_irreversible_block_time
,total_cpu_weight
,total_net_weight
, &server_full_version_string
fields inInfoResp
- Added
head_block_num
,head_block_time
,rex_info
,subjective_cpu_bill_limit
, &eosio_any_linked_actions
fields inAccountResp
- Added the new type
RexInfo
,LinkedAction
- Added
linked_actions
inPermission
- Added
context_free_data
&transaction
fields inPackedTransaction
AccountResp.last_code_update
&AccountResp.created
inAccountResp
are nowBlockTimestamp
, were previouslyJSONTime
-
Improved the error handling when decoding table rows with variant types.
-
Fixed decoding of table rows with variant types.
-
Fixed serialization of
map[K]V
when usingeos.MarshalBinary
so that ordering in which the keys are serialized is in lexicographical order, just like JSON serialization. -
Updated to latest version of
github.com/streamingfast/logging
library. -
Fix NewPrivateKey correctly working with PVT_K1 keys (#177)
-
Fixed ABI encoder for
SymbolCode
type.
0.10.2 (January 19th, 2022)
- Changed ABI encoder
varuint32
to re-use existing encoder.
- Fixed ABI encoder
varint32
types.
0.10.1 (January 19th, 2022)
- Renamed
BlockTimestampFormat
toblockTimestampFormat
making it private.
-
Add EOSIO Testnet symbol (#165)
-
Update ActionResp (#166)
-
Updated to latest version of
github.com/streamingfast/logging
library. -
eos.MarshalBinary
will now refuses to serialize amap[K]V
ifK
's type is not comparable.
-
Fixed serialization of
map[K]V
types by sorting the keys to have a stable order. -
Bugfix StringToSymbol (44b6fbd)
-
Fixed built-in examples (pointing by default to EOS Nation API nodes) (36114bd)
0.10 (October 16th, 2021)
-
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()
. -
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: Renamed
ConsoleLog
toSafeString
for better re-usability in the codebase.
- Proper handling for float precision in binary encoding/decoding.
- Added SHiP binary structures
- Added capabilities to read EOSIO Snapshot format (early implementation)
- Added architecture to support binary decoding/encoding Variant objects, see []
- 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. - Normalized all logging to use
streamingfast/logging
and its trace enabled support.
- All errors are wrapped using
fmt.Errorf("...: %w", ..., err)
which is standard now in Go.
-
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
AccountRAMDelta
toAccountDelta
which is the correct name in EOSIO. - Renamed
JSONFloat64
toFloat64
, to follow the same convention that was changed years ago withUint64
, etc. Type alias left for backwards compatibility.