Specificatio Protocolli qub
qub est protocollum obligationum temporalium cryptographicarum: systema verba ad diem futurum signandi ac postea exacte verificandi quid signatum sit, quis cyclus drand revelationem rexerit, et—si translatio memoriae aut proba tabularii perspicui praesto est—terminum superiorem temporis, sigillo independente firmatum, quo textus cifratus iam commissus erat.
Tria primordia hoc opus efficiunt. drand est fons fortuiti decentralizatus—dies revelationis cryptographice exigitur, non qub benignitate. Memoria durabilis una cum tabulario perspicuo appendendi-solo octetos signatos servat et obligationes fasciculatas memoriae publicae perpetuae ancoris firmat; via T3 pretiosa etiam singulam transactionem memoriae perpetuae scribit. ML-DSA-65 est subscriptio digitalis post-quantum—si auctoritas habilitatur, qub paribus clavium adligatur quarum arcanum numquam ex auctoris machina exit.
Haec primordia coniuncta sententiam efficiunt temporalibus claustris obligatam et manifestam si violetur, optionaliter auctori attribuibilem atque sigillo temporis independente firmabilem—apocham cuius valor crescit dum mundi facultas praeterita fingendi melior fit.
Reliqua huius documenti est specificatio normativa quae implementationibus inter se cohaerentibus requiritur.
Specificatio Protocolli qub
| Campus | Valor |
|---|---|
| Editio documenti | 1.0.0 (protocol-v1.0.0) |
| Protocollum filiforme | 0x01 |
| Involucrum externum | 0x01 |
| Dies effectivus | 2026-09-23 |
| Status | Currens |
| Recognitum usque ad | 2026-09-23 |
Hoc documentum est specificatio normativa protocolli pro systemate obligationum temporalium qub. Definit structuras datorum, regulas seriationis, formulas derivationis, et procedurae verificationis quae implementationibus inter se cohaerentibus requiruntur.
Ambitus: stratum protocolli consulto neutrum est quoad linguam — corpus qub est opacus textus simplex / markdown / octeta pacti, et redditio locali apta est munus spectatoris (applicatio web qub.social, involucrum <qub-embed>, clientes MCP, et cetera).
1. Notatio et Conventiones
| Notatio | Significatio |
|---|---|
u8, u64, i64 |
Integri sine signo / cum signo latitudinis bitorum specificatae |
[u8; N] |
Series octetorum longitudinis fixae N octetorum |
Vec<u8> |
Series octetorum longitudinis variabilis |
Option<T> |
Valor typi T, vel absens |
String |
Textus UTF-8, normalizatus NFC |
| ` | |
SHA3-256(x) |
Spargmen NIST SHA3-256 seriei octetorum x (FIPS 202) |
ceil(x) |
Functio caeli: minimus integer ≥ x |
| CBOR | Concise Binary Object Representation (RFC 8949) |
| big-endian | Octetus maximi momenti primus |
Omnes integri in constructionibus praeimaginis ut series octetorum big-endian latitudinis fixae codificantur (i64 → 8 octeta, u8 → 1 octetum) nisi aliter specificatum est.
Omnia tempora sunt secunda Unix in UTC.
2. Structurae Datorum
2.1 ComposeQub (Status In-Memoria Creatoris)
Non seriatur in CBOR. Non in memoria perpetua conditur. Localis applicationi creatoris.
ComposeQub {
draft_id: [u8; 16], // Random, generated locally
created_at: i64, // Unix seconds UTC
unlock_at: Option<i64>, // Unix seconds UTC; None while composing
visibility: u8, // 0x00 = private; 0x01 = public
content_type: u8, // 0x01 text; 0x03 pact; 0x04 verdict
plaintext: Vec<u8>, // Raw body bytes (UTF-8 for text)
sender_label: Option<String>, // Display name; V2-signed when authorship is enabled
title: Option<String>, // Plaintext countdown title; bound via title_hash
reply_to: Option<[u8; 32]>,// Parent qub_id; V2-signed when authorship is enabled
outcome_at: Option<i64>, // Optional future judgment time; bound to qub_id
status: DraftStatus, // Composing | Sealed | Uploaded | Failed
}
2.2 QubEnvelope (Onus Decifratum)
Seriatum CBOR canonico (§3). Cifratum intra SealedQub. Haec structura integritatem contenti post decifrationem probat.
QubEnvelope {
version: u8, // Protocol major version (0x01 for v1)
qub_id: [u8; 32], // Derived (see §4.1)
content_type: u8, // Content type registry (see §6)
created_at: i64, // Unix seconds UTC
unlock_at: i64, // Unix seconds UTC
outcome_at: Option<i64>, // When reality renders judgment; bound to qub_id
sender_label: Option<String>, // Not in qub_id; V2-signed when authorship is enabled
reply_to: Option<[u8; 32]>,// Parent qub_id; not in qub_id; V2-signed when present
body: Vec<u8>, // UTF-8 text or canonical CBOR pact/verdict body
body_hash: [u8; 32], // SHA3-256(body) (see §4.2)
sig_alg: u8, // Signature algorithm (see §9.2)
author_signature: Option<Vec<u8>>, // Set when sig_alg != 0x00
author_pubkey: Option<Vec<u8>>, // Set when sig_alg != 0x00
cosigner_pubkey: Option<Vec<u8>>, // Set for cosigned pact bilateral agreements
cosigner_signature: Option<Vec<u8>>, // Set for cosigned pact bilateral agreements
}
Linea basilica (qub textuale non subscriptum): version = 0x01, content_type = 0x01, sig_alg = 0x00; campi subscriptionis et consubscriptoris absunt. Alii campi metadatae optionales adesse possunt.
Aliae configurationes v1: content_type = 0x03 (corpus pacti, vide §6.1); sig_alg = 0x01 (ML-DSA-65) cum author_signature et author_pubkey praesentibus (vide §9.3); cosigner_pubkey et cosigner_signature simul praesentes pro pactis consubscriptis (vide §9.7); reply_to ad qub_id qub parentis positum pro qub catenae responsorum (vide §9.3 pro implicationibus ambitus subscriptionis).
2.3 SealedQub (Forma Canonica Filiformis)
Seriatum CBOR canonico (§3). Hoc est artefactum filiforme internum: traditio publica hos octetos nudos conservat, traditio privata autem eos ante conservationem in OuterWrapper involvit (§13).
SealedQub {
version: u8, // Protocol major version (0x01 for v1)
qub_id: [u8; 32], // Same as QubEnvelope.qub_id
visibility: u8, // 0x00 = private/wrapped; 0x01 = public/bare
unlock_at: i64, // Unix seconds UTC
outcome_at: Option<i64>, // Surfaced on the verdict-watch CTA
// before reveal; mirrors QubEnvelope.outcome_at;
// bound to qub_id via the §4.1 preimage.
drand_chain_id: String, // drand chain hash (hex string)
drand_round: u64, // Target drand round number
drand_chain_version: Option<u8>, // W3 — chain-migration version. Absent / 0 = quicknet
// (the only chain today). Lets a future chain swap
// be expressed on the wire without a breaking format
// change. NOT part of the §4.1 qub_id preimage, so its
// addition never alters an existing qub's identity.
tlock_ciphertext: Vec<u8>, // tlock-encrypted QubEnvelope CBOR bytes
recipient_pubkey: Option<[u8; 32]>,// Reserved field; accepted by canonical CBOR
// but not interpreted by the v1 reference viewer
title: Option<String>, // Plaintext title surfaced on the viewer
// countdown before reveal. Bound to qub_id
// via title_hash (§4.1). 1..=100 NFC code
// points, no hostile/control code points.
}
2.4 RevealedQub (Status Applicationis Spectatoris)
Non seriatur in CBOR. Localis applicationi spectatoris. Construitur post decifrationem et verificationem prosperam.
RevealedQub {
qub_id: [u8; 32],
arweave_tx_id: String,
visibility: u8,
content_type: u8,
created_at: i64,
unlock_at: i64,
outcome_at: Option<i64>, // Carried from both wire layers; drives the verdict-watch block
drand_chain_id: String,
drand_round: u64,
sender_label: Option<String>,
title: Option<String>, // Carried forward from SealedQub.title
reply_to: Option<[u8; 32]>,
body: Vec<u8>,
body_hash: [u8; 32],
body_hash_verified: bool,
author_signature: Option<Vec<u8>>,
author_pubkey: Option<Vec<u8>>,
signature_verified: Option<bool>,
cosigner_pubkey: Option<Vec<u8>>,
cosigner_signature: Option<Vec<u8>>,
cosigner_verified: Option<bool>,
}
3. Profilum CBOR Canonicum
Omnis seriatio SealedQub et QubEnvelope huic profilo DEBET conformare. Duae implementationes data eadem structura logica octeta identica DEBENT producere.
3.1 Regulae Codificationis
| Regula | Specificatio |
|---|---|
| Norma | RFC 8949 §4.2.1 (Core Deterministic Encoding Requirements) |
| Ordo clavium mappae | Primum secundum longitudinem octetorum codificatorum ordinatae (breviores ante longiores), deinde lexicographice (octetum per octetum pro codificationibus eiusdem longitudinis) |
| Codificatio integrorum | Forma brevissima: 0–23 in octeto initiali; 24–255 in 2 octetis; 256–65535 in 3 octetis; et cetera. |
| Codificatio longitudinis | Longitudines definitae solae. Nullae series, mappae, octetorum seriei, vel textuum seriei longitudinis indefinitae (informatio addita = 31 vetatur). |
| Etiquetae | Nullae etiquetae CBOR (typus maior 6 vetatur). |
| Punctum fluitans | Nulla puncta fluitantia (typi maiores 7 valores 0xF9–0xFB vetantur). |
| Series textuum | UTF-8 codificati, normalizati NFC (Unicode Normalization Form C). |
| Series octetorum | Octeta cruda. Nulla codificatio base64 in strato CBOR. |
| Claves duplicatae | Reiciantur cum errore. Lectores duplicatas claves mappae tacite accipere NON DEBENT. |
| Claves ignotae | Reiciantur cum errore. Lectores claves mappae extra ordinem clavium canonicum typi tolerare NON DEBENT — duae series octetorum canonicae distinctae numquam ad eundem valorem decodificari debent (encode(decode(x)) == x), et in oneribus subscriptis clavis addita contentum absconditum esset quod ambae subscriptiones obligent. Evolutio schematis per version procedit, numquam per claves additas. |
| Valores simplices | Soli true (0xF5), false (0xF4), et null (0xF6) permittuntur. |
| Campi optionales | Campi optionales absentes ex mappa CBOR omnino omittuntur (non codificantur ut null). Campi optionales praesentes in ordine clavium ordinato includuntur. |
3.2 Ordines Clavium Canonici Verificati
Hi ordines clavium normativi sunt. Implementationes DEBENT claves exacte hoc ordine emittere. Assertiones diagnosticae ordinem in compilationibus non-emissionis verificare OPORTET.
QubEnvelope (versio 0x01, non subscripta, omnes campi optionales absentes):
"body" (5 encoded bytes)
"qub_id" (7 encoded bytes)
"sig_alg" (8 encoded bytes)
"version" (8 encoded bytes)
"reply_to" (9 encoded bytes) ← only if present (reply chains)
"body_hash" (10 encoded bytes)
"unlock_at" (10 encoded bytes)
"created_at" (11 encoded bytes)
"outcome_at" (11 encoded bytes) ← only if present (verdict mechanic)
"content_type" (13 encoded bytes)
"sender_label" (13 encoded bytes) ← only if present
"author_pubkey" (14 encoded bytes) ← only if present
"cosigner_pubkey" (16 encoded bytes) ← only if present (pact cosign)
"author_signature" (17 encoded bytes) ← only if present
"cosigner_signature" (19 encoded bytes) ← only if present (pact cosign)
Derivatio ordinis clavium QubEnvelope: quaeque clavis est series textus CBOR. Longitudo codificata = 1 octetum capitis + longitudo seriei (pro seriebus sub 24 octetis). Primum secundum longitudinem codificatam totalem ordina, deinde lexicographice pro clavibus eiusdem longitudinis.
SealedQub (versio 0x01, publica, sine recipiente):
"title" (6 encoded bytes) ← only if present
"qub_id" (7 encoded bytes)
"version" (8 encoded bytes)
"unlock_at" (10 encoded bytes)
"outcome_at" (11 encoded bytes) ← only if present (verdict mechanic)
"visibility" (11 encoded bytes)
"drand_round" (12 encoded bytes)
"drand_chain_id" (15 encoded bytes)
"recipient_pubkey" (17 encoded bytes) ← only if present
"tlock_ciphertext" (17 encoded bytes)
"drand_chain_version" (20 encoded bytes) ← only if present (W3; absent = quicknet)
PactTerms (corpus pacti, content_type 0x03):
"notes" (6 encoded bytes) ← only if present
"terms" (6 encoded bytes)
"title" (6 encoded bytes)
"party_a" (8 encoded bytes)
"party_b" (8 encoded bytes)
"pact_version" (13 encoded bytes)
PactTerm (linea seriei terms):
"key" (4 encoded bytes)
"value" (6 encoded bytes)
PartyIdentifier (mappa party_a / party_b):
"label" (6 encoded bytes)
"contact" (8 encoded bytes) ← only if present
3.3 Tabula Codificationis Octetorum
| Typus | Codificatio CBOR | Exemplum |
|---|---|---|
| Spargmen SHA3-256 (32 octeta) | 0x58 0x20 + 32 octeta |
body_hash, qub_id |
| Tempora (i64) | Typus maior 0 (positivus) vel 1 (negativus), codificatio brevissima | secunda Unix |
| Versio (u8, valor 1) | 0x01 (octetum singulum) |
|
| Typus contenti (u8, valor 1) | 0x01 (octetum singulum) |
|
| sig_alg (u8, valor 0) | 0x00 (octetum singulum) |
|
| Subscriptio ML-DSA-65 (3,309 octeta) | 0x59 0x0C 0xED + 3,309 octeta |
author_signature, cosigner_signature |
| Clavis publica ML-DSA-65 (1,952 octeta) | 0x59 0x07 0xA0 + 1,952 octeta |
author_pubkey, cosigner_pubkey |
4. Derivationes Normativae
4.1 qub_id
qub_id qub unice identificat et QubEnvelope ad SealedQub alligat. Deterministice ex contento involucri derivatur.
qub_id = SHA3-256(
"QUB_ID_V2" || // domain separator: ASCII bytes [0x51 0x55 0x42 0x5F 0x49 0x44 0x5F 0x56 0x32] (9 bytes) + 0x00 padding (1 byte) = 10 bytes
version || // u8 (1 byte)
content_type || // u8 (1 byte)
created_at || // i64 big-endian (8 bytes)
unlock_at || // i64 big-endian (8 bytes)
outcome_at_or_zero || // i64 big-endian (8 bytes; 0 when outcome_at is absent)
drand_round || // u64 big-endian (8 bytes)
body_hash || // [u8; 32] (32 bytes)
title_hash // [u8; 32] (32 bytes; absent-sentinel = [0u8; 32])
)
// Total preimage: 108 bytes → 32-byte output
Codificatio separatoris dominii: Series "QUB_ID_V2" est 9 octeta ASCII. Singulum octetum farciminis 0x00 adicitur ut 10 octeta ob alignmentum attingantur. Implementationes haec 10 octeta exacta DEBENT adhibere: [0x51, 0x55, 0x42, 0x5F, 0x49, 0x44, 0x5F, 0x56, 0x32, 0x00].
Codificatio outcome_at: Revisio implementationis ante emissionem praeimaginem ex 92 ad 100 octeta extendit ut campum optionalem outcome_at in adligationem includeret. outcome_at absens ut 8 octeta nulla codificatur; validatores protocolli outcome_at <= 0 ubique reiciunt, ita ut haec sentinella cum valore legitimo collidi non possit. Vide §3.2 (forma filiformis) et tasks/verdict-uplift-plan.md intra arborem pro mechanica sententiae quae hunc campum movet.
Codificatio drand_round: Revisio posterior implementationis ante emissionem praeimaginem ex 100 ad 108 octeta extendit ut drand_round (cyclum drand destinatum, §4.3) in adligationem includeret, et separatorem dominii ad QUB_ID_V2 auxit. Hoc cyclum clausurae temporalis in identitatem qub adligat: porta textum cifratum ad cyclum diversum (e.g. iam praeteritum) quam unlock_at ostensum implicat readligare non potest. Procedura reserationis (§8) insuper verificat cyclum in stanza textus cifrati tlock impressum cum unlock_round(unlock_at) congruere, ita ut tempus reserationis ostensum probabiliter sit cyclus qui decifrationem regit.
Proprietates:
- Mutatio cuiusvis campi praeimagine adligati—
version,content_type,created_at,unlock_at,outcome_at,drand_round, octeta crudabody(perbody_hash), auttitle(pertitle_hash)—qub_iddiversum producit. - qub_id ante cifrationem computatur. Et QubEnvelope et SealedQub idem qub_id ferunt. Spectator post decifrationem eos congruere verificat.
qub_idnon pendet exsender_label,reply_to, octetis subscriptionis, aut clavibus publicis subscribendi. In constructione tamen subscripta V2 currenti,sender_labeletreply_to, si subscriptiones adsunt, directe persender_label_hashetreply_to_or_zeroauctoritate confirmantur (§9.3).- Mutatio
titleSealedQub (omnibus aliis fixis) qub_id mutat pertitle_hash. Porta itaque titulum textus simplicis in chronometro inverso ostentum permutare non potest sine identitate qub invalidanda. - Mutatio
outcome_atSealedQub (omnibus aliis fixis) qub_id mutat per praeimaginem. Porta diem sententiae ante revelationem in chronometro inverso ostentum permutare non potest sine identitate qub invalidanda. - Mutatio
drand_round(omnibus aliis fixis) qub_id mutat per praeimaginem. Porta textum cifratum clausurae temporalis ad cyclum diversum sine identitate qub invalidanda readligare non potest; cum verificatione cycli-stanza tempore reserationis (§8) coniuncta,unlock_atostensum est cyclus qui re vera decifrationem regit.
4.2 body_hash
body_hash = SHA3-256(body)
Ubi body est Vec<u8> crudum onus contenti. Pro qub textualibus, hoc est corpus qub UTF-8 codificatum.
4.2.1 title_hash
title_hash = SHA3-256(NFC(title).utf8_bytes) if title is present
title_hash = [0u8; 32] if title is absent
Ubi title est optionalis titulus textus simplicis in chronometro spectatoris ante revelationem ostensus (vide §3.2). Normalizatio NFC tempore spargmenti executatur ita ut digestum stabile sit per sequentias punctorum codicis visualiter aequivalentes. Sentinella omnium nullorum casui absenti reservatur; series vacua in confinio CBOR canonico ut codificatio non-canonica "absentis" reicitur (codificatio canonica campum omnino omittit).
4.3 Mappa Cycli-Reserationis
drand_round = floor((unlock_at - chain_genesis_time) / chain_period_seconds) + 1
| Parameter | Fons | Exemplum |
|---|---|---|
unlock_at |
Secunda Unix UTC ab usuario electa | 1735689600 (2025-01-01 00:00:00 UTC) |
chain_genesis_time |
informatio catenae drand (genesis_time) |
1595431050 |
chain_period_seconds |
informatio catenae drand (period) |
30 |
Haec est mappa tlock referens (CurrentRound drand). drand cyclum N tempore chain_genesis_time + (N - 1) * chain_period_seconds publicat, itaque formula cyclum apud unlock_at currentem seligit—cyclum cuius subscriptio prima est qua spectator ad unlock_at veniens uti potest.
Proprietas alignmenti (casus usu gravis): cum (unlock_at - chain_genesis_time) exacte per chain_period_seconds dividitur, subscriptio cycli electi exacte apud unlock_at, numquam ante publicatur. Hoc in deployment referente semper valet: tempus geneseos quicknet (1692803367) per periodum 3 secundorum dividitur, et applicationes referentes tempora reserationis ad minuta integra figunt. Pro unlock_at non alignato, subscriptio cycli electi minus quam una periodo ante unlock_at publicatur—praecisio temporalis obligationis est una periodus fari.
Mappa legata ante emissionem et tolerantia in reseratione: mappa originalis erat ceil((unlock_at - chain_genesis_time) / chain_period_seconds), quae—in casu alignato supra—cyclum una periodo plena ante unlock_at publicatum seligebat, ut textus cifratus una periodo exacte mature decifrabilis fieret. Mappae exacte +1 differunt cum differentia per periodum dividitur, alioquin congruunt. Quia drand_round in praeimaginem immutabilem qub_id includitur (§4.1), artefacta sub mappa legata signata rursus derivari non possunt; verificatores inspectionem cruciatam cycli in §8 gradu 6a facientes igitur drand_round conservatum aut cyclo derivato aut cyclo derivato minus uno aequalem accipere DEBENT (et cyclum stanzae tlock cyclo conservato exacte aequalem requirere DEBENT). Tolerantia primam subscriptionem regentem ad summum una periodo anticipat. Servitium stationis pacti eandem tolerantiam adhibet cum qub_id pacti in scaena positi rursus derivat: si cyclus mappae currentis qub_id obligatum non reproducit et differentia per periodum dividitur, cum cyclo minus uno iterat, atque pactum finalizatum ad eum cyclum signat quem qub_id re vera obligat—numquam caece ad cyclum recomputatum, quod artefactum perpetuo inderivabile redderet.
Validatio: unlock_at in futuro tempore signandi esse DEBET. unlock_at plus quam 10 annos a created_at distare NON DEBET (ut periculum dependentiae longi-horizontis a drand limitetur; interfacies pro diebus reserationis ultra 2 annos monere OPORTET).
5. Newtypi Formae Filiformis
Newtypi formae filiformis securitatem compilationis temporis contra octeta CBOR cum JSON, textu simplici crudo, vel aliis codificationibus octetorum confundenda praebent.
| Typus | Continet | Productus a | Consumptus a |
|---|---|---|---|
SealedQubCbor |
CBOR canonicum SealedQub | serialize_sealed_qub() |
Artefactum filiforme internum; nudum pro traditione publica aut involutum pro privata conservatur, deinde a spectatore recuperatur |
QubEnvelopeCbor |
CBOR canonicum QubEnvelope | serialize_qub_envelope() |
Ingressum cifrationis tlock, exitum decifrationis tlock |
5.1 Regulae Constructionis
// Production code — only through CBOR serialisers:
let sealed = SealedQubCbor::from_encoded(cbor_bytes);
// There is deliberately NO From<Vec<u8>> implementation.
// You cannot accidentally wrap arbitrary bytes in a wire format type.
// Accessing raw bytes:
let bytes: &[u8] = sealed.as_bytes();
let bytes: Vec<u8> = sealed.into_bytes();
5.2 Validatio in Constructione
from_encoded() OPORTET validare ingressum cum capite mappae CBOR valido incipere. Validatio structuralis plena tempore lectionis fit, non tempore constructionis, ut duplex lectio vitetur.
6. Tabula Typorum Contenti
| Valor | Typus | Magnitudo Maxima Corporis | Notae |
|---|---|---|---|
0x00 |
Reservatum (invalidum) | — | NON adhibendum est |
0x01 |
Textus simplex (UTF-8, Markdown restrictum) | 50 KB pretiosum / 10 KB gratuitum | Vide §10 pro regulis redditionis. Divisio gratuiti / pretiosi a servitio onerationis exigitur; limen durum strati protocolli est 50 KB. |
0x02 |
Reservatum (futurum) | — | Pro typo contenti futuro allocatum; in v1 non validum. Spectatores secundum regulam infra reicere DEBENT. |
0x03 |
Pactum (pactum bilaterale, corpus CBOR) | 100 KB | Corpus est PactTerms CBOR canonicum (§6.1). Consubscriptio per §9.7. |
0x04 |
Sententia (creatoris se ipsum aestimantis, corpus CBOR) | 8 KB | Corpus est VerdictBody CBOR canonicum (§6.2). Solum a verdict intento systemati emittitur. Nexus parentalis in indice Arweave Parent-Tx-Id est, non in corpore. Vide verdict-uplift-plan §3.4. |
Spectatores typos contenti ignotos cum errore claro usuario visibili reicere DEBENT. Spectatores typos ignotos ut textum reddere conari NON DEBENT.
6.1 Corpus Pacti (content_type = 0x03)
Corpus pacti est codificatio CBOR canonica valoris PactTerms:
PactTerms {
pact_version: u8, // 0x01 for structured/v1
title: String, // ≤ 200 bytes, NFC
terms: Vec<PactTerm>, // ≤ 20 rows
party_a: PartyIdentifier, // initiator
party_b: PartyIdentifier, // counter-signer
notes: Option<String>, // ≤ 5,000 bytes, NFC; absent key if none
}
PactTerm { key: String (≤ 100 bytes), value: String (≤ 2,000 bytes) } // NFC
PartyIdentifier{ label: String (≤ 100 bytes), contact: Option<String (≤ 320 bytes)> }
Ordines clavium CBOR canonici pro omnibus tribus mappis in §3.2 dantur. CBOR pacti seriatum totale 100 KB non excedere DEBET (concordat cum §6).
Discriminator schematis. Prima linea in terms pro pacto structured/v1 esse DEBET { key: "pact_schema", value: "structured/v1" }. Lineae sine hoc indice sunt pacta "consuetudinaria" et nullam validationem structuratam vel redditionem schematis consciam recipiunt.
Receptacula agnitionis fixa. Pacta structured/v1 exacte quattuor lineas agnitionis sub his clavibus ferunt:
"initiator_standard_terms"
"initiator_capacity_terms"
"counterparty_standard_terms"
"counterparty_capacity_terms"
value cuiusque est una ex octo seriebus Anglicis fixis per par (role, kind) electis, ubi role ∈ { seller, buyer, provider, client } et kind ∈ { standard, capacity }. Series ipsae sunt data protocolli normativa — utriusque partis subscriptiones ML-DSA-65 ad exacta octeta per body_hash se obligant. NON localizantur; corpus subscriptum linguae neutrum est. Quaevis mutatio verborum versionem schematis novam exigit (structured/v2).
Octo series, earum quaesitio (acknowledgement_for(role, kind)), et ratio cuiusque ab implementatione referente affixae sunt. Implementationes conformes valores agnitionis octetis identicos DEBENT emittere; probationes spargminis-corporis SHA3-256 cum fixurae auratis omnes quattuor combinationes ruolorum tegentes ullam deviationem capiunt.
Ordo ostensionis spectatoris. Series agnitionis phrases continent ut "supra descriptum", quae praesumunt lineas descriptionis / ambitus ante agnitiones reddi. Spectatores seriem terms in ordine CBOR reddere DEBENT; reordinatio semanticam prosae rumpit.
Contactus contrapartis. Cum contact Partis B est inscriptio electronica valida, servitium onerationis qub epistulam invitationis recognitionis / consubscriptionis tempore stationis automatice mittit et consubscriptionem eventualem ad verificationem eiusdem inscriptionis adligat (§9.7). Pacta quorum contactus Partis B abest adhuc consubscribi possunt, sed solum per canalem extra-bandam — servitium petitiones consubscriptionis recusat quae notam verificationis electronicae 15 minutorum congruentem producere non possunt.
6.2 Corpus Sententiae (content_type = 0x04)
Corpus sententiae est codificatio CBOR canonica valoris VerdictBody:
VerdictBody {
verdict_version: u8, // 0x01 for structured/v1
outcome: u8, // 1=Right · 2=Partial · 3=Wrong · 4=Unfalsifiable
reflection: Option<String>, // ≤ 2,000 bytes NFC; "what changed, what did you learn"
evidence_url: Option<String>, // ≤ 2,048 bytes; HTTPS only; absent key when omitted
}
Ordo clavium CBOR canonicus:
"outcome" (8 encoded bytes)
"reflection" (11 encoded bytes) ← only if present
"evidence_url" (13 encoded bytes) ← only if present
"verdict_version" (16 encoded bytes)
CBOR sententiae seriatum totale 8 KB non excedere DEBET (concordat cum linea tabulae supra).
Enumeratio exitus. Octetum filiforme intentui neutrum est; quattuor receptacula Right / Partial / Wrong / Unfalsifiable omne spatium exitus cuiusque intenti sententiam ferentis tegunt. Notae per intentum (e.g. "Praedixi recte" / "Servavi illud" / "Edidi" / "Confirmata" pro Right) sunt res redditionis a parte spectatoris, contra intentum qub parentis resolutae — forma filiformis lingua- et intentu-neutralis manet. Valores extra 1..=4 ad decodificationem reici DEBENT.
Nexus parentalis. qub sententiae referentiam parentalem in corpore suo NON fert. Identitas transactionis Arweave qub parentis ut index Parent-Tx-Id repositionis tempore onerationis emittitur (§7 stratum indicum repositionis). Hoc corpus servat ut declarationem subscriptam autoaestimationis sui contentam; catena auditionis ("recte de quo?") per inquisitionem indicis Arweave constituitur.
Securitas nexus argumenti (normativa). Cum evidence_url adest, validatores (parte compositionis, parte filiformi, margine Operarii) hoc imponere DEBENT:
- Solum HTTPS. Filum cum sequentia octetorum
https://incipere DEBET. Quaevis alia schema —http,ftp,javascript,data,file, etc. — reicitur. - Limen longitudinis. ≤ 2,048 octeta (limen practicum URL navigatoris).
- NFC + inspectio codepoint hostilium. Eadem regula ac
titleetreflection— codepoint bidi-override / latitudinis nullae / indicis tag / BOM / C0 / C1 reiciuntur. Definitio congruit cum Rustcrate::handle::contains_hostile_text_codepointet TSworkers/api/src/utils/unicode.ts::isHostileCodepoint(in eodem gradu serventur). - Nullum spatium, nulli moderatores ASCII. Spatium / DEL / octeta infra-
0x20ubicumque in URL reiciuntur — viam iniectionis\n/\tclaudit quam regula bidi non tegit. - Segmentum hospitis non vacuum. Omnia inter
https://et primum/,?, vel#non vacua esse DEBENT.
Nulla petitio a parte servitoris. Operarius URL procurare, petere, vel praevidere NON DEBET. Protocollum filum servat; redditio a parte spectatoris fit cum rel="nofollow noopener noreferrer" target="_blank" et hospite visibili iuxta textum nexus ostento.
Consideratio. Textus considerationis a creatore scriptae optionalis ("quid mutatum est, quid didicisti"). Eadem validatio NFC + codepoint hostilium ac title. Introitus vacuus / solum spatium tempore constructionis ad absentem decidit.
Versio schematis. v1 solum verdict_version = 0x01 sustinet. Revisiones schematis futurae hoc octetum augent et iuxta novam versionem protocolli per §12 perveniunt.
7. Protocollum Signandi
Sequentia signandi completa. Quisque gradus normativus est.
1. User composes plaintext and metadata in ComposeQub.
2. Validate:
a. body is non-empty.
b. body size ≤ max for content_type and user tier (see §6).
c. unlock_at is in the future.
d. unlock_at ≤ created_at + 10 years.
e. content_type is a known, supported value.
f. visibility is 0x00 (private) or 0x01 (public).
3. Compute body_hash = SHA3-256(body).
4. Set created_at = current Unix seconds UTC.
5. Select drand chain. Load chain_genesis_time and chain_period_seconds, and
compute drand_round = floor((unlock_at - chain_genesis_time) / chain_period_seconds) + 1
(§4.3). (Computed here, before qub_id, because drand_round is bound into the
qub_id preimage—§4.1.)
6. Compute qub_id (see §4.1), folding in drand_round from step 5.
7. Construct QubEnvelope with all fields.
8. Serialise QubEnvelope using canonical CBOR → bytes B.
Assert: serialised output matches canonical profile (§3).
9. Compute C = tlock_encrypt(B, drand_round, drand_chain_public_key).
10. Construct SealedQub with tlock_ciphertext = C and matching qub_id, version,
visibility, unlock_at, drand_chain_id, and drand_round.
11. Serialise SealedQub using canonical CBOR → SealedQubCbor.
12. Select the delivery shape from visibility:
a. Private (0x00): generate K = 32 random bytes and N = 12 random bytes
using a CSPRNG. Compute W = wrap_sealed_qub(SealedQubCbor,
qub_id=qub_id, key=K, nonce=N) per §13. Upload payload = W.
b. Public (0x01): upload payload = bare SealedQubCbor; do not generate K.
13. Display seal-time disclosure. User confirms.
14. Validate upload eligibility via the qub upload service (bot-detection, entitlement, rate limits).
15. Submit the selected upload payload to the qub upload service. For a private
browser seal, the service is byte-blind to the inner SealedQubCbor and never
receives K. The Builder `/api/v1/seal` route is an explicit exception: it
receives plaintext and caller-supplied K in memory, then persists neither.
16. Receive arweave_tx_id from the service. For private delivery, construct
`<origin>/c/<arweave_tx_id>#<base64url(K)>` (or the equivalent short-code
path). For public delivery, omit the fragment. Browsers do not transmit URL
fragments to servers, so K from the browser-seal path is not observed by
qub.social or any storage gateway.
Stratum etiquettarum memoriae (extra-bandam). Servitium onerationis qub modicum consulto numerum etiquettarum transactionum memoriae apud onus onerationis electum apponit. Content-Type=application/octet-stream normative requiritur. Servitium referens insuper tres etiquettas optionales apponit cum creator eas ostentare eligit: Intent (intentio compositionis ex albo permisso comprobata—announcement, thesis, prediction, letter, secret, commitment, proof, aut verdict a systemate emissum), Author (digitus pubkey §9.3 creatoris ut hex minusculus 64-character), et Parent-Tx-Id (ID transactionis memoriae qub parentis pro catenis responsorum, 43-character base64url).
Etiquetta Author est electio per qub: applicatio creatoris referens eam apponit solum cum usuarius explicite attributionem publicam tempore signandi habilitat. Cum repagulum off est—quod est praedefinitum—nulla etiquetta Author scribitur et qub in catena sine attributione est: nihil in memoria perpetua onerationem ad creatoris signum, inscriptionem electronicam, vel alia qub adligat. Cum repagulum on est, digitus Author ad @signum ab creatore electum per catenam attestationis §9.5 resolvitur. Relationes catenae responsorum et Intent non-identificantes sunt. Pro traditione privata, involucrum externum (§13) artefactum internum SealedQub agnoscibile cifrat, ut sola involucrorum conservatorum collectio una cum subscriptionibus drand publicis ad corpus sine K recuperandum non sufficiat; etiquettae memoriae tamen metadata consulto publica manent.
Servitium referens consulto NON apponit etiquettas App-Name, App-Version, vel Type: quivis talis filtrum unius valoris totum corpus qub ad interrogationem GraphQL redderet, quod inconsistens est cum ambitu confidentialitatis corporis-soli involucri.
Verificator conformis NON DEBET ab ulla etiquetta memoriae dependere pro verificatione tertiae partis §11; spargmen corporis / qub_id / subscriptio se ad CBOR internum solum obligant, numquam ad complexum etiquettarum.
8. Protocollum Reserationis
Sequentia reserationis completa. Quisque gradus normativus est.
1. Viewer opens delivery URL. Extract arweave_tx_id from the path and retain
the optional URL fragment. Do not assume a missing fragment is an error:
public/bare delivery intentionally has no K.
2. Check denylist. If tx_id is denylisted → display block message. Stop.
3. Fetch the stored bytes (with multi-gateway fallback).
3a. Resolve the delivery shape structurally:
a. If the bytes parse as OuterWrapper, require a well-formed 32-byte K in
the URL fragment, require wrapper version 0x01, and unwrap per §13.
Any missing/malformed K or AEAD failure is a terminal error.
b. Otherwise require the bytes to parse as bare SealedQubCbor; no K is
required. If neither shape parses, report an integrity error.
4. Parse SealedQubCbor → SealedQub.
5. Validate: SealedQub.version is known (0x01), visibility is known, and the
delivery shape matches it (wrapped = 0x00 private; bare = 0x01 public).
Reject any mismatch or unknown value.
6. If current time < SealedQub.unlock_at → display countdown. Poll or wait.
6a. Round-binding check. Recompute expected_round from
SealedQub.unlock_at per §4.3. Reject unless SealedQub.drand_round ==
expected_round OR SealedQub.drand_round == expected_round - 1 (the
legacy pre-release mapping—see §4.3), AND the round baked into the tlock
ciphertext stanza (read via the age/tlock header, no signature required)
== SealedQub.drand_round exactly. The stanza round is the one that
actually gates decryption; without this check a malicious creator could
bind the ciphertext to an already-past round while displaying a future
countdown, so anyone reading the stored bytes could decrypt before
unlock_at. Implementations with no chain identity (test mocks) skip this
check.
7. Once current time ≥ SealedQub.unlock_at:
a. Fetch drand round signature for SealedQub.drand_round from drand network.
b. Compute B = tlock_decrypt(SealedQub.tlock_ciphertext, round_signature).
8. Parse B → QubEnvelope.
9. Validate QubEnvelope.version is known.
10. Verify: SHA3-256(QubEnvelope.body) == QubEnvelope.body_hash.
Fail → integrity error.
11. Verify: QubEnvelope.qub_id == SealedQub.qub_id.
Fail → integrity error.
12. Verify: QubEnvelope.unlock_at == SealedQub.unlock_at.
Fail → integrity error.
12a. Verify: QubEnvelope.outcome_at == SealedQub.outcome_at (both absent, or
both present and equal). Fail → integrity error.
12b. Content re-derivation. Recompute qub_id per §4.1 from the decrypted
fields — (QubEnvelope.version, content_type, created_at, unlock_at,
outcome_at, SealedQub.drand_round, QubEnvelope.body_hash,
title_hash(SealedQub.title)) — and verify it equals SealedQub.qub_id.
Fail → integrity error. The pairwise checks in steps 10-12a only prove
the two layers agree with EACH OTHER; a forger who rewrites a bound
field consistently on both surfaces (a pre-reveal title swap, or a
post-round body swap with a recomputed body_hash re-encrypted to the
same round under the same qub_id) passes them all. Only re-deriving
the identity from content closes this.
13. Verify: QubEnvelope.content_type is known and renderable.
Known values: 0x01 (text), 0x03 (pact), 0x04 (verdict).
Unknown → display error.
14. If QubEnvelope.sig_alg != 0x00 → verify author signature (see §9.4).
15. If cosigner_pubkey or cosigner_signature present → verify cosigner (see §9.7).
16. Render content using the appropriate renderer (see §10 for text and §6 for pact/verdict).
17. Construct RevealedQub for display.
9. Subscriptio Auctoritatis
9.1 Ratio
Perpetue in memoria perpetua qub conduntur. Subscriptiones auctoritatis indefinite infalsificabiles manere debent, quare v1.0 schema post-quantum ML-DSA-65 (FIPS 204) potius adhibet quam schema classicum cuius securitas intra vitam perpetuam qub degradari possit.
9.2 Tabula Algorithmorum
sig_alg |
Schema | Magnitudo Clavis | Magnitudo Subscriptionis | Status |
|---|---|---|---|---|
0x00 |
Sine subscriptione (non subscriptum) | — | — | Activum |
0x01 |
ML-DSA-65 (FIPS 204) | 1,952 octeta | 3,309 octeta | Activum |
0x02 |
Ed25519 | 32 octeta | 64 octeta | Constans reservata; in protocollo v1 non sustinetur |
Spectatores protocolli v1 quemque valorem extra {0x00, 0x01}, etiam valorem reservatum 0x02, reicere DEBENT. Reservatio usum fortuitum impedit; activatio non est. Activatio mutationem gubernatam in §15 descriptam requirit.
9.3 Constructio Praeimaginis Subscriptae
Duae versiones praeimaginis exstiterunt. Omnes subscriptiones V2 adhibere DEBENT, et verificatores V2 solam accipere DEBENT. Praeimago V1 legata (infra ad memoriam historicam documentata) ut auxilium solum-verificationis per migrationem ad V2 accepta est; illud auxilium abrogatum est, et subscriptio solum-V1 nunc reicitur.
V2 (currens — ab omni nova subscriptione auctoris producta, atque ab utraque subscriptione fluxus stationis / consubscriptionis pacti):
sig_input = SHA3-256(
"QUB_AUTHOR_SIG_V2" || // domain separator (17 bytes)
version || // u8 (1 byte)
qub_id || // [u8; 32] (32 bytes)
body_hash || // [u8; 32] (32 bytes)
unlock_at || // i64 big-endian (8 bytes)
0x00 || // u8 (1 byte): MUST be 0x00 in v1.x
sender_label_hash || // [u8; 32]: SHA3-256(NFC(sender_label)),
// or 32 zero bytes when absent
reply_to_or_zero // [u8; 32]: parent qub_id, or 32 zero
// bytes when absent
)
// Total preimage: 155 bytes → 32-byte hash
signature = Sign(author_secret_key, sig_input)
sender_label_hash eandem conventionem sentinellae-absentiae ac title_hash (§4.2.1) sequitur: 32 octeta nulla non sunt digestum SHA3-256 validum, ita ut "absens" numquam cum capsa praesenti collidere possit. Omnes campi latitudinis fixae sunt, ita ut praeimago sine praefixis longitudinis non ambigua sit.
V1 (legata — ABROGATA; non iam producta neque iam ad verificationem accepta):
sig_input = SHA3-256(
"QUB_AUTHOR_SIG_V1" || // domain separator (17 bytes)
version || // u8 (1 byte)
qub_id || // [u8; 32] (32 bytes)
body_hash || // [u8; 32] (32 bytes)
unlock_at || // i64 big-endian (8 bytes)
0x00 // u8 (1 byte): MUST be 0x00 in v1.0
)
// Total preimage: 91 bytes → 32-byte hash
Praeimago V1 sender_label et reply_to omittebat. Ut auxilium solum-verificationis per migrationem ad V2 accepta est; illud auxilium interim abrogatum est — verificatores praeimaginem V2 solam accipere DEBENT. Definitio hic ad memoriam historicam et ad separatorem dominii infra explicandum retinetur. Subscriptio quae solum contra V1 verificatur ut defectus verificationis tractari DEBET.
Separatores dominii: "QUB_AUTHOR_SIG_V1" / "QUB_AUTHOR_SIG_V2" sunt 17 octeta ASCII singuli ([0x51, 0x55, 0x42, 0x5F, 0x41, 0x55, 0x54, 0x48, 0x4F, 0x52, 0x5F, 0x53, 0x49, 0x47, 0x5F, 0x56, 0x31/0x32]). Nullum farciminis. Separator differens duas constructiones dominio disiungit, ita ut subscriptio super unam praeimaginem numquam ut altera verificari possit.
Octetum org_id_present: octetum post unlock_at sequens esse DEBET 0x00. Implementatio referens hoc ut constantem ORG_ID_PRESENT_INDIVIDUAL = 0x00 in crates/qub-core/src/signing.rs exponit; spectatores sig_input pro verificatione reconstruentes idem octetum emittere DEBENT.
Ambitus subscriptionis — quod tegitur et quod non. sig_input V2 se directe obligat ad version, qub_id, body_hash, unlock_at, sender_label, et reply_to (plus separator dominii fixus et octetum org_id_present). qub_id ipse derivatur ex version, content_type, created_at, unlock_at, outcome_at, drand_round, et body_hash per praeimaginem §4.1, ita ut quaevis mutatio in illis campis qub_id diversum producat et subscriptionem transitive invalidet. Superficies authenticata itaque est:
| Campus | Authenticatus per subscriptionem | Quomodo |
|---|---|---|
version |
✓ | Ingressus directus in sig_input |
qub_id |
✓ | Ingressus directus |
body_hash |
✓ | Ingressus directus |
unlock_at |
✓ | Ingressus directus |
sender_label |
✓ | Ingressus directus per sender_label_hash (praeimago V2 — sola forma accepta) |
reply_to |
✓ | Ingressus directus per reply_to_or_zero (praeimago V2 — sola forma accepta) |
content_type |
✓ | Transitive, per praeimaginem qub_id |
created_at |
✓ | Transitive, per praeimaginem qub_id |
outcome_at |
✓ | Transitive, per praeimaginem qub_id |
drand_round |
✓ | Transitive, per praeimaginem qub_id |
body |
✓ | Transitive, per body_hash = SHA3-256(body) |
author_pubkey |
— (implicitus) | Clavis quae subscriptionem verificavit auctor est, per definitionem |
cosigner_pubkey / cosigner_signature |
— | Independenter subscriptum super eundem sig_input (vide §9.7) |
drand_chain_id, tlock_ciphertext, visibility |
— | Campi SealedQub externi, non intra involucrum — per invariantes structurales suos teguntur (consistentia cycli / catenae) sed non per subscriptionem auctoris. (drand_round nunc transitive per praeimaginem qub_id adligatur — vide supra.) |
Cur V2 sola praeimago accepta est.
- Sub praeimagine V1 abrogata, pars cum accessu scribendi ad octeta condita posset
sender_labelpermutare ("Alice" → "Mallory") autreply_tore-parentare — atque post cyclum re-cifrare — sine subscriptione auctoris invalidanda, quia neuter campus in praeimagine subscripta erat. V2 utrumque tegit, ita ut quaevis mutatio alterutrius campi verificationem ad "fallitur" vertat. Quia verificatores nunc V2 solam accipiunt, haec permutatio pro omni subscriptione clausa est: subscriptio quae neutrum campum adligat (id est, quae solum contra V1 verificatur) prorsus reicitur potius quam ad inferiorem gradum demittitur. author_pubkeyintra involucrum anchora identitatis vera manet — spectatores identitatem ostentatam exauthor_pubkey(per stratum attestationis §9.5) derivare DEBENT potius quamsender_labelfidere.
Implementationes quae sender_label aut reply_to usuariis finalibus ostentant identitatem authenticatam (digitum pubkey, attestationem) ut signum identitatis primarium ostendere DEBENT, non capsam.
9.4 Procedura Verificationis
1. Read sig_alg from QubEnvelope.
2. If sig_alg == 0x00 → unsigned. No verification. Display "unsigned qub."
3. If sig_alg is unknown → reject. Display "unrecognised signature scheme."
4. Extract author_signature and author_pubkey. If either is absent → integrity error.
5. Reconstruct sig_input using fields from QubEnvelope (V2 formula, §9.3).
6. Verify(author_pubkey, sig_input, author_signature). The V2 preimage is the
only accepted form — the legacy V1 fallback is retired (§9.3), so a
signature that does not verify against V2 fails, full stop.
7. If verification succeeds → display "signed by [key fingerprint]."
8. If verification fails → display "signature verification failed."
Verificatio subscriptionis est operatio sumptuosissima (praesertim ML-DSA-65). Post omnes verificationes minoris pretii (spargmen, qub_id, unlock_at) peractas fieri OPORTET.
9.5 Attestationes Identitatis
Attestationes identitatis — mappa author_pubkey ad postulationes identitatis hominibus agnoscibiles ut signum qub, inscriptionem electronicam, signum sociale, vel litteras passkey — sunt augmentum progressivum a parte spectatoris et non requiruntur pro verificatione subscriptionis. Spectatores qui attestationes ad identitatem ostentatam resolvunt praecedentiam DEBENT applicare:
handle > email > social > fingerprint
Defalcum digiti est hex minusculus SHA3-256(author_pubkey); semper disponibile est pro quovis qub subscripto. Spectatores id pro exhibitione abbreviare POSSUNT — spectator referens qub: sequente primis et ultimis quattuor octetis reddit (qub:<8 hex>…<8 hex>).
Verificator conformis quamque verificationem in §9.4 perficere potest sine API qub contingendo, sine ulla rete praeter memoriam perpetuam et drand, et sine ulla quaesitione a parte servitoris. Resolutio attestationis est gradus separatus optimi conatus solum post verificationem subscriptionis prosperam peractus.
9.6 Impactus Magnitudinis
| Ed25519 | ML-DSA-65 | |
|---|---|---|
| Subscriptio | 64 octeta | 3,309 octeta |
| Clavis publica | 32 octeta | 1,952 octeta |
| Totale per qub | 96 octeta | 5,261 octeta |
| Differentia sumptus conservationis (apud ~$5/MB) | ~$0.0005 | ~$0.026 |
Pro qub textuali 500–2,000 octetorum, ML-DSA-65 fere triplicat magnitudinem conditam. Sumptus absolutus negligibilis est.
9.7 Verificatio Consubscriptoris (Pacta Bilateralia)
Pro pactis bilateralibus (content_type = 0x03), secundum stratum subscriptionis probat utramque partem in eosdem terminos consensisse.
Campi involucri:
cosigner_pubkey: Clavis publica ML-DSA-65 contra-subscriptoris (Pars B).cosigner_signature: Subscriptio super eundemsig_inputquam auctor (§9.3).
Utrique campi simul praesentes esse aut utrique absentes DEBENT. Si exacte unus praesens est, spectatores errorem integritatis nuntiare DEBENT.
Procedura verificationis:
1. If cosigner_pubkey absent and cosigner_signature absent → no cosigner. Done.
2. If exactly one is present → integrity error.
3. Verify cosigner_pubkey != author_pubkey (prevent self-cosigning).
Fail → display "cosigner pubkey must differ from author."
4. Reconstruct sig_input using the same formula as §9.3 (V2 only — the
legacy V1 fallback is retired; all pact clients produce V2 signatures).
5. Verify(cosigner_pubkey, sig_input, cosigner_signature).
6. Success → display "co-signed by [cosigner fingerprint]."
7. Failure → display "co-signature verification failed."
Proprietates:
- Consubscriptor
sig_inputidenticum cum auctore subscribit — utraeque partes ad eundemqub_id,body_hash, etunlock_atse obligant (et, sub V2, ad eundemsender_label_hashetreply_to_or_zero). - Ut contra-subscriptor praeimaginem V2 sine accessu ad octeta cruda involucri reconstruere possit, servitium stationis tempore stationis exigit ut
sender_labelinvolucri pactipact_terms.party_a.labelaequet et utreply_toabsit. Utrumque pro omni pacto clientis referentis valet; involucra violantia apud stationem reiciuntur. - Derivatio
qub_id(§4.1) campos consubscriptoris NON includit. Consubscriptorem ad involucrum existens adicerequb_idnon mutat. - Pactum potest auctore solo subscribi (obligatio unilateralis), consubscriptore solo (insolitum), aut utroque (proba bilateralis plena).
Cancellum-electronicae-adligationis (operationale). Cum pactum stationatum contactum electronicum Partis B fert (§6.1), servitium onerationis qub petitionem consubscriptionis recusare DEBET nisi nota verificationis electronicae brevis durationis exsistit utrique id stationis et spargmini-electronicae-normalizatae illius contactus congruens. Nota a /api/v1/auth/verify scribitur cum signum magici nexus staging_id fert et inscriptio verificata SHA-256(normalise_email(party_b.contact)) congruit — ubi normalise_email(addr) casum partis-localis servat et solum partem dominii minuscularizat (per RFC 5321 §2.3.11), et SHA-256 hic est spargmen NIST FIPS 180-4 (distinctum a SHA3-256 in derivationibus §4 adhibito) — et 900 secundis (15 minutis) post emissionem exspirat. Hoc est cancellum operationale anti-impersonationis, NON pars probae qub in catena — verificator tertiae partis §11 retegens solum memoriam perpetuam et drand opus habet, sine ulla quaesitione a parte servitoris. Nota a parte servitoris solum existit et numquam pars corporis subscripti est.
Impactus magnitudinis (ML-DSA-65 auctor + consubscriptor):
| Componens | Magnitudo |
|---|---|
| Subscriptio auctoris | 3,309 octeta |
| Clavis publica auctoris | 1,952 octeta |
| Subscriptio consubscriptoris | 3,309 octeta |
| Clavis publica consubscriptoris | 1,952 octeta |
| Onus cryptographicum totale | 10,522 octeta |
| Differentia sumptus conservationis | ~$0.05 |
10. Redditio et Mundatio Markdown
Haec sectio securitate critica est. Spectator qub textualia (content_type = 0x01) per Markdown subset restrictum reddit.
10.1 Elementa Permissa
- Capita:
#per####(non#####aut######) - Emphasis: bold (
**), italicum (*), strikethrough (~~) - Series: ordinatae (
1.) et non-ordinatae (-,*) - Allegationes (
>) - Codex: spatia inlinea (```) et fenestratae compages (`````)
- Regulae horizontales (
---) - Fractiones lineae (duo spatia extrema vel linea vacua)
- Paragraphi
10.2 Elementa Vetita
| Elementum | Tractatio |
|---|---|
HTML crudum (<div>, <script>, etc.) |
Omnino exsectum. Nihil HTML transit. |
Imagines () |
Exsectae. Syntaxis imaginis ex exitu removetur. |
Nexus ([text](url)) |
URL ut textus simplex visibilis redditur. Non auto-nexa. Non clickabilis sine actione usuarii explicita. |
| Schemata URL periculosa | javascript:, data:, vbscript:, file: — exsecta. |
| Iframes, embeds, obiecta | Exsecta. |
| Entitates HTML | Solum decodificantur in characteres ostensionis si tutae sunt. |
10.3 Implementatio
Implementationes lectorem stricti allowlist adhibere DEBENT, non blocklist. Approchatio commendata:
- Markdown per
pulldown-cmark(vel aequivalentem) legere. - AST ambulare et quemvis nodum non in allowlist (§10.1) demittere.
- Pro nodis nexuum: URL ut textum visibilem emittere, non ut elementum
<a>clickabile. - AST filtratum in repraesentationem intermediam typizatam convertere (e.g., enumeratio
MarkdownNodecum solis variantibus tutis). HTML crudum in hac IR structuraliter inrepresentabile est. - Ex IR typizata ad stratum visus targetis reddere (e.g., componentia visus reactiva, nodos DOM). Nulla concatenatio textus HTML aut
innerHTMLullo loco.
Approchationes blocklist fragiles sunt quia novae extensiones Markdown aut quirka lectoris elementa infiltrata invehere possunt. Approchatio AST-typizata XSS structuraliter impossibilem efficit — nulla variants existit quae HTML arbitrarium ferre possit.
10.4 Limites Magnitudinis et Structurae
- Profunditas maxima capitis redditi:
####(H4).#####et profundiores ut textus bold redduntur. - Nullus limes numero paragraphorum (limites magnitudinis corporis in §6 constrictio sunt).
- Compages codicis fenestratae: nullum illuminatio syntaxis in MVP. Ut textus praeformatus monospace redduntur.
11. Verificatio Tertiae Partis
Quaevis tertia pars quae octetos conservatos tenet (atque K pro qub privato/involuto) artefactum cryptographicum sine cooperatione qub verificare potest. Vindicatio existentiae sigillo temporis independente firmata insuper aut inclusionem transactionis memoriae perpetuae per-qub verificatam aut probam tabularii perspicui §16 verificatam requirit.
1. Obtain the stored bytes. For a private delivery, also obtain K from the
delivery-link fragment.
2. Resolve the delivery shape (§8 step 3a): unwrap OuterWrapper with K, or
accept bare SealedQubCbor. Require shape/visibility agreement.
3. Parse SealedQubCbor → SealedQub; validate protocol version, visibility,
content type, chain identity, and structural bounds.
4. Recompute expected_round from unlock_at (§4.3); require the stored round
(allowing the documented legacy minus-one case) and ciphertext-stanza round
to agree exactly as §8 step 6a specifies.
5. Obtain the drand signature for SealedQub.drand_round and verify its BLS
signature against the pinned chain public key.
6. tlock_decrypt(tlock_ciphertext, round_signature) → QubEnvelope CBOR bytes.
7. Parse → QubEnvelope.
8. Verify SHA3-256(body) == body_hash.
9. Verify envelope/sealed equality for qub_id, unlock_at, and outcome_at.
10. Recompute qub_id from the decrypted fields, sealed drand_round, and title;
require it to equal the carried qub_id (§4.1).
11. If sig_alg != 0x00, verify the V2 author signature (§9.4). If cosigner
fields are present, verify their pairing, key separation, and signature
(§9.7).
12. For an existence-time claim, independently verify either:
a. the permanent-storage transaction's data-to-id binding, owner, block
inclusion, and block timestamp; or
b. a §16 inclusion proof through its pinned anchor and anchor block time.
13. Report each verified claim separately; do not collapse an absent storage
or anchor proof into a successful timing verdict.
Quid verificatio probat:
| Ingressus probae | Quid stabilit |
|---|---|
| Fasciculus / artefactum signatum validum + subscriptio drand | Corpus recuperatum body_hash congruit; metadata in qub_id adligata integra sunt; textus cifratus ad cyclum drand declaratum adligatur; et ille cyclus iam praeteriit. Hoc tempus creationis textus cifrati non stabilit. |
| Subscriptio V2 auctoris/consubscriptoris valida | Possessor(es) clavium arcanarum congruentium superficiem subscriptam in §9.3 auctoritate confirmarunt. |
| Transactio memoriae per-qub independenter verificata | Textus cifratus conservatus exactus non serius quam tempore blochi eius exstitit. |
| Proba tabularii perspicui ancoriis firmata valida | Vindicatio generi folii propria in §16.11, termino superiore temporis obligationis e blocho ancorae incluso. |
Quid verificatio NON probat:
| Non-proba | Cur |
|---|---|
| Auctoritas | sender_label ad ornamentum est. Sine sig_alg ≥ 0x01, quisvis potuit hoc contentum signasse. |
| Intentio | Artefactum octetos et relationes cryptographicas probat, non quid creator subiective intendebat. |
Obligatio praeexistens ex solo .qub |
Creator fasciculum validum postquam cyclus adligatus praeteriit componere potest. Subscriptio drand inclusa cyclum praeterisse probat, non textum cifratum ante eum exstitisse. |
| Tempus exactum premendi "signa" | Tempus blochi memoriae aut ancorae est terminus superior independenter verificabilis et actionem localem usuaris sequi potest. Assertiones sealed_at / received_at vim probandi non habent. |
Tabularium perspicuum implementatum (§16) verificationem trans qub extendit per ordinationem manifestae-violationis et terminum superiorem temporis obligationis sine fiducia (tempus blochi ancorae), secundum genus folii circumscriptum (§16.11). Auctoritatem aut intentionem non addit; in itinere onerationis praedefinito octetum-caeco neque body_hash neque drand_round per se probat, quae ex inspectionibus artefacti manent.
12. Versionatio et Imperium Editionum
Editiones documenti, protocollum filiforme internum, et involucrum externum sunt spatia versionum separata. Itaque declaratio solum documentaria octetos tacite non mutat, nec migratio filiformis futura pro emendatione redactionis haberi potest.
12.1 Versio Editionis Documenti
Haec specificatio editionibus semanticis documenti (MAJOR.MINOR.PATCH) et etiquetta Git immutabili protocol-v<release> utitur.
- PATCH: emendatio accuratiae aut redactionis quae octetos conformes vel mores requisitos non mutat.
- MINOR: additio normativa retro compatibilis, novus ingressus tabulae, aut nova forma lateralis separatim versionata.
- MAJOR: mutatio normativa incompatibilis, interpretatione filiformi nova requisita inclusa.
Status editionis unus est ex Schedula (nondum normativa), Currens (unicus scopus implementationis commendatus), aut Superata (pro verificatione historica retenta). Iter sine versione /protocol editionem Currentem ostendit; etiquetta editionis fontem exactum omnemque localem cum eo publicatum conservat. Status aut numerus editionis mutari non potest quin haec tabula et historia editionis eadem mutatione recensita renoventur.
| Editio documenti | Dies effectivus | Status | Protocollum filiforme | Involucrum | Fons |
|---|---|---|---|---|---|
| 1.0.0 | 2026-09-23 | Currens | 0x01 |
0x01 |
protocol-v1.0.0 |
12.2 Versio Protocolli
Campus version (u8) in utroque SealedQub et QubEnvelope versionem maiorem protocolli identificat.
- Spectatores versiones maiores ignotas cum errore claro reicere DEBENT.
- Intra versionem maiorem notam, decodificatores claves mappae ignotas reicere DEBENT (§3.1) — evolutio schematis fit nova
versioninvehenda, non clavibus addendis quas decodificatores existentes praetereant. (Revisiones priores huius specificationis campos optionales ignotos tolerari sinebant; ea clausula retracta est —encode(decode(x))non-iniectivum reddidit et vectorem contenti subscripti absconditi in oneribus pactorum aperuit.) - Typi contenti (
content_type) et schemata subscriptionum (sig_alg) versione-cancellati sunt: novi valores solum cum nova versione protocolli aut renovatione tabulae explicita inveheri possunt.
12.3 Historia Versionum Protocolli
| Versio | Valor | Descriptio |
|---|---|---|
| v1 | 0x01 |
Traditio privata/involuta et publica/nuda; corpora textus (0x01), pacti (0x03), et sententiae (0x04); subscriptiones V2 auctoris/consubscriptoris ML-DSA-65; tlock quicknet drand; SHA3-256. |
12.4 Compatibilitas Prospiciens
Spectator v1 occurrens QubEnvelope cum clavibus mappae CBOR ignotis (claves non in ordine canonico §3.2) id cum errore decodificationis reicere DEBET (§3.1). Compatibilitas prospiciens campo version vehitur, non tolerantia clavium: additiones futurae — etiam metadata minora — sub novo valore version invehuntur, quem spectator v1 cum errore claro "protocollum recentius" reicit potius quam contentum quod subscriptiones obligant tacite abiciendo.
Spectator v1 occurrens sig_alg = 0x01 (ML-DSA-65) sed facultate verificationis ML-DSA-65 carens contentum qub cum notitia "subscriptio praesens sed non verificabilis" ostentare OPORTET, non qub omnino reicere. Implementatio referens hodie omnem valorem sig_alg praeter 0x00 et 0x01 reicit quia tabula v1 nullum alium algorithmum validum continet — reiectio stricta et soft-fail observationaliter identicae sunt usque ad tertium algorithmum registratum. Comportamentum soft-fail supra onus-portans fit cum §9.2 novum ingressum admittit, et spectator referens eo puncto ad soft-fail renovabitur.
12.5 Versio Involucri Externi
OuterWrapper in §13 descriptum suum octetum version fert, independens ab SealedQub.version et QubEnvelope.version. Spatia versionum duo separatim evolvuntur: substitutio symmetrica post-quantum-tuta futura octetum involucri inscandit sine versione protocolli interni tangenda, et additio strati-protocolli futura (e.g., novus campus involucri) versionem internam inscandit sine octeto involucri tangendo.
OUTER_WRAPPER_VERSION_* |
Valor | Algorithmus | Status |
|---|---|---|---|
OUTER_WRAPPER_VERSION_1 |
0x01 |
AES-256-GCM cum nonce 12-octetorum, etiquetta authenticationis 16-octetorum, AAD ad qub_id adligata |
Activum pro traditione privata |
| — | 0x02–0xFF |
Reservatum | Futurum |
Spectatores versiones involucri ignotas cum errore claro reicere DEBENT. Protocollum consulto spatium versionum involucri angustum servat usque ad agentem migrationis concretum apparentem (e.g., normam NIST aliud AEAD favens); receptaculum 0x02 in eadem revisione qua algorithmus invehetur allocabitur.
13. Involucrum Cifrationis Externum
13.1 Ratio
Strata protocolli (QubEnvelope → tlock → SealedQub) qub signatum temporalibus claustris obligatum efficiunt: corpus illegibile est usque ad unlock_at et subscriptio cycli drand publicata est. Post reserationem tamen, subscriptio cycli publica est et figura CBOR canonica SealedQub agnoscibilis est, ita ut metalator qui transactiones memoriae perpetuae indexavit totum corpus qub in bulkis decifrare possit.
Pro traditione privata, involucrum cifrationis externum hoc canale claudit interponendo additionale stratum symmetricum AEAD inter SealedQubCbor canonicum et octetos conservatos. In itinere signandi navigatoris, clavis 256-bitorum K solum in URL fragmento URL traditionis et in machinis usuariorum vivit; navigatores fragmenta URL ad servitores non transmittunt, ita ut qub.social, omnis porta memoriae, et omnis CDN ante alterutram observationaliter ad K caecae sint. Forma conservata qub privati itaque est textus cifratus opacus cuius textus simplex sine URL quem creator communicare elegit irrecuperabilis est. Traditio publica hoc stratum consulto omittit (§13.8).
Effectus retis:
- Resistentia enumerationis pro traditione privata.
OuterWrapperCBOR structum agnoscibile manet—non est litteraliter ab octetis fortuitis indistinguibile—sed campus textus cifrati figuram internamSealedQubagnoscibilem celat. Strategia documentata metalatoris "GraphQL-interrogare onerationes nudas qub-formatas, cum subscriptionibus publicis drand in bulkis decifrare" sine K ad textum simplicem non pervenit. - Habitus privatus cripto-tritus in itinere navigatoris privato praedefinito. qub.social illa artefacta conservata ex notitiis praedefinitis servitoris sui decifrare non potest. Recuperatio explicita, traditio publica, et signatio credita in latere servitoris fines fiduciae diversos declaratos habent.
- Scala bilevel confidentialitatis. Praedefinitum = accessus nexu-controllatus (haec sectio). Privata qub clave publica recipientis cifrata (facultas Phasis 2 reservata, nondum specificata) ut secundus gradus desuper struuntur.
13.2 Stratificatio
plaintext body ← QubEnvelope.body (§2.2)
↓ canonical CBOR (§3)
envelope CBOR
↓ tlock encrypt to drand round (§7 step 10)
tlock_ciphertext (inside SealedQub) (§2.3)
↓ canonical CBOR (§3)
SealedQubCbor bytes ← inner wire artifact
├─ public (visibility=0x01) ───────────────▶ stored directly (§13.8)
└─ private (visibility=0x00)
↓ AES-256-GCM(K, nonce, AAD=qub_id) (§7 step 12, this section)
OuterWrapper CBOR bytes ← stored private payload
Signare et reserare in strato protocolli (§7, §8) immutata sunt infra confinium involucri; involucrum se ad locum vocationis seal() attingit et se ad locum vocationis unlock() separat.
13.3 Structura Datorum OuterWrapper
struct OuterWrapper {
version: u8, // 0x01, see §12.5
qub_id: [u8; 32], // copied from inner SealedQub; AEAD AAD
nonce: [u8; 12], // 96-bit AEAD nonce
ciphertext: Vec<u8>, // AES-256-GCM(K, nonce, SealedQubCbor, AAD=qub_id) || 16-byte tag
}
Invariantes camporum.
version0x01aequare DEBET pro octetis involucri v1.0.qub_idcampumqub_idSealedQub post disinvolutionem recuperati aequare DEBET. Utraque functio referenswrap_sealed_qubetunwrap_sealed_qubCBOR internum legit atque hanc aequalitatem directe exigit; adligatio AAD separatim efficit ut mutatioqub_idexterni post involutionem authenticationem frangat.nonce96-bita (12 octeta) esse DEBET, recenter a CSPRNG pro omni operatione involucrationis generata. Reusus nonce sub eadem clave permittit oppugnationes AEAD nonce-reusus quae textum simplicem recuperant; productores paria (key,nonce) ut unius usus tractare DEBENT.ciphertextexitus AES-256-GCM est: octeta textus cifrati cum etiquetta authenticationis 16-octetorum concatenata.ciphertext.len() == SealedQubCbor.len() + 16exacte.
Codificatio CBOR. CBOR canonicum per §3, cum eadem regula ordinis clavium (per longitudinem octetorum codificatorum ascendentem, deinde lexicographice). Quattuor claves sunt:
| Clavis | Octeta codificata | Ordo |
|---|---|---|
nonce |
6 | 1 |
qub_id |
7 | 2 |
version |
8 | 3 |
ciphertext |
11 | 4 |
Primum octetum OuterWrapper CBOR itaque est caput mappae longitudinis definitae pro mappa 4-ingressuum (0xA4).
13.4 Adligatio AAD ad qub_id
Involucrum qub_id ut AEAD additional authenticated data adligat. Hoc est defensio structuralis onus-portans contra tres classes oppugnationis:
| Oppugnatio | Defensio |
|---|---|
Textum cifratum sub diverso campo qub_id in involucro movere |
Discordantia AAD → authenticatio AEAD fallit |
| Miscere fragmentum URL qub A cum octetis conservatis qub B | Clavis falsa (et AAD independenter adligatum) → authenticatio AEAD fallit |
Violare campum qub_id involucri post onerationem |
Discordantia AAD → authenticatio AEAD fallit |
Ferre qub_id in textu simplici involucri immunitatem enumerationis significanter non infirmat — qub_id ipse est spargmen SHA3-256 praeimaginis §4.1 sine praeimagine recuperabili ex digesto, et enumerator qui iam octeta involucri metavit nihil discit ex qub_id visibili quod ex existentia onerationis ipsius inferre non potuisset.
13.5 Algorithmi Involucrandi et Disinvolucrandi
wrap_sealed_qub(SealedQubCbor S, qub_id Q, key K, nonce N):
require K.len() == 32 and N.len() == 12 and Q.len() == 32
I := canonical_cbor_decode(S) as SealedQub
require I.qub_id == Q // reject mismatched caller AAD
C := AES_256_GCM_encrypt(key=K, nonce=N, msg=S, aad=Q)
// C includes the 16-byte authentication tag at the end
return canonical_cbor_encode(OuterWrapper{
version: 0x01,
qub_id: Q,
nonce: N,
ciphertext: C,
})
unwrap_sealed_qub(OuterWrapper bytes W, key K):
require K.len() == 32
O := canonical_cbor_decode(W) as OuterWrapper
require O.version == 0x01 // §12.5
P := AES_256_GCM_decrypt(
key=K, nonce=O.nonce, ciphertext=O.ciphertext, aad=O.qub_id
)
// any AEAD failure → DECRYPT_FAILED, indistinguishable to caller
S := canonical_cbor_decode(P) as SealedQub
require S.qub_id == O.qub_id // explicit inner/outer cross-check
return P // P is the validated SealedQubCbor
Collapsus modi-fallendi. K falsum, nonce falsum, discordantia AAD, et textus cifratus violatus omnia eundem errorem DECRYPT_FAILED producunt. Hoc est proprietas AEAD consulta: distinguere modum fallendi canalem lateralem crearet quem oppugnator remotus probare posset mittendo involucra malformata et tempus responsi metiendo. Implementationes referentes omnes failurae AEAD ad unam errorem formam collapsare DEBENT.
13.6 Materia Clavis et Distributio
Clavis involucrandi K est valor random uniformis 256-bitorum per qub a CSPRNG generatus. Implementationes referentes eum ex his fontibus haurient:
- Creator WASM:
getrandom(WebCrypto sub backendwasm_js). - Vocator API signandi servitoris-lateris: eius CSPRNG localis; vocator
Ktamquamwrapper_key_b64urlpraebet et retinet. WorkerKin memoria pro involucro adhibet sed eum conservare NON DEBET. Hoc sinit ut conatus iteratus idempotens responsum expurgatum recuperet, utens facultate a vocatore retenta, loco pendendi ex arcano semelusus a servitore generato.
Distributio: K ut base64 URL-tuta codificari DEBET (RFC 4648 §5, sine farcimine) et ad URL traditionis ut componens fragmenti adici:
delivery_url = <origin>/c/<arweave_tx_id>#<base64url(K)>
Fragmentum a navigatore conformi ad nullum servitorem umquam transmittitur. Canales recuperationis (index historiae a parte servitoris, auto-missio per inscriptionem electronicam optionalis) qui plenum URL traditionis — fragmentum inclusum — ultra machinam usuarii persistunt sunt commercium explicitum contra habitum defalci cripto-tritae et a consensu usuarii explicito pendere DEBENT.
Amissio fragmenti. Si usuarius fragmentum URL amittit et nullum canalem recuperationis habet, qub illegibile est. Hoc est commercium onus-portans designi et usuario tempore signandi divulgari DEBET. MVP divulgationem tempore signandi cum copia "serva hoc URL" explicita et canale recuperationis inscriptionis-electronicae-verificatae pro usuariis qui optant fortificat.
13.7 Extra Ambitum Huius Sectionis
- Subscriptio auctoritatis (§9) immutata est: subscriptiones intra
QubEnvelopeinternum computantur et post unwrap → tlock decrypt → CBOR lectionem recuperantur. - Cifratio clave publica recipientis (campus reservatus
recipient_pubkey) est facultas futura distincta ab hodierno modo privato involucri, facultate nexus munito. - Fluxus hodiernus consubscriptionis pacti in latere servitoris
SealedQubCborpublicum/nudum cum visibilitate0x01emittit; exemplar secreti K solum in navigatore praestare non potest, quia signatio finalis post consubscriptionem per servitium mediatam fit. Productor futurus pacti privati eodem involucro uti poterit, quod ad typum contenti interni octetum-caecum est.
13.8 qub publica (omissio involucri)
Involucrum externum optionale in strato traditionis est. Creator qub ut publicum signare potest, quo casu SealedQubCbor canonicum directe in canalem conservationis intrat, sine ullo strato OuterWrapper et sine clave K:
SealedQubCbor bytes ──(public)──▶ stored as-is
SealedQubCbor bytes ──(private)─▶ AES-256-GCM(K, …) ▶ OuterWrapper ▶ stored
qub publicum temporalibus claustris obligatum est sed nexu non controllatum: illegibile manet usque ad cyclum drand suum publicatum (stratum tlock immutatum est), sed post reserationem quivis qui identificatorem transactionis memoriae habet illud decifrare potest—nullum fragmentum URL requiritur, quia nulla K est. Hoc est commercium consultum pro superficiebus quas servitor agere DEBET: epistulae nuntiationis tempore revelationis, nexus oEmbed/inclusionis automaticae sine fragmento, et SEO ditior post revelationem nexum requirunt qui sine arcano quod servitor numquam tenet operatur (§13.6). qub privatum tamen forma explicita <qub-embed src="full_delivery_url"> uti potest cum editor facultatem plenam fragmentum ferentem praebet.
Effectus quos productor in computum ducere DEBET:
- Nulla immunitas enumerationis. qub publica proprietatem immunitatis enumerationis §13.1 ex constructione abdicant. Servitium onerationis referens etiquettam memoriae perpetuae
Visibility: publicillis (et illis solis) imprimit ita ut consulto reperibilia sint; privata qub nullam talem etiquettam ferunt et octetum-indistinguibilitatem suam retinent. - Titulus textus simplicis tempore signandi expositus. Campus
title§3.2 textus simplex intraSealedQubCborest. Sub involucro absconditus est usque ad spectatorem quiKpraebet; sine involucro in memoria perpetua mundo-legibilis est ex momento onerationis, ante reserationem. Applicationes creatoris conformes hoc tempore signandi divulgare DEBENT. - Detectio structuralis et cruciatim comprobata est. Spectator/involucrum conforme duas figuras conservatas per analysin distinguit: octeta quae ut
OuterWrapperleguntur iter disinvolucrandi-cum-Kcapiunt; octeta quae utSealedQubCbornudum leguntur directe accipiuntur. Valor internus recuperatus congruere DEBET (0x00pro involuto/privato,0x01pro nudo/publico).qub_idvisibilitatem non adligat, sed octeta canonicaSealedQubeam ferunt, itaque codificationes internae publicae et privatae octetum-identicae non sunt.
Privatum (involutum) defalcum manet; publicum est electio creatoris explicita per qub.
14. Vectores Probationis
14.1 Derivatio qub_id
Input:
version = 0x01
content_type = 0x01
created_at = 1735689600 (2025-01-01 00:00:00 UTC)
unlock_at = 1736294400 (2025-01-08 00:00:00 UTC)
outcome_at = absent
drand_round = 4695446 (= floor((1736294400 - 1595431050) / 30) + 1, §4.3 mapping, drand mainnet params §14.2)
body = "Hello, future." (UTF-8, 14 bytes)
title = absent
Intermediate:
body_hash = SHA3-256("Hello, future.")
= 76ab8b3f843c6ed4f2d0fd75b9f457b4
ad49dd4450f9c22723ae430e3af3211d
title_hash = [0u8; 32] (title absent — §4.2.1 sentinel)
Domain separator (10 bytes):
[0x51, 0x55, 0x42, 0x5F, 0x49, 0x44, 0x5F, 0x56, 0x32, 0x00]
Preimage (108 bytes—current protocol v1):
domain_separator || // 10 bytes
0x01 || // version
0x01 || // content_type
0x0000000067748580 || // created_at as i64 big-endian (1735689600)
0x00000000677DC000 || // unlock_at as i64 big-endian (1736294400)
0x0000000000000000 || // outcome_at_or_zero (outcome_at absent)
0x000000000047A596 || // drand_round as u64 big-endian (4695446)
body_hash || // 32 bytes
title_hash // 32 bytes (all-zeros sentinel; title absent)
Expected output:
qub_id = SHA3-256(preimage)
= 4a84e3dfaec32954949c30073f8e6506
fd3204c1bb97f9162b81c7587afe412e
Implementationes valores body_hash et qub_id identicos pro hoc ingressu producere DEBENT. Hic vector probationis primus unitatis probationis scriptus esse OPORTET. Valores canonici supra ab implementatione referente computati sunt et bitatim congruere DEBENT. Dispositiones prototypi historicae ante emissionem (nulla qub viva a primis duabus pendebant) 92 octetis ante outcome_at utebantur (3d9fc2390eab043d38a1669ed3b71be76f9eefe872b9569ab1aaa027b88392b0) et 100 octetis post outcome_at_or_zero additum (b0d032898ad629795150fdcb3f84e518f59ed05b7a2a82bc24ebdb87f52144ed). Dispositio currens 108-octetorum deinde drand_round et separatorem dominii QUB_ID_V2 addidit. Vector priscus 108-octetorum mappa legata ceil utebatur (drand_round = 4695445) atque 3a9fcb31b750d985c262fada6d4f777fd6a28be831d941d85c131f5a4bbaf8a4 producebat—quod adhuc qub_id validum pro illo cyclo est, dum exemplum supra mappam cycli currentis §4.3 sequitur.
14.2 Mappa Cycli-Reserationis
Input:
unlock_at = 1735689600
chain_genesis_time = 1595431050
chain_period_seconds = 30
Calculation:
(1735689600 - 1595431050) / 30 = 4675285.0
floor(4675285.0) + 1 = 4675286
drand_round = 4675286
Cyclus 4675286 tempore 1595431050 + (4675286 - 1) * 30 = 1735689600 publicatur—exacte apud unlock_at, numquam ante. (Mappa legata ante emissionem ceil dabat 4675285, tempore 1735689570 publicatum—30 secundis mature; verificatores illum cyclum legatum per §4.3 accipiunt.)
14.3 Iter Vicissim CBOR Canonicum
Implementationes verificare DEBENT serialize(parse(serialize(qub))) == serialize(qub) pro omnibus ingressibus validis. Haec est probatio proprietatum, non vector singulus.
14.4 PactTerms CBOR (content_type 0x03)
Input:
pact_version = 1
title = "Scooter deposit"
terms = [
{ key: "Item", value: "Honda Metropolitan scooter" },
{ key: "Price", value: "$100" },
{ key: "Deposit", value: "$10" }
]
party_a = { label: "Alice" }
party_b = { label: "Bob", contact: "bob@example.com" }
notes = absent
Canonical CBOR key order (PactTerms):
"notes"(6) < "terms"(6) < "title"(6) < "party_a"(8) < "party_b"(8) < "pact_version"(13)
Canonical CBOR key order (PactTerm):
"key"(4) < "value"(6)
Canonical CBOR key order (PartyIdentifier):
"label"(6) < "contact"(8)
Octeta CBOR canonica et body_hash SHA3-256 ab implementatione referente computantur. Implementationes CBOR octetum-identicum pro hoc ingressu producere DEBENT.
Implementationes etiam verificare DEBENT serialize(parse(serialize(pact))) == serialize(pact) pro omnibus ingressibus PactTerms validis (probatio proprietatum).
14.5 Vectores Cross-Linguistici Involucri Externi
Involucrum externum (§13) habet fixuram canonicam separatam apud crates/qub-core/tests/vectors/wrapper_v1.json. Quisque casus fixit tuplum (key, nonce, qub_id, sealed_cbor) ut ingressus hex opacos et exitum specificum expected_wrapper_hex asserit. Utraeque implementationes referentes idem ipsum file JSON consumunt:
- Rust:
crates/qub-core/tests/wrapper_vectors.rs(cargo test -p qub-core --test wrapper_vectors). - TypeScript:
workers/api/src/crypto/__tests__/wrapper.test.ts(npm test).
Fixura currenter tres casus involucri humili-gradu affigit. Ii codificationem OuterWrapper deterministicam et interoperabilitatem AEAD independenter ab invarianti figurae traditionis §13.8 probant; imprimis nomen historicum basic-text-public eiusque visibility = 0x01 internum octetos involutos inde productos traditionem publicam conformem non efficiunt. Productor adhuc octetos internos publicos nudos conservare et solum internos privatos (0x00) involvere DEBET.
| Casus | Coverentia |
|---|---|
basic-text-public |
Nomen fixurae humili-gradu historicum. Minima figura SealedQub realistica, sine campis optionalibus; octetos involucri solum probat nec est traditio conservata §13.8 conformis. |
with-recipient-pubkey |
SealedQub cum recipient_pubkey posito (via futura reservata). Diversum complexum clavium internarum CBOR exercet; contentum distinctum fixurae per se qub_id diversum producit (recipient_pubkey ipse in praeimagine §4.1 non est). |
longer-body |
Corpus ~4 KiB — multi-octeta praefixa longitudinis CBOR intra utrumque involucrum internum et textum cifratum externum exercet. |
Implementationes expected_wrapper_hex octetum-identicum pro ingressibus recordatis producere DEBENT. Regenerare fixuram requirit QUB_REGEN_VECTORS=1 cargo test -p qub-core --test wrapper_vectors et mutationibus formae consultis reservatur.
15. Gubernatio Profili Cryptographici (Futurum)
Haec sectio informativa est pro v1 et normativa fit prima vice qua secundus algorithmus in ullum primordium cryptographicum qub ingreditur.
15.1 Habitus Currens
Protocollum v1 exacte unum algorithmum per primordium adligat:
- Subscriptio: ML-DSA-65 (
sig_alg = 0x01; clavis publica 1952-octetorum, subscriptio 3309-octetorum) et insubscriptum (sig_alg = 0x00). Codex0x02pro Ed25519 reservat, sed protocollum v1 eum non activat; verificator v1 omnemsig_algextra{0x00, 0x01}reicere DEBET. - Clausura temporalis: drand quicknet solum — spargmen catenae, clavis publica, tempus geneseos, et periodus sunt parametri retis fixi a referente
DrandTimelockProvider::quicknet()(crates/qub-core/src/tlock.rs) etconfig/drand-endpoints.jsonlati. - Involucrum externum: AES-256-GCM v1 solum (§13).
Verificatores currenter longitudines clavium et subscriptionum per primordium activum duro-codificant. Octeti sig_alg et versionis involucri selectores expliciti sunt, sed v1 nihil intra bandam negotiatur atque solos valores activos supra admittit.
15.2 Figura Intenta
Cum secundus algorithmus protocollum ingreditur, verificator pro CryptoProfile nominato configurabitur (e.g., ExqubV1) complexum exactum valorum permissorum per primordium enumerans — sig_alg, catenae drand, versiones involucri, typi contenti. Profilum tempore verificationis fixum est, numquam intra-bandam negotiatum. Quivis valor extra profilum activum reicitur.
Hoc cavet ne addere ML-DSA-87 aut activare Ed25519 retroactive configurationes verificatorum existentes infirmare possit: verificator v1 verificator v1 manet etiam postquam profilum v2 publicatum est.
15.3 Condiciones Pellentes
Promove §15 ad statum normativum cum quidvis horum proponitur:
- Secundus octetum
sig_alg(activatio Ed25519, ML-DSA-87, aut quivis novus ingressus in tabula §9). - Secunda catena drand in usu productionis.
- Secunda versio involucri externi.
- Rotatio radicis fiduciae tabularii perspicui—inscriptionis
LogProfile.anchor_owneraut clavis publicae apochae affixae (§16.6).LogProfilesuperficiem profili §15.2 ut primordium gubernatum ingreditur: rotatio est incrementumLogProfilesubscriptum cum renovatione verificatoris emissum (rotationes provisae exeuntem → intrantem cruciatim subscribunt; rotationes compromisso pulsae id facere non possunt atque hoc incremento una cum inspectione furcae ancorae prioris damnum interim continente nituntur). Spatia versionum tabularii perspicui (LOG_VERSION,ANCHOR_FORMAT) ut pares independentes evolvuntur, sicut versio involucri §12.5 a versione protocolli independens est.
Usque tunc §15 est receptaculum quod figuram migrationis affixit ita ut PR futurae contra target notum cadunt potius quam superficiem negotiationis ex integro re-litigando.
16. Perspicuitatis Codex et Durabilitatis Gradus (Implementatum — recensio completa)
Status Haec sectio est exsecutus (W5/UP-B1, Gradus 1–8), cum productor et fide-radix ambit hic declarata. Filum formae, hashing, et verifier semitae sunt vivae: nucleus Merkle + canonical-CBOR genera (
qub-core), TypeScript speculum + ANS-104 conglobator (workers/api/src/crypto/), solus scriptorLogDO+ coordinata-clavis R2 nodi copia, illa/uploadlog-append conatus, cotidie ancora + mangone-discendere crons,GET /api/v1/qub/:tx_id/proof(inclusio) etGET /api/v1/log/consistency(RFC 9162) probationem terminae, typus inclusionis probationem portata in.qubfasciculus (§17.5), indigenam ANS-104 ancora verifiertools/qub-verify), et bina sui edita-capita uncinetum (§16.6). Successus/uploadsemper R2-durabilis sed ligno-opertus est solum quandoLOG_DOconfiguratus est et inline additio succedit; tunc tantum eius responsum fertlog_seq,receiptetanchor_statusSiRECEIPT_SKabsens aut invalidus est, illius receptumsig_b64urlvacuum est nec praebet ullum non-repudiation. Hodiernus/sealet pactum publicationem vias schedulam singulis Arweave negotiationes sed non addere folium log. Nullus codex nunc perficiunt/uploadcommentarius proposita postea reconciliationem post defectum appendicis. W5 externa recensio completa est: §16.15 decisiones consilii et limitationes launch commemorat, sed illae limitationes non extendunt coverage producentis modo dictum. Tres fiducia/deployment res restant clausae(a) fidelis ancora marsupiumANCHOR_JWK;LogProfile.anchor_owneradhuc est[0xAB; 32]locumtenens); (b) clavis subsignandi recepti et consonans publicum clavem PIN (RECEIPT_SKest optativum etLogProfile.receipt_pubkeyhoc momento vacuum est); et (c) seipsum-publle-heads GitHub repositum + tessera (§16.6). Donec ancoram/profile quickpins praebentur, solus verifier referat probationem statum sincere potius quam affirmans plene ancoratum, pinned verification. Designatio est strictissime additivum et est nulla mutatio adSealedQub/QubEnvelopefilum forma.
16.1 Rationes et Gradus Durabilitatis
Nunc vias publicationis solvit agnitionem a Arweave confirmatione: derivant et signant singulam transactionem, servant artificium et statum submissionis in R2, deinde mittunt asynchronous. Log transparentiae addit sicuti independenter ancoratus ordinatio stratum pro subset communem. /upload postulationes quarum LogDO appendit succedit:
| Tier | nomen | Securitas | cum |
|---|---|---|---|
| T1 | R2-primum synchronum agnoscere | Durabilitas solum — clausae bytes et exacta statio publicationis scribuntur in durabile repono ante successum redditur. | Per vias currentis publicationis impletum. |
| T2 | Inclusio vitreae schedulae in aggregeratione | Adde-solitum, immutabiliter evidentem obligationem + ordinatio totalis semel inclusa et anchata. | Praesens productor: felix LogDO appens ad /uploadResponsio fert receptum tupulum. Non universalis. |
| T3 | Perpetuitas Arweave | Singula Arweave transactio pro qub. | Nunc paratus est pro omni accepta publicatione et asynchronous posita; exacta signata transactio remanet in effluibili outbox donec tradita. |
Strata describunt evidentiis distinctis et durabilitatis proprietates, non hodiernus commercialis consilium. Praesens codex adhuc ordinat singulam Arweave transactionem pro ogni accepta publicatione; non exponit T3 solum ut solvenda upsell. Limites API-clavis/ratio quota manent separatae applicationis imperia.
Durabilitas honestas T1 scriptura est synchrona, ita responsio feliciter stabilit applicationem-summitatem durabilitatem sine exspectatione Arweave portae. Non ipse statuit independentem tempus-stamping. Confirmata singula transactio praebet sui block-temporis summum terminum. Pro responsione quae fert completam T2 receptum tuplum, proximus confirmatus ancora potest praebere log probatio descriptum infra. Si tuplum desit, nulla superficies potest significare hoc qub iam in transparenti log. Ancora et publicationis moratio nullam protocolum-niveau numerica SLA habent.
Structura Folii Log 16.2 (duae figurae dedicatae)
Ingressus ligni est LogLeaf, codificatus ut manu scripta canonica CBOR sub §3.1 profile (longitudo definita, sine signis, sine fluitibus, integer brevissimo forma, textus NFC, campi optionale omissi cum absens, claves ordinatae secundum longitudo octetorum codificatorum ascendente deinde bytewise). §3.1 parse → re-encode → compare custos canonica applicatur in via codificando ante frustratio (non solum in decodere), ita duo implementationes non possunt dissentire de folium bytes per integer-latitudine aut clavem-ordo differentia. Omnes integer sunt u8 / u64 / i64Omnes digestae sunt 32-byti chordae bytibstr[32]). Reconditus Arweave transactionis id est rudis 32-byte SHA-256 digestum portatum sicut bstr[32], numquam textus fila base64url (congruunt §3.3).
Folia habet duae figurae a electae kind octetquia generalis adsumptio iter est byte-caecus POST /api/v1/upload conscienter tractat ambo recepta formae oneris ut opaca et recipit qub_id et unlock_at solum ut assertiones clientis non fideles. In via privata praedefinita, body_hash, drand_round, created_atet drand_chain_version sunt etiam occultata intra §13 externum involucro, cuius clavem Operarius numquam tenet. Systema typi etiam definit formam probatam pro producente quod derivat body_hash / drand_round ipsum. Currens /seal Iter habet illa valores sed non vocat LogDOita productio nunc solum emittit assertum0x02) folia ex felici generalis-upload additamenta. Divisio servat omnem valorem dedicatum honestum sine simulando attestatus auctor est connexum:
| clavis | Brevis epistula encyclica | genus | praesentia | significatio |
|---|---|---|---|---|
seq |
quattuor | u64 |
necessarius | Globale 0-fundatum folium indicem; positio inclusio probatio commititur ad. |
kind |
quinque | u8 |
necessarius | 0x01 testatum-capax (definitum, non nunc emissum) aut 0x02 asseruit (cliens-signum / byte-caecus onerare). |
ref |
quattuor | bstr[32] |
necessarius | Folia referentia id. Testatum → rudis qub_idAssertum → the caecatus id SHA3-256(qub_id ‖ log_blind_secret) (§16.2.1). |
chash |
sex | bstr[32] |
necessarius | Oratio contenta SHA3-256(stored_bytes) — ille contentus vinculum Operarius semper sincere computare potest, ambobus viis. |
unlock_at |
decem | i64 |
necessarius | Exemplatum (testatum) vel affirmatum (assertum); probatum > 0 antequam folium intrat |
received_at |
duodecim | i64 |
necessarius | Laboratorii horologium in R2-ack. Non-testimonialis (operator-asserted; §16.6). Praesens ad sui descriptionem, numquam probatio. Validatum > 0. |
body_hash |
decem | bstr[32] |
kind=0x01 solus |
Omissus ad 0x02 — Opera hoc sub §13 carent. |
drand_round |
duodecim | u64 |
kind=0x01 solus |
Omissus ad 0x02. |
unus kind=0x02 folium conscie nec facit nec body_hash neque drand_roundtestatur obligationem et ordinationem opacae cryptogrammae ad contentum-adsignatum chashasserens qub_id et unlock_at — non eius textus apertus aut rotundus. Textus apertus/rotundus crura pro assertum qub veniunt ex existentibus §11 .qub-bundulus verificatio, non ex log (§16.11). drand_chain_version non est in folio (est intra involucro in via default); granulatitas catenae habitat in ancora (§16.7). Disciplina encoder: rejicere omnia-zero ref aut chashet recusare non-positivum unlock_at / received_at, speculum ad outcome_at > 0 custos vigili cbor.rs.
16.2.1 Privatus-qub caecatio
Truncus non debet fieri oraculum enumerationis quod §13 exterior involucro exsistit vitare (§13.1). Pro privato (involuto) qub asserted folium committit caecatus identificator SHA3-256(qub_id ‖ log_blind_secret)ubi log_blind_secret secretum a servo habetur, et omittit body_hashTertia pars tali folio ordinare ad certum non potest qub_idtenens qub, qui habet URL traditionis et ideo qub_id, potest recomputare caecos ut confirment suam ipsorum inclusionem. Publicum qub (iam enumerabilis, iam portans Visibility: public Arweave titulus per §13.8) promisso rudis qub_idHoc est unum locum ubi solus verificabilitas consulto cedit onus capacem secretum invariant; solus ligamen pro privatis qubs est chash (§16.9)
log_blind_secret custodia (solutum — §16.15 Q4). Caecus protegit folium unlinkability, non textus apertus secretum (§13 involucro tenet id independenter). In log_blind_secret commodum, pro quolibet qub_id adversarius iam tenet vel potest reconstruere (omnem qub cuius fasciculus/URL habet, praeterea quemlibet humilem-entropy vel publicum qub_iditerum computat folium ref in unum hash et connectit id — hoc est directum nexum cognitae populi, non vis brutum super ignotum spatium. Classifica log_blind_secret ut secretum correlationis/Sybil-gradus eadem custodia gradu ut alia secreta servientis, et rotate solum prorsum (rotatio rursus caecat futura folia; non potest retroactive secolare iam-ancoratam).
16.3 Folium et Nodus Hashing
RFC 6962 §2.1 ambitu separatis hashing cum SHA-256 repositus a SHA3-256:
leaf_hash = SHA3-256(0x00 || canonical_cbor(LogLeaf))
node_hash(l,r) = SHA3-256(0x01 || l || r)
empty tree = SHA3-256("") // defined but never anchored
Praefixum Dominii bytes 0x02 (catena ingressus, §16.4) et 0x03 (STH hash, §16.6) reservantur et ab his disiunguntur. Sunt solae octetum et ideo non possunt collidere cum existentibus 10-octetum ASCII domain separatoremQUB_ID_V2, etc.). Arbor est RFC 6962 sinistra-plenus inaequalis arbor (quaeque interioris divisio ad maximum potestatem duo stricte minor est folium subarboris numerum), quae sinit inclusionem et consistentiam probationes communicare unam audit-viae algorithmum. Referentia specificatio fert explicitam sic/dex derivationem pseudocodicem et figit a non-potentia-duorum (5-folium) test vector Sic dextrae limite promotio casus — qui quattuor folia vector occultat — exercetur.
16.4 Catena Hash (internus)
LogDO servat internum catena ingressum pro tantum ruina-constantia. Est numquam publicatum et numquam ad verifieri spectans:
entry_chain[seq] = SHA3-256(0x02 || entry_chain[seq-1] || leaf_hash[seq])
entry_chain[-1] = SHA3-256("QUB_TLOG_GENESIS_V1")
Auctoritas appendere-solum edita est radix cumulativa Merkle et eius ancora (§16.5–16.6), numquam rudis ordo in quo operator obveniendi servit relinquitur: catena recomputat pro quavis ordine servito, ita solum radicem firmatam pin canonica positione.
Arbor Cumulativa Merkle 16.5 et Aggregatio
Est unum semper crescentem RFC 6962 arborem super omnes folia in seq ordo — non segregatae per-lotum arbores. (Per-lotum constructio folium-tractus catenae reiecta est: non est vera praefixae relationis, ita eius "probationes consistentiae" insensatae sunt.) Arbor cumulativa potest veras RFC 9162 probationes consistentiae dare et sinit unicum recentem ancoram probare inclusionem pro quib vetustioribus.
Ille LogDO Durabilis Objectum est unus auctor (blockConcurrencyWhile, speculatio QuotaDO / EntitlementDO— addere ad communem indicem legitur-modificat-scribit in communi statu et ita DEBET ire per DO, numquam KV. Cauchet arboris dextrae-limitem frontem(O(log n) clavium) sic claudens turbam est O(batch)A cohors Est series foliorum simul alligata; eius effecta excitatio sunt tree_size progressus saltem LOG_BATCH_MAX_LEAVES (default 4096), aetas adscendens ad catenam ancorae, vel explicita administrativum/cron vires-claudere. root_i Est cumulativum Merkle Arbor Hash super folia 0 .. tree_size_i.
16.6 Arbor Caput Signatum per Arweave Ancoram
Transactio Anchorae Arweave est Caput Arboris Signatum et reponit signatura operantis pro ipso capite arboris: ancoram quotidianam non eget clavi qub quia Arweave tx owner est signatura. Thesis vallis tenet — immutabilis substratum, non secretum ab qub detentum, est ponderis sustinentis pro radice ancorata.
Consilium ligni postulat unum calidum felix-addere clavis recepta (§16.10), affixum in LogProfile et transsignatum ab anchor_ownerPraesens implementatio non completavit illam fidei radicis provisionem RECEIPT_SK Est optionale, clavis desunt/invalidum efficit sig_b64url: "", et collecta LogProfile.receipt_pubkey vacuum est. Talis recepta potest describere folium appenditum sed est non acceptum subsignatum quod non repudiari potest. Fortior designatio petitio pertinet solum postquam reprehensor dimissionem clavis publicae concordantem siccio et dominus ancorarum eam transsignat. Responsio publicationis sine completo accipienda tuple nullam declarationem logi-acceptationis facit; una cum subsignatione vacua declarationem appendere locum facit sed nullam verificationem subsignationis.
Ille SignedTreeHead est canonica CBOR (claves per longitudinem codificatae): size:u64, root:bstr[32], batch:u64, prev:bstr[32] (prior) sth_hash; genesis = 32 nihil bytes), log_id:bstr[32], first_seq:u64, anchored_at:i64. eius hash est sth_hash = SHA3-256(0x03 || canonical_cbor(SignedTreeHead)).
Radix fiduciae fixa. log_id = SHA3-256("QUB_TLOG_V1" || anchor_owner_address)Conformans verificator Oportet postulare anchor_tx.owner == LogProfile.anchor_ownerubi anchor_owner (et receptum-clavis publica clavis) intexta est qub_core ut LogProfile — iuxta constantes quicknet iam in DrandTimelockProvider::quicknet() — et distributa cum verifier binaria. Verifier ETIAM debet verificare Arweave tx data → tx_id ligatio localiter magis quam credere portam /raw/ responsio. Hoc claudit vagum-capsulae ambiguitatem cavum: "in Arweave ancoratum" sine sensu est donec verifier pinst quae capsula.
Rotatio est §15 gubernatio extensio, non usus iteratus (resolutum — §16.15 Q3). Superficies perfil §15.2 nunc enumerat solum sig_algs / drand catenae / versionibus involucro / typis contentorum, et §15.3 triggers nullam harum enumerat LogProfile / anchor_owner est non tamen in superficie §15. Rotae gubernatio ergo debet esse aedificata: §15.3 extenditur (infra) ad addere LogProfile incitamentum et rotatio est signata LogProfile Bump delatus est in verificatione aggiornamento. A cogitatum rotatio portat exeuntem → ingrediens trans-signaturam; a pactioni addictus rotatio non potest (clavis exeuntis non fidetur/aut inaccessibilis prorsus tunc) et cadit ad §15-regulatum tuberculum, cum prae-anchor furca recognitione (infra) damnum inter tempus circumscribens.
Fenestra ambiguitatis (primae classis fiducia parametri). Folia est aequivocatione resistens tantum cum eius tegumentum anchora sit ArweaveconfirmatusFenestra est received_at → anchor confirmation (cadentia + Arweave finalitas, sine protocollo moram fidem). Ante fiduciam-radices provisionem, actualis exemplar suppeditat qub operationis integritatem atque quidquid appendendi metadata non signata adest; non suppeditat propositum non-repudiationem fidem. Tres documenta rationis definiunt designatum completum (testis exemplar est §16.15 Q2 resolutio):
- Sigillum receptum (cibatione dependentem) — SCT analogus rediit cum log appenditionem upload successit (§16.10). Fit non-repudiabilis solum cum
sig_b64urlhoc non vacuum et Coniunctum publicum clavem/dominus-ancora relatio est fixa in verificatore. Nunc vacua productio profilum fixa non potest sustinere illud iudicium. Haec potestas non applicatur ad omissum receptum tuplum aut non signatum receptum. - Methodologia monitoris edita + cursus prior catenae — ancora
prevcatena ambulatur caput→genesis; furca (duo ancorae in uno)sizecum diversisroot, vel fractumprev) est probatio edenda malae actionis. Detegendi ambigationem est operativa obligatio declarata, non tacita suppositio. - Capita bina sponte edita — omnis nova caput
{sth_hash, tree_size}in dedicato qub-proprietate positus publica repositorium GitHub solum addere (onus-ferens tamper-evidens sui-publication legis), cum socialis commentarius ut optima conatus corroboratione tantum. Defectum commentarius DEBET paginam (non sileat). *Implementatum (Gradus 8) utpublishHeaduncinus in ancora cronworkers/api/src/utils/heads-publish.ts): aPUTad contenta API sineshaest tantum addere422significat caput iam publicatum est, numquam supergressio); optare / deploy-gated inPUBLISH_HEAD_GITHUB_{TOKEN,OWNER,REPO}et inertem donec repositorium provisum sit. Durus GitHub defectus paginas perhealth_alertcanalis et incrassationes durabile defectum metricam:tlog_publish_head_fail); ipsi Arweave anchor numquam revertitur in defectu publicationis. "Non deficere tacite" servatur per illam metricam durabilem — quam ops oportet monitore indicare — etsi meliorem conatum pagina electronica non traditur. Duae sincerae limitationes sequuntur ex "anchor-in-advance" (cron tantum publica cum magnitudo progreditur): defectus transitorius GitHub relinquit a hiatus in seriem capitis editus pro illa magnitudine — terminata, non tacita (paginas), et quia quisque caput commitit superset arbor, §16.9 consistentia probationis pontes hiatus; praecipue, quod consistentia probatio computatur ex auctoritate Arweave-anchored arbor, non ex GitHub superficieIta GitHub hiatus numquam debilitates verificabilitas. Catch-up backfill qui implet editi-capita hiatus est postpositam emendationem.
Honestas obligavit (vinculum obligans). Quia Qub utrumque tabula destinata moderatur, hoc est sua sponte edita, non independenter testificatus. Nulla productum, mercaturam, vel iuridica superficie potest asserere log est "independenter testificatus". Postquam receptum/profilum/caput portis provisum est, permissum asserere est quod Ambiguitas detegibilis est et sigillum feliciter signatum reliquit receptum non recusabileAnte hoc, illa assertio est non praesto. Verus independens tertiae partis testis differetur ad futurum §15 gubernationis incrementum.
received_at est operatori affirmatus et nulla petitio in ea inniti potest — numquam apparuit ut probatio vel disputatio corroboratio in ullo productum / iuris / API / probatio-referens superficie. Arweave ancora block tempus T est solum fiducia timestamp (superius terminus in "logatus per"). Quisque moderari sanitas inspectio in received_at DEBET comparari cum T, non contra operator imperium anchored_at Campus STH; talis inspectio est custos contra simplex operatoris horologium errorem tantum non imperium rationis contra malitiosum operator (§16.15 Q5).
16.7 Forma Et Cadentia Negotii Ancorae
Ille AnchorBundle est canonical-CBOR Arweave transactio corpus, scriptum per §16.8 congregator: ver:u8, sth:bstr (canonicus SignedTreeHead bity prev_anchor:bstr (ante ancora tx id rudis ordinibus; relicta ad initium) chain_hash:tstr (catena drand in viribus — quicknet), et seriem foliorum batch-CBOR in seq ordo ita ancora est sui contenta: monitor iterum derivat root Ex corpore cum nulla qub dependentia. (Si folium flumen fiet magnum ad altum volumen, futura revisio sola varietas folii per referentiam committere potest; notatum, non adoptatum in v1.)
Arweave tituli sunt deliberate enumerabiles — log est propositum inveniri, dissimilis privatis qubs: App-Name: qub-tlog, Anchor-Format: 1, Log-Id: <hex>, Batch: <n>, Tree-Size: <n>, Root: <hex>, Prev-Anchor: <tx>, Content-Type: application/cborTituli sunt imprudentes indiciaCorpus CBOR est unica auctoritas.
Cadentia Cotidie per defaltam, revisita cum volume (magnitudo trigger automatice breviat efficax cadenam sub onere). Current producer non implet pretium-signum vim-anchor uncis. arca ancorarum dedicatus est et humilis celeritate, separatam a oneratione marsupio — oportet esse eius suis JWK (distincta clavem, non logica munus in upload bursam) ita compromise upload-bursa non potest effingere ancoras — cum durus per diem ancora-negotiatio budget. Custodia habitus clare declaratur: a clavis calida angusta cum claudi circuli stricta et parvo aequilibrionon "frigidum"—capsa quae auto-signet cotidie non potest esse frigidum, et specificatio non simulat aliter.
16.8 ANS-104 Ligator
In-domum ANS-104 DataItem codicem et profundo-hash signatorem, circiter 300 lineas, Solum Web Crypto, nullus npm dependentiae (ambo Turbo SDKs deficient npm ci --ignore-scripts porta copia-catenae). DataItem byti dispositio:
signatureType (2, LE) || raw_signature || owner || target(flag+0|32) || anchor(flag+0|32) || num_tags(8, LE) || tags_len(8, LE) || avro_tags || data
Subscriptio est Arweave deepHash - recursivus SHA-384 digestio (Arweave nexum necessitatem, crypto.subtle.digest("SHA-384")) super ["dataitem", "1", sig_type, owner, target, anchor, encoded_tags, data] — deinde RSA-PSS super profundo hash cum sacculo JWK per crypto.subtle; id = base64url(SHA-256(signature))Hic SHA-384 est in isolationem tanquam Arweave-filum-soli primitivum, numquam qub fidei primitivum (§15 refert claustra; qub fiducia hashing est SHA3-256 per totum).
Iter codicis ANS-104 ministrat machinae differendae cadendae et scribit AnchorBundle DataItems. Ordinaria publicatio via primum creat exactum signatum Arweave transactionem et servat eius JSON in durabili exscribere; directa subministratio est latentia optimisation, et drainage via iterat eandem transactionem antequam applicet eius bundler subrogare. Schema subscriptionis (resolutum — §16.15 Q8): v1 signat cum RSA-PSS (typus subscriptionis 1) Rursus uti existens Arweave saccarium JWK mechanismus (nulla nova longa-vita clavem custodia, serviens "unum minus secretum" thesis); Ed25519 differetur ad §15 PQ-migrationem viam.
Manu volvitur profunda hash est summus periculum, infimum naturalis coverage codicem in W5, ita eius ianua est non-negotiabilis (§16.15 Q8):
- Congregatio translingualis
tlog_v1.json(Rust et TS, §14.5wrapper_v1.jsonexemplar) tegit altum-hash, DataItem octeti + id, folium hashes, quinque-folium radix + auditum semita, STH hash, probatio inclusionis, et probatio consistentiae — in et signum et verificatione instructiones (verificatio directio refert quia §16.6 localis tx → tx_id inspectio trahit profundum hash in omni verificatori solitari, non solum scriptor). - Unus-tempus interop circuitus per referentiam ANS-104 fasciculum, consumptus ut solum data probationis statica — numquam dependens runtime npm (positio Web-Crypto-tantum / sine-installatione-scripts stat).
- Via profunda-hash + RSA-PSS debet transire per totum circuitum idem
crypto.subtleprimitivi Usus productionis, ita domi encoder est byte-compatible. - In processu post-bunculum acceptationem monitor Confirmat singulos ancora / fallback DataItem revera assequitur Arweave accipientis, cum alarm + circuitis ruptor — quia profunda hash etiam servit Arweave-inaccessibilitas fallback ordine, ita tacita regressio impleret illum ordinem cum network-reiecta items per exactam defectum id exsistit tegit.
XVI.IX Inclusio et Constantia Probationes
Utraque sunt RFC 9162, SHA3-256, ut canonica CBOR servita.
ProbatioInclusionis — GET /api/v1/qub/:tx_id/proof: ver:u8, leaf:bstr (exacte folium CBOR — verifier reficit computationem) leaf_hash ipsum et numquam confidit in ordinatum hash index:u64, size:u64, audit:[bstr[32]], root:bstr[32], anchor:{ txid:bstr[32], batch:u64, sth:bstr[32], log_id:bstr[32], block_height?:u64, anchored_at?:i64 }.
ArgumentumConstantiae — GET /api/v1/log/consistency?first=<size_a>&second=<size_b>: ver:u8, first_size:u64, second_size:u64, first_root:bstr[32], second_root:bstr[32], nodes:[bstr[32]], first_anchor, second_anchorUna clara index clavium, ab vector probationis fixata.
Verificationem independens (nulla qub minister, extendit §11):
1. Parse .qub bundle → SealedQub; recompute qub_id (§4.1).
2. Read leaf.kind.
3a. kind=0x01 (attested):
assert leaf.ref == qub_id
assert leaf.body_hash == SHA3-256(body)
assert leaf.drand_round == unlock_round(unlock_at)
3b. kind=0x02 (asserted):
assert leaf.ref == SHA3-256(qub_id || blind) // holder supplies blind
OR treat ref as opaque and bind via leaf.chash == SHA3-256(stored_bytes)
4. Recompute leaf_hash = SHA3-256(0x00 || leaf); fold `audit` per RFC 6962
using index/size; require derived root == proof.root.
5. Fetch anchor.txid from any gateway; verify the tx data → tx_id binding
(do not trust a gateway /raw/ response); REQUIRE anchor_tx.owner ==
LogProfile.anchor_owner.
6. Parse AnchorBundle; require committed root == proof.root and size ==
proof.size; read the Arweave block time T.
7. Emit the claim scoped by leaf.kind (§16.11).
Recondita probatio-servientis DEBET esse coordinata-clavi clavum (resolutum — §16.15 Q7, obstructio praeconditio). Frigus-folium probationem generationis est recte-neutralis solum si material R2 auditus est perstans Merkle-nodus copia clavis a absoluta arboris coordinata (level, index) — non per-batch nodus deltas. Cum taberna coordinatae-clavem, ullus (leaf i, size N) audit iter est coetum O(log N) directum R2 GETcum nulla recomputatio trans limites batch; cum sarcina-clavem taberna non est, quae est repono-dispositio hiatus hoc solutio claudit. Folium corpora similiter contentum-indicari potest per seqVector experimentum W5 DEBET probare Frigus foliis aevo genesis contra multo postea radicem utens solum R2 + Arweave cum LogDO repono deletumita reclamatio-tutelae in §16.13 supportatur potius quam assertur. O(log N) R2 series GETappartinere solus in extremo probatio asynchronous — numquam in sigillum calidum iter (§16.10) aut per-tick cron.
16.10 R2-Primum Ack ordinatio
Exsecutus POST /api/v1/upload series est:
- Portae anteriora dimidia (auth, validatio, idempotentiam clavis segmenti) — immutata.
- Crea, tag, et signe exactam singularem Arweave transactionem. Hoc derivatur
tx_idLocaliter, quamquam transactio creatio potest sumere praemium/ancora metadata ex porta. Praeparationis defectus adhuc deficiunt petitionem antequam agnitio. - Simul scribe artifactum selectum ad
qub-cache/<tx_id>et persiste stabili creatione-operatione/exire tabulas. Haec sunt durabilitas et repetere tabulatum; defectus ante solutio reddunt 503. - cum
LOG_DOconfiguratus est simul conariLogDO.append(leaf)Scriptores singuli attribuuntseq, catena ingressus extendit, et finem renovat. Append RPC id solum facit; batch claudere currit extra viam in alarma. Append vectura/application defectus est nunc deficere-moderateResponsio adhuc potest succedere sinelog_seq,receiptvelanchor_statusQuamquam commentarium impletionis, nulla automatic posterior log reconciliatio hodie coniuncta est. - Redde agnitionem. Include
{ log_seq, anchor_status: "pending", receipt }tunc solum cum appendere reddidit completum felicem coniunctionemreceipt.sig_b64urlvacuum est cum signator recepti non est praesens; clientes NON DEBENT appellare illud valor signatum aut non repudiabile. Absensia tupla significat durabile tantum publicatio, non transparentia-log acceptatio. - Utere uno differre negotium ad mittendam exacte subscribendam transactionem. Successus removet outbox; defectus relinquit eam pro crona drainage limitata et non debet mutare iam agnovit
tx_idMeta data provisoria et alia nobilissima adiuncta etiam differuntur.
Terminus tarditatis Via petitionis includit a parte antea auctoritatem/quota opus, praeparatio transactionis/signatio, durabile R2 scripta, et (cum configurata) LogDO conatur < 300 ms Apparet in consilio recognitionis ut scopus operationalis, non protocolum fidei; currentem transactionem praeparationem gradum potest facere porta metadata petitio. Latentia signa et portae launch sunt operationales regulas, non evidentia verificatori praesto.
16.11 Fidei Exemplar — exacta assertio, a genere folii circumscripta
per kind=0x01 (testatum): Hoc contentum — corpus congruens body_hash, aucta per qub_id — committebatur ad QUB addere-solitum log in positione seq et exstitit non sero quam tempus fractio Arweave TInscriptio cryptographice illegibilis erat usque ad drand circuitum R = unlock_round(unlock_at)Hoc est plenus {tlock round binding + Merkle inclusion + anchored root} triplex
per kind=0x02 (assertum, default): Obscura cryptogramma cum contento-dito chashasserens qub_id et unlock_at, committebatur ad appendi soli ordinis in positione seq et exstitit non sero quam tempus fracti Arweave TCirculi et corporis crura praebentur ab existenti §11 .qub-pachis verificationem(qub_core::unlock), non per lignum; quod lignum addit supra nudum per-qub transaction est tamper-notam ordinatio, fiducia-nullam summum temporis commitment, et resistentia ad ambiguitatem.
Utraque petitio excludit, per §11: auctoritas sine sig_alg ≥ 0x01intentio et sub-animum granulationem temporis. Nec unum sinit ullum ius inniti received_at.
Praesumptio limen (ligans initium constrain — solutum §16.15 Q1). Pro assertum (kind=0x02folium, postulatio supra designata est laquear super quidlibet productum, mercaturae, terminorum, aut probationem reddit superficiem potest affirmare. Nulla superficies potest dicere aut insinuare quod log probat contentum aut solvere circuitus byte-caeco upload — log probat ordinatio + fiducia carens summum terminum commitment temporis opaci ciphertext. Contentum et circuitus probatio veniunt esclusiva ex existentes §11 .qubBundle verificatio, quae est log-independens. Editio sine felici append/receptum nullum log demandam habet.
16.12 Versionatio et W3 Coordinatio
Est non SealedQub filum titillatio et ideo nulla protocollum-versione elevatio (§12.2): log est sidecar qui commit ad existens campos et bytes, ita non ingreditur §12.3 protocol-versio historiam. W3 optionale drand_chain_version manet intactus et solus optionalis SealedQub ager. Lignum autem introducit sua propria independentia versiones spatia — LOG_VERSION_1, ANCHOR_FORMAT_1, InclusionProof.ver — speculum §12.5 involucro-versionem independentiam (involucrum fert versionem byte independentem a protocollo versione, et log versiones sequuntur eandem separationem).
Traditio probationis ab initio sumitur, cum lege voluntaria comitante. Probatio non potest existere tempore sigilli (ancora nondum scripta est), ita tempore sigilli .qub fasciculus manet sine probatione. Verificator W7 excipit GET …/proof olim, vel in plene-offline modus reconstructe probationem ex publico AnchorBundle per interrogationem Arweave de Log-IdIllud .qub fasciculus (W7) reservat optionalis inclusion_proof socius — absens ad sigillum, incolarum a post-ancora reexportatio pro frigido archivistico — sequens idem "optionalem, praeclusam per defalt, additivum" exemplar ut W3's drand_chain_version.
16.13 Retentio
Fenestra retentionis pro LogDO cauda aperta, R2 subiectum probans ministrans, interruptor circuitus ancorae, et catena fallback sarcinatoris specificantur in docs/DATA-RETENTION.mdPrincipium: calidum per-entry repositum ligni (LogDO) est recuperabile post-ancora; eius materia auditio — clavibus coordinatis (level, index) Merkle-node repositorium et seq-tractavit folium corpora (§16.9) + Arweave ancorae — permanens est. Recuperatio frigidum folium ex DO numquam invalidat probatum emisso, quia probatio resolvit contra illam R2 nodum permanentem repositorium et Arweave ancoram, non DO (et §16.9 deletum-DO test vector probat id).
16.14 Vectoribus Probationis
W5 naves trans-linguam apparatum tlog_v1.json (§16.8) plures ordinati vectores: a kind=0x01 et kind=0x02 folium leaf_hash; radix cumulativa quinque-folia; una probatio inclusionis; una probatio consistentiae; una AnchorBundle; et unus DataItem id. Hi vivunt iuxta §14.5 exterior-wrapper vectores et exercetur ab utroque Rustqub-coreet TypeScript (Operarius) exsecutiones.
16.15 Recognitiones Decisionum (W5 — resolutum)
Externus recensio W5 (inimica consilio transeunt + conductionis signatum) completum est. Unaquaeque decisio infra constituta et reflectitur in §16 textu supra vinculum initium restrictiones In fine reiterantur. Exsecutionem sub eis procedere potest.
- Iter Praedefinitum (
kind=0x02Folium honestas — DECISUM. Navis duo-lamina genus divisa ut specificatum estkind=0x02nec commititbody_hashnequedrand_roundNon*_body_hashcampus in byte-caecus via (esset facillime legeret falsum "probatum" signum pro integratoribus et commoditatem §11 iam praebet ex fasciculo). Fac non Postulat servo sigillum pro log-testatum qubs (quod coget textum apertum per Operatorem et destruet crypto-lacerationem fossam). Omnis se describens brevis-circuitus in.qubfasciola / probatio sigillum ut verificator-recomputatum campum, numquam folium campum. Proprietarius-confirmatum postulatum fastigium: §16.11. - Ambiguitas / omissionis responsabilitas — CONSILIUM RESOLUTUM, PRAEBITIO INCOMPLETA. Consilium requirit clavis sigilli-recepti infigi
LogProfileet transsignatum abanchor_owner, plus monitor methodologia, praecedentis catenae ambulatio, et binae sibi publica capita. Compositum profilum et deployment uncis adhuc sunt loci/optionales ut in §16.6 explicatur, ita validior detectabili + recepto petitio non est current donec illae portae claudantur. Numquam debet mercari ut independenter testificatus. Verus tertius-testis differatur ad §15 gubernationis subsidium. - Claviculam proprietatem fiducia radix + rotatio — RESOLUTA. Adoptare
LogProfilepin (§16.6); verificator inspicitanchor_tx.owner == anchor_owneret probat TX data → TX_ID vinculum localiter. Gubernatio rotationis est §15 extensio ad aedificandum (§15.3 incitamentum additum), non reusum; rotationes provisae trans-signant, rotationes ob pacis consensum recedunt ad §15 ictum cum furca inspectione damnum terminans. - Privatus-qub folium caecum — STATUTUM. Perge caecare pro privatis qubs
ref = SHA3-256(qub_id ‖ log_blind_secret)), crudusqub_idpro publicis qubs (iam §16.2.1),chashsicut nudo nexulog_blind_secretest correlatio/Sybil-gradus secretum, verto-prorsum solum (§16.2.1). received_at— STATUTUM. Serva in folio, dedicatum sed manifeste non probatorium; numquam emersit ut probatio vel disputatio corroboratio in aliqua superficie. Omnis monitor rationabilitatis examinatio comparat contra Arweave block tempusTnon a operatore gubernatoanchored_at(§16.6)- Gradatus probabilis-tempus — CONSILIUM SOLUTIO, NON CURRENT VIA. Designatio recensita assignat tempus ancor-block ad tier collectum et probationem horae exactae pro T3 solutis, sine numerico SLA pro priore. Viae actuales non instruxerunt illam distinctionem commercialem: disponunt singulam negotiationem pro omni publicatione accepta, et coverage log relevatur conditionaliter ut in §16.1/§16.10 dictum est. Productum copia describere debet implementationem, non hanc futuram partitionem tier.
- Arbor cumulativa de Operariis — CONSTITUTUM. Singularis cumulativa RFC 9162 arbor + limes-cached singularis-scriptor LogDO (commodum spatium versus ~1k scripta/sec DO caeli; differ Merkle-of-shard-radices frangendo donec prope illud). Clavis coordinata
(level, index)R2 nodus copia + excutientur-DO frigus-folia test vector exsequuntur (§16.9).< 300 msremanere consilium/operationale obiectivum, non protocollum promissum (§16.10). - ANS-104 signatura schema + profunda-hash — RESOLUTUM. RSA-PSS (signum genus 1, resumptum dedicatum anchor-wallet JWK); Ed25519 differre ad §15 PQ iter. Manus-fabricata SHA-384 profunda hash clausa est in utrumque-directions trans-impl fixture, statica sola referentia-bundler interop inspectio, communis-
crypto.subtleiter-rotundum, et post-sarcina Arweave-acceptatio monitor (§16.8).
Vinculum initium restrictiones (in exsecutionem inferre + productum/legalis recensio)
- Petere tectum (Q1/Q6). Nulla superficie potest dicere truncus probat contentum folii assertum vel circumdare; permissum ius pro bene ancorata.
kind=0x02Follium est ordinatum, manifeste manum detrectantem, cum fiducia carens summo limite commitment tempore. Responsio sine recepto coniunctione nullam declarationem signi habet. Nulla timestamp copia habet numerica morae cautelam. - Testis honestatem (Q2). Forum ambiguitas ut detectabilis + recepta, numquam independente visum.
- Sumptus + claves ancorae (Q2/Q8). Antequam non-repudiation/anchored-verification petitiones navem, provisione et compile-clavem receipt publica, signa trans cum provisum ancoram dominus, et tene ancoram sacculum ut suum JWK distinctum ab upload sacculo.
- Porta profunda hash (Q8). Nulla ancora aut T3 naves usque ad utrumque directiones fixture et interop probationem transire; monitor acceptationis paginas in defectu.
- Praeconditio repositio (Q7). Clavis-coordinate nodi copia + deletum-DO frigus-folium vector sunt praerequisita pro "reclamatio numquam probatio invalida" fide.
17. Fasciculus Verificationis Portabilis (.qub)
Status. Haec sectio implementata est (W7 / UP-C2):
qub_core::exportfasciculum producit et legit, atquetools/qub-verifyest CLI publicum, se-contentum, quod eum sine rete verificat. §11 et §16.9 iam "fasciculum.qub" ut unitatem a verificatore solitario consumptam memorant; haec sectio eius octetos et iter verificationis specificat. Stricte additiva est—fasciculus ingressus §11 existentes colligit neque ullam formam filiformem in catena mutat.
17.1 Propositum
§11 statuit quamlibet tertiam partem artefactum cryptographicum qub sine cooperatione qub verificare posse. Fasciculus .qub hanc verificationem portabilem atque sine rete efficit: CBOR signatum et subscriptionem cycli drand quae illud reserat in unum artefactum se-contentum colligit, ut accipiens integritatem contenti, adligationem cycli, et quascumque subscriptiones auctoritatis sine ulla vocatione retis verificare possit (nulla memoriae petitio, nulla petitio drand viva, nulla API qub). Fasciculus solus tempus creationis textus cifrati non probat; transactio memoriae independenter verificata aut proba tabularii ancoriis firmata illam vindicationem separatam temporis existentiae suppeditat (§11, §17.5).
17.2 Forma Fasciculi
QubBundle est CBOR canonicum manu scriptum sub profilo §3.1 (longitudines definitae, nullae etiquettae, nulla puncta fluitantia, integri formae brevissimae, textus NFC, campi optionales absentes omissi, claves per longitudinem octetorum codificatorum ascendentem deinde octetatim ordinatae). Tres claves 15-character ordinantur d < i < s. Fasciculus .qub crudus est exacte haec octeta; pro translatione per URL aut exemplum atque collocationem eadem octeta sunt base64url(no-pad).
| Clavis | Long. cod. | Typus | Praesentia | Significatio |
|---|---|---|---|---|
version |
8 | u8 |
requisita | Versio formae fasciculi (0x01). |
sealed_at |
10 | i64 |
optionalis | Tempus signandi a creatore assertum (secunda Unix); se describit, vim probandi non habet. |
drand_round |
12 | u64 |
requisita | Cyclus cui qub adligatur. Proiectio qub signati inclusi. |
arweave_tx_id |
14 | tstr |
requisita | Identificator transactionis sub quo octeta signata conservata sunt (index originis). |
drand_chain_id |
15 | tstr |
requisita | Catena drand (hex). Proiectio qub signati inclusi. |
drand_signature |
16 | bstr |
requisita | Subscriptio fari drand pro drand_round—valor qui textum cifratum reserat. |
inclusion_proof |
16 | bstr |
optionalis | Proba inclusionis Merkle tabularii perspicui §16, postquam tabularium emissum est (§17.5). |
sealed_qub_cbor |
16 | bstr |
requisita | Octeta interna SealedQubCbor (post disinvolutionem §13), id est ingressus verificationis §11. |
drand_round et drand_chain_id sunt proiecturae commodi sealed_qub_cbor, latae ut instrumenta eas sine CBOR interno legendo cognoscere possint. In constructione derivantur atque in decodificatione contra qub signatum lectum rursus comprobantur; fasciculus cuius campus summus ab onere discrepat reicitur. Disciplina codificatoris reliquam formam filiformem reflectit: drand_signature aut arweave_tx_id vacuum reice et quemque campum longitudinis variabilis termina.
17.3 Quid subscriptio drand inclusa probet
Fasciculus subscriptionem drand fert ne verificator eam haurire debeat. Decifratio clausurae temporalis (tlock super catena drand, §8) solum cum subscriptione fari genuina cycli adligati succedere potest—valore quem catena solum post cyclum elapsum publicat quique subscriptio BLS valida sub clave publica catenae est. Subscriptio ficta aut falsa verificationem BLS aut decifrationem IBE/AEAD frangit. Fasciculus qui decifratur igitur probat: textus cifratus cyclo R adligatur, et cyclus R elapsus est. Verificator catenam figit (DrandTimelockProvider::quicknet()) atque inspectionem adligationis cycli §11 adhibet, itaque fasciculus cyclum cui textus cifratus non adligatur vindicare non potest.
Haec est proba condicionis revelationis, non sigillum temporis creationis. Post cyclum R elapsum, quivis novum textum cifratum pro R creare atque eius subscriptionem iam publicam colligere potest. Fasciculus solus igitur pro proba textum cifratum aut contentum ante R, ante unlock_at, aut ante quemlibet eventum exstitisse describi NON DEBET.
17.4 Iter verificationis sine rete
qub-verify <file.qub> proceduram ordinariam §11 omnino ex fasciculo exsequitur, qub_core::unlock::unlock cum DrandTimelockProvider affixo agens:
1. Parse the .qub bytes → QubBundle (canonical-CBOR guard; bound every field;
re-check drand_round / drand_chain_id against the embedded sealed qub).
2. BLS-verify bundle.drand_signature for the pinned chain and round, then
tlock_decrypt(sealed.tlock_ciphertext, bundle.drand_signature) → QubEnvelope.
3. Verify SHA3-256(body) == body_hash (§11 step 8).
4. Verify QubEnvelope.qub_id == SealedQub.qub_id (§11 step 9).
5. Verify QubEnvelope.unlock_at == SealedQub.unlock_at (§11 step 10).
6. Verify ciphertext round == unlock_round(unlock_at) and the chain binding.
7. If sig_alg != 0x00: verify author_signature (and any cosigner; §9.4).
8. Report integrity, round-elapsed/round-binding, authorship, and cosigner
verdicts separately, plus the recovered body. Do not report a commitment
timestamp unless step 9 succeeds.
9. Optional existence-time leg: verify an included §16 proof through its pinned
anchor, or independently verify the referenced storage transaction. Report
its block time as an upper bound on ciphertext existence.
CLI cum 0 (verificatum), 1 (verificatio cecidit—adhuc clausum, discordantia body-hash, adligatio cycli/catenae fracta, aut subscriptio quae non verificatur), aut 2 (usus / fasciculus malformatus) exit. Relatio --json eadem iudicia automationi fert. Quia fasciculus se continet, crate verificatoris (qub-core) et CLI (qub-verify) sola instrumenta sunt quibus tertia pars eget; utraque publica sunt atque viam verificationis protocolli existentem reusant—nulla cryptographia ad hoc facta.
17.5 Relatio ad tabularium perspicuum
inclusion_proof est locus optionalis pro proba inclusionis Merkle §16. Verificatio fasciculi soli (§17.4) plena est pro integritate, adligatione cycli / cyclo elapso, et auctoritate optionali, sed consulto nullam vindicationem existentiae sigillo temporis independente firmatam habet. inclusion_proof impleta pleneque per ancoram verificata obligationem generi folii propriam atque terminum superiorem temporis ex §16.11 addit sine versione formae fasciculi mutanda. Proba absens tantum "nulla proba inclusa" significat—non "invalidum" neque necessario "non ancoratum".
In implementatione referente locus nunc typizatus est: qub_core::export::QubBundle::inclusion_proof_typed() Option<InclusionProof> reddit, structuram plenam §16.9 (folium, iter auditus, radicem ancoratam, et AnchorRef) per eundem campum CBOR opacum ferens—sine incremento versionis formae fasciculi. CLI solitarium qub-verify eam per crus --anchor consumit atque—donec crumena ancorae provisa sit (§16, Status)—probam impletam sed cum possessore substituente ut inclusionem solam potius quam plene ancoriis verificatam refert.