Skip to main content

Prover Retry

Restart failed prover operations that generate zero-knowledge proofs for database operations.

When to use:

  • Document operations stuck in "Failed" status
  • Before rollup operations
  • After service crashes or network issues

Definition

await zkdb
.db(databaseName: string)
.proverRetry(): Promise<boolean>;

Parameters

  • None

Returns

  • Promise<boolean>: Returns true if the retry operation was successfully initiated, false otherwise.

Note: Returns true if retry was initiated. Use proverStatus() to monitor progress.

Example

import { ZkDatabase } from 'zkdb';

const zkdb = await ZkDatabase.connect({
userName: "chiro-user",
privateKey: "EKFTciRxyxshZjimay9sktsn7v5PvmC5zPq7q4JnitHUytxUVnFP",
environment: "node",
// This URL is for test environment
url: "https://api.zkdatabase.org/graphql",
});

await zkdb.auth.signIn();

const dbTest = zkdb.db('zkdb_test');
const retryResult = await dbTest.proverRetry();
console.log('Retry result:', retryResult);

await zkdb.auth.signOut();

Result:

Retry result: true

Detect and Retry failed operations

Example

import { ZkDatabase } from 'zkdb';
import { EQueueTaskStatus } from '@zkdb/common';

const zkdb = await ZkDatabase.connect({
userName: "chiro-user",
privateKey: "EKFTciRxyxshZjimay9sktsn7v5PvmC5zPq7q4JnitHUytxUVnFP",
environment: "node",
// This URL is for test environment
url: "https://api.zkdatabase.org/graphql",
});

await zkdb.auth.signIn();

const database = zkdb.db("zkdb_test");

let status;

while ((status = await database.proverStatus()) !== EQueueTaskStatus.Success) {
if (status === EQueueTaskStatus.Failed) {
console.log("Retrying failed operation:", await database.proverRetry());
}
await new Promise(resolve => setTimeout(resolve, 1000));
}

console.log("All prover operations completed successfully!");

await zkdb.auth.signOut();

Use after: