Protocol buffers for functional programming
(or, for rust devs, functional-style serde).
Strict encoding is a formal notation and implementation of a serialization for generalized algebraic data types (GADT).
Strict encoding is both a language for defining GADT and libraries for their serialization. It is:
- schema-based (with the schema being strict encoding notation),
- semantic, i.e. defines types not just as they are layed out in memory, but also depending on their meaning,
- deterministic, i.e. produces the same result for a given type,
- portabile, i.e. can run on ahy hardware architecture and OS, including low-performant embedded systems,
- confined, i.e. provides guarantees and static analysis on a maximum size of the typed data,
- formally verifiabile.
Strict encoding is WIP. Currently it is used by a number of projects including RGB smart contracts, Farcaster CypherNet and others.
In this organization we plan to provide:
Whitepaper |
Yellowpaper |
Compiler |
Disassembler |
Standard type library (STL) |
Utilities
Language-specific libs:
Rust |
Swift |
Kotlin |
TypeScript