@inco/js 0.1.39 → 0.1.41
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/dist/binary.js +47 -32
- package/dist/chain.js +11 -7
- package/dist/encryption/encryption.js +62 -54
- package/dist/encryption/index.js +18 -2
- package/dist/fhevm/fhe-environment.js +9 -6
- package/dist/fhevm/fhevm.js +40 -34
- package/dist/fhevm/index.js +18 -2
- package/dist/fhevm/reencrypt.js +37 -33
- package/dist/fhevm/tfhe.js +87 -79
- package/dist/fhevm/types.js +16 -13
- package/dist/generated/abis/addTwo.js +5 -2
- package/dist/generated/abis/inco-fhevm.js +50 -47
- package/dist/generated/abis/index.js +19 -3
- package/dist/generated/abis/lightning.d.ts +60 -0
- package/dist/generated/abis/lightning.js +73 -54
- package/dist/generated/es/cosmos/ics23/v1/proofs_pb.js +25 -22
- package/dist/generated/es/cosmos/msg/v1/msg_pb.js +9 -6
- package/dist/generated/es/cosmos_proto/cosmos_pb.js +21 -18
- package/dist/generated/es/google/api/annotations_pb.js +9 -6
- package/dist/generated/es/google/api/http_pb.js +9 -6
- package/dist/generated/es/inco/fhe/v1/events_pb.js +10 -7
- package/dist/generated/es/inco/fhe/v1/genesis_pb.js +15 -12
- package/dist/generated/es/inco/fhe/v1/query_pb.js +28 -25
- package/dist/generated/es/inco/fhe/v1/tx_pb.js +28 -25
- package/dist/generated/es/inco/fhe/v1/types_pb.js +22 -19
- package/dist/generated/es/inco/kms/lite/v1/kms_service_pb.js +14 -11
- package/dist/generated/es/inco/kms/lite/v1/types_pb.js +13 -10
- package/dist/generated/es/inco/preflight/v1/genesis_pb.js +9 -6
- package/dist/generated/es/inco/preflight/v1/query_pb.js +14 -11
- package/dist/generated/es/inco/preflight/v1/tx_pb.js +16 -13
- package/dist/generated/es/inco/preflight/v1/types_pb.js +11 -8
- package/dist/generated/es/kms/base_pb.js +38 -35
- package/dist/generated/es/sf/ethereum/type/v2/type_pb.js +46 -43
- package/dist/generated/fhe-environments.js +5 -2
- package/dist/generated/lightning.d.ts +60 -312
- package/dist/generated/lightning.js +71 -332
- package/dist/generated/local-node.js +5 -2
- package/dist/generated/ts/amino/amino.js +5 -2
- package/dist/generated/ts/cometbft/abci/v1/types.js +563 -547
- package/dist/generated/ts/cometbft/crypto/v1/keys.js +10 -7
- package/dist/generated/ts/cometbft/crypto/v1/proof.js +36 -33
- package/dist/generated/ts/cometbft/types/v1/params.js +98 -95
- package/dist/generated/ts/cometbft/types/v1/validator.js +45 -40
- package/dist/generated/ts/cosmos/app/v1alpha1/module.js +28 -25
- package/dist/generated/ts/cosmos/msg/v1/msg.js +5 -2
- package/dist/generated/ts/cosmos_proto/cosmos.js +20 -15
- package/dist/generated/ts/gogoproto/gogo.js +5 -2
- package/dist/generated/ts/google/api/annotations.js +5 -2
- package/dist/generated/ts/google/api/http.js +33 -30
- package/dist/generated/ts/google/protobuf/descriptor.js +506 -468
- package/dist/generated/ts/google/protobuf/duration.js +10 -7
- package/dist/generated/ts/google/protobuf/timestamp.js +10 -7
- package/dist/generated/ts/google/protobuf/wrappers.js +42 -39
- package/dist/generated/ts/inco/abci/v1/types.js +16 -13
- package/dist/generated/ts/inco/fhe/module/v1/module.js +10 -7
- package/dist/generated/ts/inco/fhe/v1/events.js +35 -32
- package/dist/generated/ts/inco/fhe/v1/genesis.js +130 -127
- package/dist/generated/ts/inco/fhe/v1/query.js +163 -160
- package/dist/generated/ts/inco/fhe/v1/tx.js +153 -150
- package/dist/generated/ts/inco/fhe/v1/types.js +75 -70
- package/dist/generated/ts/inco/originchain/module/v1/module.js +10 -7
- package/dist/generated/ts/inco/originchain/v1/abci.js +37 -34
- package/dist/generated/ts/inco/originchain/v1/events.js +14 -11
- package/dist/generated/ts/inco/originchain/v1/genesis.js +16 -13
- package/dist/generated/ts/inco/originchain/v1/query.js +44 -41
- package/dist/generated/ts/inco/originchain/v1/tx.js +27 -24
- package/dist/generated/ts/inco/originchain/v1/types.js +14 -11
- package/dist/generated/ts/inco/preflight/module/v1/module.js +10 -7
- package/dist/generated/ts/inco/preflight/v1/genesis.js +30 -27
- package/dist/generated/ts/inco/preflight/v1/query.js +44 -41
- package/dist/generated/ts/inco/preflight/v1/tx.js +56 -53
- package/dist/generated/ts/inco/preflight/v1/types.js +41 -38
- package/dist/handle.js +33 -26
- package/dist/index.js +22 -6
- package/dist/l1/client.js +23 -19
- package/dist/l1/index.js +19 -3
- package/dist/l1/preflight.js +16 -13
- package/dist/lite/deployments.js +13 -9
- package/dist/lite/ecies.js +48 -37
- package/dist/lite/hadu.js +26 -21
- package/dist/lite/index.js +23 -7
- package/dist/lite/lightning.js +35 -31
- package/dist/lite/reencrypt.js +41 -30
- package/dist/local/index.js +18 -2
- package/dist/local/local-node.d.ts +0 -1
- package/dist/local/local-node.js +24 -21
- package/dist/reencryption/eip712.js +21 -18
- package/dist/reencryption/index.js +19 -3
- package/dist/reencryption/types.js +2 -1
- package/dist/schema.js +10 -6
- package/dist/viem.js +11 -7
- package/package.json +2 -1
- package/dist/encryption/index.cjs +0 -24706
- package/dist/encryption/index.mjs +0 -25787
- package/dist/fhevm/index.cjs +0 -87
- package/dist/fhevm/index.mjs +0 -90
- package/dist/generated/abis/index.cjs +0 -12493
- package/dist/generated/abis/index.mjs +0 -12496
- package/dist/index.cjs +0 -24883
- package/dist/index.mjs +0 -25964
- package/dist/lite/index.cjs +0 -52789
- package/dist/lite/index.mjs +0 -71691
- package/dist/local/index.cjs +0 -24479
- package/dist/local/index.mjs +0 -42864
- package/dist/reencryption/index.cjs +0 -24681
- package/dist/reencryption/index.mjs +0 -24684
package/dist/fhevm/reencrypt.js
CHANGED
@@ -1,27 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.zamaReencryptor = zamaReencryptor;
|
4
|
+
exports.generateCryptoBoxEphemeralKeyPair = generateCryptoBoxEphemeralKeyPair;
|
5
|
+
const effect_1 = require("effect");
|
6
|
+
const node_tkms_1 = require("node-tkms");
|
7
|
+
const viem_1 = require("viem");
|
8
|
+
const binary_1 = require("../binary");
|
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");
|
9
13
|
// The domain constants that Zama uses for reencrypts.
|
10
14
|
const ZAMA_REENCRYPT_DOMAIN = {
|
11
15
|
name: 'Authorization token',
|
12
16
|
version: '1',
|
13
17
|
salt: undefined,
|
14
18
|
};
|
15
|
-
|
19
|
+
async function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsafeSkipVerifyKMSSignatures, contractAddress, kmsSigners, userAddress, }) {
|
16
20
|
const ephemeralKeypair = generateCryptoBoxEphemeralKeyPair();
|
17
21
|
// Sign the EIP712 attesting that the user has access to the private key
|
18
22
|
// corresponding to the ephemeral public key.
|
19
|
-
const eip712Payload = createEIP712Payload({
|
23
|
+
const eip712Payload = (0, reencryption_1.createEIP712Payload)({
|
20
24
|
chainId,
|
21
25
|
primaryType: 'ReencryptionRequest',
|
22
26
|
primaryTypeFields: [{ name: 'publicKey', type: 'bytes' }],
|
23
27
|
message: {
|
24
|
-
publicKey: bytesToHex(ephemeralKeypair.encodePublicKey()),
|
28
|
+
publicKey: (0, binary_1.bytesToHex)(ephemeralKeypair.encodePublicKey()),
|
25
29
|
},
|
26
30
|
domainName: ZAMA_REENCRYPT_DOMAIN.name,
|
27
31
|
domainVersion: ZAMA_REENCRYPT_DOMAIN.version,
|
@@ -30,25 +34,25 @@ export async function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsaf
|
|
30
34
|
// payload.
|
31
35
|
const eip712Signature = await walletClient.signTypedData(eip712Payload);
|
32
36
|
return async function reencrypt({ handle, }) {
|
33
|
-
const handleBigInt = hexToBigInt(handle);
|
37
|
+
const handleBigInt = (0, viem_1.hexToBigInt)(handle);
|
34
38
|
const reencryptRequest = {
|
35
39
|
signature: eip712Signature.replace(/^(0x)/, ''),
|
36
|
-
client_address: getAddress(userAddress),
|
37
|
-
enc_key: bytesToHex(ephemeralKeypair.encodePublicKey()).replace(/^(0x)/, ''),
|
40
|
+
client_address: (0, viem_1.getAddress)(userAddress),
|
41
|
+
enc_key: (0, binary_1.bytesToHex)(ephemeralKeypair.encodePublicKey()).replace(/^(0x)/, ''),
|
38
42
|
ciphertext_handle: handleBigInt.toString(16).padStart(64, '0'),
|
39
|
-
eip712_verifying_contract: getAddress(contractAddress),
|
43
|
+
eip712_verifying_contract: (0, viem_1.getAddress)(contractAddress),
|
40
44
|
};
|
41
45
|
const reencryptResponse = await makeReencryptRequest(reencryptRequest, gatewayUrl);
|
42
46
|
let pubKey;
|
43
47
|
let privKey;
|
44
48
|
try {
|
45
|
-
pubKey = u8vec_to_cryptobox_pk(ephemeralKeypair.publicKey);
|
46
|
-
privKey = u8vec_to_cryptobox_sk(ephemeralKeypair.privateKey);
|
49
|
+
pubKey = (0, node_tkms_1.u8vec_to_cryptobox_pk)(ephemeralKeypair.publicKey);
|
50
|
+
privKey = (0, node_tkms_1.u8vec_to_cryptobox_sk)(ephemeralKeypair.privateKey);
|
47
51
|
}
|
48
52
|
catch (e) {
|
49
53
|
throw new Error(`Invalid public or private key: ${JSON.stringify(e)}`);
|
50
54
|
}
|
51
|
-
const client = new_client(kmsSigners, userAddress, 'default');
|
55
|
+
const client = (0, node_tkms_1.new_client)(kmsSigners, userAddress, 'default');
|
52
56
|
try {
|
53
57
|
const buffer = new ArrayBuffer(32);
|
54
58
|
const view = new DataView(buffer);
|
@@ -61,13 +65,13 @@ export async function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsaf
|
|
61
65
|
...p,
|
62
66
|
ciphertext_digest: reencryptResponse.response[0].ciphertext_digest,
|
63
67
|
};
|
64
|
-
const decrypted = process_reencryption_resp_from_js(client, payloadForVerification, {
|
68
|
+
const decrypted = (0, node_tkms_1.process_reencryption_resp_from_js)(client, payloadForVerification, {
|
65
69
|
name: eip712Payload.domain.name,
|
66
70
|
version: eip712Payload.domain.version,
|
67
71
|
chain_id: chainIdArrayBE,
|
68
72
|
verifying_contract: eip712Payload.domain.verifyingContract,
|
69
73
|
}, reencryptResponse.response, pubKey, privKey, !unsafeSkipVerifyKMSSignatures);
|
70
|
-
return bigintToPlaintext(encryptionSchemes.cryptobox, getHandleType(handle), bytesToBigInt(decrypted));
|
74
|
+
return (0, encryption_1.bigintToPlaintext)(encryption_1.encryptionSchemes.cryptobox, (0, handle_1.getHandleType)(handle), (0, binary_1.bytesToBigInt)(decrypted));
|
71
75
|
}
|
72
76
|
catch (e) {
|
73
77
|
console.error(e);
|
@@ -76,13 +80,13 @@ export async function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsaf
|
|
76
80
|
};
|
77
81
|
}
|
78
82
|
// Generate a new ephemeral keypair for reencryption.
|
79
|
-
|
80
|
-
const keypair = cryptobox_keygen();
|
81
|
-
const publicKey = cryptobox_pk_to_u8vec(cryptobox_get_pk(keypair));
|
83
|
+
function generateCryptoBoxEphemeralKeyPair() {
|
84
|
+
const keypair = (0, node_tkms_1.cryptobox_keygen)();
|
85
|
+
const publicKey = (0, node_tkms_1.cryptobox_pk_to_u8vec)((0, node_tkms_1.cryptobox_get_pk)(keypair));
|
82
86
|
return {
|
83
|
-
scheme: encryptionSchemes.cryptobox,
|
87
|
+
scheme: encryption_1.encryptionSchemes.cryptobox,
|
84
88
|
publicKey,
|
85
|
-
privateKey: cryptobox_sk_to_u8vec(keypair),
|
89
|
+
privateKey: (0, node_tkms_1.cryptobox_sk_to_u8vec)(keypair),
|
86
90
|
encodePublicKey() {
|
87
91
|
return publicKey;
|
88
92
|
},
|
@@ -92,12 +96,12 @@ export function generateCryptoBoxEphemeralKeyPair() {
|
|
92
96
|
// server-side in Zama's gateway. The response field is a vector of this struct
|
93
97
|
// in Rust:
|
94
98
|
// https://github.com/zama-ai/kms-core/blob/a3b824b389e87429d04537696e28dee902a3b2d9/blockchain/events/src/kms.rs#L985-L1003
|
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,
|
99
|
+
const ZamaGatewayReencryptResponse = effect_1.Schema.Struct({
|
100
|
+
status: effect_1.Schema.Union(effect_1.Schema.Literal('success'), effect_1.Schema.Literal('failure')),
|
101
|
+
response: effect_1.Schema.Array(effect_1.Schema.Struct({
|
102
|
+
ciphertext_digest: effect_1.Schema.optional(effect_1.Schema.String),
|
103
|
+
payload: effect_1.Schema.String,
|
104
|
+
signature: effect_1.Schema.String,
|
101
105
|
})),
|
102
106
|
});
|
103
107
|
// Make a HTTP request to the reencrypt endpoint of the gateway.
|
@@ -114,10 +118,10 @@ async function makeReencryptRequest(request, gatewayUrl) {
|
|
114
118
|
throw new Error(`Reencrypt failed: gateway respond with HTTP code ${response.status}: ${JSON.stringify(await response.json())}`);
|
115
119
|
}
|
116
120
|
const json = await response.json();
|
117
|
-
const reencryptResponse = parse(ZamaGatewayReencryptResponse, json);
|
121
|
+
const reencryptResponse = (0, schema_1.parse)(ZamaGatewayReencryptResponse, json);
|
118
122
|
if (reencryptResponse.status === 'failure') {
|
119
123
|
throw new Error('Reencrypt failed: gateway responded with failure');
|
120
124
|
}
|
121
125
|
return reencryptResponse;
|
122
126
|
}
|
123
|
-
//# sourceMappingURL=data:application/json;base64,
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVlbmNyeXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZoZXZtL3JlZW5jcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdFQSwwQ0FxRkM7QUFHRCw4RUFXQztBQW5LRCxtQ0FBZ0M7QUFDaEMseUNBU21CO0FBQ25CLCtCQUFpRztBQUNqRyxzQ0FBc0Q7QUFDdEQseURBTWtDO0FBQ2xDLHNDQUEwQztBQUUxQyxrREFBc0Q7QUFFdEQsc0NBQWtDO0FBaUNsQyxzREFBc0Q7QUFDdEQsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixJQUFJLEVBQUUscUJBQXFCO0lBQzNCLE9BQU8sRUFBRSxHQUFHO0lBQ1osSUFBSSxFQUFFLFNBQVM7Q0FDaEIsQ0FBQztBQUVLLEtBQUssVUFBVSxlQUFlLENBQUMsRUFDcEMsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEVBQ1osNkJBQTZCLEVBQzdCLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxHQUNTO0lBQ3BCLE1BQU0sZ0JBQWdCLEdBQUcsaUNBQWlDLEVBQUUsQ0FBQztJQUU3RCx3RUFBd0U7SUFDeEUsNkNBQTZDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLElBQUEsa0NBQW1CLEVBQUM7UUFDeEMsT0FBTztRQUNQLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3pELE9BQU8sRUFBRTtZQUNQLFNBQVMsRUFBRSxJQUFBLG1CQUFVLEVBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDMUQ7UUFDRCxVQUFVLEVBQUUscUJBQXFCLENBQUMsSUFBSTtRQUN0QyxhQUFhLEVBQUUscUJBQXFCLENBQUMsT0FBTztLQUM3QyxDQUFDLENBQUM7SUFDSCx1RUFBdUU7SUFDdkUsV0FBVztJQUNYLE1BQU0sZUFBZSxHQUFHLE1BQU0sWUFBWSxDQUFDLGFBQWEsQ0FB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
|
package/dist/fhevm/tfhe.js
CHANGED
@@ -1,20 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.TfheSerializationHeader = exports.TfheSerialisationTypeName = exports.FheUintTypeName = exports.ProvenCompactCiphertextListTypeName = exports.SerializationHeader = exports.ENCRYPTION_TYPES = exports.SERIALIZED_SIZE_LIMIT_CRS = exports.SERIALIZED_SIZE_LIMIT_PK = exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT = void 0;
|
4
|
+
exports.getTfheEncryptor = getTfheEncryptor;
|
5
|
+
exports.createEncryptedInput = createEncryptedInput;
|
6
|
+
exports.addPlaintextInput = addPlaintextInput;
|
7
|
+
exports.getTfheDecryptor = getTfheDecryptor;
|
8
|
+
exports.decodeTfheSerializationHeader = decodeTfheSerializationHeader;
|
9
|
+
const bincode_ts_1 = require("bincode-ts");
|
10
|
+
const effect_1 = require("effect");
|
11
|
+
const node_tfhe_1 = require("node-tfhe");
|
12
|
+
const viem_1 = require("viem");
|
13
|
+
const binary_1 = require("../binary");
|
14
|
+
const encryption_1 = require("../encryption/encryption");
|
15
|
+
const handle_1 = require("../handle");
|
16
|
+
const schema_1 = require("../schema");
|
17
|
+
const types_1 = require("./types");
|
10
18
|
// This code pulled and modifier from fhevmjs which currently is a relatively poor dependency to extend since it does
|
11
19
|
// not expose types correctly and does not export various modules
|
12
20
|
// Handed down on a stone tablet from: https://github.com/zama-ai/fhevm-backend/blob/5a70c19a90671cfa4901413db9e162a65c4cf17a/fhevm-engine/fhevm-engine-common/src/utils.rs#L6-L7
|
13
21
|
// We use fhevm-backend in KMS and compute services
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
22
|
+
exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT = BigInt(1024 * 1024 * 512);
|
23
|
+
exports.SERIALIZED_SIZE_LIMIT_PK = BigInt(1024 * 1024 * 512);
|
24
|
+
exports.SERIALIZED_SIZE_LIMIT_CRS = BigInt(1024 * 1024 * 512);
|
25
|
+
exports.ENCRYPTION_TYPES = {
|
18
26
|
1: 0, // ebool takes 2 encrypted bits
|
19
27
|
4: 1,
|
20
28
|
8: 2,
|
@@ -28,43 +36,43 @@ export const ENCRYPTION_TYPES = {
|
|
28
36
|
1024: 10,
|
29
37
|
2048: 11,
|
30
38
|
};
|
31
|
-
|
32
|
-
const publicKey = TfheCompactPublicKey.safe_deserialize(args.publicKey, SERIALIZED_SIZE_LIMIT_PK);
|
33
|
-
const publicParams = CompactPkePublicParams.safe_deserialize(args.crs2048, SERIALIZED_SIZE_LIMIT_CRS);
|
39
|
+
function getTfheEncryptor(args) {
|
40
|
+
const publicKey = node_tfhe_1.TfheCompactPublicKey.safe_deserialize(args.publicKey, exports.SERIALIZED_SIZE_LIMIT_PK);
|
41
|
+
const publicParams = node_tfhe_1.CompactPkePublicParams.safe_deserialize(args.crs2048, exports.SERIALIZED_SIZE_LIMIT_CRS);
|
34
42
|
return async ({ context, plaintext, }) => {
|
35
|
-
if (plaintext.scheme !== encryptionSchemes.tfhe) {
|
36
|
-
throw new Error(`Plaintext with scheme ${getEncryptionSchemeName(plaintext.scheme)} cannot be encrypted with TFHE`);
|
43
|
+
if (plaintext.scheme !== encryption_1.encryptionSchemes.tfhe) {
|
44
|
+
throw new Error(`Plaintext with scheme ${(0, encryption_1.getEncryptionSchemeName)(plaintext.scheme)} cannot be encrypted with TFHE`);
|
37
45
|
}
|
38
46
|
const { aclAddress, userAddress, contractAddress, hostChainId } = context;
|
39
47
|
const input = createEncryptedInput(aclAddress, hostChainId, publicKey, { 2048: { publicParams } })(userAddress, contractAddress);
|
40
48
|
const encInput = await addPlaintextInput(input, plaintext).encrypt();
|
41
49
|
// FIXME: support multi-valued ciphertext properly
|
42
50
|
const prehandle = encInput.prehandles[0];
|
43
|
-
const handle = computeHandle({ prehandle, context });
|
51
|
+
const handle = (0, handle_1.computeHandle)({ prehandle, context });
|
44
52
|
return {
|
45
53
|
context,
|
46
54
|
// The '0x' prefix is required for bytes32 for correct json parsing in foundry, but avoided in ciphertext to avoid bytes-based encoding
|
47
55
|
// we may need
|
48
|
-
prehandle: asBytes32(prehandle),
|
49
|
-
handle: asBytes32(handle),
|
56
|
+
prehandle: (0, binary_1.asBytes32)(prehandle),
|
57
|
+
handle: (0, binary_1.asBytes32)(handle),
|
50
58
|
ciphertext: {
|
51
59
|
scheme: plaintext.scheme,
|
52
60
|
type: plaintext.type,
|
53
|
-
value: bytesToHex(encInput.ciphertext),
|
61
|
+
value: (0, binary_1.bytesToHex)(encInput.ciphertext),
|
54
62
|
},
|
55
63
|
};
|
56
64
|
};
|
57
65
|
}
|
58
|
-
|
66
|
+
function createEncryptedInput(aclContractAddress, chainId, tfheCompactPublicKey, publicParams) {
|
59
67
|
return (userAddress, contractAddress) => {
|
60
|
-
if (!isAddress(contractAddress)) {
|
68
|
+
if (!(0, viem_1.isAddress)(contractAddress)) {
|
61
69
|
throw new Error('Contract address is not a valid address.');
|
62
70
|
}
|
63
|
-
if (!isAddress(userAddress)) {
|
71
|
+
if (!(0, viem_1.isAddress)(userAddress)) {
|
64
72
|
throw new Error('User address is not a valid address.');
|
65
73
|
}
|
66
74
|
const bits = [];
|
67
|
-
const builder = CompactCiphertextList.builder(tfheCompactPublicKey);
|
75
|
+
const builder = node_tfhe_1.CompactCiphertextList.builder(tfheCompactPublicKey);
|
68
76
|
const checkLimit = (added) => {
|
69
77
|
if (bits.reduce((acc, val) => acc + Math.max(2, val), 0) + added > 2048) {
|
70
78
|
throw Error('Packing more than 2048 bits in a single input ciphertext is unsupported');
|
@@ -139,7 +147,7 @@ export function createEncryptedInput(aclContractAddress, chainId, tfheCompactPub
|
|
139
147
|
return this;
|
140
148
|
},
|
141
149
|
addAddress(value) {
|
142
|
-
if (!isAddress(value)) {
|
150
|
+
if (!(0, viem_1.isAddress)(value)) {
|
143
151
|
throw new Error('The value must be a valid address.');
|
144
152
|
}
|
145
153
|
checkLimit(160);
|
@@ -157,7 +165,7 @@ export function createEncryptedInput(aclContractAddress, chainId, tfheCompactPub
|
|
157
165
|
addBytes64(value) {
|
158
166
|
if (value.length !== 64)
|
159
167
|
throw Error('Incorrect length of input Uint8Array, should be 64 for an ebytes64');
|
160
|
-
const bigIntValue = bytesToBigInt(value);
|
168
|
+
const bigIntValue = (0, binary_1.bytesToBigInt)(value);
|
161
169
|
checkEncryptedValue(bigIntValue, 512);
|
162
170
|
checkLimit(512);
|
163
171
|
builder.push_u512(bigIntValue);
|
@@ -167,7 +175,7 @@ export function createEncryptedInput(aclContractAddress, chainId, tfheCompactPub
|
|
167
175
|
addBytes128(value) {
|
168
176
|
if (value.length !== 128)
|
169
177
|
throw Error('Incorrect length of input Uint8Array, should be 128 for an ebytes128');
|
170
|
-
const bigIntValue = bytesToBigInt(value);
|
178
|
+
const bigIntValue = (0, binary_1.bytesToBigInt)(value);
|
171
179
|
checkEncryptedValue(bigIntValue, 1024);
|
172
180
|
checkLimit(1024);
|
173
181
|
builder.push_u1024(bigIntValue);
|
@@ -177,7 +185,7 @@ export function createEncryptedInput(aclContractAddress, chainId, tfheCompactPub
|
|
177
185
|
addBytes256(value) {
|
178
186
|
if (value.length !== 256)
|
179
187
|
throw Error('Incorrect length of input Uint8Array, should be 256 for an ebytes256');
|
180
|
-
const bigIntValue = bytesToBigInt(value);
|
188
|
+
const bigIntValue = (0, binary_1.bytesToBigInt)(value);
|
181
189
|
checkEncryptedValue(bigIntValue, 2048);
|
182
190
|
checkLimit(2048);
|
183
191
|
builder.push_u2048(bigIntValue);
|
@@ -198,26 +206,26 @@ export function createEncryptedInput(aclContractAddress, chainId, tfheCompactPub
|
|
198
206
|
throw new Error(`Too many bits in provided values. Maximum is ${ppTypes[ppTypes.length - 1]}.`);
|
199
207
|
}
|
200
208
|
const pp = publicParams[closestPP].publicParams;
|
201
|
-
const buffContract = bytesFromHexString(contractAddress);
|
202
|
-
const buffUser = bytesFromHexString(userAddress);
|
203
|
-
const buffAcl = bytesFromHexString(aclContractAddress);
|
204
|
-
const buffChainId = bytesFromHexString(chainId.toString(16));
|
209
|
+
const buffContract = (0, binary_1.bytesFromHexString)(contractAddress);
|
210
|
+
const buffUser = (0, binary_1.bytesFromHexString)(userAddress);
|
211
|
+
const buffAcl = (0, binary_1.bytesFromHexString)(aclContractAddress);
|
212
|
+
const buffChainId = (0, binary_1.bytesFromHexString)(chainId.toString(16));
|
205
213
|
const auxData = new Uint8Array(buffContract.length + buffUser.length + buffAcl.length + 32);
|
206
214
|
auxData.set(buffContract, 0);
|
207
215
|
auxData.set(buffUser, 20);
|
208
216
|
auxData.set(buffAcl, 40);
|
209
217
|
auxData.set(buffChainId, auxData.length - buffChainId.length);
|
210
|
-
const encrypted = builder.build_with_proof_packed(pp, auxData, ZkComputeLoad.Proof);
|
211
|
-
const ciphertext = Buffer.from(encrypted.safe_serialize(SERIALIZED_SIZE_LIMIT_CIPHERTEXT));
|
218
|
+
const encrypted = builder.build_with_proof_packed(pp, auxData, node_tfhe_1.ZkComputeLoad.Proof);
|
219
|
+
const ciphertext = Buffer.from(encrypted.safe_serialize(exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT));
|
212
220
|
// These prehandles have the expected layout expected by verifyCiphertext
|
213
221
|
// including type and version metadata
|
214
222
|
const prehandles = [];
|
215
223
|
for (let i = 0; i < encrypted.len(); i++) {
|
216
|
-
const handleType = getHandleTypeFromFheType(encrypted.get_kind_of(i));
|
217
|
-
prehandles[i] = computePrehandle({
|
224
|
+
const handleType = (0, types_1.getHandleTypeFromFheType)(encrypted.get_kind_of(i));
|
225
|
+
prehandles[i] = (0, handle_1.computePrehandle)({
|
218
226
|
ciphertext,
|
219
227
|
handleType: handleType,
|
220
|
-
handleVersion: HANDLE_VERSION,
|
228
|
+
handleVersion: handle_1.HANDLE_VERSION,
|
221
229
|
indexHandle: i,
|
222
230
|
});
|
223
231
|
}
|
@@ -229,31 +237,31 @@ export function createEncryptedInput(aclContractAddress, chainId, tfheCompactPub
|
|
229
237
|
};
|
230
238
|
};
|
231
239
|
}
|
232
|
-
|
240
|
+
function addPlaintextInput(input, plaintext) {
|
233
241
|
switch (plaintext.type) {
|
234
|
-
case handleTypes.ebool:
|
242
|
+
case handle_1.handleTypes.ebool:
|
235
243
|
return input.addBool(plaintext.value);
|
236
|
-
case handleTypes.euint64:
|
244
|
+
case handle_1.handleTypes.euint64:
|
237
245
|
return input.add64(plaintext.value);
|
238
|
-
case handleTypes.euint256:
|
246
|
+
case handle_1.handleTypes.euint256:
|
239
247
|
return input.add256(plaintext.value);
|
240
248
|
}
|
241
249
|
}
|
242
250
|
// Decryption...
|
243
|
-
|
244
|
-
const clientKey = TfheClientKey.safe_deserialize(cks, SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
|
245
|
-
const serverKey = TfheServerKey.new(clientKey);
|
246
|
-
set_server_key(serverKey);
|
251
|
+
function getTfheDecryptor({ cks }) {
|
252
|
+
const clientKey = node_tfhe_1.TfheClientKey.safe_deserialize(cks, exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
|
253
|
+
const serverKey = node_tfhe_1.TfheServerKey.new(clientKey);
|
254
|
+
(0, node_tfhe_1.set_server_key)(serverKey);
|
247
255
|
return async ({ scheme, type, value, }) => {
|
248
|
-
if (scheme !== encryptionSchemes.tfhe) {
|
249
|
-
throw new Error(`Ciphertext with scheme ${getEncryptionSchemeName(scheme)} cannot be decrypted with TFHE`);
|
256
|
+
if (scheme !== encryption_1.encryptionSchemes.tfhe) {
|
257
|
+
throw new Error(`Ciphertext with scheme ${(0, encryption_1.getEncryptionSchemeName)(scheme)} cannot be decrypted with TFHE`);
|
250
258
|
}
|
251
259
|
const handleType = type;
|
252
|
-
const ctBuf = bytesFromHexString(value);
|
260
|
+
const ctBuf = (0, binary_1.bytesFromHexString)(value);
|
253
261
|
const header = decodeTfheSerializationHeader(ctBuf);
|
254
262
|
// For now just support a singleton ciphertext list
|
255
|
-
if (header.name === ProvenCompactCiphertextListTypeName) {
|
256
|
-
const encrypted = ProvenCompactCiphertextList.safe_deserialize(ctBuf, SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
|
263
|
+
if (header.name === exports.ProvenCompactCiphertextListTypeName) {
|
264
|
+
const encrypted = node_tfhe_1.ProvenCompactCiphertextList.safe_deserialize(ctBuf, exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
|
257
265
|
const decrypted = encrypted.expand_without_verification();
|
258
266
|
const kind = decrypted.get_kind_of(0);
|
259
267
|
return fromCiphertextList(decrypted, clientKey);
|
@@ -262,30 +270,30 @@ export function getTfheDecryptor({ cks }) {
|
|
262
270
|
if (!decryptor) {
|
263
271
|
throw new Error(`Unsupported handle type: ${handleType}`);
|
264
272
|
}
|
265
|
-
const encrypted = decryptor.safe_deserialize(ctBuf, SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
|
273
|
+
const encrypted = decryptor.safe_deserialize(ctBuf, exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
|
266
274
|
const decrypted = encrypted.decrypt(clientKey);
|
267
275
|
// First assign to unnarrowed plaintext to avoid concealing type
|
268
|
-
const plaintext = { scheme: encryptionSchemes.tfhe, type: handleType, value: decrypted };
|
276
|
+
const plaintext = { scheme: encryption_1.encryptionSchemes.tfhe, type: handleType, value: decrypted };
|
269
277
|
return plaintext;
|
270
278
|
};
|
271
279
|
}
|
272
280
|
function fromCiphertextList(decrypted, clientKey) {
|
273
281
|
const kind = decrypted.get_kind_of(0);
|
274
|
-
const scheme = encryptionSchemes.tfhe;
|
282
|
+
const scheme = encryption_1.encryptionSchemes.tfhe;
|
275
283
|
switch (kind) {
|
276
|
-
case FheTypes.Bool:
|
277
|
-
return { scheme, type: handleTypes.ebool, value: decrypted.get_bool(0).decrypt(clientKey) };
|
278
|
-
case FheTypes.Uint64:
|
279
|
-
return { scheme, type: handleTypes.euint64, value: decrypted.get_uint64(0).decrypt(clientKey) };
|
280
|
-
case FheTypes.Uint256:
|
281
|
-
return { scheme, type: handleTypes.euint256, value: decrypted.get_uint256(0).decrypt(clientKey) };
|
284
|
+
case node_tfhe_1.FheTypes.Bool:
|
285
|
+
return { scheme, type: handle_1.handleTypes.ebool, value: decrypted.get_bool(0).decrypt(clientKey) };
|
286
|
+
case node_tfhe_1.FheTypes.Uint64:
|
287
|
+
return { scheme, type: handle_1.handleTypes.euint64, value: decrypted.get_uint64(0).decrypt(clientKey) };
|
288
|
+
case node_tfhe_1.FheTypes.Uint256:
|
289
|
+
return { scheme, type: handle_1.handleTypes.euint256, value: decrypted.get_uint256(0).decrypt(clientKey) };
|
282
290
|
}
|
283
291
|
throw new Error(`Unsupported kind: ${kind}`);
|
284
292
|
}
|
285
293
|
const decryptionClasses = {
|
286
|
-
[handleTypes.ebool]: FheBool,
|
287
|
-
[handleTypes.euint64]: FheUint64,
|
288
|
-
[handleTypes.euint256]: FheUint256,
|
294
|
+
[handle_1.handleTypes.ebool]: node_tfhe_1.FheBool,
|
295
|
+
[handle_1.handleTypes.euint64]: node_tfhe_1.FheUint64,
|
296
|
+
[handle_1.handleTypes.euint256]: node_tfhe_1.FheUint256,
|
289
297
|
};
|
290
298
|
var VersioningMode;
|
291
299
|
(function (VersioningMode) {
|
@@ -298,27 +306,27 @@ var VersioningMode;
|
|
298
306
|
// versioning_mode: SerializationVersioningMode,
|
299
307
|
// name: Cow<'static, str>,
|
300
308
|
// }
|
301
|
-
|
302
|
-
['header_version', RustType.Str],
|
309
|
+
exports.SerializationHeader = bincode_ts_1.RustType.Struct([
|
310
|
+
['header_version', bincode_ts_1.RustType.Str],
|
303
311
|
[
|
304
312
|
'versioning_mode',
|
305
|
-
RustType.Enum({ [VersioningMode.Versioned]: RustType.Str, [VersioningMode.Unversioned]: RustType.Str }),
|
313
|
+
bincode_ts_1.RustType.Enum({ [VersioningMode.Versioned]: bincode_ts_1.RustType.Str, [VersioningMode.Unversioned]: bincode_ts_1.RustType.Str }),
|
306
314
|
],
|
307
|
-
['name', RustType.Str],
|
315
|
+
['name', bincode_ts_1.RustType.Str],
|
308
316
|
]);
|
309
317
|
// Output schema (note we currently strip the versioning_mode field because we do not care about it, only the name
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
header_version: Schema.String,
|
318
|
+
exports.ProvenCompactCiphertextListTypeName = 'high_level_api::ProvenCompactCiphertextList';
|
319
|
+
exports.FheUintTypeName = 'high_level_api::FheUint';
|
320
|
+
exports.TfheSerialisationTypeName = effect_1.Schema.Literal(exports.ProvenCompactCiphertextListTypeName, exports.FheUintTypeName);
|
321
|
+
exports.TfheSerializationHeader = effect_1.Schema.Struct({
|
322
|
+
header_version: effect_1.Schema.String,
|
315
323
|
// For now, we will accept any string to avoid having to define an exhaustive union above
|
316
|
-
name: Schema.Union(TfheSerialisationTypeName, Schema.String),
|
324
|
+
name: effect_1.Schema.Union(exports.TfheSerialisationTypeName, effect_1.Schema.String),
|
317
325
|
});
|
318
326
|
// Decode a serialisation header from a ciphertext or other bincode-serialised data from tfhe-rs
|
319
|
-
|
320
|
-
const decoder = new Decoder();
|
321
|
-
const decoded = decoder.load(Uint8Array.from(buffer).buffer).decodeAs(SerializationHeader);
|
322
|
-
return parse(TfheSerializationHeader, decoded);
|
327
|
+
function decodeTfheSerializationHeader(buffer) {
|
328
|
+
const decoder = new bincode_ts_1.Decoder();
|
329
|
+
const decoded = decoder.load(Uint8Array.from(buffer).buffer).decodeAs(exports.SerializationHeader);
|
330
|
+
return (0, schema_1.parse)(exports.TfheSerializationHeader, decoded);
|
323
331
|
}
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maGV2bS90ZmhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUNMLHFCQUFxQixFQUVyQixzQkFBc0IsRUFDdEIsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULDJCQUEyQixFQUMzQixjQUFjLEVBQ2QsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JGLE9BQU8sRUFHTCxpQkFBaUIsRUFHakIsdUJBQXVCLEdBTXhCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRW5ELHFIQUFxSDtBQUNySCxtRUFBbUU7QUFFbkUsaUxBQWlMO0FBQ2pMLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUMxRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztB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
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maGV2bS90ZmhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlHQSw0Q0FvQ0M7QUFFRCxvREFpTEM7QUFFRCw4Q0FTQztBQUlELDRDQWlDQztBQTBERCxzRUFJQztBQXRhRCwyQ0FBK0M7QUFDL0MsbUNBQWdDO0FBQ2hDLHlDQWNtQjtBQUNuQiwrQkFBaUM7QUFDakMsc0NBQXFGO0FBQ3JGLHlEQVlrQztBQUNsQyxzQ0FBeUY7QUFDekYsc0NBQWtDO0FBQ2xDLG1DQUFtRDtBQUVuRCxxSEFBcUg7QUFDckgsbUVBQW1FO0FBRW5FLGlMQUFpTDtBQUNqTCxtREFBbUQ7QUFDdEMsUUFBQSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUM3RCxRQUFBLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELFFBQUEseUJBQXlCLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFrQnRELFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsQ0FBQyxFQUFFLENBQUMsRUFBRSwrQkFBK0I7SUFDckMsQ0FBQyxFQUFFLENBQUM7SUFDSixDQUFDLEVBQUUsQ0FBQztJQUNKLEVBQUUsRUFBRSxDQUFDO0lBQ0wsRUFBRSxFQUFFLENBQUM7SUFDTCxFQUFFLEVBQUUsQ0FBQztJQUNMLEdBQUcsRUFBRSxDQUFDO0lBQ04sR0FBRyxFQUFFLENBQUM7SUFDTixHQUFHLEVBQUUsQ0FBQztJQUNOLEdBQUcsRUFBRSxDQUFDO0lBQ04sSUFBSSxFQUFFLEVBQUU7SUFDUixJQUFJLEVBQUUsRUFBRTtDQUNULENBQUM7QUF1QkYsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBdUI7SUFDdEQsTUFBTSxTQUFTLEdBQUcsZ0NBQW9CLENBQUMsZ0JBQWdC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
|
package/dist/fhevm/types.js
CHANGED
@@ -1,19 +1,22 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getHandleTypeFromFheType = getHandleTypeFromFheType;
|
4
|
+
const node_tfhe_1 = require("node-tfhe");
|
5
|
+
const handle_1 = require("../handle");
|
3
6
|
// To HandleType
|
4
7
|
// FIXME: how did you arrive at this?
|
5
8
|
const fheTypeToHandleType = Object.freeze({
|
6
|
-
[FheTypes.Bool]: handleTypes.ebool,
|
7
|
-
[FheTypes.Uint4]: handleTypes.euint4,
|
8
|
-
[FheTypes.Uint8]: handleTypes.euint8,
|
9
|
-
[FheTypes.Uint16]: handleTypes.euint16,
|
10
|
-
[FheTypes.Uint32]: handleTypes.euint32,
|
11
|
-
[FheTypes.Uint64]: handleTypes.euint64,
|
12
|
-
[FheTypes.Uint128]: handleTypes.euint128,
|
13
|
-
[FheTypes.Uint160]: handleTypes.euint160,
|
14
|
-
[FheTypes.Uint256]: handleTypes.euint256,
|
9
|
+
[node_tfhe_1.FheTypes.Bool]: handle_1.handleTypes.ebool,
|
10
|
+
[node_tfhe_1.FheTypes.Uint4]: handle_1.handleTypes.euint4,
|
11
|
+
[node_tfhe_1.FheTypes.Uint8]: handle_1.handleTypes.euint8,
|
12
|
+
[node_tfhe_1.FheTypes.Uint16]: handle_1.handleTypes.euint16,
|
13
|
+
[node_tfhe_1.FheTypes.Uint32]: handle_1.handleTypes.euint32,
|
14
|
+
[node_tfhe_1.FheTypes.Uint64]: handle_1.handleTypes.euint64,
|
15
|
+
[node_tfhe_1.FheTypes.Uint128]: handle_1.handleTypes.euint128,
|
16
|
+
[node_tfhe_1.FheTypes.Uint160]: handle_1.handleTypes.euint160,
|
17
|
+
[node_tfhe_1.FheTypes.Uint256]: handle_1.handleTypes.euint256,
|
15
18
|
});
|
16
|
-
|
19
|
+
function getHandleTypeFromFheType(fheType) {
|
17
20
|
if (!fheType) {
|
18
21
|
throw new Error('FHE type is required');
|
19
22
|
}
|
@@ -23,4 +26,4 @@ export function getHandleTypeFromFheType(fheType) {
|
|
23
26
|
}
|
24
27
|
return handleType;
|
25
28
|
}
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmhldm0vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsNERBU0M7QUExQkQseUNBQXFDO0FBQ3JDLHNDQUFpRDtBQUVqRCxnQkFBZ0I7QUFDaEIscUNBQXFDO0FBQ3JDLE1BQU0sbUJBQW1CLEdBQXVDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUUsQ0FBQyxvQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLG9CQUFXLENBQUMsS0FBSztJQUNsQyxDQUFDLG9CQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsb0JBQVcsQ0FBQyxNQUFNO0lBQ3BDLENBQUMsb0JBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxvQkFBVyxDQUFDLE1BQU07SUFDcEMsQ0FBQyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLG9CQUFXLENBQUMsT0FBTztJQUN0QyxDQUFDLG9CQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsb0JBQVcsQ0FBQyxPQUFPO0lBQ3RDLENBQUMsb0JBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxvQkFBVyxDQUFDLE9BQU87SUFDdEMsQ0FBQyxvQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLG9CQUFXLENBQUMsUUFBUTtJQUN4QyxDQUFDLG9CQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQVcsQ0FBQyxRQUFRO0lBQ3hDLENBQUMsb0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxvQkFBVyxDQUFDLFFBQVE7Q0FDekMsQ0FBQyxDQUFDO0FBRUgsU0FBZ0Isd0JBQXdCLENBQUMsT0FBNkI7SUFDcEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIn0=
|
@@ -1,7 +1,10 @@
|
|
1
|
+
"use strict";
|
1
2
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2
3
|
// AddTwo
|
3
4
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
4
|
-
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.addTwoAbi = void 0;
|
7
|
+
exports.addTwoAbi = [
|
5
8
|
{
|
6
9
|
type: 'constructor',
|
7
10
|
inputs: [
|
@@ -56,4 +59,4 @@ export const addTwoAbi = [
|
|
56
59
|
stateMutability: 'view',
|
57
60
|
},
|
58
61
|
];
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkVHdvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9hYmlzL2FkZFR3by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0tBQXNLO0FBQ3RLLFNBQVM7QUFDVCxzS0FBc0s7OztBQUV6SixRQUFBLFNBQVMsR0FBRztJQUN2QjtRQUNFLElBQUksRUFBRSxhQUFhO1FBQ25CLE1BQU0sRUFBRTtZQUNOO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLFlBQVksRUFBRSx3QkFBd0I7Z0JBQ3RDLElBQUksRUFBRSxTQUFTO2FBQ2hCO1NBQ0Y7UUFDRCxlQUFlLEVBQUUsWUFBWTtLQUM5QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ2xFLElBQUksRUFBRSxRQUFRO1FBQ2QsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ2xFLGVBQWUsRUFBRSxZQUFZO0tBQzlCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDekUsSUFBSSxFQUFFLFdBQVc7UUFDakIsT0FBTyxFQUFFO1lBQ1AsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN0RCxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1NBQ3hEO1FBQ0QsZUFBZSxFQUFFLFlBQVk7S0FDOUI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUNsRSxJQUFJLEVBQUUsY0FBYztRQUNwQixPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDbEUsZUFBZSxFQUFFLFlBQVk7S0FDOUI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLE1BQU0sRUFBRTtZQUNOLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDdEQsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUM1RCxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1NBQ25EO1FBQ0QsSUFBSSxFQUFFLFVBQVU7UUFDaEIsT0FBTyxFQUFFLEVBQUU7UUFDWCxlQUFlLEVBQUUsWUFBWTtLQUM5QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtRQUNsQixPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDakUsZUFBZSxFQUFFLE1BQU07S0FDeEI7Q0FDTyxDQUFBIn0=
|