RON (Replicated Object Notation)
Created on 2021-02-03T22:30:31-06:00
Inheritance: original timestamp inherits from a particular type of object. future timestamps inherit from the previous timestamp they apply against.
Timestamp: each time stamp represents a particular set of changes at that time.
Ops: operators signal some kind of change to the data structure.
UUID
RON uses custom UUIDs.
Base64 encoding.
128-bit; formed as two 64-bit words with a separator.
First half is "value" block and last half is "origin" block.
Tailing zeroes in each block can be omitted (PINE0000$CONE000 -> PINE$CONE)
value: vvvv.... ........ ........ ........ ........ ........ ........ ........ origin: 00VV.... ........ ........ ........ ........ ........ ........ ........
Flag bits
$ for 00: human readable names, % for 01: numbers and hashes, + for 10: events (Lamport timestamp, and origin), - for 11: derived events (same as event).
Varieties for names $
0000: transcendental/hardcoded name (lww, rga) or a scoped name (myvar$gritzko), 0001: ISBN (1/978$1400075997, 0011: EAN-13 bar code (3/4006381$333931, 0100: SI units (4/m, 4/kg, 0101: zip codes (5/2628CD$NL, 5/620078$RU, 1010: IATA airport code (A/LED, 1011: ticker name (B/GOOG$NASDAQ, 1100: ISO 4217 currency code (C/USD, C/GBP, 1101: short DNS name (D/google$com, 1110: E.164 intl phone num (E/7999$5631415, 1111: ISO 3166 country code (F/RU, F/FRA...).
Varieties for versions %
0000..0011: Decimal index (up to 9999999999%, also 2D indices 4%5), 0100: SHA-2, plain chunk hash, first 120 bits, 0101: SHA-3, plain chunk hash, 0110: SHA-2 based RFC 7574 Merkle hash, 0111: SHA-3 based RFC 7574 Merkle hash, 1000..1011: Random number (A/k3R9w_2F8w%Le~6dDScsw), 1100..1111: Crypto id, public key fingerprint.
Varieties in timestamps
00__: Base64 calendar (MMDHmSsnn), 01__: Logical (40000000001), 10__: Epoch (RFC 4122 epoch, 100ns since 1582),
Varieties in origins
__00: trie-forked, __01: crypto-forked, __10: record-forked, __11: application-specific.