Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions packages/sui-indexer/src/handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export class SuiEventHandler {
} else if (e.type.includes("::nbtc::ProposeUtxoEvent")) {
await this.handleProposeUtxo(json as ProposeUtxoEventRaw);
} else if (e.type.includes("::nbtc::redeem_request::SolvedEvent")) {
await this.handleSolved(json as SolvedEventRaw);
await this.handleSolvedRedeem(json as SolvedEventRaw);
} else if (e.type.includes("::nbtc::redeem_request::SignatureRecordedEvent")) {
await this.handleIkaSignatureRecorded(json as SignatureRecordedEventRaw);
}
Expand Down Expand Up @@ -82,16 +82,16 @@ export class SuiEventHandler {
});
}

private async handleSolved(e: SolvedEventRaw) {
private async handleSolvedRedeem(e: SolvedEventRaw) {
await this.storage.upsertRedeemInputs(
Number(e.redeem_id),
e.utxo_ids.map(Number),
e.dwallet_ids,
);
await this.storage.markRedeemSolved(Number(e.redeem_id));
await this.storage.markRedeemSigning(Number(e.redeem_id));

logger.info({
msg: "Marked redeem as solved and added inputs",
msg: "Marked redeem as singing status and added inputs",
redeemId: e.redeem_id,
utxos: e.utxo_ids.length,
});
Expand Down
4 changes: 2 additions & 2 deletions packages/sui-indexer/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ async function runRedeemSolver(storage: D1Storage, env: Env, activeNetworks: Sui
await tryAsync(
(async () => {
await service.solveReadyRedeems();
await service.processSolvedRedeems();
await service.processSigningRedeems();
})(),
),
);
Expand All @@ -129,7 +129,7 @@ async function runRedeemSolver(storage: D1Storage, env: Env, activeNetworks: Sui
reportErrors(results, "runRedeemSolver", "Processing redeems error", [
"refillPresignPool",
"processPendingRedeems",
"solveReadyRedeems/processSolvedRedeems",
"solveReadyRedeems/processSigningRedeems",
"broadcastReadyRedeems",
]);
}
Expand Down
2 changes: 1 addition & 1 deletion packages/sui-indexer/src/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export interface Utxo {
export enum RedeemStatusEnum {
Pending = "pending",
Proposed = "proposed",
Solved = "solved",
Signing = "signing",
Signed = "signed",
}

Expand Down
22 changes: 11 additions & 11 deletions packages/sui-indexer/src/redeem-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,15 @@ export class RedeemService {
}
}

async processSolvedRedeems() {
async processSigningRedeems() {
// NOTE: here we are processing only 50 redeems every minute (every cron), we are not
// looping thought all the solved redeems to avoid cloudflare timeout, since we are
// looping through all the sinning status redeems to avoid cloudflare timeout, since we are
// already waiting for ika to sign, when calling ikaSdk.getPresignInParicularState
const solved = await this.storage.getSolvedRedeems();
if (solved.length === 0) return;
const sinnings = await this.storage.getSigningRedeems();
if (sinnings.length === 0) return;

for (const req of solved) {
await this.processSolvedRedeem(req);
for (const req of sinnings) {
await this.processSigningRedeem(req);
}
}

Expand Down Expand Up @@ -158,7 +158,7 @@ export class RedeemService {
}
}

private async processSolvedRedeem(req: RedeemRequestWithInputs) {
private async processSigningRedeem(req: RedeemRequestWithInputs) {
const client = this.getSuiClient(req.sui_network);
const inputsToVerify: RedeemInput[] = [];

Expand Down Expand Up @@ -446,13 +446,13 @@ export class RedeemService {
redeemId: req.redeem_id,
txDigest: txDigest,
});

await this.storage.markRedeemSolved(req.redeem_id);
// update status to signing
await this.storage.markRedeemSigning(req.redeem_id);
} catch (e: unknown) {
logError(
{
msg: "Failed to solve redeem request",
method: "solveRequest",
msg: "Failed to update to signing",
method: "makeSigning",
redeemId: req.redeem_id,
},
e,
Expand Down
12 changes: 6 additions & 6 deletions packages/sui-indexer/src/storage.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -383,20 +383,20 @@ describe("IndexerStorage", () => {
expect(redeem!.status).toBe(RedeemRequestStatus.Proposed);
});

it("markRedeemSolved should update redeem status", async () => {
it("markRedeemSigning should update redeem status", async () => {
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
await db
.prepare("UPDATE nbtc_redeem_requests SET status = ? WHERE redeem_id = ?")
.bind(RedeemRequestStatus.Proposed, 1)
.run();

await storage.markRedeemSolved(1);
await storage.markRedeemSigning(1);

const redeem = await db
.prepare("SELECT status FROM nbtc_redeem_requests WHERE redeem_id = ?")
.bind(1)
.first<{ status: string }>();
expect(redeem!.status).toBe(RedeemRequestStatus.Solved);
expect(redeem!.status).toBe(RedeemRequestStatus.Signing);
});

it("getActiveNetworks should return distinct active networks", async () => {
Expand All @@ -421,7 +421,7 @@ describe("IndexerStorage", () => {
expect(networks).not.toContain(toSuiNet("testnet"));
});

it("getSolvedRedeems should return solved redeems with inputs", async () => {
it("getSigningRedeems should return signing redeems with inputs", async () => {
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
await insertUtxo(
storage,
Expand All @@ -435,7 +435,7 @@ describe("IndexerStorage", () => {
null,
);
await storage.markRedeemProposed(1, [1], UTXO_LOCK_TIME_MS);
await storage.markRedeemSolved(1);
await storage.markRedeemSigning(1);
await storage.saveRedeemInputs([
{
redeem_id: 1,
Expand All @@ -446,7 +446,7 @@ describe("IndexerStorage", () => {
},
]);

const redeems = await storage.getSolvedRedeems();
const redeems = await storage.getSigningRedeems();

expect(redeems.length).toBe(1);
expect(redeems[0]!.redeem_id).toBe(1);
Expand Down
12 changes: 6 additions & 6 deletions packages/sui-indexer/src/storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -338,17 +338,17 @@ export class D1Storage {
await this.db.batch([updateSolution, updateRequest]);
}

async markRedeemSolved(redeemId: number): Promise<void> {
async markRedeemSigning(redeemId: number): Promise<void> {
try {
await this.db
.prepare("UPDATE nbtc_redeem_requests SET status = ? WHERE redeem_id = ?")
.bind(RedeemRequestStatus.Solved, redeemId)
.bind(RedeemRequestStatus.Signing, redeemId)
.run();
} catch (error) {
logError(
{
msg: "Failed to mark redeem as solved",
method: "markRedeemSolved",
msg: "Failed to mark redeem as signing",
method: "markRedeemSigning",
redeemId,
},
error,
Expand Down Expand Up @@ -482,7 +482,7 @@ export class D1Storage {
return results;
}

async getSolvedRedeems(): Promise<RedeemRequestWithInputs[]> {
async getSigningRedeems(): Promise<RedeemRequestWithInputs[]> {
const query = `
SELECT
r.redeem_id, r.setup_id, r.redeemer, r.recipient_script, r.amount, r.status, r.created_at,
Expand All @@ -496,7 +496,7 @@ export class D1Storage {
`;
const { results: requests } = await this.db
.prepare(query)
.bind(RedeemRequestStatus.Solved)
.bind(RedeemRequestStatus.Signing)
.all<RedeemRequestRow>();

if (requests.length === 0) {
Expand Down