@collectorcrypt/vrf-client 0.1.2 → 0.1.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/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/operations.d.ts +78 -17
- package/dist/operations.d.ts.map +1 -1
- package/dist/operations.js +107 -52
- package/dist/operations.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +3 -0
- package/src/operations.ts +179 -58
package/dist/index.d.ts
CHANGED
|
@@ -10,8 +10,8 @@ export { CC_VRF_PROGRAM_ID, SUITE_EDWARDS25519_SHA512_TAI } from "./constants";
|
|
|
10
10
|
export { deriveAuthorityAddress, deriveProofCommitAddress, deriveProofCommitWithBetaAddress, memoHash, alphaHash, proofHash, encodeLabel, } from "./addresses";
|
|
11
11
|
export { forceLightV2, buildCreateContext, buildCommitProofContext, buildReadOnlyAuthorityContext, buildMutateContext, } from "./light";
|
|
12
12
|
export { getProgram } from "./program";
|
|
13
|
-
export { buildInitAuthorityIx, buildFreezeAuthorityIx, buildRevokeAuthorityIx, buildCommitProofIx, buildCommitProofEventIx, buildCommitProofWithBetaIx, fetchAuthority, fetchProofCommit, fetchProofCommitWithBeta, fetchProofCommitEvents, decodeAuthority, decodeProofCommit, decodeProofCommitWithBeta, asTx, } from "./operations";
|
|
14
|
-
export type { InitAuthorityInput, FreezeAuthorityInput, CommitProofInput, ProofCommitEvent, } from "./operations";
|
|
13
|
+
export { buildInitAuthorityIx, buildFreezeAuthorityIx, buildRevokeAuthorityIx, buildCommitProofIx, buildCommitProofEventIx, buildCommitProofWithBetaIx, fetchAuthority, fetchProofCommit, fetchProofCommitWithBeta, fetchProofCommitEvents, findProofCommitEvents, decodeAuthority, decodeProofCommit, decodeProofCommitWithBeta, asTx, } from "./operations";
|
|
14
|
+
export type { InitAuthorityInput, FreezeAuthorityInput, CommitProofInput, ProofCommitEvent, ProofCommitEventQuery, ProofCommitEventResult, } from "./operations";
|
|
15
15
|
export { verifyEndToEnd, verifyAuthorityCommitEndToEnd, pickCanonicalCommit, } from "./verifyEndToEnd";
|
|
16
16
|
export type { OnChainAuthority, OnChainCommit, VerifyAuthorityCommitEndToEndInput, VerifyAuthorityCommitEndToEndResult, VerifyEndToEndInput, VerifyEndToEndResult, PickCanonicalResult, } from "./verifyEndToEnd";
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gCAAgC,EAChC,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,IAAI,GACL,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gCAAgC,EAChC,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,IAAI,GACL,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,kCAAkC,EAClC,mCAAmC,EACnC,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* consumers can publish, commit, and verify VRF proofs with one import.
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.pickCanonicalCommit = exports.verifyAuthorityCommitEndToEnd = exports.verifyEndToEnd = exports.asTx = exports.decodeProofCommitWithBeta = exports.decodeProofCommit = exports.decodeAuthority = exports.fetchProofCommitEvents = exports.fetchProofCommitWithBeta = exports.fetchProofCommit = exports.fetchAuthority = exports.buildCommitProofWithBetaIx = exports.buildCommitProofEventIx = exports.buildCommitProofIx = exports.buildRevokeAuthorityIx = exports.buildFreezeAuthorityIx = exports.buildInitAuthorityIx = exports.getProgram = exports.buildMutateContext = exports.buildReadOnlyAuthorityContext = exports.buildCommitProofContext = exports.buildCreateContext = exports.forceLightV2 = exports.encodeLabel = exports.proofHash = exports.alphaHash = exports.memoHash = exports.deriveProofCommitWithBetaAddress = exports.deriveProofCommitAddress = exports.deriveAuthorityAddress = exports.SUITE_EDWARDS25519_SHA512_TAI = exports.CC_VRF_PROGRAM_ID = exports.hexToBytes = exports.bytesToHex = exports.vrfProofToHash = exports.verifyVRF = exports.proveVRF = exports.publicKeyFromSeed = exports.generateKeyPair = void 0;
|
|
10
|
+
exports.pickCanonicalCommit = exports.verifyAuthorityCommitEndToEnd = exports.verifyEndToEnd = exports.asTx = exports.decodeProofCommitWithBeta = exports.decodeProofCommit = exports.decodeAuthority = exports.findProofCommitEvents = exports.fetchProofCommitEvents = exports.fetchProofCommitWithBeta = exports.fetchProofCommit = exports.fetchAuthority = exports.buildCommitProofWithBetaIx = exports.buildCommitProofEventIx = exports.buildCommitProofIx = exports.buildRevokeAuthorityIx = exports.buildFreezeAuthorityIx = exports.buildInitAuthorityIx = exports.getProgram = exports.buildMutateContext = exports.buildReadOnlyAuthorityContext = exports.buildCommitProofContext = exports.buildCreateContext = exports.forceLightV2 = exports.encodeLabel = exports.proofHash = exports.alphaHash = exports.memoHash = exports.deriveProofCommitWithBetaAddress = exports.deriveProofCommitAddress = exports.deriveAuthorityAddress = exports.SUITE_EDWARDS25519_SHA512_TAI = exports.CC_VRF_PROGRAM_ID = exports.hexToBytes = exports.bytesToHex = exports.vrfProofToHash = exports.verifyVRF = exports.proveVRF = exports.publicKeyFromSeed = exports.generateKeyPair = void 0;
|
|
11
11
|
// Re-export the ECVRF primitives so consumers don't need a second import.
|
|
12
12
|
var ecvrf_1 = require("@collectorcrypt/ecvrf");
|
|
13
13
|
Object.defineProperty(exports, "generateKeyPair", { enumerable: true, get: function () { return ecvrf_1.generateKeyPair; } });
|
|
@@ -47,6 +47,7 @@ Object.defineProperty(exports, "fetchAuthority", { enumerable: true, get: functi
|
|
|
47
47
|
Object.defineProperty(exports, "fetchProofCommit", { enumerable: true, get: function () { return operations_1.fetchProofCommit; } });
|
|
48
48
|
Object.defineProperty(exports, "fetchProofCommitWithBeta", { enumerable: true, get: function () { return operations_1.fetchProofCommitWithBeta; } });
|
|
49
49
|
Object.defineProperty(exports, "fetchProofCommitEvents", { enumerable: true, get: function () { return operations_1.fetchProofCommitEvents; } });
|
|
50
|
+
Object.defineProperty(exports, "findProofCommitEvents", { enumerable: true, get: function () { return operations_1.findProofCommitEvents; } });
|
|
50
51
|
Object.defineProperty(exports, "decodeAuthority", { enumerable: true, get: function () { return operations_1.decodeAuthority; } });
|
|
51
52
|
Object.defineProperty(exports, "decodeProofCommit", { enumerable: true, get: function () { return operations_1.decodeProofCommit; } });
|
|
52
53
|
Object.defineProperty(exports, "decodeProofCommitWithBeta", { enumerable: true, get: function () { return operations_1.decodeProofCommitWithBeta; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,0EAA0E;AAC1E,+CAQ+B;AAP7B,wGAAA,eAAe,OAAA;AACf,0GAAA,iBAAiB,OAAA;AACjB,iGAAA,QAAQ,OAAA;AACR,kGAAA,SAAS,OAAA;AACT,uGAAA,cAAc,OAAA;AACd,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AAGZ,yCAA+E;AAAtE,8GAAA,iBAAiB,OAAA;AAAE,0HAAA,6BAA6B,OAAA;AAEzD,yCAQqB;AAPnB,mHAAA,sBAAsB,OAAA;AACtB,qHAAA,wBAAwB,OAAA;AACxB,6HAAA,gCAAgC,OAAA;AAChC,qGAAA,QAAQ,OAAA;AACR,sGAAA,SAAS,OAAA;AACT,sGAAA,SAAS,OAAA;AACT,wGAAA,WAAW,OAAA;AAGb,iCAMiB;AALf,qGAAA,YAAY,OAAA;AACZ,2GAAA,kBAAkB,OAAA;AAClB,gHAAA,uBAAuB,OAAA;AACvB,sHAAA,6BAA6B,OAAA;AAC7B,2GAAA,kBAAkB,OAAA;AAGpB,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AAEnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,0EAA0E;AAC1E,+CAQ+B;AAP7B,wGAAA,eAAe,OAAA;AACf,0GAAA,iBAAiB,OAAA;AACjB,iGAAA,QAAQ,OAAA;AACR,kGAAA,SAAS,OAAA;AACT,uGAAA,cAAc,OAAA;AACd,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AAGZ,yCAA+E;AAAtE,8GAAA,iBAAiB,OAAA;AAAE,0HAAA,6BAA6B,OAAA;AAEzD,yCAQqB;AAPnB,mHAAA,sBAAsB,OAAA;AACtB,qHAAA,wBAAwB,OAAA;AACxB,6HAAA,gCAAgC,OAAA;AAChC,qGAAA,QAAQ,OAAA;AACR,sGAAA,SAAS,OAAA;AACT,sGAAA,SAAS,OAAA;AACT,wGAAA,WAAW,OAAA;AAGb,iCAMiB;AALf,qGAAA,YAAY,OAAA;AACZ,2GAAA,kBAAkB,OAAA;AAClB,gHAAA,uBAAuB,OAAA;AACvB,sHAAA,6BAA6B,OAAA;AAC7B,2GAAA,kBAAkB,OAAA;AAGpB,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AAEnB,2CAgBsB;AAfpB,kHAAA,oBAAoB,OAAA;AACpB,oHAAA,sBAAsB,OAAA;AACtB,oHAAA,sBAAsB,OAAA;AACtB,gHAAA,kBAAkB,OAAA;AAClB,qHAAA,uBAAuB,OAAA;AACvB,wHAAA,0BAA0B,OAAA;AAC1B,4GAAA,cAAc,OAAA;AACd,8GAAA,gBAAgB,OAAA;AAChB,sHAAA,wBAAwB,OAAA;AACxB,oHAAA,sBAAsB,OAAA;AACtB,mHAAA,qBAAqB,OAAA;AACrB,6GAAA,eAAe,OAAA;AACf,+GAAA,iBAAiB,OAAA;AACjB,uHAAA,yBAAyB,OAAA;AACzB,kGAAA,IAAI,OAAA;AAYN,mDAI0B;AAHxB,gHAAA,cAAc,OAAA;AACd,+HAAA,6BAA6B,OAAA;AAC7B,qHAAA,mBAAmB,OAAA"}
|
package/dist/operations.d.ts
CHANGED
|
@@ -113,33 +113,94 @@ export interface ProofCommitEvent {
|
|
|
113
113
|
onChainCommit: OnChainCommit;
|
|
114
114
|
}
|
|
115
115
|
/**
|
|
116
|
-
*
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
* Options for {@link findProofCommitEvents} and {@link fetchProofCommitEvents}.
|
|
117
|
+
*/
|
|
118
|
+
export interface ProofCommitEventQuery {
|
|
119
|
+
/**
|
|
120
|
+
* Look up exactly this transaction signature instead of scanning the owner's
|
|
121
|
+
* wallet history. This is the ROBUST path: a committer already knows the
|
|
122
|
+
* signature it submitted, so it sidesteps the history-scan failure mode
|
|
123
|
+
* entirely (see {@link ProofCommitEventResult.truncated}). When set, `limit`
|
|
124
|
+
* is ignored.
|
|
125
|
+
*/
|
|
126
|
+
signature?: string;
|
|
127
|
+
/**
|
|
128
|
+
* Max number of recent signatures to scan when walking the owner's wallet
|
|
129
|
+
* history (default 1000). Only used when `signature` is not provided.
|
|
130
|
+
*
|
|
131
|
+
* NOTE: this counts ALL of the owner's transactions, not just VRF commits —
|
|
132
|
+
* on a busy mainnet wallet the target commit can fall outside the window, in
|
|
133
|
+
* which case the result is flagged `truncated` rather than silently returning
|
|
134
|
+
* an empty list.
|
|
135
|
+
*/
|
|
136
|
+
limit?: number;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Result of {@link findProofCommitEvents}. Unlike a bare event array, this lets
|
|
140
|
+
* a caller distinguish "this memo was never committed" from "I could not
|
|
141
|
+
* confirm it within the scanned window / some transactions were unfetchable".
|
|
142
|
+
*/
|
|
143
|
+
export interface ProofCommitEventResult {
|
|
144
|
+
/** Matching events, ordered oldest → newest. */
|
|
145
|
+
events: ProofCommitEvent[];
|
|
146
|
+
/**
|
|
147
|
+
* True if the wallet-history scan hit `limit` before reaching the end of the
|
|
148
|
+
* owner's history. When true, an empty or short `events` list is NOT
|
|
149
|
+
* conclusive — the commit may simply be older than the scanned window.
|
|
150
|
+
* Re-query with a larger `limit`, or (preferably) pass the known `signature`.
|
|
151
|
+
* Always false when `signature` was provided.
|
|
152
|
+
*/
|
|
153
|
+
truncated: boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Signatures whose transaction could not be fetched (RPC retention gap or
|
|
156
|
+
* throttling — `getTransaction` returned null or threw). A genuine event may
|
|
157
|
+
* be hiding in one of these, so an empty `events` list is likewise
|
|
158
|
+
* inconclusive when this is non-empty.
|
|
159
|
+
*/
|
|
160
|
+
unfetchedSignatures: string[];
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Find `VrfProofCommitted` events for a `(owner, label, memo)` tuple, returning
|
|
164
|
+
* a structured result that surfaces scan completeness.
|
|
165
|
+
*
|
|
166
|
+
* Two modes:
|
|
167
|
+
* - Pass `query.signature` to fetch ONE known transaction directly. This is
|
|
168
|
+
* the recommended path for any caller that submitted the commit (it already
|
|
169
|
+
* has the signature) and is immune to the history-scan limit below.
|
|
170
|
+
* - Otherwise the owner's wallet history is paginated (newest → oldest) up to
|
|
171
|
+
* `query.limit` signatures (default 1000). Because this counts every
|
|
172
|
+
* transaction the owner signed — not just VRF commits — a busy mainnet
|
|
173
|
+
* wallet can push the target commit past the window; that case is reported
|
|
174
|
+
* via `truncated: true` instead of an indistinguishable empty array.
|
|
119
175
|
*
|
|
120
|
-
* IMPORTANT: this can return MORE than one
|
|
121
|
-
*
|
|
176
|
+
* IMPORTANT: this can return MORE than one event. The on-chain program does not
|
|
177
|
+
* enforce uniqueness in event mode. A safe verifier:
|
|
122
178
|
*
|
|
123
179
|
* 1. Collects all matches for the requested memo.
|
|
124
180
|
* 2. Runs `verifyAuthorityCommitEndToEnd` against each candidate proof.
|
|
125
181
|
* 3. Accepts the unique row where the ECVRF math passes.
|
|
126
182
|
*
|
|
127
|
-
* Because ECVRF proofs are deterministic for a fixed (pk, alpha), at most
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
183
|
+
* Because ECVRF proofs are deterministic for a fixed (pk, alpha), at most one
|
|
184
|
+
* candidate can have a valid `proof_hash`. The presence of extra events is
|
|
185
|
+
* detectable noise, not a successful forgery — but a naive verifier that picks
|
|
186
|
+
* "the latest event" without running ECVRF can be misled (see
|
|
187
|
+
* `pickCanonicalCommit`).
|
|
132
188
|
*
|
|
133
189
|
* `connection` and `programId` are passed in explicitly so log scanning works
|
|
134
|
-
* against a plain Solana RPC. Fetching compressed authority state still needs
|
|
135
|
-
*
|
|
190
|
+
* against a plain Solana RPC. Fetching compressed authority state still needs a
|
|
191
|
+
* Photon-capable RPC unless the verifier already has that state.
|
|
192
|
+
*/
|
|
193
|
+
export declare function findProofCommitEvents(program: Program, connection: Connection, owner: PublicKey, label: string | Uint8Array, memo: string | Uint8Array, query?: ProofCommitEventQuery): Promise<ProofCommitEventResult>;
|
|
194
|
+
/**
|
|
195
|
+
* Backward-compatible wrapper around {@link findProofCommitEvents} that returns
|
|
196
|
+
* just the events (oldest → newest).
|
|
136
197
|
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
198
|
+
* Prefer {@link findProofCommitEvents} when you need to tell "not committed"
|
|
199
|
+
* apart from "scan was truncated / some transactions were unfetchable" — on a
|
|
200
|
+
* busy mainnet wallet a bare empty array is ambiguous. Pass `options.signature`
|
|
201
|
+
* to look up a known commit directly and skip the history scan entirely.
|
|
139
202
|
*/
|
|
140
|
-
export declare function fetchProofCommitEvents(program: Program, connection: Connection, owner: PublicKey, label: string | Uint8Array, memo: string | Uint8Array, options?:
|
|
141
|
-
limit?: number;
|
|
142
|
-
}): Promise<ProofCommitEvent[]>;
|
|
203
|
+
export declare function fetchProofCommitEvents(program: Program, connection: Connection, owner: PublicKey, label: string | Uint8Array, memo: string | Uint8Array, options?: ProofCommitEventQuery): Promise<ProofCommitEvent[]>;
|
|
143
204
|
/**
|
|
144
205
|
* Build the commit_proof_with_beta instruction (PDA mode + on-chain beta).
|
|
145
206
|
* Like buildCommitProofIx, but additionally stores the 64-byte ECVRF beta
|
package/dist/operations.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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"}
|
package/dist/operations.js
CHANGED
|
@@ -43,6 +43,7 @@ exports.buildFreezeAuthorityIx = buildFreezeAuthorityIx;
|
|
|
43
43
|
exports.buildRevokeAuthorityIx = buildRevokeAuthorityIx;
|
|
44
44
|
exports.buildCommitProofIx = buildCommitProofIx;
|
|
45
45
|
exports.buildCommitProofEventIx = buildCommitProofEventIx;
|
|
46
|
+
exports.findProofCommitEvents = findProofCommitEvents;
|
|
46
47
|
exports.fetchProofCommitEvents = fetchProofCommitEvents;
|
|
47
48
|
exports.buildCommitProofWithBetaIx = buildCommitProofWithBetaIx;
|
|
48
49
|
exports.fetchProofCommitWithBeta = fetchProofCommitWithBeta;
|
|
@@ -252,91 +253,145 @@ async function buildCommitProofEventIx(program, rpc, input) {
|
|
|
252
253
|
return ix;
|
|
253
254
|
}
|
|
254
255
|
/**
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
* exist.
|
|
256
|
+
* Find `VrfProofCommitted` events for a `(owner, label, memo)` tuple, returning
|
|
257
|
+
* a structured result that surfaces scan completeness.
|
|
258
258
|
*
|
|
259
|
-
*
|
|
260
|
-
*
|
|
259
|
+
* Two modes:
|
|
260
|
+
* - Pass `query.signature` to fetch ONE known transaction directly. This is
|
|
261
|
+
* the recommended path for any caller that submitted the commit (it already
|
|
262
|
+
* has the signature) and is immune to the history-scan limit below.
|
|
263
|
+
* - Otherwise the owner's wallet history is paginated (newest → oldest) up to
|
|
264
|
+
* `query.limit` signatures (default 1000). Because this counts every
|
|
265
|
+
* transaction the owner signed — not just VRF commits — a busy mainnet
|
|
266
|
+
* wallet can push the target commit past the window; that case is reported
|
|
267
|
+
* via `truncated: true` instead of an indistinguishable empty array.
|
|
268
|
+
*
|
|
269
|
+
* IMPORTANT: this can return MORE than one event. The on-chain program does not
|
|
270
|
+
* enforce uniqueness in event mode. A safe verifier:
|
|
261
271
|
*
|
|
262
272
|
* 1. Collects all matches for the requested memo.
|
|
263
273
|
* 2. Runs `verifyAuthorityCommitEndToEnd` against each candidate proof.
|
|
264
274
|
* 3. Accepts the unique row where the ECVRF math passes.
|
|
265
275
|
*
|
|
266
|
-
* Because ECVRF proofs are deterministic for a fixed (pk, alpha), at most
|
|
267
|
-
*
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
276
|
+
* Because ECVRF proofs are deterministic for a fixed (pk, alpha), at most one
|
|
277
|
+
* candidate can have a valid `proof_hash`. The presence of extra events is
|
|
278
|
+
* detectable noise, not a successful forgery — but a naive verifier that picks
|
|
279
|
+
* "the latest event" without running ECVRF can be misled (see
|
|
280
|
+
* `pickCanonicalCommit`).
|
|
271
281
|
*
|
|
272
282
|
* `connection` and `programId` are passed in explicitly so log scanning works
|
|
273
|
-
* against a plain Solana RPC. Fetching compressed authority state still needs
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
* `limit` caps how many recent signatures to scan (default 1000); pagination
|
|
277
|
-
* happens automatically via `getSignaturesForAddress`'s `before` cursor.
|
|
283
|
+
* against a plain Solana RPC. Fetching compressed authority state still needs a
|
|
284
|
+
* Photon-capable RPC unless the verifier already has that state.
|
|
278
285
|
*/
|
|
279
|
-
async function
|
|
286
|
+
async function findProofCommitEvents(program, connection, owner, label, memo, query = {}) {
|
|
280
287
|
const labelBytes = typeof label === "string" ? (0, addresses_1.encodeLabel)(label) : label;
|
|
281
288
|
const targetMemoHash = (0, addresses_1.memoHash)(memo);
|
|
282
289
|
const parser = new anchor_1.EventParser(program.programId, new anchor_1.BorshCoder(program.idl));
|
|
283
290
|
const out = [];
|
|
284
|
-
const
|
|
291
|
+
const unfetchedSignatures = [];
|
|
292
|
+
// Fetch a single tx, treating RPC failure (retention gap / throttling returns
|
|
293
|
+
// null or throws) as a recoverable miss rather than crashing the scan.
|
|
294
|
+
const tryGetTx = async (signature) => {
|
|
295
|
+
try {
|
|
296
|
+
return await connection.getTransaction(signature, {
|
|
297
|
+
commitment: "confirmed",
|
|
298
|
+
maxSupportedTransactionVersion: 0,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
return null;
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
// Extract any matching VrfProofCommitted events from one fetched tx.
|
|
306
|
+
const collectFromTx = (signature, tx) => {
|
|
307
|
+
if (!tx?.meta?.logMessages)
|
|
308
|
+
return;
|
|
309
|
+
for (const ev of parser.parseLogs(tx.meta.logMessages, false)) {
|
|
310
|
+
if (ev.name !== "VrfProofCommitted" && ev.name !== "vrfProofCommitted")
|
|
311
|
+
continue;
|
|
312
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
313
|
+
const data = ev.data;
|
|
314
|
+
const eventOwner = data.owner;
|
|
315
|
+
const eventLabel = Uint8Array.from(data.label);
|
|
316
|
+
const eventMemoHash = Uint8Array.from(data.memoHash);
|
|
317
|
+
if (!eventOwner.equals(owner))
|
|
318
|
+
continue;
|
|
319
|
+
if (!bytesEqual(eventLabel, labelBytes))
|
|
320
|
+
continue;
|
|
321
|
+
if (!bytesEqual(eventMemoHash, targetMemoHash))
|
|
322
|
+
continue;
|
|
323
|
+
const authority = (0, addresses_1.deriveAuthorityAddress)(eventOwner, eventLabel, program.programId);
|
|
324
|
+
out.push({
|
|
325
|
+
owner: eventOwner,
|
|
326
|
+
label: eventLabel,
|
|
327
|
+
txSignature: signature,
|
|
328
|
+
slot: tx.slot,
|
|
329
|
+
onChainCommit: {
|
|
330
|
+
authority,
|
|
331
|
+
memoHash: eventMemoHash,
|
|
332
|
+
proofHash: Uint8Array.from(data.proofHash),
|
|
333
|
+
alphaHash: Uint8Array.from(data.alphaHash),
|
|
334
|
+
committedSlot: BigInt(data.committedSlot.toString()),
|
|
335
|
+
},
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
// Direct-by-signature mode: robust, no history scan, never truncated.
|
|
340
|
+
if (query.signature) {
|
|
341
|
+
const tx = await tryGetTx(query.signature);
|
|
342
|
+
if (!tx)
|
|
343
|
+
unfetchedSignatures.push(query.signature);
|
|
344
|
+
else
|
|
345
|
+
collectFromTx(query.signature, tx);
|
|
346
|
+
out.reverse();
|
|
347
|
+
return { events: out, truncated: false, unfetchedSignatures };
|
|
348
|
+
}
|
|
349
|
+
// History-scan mode.
|
|
350
|
+
const limit = query.limit ?? 1000;
|
|
285
351
|
let before;
|
|
286
352
|
let scanned = 0;
|
|
353
|
+
let reachedEnd = false;
|
|
287
354
|
while (scanned < limit) {
|
|
288
355
|
const pageLimit = Math.min(1000, limit - scanned);
|
|
289
356
|
const sigInfos = await connection.getSignaturesForAddress(owner, {
|
|
290
357
|
limit: pageLimit,
|
|
291
358
|
before,
|
|
292
359
|
});
|
|
293
|
-
if (sigInfos.length === 0)
|
|
360
|
+
if (sigInfos.length === 0) {
|
|
361
|
+
reachedEnd = true;
|
|
294
362
|
break;
|
|
363
|
+
}
|
|
295
364
|
scanned += sigInfos.length;
|
|
296
365
|
before = sigInfos[sigInfos.length - 1].signature;
|
|
297
366
|
for (const sigInfo of sigInfos) {
|
|
298
367
|
if (sigInfo.err)
|
|
299
368
|
continue;
|
|
300
|
-
const tx = await
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
});
|
|
304
|
-
if (!tx?.meta?.logMessages)
|
|
369
|
+
const tx = await tryGetTx(sigInfo.signature);
|
|
370
|
+
if (!tx) {
|
|
371
|
+
unfetchedSignatures.push(sigInfo.signature);
|
|
305
372
|
continue;
|
|
306
|
-
for (const ev of parser.parseLogs(tx.meta.logMessages, false)) {
|
|
307
|
-
if (ev.name !== "VrfProofCommitted" && ev.name !== "vrfProofCommitted")
|
|
308
|
-
continue;
|
|
309
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
310
|
-
const data = ev.data;
|
|
311
|
-
const eventOwner = data.owner;
|
|
312
|
-
const eventLabel = Uint8Array.from(data.label);
|
|
313
|
-
const eventMemoHash = Uint8Array.from(data.memoHash);
|
|
314
|
-
if (!eventOwner.equals(owner))
|
|
315
|
-
continue;
|
|
316
|
-
if (!bytesEqual(eventLabel, labelBytes))
|
|
317
|
-
continue;
|
|
318
|
-
if (!bytesEqual(eventMemoHash, targetMemoHash))
|
|
319
|
-
continue;
|
|
320
|
-
const authority = (0, addresses_1.deriveAuthorityAddress)(eventOwner, eventLabel, program.programId);
|
|
321
|
-
out.push({
|
|
322
|
-
owner: eventOwner,
|
|
323
|
-
label: eventLabel,
|
|
324
|
-
txSignature: sigInfo.signature,
|
|
325
|
-
slot: tx.slot,
|
|
326
|
-
onChainCommit: {
|
|
327
|
-
authority,
|
|
328
|
-
memoHash: eventMemoHash,
|
|
329
|
-
proofHash: Uint8Array.from(data.proofHash),
|
|
330
|
-
alphaHash: Uint8Array.from(data.alphaHash),
|
|
331
|
-
committedSlot: BigInt(data.committedSlot.toString()),
|
|
332
|
-
},
|
|
333
|
-
});
|
|
334
373
|
}
|
|
374
|
+
collectFromTx(sigInfo.signature, tx);
|
|
335
375
|
}
|
|
336
376
|
}
|
|
337
377
|
// RPC returns newest first — reverse so oldest comes first.
|
|
338
378
|
out.reverse();
|
|
339
|
-
|
|
379
|
+
// If we exited because the cap was hit (not because history ran out), the
|
|
380
|
+
// result is incomplete: a missing event here is inconclusive, not "absent".
|
|
381
|
+
return { events: out, truncated: !reachedEnd, unfetchedSignatures };
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Backward-compatible wrapper around {@link findProofCommitEvents} that returns
|
|
385
|
+
* just the events (oldest → newest).
|
|
386
|
+
*
|
|
387
|
+
* Prefer {@link findProofCommitEvents} when you need to tell "not committed"
|
|
388
|
+
* apart from "scan was truncated / some transactions were unfetchable" — on a
|
|
389
|
+
* busy mainnet wallet a bare empty array is ambiguous. Pass `options.signature`
|
|
390
|
+
* to look up a known commit directly and skip the history scan entirely.
|
|
391
|
+
*/
|
|
392
|
+
async function fetchProofCommitEvents(program, connection, owner, label, memo, options = {}) {
|
|
393
|
+
const { events } = await findProofCommitEvents(program, connection, owner, label, memo, options);
|
|
394
|
+
return events;
|
|
340
395
|
}
|
|
341
396
|
function bytesEqual(a, b) {
|
|
342
397
|
if (a.length !== b.length)
|
package/dist/operations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -50,6 +50,7 @@ export {
|
|
|
50
50
|
fetchProofCommit,
|
|
51
51
|
fetchProofCommitWithBeta,
|
|
52
52
|
fetchProofCommitEvents,
|
|
53
|
+
findProofCommitEvents,
|
|
53
54
|
decodeAuthority,
|
|
54
55
|
decodeProofCommit,
|
|
55
56
|
decodeProofCommitWithBeta,
|
|
@@ -61,6 +62,8 @@ export type {
|
|
|
61
62
|
FreezeAuthorityInput,
|
|
62
63
|
CommitProofInput,
|
|
63
64
|
ProofCommitEvent,
|
|
65
|
+
ProofCommitEventQuery,
|
|
66
|
+
ProofCommitEventResult,
|
|
64
67
|
} from "./operations";
|
|
65
68
|
|
|
66
69
|
export {
|
package/src/operations.ts
CHANGED
|
@@ -427,38 +427,93 @@ export interface ProofCommitEvent {
|
|
|
427
427
|
}
|
|
428
428
|
|
|
429
429
|
/**
|
|
430
|
-
*
|
|
431
|
-
|
|
432
|
-
|
|
430
|
+
* Options for {@link findProofCommitEvents} and {@link fetchProofCommitEvents}.
|
|
431
|
+
*/
|
|
432
|
+
export interface ProofCommitEventQuery {
|
|
433
|
+
/**
|
|
434
|
+
* Look up exactly this transaction signature instead of scanning the owner's
|
|
435
|
+
* wallet history. This is the ROBUST path: a committer already knows the
|
|
436
|
+
* signature it submitted, so it sidesteps the history-scan failure mode
|
|
437
|
+
* entirely (see {@link ProofCommitEventResult.truncated}). When set, `limit`
|
|
438
|
+
* is ignored.
|
|
439
|
+
*/
|
|
440
|
+
signature?: string;
|
|
441
|
+
/**
|
|
442
|
+
* Max number of recent signatures to scan when walking the owner's wallet
|
|
443
|
+
* history (default 1000). Only used when `signature` is not provided.
|
|
444
|
+
*
|
|
445
|
+
* NOTE: this counts ALL of the owner's transactions, not just VRF commits —
|
|
446
|
+
* on a busy mainnet wallet the target commit can fall outside the window, in
|
|
447
|
+
* which case the result is flagged `truncated` rather than silently returning
|
|
448
|
+
* an empty list.
|
|
449
|
+
*/
|
|
450
|
+
limit?: number;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* Result of {@link findProofCommitEvents}. Unlike a bare event array, this lets
|
|
455
|
+
* a caller distinguish "this memo was never committed" from "I could not
|
|
456
|
+
* confirm it within the scanned window / some transactions were unfetchable".
|
|
457
|
+
*/
|
|
458
|
+
export interface ProofCommitEventResult {
|
|
459
|
+
/** Matching events, ordered oldest → newest. */
|
|
460
|
+
events: ProofCommitEvent[];
|
|
461
|
+
/**
|
|
462
|
+
* True if the wallet-history scan hit `limit` before reaching the end of the
|
|
463
|
+
* owner's history. When true, an empty or short `events` list is NOT
|
|
464
|
+
* conclusive — the commit may simply be older than the scanned window.
|
|
465
|
+
* Re-query with a larger `limit`, or (preferably) pass the known `signature`.
|
|
466
|
+
* Always false when `signature` was provided.
|
|
467
|
+
*/
|
|
468
|
+
truncated: boolean;
|
|
469
|
+
/**
|
|
470
|
+
* Signatures whose transaction could not be fetched (RPC retention gap or
|
|
471
|
+
* throttling — `getTransaction` returned null or threw). A genuine event may
|
|
472
|
+
* be hiding in one of these, so an empty `events` list is likewise
|
|
473
|
+
* inconclusive when this is non-empty.
|
|
474
|
+
*/
|
|
475
|
+
unfetchedSignatures: string[];
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* Find `VrfProofCommitted` events for a `(owner, label, memo)` tuple, returning
|
|
480
|
+
* a structured result that surfaces scan completeness.
|
|
481
|
+
*
|
|
482
|
+
* Two modes:
|
|
483
|
+
* - Pass `query.signature` to fetch ONE known transaction directly. This is
|
|
484
|
+
* the recommended path for any caller that submitted the commit (it already
|
|
485
|
+
* has the signature) and is immune to the history-scan limit below.
|
|
486
|
+
* - Otherwise the owner's wallet history is paginated (newest → oldest) up to
|
|
487
|
+
* `query.limit` signatures (default 1000). Because this counts every
|
|
488
|
+
* transaction the owner signed — not just VRF commits — a busy mainnet
|
|
489
|
+
* wallet can push the target commit past the window; that case is reported
|
|
490
|
+
* via `truncated: true` instead of an indistinguishable empty array.
|
|
433
491
|
*
|
|
434
|
-
* IMPORTANT: this can return MORE than one
|
|
435
|
-
*
|
|
492
|
+
* IMPORTANT: this can return MORE than one event. The on-chain program does not
|
|
493
|
+
* enforce uniqueness in event mode. A safe verifier:
|
|
436
494
|
*
|
|
437
495
|
* 1. Collects all matches for the requested memo.
|
|
438
496
|
* 2. Runs `verifyAuthorityCommitEndToEnd` against each candidate proof.
|
|
439
497
|
* 3. Accepts the unique row where the ECVRF math passes.
|
|
440
498
|
*
|
|
441
|
-
* Because ECVRF proofs are deterministic for a fixed (pk, alpha), at most
|
|
442
|
-
*
|
|
443
|
-
*
|
|
444
|
-
*
|
|
445
|
-
*
|
|
499
|
+
* Because ECVRF proofs are deterministic for a fixed (pk, alpha), at most one
|
|
500
|
+
* candidate can have a valid `proof_hash`. The presence of extra events is
|
|
501
|
+
* detectable noise, not a successful forgery — but a naive verifier that picks
|
|
502
|
+
* "the latest event" without running ECVRF can be misled (see
|
|
503
|
+
* `pickCanonicalCommit`).
|
|
446
504
|
*
|
|
447
505
|
* `connection` and `programId` are passed in explicitly so log scanning works
|
|
448
|
-
* against a plain Solana RPC. Fetching compressed authority state still needs
|
|
449
|
-
*
|
|
450
|
-
*
|
|
451
|
-
* `limit` caps how many recent signatures to scan (default 1000); pagination
|
|
452
|
-
* happens automatically via `getSignaturesForAddress`'s `before` cursor.
|
|
506
|
+
* against a plain Solana RPC. Fetching compressed authority state still needs a
|
|
507
|
+
* Photon-capable RPC unless the verifier already has that state.
|
|
453
508
|
*/
|
|
454
|
-
export async function
|
|
509
|
+
export async function findProofCommitEvents(
|
|
455
510
|
program: Program,
|
|
456
511
|
connection: Connection,
|
|
457
512
|
owner: PublicKey,
|
|
458
513
|
label: string | Uint8Array,
|
|
459
514
|
memo: string | Uint8Array,
|
|
460
|
-
|
|
461
|
-
): Promise<
|
|
515
|
+
query: ProofCommitEventQuery = {},
|
|
516
|
+
): Promise<ProofCommitEventResult> {
|
|
462
517
|
const labelBytes = typeof label === "string" ? encodeLabel(label) : label;
|
|
463
518
|
const targetMemoHash = memoHashFn(memo);
|
|
464
519
|
|
|
@@ -467,66 +522,132 @@ export async function fetchProofCommitEvents(
|
|
|
467
522
|
new BorshCoder(program.idl),
|
|
468
523
|
);
|
|
469
524
|
const out: ProofCommitEvent[] = [];
|
|
525
|
+
const unfetchedSignatures: string[] = [];
|
|
526
|
+
|
|
527
|
+
// Fetch a single tx, treating RPC failure (retention gap / throttling returns
|
|
528
|
+
// null or throws) as a recoverable miss rather than crashing the scan.
|
|
529
|
+
const tryGetTx = async (signature: string) => {
|
|
530
|
+
try {
|
|
531
|
+
return await connection.getTransaction(signature, {
|
|
532
|
+
commitment: "confirmed",
|
|
533
|
+
maxSupportedTransactionVersion: 0,
|
|
534
|
+
});
|
|
535
|
+
} catch {
|
|
536
|
+
return null;
|
|
537
|
+
}
|
|
538
|
+
};
|
|
539
|
+
|
|
540
|
+
// Extract any matching VrfProofCommitted events from one fetched tx.
|
|
541
|
+
const collectFromTx = (
|
|
542
|
+
signature: string,
|
|
543
|
+
tx: Awaited<ReturnType<typeof tryGetTx>>,
|
|
544
|
+
) => {
|
|
545
|
+
if (!tx?.meta?.logMessages) return;
|
|
546
|
+
for (const ev of parser.parseLogs(tx.meta.logMessages, false)) {
|
|
547
|
+
if (ev.name !== "VrfProofCommitted" && ev.name !== "vrfProofCommitted")
|
|
548
|
+
continue;
|
|
549
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
550
|
+
const data = ev.data as any;
|
|
551
|
+
const eventOwner: PublicKey = data.owner;
|
|
552
|
+
const eventLabel: Uint8Array = Uint8Array.from(data.label);
|
|
553
|
+
const eventMemoHash: Uint8Array = Uint8Array.from(data.memoHash);
|
|
554
|
+
|
|
555
|
+
if (!eventOwner.equals(owner)) continue;
|
|
556
|
+
if (!bytesEqual(eventLabel, labelBytes)) continue;
|
|
557
|
+
if (!bytesEqual(eventMemoHash, targetMemoHash)) continue;
|
|
558
|
+
|
|
559
|
+
const authority = deriveAuthorityAddress(
|
|
560
|
+
eventOwner,
|
|
561
|
+
eventLabel,
|
|
562
|
+
program.programId,
|
|
563
|
+
);
|
|
564
|
+
out.push({
|
|
565
|
+
owner: eventOwner,
|
|
566
|
+
label: eventLabel,
|
|
567
|
+
txSignature: signature,
|
|
568
|
+
slot: tx.slot,
|
|
569
|
+
onChainCommit: {
|
|
570
|
+
authority,
|
|
571
|
+
memoHash: eventMemoHash,
|
|
572
|
+
proofHash: Uint8Array.from(data.proofHash),
|
|
573
|
+
alphaHash: Uint8Array.from(data.alphaHash),
|
|
574
|
+
committedSlot: BigInt(data.committedSlot.toString()),
|
|
575
|
+
},
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
};
|
|
470
579
|
|
|
471
|
-
|
|
580
|
+
// Direct-by-signature mode: robust, no history scan, never truncated.
|
|
581
|
+
if (query.signature) {
|
|
582
|
+
const tx = await tryGetTx(query.signature);
|
|
583
|
+
if (!tx) unfetchedSignatures.push(query.signature);
|
|
584
|
+
else collectFromTx(query.signature, tx);
|
|
585
|
+
out.reverse();
|
|
586
|
+
return { events: out, truncated: false, unfetchedSignatures };
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
// History-scan mode.
|
|
590
|
+
const limit = query.limit ?? 1000;
|
|
472
591
|
let before: string | undefined;
|
|
473
592
|
let scanned = 0;
|
|
593
|
+
let reachedEnd = false;
|
|
474
594
|
while (scanned < limit) {
|
|
475
595
|
const pageLimit = Math.min(1000, limit - scanned);
|
|
476
596
|
const sigInfos = await connection.getSignaturesForAddress(owner, {
|
|
477
597
|
limit: pageLimit,
|
|
478
598
|
before,
|
|
479
599
|
});
|
|
480
|
-
if (sigInfos.length === 0)
|
|
600
|
+
if (sigInfos.length === 0) {
|
|
601
|
+
reachedEnd = true;
|
|
602
|
+
break;
|
|
603
|
+
}
|
|
481
604
|
scanned += sigInfos.length;
|
|
482
605
|
before = sigInfos[sigInfos.length - 1].signature;
|
|
483
606
|
|
|
484
607
|
for (const sigInfo of sigInfos) {
|
|
485
608
|
if (sigInfo.err) continue;
|
|
486
|
-
const tx = await
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
if (!tx?.meta?.logMessages) continue;
|
|
491
|
-
|
|
492
|
-
for (const ev of parser.parseLogs(tx.meta.logMessages, false)) {
|
|
493
|
-
if (ev.name !== "VrfProofCommitted" && ev.name !== "vrfProofCommitted")
|
|
494
|
-
continue;
|
|
495
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
496
|
-
const data = ev.data as any;
|
|
497
|
-
const eventOwner: PublicKey = data.owner;
|
|
498
|
-
const eventLabel: Uint8Array = Uint8Array.from(data.label);
|
|
499
|
-
const eventMemoHash: Uint8Array = Uint8Array.from(data.memoHash);
|
|
500
|
-
|
|
501
|
-
if (!eventOwner.equals(owner)) continue;
|
|
502
|
-
if (!bytesEqual(eventLabel, labelBytes)) continue;
|
|
503
|
-
if (!bytesEqual(eventMemoHash, targetMemoHash)) continue;
|
|
504
|
-
|
|
505
|
-
const authority = deriveAuthorityAddress(
|
|
506
|
-
eventOwner,
|
|
507
|
-
eventLabel,
|
|
508
|
-
program.programId,
|
|
509
|
-
);
|
|
510
|
-
out.push({
|
|
511
|
-
owner: eventOwner,
|
|
512
|
-
label: eventLabel,
|
|
513
|
-
txSignature: sigInfo.signature,
|
|
514
|
-
slot: tx.slot,
|
|
515
|
-
onChainCommit: {
|
|
516
|
-
authority,
|
|
517
|
-
memoHash: eventMemoHash,
|
|
518
|
-
proofHash: Uint8Array.from(data.proofHash),
|
|
519
|
-
alphaHash: Uint8Array.from(data.alphaHash),
|
|
520
|
-
committedSlot: BigInt(data.committedSlot.toString()),
|
|
521
|
-
},
|
|
522
|
-
});
|
|
609
|
+
const tx = await tryGetTx(sigInfo.signature);
|
|
610
|
+
if (!tx) {
|
|
611
|
+
unfetchedSignatures.push(sigInfo.signature);
|
|
612
|
+
continue;
|
|
523
613
|
}
|
|
614
|
+
collectFromTx(sigInfo.signature, tx);
|
|
524
615
|
}
|
|
525
616
|
}
|
|
526
617
|
|
|
527
618
|
// RPC returns newest first — reverse so oldest comes first.
|
|
528
619
|
out.reverse();
|
|
529
|
-
|
|
620
|
+
// If we exited because the cap was hit (not because history ran out), the
|
|
621
|
+
// result is incomplete: a missing event here is inconclusive, not "absent".
|
|
622
|
+
return { events: out, truncated: !reachedEnd, unfetchedSignatures };
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
/**
|
|
626
|
+
* Backward-compatible wrapper around {@link findProofCommitEvents} that returns
|
|
627
|
+
* just the events (oldest → newest).
|
|
628
|
+
*
|
|
629
|
+
* Prefer {@link findProofCommitEvents} when you need to tell "not committed"
|
|
630
|
+
* apart from "scan was truncated / some transactions were unfetchable" — on a
|
|
631
|
+
* busy mainnet wallet a bare empty array is ambiguous. Pass `options.signature`
|
|
632
|
+
* to look up a known commit directly and skip the history scan entirely.
|
|
633
|
+
*/
|
|
634
|
+
export async function fetchProofCommitEvents(
|
|
635
|
+
program: Program,
|
|
636
|
+
connection: Connection,
|
|
637
|
+
owner: PublicKey,
|
|
638
|
+
label: string | Uint8Array,
|
|
639
|
+
memo: string | Uint8Array,
|
|
640
|
+
options: ProofCommitEventQuery = {},
|
|
641
|
+
): Promise<ProofCommitEvent[]> {
|
|
642
|
+
const { events } = await findProofCommitEvents(
|
|
643
|
+
program,
|
|
644
|
+
connection,
|
|
645
|
+
owner,
|
|
646
|
+
label,
|
|
647
|
+
memo,
|
|
648
|
+
options,
|
|
649
|
+
);
|
|
650
|
+
return events;
|
|
530
651
|
}
|
|
531
652
|
|
|
532
653
|
function bytesEqual(a: Uint8Array, b: Uint8Array): boolean {
|