| CVID |
CID |
CCID |
Date Created |
Date Edited |
| 18fcc7f9b52dc1cf2cb8b4417c48fb06d95227e83314b32bb7346c69c6ead3f3⧉ |
61e6ae9de7754ff7161d4a25498c21271f931b6a16af505a2c4e9e9b44909e28⧉ |
00c7a994c9cf57b97071de64bbd5daad2edfb19b71d644142473f0852076b155⧉ |
07 Apr 2026 20:26:54 GMT |
07 Apr 2026 21:45:28 GMT |
magic_number = "30032026" ;
bit = 0 | 1 ;
byte = 8 * bit ;
ccid = 32 * byte ; (* cumulative content id, it's references flattened
and content hash re-hashed by bromberg *)
cid = 32 * byte ; (* content id hashed by bromberg, 256 bits *)
sha256cid = 32 * byte ; (* redundancy *)
ids = ccid , cid , sha256cid ;
unit_hash = 32 * byte ; (* 256 bits *)
idx1 = 1 * byte ; idx2 = 2 * byte ;
idx4 = 4 * byte ; idx8 = 8 * byte ;
index = idx1 | idx2 | idx4 | idx8 ;
slice = index , index ;
(* start and end, both inclusive, end >= start, each index uses smallest available byterange,
in the dtob this just represented as a list of two elements *)
transclusion = 7 * unit_hash ;
(* def cumulative, prefix, inclusion, suffix; ref cumulative, prefix, suffix *)
microlink = 2 * ( ids , slice ) ;
(* def and ref slice and ids *)
macrolink = ids , slice , ids ;
(* def ids and slice, and ref ids *)
length = index ; def_start = index ; ref_start = index ;
(* paleolinks *)
paleotransclusions = { transclusion , length , def_start , ref_start } ;
paleomicrolinks = { microlink } ;
paleomacrolinks = { macrolink } ;
(* autolinks *)
autotransclusion = 6 * unit_hash ; (* PISPIS *)
autolink = 2 * slice ; (* defslice and refslice *)
autotransclusions = { autotransclusion , length , def_start , ref_start } ;
autolinks = { autolink } ;
(* neolinks *)
neotransclusions = { transclusion , length , def_start , ref_start } ;
neomicrolinks = { microlink } ;
neomacrolinks = { macrolink } ;
cvid = 32 * byte ; (* cross-versioning random uid *)
timestamp = 64 * bit ; (* unix epoch time *)
ots_proof = ? raw bytes ? ;
non_essential_metadata = [ cvid ] , [ timestamp ] , [ ots_proof ] ; (* can include other stuff *)
references = [ paleotransclusions ] , [ paleomicrolinks ] , [ paleomacrolinks ] , [ autotransclusions ] , [ autolinks ] ; (* required, may be empty *)
content = ? arbitrary bytestream ? ; (* max length: 2^61 bytes minus one bit *)
neolinks = [ neotransclusions ] , [ neomicrolinks ] , [ neomacrolinks ] ; (* populated by server *)
xanadoc = magic_number , ids , [ non_essential_metadata ] , references , content , [ neolinks ] ;