Xanadex


Xanadoc

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 ] ;