diff --git a/CITATIONS-UNRESOLVED.md b/CITATIONS-UNRESOLVED.md index c935ddf..c0045fa 100644 --- a/CITATIONS-UNRESOLVED.md +++ b/CITATIONS-UNRESOLVED.md @@ -1,7 +1,7 @@ # Citations in this repository that you cannot open This file is generated by the publication stager of this repository (scripts/legaturi-declaratie.cjs in the Aere working -tree) and enforced by legaturi.cjs. It is the complete list, measured on 2026-10-19, of every path cited in this +tree) and enforced by legaturi.cjs. It is the complete list, measured on 2026-10-20, of every path cited in this repository that does not resolve to a published file. A citation is a promise that a claim is checkable. Where the target is not published, or names a file the reader creates diff --git a/README.md b/README.md index 7a002dc..bb1b5ca 100644 --- a/README.md +++ b/README.md @@ -64,4 +64,4 @@ interface, command line and data (`definePolicy`, `verifyLedger`, `approve`, ... ## Licence -MIT, see [LICENSE](LICENSE). Files: 975 (pq-gateway 9, pq-kms 10, pq-secrets 6, pq-pki 6, crypto-inventory 73, verify-layer 56, proof-kinds 3, control-plane 27, agents 44, identity 24, proof-of-ai 3, ai-trust 6, verifiable-data 7, market-settlement 9, payments 8, conformance 646, device-identity 11, exposure-report 18, readiness 4). +MIT, see [LICENSE](LICENSE). Files: 976 (pq-gateway 9, pq-kms 10, pq-secrets 6, pq-pki 6, crypto-inventory 73, verify-layer 56, proof-kinds 3, control-plane 27, agents 44, identity 24, proof-of-ai 3, ai-trust 6, verifiable-data 7, market-settlement 10, payments 8, conformance 646, device-identity 11, exposure-report 18, readiness 4). diff --git a/market-settlement/piata.mjs b/market-settlement/piata.mjs index 73ab71b..8381de7 100644 --- a/market-settlement/piata.mjs +++ b/market-settlement/piata.mjs @@ -71,7 +71,14 @@ export async function cronologie({ ethers, provider, market, artifact, jobId, fr const events = []; for (const l of brute) { if (!blocuri.has(l.blockHash)) blocuri.set(l.blockHash, await provider.getBlock(l.blockHash)); - if (!txs.has(l.transactionHash)) txs.set(l.transactionHash, await provider.getTransaction(l.transactionHash)); + // 2026-10-20: the transaction is read as the node serves it and only its sender is taken (in the checksummed form ethers gave): + // ethers' getTransaction decodes it, and it does not know the post-quantum type 0x50 (AIP-20, live on 28001), so a job event sent + // with a post-quantum transaction made the whole timeline throw + if (!txs.has(l.transactionHash)) { + const raw = await provider.send('eth_getTransactionByHash', [l.transactionHash]); + if (!raw || !raw.from) throw new Error('transaction ' + l.transactionHash + ' not found'); + txs.set(l.transactionHash, { from: ethers.getAddress(raw.from) }); + } const b = blocuri.get(l.blockHash), t = txs.get(l.transactionHash); const args = {}; l.fragment.inputs.forEach((inp, i) => { args[inp.name] = s(l.args[i]); }); events.push({ name: l.fragment.name, args, blockNumber: l.blockNumber, blockHash: l.blockHash, timestamp: b.timestamp, txHash: l.transactionHash, from: t.from, logIndex: l.index }); diff --git a/market-settlement/proba-cronologie-citire.mjs b/market-settlement/proba-cronologie-citire.mjs new file mode 100644 index 0000000..d7cf7ed --- /dev/null +++ b/market-settlement/proba-cronologie-citire.mjs @@ -0,0 +1,41 @@ +// proba-cronologie-citire.mjs (2026-10-20): piata.mjs ia acum expeditorul unui eveniment din tranzactia BRUTA (eth_getTransactionByHash, +// in forma cu majuscule de control), fiindca ethers nu decodeaza tipul post-cuantic 0x50 (AIP-20, viu pe 28001). Proba, NUMAI CITIRI: pentru +// fiecare eveniment din cea mai noua dovada dovezi/piata-28001-*.json (scrisa cu forma veche, getTransaction decodat de ethers), expeditorul +// citit acum brut e EXACT cel din dovada. Plus controlul ca forma bruta citeste si o tranzactie 0x50 reala de pe 28001, pe care ethers nu o +// decodeaza (o cauta in ultimele 400 de blocuri; daca nu gaseste, spune NEMASURAT pe acel rand, nu verde). +// (Cronologia intreaga nu se poate reciti: queryFilter de la blocul lucrarii pana la varf trece de limita de interval a RPC-ului testnetului.) +// Iesire: 0 egale, 1 diferite, 2 nu s-a putut masura. AERE_ETHERS_DIR=