@reclaimprotocol/attestor-core 4.0.3 → 5.0.1-beta.1
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/LICENSE +660 -660
- package/README.md +1 -2
- package/package.json +72 -60
- package/lib/avs/abis/avsDirectoryABI.d.ts +0 -60
- package/lib/avs/abis/avsDirectoryABI.js +0 -344
- package/lib/avs/abis/delegationABI.d.ts +0 -126
- package/lib/avs/abis/delegationABI.js +0 -5
- package/lib/avs/abis/registryABI.d.ts +0 -136
- package/lib/avs/abis/registryABI.js +0 -729
- package/lib/avs/client/create-claim-on-avs.d.ts +0 -12
- package/lib/avs/client/create-claim-on-avs.js +0 -147
- package/lib/avs/config.d.ts +0 -7
- package/lib/avs/config.js +0 -24
- package/lib/avs/contracts/ReclaimServiceManager.d.ts +0 -697
- package/lib/avs/contracts/ReclaimServiceManager.js +0 -3
- package/lib/avs/contracts/common.d.ts +0 -21
- package/lib/avs/contracts/common.js +0 -3
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +0 -888
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +0 -1174
- package/lib/avs/contracts/factories/index.d.ts +0 -1
- package/lib/avs/contracts/factories/index.js +0 -9
- package/lib/avs/contracts/index.d.ts +0 -3
- package/lib/avs/contracts/index.js +0 -40
- package/lib/avs/tests/test.operator.d.ts +0 -11
- package/lib/avs/tests/test.operator.js +0 -313
- package/lib/avs/tests/utils.d.ts +0 -2
- package/lib/avs/tests/utils.js +0 -50
- package/lib/avs/types/index.d.ts +0 -55
- package/lib/avs/types/index.js +0 -3
- package/lib/avs/utils/contracts.d.ts +0 -21
- package/lib/avs/utils/contracts.js +0 -38
- package/lib/avs/utils/register.d.ts +0 -27
- package/lib/avs/utils/register.js +0 -82
- package/lib/avs/utils/tasks.d.ts +0 -22
- package/lib/avs/utils/tasks.js +0 -45
- package/lib/client/create-claim.d.ts +0 -5
- package/lib/client/create-claim.js +0 -424
- package/lib/client/index.d.ts +0 -3
- package/lib/client/index.js +0 -20
- package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +0 -16
- package/lib/client/tunnels/make-rpc-tcp-tunnel.js +0 -60
- package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +0 -25
- package/lib/client/tunnels/make-rpc-tls-tunnel.js +0 -135
- package/lib/client/utils/attestor-pool.d.ts +0 -6
- package/lib/client/utils/attestor-pool.js +0 -28
- package/lib/client/utils/client-socket.d.ts +0 -11
- package/lib/client/utils/client-socket.js +0 -100
- package/lib/client/utils/message-handler.d.ts +0 -4
- package/lib/client/utils/message-handler.js +0 -94
- package/lib/config/index.d.ts +0 -28
- package/lib/config/index.js +0 -39
- package/lib/index.d.ts +0 -10
- package/lib/index.js +0 -50
- package/lib/mechain/abis/governanceABI.d.ts +0 -50
- package/lib/mechain/abis/governanceABI.js +0 -462
- package/lib/mechain/abis/taskABI.d.ts +0 -157
- package/lib/mechain/abis/taskABI.js +0 -513
- package/lib/mechain/client/create-claim-on-mechain.d.ts +0 -10
- package/lib/mechain/client/create-claim-on-mechain.js +0 -32
- package/lib/mechain/client/index.d.ts +0 -1
- package/lib/mechain/client/index.js +0 -18
- package/lib/mechain/constants/index.d.ts +0 -3
- package/lib/mechain/constants/index.js +0 -7
- package/lib/mechain/index.d.ts +0 -2
- package/lib/mechain/index.js +0 -19
- package/lib/mechain/types/index.d.ts +0 -23
- package/lib/mechain/types/index.js +0 -3
- package/lib/proto/api.d.ts +0 -508
- package/lib/proto/api.js +0 -3700
- package/lib/providers/http/index.d.ts +0 -3
- package/lib/providers/http/index.js +0 -613
- package/lib/providers/http/utils.d.ts +0 -74
- package/lib/providers/http/utils.js +0 -360
- package/lib/providers/index.d.ts +0 -4
- package/lib/providers/index.js +0 -11
- package/lib/scripts/check-avs-registration.d.ts +0 -1
- package/lib/scripts/check-avs-registration.js +0 -29
- package/lib/scripts/generate-provider-types.d.ts +0 -5
- package/lib/scripts/generate-provider-types.js +0 -82
- package/lib/scripts/generate-receipt.d.ts +0 -9
- package/lib/scripts/generate-receipt.js +0 -90
- package/lib/scripts/generate-toprf-keys.d.ts +0 -1
- package/lib/scripts/generate-toprf-keys.js +0 -23
- package/lib/scripts/register-avs-operator.d.ts +0 -1
- package/lib/scripts/register-avs-operator.js +0 -7
- package/lib/scripts/start-server.d.ts +0 -1
- package/lib/scripts/start-server.js +0 -13
- package/lib/scripts/update-avs-metadata.d.ts +0 -1
- package/lib/scripts/update-avs-metadata.js +0 -22
- package/lib/scripts/utils.d.ts +0 -1
- package/lib/scripts/utils.js +0 -11
- package/lib/scripts/verify-root-ca.d.ts +0 -1
- package/lib/scripts/verify-root-ca.js +0 -51
- package/lib/scripts/whitelist-operator.d.ts +0 -1
- package/lib/scripts/whitelist-operator.js +0 -18
- package/lib/server/create-server.d.ts +0 -7
- package/lib/server/create-server.js +0 -92
- package/lib/server/handlers/claimTunnel.d.ts +0 -2
- package/lib/server/handlers/claimTunnel.js +0 -78
- package/lib/server/handlers/completeClaimOnChain.d.ts +0 -2
- package/lib/server/handlers/completeClaimOnChain.js +0 -28
- package/lib/server/handlers/createClaimOnChain.d.ts +0 -2
- package/lib/server/handlers/createClaimOnChain.js +0 -31
- package/lib/server/handlers/createTaskOnMechain.d.ts +0 -2
- package/lib/server/handlers/createTaskOnMechain.js +0 -52
- package/lib/server/handlers/createTunnel.d.ts +0 -2
- package/lib/server/handlers/createTunnel.js +0 -101
- package/lib/server/handlers/disconnectTunnel.d.ts +0 -2
- package/lib/server/handlers/disconnectTunnel.js +0 -10
- package/lib/server/handlers/index.d.ts +0 -4
- package/lib/server/handlers/index.js +0 -22
- package/lib/server/handlers/init.d.ts +0 -2
- package/lib/server/handlers/init.js +0 -36
- package/lib/server/handlers/toprf.d.ts +0 -2
- package/lib/server/handlers/toprf.js +0 -21
- package/lib/server/index.d.ts +0 -4
- package/lib/server/index.js +0 -21
- package/lib/server/socket.d.ts +0 -13
- package/lib/server/socket.js +0 -114
- package/lib/server/tunnels/make-tcp-tunnel.d.ts +0 -20
- package/lib/server/tunnels/make-tcp-tunnel.js +0 -175
- package/lib/server/utils/apm.d.ts +0 -11
- package/lib/server/utils/apm.js +0 -43
- package/lib/server/utils/assert-valid-claim-request.d.ts +0 -30
- package/lib/server/utils/assert-valid-claim-request.js +0 -200
- package/lib/server/utils/config-env.d.ts +0 -1
- package/lib/server/utils/config-env.js +0 -7
- package/lib/server/utils/dns.d.ts +0 -1
- package/lib/server/utils/dns.js +0 -22
- package/lib/server/utils/generics.d.ts +0 -22
- package/lib/server/utils/generics.js +0 -59
- package/lib/server/utils/iso.d.ts +0 -1
- package/lib/server/utils/iso.js +0 -260
- package/lib/server/utils/keep-alive.d.ts +0 -7
- package/lib/server/utils/keep-alive.js +0 -42
- package/lib/server/utils/process-handshake.d.ts +0 -13
- package/lib/server/utils/process-handshake.js +0 -191
- package/lib/tests/describe-with-server.d.ts +0 -20
- package/lib/tests/describe-with-server.js +0 -64
- package/lib/tests/mock-provider-server.d.ts +0 -13
- package/lib/tests/mock-provider-server.js +0 -65
- package/lib/tests/mocks.d.ts +0 -4
- package/lib/tests/mocks.js +0 -23
- package/lib/tests/test.auth.d.ts +0 -1
- package/lib/tests/test.auth.js +0 -75
- package/lib/tests/test.bgp-listener.d.ts +0 -1
- package/lib/tests/test.bgp-listener.js +0 -169
- package/lib/tests/test.claim-creation.d.ts +0 -1
- package/lib/tests/test.claim-creation.js +0 -280
- package/lib/tests/test.http-parser.d.ts +0 -1
- package/lib/tests/test.http-parser.js +0 -120
- package/lib/tests/test.http-provider-utils.d.ts +0 -1
- package/lib/tests/test.http-provider-utils.js +0 -2416
- package/lib/tests/test.http-provider.d.ts +0 -1
- package/lib/tests/test.http-provider.js +0 -114
- package/lib/tests/test.rpc-communication.d.ts +0 -1
- package/lib/tests/test.rpc-communication.js +0 -64
- package/lib/tests/test.rpc-tunnel.d.ts +0 -1
- package/lib/tests/test.rpc-tunnel.js +0 -172
- package/lib/tests/test.signatures.d.ts +0 -1
- package/lib/tests/test.signatures.js +0 -24
- package/lib/tests/test.tcp-tunnel.d.ts +0 -1
- package/lib/tests/test.tcp-tunnel.js +0 -64
- package/lib/tests/test.zk.d.ts +0 -1
- package/lib/tests/test.zk.js +0 -337
- package/lib/tests/utils.d.ts +0 -18
- package/lib/tests/utils.js +0 -64
- package/lib/types/bgp.d.ts +0 -11
- package/lib/types/bgp.js +0 -3
- package/lib/types/claims.d.ts +0 -73
- package/lib/types/claims.js +0 -3
- package/lib/types/client.d.ts +0 -163
- package/lib/types/client.js +0 -3
- package/lib/types/general.d.ts +0 -51
- package/lib/types/general.js +0 -3
- package/lib/types/handlers.d.ts +0 -10
- package/lib/types/handlers.js +0 -3
- package/lib/types/index.d.ts +0 -10
- package/lib/types/index.js +0 -27
- package/lib/types/providers.d.ts +0 -150
- package/lib/types/providers.gen.d.ts +0 -429
- package/lib/types/providers.gen.js +0 -14
- package/lib/types/providers.js +0 -3
- package/lib/types/rpc.d.ts +0 -35
- package/lib/types/rpc.js +0 -3
- package/lib/types/signatures.d.ts +0 -28
- package/lib/types/signatures.js +0 -3
- package/lib/types/tunnel.d.ts +0 -18
- package/lib/types/tunnel.js +0 -3
- package/lib/types/zk.d.ts +0 -23
- package/lib/types/zk.js +0 -3
- package/lib/utils/atomic-operations.d.ts +0 -24
- package/lib/utils/atomic-operations.js +0 -65
- package/lib/utils/auth.d.ts +0 -7
- package/lib/utils/auth.js +0 -64
- package/lib/utils/b64-json.d.ts +0 -2
- package/lib/utils/b64-json.js +0 -23
- package/lib/utils/benchmark.d.ts +0 -1
- package/lib/utils/benchmark.js +0 -70
- package/lib/utils/bgp-listener.d.ts +0 -7
- package/lib/utils/bgp-listener.js +0 -126
- package/lib/utils/claims.d.ts +0 -33
- package/lib/utils/claims.js +0 -112
- package/lib/utils/connection-state-machine.d.ts +0 -43
- package/lib/utils/connection-state-machine.js +0 -129
- package/lib/utils/env.d.ts +0 -3
- package/lib/utils/env.js +0 -20
- package/lib/utils/error.d.ts +0 -27
- package/lib/utils/error.js +0 -43
- package/lib/utils/generics.d.ts +0 -112
- package/lib/utils/generics.js +0 -348
- package/lib/utils/http-parser.d.ts +0 -59
- package/lib/utils/http-parser.js +0 -252
- package/lib/utils/index.d.ts +0 -12
- package/lib/utils/index.js +0 -29
- package/lib/utils/logger.d.ts +0 -13
- package/lib/utils/logger.js +0 -100
- package/lib/utils/prepare-packets.d.ts +0 -16
- package/lib/utils/prepare-packets.js +0 -61
- package/lib/utils/redactions.d.ts +0 -54
- package/lib/utils/redactions.js +0 -148
- package/lib/utils/resource-monitor.d.ts +0 -61
- package/lib/utils/resource-monitor.js +0 -107
- package/lib/utils/retries.d.ts +0 -12
- package/lib/utils/retries.js +0 -28
- package/lib/utils/signatures/eth.d.ts +0 -2
- package/lib/utils/signatures/eth.js +0 -33
- package/lib/utils/signatures/index.d.ts +0 -5
- package/lib/utils/signatures/index.js +0 -11
- package/lib/utils/socket-base.d.ts +0 -22
- package/lib/utils/socket-base.js +0 -95
- package/lib/utils/tls.d.ts +0 -2
- package/lib/utils/tls.js +0 -32
- package/lib/utils/validation.d.ts +0 -2
- package/lib/utils/validation.js +0 -46
- package/lib/utils/ws.d.ts +0 -12
- package/lib/utils/ws.js +0 -38
- package/lib/utils/zk.d.ts +0 -55
- package/lib/utils/zk.js +0 -444
- package/lib/window-rpc/index.d.ts +0 -3
- package/lib/window-rpc/index.js +0 -20
- package/lib/window-rpc/setup-window-rpc.d.ts +0 -5
- package/lib/window-rpc/setup-window-rpc.js +0 -291
- package/lib/window-rpc/types.d.ts +0 -192
- package/lib/window-rpc/types.js +0 -3
- package/lib/window-rpc/utils.d.ts +0 -14
- package/lib/window-rpc/utils.js +0 -102
- package/lib/window-rpc/window-rpc-zk.d.ts +0 -15
- package/lib/window-rpc/window-rpc-zk.js +0 -85
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerOperator = registerOperator;
|
|
4
|
-
const ethers_1 = require("ethers");
|
|
5
|
-
const config_1 = require("../../avs/config");
|
|
6
|
-
const contracts_1 = require("../../avs/utils/contracts");
|
|
7
|
-
const utils_1 = require("../../utils");
|
|
8
|
-
/**
|
|
9
|
-
* Registers the operator on the chain, if required.
|
|
10
|
-
* If already registered -- will just pass through
|
|
11
|
-
*/
|
|
12
|
-
async function registerOperator({ logger = utils_1.logger, chainId = config_1.SELECTED_CHAIN_ID, wallet = (0, contracts_1.getContracts)(chainId).wallet, reclaimRpcUrl = config_1.RECLAIM_PUBLIC_URL } = {}) {
|
|
13
|
-
const contracts = (0, contracts_1.getContracts)(chainId);
|
|
14
|
-
const delegationManager = contracts.delegationManager
|
|
15
|
-
.connect(wallet);
|
|
16
|
-
const avsDirectory = contracts.avsDirectory
|
|
17
|
-
.connect(wallet);
|
|
18
|
-
const contract = contracts.contract
|
|
19
|
-
.connect(wallet);
|
|
20
|
-
const registryContract = contracts.registryContract
|
|
21
|
-
.connect(wallet);
|
|
22
|
-
const addr = await wallet.address;
|
|
23
|
-
try {
|
|
24
|
-
const tx1 = await delegationManager
|
|
25
|
-
.registerAsOperator({
|
|
26
|
-
earningsReceiver: addr,
|
|
27
|
-
delegationApprover: '0x0000000000000000000000000000000000000000',
|
|
28
|
-
stakerOptOutWindowBlocks: 0
|
|
29
|
-
}, '');
|
|
30
|
-
await tx1.wait();
|
|
31
|
-
logger.info('operator registered on DM successfully');
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
if (!err.message.includes('operator has already registered')) {
|
|
35
|
-
throw err;
|
|
36
|
-
}
|
|
37
|
-
logger.info('Operator already registered on EL');
|
|
38
|
-
}
|
|
39
|
-
const salt = ethers_1.ethers.utils.hexlify(ethers_1.ethers.utils.randomBytes(32));
|
|
40
|
-
// Example expiry, 1 hour from now
|
|
41
|
-
const expiry = Math.floor(Date.now() / 1000) + 3600;
|
|
42
|
-
// Define the output structure
|
|
43
|
-
const operatorSignature = {
|
|
44
|
-
expiry: expiry,
|
|
45
|
-
salt: salt,
|
|
46
|
-
signature: ''
|
|
47
|
-
};
|
|
48
|
-
// Calculate the digest hash using the avsDirectory's method
|
|
49
|
-
const digestHash = await avsDirectory
|
|
50
|
-
.calculateOperatorAVSRegistrationDigestHash(addr, contract.address, salt, expiry);
|
|
51
|
-
// Sign the digest hash with the operator's private key
|
|
52
|
-
const signingKey = new ethers_1.ethers.utils.SigningKey(wallet.privateKey);
|
|
53
|
-
const signature = signingKey.signDigest(digestHash);
|
|
54
|
-
// Encode the signature in the required format
|
|
55
|
-
operatorSignature.signature = ethers_1.ethers.utils.joinSignature(signature);
|
|
56
|
-
logger.info('operator signature generated successfully');
|
|
57
|
-
if (!(await registryContract.operatorRegistered(addr))) {
|
|
58
|
-
const tx2 = await registryContract
|
|
59
|
-
.registerOperatorWithSignature(addr, operatorSignature);
|
|
60
|
-
await tx2.wait();
|
|
61
|
-
logger.info('operator registered on AVS successfully');
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
logger.info('Operator already registered on AVS');
|
|
65
|
-
}
|
|
66
|
-
const existingMetadata = await contract.getMetadataForOperator(addr)
|
|
67
|
-
.catch(err => {
|
|
68
|
-
if (err.message.includes('Operator not found')) {
|
|
69
|
-
return undefined;
|
|
70
|
-
}
|
|
71
|
-
throw err;
|
|
72
|
-
});
|
|
73
|
-
const metadata = { addr, url: reclaimRpcUrl };
|
|
74
|
-
if ((existingMetadata === null || existingMetadata === void 0 ? void 0 : existingMetadata.addr) === metadata.addr
|
|
75
|
-
&& (existingMetadata === null || existingMetadata === void 0 ? void 0 : existingMetadata.url) === metadata.url) {
|
|
76
|
-
logger.info('operator metadata already up to date');
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
await contract.updateOperatorMetadata(metadata);
|
|
80
|
-
logger.info({ metadata }, 'operator metadata updated successfully');
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZzL3V0aWxzL3JlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNkJBLDRDQThGQztBQTNIRCxtQ0FBK0I7QUFDL0IsMkNBQXNFO0FBQ3RFLHVEQUFzRDtBQUN0RCxxQ0FBNEM7QUFzQjVDOzs7R0FHRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxFQUN0QyxNQUFNLEdBQUcsY0FBTSxFQUNmLE9BQU8sR0FBRywwQkFBaUIsRUFDM0IsTUFBTSxHQUFHLElBQUEsd0JBQVksRUFBQyxPQUFPLENBQUMsQ0FBQyxNQUFPLEVBQ3RDLGFBQWEsR0FBRywyQkFBa0IsS0FDakIsRUFBRTtJQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFBLHdCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUE7SUFDdkMsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsaUJBQWlCO1NBQ25ELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNqQixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsWUFBWTtTQUN6QyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDakIsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVE7U0FDakMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pCLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLGdCQUFnQjtTQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFBO0lBQ2pDLElBQUksQ0FBQztRQUNKLE1BQU0sR0FBRyxHQUFHLE1BQU0saUJBQWlCO2FBQ2pDLGtCQUFrQixDQUFDO1lBQ25CLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsa0JBQWtCLEVBQ2pCLDRDQUE0QztZQUM3Qyx3QkFBd0IsRUFBRSxDQUFDO1NBQzNCLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFD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
|
package/lib/avs/utils/tasks.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ethers, type Wallet } from 'ethers';
|
|
2
|
-
import type { IReclaimServiceManager, NewTaskCreatedEventObject } from '../../avs/contracts/ReclaimServiceManager';
|
|
3
|
-
type CreateClaimWithoutOwner = Omit<IReclaimServiceManager.ClaimRequestStruct, 'owner'>;
|
|
4
|
-
type CreateNewClaimRequestOnChainOpts = {
|
|
5
|
-
request: CreateClaimWithoutOwner;
|
|
6
|
-
payer: Wallet;
|
|
7
|
-
chainId?: string;
|
|
8
|
-
} & ({
|
|
9
|
-
owner: Wallet;
|
|
10
|
-
} | {
|
|
11
|
-
/**
|
|
12
|
-
* Address of the owner of the claim
|
|
13
|
-
*/
|
|
14
|
-
owner: string;
|
|
15
|
-
requestSignature?: string | Uint8Array;
|
|
16
|
-
});
|
|
17
|
-
export declare function createNewClaimRequestOnChain({ request, payer, chainId, ...rest }: CreateNewClaimRequestOnChainOpts): Promise<{
|
|
18
|
-
task: NewTaskCreatedEventObject;
|
|
19
|
-
tx: ethers.ContractReceipt;
|
|
20
|
-
}>;
|
|
21
|
-
export declare function signClaimRequest(request: IReclaimServiceManager.ClaimRequestStruct, owner: Wallet, chainId?: string): Promise<Uint8Array<ArrayBufferLike>>;
|
|
22
|
-
export {};
|
package/lib/avs/utils/tasks.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createNewClaimRequestOnChain = createNewClaimRequestOnChain;
|
|
4
|
-
exports.signClaimRequest = signClaimRequest;
|
|
5
|
-
const ethers_1 = require("ethers");
|
|
6
|
-
const contracts_1 = require("../../avs/utils/contracts");
|
|
7
|
-
async function createNewClaimRequestOnChain({ request, payer, chainId, ...rest }) {
|
|
8
|
-
const contracts = (0, contracts_1.getContracts)(chainId);
|
|
9
|
-
const contract = contracts.contract.connect(payer);
|
|
10
|
-
const ownerAddress = typeof rest.owner === 'string'
|
|
11
|
-
? rest.owner
|
|
12
|
-
: rest.owner.address;
|
|
13
|
-
const fullRequest = {
|
|
14
|
-
...request,
|
|
15
|
-
owner: ownerAddress
|
|
16
|
-
};
|
|
17
|
-
const signature = await getSignature();
|
|
18
|
-
const task = await contract.createNewTask(fullRequest, signature || '0x00');
|
|
19
|
-
const rslt = await task.wait();
|
|
20
|
-
const events = rslt.events;
|
|
21
|
-
// check task created event was emitted
|
|
22
|
-
const ev = events === null || events === void 0 ? void 0 : events[0];
|
|
23
|
-
const arg = ev === null || ev === void 0 ? void 0 : ev.args;
|
|
24
|
-
return { task: arg, tx: rslt };
|
|
25
|
-
function getSignature() {
|
|
26
|
-
if (ownerAddress.toLowerCase() === payer.address.toLowerCase()) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
if ('requestSignature' in rest) {
|
|
30
|
-
return rest.requestSignature;
|
|
31
|
-
}
|
|
32
|
-
if (typeof rest.owner !== 'object') {
|
|
33
|
-
throw new Error('Owner wallet must be provided or'
|
|
34
|
-
+ ' requestSignature must be provided');
|
|
35
|
-
}
|
|
36
|
-
return signClaimRequest(fullRequest, rest.owner, chainId);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
async function signClaimRequest(request, owner, chainId) {
|
|
40
|
-
const contract = (0, contracts_1.getContracts)(chainId).contract;
|
|
41
|
-
const encoded = await contract.encodeClaimRequest(request);
|
|
42
|
-
const strSig = await owner.signMessage(ethers_1.ethers.utils.arrayify(encoded));
|
|
43
|
-
return ethers_1.ethers.utils.arrayify(strSig);
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZzL3V0aWxzL3Rhc2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0JBLG9FQTJDQztBQUVELDRDQVNDO0FBMUVELG1DQUE0QztBQUU1Qyx1REFBc0Q7QUFrQi9DLEtBQUssVUFBVSw0QkFBNEIsQ0FBQyxFQUNsRCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxHQUFHLElBQUksRUFDMkI7SUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBQSx3QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xELE1BQU0sWUFBWSxHQUFHLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRO1FBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSztRQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTtJQUNyQixNQUFNLFdBQVcsR0FBOEM7UUFDOUQsR0FBRyxPQUFPO1FBQ1YsS0FBSyxFQUFFLFlBQVk7S0FDbkIsQ0FBQTtJQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxFQUFFLENBQUE7SUFDdEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxTQUFTLElBQUksTUFBTSxDQUFDLENBQUE7SUFDM0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUMxQix1Q0FBdUM7SUFDdkMsTUFBTSxFQUFFLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ3RCLE1BQU0sR0FBRyxHQUFHLEVBQUUsYUFBRixFQUFFLHVCQUFGLEVBQUUsQ0FBRSxJQUE0QyxDQUFBO0lBRTVELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUU5QixTQUFTLFlBQVk7UUFDcEIsSUFBRyxZQUFZLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQy9ELE9BQU07UUFDUCxDQUFDO1FBRUQsSUFBRyxrQkFBa0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQTtRQUM3QixDQUFDO1FBRUQsSUFBRyxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDZCxrQ0FBa0M7a0JBQ2hDLG9DQUFvQyxDQUN0QyxDQUFBO1FBQ0YsQ0FBQztRQUVELE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDMUQsQ0FBQztBQUNGLENBQUM7QUFFTSxLQUFLLFVBQVUsZ0JBQWdCLENBQ3JDLE9BQWtELEVBQ2xELEtBQWEsRUFDYixPQUFnQjtJQUVoQixNQUFNLFFBQVEsR0FBRyxJQUFBLHdCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFBO0lBQy9DLE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzFELE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxlQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ3RFLE9BQU8sZUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDckMsQ0FBQyJ9
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { CreateClaimOnAttestorOpts, ProviderName } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* Create a claim on the attestor
|
|
4
|
-
*/
|
|
5
|
-
export declare function createClaimOnAttestor<N extends ProviderName>({ logger: _logger, maxRetries, ...opts }: CreateClaimOnAttestorOpts<N>): Promise<import("../proto/api").ClaimTunnelResponse>;
|
|
@@ -1,424 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createClaimOnAttestor = createClaimOnAttestor;
|
|
4
|
-
const tls_1 = require("@reclaimprotocol/tls");
|
|
5
|
-
const make_rpc_tls_tunnel_1 = require("../client/tunnels/make-rpc-tls-tunnel");
|
|
6
|
-
const attestor_pool_1 = require("../client/utils/attestor-pool");
|
|
7
|
-
const config_1 = require("../config");
|
|
8
|
-
const api_1 = require("../proto/api");
|
|
9
|
-
const providers_1 = require("../providers");
|
|
10
|
-
const utils_1 = require("../utils");
|
|
11
|
-
const retries_1 = require("../utils/retries");
|
|
12
|
-
const signatures_1 = require("../utils/signatures");
|
|
13
|
-
const tls_2 = require("../utils/tls");
|
|
14
|
-
/**
|
|
15
|
-
* Create a claim on the attestor
|
|
16
|
-
*/
|
|
17
|
-
function createClaimOnAttestor({ logger: _logger, maxRetries = 3, ...opts }) {
|
|
18
|
-
const logger = _logger
|
|
19
|
-
// if the client has already been initialised
|
|
20
|
-
// and no logger is provided, use the client's logger
|
|
21
|
-
// otherwise default to the global logger
|
|
22
|
-
|| ('logger' in opts.client ? opts.client.logger : utils_1.logger);
|
|
23
|
-
return (0, retries_1.executeWithRetries)(attempt => (_createClaimOnAttestor({
|
|
24
|
-
...opts,
|
|
25
|
-
logger: attempt
|
|
26
|
-
? logger.child({ attempt })
|
|
27
|
-
: logger
|
|
28
|
-
})), { maxRetries, logger, shouldRetry });
|
|
29
|
-
}
|
|
30
|
-
function shouldRetry(err) {
|
|
31
|
-
var _a;
|
|
32
|
-
if (err instanceof TypeError) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
// possibly a network error, or the server
|
|
36
|
-
// closed the connection before we received the full data
|
|
37
|
-
if ((_a = err.message) === null || _a === void 0 ? void 0 : _a.includes('stream ended before')) {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
return err instanceof utils_1.AttestorError
|
|
41
|
-
&& err.code !== 'ERROR_INVALID_CLAIM'
|
|
42
|
-
&& err.code !== 'ERROR_BAD_REQUEST'
|
|
43
|
-
&& err.code !== 'ERROR_AUTHENTICATION_FAILED';
|
|
44
|
-
}
|
|
45
|
-
async function _createClaimOnAttestor({ name, params, secretParams, context, onStep, ownerPrivateKey, client: clientInit, logger = utils_1.logger, timestampS, updateProviderParams, updateParametersFromOprfData = true, ...zkOpts }) {
|
|
46
|
-
const provider = providers_1.providers[name];
|
|
47
|
-
const hostPort = (0, utils_1.getProviderValue)(params, provider.hostPort, secretParams);
|
|
48
|
-
const geoLocation = (0, utils_1.getProviderValue)(params, provider.geoLocation, secretParams);
|
|
49
|
-
const providerTlsOpts = (0, utils_1.getProviderValue)(params, provider.additionalClientOptions);
|
|
50
|
-
const tlsOpts = { ...(0, tls_2.getDefaultTlsOptions)(), ...providerTlsOpts };
|
|
51
|
-
const { zkEngine = 'snarkjs' } = zkOpts;
|
|
52
|
-
let redactionMode = (0, utils_1.getProviderValue)(params, provider.writeRedactionMode);
|
|
53
|
-
const [host, port] = hostPort.split(':');
|
|
54
|
-
const resParser = (0, utils_1.makeHttpResponseParser)();
|
|
55
|
-
let client;
|
|
56
|
-
let lastMsgRevealed = false;
|
|
57
|
-
const revealMap = new Map();
|
|
58
|
-
onStep === null || onStep === void 0 ? void 0 : onStep({ name: 'connecting' });
|
|
59
|
-
let endedHttpRequest;
|
|
60
|
-
const createTunnelReq = {
|
|
61
|
-
host,
|
|
62
|
-
port: port ? +port : config_1.DEFAULT_HTTPS_PORT,
|
|
63
|
-
geoLocation,
|
|
64
|
-
id: (0, utils_1.generateTunnelId)()
|
|
65
|
-
};
|
|
66
|
-
logger = logger.child({ tunnelId: createTunnelReq.id });
|
|
67
|
-
const authRequest = 'authRequest' in clientInit
|
|
68
|
-
? (typeof clientInit.authRequest === 'function'
|
|
69
|
-
? await clientInit.authRequest()
|
|
70
|
-
: clientInit.authRequest)
|
|
71
|
-
: undefined;
|
|
72
|
-
const tunnel = await (0, make_rpc_tls_tunnel_1.makeRpcTlsTunnel)({
|
|
73
|
-
tlsOpts,
|
|
74
|
-
connect: (connectMsgs) => {
|
|
75
|
-
let created = false;
|
|
76
|
-
if ('metadata' in clientInit) {
|
|
77
|
-
client = clientInit;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
client = (0, attestor_pool_1.getAttestorClientFromPool)(clientInit.url, () => {
|
|
81
|
-
created = true;
|
|
82
|
-
return {
|
|
83
|
-
authRequest: authRequest,
|
|
84
|
-
initMessages: connectMsgs,
|
|
85
|
-
logger
|
|
86
|
-
};
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
if (!created) {
|
|
90
|
-
client
|
|
91
|
-
.waitForInit()
|
|
92
|
-
.then(() => client.sendMessage(...connectMsgs))
|
|
93
|
-
.catch(err => {
|
|
94
|
-
logger.error({ err }, 'error in sending init msgs');
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
return client;
|
|
98
|
-
},
|
|
99
|
-
logger,
|
|
100
|
-
request: createTunnelReq,
|
|
101
|
-
onMessage(data) {
|
|
102
|
-
logger.debug({ bytes: data.length }, 'recv data from server');
|
|
103
|
-
resParser.onChunk(data);
|
|
104
|
-
if (resParser.res.complete) {
|
|
105
|
-
logger === null || logger === void 0 ? void 0 : logger.debug('got complete HTTP response from server');
|
|
106
|
-
// wait a little bit to make sure the client has
|
|
107
|
-
// finished writing the response
|
|
108
|
-
setTimeout(() => {
|
|
109
|
-
endedHttpRequest === null || endedHttpRequest === void 0 ? void 0 : endedHttpRequest();
|
|
110
|
-
}, 100);
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
onClose(err) {
|
|
114
|
-
const level = err ? 'error' : 'debug';
|
|
115
|
-
logger === null || logger === void 0 ? void 0 : logger[level]({ err }, 'tls session ended');
|
|
116
|
-
endedHttpRequest === null || endedHttpRequest === void 0 ? void 0 : endedHttpRequest(err);
|
|
117
|
-
try {
|
|
118
|
-
resParser.streamEnded();
|
|
119
|
-
}
|
|
120
|
-
catch (_a) { }
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
const { version: tlsVersion, cipherSuite } = tunnel.tls.getMetadata();
|
|
124
|
-
if (tlsVersion === 'TLS1_2' && redactionMode !== 'zk') {
|
|
125
|
-
redactionMode = 'zk';
|
|
126
|
-
logger.info('TLS1.2 detected, defaulting to zk redaction mode');
|
|
127
|
-
}
|
|
128
|
-
const { redactions, data: requestStr } = provider.createRequest(
|
|
129
|
-
// @ts-ignore
|
|
130
|
-
secretParams, params, logger);
|
|
131
|
-
const requestData = typeof requestStr === 'string'
|
|
132
|
-
? (0, tls_1.strToUint8Array)(requestStr)
|
|
133
|
-
: requestStr;
|
|
134
|
-
logger.debug({ redactions: redactions.length }, 'generated request');
|
|
135
|
-
const waitForAllData = new Promise((resolve, reject) => {
|
|
136
|
-
endedHttpRequest = err => (err ? reject(err) : resolve());
|
|
137
|
-
});
|
|
138
|
-
onStep === null || onStep === void 0 ? void 0 : onStep({ name: 'sending-request-data' });
|
|
139
|
-
try {
|
|
140
|
-
if (redactionMode === 'zk') {
|
|
141
|
-
await writeRedactedZk();
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
await writeRedactedWithKeyUpdate();
|
|
145
|
-
}
|
|
146
|
-
logger.info('wrote request to server');
|
|
147
|
-
}
|
|
148
|
-
catch (err) {
|
|
149
|
-
// wait for complete stream end when the session is closed
|
|
150
|
-
// mid-write, as this means the server could not process
|
|
151
|
-
// our request due to some error. Hope the stream end
|
|
152
|
-
// error will be more descriptive
|
|
153
|
-
logger.error({ err }, 'session errored during write, waiting for stream end');
|
|
154
|
-
}
|
|
155
|
-
onStep === null || onStep === void 0 ? void 0 : onStep({ name: 'waiting-for-response' });
|
|
156
|
-
await waitForAllData;
|
|
157
|
-
await tunnel.close();
|
|
158
|
-
logger.info('session closed, processing response');
|
|
159
|
-
// update the response selections
|
|
160
|
-
if (updateProviderParams) {
|
|
161
|
-
const { params: updatedParms, secretParams: updatedSecretParms } = await updateProviderParams(tunnel.transcript, tlsVersion !== null && tlsVersion !== void 0 ? tlsVersion : 'TLS1_2');
|
|
162
|
-
params = { ...params, ...updatedParms };
|
|
163
|
-
secretParams = { ...secretParams, ...updatedSecretParms };
|
|
164
|
-
}
|
|
165
|
-
const signatureAlg = signatures_1.SIGNATURES[client.metadata.signatureType];
|
|
166
|
-
let serverIV;
|
|
167
|
-
let clientIV;
|
|
168
|
-
const [serverBlock] = getLastBlocks('server', 1);
|
|
169
|
-
if (serverBlock && serverBlock.message.type === 'ciphertext') {
|
|
170
|
-
serverIV = serverBlock.message.fixedIv;
|
|
171
|
-
}
|
|
172
|
-
const [clientBlock] = getLastBlocks('client', 1);
|
|
173
|
-
if (clientBlock && clientBlock.message.type === 'ciphertext') {
|
|
174
|
-
clientIV = clientBlock.message.fixedIv;
|
|
175
|
-
}
|
|
176
|
-
const transcript = await generateTranscript();
|
|
177
|
-
// now that we have the full transcript, we need
|
|
178
|
-
// to generate the ZK proofs & send them to the attestor
|
|
179
|
-
// to verify & sign our claim
|
|
180
|
-
const claimTunnelReq = api_1.ClaimTunnelRequest.create({
|
|
181
|
-
request: createTunnelReq,
|
|
182
|
-
data: {
|
|
183
|
-
provider: name,
|
|
184
|
-
parameters: (0, utils_1.canonicalStringify)(params),
|
|
185
|
-
context: (0, utils_1.canonicalStringify)(context),
|
|
186
|
-
timestampS: timestampS !== null && timestampS !== void 0 ? timestampS : (0, utils_1.unixTimestampSeconds)(),
|
|
187
|
-
owner: getAddress(),
|
|
188
|
-
},
|
|
189
|
-
transcript: transcript,
|
|
190
|
-
zkEngine: zkEngine === 'gnark'
|
|
191
|
-
? api_1.ZKProofEngine.ZK_ENGINE_GNARK
|
|
192
|
-
: api_1.ZKProofEngine.ZK_ENGINE_SNARKJS,
|
|
193
|
-
fixedServerIV: serverIV,
|
|
194
|
-
fixedClientIV: clientIV,
|
|
195
|
-
});
|
|
196
|
-
onStep === null || onStep === void 0 ? void 0 : onStep({ name: 'waiting-for-verification' });
|
|
197
|
-
const claimTunnelBytes = api_1.ClaimTunnelRequest
|
|
198
|
-
.encode(claimTunnelReq).finish();
|
|
199
|
-
const requestSignature = await signatureAlg
|
|
200
|
-
.sign(claimTunnelBytes, ownerPrivateKey);
|
|
201
|
-
claimTunnelReq.signatures = { requestSignature };
|
|
202
|
-
const result = await client.rpc('claimTunnel', claimTunnelReq);
|
|
203
|
-
logger.info({ success: !!result.claim }, 'recv claim response');
|
|
204
|
-
return result;
|
|
205
|
-
async function writeRedactedWithKeyUpdate() {
|
|
206
|
-
var _a;
|
|
207
|
-
let currentIndex = 0;
|
|
208
|
-
for (const section of redactions) {
|
|
209
|
-
const block = requestData
|
|
210
|
-
.slice(currentIndex, section.fromIndex);
|
|
211
|
-
if (block.length) {
|
|
212
|
-
await writeWithReveal(block, true);
|
|
213
|
-
}
|
|
214
|
-
const redacted = requestData
|
|
215
|
-
.slice(section.fromIndex, section.toIndex);
|
|
216
|
-
await writeWithReveal(redacted, false);
|
|
217
|
-
currentIndex = section.toIndex;
|
|
218
|
-
}
|
|
219
|
-
// write if redactions were there
|
|
220
|
-
const lastBlockStart = ((_a = redactions === null || redactions === void 0 ? void 0 : redactions[redactions.length - 1]) === null || _a === void 0 ? void 0 : _a.toIndex) || 0;
|
|
221
|
-
const block = requestData.slice(lastBlockStart);
|
|
222
|
-
if (block.length) {
|
|
223
|
-
await writeWithReveal(block, true);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
async function writeRedactedZk() {
|
|
227
|
-
let blocksWritten = tunnel.transcript.length;
|
|
228
|
-
await tunnel.tls.write(requestData);
|
|
229
|
-
blocksWritten = tunnel.transcript.length - blocksWritten;
|
|
230
|
-
setRevealOfLastSentBlocks({
|
|
231
|
-
type: 'zk',
|
|
232
|
-
redactedPlaintext: (0, utils_1.redactSlices)(requestData, redactions)
|
|
233
|
-
}, blocksWritten);
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Write data to the tunnel, with the option to mark the packet
|
|
237
|
-
* as revealable to the attestor or not
|
|
238
|
-
*/
|
|
239
|
-
async function writeWithReveal(data, reveal) {
|
|
240
|
-
// if the reveal state has changed, update the traffic keys
|
|
241
|
-
// to not accidentally reveal a packet not meant to be revealed
|
|
242
|
-
// and vice versa
|
|
243
|
-
if (reveal !== lastMsgRevealed) {
|
|
244
|
-
await tunnel.tls.updateTrafficKeys();
|
|
245
|
-
}
|
|
246
|
-
let blocksWritten = tunnel.transcript.length;
|
|
247
|
-
await tunnel.write(data);
|
|
248
|
-
blocksWritten = tunnel.transcript.length - blocksWritten;
|
|
249
|
-
// now we mark the packet to be revealed to the attestor
|
|
250
|
-
setRevealOfLastSentBlocks(reveal ? { type: 'complete' } : undefined, blocksWritten);
|
|
251
|
-
lastMsgRevealed = reveal;
|
|
252
|
-
}
|
|
253
|
-
function setRevealOfLastSentBlocks(reveal, nBlocks = 1) {
|
|
254
|
-
const lastBlocks = getLastBlocks('client', nBlocks);
|
|
255
|
-
if (!lastBlocks.length) {
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
for (const block of lastBlocks) {
|
|
259
|
-
setRevealOfMessage(block.message, reveal);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
function getLastBlocks(sender, nBlocks) {
|
|
263
|
-
// set the correct index for the server blocks
|
|
264
|
-
const lastBlocks = [];
|
|
265
|
-
for (let i = tunnel.transcript.length - 1; i >= 0; i--) {
|
|
266
|
-
const block = tunnel.transcript[i];
|
|
267
|
-
if (block.sender === sender) {
|
|
268
|
-
lastBlocks.push(block);
|
|
269
|
-
if (lastBlocks.length === nBlocks) {
|
|
270
|
-
break;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
return lastBlocks;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Generate transcript with reveal data for the attestor to verify
|
|
278
|
-
*/
|
|
279
|
-
async function generateTranscript() {
|
|
280
|
-
await addServerSideReveals();
|
|
281
|
-
const startMs = Date.now();
|
|
282
|
-
const revealedMessages = await (0, utils_1.preparePacketsForReveal)(tunnel.transcript, revealMap, {
|
|
283
|
-
logger,
|
|
284
|
-
cipherSuite: cipherSuite,
|
|
285
|
-
onZkProgress(done, total) {
|
|
286
|
-
const timeSinceStartMs = Date.now() - startMs;
|
|
287
|
-
const timePerBlockMs = timeSinceStartMs / done;
|
|
288
|
-
const timeLeftMs = timePerBlockMs * (total - done);
|
|
289
|
-
onStep === null || onStep === void 0 ? void 0 : onStep({
|
|
290
|
-
name: 'generating-zk-proofs',
|
|
291
|
-
proofsDone: done,
|
|
292
|
-
proofsTotal: total,
|
|
293
|
-
approxTimeLeftS: Math.round(timeLeftMs / 1000),
|
|
294
|
-
});
|
|
295
|
-
},
|
|
296
|
-
...zkOpts,
|
|
297
|
-
});
|
|
298
|
-
return revealedMessages;
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Add reveals for server side blocks, using
|
|
302
|
-
* the provider's redaction function if available.
|
|
303
|
-
* Otherwise, opts to reveal all server side blocks.
|
|
304
|
-
*/
|
|
305
|
-
async function addServerSideReveals() {
|
|
306
|
-
const allPackets = tunnel.transcript;
|
|
307
|
-
let serverPacketsToReveal = 'all';
|
|
308
|
-
const packets = [];
|
|
309
|
-
const serverBlocks = [];
|
|
310
|
-
for (const b of allPackets) {
|
|
311
|
-
if (b.message.type !== 'ciphertext'
|
|
312
|
-
|| !(0, utils_1.isApplicationData)(b.message, tlsVersion)) {
|
|
313
|
-
continue;
|
|
314
|
-
}
|
|
315
|
-
const plaintext = tlsVersion === 'TLS1_3'
|
|
316
|
-
? b.message.plaintext.slice(0, -1)
|
|
317
|
-
: b.message.plaintext;
|
|
318
|
-
packets.push({
|
|
319
|
-
message: plaintext,
|
|
320
|
-
sender: b.sender
|
|
321
|
-
});
|
|
322
|
-
if (b.sender === 'server') {
|
|
323
|
-
serverBlocks.push({
|
|
324
|
-
plaintext: plaintext,
|
|
325
|
-
message: b.message
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
if (provider.getResponseRedactions) {
|
|
330
|
-
serverPacketsToReveal = await (0, utils_1.getBlocksToReveal)(serverBlocks, total => provider.getResponseRedactions({
|
|
331
|
-
response: total,
|
|
332
|
-
params,
|
|
333
|
-
logger,
|
|
334
|
-
ctx: config_1.PROVIDER_CTX
|
|
335
|
-
}), performOprf);
|
|
336
|
-
}
|
|
337
|
-
const revealedPackets = packets
|
|
338
|
-
.filter(p => p.sender === 'client');
|
|
339
|
-
if (serverPacketsToReveal === 'all') {
|
|
340
|
-
// reveal all server side blocks
|
|
341
|
-
for (const { message, sender } of allPackets) {
|
|
342
|
-
if (sender === 'server') {
|
|
343
|
-
setRevealOfMessage(message, { type: 'complete' });
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
revealedPackets.push(...packets.filter(p => p.sender === 'server'));
|
|
347
|
-
}
|
|
348
|
-
else {
|
|
349
|
-
for (const { block, redactedPlaintext, toprfs } of serverPacketsToReveal) {
|
|
350
|
-
setRevealOfMessage(block.message, {
|
|
351
|
-
type: 'zk',
|
|
352
|
-
redactedPlaintext,
|
|
353
|
-
toprfs
|
|
354
|
-
});
|
|
355
|
-
revealedPackets.push({ sender: 'server', message: redactedPlaintext });
|
|
356
|
-
if (updateParametersFromOprfData && toprfs) {
|
|
357
|
-
let strParams = (0, utils_1.canonicalStringify)(params);
|
|
358
|
-
for (const toprf of toprfs) {
|
|
359
|
-
strParams = strParams.replaceAll((0, utils_1.uint8ArrayToStr)(toprf.plaintext), (0, utils_1.binaryHashToStr)(toprf.nullifier, toprf.dataLocation.length));
|
|
360
|
-
}
|
|
361
|
-
params = JSON.parse(strParams);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
await provider.assertValidProviderReceipt({
|
|
366
|
-
receipt: revealedPackets,
|
|
367
|
-
params: {
|
|
368
|
-
...params,
|
|
369
|
-
// provide secret params for proper
|
|
370
|
-
// request body validation
|
|
371
|
-
secretParams,
|
|
372
|
-
},
|
|
373
|
-
logger,
|
|
374
|
-
ctx: config_1.PROVIDER_CTX
|
|
375
|
-
});
|
|
376
|
-
// reveal all handshake blocks
|
|
377
|
-
// so the attestor can verify there was no
|
|
378
|
-
// hanky-panky
|
|
379
|
-
for (const p of allPackets) {
|
|
380
|
-
if (p.message.type !== 'ciphertext') {
|
|
381
|
-
continue;
|
|
382
|
-
}
|
|
383
|
-
// break the moment we hit the first
|
|
384
|
-
// application data packet
|
|
385
|
-
if ((0, utils_1.isApplicationData)(p.message, tlsVersion)) {
|
|
386
|
-
break;
|
|
387
|
-
}
|
|
388
|
-
setRevealOfMessage(p.message, { type: 'complete' });
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
async function performOprf(plaintext) {
|
|
392
|
-
var _a;
|
|
393
|
-
logger.info({ length: plaintext.length }, 'generating OPRF...');
|
|
394
|
-
const oprfOperator = ((_a = zkOpts.oprfOperators) === null || _a === void 0 ? void 0 : _a['chacha20'])
|
|
395
|
-
|| (0, utils_1.makeDefaultOPRFOperator)('chacha20', zkEngine, logger);
|
|
396
|
-
const reqData = await oprfOperator.generateOPRFRequestData(plaintext, config_1.TOPRF_DOMAIN_SEPARATOR, logger);
|
|
397
|
-
const res = await client.rpc('toprf', {
|
|
398
|
-
maskedData: reqData.maskedData,
|
|
399
|
-
engine: (0, utils_1.getEngineProto)(zkEngine)
|
|
400
|
-
});
|
|
401
|
-
const nullifier = await oprfOperator.finaliseOPRF(client.initResponse.toprfPublicKey, reqData, [res]);
|
|
402
|
-
const data = {
|
|
403
|
-
nullifier,
|
|
404
|
-
responses: [res],
|
|
405
|
-
mask: reqData.mask,
|
|
406
|
-
dataLocation: undefined,
|
|
407
|
-
plaintext
|
|
408
|
-
};
|
|
409
|
-
return data;
|
|
410
|
-
}
|
|
411
|
-
function setRevealOfMessage(message, reveal) {
|
|
412
|
-
if (reveal) {
|
|
413
|
-
revealMap.set(message, reveal);
|
|
414
|
-
return;
|
|
415
|
-
}
|
|
416
|
-
revealMap.delete(message);
|
|
417
|
-
}
|
|
418
|
-
function getAddress() {
|
|
419
|
-
const { getAddress, getPublicKey } = signatureAlg;
|
|
420
|
-
const pubKey = getPublicKey(ownerPrivateKey);
|
|
421
|
-
return getAddress(pubKey);
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNsYWltLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jcmVhdGUtY2xhaW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE0Q0Esc0RBcUJDO0FBakVELDhDQUF3RTtBQUN4RSxnRkFBeUU7QUFDekUsa0VBQTBFO0FBQzFFLHVDQUFxRjtBQUNyRix1Q0FBaUU7QUFDakUsNkNBQXlDO0FBU3pDLHFDQWlCa0I7QUFDbEIsK0NBQXNEO0FBQ3RELHFEQUFpRDtBQUNqRCx1Q0FBb0Q7QUFPcEQ7O0dBRUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FDcEMsRUFDQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQ1Y7SUFFL0IsTUFBTSxNQUFNLEdBQUcsT0FBTztRQUNyQiw2Q0FBNkM7UUFDN0MscURBQXFEO1FBQ3JELHlDQUF5QztXQUN0QyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBTSxDQUFDLENBQUE7SUFDM0QsT0FBTyxJQUFBLDRCQUFrQixFQUN4QixPQUFPLENBQUMsRUFBRSxDQUFDLENBQ1Ysc0JBQXNCLENBQUk7UUFDekIsR0FBRyxJQUFJO1FBQ1AsTUFBTSxFQUFFLE9BQU87WUFDZCxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxNQUFNO0tBQ1QsQ0FBQyxDQUNGLEVBQ0QsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUNuQyxDQUFBO0FBQ0YsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEdBQVU7O0lBQzlCLElBQUcsR0FBRyxZQUFZLFNBQVMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sS0FBSyxDQUFBO0lBQ2IsQ0FBQztJQUVELDBDQUEwQztJQUMx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
|
package/lib/client/index.d.ts
DELETED
package/lib/client/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./create-claim"), exports);
|
|
18
|
-
__exportStar(require("./utils/attestor-pool"), exports);
|
|
19
|
-
__exportStar(require("./utils/client-socket"), exports);
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBOEI7QUFDOUIsd0RBQXFDO0FBQ3JDLHdEQUFxQyJ9
|