@veraanchor/verifier 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/CONTRIBUTING.md +33 -0
- package/LICENSE +21 -0
- package/NOTICE +4 -0
- package/README.md +263 -2
- package/SECURITY.md +21 -0
- package/dist/cli/commandV1.d.ts +5 -0
- package/dist/cli/commandV1.d.ts.map +1 -0
- package/dist/cli/commandV1.js +440 -0
- package/dist/cli/commandV1.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -0
- package/dist/contracts/verification.d.ts +77 -0
- package/dist/contracts/verification.d.ts.map +1 -0
- package/dist/contracts/verification.js +6 -0
- package/dist/contracts/verification.js.map +1 -0
- package/dist/crypto/sha3.d.ts +15 -0
- package/dist/crypto/sha3.d.ts.map +1 -0
- package/dist/crypto/sha3.js +27 -0
- package/dist/crypto/sha3.js.map +1 -0
- package/dist/crypto/streamSha3.d.ts +26 -0
- package/dist/crypto/streamSha3.d.ts.map +1 -0
- package/dist/crypto/streamSha3.js +52 -0
- package/dist/crypto/streamSha3.js.map +1 -0
- package/dist/hf/hashContractV1.d.ts +48 -0
- package/dist/hf/hashContractV1.d.ts.map +1 -0
- package/dist/hf/hashContractV1.js +185 -0
- package/dist/hf/hashContractV1.js.map +1 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/merkle/membership.d.ts +30 -0
- package/dist/merkle/membership.d.ts.map +1 -0
- package/dist/merkle/membership.js +105 -0
- package/dist/merkle/membership.js.map +1 -0
- package/dist/policy/contractV1.d.ts +37 -0
- package/dist/policy/contractV1.d.ts.map +1 -0
- package/dist/policy/contractV1.js +2 -0
- package/dist/policy/contractV1.js.map +1 -0
- package/dist/policy/evaluateV1.d.ts +24 -0
- package/dist/policy/evaluateV1.d.ts.map +1 -0
- package/dist/policy/evaluateV1.js +320 -0
- package/dist/policy/evaluateV1.js.map +1 -0
- package/dist/profiles/dataset/sourceV1.d.ts +22 -0
- package/dist/profiles/dataset/sourceV1.d.ts.map +1 -0
- package/dist/profiles/dataset/sourceV1.js +73 -0
- package/dist/profiles/dataset/sourceV1.js.map +1 -0
- package/dist/profiles/dataset/v1.d.ts +39 -0
- package/dist/profiles/dataset/v1.d.ts.map +1 -0
- package/dist/profiles/dataset/v1.js +362 -0
- package/dist/profiles/dataset/v1.js.map +1 -0
- package/dist/profiles/execution/contractV1.d.ts +279 -0
- package/dist/profiles/execution/contractV1.d.ts.map +1 -0
- package/dist/profiles/execution/contractV1.js +364 -0
- package/dist/profiles/execution/contractV1.js.map +1 -0
- package/dist/profiles/execution/independentStandardsV1.d.ts +44 -0
- package/dist/profiles/execution/independentStandardsV1.d.ts.map +1 -0
- package/dist/profiles/execution/independentStandardsV1.js +336 -0
- package/dist/profiles/execution/independentStandardsV1.js.map +1 -0
- package/dist/profiles/execution/reasonCodesV1.d.ts +30 -0
- package/dist/profiles/execution/reasonCodesV1.d.ts.map +1 -0
- package/dist/profiles/execution/reasonCodesV1.js +20 -0
- package/dist/profiles/execution/reasonCodesV1.js.map +1 -0
- package/dist/profiles/execution/recomputationV1.d.ts +11 -0
- package/dist/profiles/execution/recomputationV1.d.ts.map +1 -0
- package/dist/profiles/execution/recomputationV1.js +144 -0
- package/dist/profiles/execution/recomputationV1.js.map +1 -0
- package/dist/profiles/execution/rulesV1.d.ts +6 -0
- package/dist/profiles/execution/rulesV1.d.ts.map +1 -0
- package/dist/profiles/execution/rulesV1.js +855 -0
- package/dist/profiles/execution/rulesV1.js.map +1 -0
- package/dist/profiles/execution/standardsPlanV1.d.ts +18 -0
- package/dist/profiles/execution/standardsPlanV1.d.ts.map +1 -0
- package/dist/profiles/execution/standardsPlanV1.js +16 -0
- package/dist/profiles/execution/standardsPlanV1.js.map +1 -0
- package/dist/profiles/execution/verificationV1.d.ts +28 -0
- package/dist/profiles/execution/verificationV1.d.ts.map +1 -0
- package/dist/profiles/execution/verificationV1.js +188 -0
- package/dist/profiles/execution/verificationV1.js.map +1 -0
- package/dist/profiles/ingest/sourceV1.d.ts +36 -0
- package/dist/profiles/ingest/sourceV1.d.ts.map +1 -0
- package/dist/profiles/ingest/sourceV1.js +99 -0
- package/dist/profiles/ingest/sourceV1.js.map +1 -0
- package/dist/profiles/ingest/v1.d.ts +65 -0
- package/dist/profiles/ingest/v1.d.ts.map +1 -0
- package/dist/profiles/ingest/v1.js +477 -0
- package/dist/profiles/ingest/v1.js.map +1 -0
- package/dist/profiles/sourceV1Helpers.d.ts +48 -0
- package/dist/profiles/sourceV1Helpers.d.ts.map +1 -0
- package/dist/profiles/sourceV1Helpers.js +141 -0
- package/dist/profiles/sourceV1Helpers.js.map +1 -0
- package/dist/reports/coreV1.d.ts +7 -0
- package/dist/reports/coreV1.d.ts.map +1 -0
- package/dist/reports/coreV1.js +195 -0
- package/dist/reports/coreV1.js.map +1 -0
- package/dist/reports/portableV1.d.ts +48 -0
- package/dist/reports/portableV1.d.ts.map +1 -0
- package/dist/reports/portableV1.js +279 -0
- package/dist/reports/portableV1.js.map +1 -0
- package/dist/reports/validationV1.d.ts +19 -0
- package/dist/reports/validationV1.d.ts.map +1 -0
- package/dist/reports/validationV1.js +441 -0
- package/dist/reports/validationV1.js.map +1 -0
- package/dist/resolvers/executionMirrorV1.d.ts +15 -0
- package/dist/resolvers/executionMirrorV1.d.ts.map +1 -0
- package/dist/resolvers/executionMirrorV1.js +206 -0
- package/dist/resolvers/executionMirrorV1.js.map +1 -0
- package/dist/resolvers/explorerExecutionV1.d.ts +17 -0
- package/dist/resolvers/explorerExecutionV1.d.ts.map +1 -0
- package/dist/resolvers/explorerExecutionV1.js +61 -0
- package/dist/resolvers/explorerExecutionV1.js.map +1 -0
- package/dist/resolvers/explorerPublicV1.d.ts +37 -0
- package/dist/resolvers/explorerPublicV1.d.ts.map +1 -0
- package/dist/resolvers/explorerPublicV1.js +210 -0
- package/dist/resolvers/explorerPublicV1.js.map +1 -0
- package/dist/resolvers/explorerPublicationV1.d.ts +20 -0
- package/dist/resolvers/explorerPublicationV1.d.ts.map +1 -0
- package/dist/resolvers/explorerPublicationV1.js +195 -0
- package/dist/resolvers/explorerPublicationV1.js.map +1 -0
- package/dist/resolvers/explorerTransportV1.d.ts +17 -0
- package/dist/resolvers/explorerTransportV1.d.ts.map +1 -0
- package/dist/resolvers/explorerTransportV1.js +112 -0
- package/dist/resolvers/explorerTransportV1.js.map +1 -0
- package/dist/resolvers/hcs11MirrorV1.d.ts +49 -0
- package/dist/resolvers/hcs11MirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs11MirrorV1.js +293 -0
- package/dist/resolvers/hcs11MirrorV1.js.map +1 -0
- package/dist/resolvers/hcs13MirrorV1.d.ts +35 -0
- package/dist/resolvers/hcs13MirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs13MirrorV1.js +72 -0
- package/dist/resolvers/hcs13MirrorV1.js.map +1 -0
- package/dist/resolvers/hcs1MirrorV1.d.ts +28 -0
- package/dist/resolvers/hcs1MirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs1MirrorV1.js +220 -0
- package/dist/resolvers/hcs1MirrorV1.js.map +1 -0
- package/dist/resolvers/hcs26MirrorV1.d.ts +67 -0
- package/dist/resolvers/hcs26MirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs26MirrorV1.js +218 -0
- package/dist/resolvers/hcs26MirrorV1.js.map +1 -0
- package/dist/resolvers/hcs26RegistryMirrorV1.d.ts +26 -0
- package/dist/resolvers/hcs26RegistryMirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs26RegistryMirrorV1.js +200 -0
- package/dist/resolvers/hcs26RegistryMirrorV1.js.map +1 -0
- package/dist/resolvers/hcs2MirrorV1.d.ts +26 -0
- package/dist/resolvers/hcs2MirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs2MirrorV1.js +196 -0
- package/dist/resolvers/hcs2MirrorV1.js.map +1 -0
- package/dist/resolvers/hederaMirrorV1.d.ts +22 -0
- package/dist/resolvers/hederaMirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hederaMirrorV1.js +338 -0
- package/dist/resolvers/hederaMirrorV1.js.map +1 -0
- package/dist/standards/hcs/hcs11V1.d.ts +51 -0
- package/dist/standards/hcs/hcs11V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs11V1.js +289 -0
- package/dist/standards/hcs/hcs11V1.js.map +1 -0
- package/dist/standards/hcs/hcs13V1.d.ts +39 -0
- package/dist/standards/hcs/hcs13V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs13V1.js +114 -0
- package/dist/standards/hcs/hcs13V1.js.map +1 -0
- package/dist/standards/hcs/hcs14V1.d.ts +35 -0
- package/dist/standards/hcs/hcs14V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs14V1.js +168 -0
- package/dist/standards/hcs/hcs14V1.js.map +1 -0
- package/dist/standards/hcs/hcs1V1.d.ts +30 -0
- package/dist/standards/hcs/hcs1V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs1V1.js +140 -0
- package/dist/standards/hcs/hcs1V1.js.map +1 -0
- package/dist/standards/hcs/hcs26V1.d.ts +58 -0
- package/dist/standards/hcs/hcs26V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs26V1.js +339 -0
- package/dist/standards/hcs/hcs26V1.js.map +1 -0
- package/dist/standards/hcs/hcs2V1.d.ts +36 -0
- package/dist/standards/hcs/hcs2V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs2V1.js +181 -0
- package/dist/standards/hcs/hcs2V1.js.map +1 -0
- package/dist/standards/hcs/jsonCanonicalV1.d.ts +15 -0
- package/dist/standards/hcs/jsonCanonicalV1.d.ts.map +1 -0
- package/dist/standards/hcs/jsonCanonicalV1.js +160 -0
- package/dist/standards/hcs/jsonCanonicalV1.js.map +1 -0
- package/dist/triangulation/compareV1.d.ts +50 -0
- package/dist/triangulation/compareV1.d.ts.map +1 -0
- package/dist/triangulation/compareV1.js +236 -0
- package/dist/triangulation/compareV1.js.map +1 -0
- package/dist/triangulation/executionPlanV1.d.ts +39 -0
- package/dist/triangulation/executionPlanV1.d.ts.map +1 -0
- package/dist/triangulation/executionPlanV1.js +208 -0
- package/dist/triangulation/executionPlanV1.js.map +1 -0
- package/dist/triangulation/executionPublicV1.d.ts +22 -0
- package/dist/triangulation/executionPublicV1.d.ts.map +1 -0
- package/dist/triangulation/executionPublicV1.js +39 -0
- package/dist/triangulation/executionPublicV1.js.map +1 -0
- package/dist/triangulation/messageObservationV1.d.ts +26 -0
- package/dist/triangulation/messageObservationV1.d.ts.map +1 -0
- package/dist/triangulation/messageObservationV1.js +69 -0
- package/dist/triangulation/messageObservationV1.js.map +1 -0
- package/dist/triangulation/publicV1.d.ts +29 -0
- package/dist/triangulation/publicV1.d.ts.map +1 -0
- package/dist/triangulation/publicV1.js +170 -0
- package/dist/triangulation/publicV1.js.map +1 -0
- package/dist/verification/sourceIntentV1.d.ts +15 -0
- package/dist/verification/sourceIntentV1.d.ts.map +1 -0
- package/dist/verification/sourceIntentV1.js +206 -0
- package/dist/verification/sourceIntentV1.js.map +1 -0
- package/docs/cli-v0.1.md +237 -0
- package/docs/conformance.md +38 -0
- package/docs/threat-model.md +37 -0
- package/docs/verification-semantics.md +65 -0
- package/examples/README.md +35 -0
- package/examples/dataset-offline.mjs +58 -0
- package/examples/dataset-policy.mjs +59 -0
- package/package.json +65 -4
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { observeMirrorMessageV1 } from "../triangulation/messageObservationV1.js";
|
|
2
|
+
const DEFAULT_MIRROR = Object.freeze({
|
|
3
|
+
mainnet: "https://mainnet-public.mirrornode.hedera.com/api/v1",
|
|
4
|
+
testnet: "https://testnet.mirrornode.hedera.com/api/v1",
|
|
5
|
+
});
|
|
6
|
+
const DEFAULT_RESPONSE_BYTES = 2 * 1024 * 1024;
|
|
7
|
+
const MAX_RESPONSE_BYTES = 4 * 1024 * 1024;
|
|
8
|
+
const MAX_LOGICAL_BYTES = 1024 * 1024;
|
|
9
|
+
const MAX_CHUNKS = 100;
|
|
10
|
+
const TOPIC = /^0\.0\.[1-9][0-9]*$/;
|
|
11
|
+
const TX = /^(0\.0\.\d+)[@-](\d{1,12})[.\-](\d{1,9})$/;
|
|
12
|
+
const B64 = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
|
|
13
|
+
const CONSENSUS = /^\d{1,12}\.\d{1,9}$/;
|
|
14
|
+
class MirrorReadFailure extends Error {
|
|
15
|
+
code;
|
|
16
|
+
constructor(code) {
|
|
17
|
+
super(code);
|
|
18
|
+
this.code = code;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function object(value) {
|
|
22
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
23
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
function requiredString(value, max = 256) {
|
|
27
|
+
if (typeof value !== "string" || value.length === 0 || value.length > max || value.trim() !== value) {
|
|
28
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
29
|
+
}
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
function positiveInteger(value) {
|
|
33
|
+
if ((typeof value !== "number" && typeof value !== "string") || value === "" ||
|
|
34
|
+
!Number.isSafeInteger(Number(value)) || Number(value) < 1) {
|
|
35
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
36
|
+
}
|
|
37
|
+
return Number(value);
|
|
38
|
+
}
|
|
39
|
+
function transactionId(value) {
|
|
40
|
+
const match = TX.exec(value);
|
|
41
|
+
if (!match)
|
|
42
|
+
throw new TypeError("Invalid Hedera transaction identifier");
|
|
43
|
+
return `${match[1]}@${match[2]}.${match[3].padStart(9, "0")}`;
|
|
44
|
+
}
|
|
45
|
+
function initialTransactionId(value) {
|
|
46
|
+
if (typeof value === "string") {
|
|
47
|
+
try {
|
|
48
|
+
return transactionId(value);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
55
|
+
return null;
|
|
56
|
+
const raw = value;
|
|
57
|
+
const direct = raw.transaction_id ?? raw.transactionId ?? raw.transactionID;
|
|
58
|
+
if (typeof direct === "string")
|
|
59
|
+
return initialTransactionId(direct);
|
|
60
|
+
const account = raw.account_id ?? raw.accountId;
|
|
61
|
+
const start = raw.transaction_valid_start ?? raw.transactionValidStart ?? raw.valid_start_timestamp;
|
|
62
|
+
if (typeof account !== "string" || !/^0\.0\.\d+$/.test(account))
|
|
63
|
+
return null;
|
|
64
|
+
let stamp = typeof start === "string" ? start : null;
|
|
65
|
+
if (start && typeof start === "object" && !Array.isArray(start)) {
|
|
66
|
+
const parts = start;
|
|
67
|
+
if ((typeof parts.seconds === "number" || typeof parts.seconds === "string") &&
|
|
68
|
+
(typeof parts.nanos === "number" || typeof parts.nanos === "string")) {
|
|
69
|
+
stamp = `${parts.seconds}.${String(parts.nanos).padStart(9, "0")}`;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (!stamp)
|
|
73
|
+
return null;
|
|
74
|
+
try {
|
|
75
|
+
const id = transactionId(`${account}@${stamp}`);
|
|
76
|
+
const nonce = raw.nonce == null ? 0 : Number(raw.nonce);
|
|
77
|
+
if (!Number.isSafeInteger(nonce) || nonce < 0)
|
|
78
|
+
return null;
|
|
79
|
+
return `${id}#${nonce}#${raw.scheduled === true ? "scheduled" : "direct"}`;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function topicRow(value, topic, sequence) {
|
|
86
|
+
const row = object(value);
|
|
87
|
+
if (row.topic_id !== topic)
|
|
88
|
+
throw new MirrorReadFailure("MIRROR_MESSAGE_SCOPE_INVALID");
|
|
89
|
+
const n = positiveInteger(row.sequence_number);
|
|
90
|
+
if (sequence !== undefined && n !== sequence)
|
|
91
|
+
throw new MirrorReadFailure("MIRROR_MESSAGE_SCOPE_INVALID");
|
|
92
|
+
const timestamp = requiredString(row.consensus_timestamp, 64);
|
|
93
|
+
if (!CONSENSUS.test(timestamp))
|
|
94
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
95
|
+
const encoded = requiredString(row.message, MAX_RESPONSE_BYTES * 2);
|
|
96
|
+
if (!B64.test(encoded))
|
|
97
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
98
|
+
const bytes = Buffer.from(encoded, "base64");
|
|
99
|
+
if (bytes.toString("base64") !== encoded || bytes.byteLength > MAX_LOGICAL_BYTES) {
|
|
100
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
101
|
+
}
|
|
102
|
+
if (row.chunk_info == null) {
|
|
103
|
+
return { topic_id: topic, sequence_number: n, consensus_timestamp: timestamp, bytes,
|
|
104
|
+
chunk_group: null, chunk_number: null, chunk_total: null };
|
|
105
|
+
}
|
|
106
|
+
const chunk = object(row.chunk_info);
|
|
107
|
+
const number = positiveInteger(chunk.number);
|
|
108
|
+
const total = positiveInteger(chunk.total);
|
|
109
|
+
const group = initialTransactionId(chunk.initial_transaction_id ?? chunk.initialTransactionId);
|
|
110
|
+
if (!group || total > MAX_CHUNKS || number > total)
|
|
111
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
112
|
+
return { topic_id: topic, sequence_number: n, consensus_timestamp: timestamp, bytes,
|
|
113
|
+
chunk_group: group, chunk_number: number, chunk_total: total };
|
|
114
|
+
}
|
|
115
|
+
function mirrorBase(config, network) {
|
|
116
|
+
const raw = config.base_urls?.[network] ?? DEFAULT_MIRROR[network];
|
|
117
|
+
let parsed;
|
|
118
|
+
try {
|
|
119
|
+
parsed = new URL(raw);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
throw new TypeError("Invalid Mirror base URL");
|
|
123
|
+
}
|
|
124
|
+
if ((parsed.protocol !== "https:" && !(parsed.protocol === "http:" &&
|
|
125
|
+
(parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1" || parsed.hostname === "[::1]"))) ||
|
|
126
|
+
parsed.username || parsed.password || parsed.search || parsed.hash || !parsed.pathname.endsWith("/api/v1")) {
|
|
127
|
+
throw new TypeError("Mirror requires a fixed HTTPS /api/v1 endpoint (or HTTP loopback)");
|
|
128
|
+
}
|
|
129
|
+
return parsed.toString().replace(/\/$/, "");
|
|
130
|
+
}
|
|
131
|
+
async function read(config, network, path) {
|
|
132
|
+
const timeout = config.timeout_ms ?? 8000;
|
|
133
|
+
const max = config.max_response_bytes ?? DEFAULT_RESPONSE_BYTES;
|
|
134
|
+
if (!Number.isSafeInteger(timeout) || timeout < 250 || timeout > 15000 ||
|
|
135
|
+
!Number.isSafeInteger(max) || max < 1024 || max > MAX_RESPONSE_BYTES) {
|
|
136
|
+
throw new TypeError("Invalid Mirror request bounds");
|
|
137
|
+
}
|
|
138
|
+
const base = mirrorBase(config, network);
|
|
139
|
+
const url = new URL(`${base}/${path}`);
|
|
140
|
+
if (url.origin !== new URL(base).origin || !url.pathname.startsWith(`${new URL(base).pathname}/`)) {
|
|
141
|
+
throw new TypeError("Mirror path escaped configured endpoint");
|
|
142
|
+
}
|
|
143
|
+
let response;
|
|
144
|
+
try {
|
|
145
|
+
response = await (config.fetch_impl ?? fetch)(url.toString(), {
|
|
146
|
+
method: "GET", headers: { Accept: "application/json" },
|
|
147
|
+
redirect: "error", credentials: "omit", cache: "no-store", signal: AbortSignal.timeout(timeout),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
throw new MirrorReadFailure("MIRROR_TRANSPORT_UNAVAILABLE");
|
|
152
|
+
}
|
|
153
|
+
if (response.status === 404)
|
|
154
|
+
return null;
|
|
155
|
+
if (response.status === 429)
|
|
156
|
+
throw new MirrorReadFailure("MIRROR_RATE_LIMITED");
|
|
157
|
+
if (!response.ok)
|
|
158
|
+
throw new MirrorReadFailure("MIRROR_HTTP_UNAVAILABLE");
|
|
159
|
+
const length = response.headers.get("content-length");
|
|
160
|
+
if (length && Number(length) > max)
|
|
161
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_TOO_LARGE");
|
|
162
|
+
if (!response.body)
|
|
163
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
164
|
+
const reader = response.body.getReader();
|
|
165
|
+
const chunks = [];
|
|
166
|
+
let total = 0;
|
|
167
|
+
try {
|
|
168
|
+
while (true) {
|
|
169
|
+
const result = await reader.read();
|
|
170
|
+
if (result.done)
|
|
171
|
+
break;
|
|
172
|
+
total += result.value.byteLength;
|
|
173
|
+
if (total > max) {
|
|
174
|
+
await reader.cancel().catch(() => undefined);
|
|
175
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_TOO_LARGE");
|
|
176
|
+
}
|
|
177
|
+
chunks.push(result.value);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (error instanceof MirrorReadFailure)
|
|
182
|
+
throw error;
|
|
183
|
+
throw new MirrorReadFailure("MIRROR_TRANSPORT_UNAVAILABLE");
|
|
184
|
+
}
|
|
185
|
+
finally {
|
|
186
|
+
reader.releaseLock();
|
|
187
|
+
}
|
|
188
|
+
const bytes = new Uint8Array(total);
|
|
189
|
+
let at = 0;
|
|
190
|
+
for (const part of chunks) {
|
|
191
|
+
bytes.set(part, at);
|
|
192
|
+
at += part.byteLength;
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
return object(JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes)));
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
async function reassembled(config, network, topic, first) {
|
|
202
|
+
if (!first.chunk_total || first.chunk_total === 1)
|
|
203
|
+
return first.bytes;
|
|
204
|
+
const scan = async (direction) => {
|
|
205
|
+
const params = new URLSearchParams({
|
|
206
|
+
order: direction === "before" ? "desc" : "asc", limit: "100",
|
|
207
|
+
timestamp: `${direction === "before" ? "lte" : "gte"}:${first.consensus_timestamp}`,
|
|
208
|
+
});
|
|
209
|
+
const list = await read(config, network, `topics/${topic}/messages?${params.toString()}`);
|
|
210
|
+
if (!list || !Array.isArray(list.messages) || list.messages.length > 100) {
|
|
211
|
+
throw new MirrorReadFailure("MIRROR_MESSAGE_REASSEMBLY_UNAVAILABLE");
|
|
212
|
+
}
|
|
213
|
+
return list.messages.map((item) => topicRow(item, topic));
|
|
214
|
+
};
|
|
215
|
+
const windows = await Promise.all([
|
|
216
|
+
first.chunk_number > 1 ? scan("before") : Promise.resolve([]),
|
|
217
|
+
first.chunk_number < first.chunk_total ? scan("after") : Promise.resolve([]),
|
|
218
|
+
]);
|
|
219
|
+
const unique = new Map([[first.sequence_number, first]]);
|
|
220
|
+
for (const window of windows) {
|
|
221
|
+
for (const chunk of window) {
|
|
222
|
+
const existing = unique.get(chunk.sequence_number);
|
|
223
|
+
if (existing && (existing.chunk_number !== chunk.chunk_number ||
|
|
224
|
+
Buffer.compare(Buffer.from(existing.bytes), Buffer.from(chunk.bytes)) !== 0)) {
|
|
225
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
226
|
+
}
|
|
227
|
+
unique.set(chunk.sequence_number, chunk);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
const byNumber = new Map();
|
|
231
|
+
for (const chunk of unique.values()) {
|
|
232
|
+
if (chunk.chunk_group !== first.chunk_group)
|
|
233
|
+
continue;
|
|
234
|
+
if (chunk.chunk_total !== first.chunk_total || chunk.chunk_number === null) {
|
|
235
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
236
|
+
}
|
|
237
|
+
if (byNumber.has(chunk.chunk_number))
|
|
238
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
239
|
+
byNumber.set(chunk.chunk_number, chunk);
|
|
240
|
+
}
|
|
241
|
+
if (byNumber.size !== first.chunk_total)
|
|
242
|
+
throw new MirrorReadFailure("MIRROR_MESSAGE_REASSEMBLY_UNAVAILABLE");
|
|
243
|
+
const parts = [];
|
|
244
|
+
let size = 0;
|
|
245
|
+
for (let i = 1; i <= first.chunk_total; i++) {
|
|
246
|
+
const chunk = byNumber.get(i);
|
|
247
|
+
if (!chunk)
|
|
248
|
+
throw new MirrorReadFailure("MIRROR_MESSAGE_REASSEMBLY_UNAVAILABLE");
|
|
249
|
+
size += chunk.bytes.byteLength;
|
|
250
|
+
if (size > MAX_LOGICAL_BYTES)
|
|
251
|
+
throw new MirrorReadFailure("MIRROR_MESSAGE_TOO_LARGE");
|
|
252
|
+
parts.push(chunk.bytes);
|
|
253
|
+
}
|
|
254
|
+
const result = new Uint8Array(size);
|
|
255
|
+
let offset = 0;
|
|
256
|
+
for (const part of parts) {
|
|
257
|
+
result.set(part, offset);
|
|
258
|
+
offset += part.byteLength;
|
|
259
|
+
}
|
|
260
|
+
return result;
|
|
261
|
+
}
|
|
262
|
+
function output(status, reason) {
|
|
263
|
+
return Object.freeze({ status, reason_code: reason, observation: null });
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Directly observe a public publication on a separately configured Hedera Mirror.
|
|
267
|
+
* The publication locator is a CLAIM until resolved; Mirror data is a distinct
|
|
268
|
+
* network observation, not cryptographic consensus authentication.
|
|
269
|
+
*/
|
|
270
|
+
export async function resolveHederaPublicationV1(config, publication, subject) {
|
|
271
|
+
if (!publication || (publication.hedera_network !== "mainnet" && publication.hedera_network !== "testnet") ||
|
|
272
|
+
publication.hedera_network !== subject.hedera_network || !subject.id ||
|
|
273
|
+
!TOPIC.test(publication.topic_id ?? "") || !Number.isSafeInteger(publication.sequence_number) ||
|
|
274
|
+
publication.sequence_number === null || publication.sequence_number < 1) {
|
|
275
|
+
return output("unavailable", "MIRROR_MESSAGE_LOCATOR_UNAVAILABLE");
|
|
276
|
+
}
|
|
277
|
+
const network = publication.hedera_network;
|
|
278
|
+
const topic = publication.topic_id;
|
|
279
|
+
const sequence = publication.sequence_number;
|
|
280
|
+
try {
|
|
281
|
+
const reply = await read(config, network, `topics/${topic}/messages/${sequence}`);
|
|
282
|
+
if (!reply)
|
|
283
|
+
return output("unavailable", "MIRROR_MESSAGE_NOT_FOUND");
|
|
284
|
+
const first = topicRow(reply, topic, sequence);
|
|
285
|
+
const bytes = await reassembled(config, network, topic, first);
|
|
286
|
+
let transaction = null;
|
|
287
|
+
let txConsensus = null;
|
|
288
|
+
if (publication.transaction_id) {
|
|
289
|
+
transaction = transactionId(publication.transaction_id);
|
|
290
|
+
const txPath = transaction.replace(/@(\d+)\./, "-$1-");
|
|
291
|
+
const tx = await read(config, network, `transactions/${txPath}`);
|
|
292
|
+
if (!tx)
|
|
293
|
+
return output("unavailable", "MIRROR_TRANSACTION_NOT_FOUND");
|
|
294
|
+
const transactions = tx.transactions;
|
|
295
|
+
if (!Array.isArray(transactions))
|
|
296
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
297
|
+
const matching = transactions.filter((item) => {
|
|
298
|
+
if (!item || typeof item !== "object" || Array.isArray(item))
|
|
299
|
+
return false;
|
|
300
|
+
try {
|
|
301
|
+
return transactionId(String(item.transaction_id ?? "")) === transaction;
|
|
302
|
+
}
|
|
303
|
+
catch {
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
if (matching.length !== 1)
|
|
308
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
309
|
+
const resolved = object(matching[0]);
|
|
310
|
+
const result = requiredString(resolved.result, 64).toUpperCase();
|
|
311
|
+
if (result !== "SUCCESS")
|
|
312
|
+
return output("conflict", "MIRROR_TRANSACTION_FAILED");
|
|
313
|
+
if (resolved.consensus_timestamp !== undefined && resolved.consensus_timestamp !== null) {
|
|
314
|
+
txConsensus = requiredString(resolved.consensus_timestamp, 64);
|
|
315
|
+
if (!CONSENSUS.test(txConsensus))
|
|
316
|
+
throw new MirrorReadFailure("MIRROR_RESPONSE_INVALID");
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
const original = observeMirrorMessageV1({ id: `${subject.kind}.hedera_mirror`, subject,
|
|
320
|
+
topic_id: topic, sequence_number: sequence, message_bytes: bytes });
|
|
321
|
+
return Object.freeze({ status: "resolved", reason_code: null,
|
|
322
|
+
observation: Object.freeze({ ...original, resolver_id: "hedera.mirror-rest.v1", facts: Object.freeze([
|
|
323
|
+
...original.facts,
|
|
324
|
+
{ key: "hedera.consensus_timestamp_exact", state: "available", value: first.consensus_timestamp },
|
|
325
|
+
...(transaction ? [{ key: "hedera.transaction_id", state: "available", value: transaction }] : []),
|
|
326
|
+
...(txConsensus ? [{ key: "hedera.transaction_consensus_timestamp_exact", state: "available", value: txConsensus }] : []),
|
|
327
|
+
]) }),
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
catch (error) {
|
|
331
|
+
if (error instanceof MirrorReadFailure)
|
|
332
|
+
return output("unavailable", error.code);
|
|
333
|
+
if (error instanceof TypeError)
|
|
334
|
+
return output("invalid", "MIRROR_REFERENCE_INVALID");
|
|
335
|
+
throw error;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
//# sourceMappingURL=hederaMirrorV1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hederaMirrorV1.js","sourceRoot":"","sources":["../../src/resolvers/hederaMirrorV1.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export declare const MAX_HCS11_V1_PROFILE_BYTES: number;
|
|
2
|
+
export type Hcs11V1Memo = Readonly<{
|
|
3
|
+
memo: string;
|
|
4
|
+
profile_reference: string;
|
|
5
|
+
protocol: "hcs-1" | "hcs-2";
|
|
6
|
+
topic_id: string;
|
|
7
|
+
}>;
|
|
8
|
+
export type Hcs11V1Profile = Readonly<{
|
|
9
|
+
version: string;
|
|
10
|
+
type: 1;
|
|
11
|
+
display_name: string;
|
|
12
|
+
uaid: string;
|
|
13
|
+
alias?: string;
|
|
14
|
+
bio?: string;
|
|
15
|
+
profileImage?: string;
|
|
16
|
+
properties?: Readonly<Record<string, unknown>>;
|
|
17
|
+
aiAgent: Readonly<{
|
|
18
|
+
type: 0 | 1;
|
|
19
|
+
capabilities: readonly number[];
|
|
20
|
+
model: string;
|
|
21
|
+
creator?: string;
|
|
22
|
+
}>;
|
|
23
|
+
}>;
|
|
24
|
+
export type Hcs11V1Input = Readonly<{
|
|
25
|
+
/** Original HCS-11 JSON bytes/string; offline content is caller-supplied. */
|
|
26
|
+
profile: Uint8Array | string;
|
|
27
|
+
/** Independently supplied expectations, not copied from the profile. */
|
|
28
|
+
expected_sha256?: string | null;
|
|
29
|
+
expected_uaid?: string | null;
|
|
30
|
+
expected_base_did?: string | null;
|
|
31
|
+
account_memo?: string | null;
|
|
32
|
+
expected_profile_reference?: string | null;
|
|
33
|
+
}>;
|
|
34
|
+
export type Hcs11V1Result = Readonly<{
|
|
35
|
+
status: "pass" | "fail" | "unsupported";
|
|
36
|
+
reason_code: string | null;
|
|
37
|
+
profile: Hcs11V1Profile | null;
|
|
38
|
+
sha256: string | null;
|
|
39
|
+
account_memo: Hcs11V1Memo | null;
|
|
40
|
+
/** No account-to-memo authenticity is implied. */
|
|
41
|
+
memo_reference_match: "match" | "mismatch" | "not_checked";
|
|
42
|
+
}>;
|
|
43
|
+
export declare class Hcs11V1Error extends Error {
|
|
44
|
+
readonly code: string;
|
|
45
|
+
constructor(code: string);
|
|
46
|
+
}
|
|
47
|
+
export declare function parseHcs11AccountMemoV1(value: unknown): Hcs11V1Memo;
|
|
48
|
+
export declare function parseHcs11AiAgentProfileV1(value: Uint8Array | string): Hcs11V1Profile;
|
|
49
|
+
/** Offline parsing + digest recomputation over normalized pinned profile material. */
|
|
50
|
+
export declare function verifyHcs11AiAgentProfileV1(input: Hcs11V1Input): Hcs11V1Result;
|
|
51
|
+
//# sourceMappingURL=hcs11V1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hcs11V1.d.ts","sourceRoot":"","sources":["../../../src/standards/hcs/hcs11V1.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,0BAA0B,QAAa,CAAC;AAKrD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,OAAO,EAAE,QAAQ,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtG,CAAC,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,6EAA6E;IAC7E,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC;IAC7B,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C,CAAC,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,kDAAkD;IAClD,oBAAoB,EAAE,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;CAC5D,CAAC,CAAC;AACH,qBAAa,YAAa,SAAQ,KAAK;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAClC;AAuBD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAWnE;AA2DD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,cAAc,CAoDrF;AA+BD,sFAAsF;AACtF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAsC9E"}
|