@inco/js 0.1.35 → 0.1.37
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/README.md +20 -0
- package/dist/binary.js +32 -47
- package/dist/chain.js +7 -11
- package/dist/encryption/encryption.js +54 -62
- package/dist/encryption/index.cjs +24706 -0
- package/dist/encryption/index.js +2 -18
- package/dist/encryption/index.mjs +25787 -0
- package/dist/fhevm/fhe-environment.js +6 -9
- package/dist/fhevm/fhevm.js +34 -40
- package/dist/fhevm/index.cjs +87 -0
- package/dist/fhevm/index.js +2 -18
- package/dist/fhevm/index.mjs +90 -0
- package/dist/fhevm/reencrypt.js +33 -37
- package/dist/fhevm/tfhe.js +79 -87
- package/dist/fhevm/types.js +13 -16
- package/dist/generated/abis/addTwo.js +2 -5
- package/dist/generated/abis/inco-fhevm.js +47 -50
- package/dist/generated/abis/index.cjs +12493 -0
- package/dist/generated/abis/index.js +3 -19
- package/dist/generated/abis/index.mjs +12496 -0
- package/dist/generated/abis/lightning.d.ts +1361 -115
- package/dist/generated/abis/lightning.js +1043 -140
- package/dist/generated/es/cosmos/ics23/v1/proofs_pb.js +22 -25
- package/dist/generated/es/cosmos/msg/v1/msg_pb.js +6 -9
- package/dist/generated/es/cosmos_proto/cosmos_pb.js +18 -21
- package/dist/generated/es/google/api/annotations_pb.js +6 -9
- package/dist/generated/es/google/api/http_pb.js +6 -9
- package/dist/generated/es/inco/fhe/v1/events_pb.js +7 -10
- package/dist/generated/es/inco/fhe/v1/genesis_pb.js +12 -15
- package/dist/generated/es/inco/fhe/v1/query_pb.js +25 -28
- package/dist/generated/es/inco/fhe/v1/tx_pb.js +25 -28
- package/dist/generated/es/inco/fhe/v1/types_pb.js +19 -22
- package/dist/generated/es/inco/kms/lite/v1/kms_service_pb.js +11 -14
- package/dist/generated/es/inco/kms/lite/v1/types_pb.js +10 -13
- package/dist/generated/es/inco/preflight/v1/genesis_pb.js +6 -9
- package/dist/generated/es/inco/preflight/v1/query_pb.js +11 -14
- package/dist/generated/es/inco/preflight/v1/tx_pb.js +13 -16
- package/dist/generated/es/inco/preflight/v1/types_pb.js +8 -11
- package/dist/generated/es/kms/base_pb.js +35 -38
- package/dist/generated/es/sf/ethereum/type/v2/type_pb.js +43 -46
- package/dist/generated/fhe-environments.js +2 -5
- package/dist/generated/lightning.d.ts +21 -0
- package/dist/generated/lightning.js +24 -5
- package/dist/generated/local-node.js +2 -5
- package/dist/generated/ts/amino/amino.js +2 -5
- package/dist/generated/ts/cometbft/abci/v1/types.js +547 -563
- package/dist/generated/ts/cometbft/crypto/v1/keys.js +7 -10
- package/dist/generated/ts/cometbft/crypto/v1/proof.js +33 -36
- package/dist/generated/ts/cometbft/types/v1/params.js +95 -98
- package/dist/generated/ts/cometbft/types/v1/validator.js +40 -45
- package/dist/generated/ts/cosmos/app/v1alpha1/module.js +25 -28
- package/dist/generated/ts/cosmos/msg/v1/msg.js +2 -5
- package/dist/generated/ts/cosmos_proto/cosmos.js +15 -20
- package/dist/generated/ts/gogoproto/gogo.js +2 -5
- package/dist/generated/ts/google/api/annotations.js +2 -5
- package/dist/generated/ts/google/api/http.js +30 -33
- package/dist/generated/ts/google/protobuf/descriptor.js +468 -506
- package/dist/generated/ts/google/protobuf/duration.js +7 -10
- package/dist/generated/ts/google/protobuf/timestamp.js +7 -10
- package/dist/generated/ts/google/protobuf/wrappers.js +39 -42
- package/dist/generated/ts/inco/abci/v1/types.js +13 -16
- package/dist/generated/ts/inco/fhe/module/v1/module.js +7 -10
- package/dist/generated/ts/inco/fhe/v1/events.js +32 -35
- package/dist/generated/ts/inco/fhe/v1/genesis.js +127 -130
- package/dist/generated/ts/inco/fhe/v1/query.js +160 -163
- package/dist/generated/ts/inco/fhe/v1/tx.js +150 -153
- package/dist/generated/ts/inco/fhe/v1/types.js +70 -75
- package/dist/generated/ts/inco/originchain/module/v1/module.js +7 -10
- package/dist/generated/ts/inco/originchain/v1/abci.js +34 -37
- package/dist/generated/ts/inco/originchain/v1/events.js +11 -14
- package/dist/generated/ts/inco/originchain/v1/genesis.js +13 -16
- package/dist/generated/ts/inco/originchain/v1/query.js +41 -44
- package/dist/generated/ts/inco/originchain/v1/tx.js +24 -27
- package/dist/generated/ts/inco/originchain/v1/types.js +11 -14
- package/dist/generated/ts/inco/preflight/module/v1/module.js +7 -10
- package/dist/generated/ts/inco/preflight/v1/genesis.js +27 -30
- package/dist/generated/ts/inco/preflight/v1/query.js +41 -44
- package/dist/generated/ts/inco/preflight/v1/tx.js +53 -56
- package/dist/generated/ts/inco/preflight/v1/types.js +38 -41
- package/dist/handle.js +26 -33
- package/dist/index.cjs +24883 -0
- package/dist/index.js +6 -22
- package/dist/index.mjs +25964 -0
- package/dist/l1/client.js +19 -23
- package/dist/l1/index.js +3 -19
- package/dist/l1/preflight.js +13 -16
- package/dist/lite/deployments.js +9 -13
- package/dist/lite/ecies.js +37 -48
- package/dist/lite/hadu.js +21 -26
- package/dist/lite/index.cjs +52789 -0
- package/dist/lite/index.js +7 -23
- package/dist/lite/index.mjs +71691 -0
- package/dist/lite/lightning.js +31 -35
- package/dist/lite/reencrypt.d.ts +4 -4
- package/dist/lite/reencrypt.js +33 -44
- package/dist/local/index.cjs +24479 -0
- package/dist/local/index.js +2 -18
- package/dist/local/index.mjs +42864 -0
- package/dist/local/local-node.js +21 -25
- package/dist/reencryption/eip712.js +18 -21
- package/dist/reencryption/index.cjs +24681 -0
- package/dist/reencryption/index.js +3 -19
- package/dist/reencryption/index.mjs +24684 -0
- package/dist/reencryption/types.d.ts +6 -1
- package/dist/reencryption/types.js +1 -2
- package/dist/schema.js +6 -10
- package/dist/viem.js +7 -11
- package/package.json +1 -1
package/dist/lite/lightning.js
CHANGED
@@ -1,21 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
const schema_1 = require("../schema");
|
12
|
-
const ecies_1 = require("./ecies");
|
13
|
-
const reencrypt_1 = require("./reencrypt");
|
1
|
+
import { hexToBytes } from 'viem';
|
2
|
+
import { baseSepolia } from 'viem/chains';
|
3
|
+
import { HexString, parseAddress } from '../binary';
|
4
|
+
import { encryptionSchemes } from '../encryption';
|
5
|
+
import { lightningDeployments } from '../generated/lightning';
|
6
|
+
import { localNodeLightningConfig } from '../generated/local-node';
|
7
|
+
import { handleTypes } from '../handle';
|
8
|
+
import { parse } from '../schema';
|
9
|
+
import { decodeSecp256k1PublicKey, generateSecp256k1Keypair, getEciesEncryptor } from './ecies';
|
10
|
+
import { getKmsClient, incoLiteReencryptor } from './reencrypt';
|
14
11
|
/**
|
15
12
|
* The Lightning class provides a convenient way to interact with the Inco Lightning contract by binding to a specific
|
16
13
|
* deployment.
|
17
14
|
*/
|
18
|
-
class Lightning {
|
15
|
+
export class Lightning {
|
19
16
|
_deployment;
|
20
17
|
covalidatorUrl;
|
21
18
|
executorAddress;
|
@@ -27,14 +24,14 @@ class Lightning {
|
|
27
24
|
constructor(_deployment, covalidatorUrl) {
|
28
25
|
this._deployment = _deployment;
|
29
26
|
this.covalidatorUrl = covalidatorUrl;
|
30
|
-
this.executorAddress =
|
31
|
-
this.eciesPublicKey =
|
27
|
+
this.executorAddress = parseAddress(_deployment.executorAddress);
|
28
|
+
this.eciesPublicKey = parse(HexString, _deployment.eciesPublicKey);
|
32
29
|
this.chainId = BigInt(_deployment.chainId);
|
33
|
-
this.ephemeralKeypair =
|
34
|
-
this.kmsClient =
|
35
|
-
this.encryptor =
|
36
|
-
scheme:
|
37
|
-
pubKeyA:
|
30
|
+
this.ephemeralKeypair = generateSecp256k1Keypair();
|
31
|
+
this.kmsClient = getKmsClient(covalidatorUrl);
|
32
|
+
this.encryptor = getEciesEncryptor({
|
33
|
+
scheme: encryptionSchemes.ecies,
|
34
|
+
pubKeyA: decodeSecp256k1PublicKey(hexToBytes(parse(HexString, _deployment.eciesPublicKey))),
|
38
35
|
privKeyB: this.ephemeralKeypair,
|
39
36
|
});
|
40
37
|
}
|
@@ -42,7 +39,7 @@ class Lightning {
|
|
42
39
|
* Get a Lightning instance bound to the latest Lightning deployment for the Base Sepolia testnet.
|
43
40
|
*/
|
44
41
|
static baseSepoliaTestnet() {
|
45
|
-
return Lightning.latest('testnet',
|
42
|
+
return Lightning.latest('testnet', baseSepolia.id);
|
46
43
|
}
|
47
44
|
/**
|
48
45
|
* Get a Lightning instance bound to our canonical Anvil-based test node and test Covalidator node
|
@@ -55,7 +52,7 @@ class Lightning {
|
|
55
52
|
*
|
56
53
|
*/
|
57
54
|
static localNode() {
|
58
|
-
return Lightning.custom(
|
55
|
+
return Lightning.custom(localNodeLightningConfig);
|
59
56
|
}
|
60
57
|
/**
|
61
58
|
* Get a Lightning deployment by name or executor address on a particular chain.
|
@@ -64,8 +61,8 @@ class Lightning {
|
|
64
61
|
*/
|
65
62
|
static at(id) {
|
66
63
|
const deployment = this.isIdByName(id)
|
67
|
-
?
|
68
|
-
:
|
64
|
+
? lightningDeployments.find((d) => d.name === id.name && d.chainId === id.chainId)
|
65
|
+
: lightningDeployments.find((d) => d.executorAddress === id.executorAddress && d.chainId === id.chainId);
|
69
66
|
if (!deployment) {
|
70
67
|
throw new Error(`No deployment found for ${JSON.stringify(id)}`);
|
71
68
|
}
|
@@ -89,7 +86,7 @@ class Lightning {
|
|
89
86
|
*/
|
90
87
|
static latestDeployment(pepper, chainId) {
|
91
88
|
// Deployments are sorted so we are guaranteed to get the latest first
|
92
|
-
const latestByPepper =
|
89
|
+
const latestByPepper = lightningDeployments.find((d) => d.pepper === pepper && d.chainId === chainId);
|
93
90
|
if (!latestByPepper) {
|
94
91
|
// This should not actually happen provided this file compiles since we are extracting the available peppers
|
95
92
|
// from the const itself
|
@@ -128,8 +125,8 @@ class Lightning {
|
|
128
125
|
context: {
|
129
126
|
hostChainId: this.chainId,
|
130
127
|
aclAddress: this.executorAddress,
|
131
|
-
userAddress:
|
132
|
-
contractAddress:
|
128
|
+
userAddress: parseAddress(accountAddress),
|
129
|
+
contractAddress: parseAddress(dappAddress),
|
133
130
|
},
|
134
131
|
});
|
135
132
|
return ciphertext.value;
|
@@ -142,7 +139,7 @@ class Lightning {
|
|
142
139
|
* @param walletClient the wallet client to use for signing the reencrypt request.
|
143
140
|
*/
|
144
141
|
getReencryptor(walletClient) {
|
145
|
-
return
|
142
|
+
return incoLiteReencryptor({
|
146
143
|
walletClient,
|
147
144
|
kmsConnectRpcEndpointOrClient: this.kmsClient,
|
148
145
|
chainId: this.chainId,
|
@@ -162,15 +159,15 @@ class Lightning {
|
|
162
159
|
static plaintextFromValue(value) {
|
163
160
|
if (typeof value === 'boolean') {
|
164
161
|
return {
|
165
|
-
scheme:
|
166
|
-
type:
|
162
|
+
scheme: encryptionSchemes.ecies,
|
163
|
+
type: handleTypes.ebool,
|
167
164
|
value: value,
|
168
165
|
};
|
169
166
|
}
|
170
167
|
else if (typeof value === 'bigint' || typeof value === 'number') {
|
171
168
|
return {
|
172
|
-
scheme:
|
173
|
-
type:
|
169
|
+
scheme: encryptionSchemes.ecies,
|
170
|
+
type: handleTypes.euint256,
|
174
171
|
value: BigInt(value),
|
175
172
|
};
|
176
173
|
}
|
@@ -179,5 +176,4 @@ class Lightning {
|
|
179
176
|
}
|
180
177
|
}
|
181
178
|
}
|
182
|
-
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLCtCQUEyRTtBQUMzRSx3Q0FBMEM7QUFDMUMsc0NBQTZEO0FBQzdELDhDQUF1RjtBQUV2RixzREFBOEQ7QUFDOUQsd0RBQW1FO0FBQ25FLHNDQUF3QztBQUV4QyxzQ0FBa0M7QUFDbEMsbUNBQWtIO0FBQ2xILDJDQUFnRTtBQXdDaEU7OztHQUdHO0FBQ0gsTUFBYSxTQUFTO0lBVUQ7SUFDRDtJQVZGLGVBQWUsQ0FBVTtJQUN6QixjQUFjLENBQVk7SUFDMUIsT0FBTyxDQUFTO0lBRWYsU0FBUyxDQUF5QjtJQUNsQyxnQkFBZ0IsQ0FBbUI7SUFDbkMsU0FBUyxDQUE0QjtJQUV0RCxZQUNtQixXQUFjLEVBQ2YsY0FBc0I7UUFEckIsZ0JBQVcsR0FBWCxXQUFXLENBQUc7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUV0QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUEscUJBQVksRUFBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFBLGNBQUssRUFBQyxrQkFBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUEsZ0NBQXdCLEdBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUEsd0JBQVksRUFBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUEseUJBQWlCLEVBQUM7WUFDakMsTUFBTSxFQUFFLDhCQUFpQixDQUFDLEtBQUs7WUFDL0IsT0FBTyxFQUFFLElBQUEsZ0NBQXdCLEVBQUMsSUFBQSxpQkFBVSxF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
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0IsVUFBVSxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBVyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzdELE9BQU8sRUFBZSxpQkFBaUIsRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxTQUFTLENBQUM7QUFDbEgsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQXdDaEU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFVRDtJQUNEO0lBVkYsZUFBZSxDQUFVO0lBQ3pCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQVM7SUFFZixTQUFTLENBQXlCO0lBQ2xDLGdCQUFnQixDQUFtQjtJQUNuQyxTQUFTLENBQTRCO0lBRXRELFlBQ21CLFdBQWMsRUFDZixjQUFzQjtRQURyQixnQkFBVyxHQUFYLFdBQVcsQ0FBRztRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBRXRDLElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsY0FBYyxHQUFHLEtB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
|
package/dist/lite/reencrypt.d.ts
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
import { Client } from '@connectrpc/connect';
|
2
2
|
import { Account, Chain, Hex, Transport, WalletClient } from 'viem';
|
3
3
|
import { SupportedChain } from '../chain';
|
4
|
-
import { EciesScheme, SupportedFheType } from '../encryption/encryption';
|
4
|
+
import { EciesScheme, PlaintextOf, SupportedFheType } from '../encryption/encryption';
|
5
5
|
import { KmsService, ReencryptResponse } from '../generated/es/inco/kms/lite/v1/kms_service_pb';
|
6
6
|
import { Handle } from '../handle';
|
7
|
-
import type { EIP712, Reencryptor, ReencryptorArgs } from '../reencryption';
|
7
|
+
import type { BackoffConfig, EIP712, Reencryptor, ReencryptorArgs } from '../reencryption';
|
8
8
|
import { Secp256k1Keypair } from './ecies';
|
9
9
|
export interface IncoLiteReencryptorArgs extends ReencryptorArgs {
|
10
10
|
walletClient: WalletClient<Transport, Chain, Account>;
|
@@ -16,9 +16,9 @@ export declare function reencryptEIP712(chainId: bigint, ephemeralPubKey: Uint8A
|
|
16
16
|
}>;
|
17
17
|
export declare function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, walletClient, ephemeralKeypair, }: IncoLiteReencryptorArgs): Promise<Reencryptor<EciesScheme>>;
|
18
18
|
export declare function getKmsClient(kmsConnectRpcEndpointOrClient: string | Client<typeof KmsService>): Client<typeof KmsService>;
|
19
|
-
export declare function decryptGrpcResponse<T extends SupportedFheType>(response: ReencryptResponse, ephemeralKeypair: Secp256k1Keypair, handle: Handle): Promise<
|
19
|
+
export declare function decryptGrpcResponse<T extends SupportedFheType>(response: ReencryptResponse, ephemeralKeypair: Secp256k1Keypair, handle: Handle): Promise<PlaintextOf<1, T>>;
|
20
20
|
export declare function defaultCovalidatorGrpc(chain: SupportedChain): string;
|
21
21
|
export declare function pulumiCovalidatorGrpc(chain: SupportedChain): string;
|
22
22
|
export declare function lightningDevnetCovalidatorGrpc(chain: SupportedChain): string;
|
23
23
|
export declare function lightningTestnetCovalidatorGrpc(chain: SupportedChain): string;
|
24
|
-
export declare function retryWithBackoff<T>(fn: () => Promise<T>, maxRetries
|
24
|
+
export declare function retryWithBackoff<T>(fn: () => Promise<T>, { maxRetries, baseDelayInMs, backoffFactor }?: Partial<BackoffConfig>): Promise<T>;
|
package/dist/lite/reencrypt.js
CHANGED
@@ -1,24 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
exports.retryWithBackoff = retryWithBackoff;
|
12
|
-
const connect_1 = require("@connectrpc/connect");
|
13
|
-
const connect_web_1 = require("@connectrpc/connect-web");
|
14
|
-
const viem_1 = require("viem");
|
15
|
-
const binary_1 = require("../binary");
|
16
|
-
const chain_1 = require("../chain");
|
17
|
-
const encryption_1 = require("../encryption/encryption");
|
18
|
-
const kms_service_pb_1 = require("../generated/es/inco/kms/lite/v1/kms_service_pb");
|
19
|
-
const handle_1 = require("../handle");
|
20
|
-
const eip712_1 = require("../reencryption/eip712");
|
21
|
-
const ecies_1 = require("./ecies");
|
1
|
+
import { createClient } from '@connectrpc/connect';
|
2
|
+
import { createConnectTransport } from '@connectrpc/connect-web';
|
3
|
+
import { bytesToHex, hexToBytes } from 'viem';
|
4
|
+
import { bytesToBigInt } from '../binary';
|
5
|
+
import { getSupportedChain } from '../chain';
|
6
|
+
import { bigintToPlaintext, encryptionSchemes, } from '../encryption/encryption';
|
7
|
+
import { KmsService } from '../generated/es/inco/kms/lite/v1/kms_service_pb';
|
8
|
+
import { getHandleType } from '../handle';
|
9
|
+
import { createEIP712Payload } from '../reencryption/eip712';
|
10
|
+
import { decrypt, generateSecp256k1Keypair } from './ecies';
|
22
11
|
// The domain constants used for basic reencrypts.
|
23
12
|
// Note: for advanced ACL, since the signature is checked on-chain, the domain
|
24
13
|
// and version must match the ones used in the contract. For basic ones, we use
|
@@ -28,13 +17,13 @@ const BASIC_REENCRYPT_DOMAIN = {
|
|
28
17
|
version: '0.1.0',
|
29
18
|
};
|
30
19
|
// Create an EIP712 payload for the Inco Lite basic reencrypt.
|
31
|
-
function reencryptEIP712(chainId, ephemeralPubKey) {
|
32
|
-
return
|
20
|
+
export function reencryptEIP712(chainId, ephemeralPubKey) {
|
21
|
+
return createEIP712Payload({
|
33
22
|
chainId,
|
34
23
|
primaryType: 'ReencryptionRequest',
|
35
24
|
primaryTypeFields: [{ name: 'publicKey', type: 'bytes' }],
|
36
25
|
message: {
|
37
|
-
publicKey:
|
26
|
+
publicKey: bytesToHex(ephemeralPubKey),
|
38
27
|
},
|
39
28
|
domainName: BASIC_REENCRYPT_DOMAIN.name,
|
40
29
|
domainVersion: BASIC_REENCRYPT_DOMAIN.version,
|
@@ -42,10 +31,10 @@ function reencryptEIP712(chainId, ephemeralPubKey) {
|
|
42
31
|
}
|
43
32
|
// Returns the Inco Lite Reencryptor, which can reencrypt a handle using the
|
44
33
|
// Basic ACL.
|
45
|
-
async function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, walletClient, ephemeralKeypair, }) {
|
46
|
-
const kmsClient = getKmsClient(kmsConnectRpcEndpointOrClient || defaultCovalidatorGrpc(
|
34
|
+
export async function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, walletClient, ephemeralKeypair, }) {
|
35
|
+
const kmsClient = getKmsClient(kmsConnectRpcEndpointOrClient || defaultCovalidatorGrpc(getSupportedChain(chainId)));
|
47
36
|
if (!ephemeralKeypair) {
|
48
|
-
ephemeralKeypair = await
|
37
|
+
ephemeralKeypair = await generateSecp256k1Keypair();
|
49
38
|
}
|
50
39
|
// Sign the EIP712 attesting that the user has access to the private key
|
51
40
|
// corresponding to the ephemeral public key.
|
@@ -53,13 +42,13 @@ async function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, wal
|
|
53
42
|
// Using browser extensions, this step will prompt the user to sign the
|
54
43
|
// payload.
|
55
44
|
const eip712Signature = await walletClient.signTypedData(eip712Payload);
|
56
|
-
return async function reencrypt({ handle }) {
|
45
|
+
return async function reencrypt({ handle }, backoffConfig) {
|
57
46
|
const ephemeralPubKey = ephemeralKeypair.encodePublicKey();
|
58
47
|
const reencryptRequest = {
|
59
48
|
$typeName: 'inco.kms.lite.v1.ReencryptRequest',
|
60
49
|
userAddress: walletClient.account.address,
|
61
50
|
ephemeralPubKey,
|
62
|
-
eip712Signature:
|
51
|
+
eip712Signature: hexToBytes(eip712Signature),
|
63
52
|
handlesWithProofs: [
|
64
53
|
{
|
65
54
|
$typeName: 'inco.kms.lite.v1.HandleWithProof',
|
@@ -79,7 +68,7 @@ async function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, wal
|
|
79
68
|
],
|
80
69
|
};
|
81
70
|
try {
|
82
|
-
const response = await retryWithBackoff(() => kmsClient.reencrypt(reencryptRequest));
|
71
|
+
const response = await retryWithBackoff(() => kmsClient.reencrypt(reencryptRequest), backoffConfig);
|
83
72
|
return decryptGrpcResponse(response, ephemeralKeypair, handle);
|
84
73
|
}
|
85
74
|
catch (error) {
|
@@ -89,44 +78,44 @@ async function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, wal
|
|
89
78
|
};
|
90
79
|
}
|
91
80
|
// Helper function to get a KMS client from a string or a Client instance.
|
92
|
-
function getKmsClient(kmsConnectRpcEndpointOrClient) {
|
81
|
+
export function getKmsClient(kmsConnectRpcEndpointOrClient) {
|
93
82
|
if (typeof kmsConnectRpcEndpointOrClient === 'string') {
|
94
|
-
const transport =
|
83
|
+
const transport = createConnectTransport({
|
95
84
|
baseUrl: kmsConnectRpcEndpointOrClient,
|
96
85
|
});
|
97
|
-
return
|
86
|
+
return createClient(KmsService, transport);
|
98
87
|
}
|
99
88
|
return kmsConnectRpcEndpointOrClient;
|
100
89
|
}
|
101
90
|
// Decrypt using ECIES the ciphertext in the response.
|
102
91
|
// Even though the proto specifies a list of ciphertexts, our JS SDK
|
103
92
|
// currently only supports a single ciphertext.
|
104
|
-
async function decryptGrpcResponse(response, ephemeralKeypair, handle) {
|
93
|
+
export async function decryptGrpcResponse(response, ephemeralKeypair, handle) {
|
105
94
|
const reencryptedCt = response.payload?.userCiphertexts[0];
|
106
95
|
if (!reencryptedCt) {
|
107
96
|
throw new Error('No reencrypted ciphertext in the response');
|
108
97
|
}
|
109
|
-
const plaintextBytes = await
|
110
|
-
const plaintext =
|
111
|
-
return
|
98
|
+
const plaintextBytes = await decrypt(ephemeralKeypair, reencryptedCt.ciphertext);
|
99
|
+
const plaintext = bytesToBigInt(plaintextBytes);
|
100
|
+
return bigintToPlaintext(encryptionSchemes.ecies, getHandleType(handle), plaintext);
|
112
101
|
}
|
113
102
|
// Helper function to return the default gRPC endpoint for the covalidator.
|
114
103
|
// Currently, this returns the covalidator for the Inco Lightning public testnet.
|
115
|
-
function defaultCovalidatorGrpc(chain) {
|
104
|
+
export function defaultCovalidatorGrpc(chain) {
|
116
105
|
return lightningTestnetCovalidatorGrpc(chain);
|
117
106
|
}
|
118
107
|
// Helper function to get the gRPC endpoint for the Denver covalidator on the
|
119
108
|
// AWS (Pulumi) setup. This function is a convenience, and might disappear in
|
120
109
|
// the future, if the denver testnet is no longer supported.
|
121
|
-
function pulumiCovalidatorGrpc(chain) {
|
110
|
+
export function pulumiCovalidatorGrpc(chain) {
|
122
111
|
return `https://grpc.${chain.name.toLowerCase()}.covalidator.denver.inco.org`;
|
123
112
|
}
|
124
113
|
// Helper function to get the devnet gRPC endpoint for the Inco Lightning covalidator.
|
125
|
-
function lightningDevnetCovalidatorGrpc(chain) {
|
114
|
+
export function lightningDevnetCovalidatorGrpc(chain) {
|
126
115
|
return getCovalidatorGrpcHelper(chain, 'devnet', 'lightning');
|
127
116
|
}
|
128
117
|
// Helper function to get the testnet gRPC endpoint for the Inco Lightning covalidator.
|
129
|
-
function lightningTestnetCovalidatorGrpc(chain) {
|
118
|
+
export function lightningTestnetCovalidatorGrpc(chain) {
|
130
119
|
return getCovalidatorGrpcHelper(chain, 'testnet', 'lightning');
|
131
120
|
}
|
132
121
|
// Convert camelCase to dash-case.
|
@@ -138,7 +127,7 @@ function getCovalidatorGrpcHelper(chain, network, cluster) {
|
|
138
127
|
return `https://grpc.${camelToDashCase(chain.name)}.${cluster}.${network}.inco.org`;
|
139
128
|
}
|
140
129
|
// Helper function to implement exponential backoff retry logic
|
141
|
-
async function retryWithBackoff(fn, maxRetries =
|
130
|
+
export async function retryWithBackoff(fn, { maxRetries = 10, baseDelayInMs = 1000, backoffFactor = 1.5 } = {}) {
|
142
131
|
let lastError;
|
143
132
|
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
144
133
|
try {
|
@@ -149,11 +138,11 @@ async function retryWithBackoff(fn, maxRetries = 3, baseDelayInMs = 1000) {
|
|
149
138
|
if (attempt === maxRetries - 1) {
|
150
139
|
break;
|
151
140
|
}
|
152
|
-
const delay = baseDelayInMs * Math.pow(
|
141
|
+
const delay = baseDelayInMs * Math.pow(backoffFactor, attempt);
|
153
142
|
const jitter = delay * (0.8 + Math.random() * 0.4); // random jitter, 80% to 120% of the delay
|
154
143
|
await new Promise((resolve) => setTimeout(resolve, jitter));
|
155
144
|
}
|
156
145
|
}
|
157
146
|
throw lastError;
|
158
147
|
}
|
159
|
-
//# sourceMappingURL=data:application/json;base64,
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVlbmNyeXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpdGUvcmVlbmNyeXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQVcsVUFBVSxFQUFjLFVBQVUsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWtCLE1BQU0sVUFBVSxDQUFDO0FBQzdELE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsaUJBQWlCLEdBR2xCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBdUMsTUFBTSxpREFBaUQsQ0FBQztBQUNsSCxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0sV0FBVyxDQUFDO0FBRWxELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQW9CLE1BQU0sU0FBUyxDQUFDO0FBaUI5RSxrREFBa0Q7QUFDbEQsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSxnREFBZ0Q7QUFDaEQsTUFBTSxzQkFBc0IsR0FBRztJQUM3QixJQUFJLEVBQUUsa0JBQWtCO0lBQ3hCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQUM7QUFFRiw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUFlLEVBQUUsZUFBMkI7SUFDMUUsT0FBTyxtQkFBbUIsQ0FBQztRQUN6QixPQUFPO1FBQ1AsV0FBVyxFQUFFLHFCQUFxQjtRQUNsQyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFD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
|