@zkp2p/reclaim-witness-sdk
Version:
<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>
52 lines • 5.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createTaskOnMechain = void 0;
const ethers_1 = require("ethers");
const governanceABI_1 = require("../../mechain/abis/governanceABI");
const taskABI_1 = require("../../mechain/abis/taskABI");
const constants_1 = require("../../mechain/constants");
const env_1 = require("../../utils/env");
const createTaskOnMechain = async ({ timestamp }) => {
const { taskContract } = await getContracts();
const seed = ethers_1.utils.randomBytes(32);
// Perform a static call to fetch taskId and attestors for the next task
const result = await taskContract.callStatic.createNewTaskRequest(seed, timestamp);
const taskId = result[0];
// Fetch requiredAttestors to determine how many proofs to request
const requiredAttestors = await taskContract.requiredAttestors();
const hosts = [];
// Fetch attestors's WebSocket URI, e.g. wss://attestor.reclaimprotocol.org/ws
for (let i = 0; i < requiredAttestors; i++) {
hosts.push(result[1][i].host);
}
// Perform the call that was statically-called previously
const tx = await taskContract.createNewTaskRequest(seed, timestamp);
await tx.wait();
return {
taskId: taskId,
requiredAttestors: requiredAttestors,
hosts: hosts
};
};
exports.createTaskOnMechain = createTaskOnMechain;
async function getContracts() {
const privateKey = (0, env_1.getEnvVariable)('MECHAIN_PRIVATE_KEY');
const taskContractAddress = (0, env_1.getEnvVariable)('TASK_CONTRACT_ADDRESS') || constants_1.TASK_CONTRACT_ADDRESS;
const governanceContractAddress = (0, env_1.getEnvVariable)('GOVERNANCE_CONTRACT_ADDRESS') || constants_1.GOVERNANCE_CONTRACT_ADDRESS;
if (!privateKey) {
throw new Error('MECHAIN_PRIVATE_KEY environment variable is not set');
}
try {
const provider = new ethers_1.providers.JsonRpcProvider(constants_1.RPC_URL);
// Validate connection to provider
await provider.getNetwork();
const signer = new ethers_1.Wallet(privateKey, provider);
const taskContract = new ethers_1.Contract(taskContractAddress, taskABI_1.taskABI, signer);
const governanceContract = new ethers_1.Contract(governanceContractAddress, governanceABI_1.governanceABI, signer);
return { taskContract, governanceContract };
}
catch (error) {
throw new Error(`Failed to initialize contracts: ${error.message || error}`);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlVGFza09uTWVjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvaGFuZGxlcnMvY3JlYXRlVGFza09uTWVjaGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBMkQ7QUFDM0Qsa0VBQThEO0FBQzlELHNEQUFrRDtBQUNsRCxxREFBbUc7QUFFbkcsdUNBQThDO0FBR3ZDLE1BQU0sbUJBQW1CLEdBQXNDLEtBQUssRUFBQyxFQUMzRSxTQUFTLEVBQ1QsRUFBRSxFQUFFO0lBRUosTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sWUFBWSxFQUFFLENBQUE7SUFFN0MsTUFBTSxJQUFJLEdBQUcsY0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVsQyx3RUFBd0U7SUFDeEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUNoRSxJQUFJLEVBQ0osU0FBUyxDQUNULENBQUE7SUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFXLENBQUE7SUFFbEMsa0VBQWtFO0lBQ2xFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtJQUVoRSxNQUFNLEtBQUssR0FBYyxFQUFFLENBQUE7SUFFM0IsOEVBQThFO0lBQzlFLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFRCx5REFBeUQ7SUFDekQsTUFBTSxFQUFFLEdBQUcsTUFBTSxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ25FLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO0lBRWYsT0FBTztRQUNOLE1BQU0sRUFBRSxNQUFNO1FBQ2QsaUJBQWlCLEVBQUUsaUJBQWlCO1FBQ3BDLEtBQUssRUFBRSxLQUFLO0tBQ1osQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQW5DWSxRQUFBLG1CQUFtQix1QkFtQy9CO0FBRUQsS0FBSyxVQUFVLFlBQVk7SUFDMUIsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBYyxFQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDeEQsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLG9CQUFjLEVBQUMsdUJBQXVCLENBQUMsSUFBSSxpQ0FBcUIsQ0FBQTtJQUM1RixNQUFNLHlCQUF5QixHQUFHLElBQUEsb0JBQWMsRUFBQyw2QkFBNkIsQ0FBQyxJQUFJLHVDQUEyQixDQUFBO0lBRTlHLElBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELElBQUksQ0FBQztRQUNKLE1BQU0sUUFBUSxHQUFHLElBQUksa0JBQVMsQ0FBQyxlQUFlLENBQUMsbUJBQU8sQ0FBQyxDQUFBO1FBQ3ZELGtDQUFrQztRQUNsQyxNQUFNLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUUzQixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxpQkFBUSxDQUNoQyxtQkFBbUIsRUFDbkIsaUJBQU8sRUFDUCxNQUFNLENBQ04sQ0FBQTtRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxpQkFBUSxDQUN0Qyx5QkFBeUIsRUFDekIsNkJBQWEsRUFDYixNQUFNLENBQ04sQ0FBQTtRQUVELE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQTtJQUM1QyxDQUFDO0lBQUMsT0FBTSxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUM3RSxDQUFDO0FBRUYsQ0FBQyJ9