UNPKG

@zkp2p/reclaim-witness-sdk

Version:

<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>

147 lines 12.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createClaimOnAvs = createClaimOnAvs; const ethers_1 = require("ethers"); const config_1 = require("../../avs/config"); const contracts_1 = require("../../avs/utils/contracts"); const tasks_1 = require("../../avs/utils/tasks"); const client_1 = require("../../client"); const utils_1 = require("../../utils"); const EMPTY_CLAIM_USER_ID = ethers_1.ethers.utils.hexlify(new Uint8Array(32)); /** * Creates a Reclaim claim on the AVS chain. */ async function createClaimOnAvs({ onStep, createClaimOnAttestor = client_1.createClaimOnAttestor, chainId = config_1.SELECTED_CHAIN_ID, payer, ...opts }) { var _a, _b, _c, _d, _e; const { logger = utils_1.logger, ownerPrivateKey, name, params, context, } = opts; const { contract, wallet } = (0, contracts_1.initialiseContracts)(config_1.CHAIN_CONFIGS[chainId], ownerPrivateKey); logger.info({ owner: wallet.address, contract: contract.address }, 'creating claim'); const arg = await requestClaimCreation(); logger.info({ index: arg.taskIndex, operators: arg.task.operators.length, }, 'task created, collecting claim signatures...'); onStep === null || onStep === void 0 ? void 0 : onStep({ type: 'taskCreated', data: arg }); const responses = []; const timestampS = +arg.task.createdAt.toString(); for (const op of arg.task.operators) { const res = await createClaimOnAttestor({ ...opts, client: { url: op.url }, timestampS, onStep: (step) => (onStep === null || onStep === void 0 ? void 0 : onStep({ type: 'attestorStep', data: { operatorAddress: op.addr, step, }, })), logger: logger.child({ operator: op.addr }), }); const signature = (_a = res.signatures) === null || _a === void 0 ? void 0 : _a.claimSignature; if (!signature) { throw new Error('INTERNAL: Claim signature not generated'); } const diff = getClaimRequestDifference((_b = res.request) === null || _b === void 0 ? void 0 : _b.data, res.claim); if (diff) { throw new utils_1.AttestorError('ERROR_INVALID_CLAIM', `Claim request does not match the claim res data: ${diff}`, { diff, request: (_d = (_c = res.request) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d[diff], claim: (_e = res.claim) === null || _e === void 0 ? void 0 : _e[diff] }); } responses.push(res); logger.info({ operator: op.addr }, 'signature generated'); onStep === null || onStep === void 0 ? void 0 : onStep({ type: 'attestorDone', data: { task: arg, responsesDone: responses, }, }); } const rslt = await completeTask(); logger.info({ tx: rslt.txHash, task: arg.taskIndex }, 'claim submitted & validated'); return { ...rslt, claimData: responses[0].claim }; async function requestClaimCreation() { const request = { provider: name, // blank for now -- till we figure out the right // algorithm for this claimUserId: EMPTY_CLAIM_USER_ID, claimHash: (0, utils_1.getIdentifierFromClaimInfo)({ provider: name, parameters: (0, utils_1.canonicalStringify)(params), context: context ? (0, utils_1.canonicalStringify)(context) : '', }), owner: wallet.address, requestedAt: (0, utils_1.unixTimestampSeconds)() }; if (!payer) { const wallet = new ethers_1.Wallet(ownerPrivateKey, contract.provider); const { task } = await (0, tasks_1.createNewClaimRequestOnChain)({ request, payer: wallet, owner: wallet, chainId }); return task; } const requestSignature = await (0, tasks_1.signClaimRequest)(request, wallet, chainId); const client = (0, client_1.getAttestorClientFromPool)(payer.attestor); await client.waitForInit(); const rslt = await client.rpc('createClaimOnChain', { chainId: +chainId, jsonCreateClaimRequest: JSON.stringify(request), requestSignature }); return JSON.parse(rslt.jsonTask); } async function completeTask() { var _a; const data = { task: arg.task, signatures: responses .map(res => { var _a; return (ethers_1.ethers.utils.hexlify((_a = res.signatures) === null || _a === void 0 ? void 0 : _a.claimSignature)); }), }; if (!payer) { const tx = await contract.taskCompleted(data, arg.taskIndex); const rslt = await tx.wait(); // check task created event was emitted const ev = (_a = rslt.events) === null || _a === void 0 ? void 0 : _a[0]; return { object: ev === null || ev === void 0 ? void 0 : ev.args, txHash: rslt.transactionHash }; } const client = (0, client_1.getAttestorClientFromPool)(payer.attestor); await client.waitForInit(); const rslt = await client.rpc('completeClaimOnChain', { chainId: +chainId, taskIndex: arg.taskIndex, completedTaskJson: JSON.stringify(data) }); const object = JSON.parse(rslt.taskCompletedObjectJson); return { object, txHash: rslt.txHash }; } } function getClaimRequestDifference(a, b) { if (a.provider !== b.provider) { return 'provider'; } if (a.context !== b.context) { return 'context'; } if (a.parameters !== b.parameters) { return 'parameters'; } if (a.timestampS !== b.timestampS) { return 'timestampS'; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNsYWltLW9uLWF2cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdnMvY2xpZW50L2NyZWF0ZS1jbGFpbS1vbi1hdnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsNENBd0tDO0FBeExELG1DQUF1QztBQUN2QywyQ0FBaUU7QUFHakUsdURBQTZEO0FBQzdELCtDQUFvRjtBQUNwRix1Q0FBdUc7QUFHdkcscUNBQWlJO0FBRWpJLE1BQU0sbUJBQW1CLEdBQUcsZUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVwRTs7R0FFRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FBeUIsRUFDOUQsTUFBTSxFQUNOLHFCQUFxQixHQUFHLDhCQUFzQixFQUM5QyxPQUFPLEdBQUcsMEJBQWlCLEVBQzNCLEtBQUssRUFDTCxHQUFHLElBQUksRUFDa0I7O0lBQ3pCLE1BQU0sRUFDTCxNQUFNLEdBQUcsY0FBTSxFQUNmLGVBQWUsRUFDZixJQUFJLEVBQ0osTUFBTSxFQUNOLE9BQU8sR0FDUCxHQUFHLElBQUksQ0FBQTtJQUNSLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSwrQkFBbUIsRUFDL0Msc0JBQWEsQ0FBQyxPQUFRLENBQUMsRUFDdkIsZUFBZSxDQUNmLENBQUE7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUNWLEVBQUUsS0FBSyxFQUFFLE1BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFDdEQsZ0JBQWdCLENBQ2hCLENBQUE7SUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLG9CQUFvQixFQUFFLENBQUE7SUFFeEMsTUFBTSxDQUFDLElBQUksQ0FDVjtRQUNDLEtBQUssRUFBRSxHQUFHLENBQUMsU0FBUztRQUNwQixTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFT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