chit402-verify 0.3.4 → 0.4.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/LICENSE +201 -201
- package/README.md +270 -82
- package/dist/anchor-trust.d.ts +144 -0
- package/dist/anchor-trust.d.ts.map +1 -0
- package/dist/anchor-trust.js +441 -0
- package/dist/anchor-trust.js.map +1 -0
- package/dist/anchor-witness.d.ts +265 -0
- package/dist/anchor-witness.d.ts.map +1 -0
- package/dist/anchor-witness.js +833 -0
- package/dist/anchor-witness.js.map +1 -0
- package/dist/base-payer.d.ts +65 -0
- package/dist/base-payer.d.ts.map +1 -0
- package/dist/base-payer.js +222 -0
- package/dist/base-payer.js.map +1 -0
- package/dist/binding.d.ts +52 -0
- package/dist/binding.d.ts.map +1 -0
- package/dist/binding.js +80 -0
- package/dist/binding.js.map +1 -0
- package/dist/canonical-preimage.d.ts +9 -0
- package/dist/canonical-preimage.d.ts.map +1 -0
- package/dist/canonical-preimage.js +25 -0
- package/dist/canonical-preimage.js.map +1 -0
- package/dist/carry-forward.d.ts +79 -0
- package/dist/carry-forward.d.ts.map +1 -0
- package/dist/carry-forward.js +184 -0
- package/dist/carry-forward.js.map +1 -0
- package/dist/cli.d.ts +18 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +2090 -0
- package/dist/cli.js.map +1 -0
- package/dist/epoch.d.ts +143 -0
- package/dist/epoch.d.ts.map +1 -0
- package/dist/epoch.js +352 -0
- package/dist/epoch.js.map +1 -0
- package/dist/head-binding.d.ts +24 -0
- package/dist/head-binding.d.ts.map +1 -0
- package/dist/head-binding.js +61 -0
- package/dist/head-binding.js.map +1 -0
- package/dist/index.d.ts +585 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1648 -0
- package/dist/index.js.map +1 -0
- package/dist/issuer-history.d.ts +151 -0
- package/dist/issuer-history.d.ts.map +1 -0
- package/dist/issuer-history.js +595 -0
- package/dist/issuer-history.js.map +1 -0
- package/dist/issuer-pin.d.ts +126 -0
- package/dist/issuer-pin.d.ts.map +1 -0
- package/dist/issuer-pin.js +567 -0
- package/dist/issuer-pin.js.map +1 -0
- package/dist/jcs.d.ts +8 -0
- package/dist/jcs.d.ts.map +1 -0
- package/dist/jcs.js +64 -0
- package/dist/jcs.js.map +1 -0
- package/dist/jws.d.ts +46 -0
- package/dist/jws.d.ts.map +1 -0
- package/dist/jws.js +129 -0
- package/dist/jws.js.map +1 -0
- package/dist/payer.d.ts +65 -0
- package/dist/payer.d.ts.map +1 -0
- package/dist/payer.js +148 -0
- package/dist/payer.js.map +1 -0
- package/dist/preimage.d.ts +78 -0
- package/dist/preimage.d.ts.map +1 -0
- package/dist/preimage.js +363 -0
- package/dist/preimage.js.map +1 -0
- package/dist/receipt-lane.d.ts +235 -0
- package/dist/receipt-lane.d.ts.map +1 -0
- package/dist/receipt-lane.js +446 -0
- package/dist/receipt-lane.js.map +1 -0
- package/dist/receipt-version.d.ts +98 -0
- package/dist/receipt-version.d.ts.map +1 -0
- package/dist/receipt-version.js +364 -0
- package/dist/receipt-version.js.map +1 -0
- package/dist/refusal.d.ts +93 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +249 -0
- package/dist/refusal.js.map +1 -0
- package/dist/request-binding.d.ts +7 -0
- package/dist/request-binding.d.ts.map +1 -0
- package/dist/request-binding.js +26 -0
- package/dist/request-binding.js.map +1 -0
- package/dist/row-hash.d.ts +22 -0
- package/dist/row-hash.d.ts.map +1 -0
- package/dist/row-hash.js +26 -0
- package/dist/row-hash.js.map +1 -0
- package/dist/shell.d.ts +65 -0
- package/dist/shell.d.ts.map +1 -0
- package/dist/shell.js +268 -0
- package/dist/shell.js.map +1 -0
- package/dist/solana-payer.d.ts +99 -0
- package/dist/solana-payer.d.ts.map +1 -0
- package/dist/solana-payer.js +258 -0
- package/dist/solana-payer.js.map +1 -0
- package/dist/v11-receipt.d.ts +23 -0
- package/dist/v11-receipt.d.ts.map +1 -0
- package/dist/v11-receipt.js +368 -0
- package/dist/v11-receipt.js.map +1 -0
- package/dist/verdict.d.ts +94 -0
- package/dist/verdict.d.ts.map +1 -0
- package/dist/verdict.js +381 -0
- package/dist/verdict.js.map +1 -0
- package/issuer-history.snapshot.json +1 -0
- package/package.json +70 -59
- package/cli.js +0 -27
- package/index.cjs +0 -8
- package/index.d.ts +0 -5
- package/index.js +0 -7
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { type AnchorWalletList } from './anchor-trust.js';
|
|
2
|
+
import { type EpochRecord } from './epoch.js';
|
|
3
|
+
import { type AssessIssuerPinInput, type IssuerPinAssessment } from './issuer-pin.js';
|
|
4
|
+
import type { IssuerHistoryDocument } from './issuer-history.js';
|
|
5
|
+
import type { Es256Jwk } from './jws.js';
|
|
6
|
+
export declare const MEMO_PROGRAM_ID = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr";
|
|
7
|
+
export declare const MEMO_PROGRAM_ID_V1 = "Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo";
|
|
8
|
+
/**
|
|
9
|
+
* Full `getGenesisHash` values. CAIP-2 references keep only the first 32
|
|
10
|
+
* characters, and `getGenesisHash` returns the whole base58 hash. A prefix
|
|
11
|
+
* compare never matches mainnet-beta.
|
|
12
|
+
*/
|
|
13
|
+
export declare const SOLANA_GENESIS: Record<string, string>;
|
|
14
|
+
export declare const BASE_MAINNET_CHAIN_ID = 8453;
|
|
15
|
+
export declare const ANCHOR_PROVES: string[];
|
|
16
|
+
export declare const ANCHOR_DOES_NOT_PROVE: string[];
|
|
17
|
+
export interface InclusionStep {
|
|
18
|
+
hash: string;
|
|
19
|
+
/** Ignored. RFC 9162 uses the leaf index and the tree size to pick the side. */
|
|
20
|
+
position?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface AnchorReceipt {
|
|
23
|
+
task_id?: string;
|
|
24
|
+
row_hash?: string | null;
|
|
25
|
+
book_chain?: {
|
|
26
|
+
row_hash?: string | null;
|
|
27
|
+
} | null;
|
|
28
|
+
}
|
|
29
|
+
export interface AnchorInclusion {
|
|
30
|
+
task_id?: string;
|
|
31
|
+
status?: string;
|
|
32
|
+
anchor_status?: string;
|
|
33
|
+
leaf_index: number;
|
|
34
|
+
tree_size: number;
|
|
35
|
+
live_tree_size?: number | null;
|
|
36
|
+
anchored_tree_size?: number | null;
|
|
37
|
+
root: string;
|
|
38
|
+
leaf?: string;
|
|
39
|
+
row_hash?: string | null;
|
|
40
|
+
proof?: InclusionStep[] | null;
|
|
41
|
+
}
|
|
42
|
+
export interface AnchorHead {
|
|
43
|
+
root: string;
|
|
44
|
+
tree_size?: number;
|
|
45
|
+
epoch?: number | null;
|
|
46
|
+
prev_epoch_root?: string | null;
|
|
47
|
+
prev_epoch_size?: number | null;
|
|
48
|
+
anchor_tx?: string | null;
|
|
49
|
+
anchor?: {
|
|
50
|
+
tx?: string | null;
|
|
51
|
+
calldata?: string | null;
|
|
52
|
+
chain_id?: number | null;
|
|
53
|
+
} | null;
|
|
54
|
+
anchors?: {
|
|
55
|
+
base?: {
|
|
56
|
+
tx?: string | null;
|
|
57
|
+
calldata?: string | null;
|
|
58
|
+
chain_id?: number | null;
|
|
59
|
+
status?: string;
|
|
60
|
+
from?: string | null;
|
|
61
|
+
} | null;
|
|
62
|
+
solana?: {
|
|
63
|
+
signature?: string | null;
|
|
64
|
+
slot?: number | null;
|
|
65
|
+
cluster?: string | null;
|
|
66
|
+
memo?: string | null;
|
|
67
|
+
status?: string | null;
|
|
68
|
+
fee_payer?: string | null;
|
|
69
|
+
} | null;
|
|
70
|
+
} | null;
|
|
71
|
+
issuer_signature?: {
|
|
72
|
+
jws?: string;
|
|
73
|
+
kid?: string;
|
|
74
|
+
issuer_jwk?: Es256Jwk;
|
|
75
|
+
};
|
|
76
|
+
schema?: string;
|
|
77
|
+
payload_version?: number;
|
|
78
|
+
published_at?: string | null;
|
|
79
|
+
}
|
|
80
|
+
interface SolanaIx {
|
|
81
|
+
program?: string;
|
|
82
|
+
programId?: string;
|
|
83
|
+
parsed?: string | {
|
|
84
|
+
memo?: string;
|
|
85
|
+
info?: string;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export interface SolanaAnchorTx {
|
|
89
|
+
slot?: number;
|
|
90
|
+
meta?: {
|
|
91
|
+
err?: unknown;
|
|
92
|
+
logMessages?: string[];
|
|
93
|
+
innerInstructions?: Array<{
|
|
94
|
+
instructions?: SolanaIx[];
|
|
95
|
+
}>;
|
|
96
|
+
} | null;
|
|
97
|
+
transaction?: {
|
|
98
|
+
message?: {
|
|
99
|
+
instructions?: SolanaIx[];
|
|
100
|
+
accountKeys?: Array<{
|
|
101
|
+
pubkey?: string;
|
|
102
|
+
signer?: boolean;
|
|
103
|
+
} | string>;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export interface BaseAnchorTx {
|
|
108
|
+
hash?: string;
|
|
109
|
+
input?: string;
|
|
110
|
+
chainId?: number;
|
|
111
|
+
from?: string;
|
|
112
|
+
}
|
|
113
|
+
export interface AnchorWitnessResult {
|
|
114
|
+
overall: 'verified' | 'partial' | 'pending' | 'failed' | 'not_in_log';
|
|
115
|
+
root: string | null;
|
|
116
|
+
inclusion: {
|
|
117
|
+
valid: boolean;
|
|
118
|
+
leaf: string | null;
|
|
119
|
+
leaf_source: string;
|
|
120
|
+
reason?: string;
|
|
121
|
+
unlogged_reason?: string;
|
|
122
|
+
anchored_tree_size?: number | null;
|
|
123
|
+
live_tree_size?: number | null;
|
|
124
|
+
};
|
|
125
|
+
solana: {
|
|
126
|
+
checked: boolean;
|
|
127
|
+
valid: boolean;
|
|
128
|
+
signature: string | null;
|
|
129
|
+
slot: number | null;
|
|
130
|
+
cluster: string | null;
|
|
131
|
+
memo: string | null;
|
|
132
|
+
fee_payer: string | null;
|
|
133
|
+
reason?: string;
|
|
134
|
+
};
|
|
135
|
+
base: {
|
|
136
|
+
checked: boolean;
|
|
137
|
+
valid: boolean;
|
|
138
|
+
tx: string | null;
|
|
139
|
+
chain_id: number | null;
|
|
140
|
+
from: string | null;
|
|
141
|
+
reason?: string;
|
|
142
|
+
};
|
|
143
|
+
head_signature: {
|
|
144
|
+
checked: boolean;
|
|
145
|
+
valid: boolean;
|
|
146
|
+
kid: string | null;
|
|
147
|
+
trust: string | null;
|
|
148
|
+
reason?: string;
|
|
149
|
+
message?: string;
|
|
150
|
+
};
|
|
151
|
+
anchor_wallets: {
|
|
152
|
+
base_from: string | null;
|
|
153
|
+
solana_fee_payer: string | null;
|
|
154
|
+
sources: AnchorWalletList['sources'];
|
|
155
|
+
not_consulted: AnchorWalletList['not_consulted'];
|
|
156
|
+
};
|
|
157
|
+
proves: string[];
|
|
158
|
+
does_not_prove: string[];
|
|
159
|
+
errors: string[];
|
|
160
|
+
issuer_pin: IssuerPinAssessment;
|
|
161
|
+
}
|
|
162
|
+
export declare function leafHash(bytes: Uint8Array): Buffer;
|
|
163
|
+
export declare function normalizeRoot(root: string | null | undefined): string | null;
|
|
164
|
+
/**
|
|
165
|
+
* RFC 9162 fold. Returns the recomputed root, or null when the proof is the
|
|
166
|
+
* wrong length for `(index, treeSize)` or a sibling is not 32 bytes.
|
|
167
|
+
* Index and tree size choose the side. A `position` label is not read here.
|
|
168
|
+
*/
|
|
169
|
+
export declare function inclusionRoot(leaf: Buffer, index: number, treeSize: number, proof: InclusionStep[]): string | null;
|
|
170
|
+
/**
|
|
171
|
+
* RFC 9162 §2.1.3.2 inclusion. `index` and `treeSize` choose left or right
|
|
172
|
+
* at each step. A `position` label is not the source of that side. When a
|
|
173
|
+
* label is present it must name the side the index already chose, so a
|
|
174
|
+
* swapped label fails. An omitted label does not. A proof whose length is
|
|
175
|
+
* not the length that pair requires is rejected, as is `index >= treeSize`.
|
|
176
|
+
* Leaf and node bytes stay SHA-256(0x00 || leaf) and SHA-256(0x01 || left ||
|
|
177
|
+
* right). Consistency proofs and the empty root are not this function.
|
|
178
|
+
*/
|
|
179
|
+
export declare function verifyMerkleInclusion(leaf: Buffer, index: number, treeSize: number, rootHex: string, proof: InclusionStep[]): boolean;
|
|
180
|
+
export interface ParsedAnchorMemo {
|
|
181
|
+
version?: 1 | 2;
|
|
182
|
+
scope: string;
|
|
183
|
+
day: string;
|
|
184
|
+
root: string;
|
|
185
|
+
prev: string;
|
|
186
|
+
epoch?: number;
|
|
187
|
+
prev_epoch_root?: string;
|
|
188
|
+
prev_epoch_size?: number;
|
|
189
|
+
bundle_index_hash?: string;
|
|
190
|
+
}
|
|
191
|
+
/** v1 memos stay valid. v2 adds epoch, prev_epoch_root, prev_epoch_size, and the bundle index hash. */
|
|
192
|
+
export declare function parseAnchorMemo(memo: string): ParsedAnchorMemo | null;
|
|
193
|
+
export declare function extractMemos(tx: SolanaAnchorTx | null | undefined): string[];
|
|
194
|
+
export declare function fetchSolanaGenesisHash(rpcUrl: string): Promise<string>;
|
|
195
|
+
export declare function fetchBaseAnchorTransaction(txHash: string, rpcUrl: string): Promise<BaseAnchorTx | null>;
|
|
196
|
+
export interface NewestAnchor {
|
|
197
|
+
root: string;
|
|
198
|
+
signature: string;
|
|
199
|
+
slot?: number | null;
|
|
200
|
+
blockTime?: number | null;
|
|
201
|
+
}
|
|
202
|
+
/** Newest-first page size for `getSignaturesForAddress`. */
|
|
203
|
+
export declare const NEWEST_ANCHOR_PAGE_LIMIT = 25;
|
|
204
|
+
/** Full pages walked before a missing memo is `newest_anchor_unavailable`. */
|
|
205
|
+
export declare const NEWEST_ANCHOR_PAGE_CAP = 8;
|
|
206
|
+
/**
|
|
207
|
+
* Newest chit402 root memo paid by this fee payer. `getSignaturesForAddress`
|
|
208
|
+
* is newest-first and includes transactions that only mention the address.
|
|
209
|
+
* A memo whose fee payer is anyone else is ignored and is not newer.
|
|
210
|
+
* Pages use `before` until the first memo this payer actually paid. A listed
|
|
211
|
+
* signature whose transaction is null or whose fetch throws fails the scan.
|
|
212
|
+
* Walking `NEWEST_ANCHOR_PAGE_CAP` full pages without such a memo fails the scan.
|
|
213
|
+
* A short page with no memo from this payer means this payer has no anchor.
|
|
214
|
+
*/
|
|
215
|
+
export declare function fetchNewestSolanaAnchorRoot(feePayer: string, rpcUrl: string, fetchTx?: (signature: string, rpcUrl: string) => Promise<SolanaAnchorTx | null>): Promise<NewestAnchor | null>;
|
|
216
|
+
/** Fee payer is the first account. A parsed key that is explicitly not a signer does not count. */
|
|
217
|
+
export declare function solanaFeePayer(tx: SolanaAnchorTx | null | undefined): string | null;
|
|
218
|
+
export interface VerifyAnchoredRootInput {
|
|
219
|
+
receipt: AnchorReceipt;
|
|
220
|
+
inclusion: AnchorInclusion;
|
|
221
|
+
head: AnchorHead;
|
|
222
|
+
baseRpcUrl?: string;
|
|
223
|
+
solanaRpcUrl?: string;
|
|
224
|
+
fetchSolanaTx?: (signature: string, rpcUrl: string) => Promise<SolanaAnchorTx | null>;
|
|
225
|
+
fetchGenesis?: (rpcUrl: string) => Promise<string>;
|
|
226
|
+
fetchBaseTx?: (txHash: string, rpcUrl: string) => Promise<BaseAnchorTx | null>;
|
|
227
|
+
/**
|
|
228
|
+
* When set, and the head claims an anchor, the served root must equal the
|
|
229
|
+
* newest Solana memo paid by `anchors.solana.fee_payer`, and that payer
|
|
230
|
+
* must be on the signed anchor-wallet list. A memo from any other payer
|
|
231
|
+
* is ignored. A missing or unlisted fee payer is `newest_anchor_unavailable`.
|
|
232
|
+
* The CLI sets this for `--rpc`.
|
|
233
|
+
*/
|
|
234
|
+
checkNewestAnchor?: boolean;
|
|
235
|
+
fetchNewestAnchor?: (feePayer: string, rpcUrl: string) => Promise<NewestAnchor | null>;
|
|
236
|
+
epochRecord?: EpochRecord | null;
|
|
237
|
+
verifyEpochSignature?: (jws: string) => boolean;
|
|
238
|
+
/**
|
|
239
|
+
* Local pin bytes. Anchor mode does not fetch them. A receipt or head
|
|
240
|
+
* that carries `issuer_key_pin` fails closed when this is omitted.
|
|
241
|
+
*/
|
|
242
|
+
issuerPin?: AssessIssuerPinInput | null;
|
|
243
|
+
jwks?: {
|
|
244
|
+
keys: Es256Jwk[];
|
|
245
|
+
};
|
|
246
|
+
trustedKids?: readonly string[];
|
|
247
|
+
issuerHistory?: IssuerHistoryDocument | null;
|
|
248
|
+
strictIssuerHistory?: boolean;
|
|
249
|
+
/** Parsed `chit402.anchor_wallets.v1`. Verified here. A bad document fails closed. */
|
|
250
|
+
anchorWalletDocument?: {
|
|
251
|
+
schema?: string;
|
|
252
|
+
base?: unknown;
|
|
253
|
+
solana?: unknown;
|
|
254
|
+
issuer_signature?: {
|
|
255
|
+
jws?: string;
|
|
256
|
+
issuer_jwk?: Es256Jwk;
|
|
257
|
+
};
|
|
258
|
+
} | null;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Verify inclusion, then the Solana memo and the Base calldata for that root.
|
|
262
|
+
*/
|
|
263
|
+
export declare function verifyAnchoredRoot(input: VerifyAnchoredRootInput): Promise<AnchorWitnessResult>;
|
|
264
|
+
export {};
|
|
265
|
+
//# sourceMappingURL=anchor-witness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor-witness.d.ts","sourceRoot":"","sources":["../src/anchor-witness.ts"],"names":[],"mappings":"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"}
|