@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
@@ -1,11 +1,8 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getFheEnvironment = getFheEnvironment;
|
4
1
|
// Avoid inporting any other dependencies in this file to avoid serialisation issues downstream in infracto
|
5
|
-
|
6
|
-
|
7
|
-
function getFheEnvironment(chainId) {
|
8
|
-
const supportedChain =
|
9
|
-
return
|
2
|
+
import { getSupportedChain } from '../chain';
|
3
|
+
import { FHEEnvironments } from '../generated/fhe-environments';
|
4
|
+
export function getFheEnvironment(chainId) {
|
5
|
+
const supportedChain = getSupportedChain(chainId);
|
6
|
+
return FHEEnvironments[supportedChain.name];
|
10
7
|
}
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmhlLWVudmlyb25tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZoZXZtL2ZoZS1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyR0FBMkc7QUFDM0csT0FBTyxFQUFnQyxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFhaEUsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQWlCO0lBQ2pELE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUF1QyxDQUFDLENBQUM7QUFDakYsQ0FBQyJ9
|
package/dist/fhevm/fhevm.js
CHANGED
@@ -1,70 +1,64 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
const chains = require("viem/chains");
|
12
|
-
const binary_1 = require("../binary");
|
13
|
-
const inco_fhevm_1 = require("../generated/abis/inco-fhevm");
|
14
|
-
const query_pb_1 = require("../generated/es/inco/fhe/v1/query_pb");
|
15
|
-
const l1_1 = require("../l1");
|
16
|
-
const fhe_environment_1 = require("./fhe-environment");
|
1
|
+
import { createClient } from '@connectrpc/connect';
|
2
|
+
import { createGrpcTransport } from '@connectrpc/connect-node';
|
3
|
+
import { createPublicClient, createWalletClient, getContract, http, } from 'viem';
|
4
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
5
|
+
import * as chains from 'viem/chains';
|
6
|
+
import { normaliseToHex } from '../binary';
|
7
|
+
import { gatewayContractAbi, kmsVerifierAbi } from '../generated/abis/inco-fhevm';
|
8
|
+
import { Query } from '../generated/es/inco/fhe/v1/query_pb';
|
9
|
+
import { createL1Client, createL1Wallet } from '../l1';
|
10
|
+
import { getFheEnvironment } from './fhe-environment';
|
17
11
|
// Create a public and wallet client for the given chain.
|
18
|
-
function createPublicWalletClient({ account, hostChainRpcUrl, chain, }) {
|
19
|
-
const transport =
|
20
|
-
const publicClient =
|
12
|
+
export function createPublicWalletClient({ account, hostChainRpcUrl, chain, }) {
|
13
|
+
const transport = http(hostChainRpcUrl);
|
14
|
+
const publicClient = createPublicClient({
|
21
15
|
chain,
|
22
16
|
transport,
|
23
17
|
});
|
24
18
|
// const privateKey = await shell("cast wallet private-key --account sepolia_deployer --password ''");
|
25
19
|
// const account = privateKeyToAccount(mustBeHex(privateKey));
|
26
|
-
const walletClient =
|
20
|
+
const walletClient = createWalletClient({
|
27
21
|
chain,
|
28
22
|
transport,
|
29
23
|
account,
|
30
24
|
});
|
31
25
|
return { public: publicClient, wallet: walletClient };
|
32
26
|
}
|
33
|
-
function getFhevmDeployerClient({ deployer, hostChainRpcUrl, chain, }) {
|
27
|
+
export function getFhevmDeployerClient({ deployer, hostChainRpcUrl, chain, }) {
|
34
28
|
const viemChain = getViemChain(chain.id);
|
35
|
-
const transport =
|
36
|
-
const publicClient =
|
29
|
+
const transport = http(hostChainRpcUrl);
|
30
|
+
const publicClient = createPublicClient({
|
37
31
|
chain: viemChain,
|
38
32
|
transport,
|
39
33
|
});
|
40
34
|
// const privateKey = await shell("cast wallet private-key --account sepolia_deployer --password ''");
|
41
35
|
// const account = privateKeyToAccount(mustBeHex(privateKey));
|
42
|
-
const walletClient =
|
36
|
+
const walletClient = createWalletClient({
|
43
37
|
chain: viemChain,
|
44
38
|
transport,
|
45
39
|
account: deployer,
|
46
40
|
});
|
47
41
|
return { public: publicClient, wallet: walletClient };
|
48
42
|
}
|
49
|
-
async function configureFhevmContracts({ chain, hostChain: { privateKeys, rpcUrl }, }) {
|
50
|
-
const deployer =
|
51
|
-
const relayer =
|
52
|
-
const kmsSigner =
|
43
|
+
export async function configureFhevmContracts({ chain, hostChain: { privateKeys, rpcUrl }, }) {
|
44
|
+
const deployer = privateKeyToAccount(normaliseToHex(privateKeys.deployer));
|
45
|
+
const relayer = privateKeyToAccount(normaliseToHex(privateKeys.relayer));
|
46
|
+
const kmsSigner = privateKeyToAccount(normaliseToHex(privateKeys.kmsSigner));
|
53
47
|
console.log(`Configuring FHE environment contracts on ${chain.name} with deployer ${deployer.address}, relayer ${relayer.address}, and KMS signer ${kmsSigner.address}...`);
|
54
48
|
const client = getFhevmDeployerClient({
|
55
49
|
hostChainRpcUrl: rpcUrl,
|
56
50
|
deployer,
|
57
51
|
chain,
|
58
52
|
});
|
59
|
-
const { gatewayAddress, kmsVerifierAddress } =
|
60
|
-
const gateway =
|
53
|
+
const { gatewayAddress, kmsVerifierAddress } = getFheEnvironment(chain.id);
|
54
|
+
const gateway = getContract({
|
61
55
|
address: gatewayAddress,
|
62
|
-
abi:
|
56
|
+
abi: gatewayContractAbi,
|
63
57
|
client,
|
64
58
|
});
|
65
|
-
const kmsVerifier =
|
59
|
+
const kmsVerifier = getContract({
|
66
60
|
address: kmsVerifierAddress,
|
67
|
-
abi:
|
61
|
+
abi: kmsVerifierAbi,
|
68
62
|
client,
|
69
63
|
});
|
70
64
|
console.log(`Adding relayer ${relayer.address}...`);
|
@@ -101,17 +95,17 @@ async function configureFhevmContracts({ chain, hostChain: { privateKeys, rpcUrl
|
|
101
95
|
}
|
102
96
|
// Attempts to ensure the given Inco L1 has the FHE environment for the given chain/ACL registered.
|
103
97
|
// based extracting from logs.
|
104
|
-
async function ensureFheEnvironmentRegistered({ l1, chain, }) {
|
98
|
+
export async function ensureFheEnvironmentRegistered({ l1, chain, }) {
|
105
99
|
console.log(`Ensuring FHE environment is registered on ${l1.grpcEndpoint} ...`);
|
106
|
-
const { aclAddress } =
|
107
|
-
const wallet = await
|
108
|
-
const signingClient = await
|
100
|
+
const { aclAddress } = getFheEnvironment(chain.id);
|
101
|
+
const wallet = await createL1Wallet(l1.mnemonic);
|
102
|
+
const signingClient = await createL1Client({
|
109
103
|
cometRpcEndpoint: l1.cometRpcEndpoint,
|
110
104
|
grpcEndpoint: l1.grpcEndpoint,
|
111
105
|
wallet,
|
112
106
|
});
|
113
|
-
const transport =
|
114
|
-
const queryClient =
|
107
|
+
const transport = createGrpcTransport({ baseUrl: l1.grpcEndpoint });
|
108
|
+
const queryClient = createClient(Query, transport);
|
115
109
|
const [signingAccount] = await wallet.getAccounts();
|
116
110
|
const fheEnvArg = {
|
117
111
|
keysetId: aclAddress.slice(2),
|
@@ -142,4 +136,4 @@ function getViemChain(chainId) {
|
|
142
136
|
}
|
143
137
|
return found;
|
144
138
|
}
|
145
|
-
//# sourceMappingURL=data:application/json;base64,
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmhldm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmhldm0vZmhldm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFHTCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxJQUFJLEdBS0wsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBT3RELHlEQUF5RDtBQUN6RCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsRUFDdkMsT0FBTyxFQUNQLGVBQWUsRUFDZixLQUFLLEdBS047SUFDQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDeEMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQTRCO1FBQ2pFLEtBQUs7UUFDTCxTQUFTO0tBQ1YsQ0FBQyxDQUFDO0lBQ0gsc0dBQXNHO0lBQ3RHLDhEQUE4RDtJQUM5RCxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztRQUN0QyxLQUFLO1FBQ0wsU0FBUztRQUNULE9BQU87S0FDUixDQUFDLENBQUM7SUFFSCxPQUFPLEVBQUUsTUFB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
|
@@ -0,0 +1,87 @@
|
|
1
|
+
var __create = Object.create;
|
2
|
+
var __getProtoOf = Object.getPrototypeOf;
|
3
|
+
var __defProp = Object.defineProperty;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __toESM = (mod, isNodeMode, target) => {
|
8
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
9
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
10
|
+
for (let key of __getOwnPropNames(mod))
|
11
|
+
if (!__hasOwnProp.call(to, key))
|
12
|
+
__defProp(to, key, {
|
13
|
+
get: () => mod[key],
|
14
|
+
enumerable: true
|
15
|
+
});
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
19
|
+
var __toCommonJS = (from) => {
|
20
|
+
var entry = __moduleCache.get(from), desc;
|
21
|
+
if (entry)
|
22
|
+
return entry;
|
23
|
+
entry = __defProp({}, "__esModule", { value: true });
|
24
|
+
if (from && typeof from === "object" || typeof from === "function")
|
25
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
26
|
+
get: () => from[key],
|
27
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
28
|
+
}));
|
29
|
+
__moduleCache.set(from, entry);
|
30
|
+
return entry;
|
31
|
+
};
|
32
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
33
|
+
var __export = (target, all) => {
|
34
|
+
for (var name in all)
|
35
|
+
__defProp(target, name, {
|
36
|
+
get: all[name],
|
37
|
+
enumerable: true,
|
38
|
+
configurable: true,
|
39
|
+
set: (newValue) => all[name] = () => newValue
|
40
|
+
});
|
41
|
+
};
|
42
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
43
|
+
|
44
|
+
// src/fhevm/index.ts
|
45
|
+
var exports_fhevm = {};
|
46
|
+
__export(exports_fhevm, {
|
47
|
+
getFheEnvironment: () => getFheEnvironment
|
48
|
+
});
|
49
|
+
module.exports = __toCommonJS(exports_fhevm);
|
50
|
+
|
51
|
+
// src/chain.ts
|
52
|
+
var supportedChains = {
|
53
|
+
baseSepolia: 84532,
|
54
|
+
sepolia: 11155111,
|
55
|
+
monadTestnet: 10143
|
56
|
+
};
|
57
|
+
var fheSupportedChains = { baseSepolia: 84532, sepolia: 11155111 };
|
58
|
+
function getSupportedChain(chainish) {
|
59
|
+
const found = typeof chainish === "number" || typeof chainish === "bigint" ? Object.entries(supportedChains).find(([, id2]) => id2 === Number(chainish)) : typeof chainish === "object" ? Object.entries(supportedChains).find(([, id2]) => id2 === Number(chainish.id)) : Object.entries(supportedChains).find(([shortName]) => shortName === chainish);
|
60
|
+
if (!found) {
|
61
|
+
throw new Error(`Supported chain ${JSON.stringify(chainish)} not found`);
|
62
|
+
}
|
63
|
+
const [name, id] = found;
|
64
|
+
return { name, id };
|
65
|
+
}
|
66
|
+
|
67
|
+
// src/generated/fhe-environments.ts
|
68
|
+
var FHEEnvironments = {
|
69
|
+
baseSepolia: {
|
70
|
+
aclAddress: "0xdc8da2854e5275180b9cccb31e498fd5f9ef2b88",
|
71
|
+
thfeExecutorAddress: "0x79602c1771081338a0521faf5234037ee41032e5",
|
72
|
+
gatewayAddress: "0x28d8d247116c8546d3fe00623c04236b2e35e012",
|
73
|
+
kmsVerifierAddress: "0xc3fb9779fbdfa6948429b492111fce4905e6378e"
|
74
|
+
},
|
75
|
+
sepolia: {
|
76
|
+
aclAddress: "0x0e2123e6e99b4bc2eb54b63d2d8edca0566ba49b",
|
77
|
+
thfeExecutorAddress: "0xa3e0a77cd87c46ac868138623255011555885c09",
|
78
|
+
gatewayAddress: "0x141dbff036daf7ba1ed9c2f04b9096101436100a",
|
79
|
+
kmsVerifierAddress: "0x723c2be5e61e7bbec4684defeae63656ad3eaa10"
|
80
|
+
}
|
81
|
+
};
|
82
|
+
|
83
|
+
// src/fhevm/fhe-environment.ts
|
84
|
+
function getFheEnvironment(chainId) {
|
85
|
+
const supportedChain = getSupportedChain(chainId);
|
86
|
+
return FHEEnvironments[supportedChain.name];
|
87
|
+
}
|
package/dist/fhevm/index.js
CHANGED
@@ -1,18 +1,2 @@
|
|
1
|
-
|
2
|
-
|
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("./fhe-environment"), exports);
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmhldm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFrQyJ9
|
1
|
+
export * from './fhe-environment';
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmhldm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyJ9
|
@@ -0,0 +1,90 @@
|
|
1
|
+
var __create = Object.create;
|
2
|
+
var __getProtoOf = Object.getPrototypeOf;
|
3
|
+
var __defProp = Object.defineProperty;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __toESM = (mod, isNodeMode, target) => {
|
8
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
9
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
10
|
+
for (let key of __getOwnPropNames(mod))
|
11
|
+
if (!__hasOwnProp.call(to, key))
|
12
|
+
__defProp(to, key, {
|
13
|
+
get: () => mod[key],
|
14
|
+
enumerable: true
|
15
|
+
});
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
19
|
+
var __toCommonJS = (from) => {
|
20
|
+
var entry = __moduleCache.get(from), desc;
|
21
|
+
if (entry)
|
22
|
+
return entry;
|
23
|
+
entry = __defProp({}, "__esModule", { value: true });
|
24
|
+
if (from && typeof from === "object" || typeof from === "function")
|
25
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
26
|
+
get: () => from[key],
|
27
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
28
|
+
}));
|
29
|
+
__moduleCache.set(from, entry);
|
30
|
+
return entry;
|
31
|
+
};
|
32
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
33
|
+
var __export = (target, all) => {
|
34
|
+
for (var name in all)
|
35
|
+
__defProp(target, name, {
|
36
|
+
get: all[name],
|
37
|
+
enumerable: true,
|
38
|
+
configurable: true,
|
39
|
+
set: (newValue) => all[name] = () => newValue
|
40
|
+
});
|
41
|
+
};
|
42
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
43
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
44
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
45
|
+
}) : x)(function(x) {
|
46
|
+
if (typeof require !== "undefined")
|
47
|
+
return require.apply(this, arguments);
|
48
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
49
|
+
});
|
50
|
+
|
51
|
+
// src/chain.ts
|
52
|
+
var supportedChains = {
|
53
|
+
baseSepolia: 84532,
|
54
|
+
sepolia: 11155111,
|
55
|
+
monadTestnet: 10143
|
56
|
+
};
|
57
|
+
var fheSupportedChains = { baseSepolia: 84532, sepolia: 11155111 };
|
58
|
+
function getSupportedChain(chainish) {
|
59
|
+
const found = typeof chainish === "number" || typeof chainish === "bigint" ? Object.entries(supportedChains).find(([, id2]) => id2 === Number(chainish)) : typeof chainish === "object" ? Object.entries(supportedChains).find(([, id2]) => id2 === Number(chainish.id)) : Object.entries(supportedChains).find(([shortName]) => shortName === chainish);
|
60
|
+
if (!found) {
|
61
|
+
throw new Error(`Supported chain ${JSON.stringify(chainish)} not found`);
|
62
|
+
}
|
63
|
+
const [name, id] = found;
|
64
|
+
return { name, id };
|
65
|
+
}
|
66
|
+
|
67
|
+
// src/generated/fhe-environments.ts
|
68
|
+
var FHEEnvironments = {
|
69
|
+
baseSepolia: {
|
70
|
+
aclAddress: "0xdc8da2854e5275180b9cccb31e498fd5f9ef2b88",
|
71
|
+
thfeExecutorAddress: "0x79602c1771081338a0521faf5234037ee41032e5",
|
72
|
+
gatewayAddress: "0x28d8d247116c8546d3fe00623c04236b2e35e012",
|
73
|
+
kmsVerifierAddress: "0xc3fb9779fbdfa6948429b492111fce4905e6378e"
|
74
|
+
},
|
75
|
+
sepolia: {
|
76
|
+
aclAddress: "0x0e2123e6e99b4bc2eb54b63d2d8edca0566ba49b",
|
77
|
+
thfeExecutorAddress: "0xa3e0a77cd87c46ac868138623255011555885c09",
|
78
|
+
gatewayAddress: "0x141dbff036daf7ba1ed9c2f04b9096101436100a",
|
79
|
+
kmsVerifierAddress: "0x723c2be5e61e7bbec4684defeae63656ad3eaa10"
|
80
|
+
}
|
81
|
+
};
|
82
|
+
|
83
|
+
// src/fhevm/fhe-environment.ts
|
84
|
+
function getFheEnvironment(chainId) {
|
85
|
+
const supportedChain = getSupportedChain(chainId);
|
86
|
+
return FHEEnvironments[supportedChain.name];
|
87
|
+
}
|
88
|
+
export {
|
89
|
+
getFheEnvironment
|
90
|
+
};
|
package/dist/fhevm/reencrypt.js
CHANGED
@@ -1,31 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
const encryption_1 = require("../encryption/encryption");
|
10
|
-
const handle_1 = require("../handle");
|
11
|
-
const reencryption_1 = require("../reencryption");
|
12
|
-
const schema_1 = require("../schema");
|
1
|
+
import { Schema } from 'effect';
|
2
|
+
import { cryptobox_get_pk, cryptobox_keygen, cryptobox_pk_to_u8vec, cryptobox_sk_to_u8vec, new_client, process_reencryption_resp_from_js, u8vec_to_cryptobox_pk, u8vec_to_cryptobox_sk, } from 'node-tkms';
|
3
|
+
import { getAddress, hexToBigInt } from 'viem';
|
4
|
+
import { bytesToBigInt, bytesToHex } from '../binary';
|
5
|
+
import { bigintToPlaintext, encryptionSchemes, } from '../encryption/encryption';
|
6
|
+
import { getHandleType } from '../handle';
|
7
|
+
import { createEIP712Payload } from '../reencryption';
|
8
|
+
import { parse } from '../schema';
|
13
9
|
// The domain constants that Zama uses for reencrypts.
|
14
10
|
const ZAMA_REENCRYPT_DOMAIN = {
|
15
11
|
name: 'Authorization token',
|
16
12
|
version: '1',
|
17
13
|
salt: undefined,
|
18
14
|
};
|
19
|
-
async function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsafeSkipVerifyKMSSignatures, contractAddress, kmsSigners, userAddress, }) {
|
15
|
+
export async function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsafeSkipVerifyKMSSignatures, contractAddress, kmsSigners, userAddress, }) {
|
20
16
|
const ephemeralKeypair = generateCryptoBoxEphemeralKeyPair();
|
21
17
|
// Sign the EIP712 attesting that the user has access to the private key
|
22
18
|
// corresponding to the ephemeral public key.
|
23
|
-
const eip712Payload =
|
19
|
+
const eip712Payload = createEIP712Payload({
|
24
20
|
chainId,
|
25
21
|
primaryType: 'ReencryptionRequest',
|
26
22
|
primaryTypeFields: [{ name: 'publicKey', type: 'bytes' }],
|
27
23
|
message: {
|
28
|
-
publicKey:
|
24
|
+
publicKey: bytesToHex(ephemeralKeypair.encodePublicKey()),
|
29
25
|
},
|
30
26
|
domainName: ZAMA_REENCRYPT_DOMAIN.name,
|
31
27
|
domainVersion: ZAMA_REENCRYPT_DOMAIN.version,
|
@@ -34,25 +30,25 @@ async function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsafeSkipVe
|
|
34
30
|
// payload.
|
35
31
|
const eip712Signature = await walletClient.signTypedData(eip712Payload);
|
36
32
|
return async function reencrypt({ handle, }) {
|
37
|
-
const handleBigInt =
|
33
|
+
const handleBigInt = hexToBigInt(handle);
|
38
34
|
const reencryptRequest = {
|
39
35
|
signature: eip712Signature.replace(/^(0x)/, ''),
|
40
|
-
client_address:
|
41
|
-
enc_key:
|
36
|
+
client_address: getAddress(userAddress),
|
37
|
+
enc_key: bytesToHex(ephemeralKeypair.encodePublicKey()).replace(/^(0x)/, ''),
|
42
38
|
ciphertext_handle: handleBigInt.toString(16).padStart(64, '0'),
|
43
|
-
eip712_verifying_contract:
|
39
|
+
eip712_verifying_contract: getAddress(contractAddress),
|
44
40
|
};
|
45
41
|
const reencryptResponse = await makeReencryptRequest(reencryptRequest, gatewayUrl);
|
46
42
|
let pubKey;
|
47
43
|
let privKey;
|
48
44
|
try {
|
49
|
-
pubKey =
|
50
|
-
privKey =
|
45
|
+
pubKey = u8vec_to_cryptobox_pk(ephemeralKeypair.publicKey);
|
46
|
+
privKey = u8vec_to_cryptobox_sk(ephemeralKeypair.privateKey);
|
51
47
|
}
|
52
48
|
catch (e) {
|
53
49
|
throw new Error(`Invalid public or private key: ${JSON.stringify(e)}`);
|
54
50
|
}
|
55
|
-
const client =
|
51
|
+
const client = new_client(kmsSigners, userAddress, 'default');
|
56
52
|
try {
|
57
53
|
const buffer = new ArrayBuffer(32);
|
58
54
|
const view = new DataView(buffer);
|
@@ -65,13 +61,13 @@ async function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsafeSkipVe
|
|
65
61
|
...p,
|
66
62
|
ciphertext_digest: reencryptResponse.response[0].ciphertext_digest,
|
67
63
|
};
|
68
|
-
const decrypted =
|
64
|
+
const decrypted = process_reencryption_resp_from_js(client, payloadForVerification, {
|
69
65
|
name: eip712Payload.domain.name,
|
70
66
|
version: eip712Payload.domain.version,
|
71
67
|
chain_id: chainIdArrayBE,
|
72
68
|
verifying_contract: eip712Payload.domain.verifyingContract,
|
73
69
|
}, reencryptResponse.response, pubKey, privKey, !unsafeSkipVerifyKMSSignatures);
|
74
|
-
return
|
70
|
+
return bigintToPlaintext(encryptionSchemes.cryptobox, getHandleType(handle), bytesToBigInt(decrypted));
|
75
71
|
}
|
76
72
|
catch (e) {
|
77
73
|
console.error(e);
|
@@ -80,13 +76,13 @@ async function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsafeSkipVe
|
|
80
76
|
};
|
81
77
|
}
|
82
78
|
// Generate a new ephemeral keypair for reencryption.
|
83
|
-
function generateCryptoBoxEphemeralKeyPair() {
|
84
|
-
const keypair =
|
85
|
-
const publicKey =
|
79
|
+
export function generateCryptoBoxEphemeralKeyPair() {
|
80
|
+
const keypair = cryptobox_keygen();
|
81
|
+
const publicKey = cryptobox_pk_to_u8vec(cryptobox_get_pk(keypair));
|
86
82
|
return {
|
87
|
-
scheme:
|
83
|
+
scheme: encryptionSchemes.cryptobox,
|
88
84
|
publicKey,
|
89
|
-
privateKey:
|
85
|
+
privateKey: cryptobox_sk_to_u8vec(keypair),
|
90
86
|
encodePublicKey() {
|
91
87
|
return publicKey;
|
92
88
|
},
|
@@ -96,12 +92,12 @@ function generateCryptoBoxEphemeralKeyPair() {
|
|
96
92
|
// server-side in Zama's gateway. The response field is a vector of this struct
|
97
93
|
// in Rust:
|
98
94
|
// https://github.com/zama-ai/kms-core/blob/a3b824b389e87429d04537696e28dee902a3b2d9/blockchain/events/src/kms.rs#L985-L1003
|
99
|
-
const ZamaGatewayReencryptResponse =
|
100
|
-
status:
|
101
|
-
response:
|
102
|
-
ciphertext_digest:
|
103
|
-
payload:
|
104
|
-
signature:
|
95
|
+
const ZamaGatewayReencryptResponse = Schema.Struct({
|
96
|
+
status: Schema.Union(Schema.Literal('success'), Schema.Literal('failure')),
|
97
|
+
response: Schema.Array(Schema.Struct({
|
98
|
+
ciphertext_digest: Schema.optional(Schema.String),
|
99
|
+
payload: Schema.String,
|
100
|
+
signature: Schema.String,
|
105
101
|
})),
|
106
102
|
});
|
107
103
|
// Make a HTTP request to the reencrypt endpoint of the gateway.
|
@@ -118,10 +114,10 @@ async function makeReencryptRequest(request, gatewayUrl) {
|
|
118
114
|
throw new Error(`Reencrypt failed: gateway respond with HTTP code ${response.status}: ${JSON.stringify(await response.json())}`);
|
119
115
|
}
|
120
116
|
const json = await response.json();
|
121
|
-
const reencryptResponse =
|
117
|
+
const reencryptResponse = parse(ZamaGatewayReencryptResponse, json);
|
122
118
|
if (reencryptResponse.status === 'failure') {
|
123
119
|
throw new Error('Reencrypt failed: gateway responded with failure');
|
124
120
|
}
|
125
121
|
return reencryptResponse;
|
126
122
|
}
|
127
|
-
//# sourceMappingURL=data:application/json;base64,
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVlbmNyeXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZoZXZtL3JlZW5jcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsVUFBVSxFQUNWLGlDQUFpQyxFQUNqQyxxQkFBcUIsRUFDckIscUJBQXFCLEdBQ3RCLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBMkIsVUFBVSxFQUFFLFdBQVcsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEQsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixpQkFBaUIsR0FHbEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFpQ2xDLHNEQUFzRDtBQUN0RCxNQUFNLHFCQUFxQixHQUFHO0lBQzVCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLEdBQUc7SUFDWixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQUMsRUFDcEMsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEVBQ1osNkJBQTZCLEVBQzdCLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxHQUNTO0lBQ3BCLE1BQU0sZ0JBQWdCLEdBQUcsaUNBQWlDLEVBQUUsQ0FBQztJQUU3RCx3RUFBd0U7SUFDeEUsNkNBQTZDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixD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
|