interlockledger / go-iltags Goto Github PK
View Code? Open in Web Editor NEWInterlockLedger's ILTags implementation for Go
License: BSD 3-Clause "New" or "Revised" License
InterlockLedger's ILTags implementation for Go
License: BSD 3-Clause "New" or "Revised" License
ComputeagHeaderSize() does not have unit-tests.
Add the extended implementation of the tag ChainNameBlockRefTag. The ChainNameBlockRefTag is a tag with no fixed ID that contains 2 tags inside, a StringTag with a custom ID that holds the chain name followed by a ILIntTag that holds the block ID.
As an extended tag, it does not enforce fixed IDs to its components.
Add direct serialization/deserialization functions for the TimestapTag. This function will be a shell around SerializeSignedILIntTag() and DeserializeSignedILIntTag().
Create a package with testing utilities. Those utilities may be used by users of the library to implement their own tags.
The function TimestampTagSize()
missing.
Move StableStringMap
from tags.impl
to utils
. However, keep an alias to the type inside tags to keep the libray backward compatible with previous versions.
Add new helper functions that deal with tags that can be optionally null.
Remove the deprecated function ComputeagHeaderSize()
.
Move the implementation of the RawTag
from tags.impl
to tags
.
Add a generic timestamp tag implementation. This tag should represent a timestamp in microseconds since 1970-01-01T00:00:00.000000Z.
The serialization should be identical to the SignedILIntTag
but its implementation must define methods to integrate with the standard time
package.
Add a simple way to version tag payloads. The current suggestion is to format the payload with a version prefix and a way to put the actual payload after that.
ILTagSeralizeWithNull()
is not properly detecting nil pointers when the pointer is typed.
Add the concept of WrappedValueTag. This ILTag extension will define an interface where the tag implementation actually wraps the value it will serialize.
For instance, a ATag that implements the WrappedValueTag interface will have the value A as the wrapped value. On serialization, it will be used as to get the information to serialize. On deserialization, a new instance of this value is created by the deserialization process.
Change error messages to match the Go convention instead of the original Rust port.
Add the support for the IL2 versioned payload scheme. This scheme uses a ILUint16Tag to encode the version instead of the plain uint16 value used by the implementation introduced in the version v0.1.1 of this library.
While the main advantage of the scheme used by VersionedPayload
from this library is its compact size, the scheme defined by IL2 has the advantage to be compatible with an ILTagSequenceTag
.
The idea is to keep both schemes in the library as VersionedPayload
is suitable for raw payloads and the IL2 scheme is perfect for tag sequence payloads.
This enhancement was motivated by a post by @monoman at issue #3 (comment).
Add macro functions to serialize sequences of tags. Those functions will take advantage of the varargs feature of Go.
Update testify to v1.8.1.
Add helper functions to serialize/deserialize implicit tags without instantiate them. It will follow the same idea of the helper functions:
All reserved implicit tags needs to have their own functions.
Rename function ComputeagHeaderSize() to ComputeHeaderSize(). Leave a pointer to the wrong name but marked as deprecated.
Add some helper functions to deal with multiple tags at once. Such as ways to compute the size of a sequence of tags along other functions.
Remove all . imports from the library.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.