@xfuel/verify 0.3.0 → 0.3.3
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/README.md +37 -16
- package/dist/anchor-trust.d.ts +129 -0
- package/dist/anchor-trust.d.ts.map +1 -0
- package/dist/anchor-trust.js +395 -0
- package/dist/anchor-trust.js.map +1 -0
- package/dist/anchor-witness.d.ts +134 -7
- package/dist/anchor-witness.d.ts.map +1 -1
- package/dist/anchor-witness.js +497 -44
- package/dist/anchor-witness.js.map +1 -1
- 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.js +674 -30
- package/dist/cli.js.map +1 -1
- 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/index.d.ts +86 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +395 -118
- package/dist/index.js.map +1 -1
- package/dist/issuer-history.d.ts +19 -0
- package/dist/issuer-history.d.ts.map +1 -1
- package/dist/issuer-history.js +131 -75
- package/dist/issuer-history.js.map +1 -1
- 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/preimage.d.ts +29 -0
- package/dist/preimage.d.ts.map +1 -1
- package/dist/preimage.js +162 -2
- package/dist/preimage.js.map +1 -1
- package/dist/receipt-lane.d.ts +1 -0
- package/dist/receipt-lane.d.ts.map +1 -1
- package/dist/receipt-lane.js +5 -2
- package/dist/receipt-lane.js.map +1 -1
- package/dist/refusal.d.ts +5 -2
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +28 -6
- package/dist/refusal.js.map +1 -1
- 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/v11-receipt.d.ts +21 -0
- package/dist/v11-receipt.d.ts.map +1 -0
- package/dist/v11-receipt.js +351 -0
- package/dist/v11-receipt.js.map +1 -0
- package/package.json +1 -1
package/dist/anchor-witness.d.ts
CHANGED
|
@@ -1,13 +1,23 @@
|
|
|
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';
|
|
1
6
|
export declare const MEMO_PROGRAM_ID = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr";
|
|
2
7
|
export declare const MEMO_PROGRAM_ID_V1 = "Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo";
|
|
3
|
-
/**
|
|
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
|
+
*/
|
|
4
13
|
export declare const SOLANA_GENESIS: Record<string, string>;
|
|
5
14
|
export declare const BASE_MAINNET_CHAIN_ID = 8453;
|
|
6
15
|
export declare const ANCHOR_PROVES: string[];
|
|
7
16
|
export declare const ANCHOR_DOES_NOT_PROVE: string[];
|
|
8
17
|
export interface InclusionStep {
|
|
9
18
|
hash: string;
|
|
10
|
-
|
|
19
|
+
/** Ignored. RFC 9162 uses the leaf index and the tree size to pick the side. */
|
|
20
|
+
position?: string;
|
|
11
21
|
}
|
|
12
22
|
export interface AnchorReceipt {
|
|
13
23
|
task_id?: string;
|
|
@@ -18,16 +28,23 @@ export interface AnchorReceipt {
|
|
|
18
28
|
}
|
|
19
29
|
export interface AnchorInclusion {
|
|
20
30
|
task_id?: string;
|
|
31
|
+
status?: string;
|
|
32
|
+
anchor_status?: string;
|
|
21
33
|
leaf_index: number;
|
|
22
34
|
tree_size: number;
|
|
35
|
+
live_tree_size?: number | null;
|
|
36
|
+
anchored_tree_size?: number | null;
|
|
23
37
|
root: string;
|
|
24
38
|
leaf?: string;
|
|
25
39
|
row_hash?: string | null;
|
|
26
|
-
proof
|
|
40
|
+
proof?: InclusionStep[] | null;
|
|
27
41
|
}
|
|
28
42
|
export interface AnchorHead {
|
|
29
43
|
root: string;
|
|
30
44
|
tree_size?: number;
|
|
45
|
+
epoch?: number | null;
|
|
46
|
+
prev_epoch_root?: string | null;
|
|
47
|
+
prev_epoch_size?: number | null;
|
|
31
48
|
anchor_tx?: string | null;
|
|
32
49
|
anchor?: {
|
|
33
50
|
tx?: string | null;
|
|
@@ -40,6 +57,7 @@ export interface AnchorHead {
|
|
|
40
57
|
calldata?: string | null;
|
|
41
58
|
chain_id?: number | null;
|
|
42
59
|
status?: string;
|
|
60
|
+
from?: string | null;
|
|
43
61
|
} | null;
|
|
44
62
|
solana?: {
|
|
45
63
|
signature?: string | null;
|
|
@@ -47,8 +65,17 @@ export interface AnchorHead {
|
|
|
47
65
|
cluster?: string | null;
|
|
48
66
|
memo?: string | null;
|
|
49
67
|
status?: string | null;
|
|
68
|
+
fee_payer?: string | null;
|
|
50
69
|
} | null;
|
|
51
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;
|
|
52
79
|
}
|
|
53
80
|
interface SolanaIx {
|
|
54
81
|
program?: string;
|
|
@@ -70,6 +97,10 @@ export interface SolanaAnchorTx {
|
|
|
70
97
|
transaction?: {
|
|
71
98
|
message?: {
|
|
72
99
|
instructions?: SolanaIx[];
|
|
100
|
+
accountKeys?: Array<{
|
|
101
|
+
pubkey?: string;
|
|
102
|
+
signer?: boolean;
|
|
103
|
+
} | string>;
|
|
73
104
|
};
|
|
74
105
|
};
|
|
75
106
|
}
|
|
@@ -77,15 +108,19 @@ export interface BaseAnchorTx {
|
|
|
77
108
|
hash?: string;
|
|
78
109
|
input?: string;
|
|
79
110
|
chainId?: number;
|
|
111
|
+
from?: string;
|
|
80
112
|
}
|
|
81
113
|
export interface AnchorWitnessResult {
|
|
82
|
-
overall: 'verified' | 'partial' | 'failed';
|
|
114
|
+
overall: 'verified' | 'partial' | 'pending' | 'failed';
|
|
83
115
|
root: string | null;
|
|
84
116
|
inclusion: {
|
|
85
117
|
valid: boolean;
|
|
86
118
|
leaf: string | null;
|
|
87
119
|
leaf_source: string;
|
|
88
120
|
reason?: string;
|
|
121
|
+
unlogged_reason?: string;
|
|
122
|
+
anchored_tree_size?: number | null;
|
|
123
|
+
live_tree_size?: number | null;
|
|
89
124
|
};
|
|
90
125
|
solana: {
|
|
91
126
|
checked: boolean;
|
|
@@ -94,6 +129,7 @@ export interface AnchorWitnessResult {
|
|
|
94
129
|
slot: number | null;
|
|
95
130
|
cluster: string | null;
|
|
96
131
|
memo: string | null;
|
|
132
|
+
fee_payer: string | null;
|
|
97
133
|
reason?: string;
|
|
98
134
|
};
|
|
99
135
|
base: {
|
|
@@ -101,25 +137,84 @@ export interface AnchorWitnessResult {
|
|
|
101
137
|
valid: boolean;
|
|
102
138
|
tx: string | null;
|
|
103
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;
|
|
104
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'];
|
|
105
156
|
};
|
|
106
157
|
proves: string[];
|
|
107
158
|
does_not_prove: string[];
|
|
108
159
|
errors: string[];
|
|
160
|
+
issuer_pin: IssuerPinAssessment;
|
|
109
161
|
}
|
|
110
162
|
export declare function leafHash(bytes: Uint8Array): Buffer;
|
|
111
163
|
export declare function normalizeRoot(root: string | null | undefined): string | null;
|
|
112
|
-
/**
|
|
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
|
+
*/
|
|
113
179
|
export declare function verifyMerkleInclusion(leaf: Buffer, index: number, treeSize: number, rootHex: string, proof: InclusionStep[]): boolean;
|
|
114
|
-
export
|
|
180
|
+
export interface ParsedAnchorMemo {
|
|
181
|
+
version?: 1 | 2;
|
|
115
182
|
scope: string;
|
|
116
183
|
day: string;
|
|
117
184
|
root: string;
|
|
118
185
|
prev: string;
|
|
119
|
-
|
|
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;
|
|
120
193
|
export declare function extractMemos(tx: SolanaAnchorTx | null | undefined): string[];
|
|
121
194
|
export declare function fetchSolanaGenesisHash(rpcUrl: string): Promise<string>;
|
|
122
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;
|
|
123
218
|
export interface VerifyAnchoredRootInput {
|
|
124
219
|
receipt: AnchorReceipt;
|
|
125
220
|
inclusion: AnchorInclusion;
|
|
@@ -129,6 +224,38 @@ export interface VerifyAnchoredRootInput {
|
|
|
129
224
|
fetchSolanaTx?: (signature: string, rpcUrl: string) => Promise<SolanaAnchorTx | null>;
|
|
130
225
|
fetchGenesis?: (rpcUrl: string) => Promise<string>;
|
|
131
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;
|
|
132
259
|
}
|
|
133
260
|
/**
|
|
134
261
|
* Verify inclusion, then the Solana memo and the Base calldata for that root.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anchor-witness.d.ts","sourceRoot":"","sources":["../src/anchor-witness.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"anchor-witness.d.ts","sourceRoot":"","sources":["../src/anchor-witness.ts"],"names":[],"mappings":"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"}
|