Skip to content

Latest commit

 

History

History
35 lines (31 loc) · 1.4 KB

README.md

File metadata and controls

35 lines (31 loc) · 1.4 KB

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