Skip to content
This repository was archived by the owner on Jun 11, 2025. It is now read-only.

Commit 89c3288

Browse files
authored
Merge pull request #686 from zama-ai/core070-3
feat: new fhevm-core-contracts pre-release
2 parents 8dd9f92 + 3173577 commit 89c3288

File tree

11 files changed

+428
-473
lines changed

11 files changed

+428
-473
lines changed

.env.example

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
export MNEMONIC="adapt mosquito move limb mobile illegal tree voyage juice mosquito burger raise father hope layer"
22
export PRIVATE_KEY_FHEVM_DEPLOYER="0c66d8cde71d2faa29d0cb6e3a567d31279b6eace67b0a9d9ba869c119843a5e"
3-
export PRIVATE_KEY_DECRYPTION_ORACLE_DEPLOYER="717fd99986df414889fd8b51069d4f90a50af72e542c58ee065f5883779099c6"
43
export PRIVATE_KEY_DECRYPTION_ORACLE_RELAYER="7ec931411ad75a7c201469a385d6f18a325d4923f9f213bd882bbea87e160b67"
54
export NUM_KMS_SIGNERS="1"
65
export PRIVATE_KEY_KMS_SIGNER_0="388b7680e4e1afa06efbfd45cdd1fe39f3c6af381df6555a19661f283b97de91"

examples/TestAsyncDecrypt.sol

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -446,17 +446,13 @@ contract TestAsyncDecrypt is DecryptionOracleCaller {
446446
/// @param input1 First additional input parameter for the callback function
447447
/// @param input2 Second additional input parameter for the callback function
448448
function requestMixed(uint32 input1, uint32 input2) public {
449-
uint256[] memory cts = new uint256[](10);
449+
uint256[] memory cts = new uint256[](6);
450450
cts[0] = toUint256(xBool);
451-
cts[1] = toUint256(xBool);
452-
cts[2] = toUint256(xUint4);
453-
cts[3] = toUint256(xUint8);
454-
cts[4] = toUint256(xUint16);
455-
cts[5] = toUint256(xUint32);
456-
cts[6] = toUint256(xUint64);
457-
cts[7] = toUint256(xUint64);
458-
cts[8] = toUint256(xUint64);
459-
cts[9] = toUint256(xAddress);
451+
cts[1] = toUint256(xUint4);
452+
cts[2] = toUint256(xUint8);
453+
cts[3] = toUint256(xUint16);
454+
cts[4] = toUint256(xUint32);
455+
cts[5] = toUint256(xAddress);
460456
uint256 requestID = requestDecryption(cts, this.callbackMixed.selector);
461457
addParamsUint256(requestID, input1);
462458
addParamsUint256(requestID, input2);
@@ -465,33 +461,24 @@ contract TestAsyncDecrypt is DecryptionOracleCaller {
465461
/// @notice Callback function for mixed data type decryption
466462
/// @dev Processes the decrypted values and performs some basic checks
467463
/// @param requestID The ID of the decryption request
468-
/// @param decBool_1 First decrypted boolean
469-
/// @param decBool_2 Second decrypted boolean
464+
/// @param decBool First decrypted boolean
470465
/// @param decUint4 Decrypted 4-bit unsigned integer
471466
/// @param decUint8 Decrypted 8-bit unsigned integer
472467
/// @param decUint16 Decrypted 16-bit unsigned integer
473468
/// @param decUint32 Decrypted 32-bit unsigned integer
474-
/// @param decUint64_1 First decrypted 64-bit unsigned integer
475-
/// @param decUint64_2 Second decrypted 64-bit unsigned integer
476-
/// @param decUint64_3 Third decrypted 64-bit unsigned integer
477469
/// @param decAddress Decrypted address
478470
/// @return The decrypted 4-bit unsigned integer
479471
function callbackMixed(
480472
uint256 requestID,
481-
bool decBool_1,
482-
bool decBool_2,
473+
bool decBool,
483474
uint8 decUint4,
484475
uint8 decUint8,
485476
uint16 decUint16,
486477
uint32 decUint32,
487-
uint64 decUint64_1,
488-
uint64 decUint64_2,
489-
uint64 decUint64_3,
490478
address decAddress,
491479
bytes[] memory signatures
492480
) public checkSignatures(requestID, signatures) returns (uint8) {
493-
yBool = decBool_1;
494-
require(decBool_1 == decBool_2, "Wrong decryption");
481+
yBool = decBool;
495482
yUint4 = decUint4;
496483
yUint8 = decUint8;
497484
yUint16 = decUint16;
@@ -500,8 +487,6 @@ contract TestAsyncDecrypt is DecryptionOracleCaller {
500487
uint32 result = uint32(params[0]) + uint32(params[1]) + decUint32;
501488
yUint32 = result;
502489
}
503-
yUint64 = decUint64_1;
504-
require(decUint64_1 == decUint64_2 && decUint64_2 == decUint64_3, "Wrong decryption");
505490
yAddress = decAddress;
506491
return yUint4;
507492
}

hardhat.config.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@ import CustomProvider from './CustomProvider';
1414
// Adjust the import path as needed
1515
import './tasks/accounts';
1616
import './tasks/getEthereumAddress';
17-
import './tasks/taskDecryptionOracleRelayer';
1817
import './tasks/taskDeploy';
19-
import './tasks/taskTFHE';
18+
import './tasks/taskUtils';
2019

2120
extendProvider((provider) => {
2221
return new CustomProvider(provider);
@@ -95,17 +94,15 @@ task('test', async (_taskArgs, hre, runSuper) => {
9594
// Run modified test task
9695
if (hre.network.name === 'hardhat') {
9796
// in fhevm mode all this block is done when launching the node via `pnmp fhevm:start`
98-
const privKeyDecryptionOracleDeployer = process.env.PRIVATE_KEY_DECRYPTION_ORACLE_DEPLOYER;
9997
const privKeyFhevmDeployer = process.env.PRIVATE_KEY_FHEVM_DEPLOYER;
98+
const privKeyFhevmRelayer = process.env.PRIVATE_KEY_DECRYPTION_ORACLE_RELAYER;
99+
await hre.run('task:faucetToPrivate', { privateKey: privKeyFhevmDeployer });
100+
await hre.run('task:faucetToPrivate', { privateKey: privKeyFhevmRelayer });
101+
100102
if (!fs.existsSync('node_modules/fhevm-core-contracts/addresses')) {
101103
fs.mkdirSync('node_modules/fhevm-core-contracts/addresses');
102104
}
103-
await hre.run('task:computeDecryptionOracleAddress', { privateKey: privKeyDecryptionOracleDeployer });
104-
await hre.run('task:computeACLAddress', { privateKey: privKeyFhevmDeployer });
105-
await hre.run('task:computeTFHEExecutorAddress', { privateKey: privKeyFhevmDeployer });
106-
await hre.run('task:computeKMSVerifierAddress', { privateKey: privKeyFhevmDeployer });
107-
await hre.run('task:computeInputVerifierAddress', { privateKey: privKeyFhevmDeployer, useAddress: false });
108-
await hre.run('task:computeFHEGasLimitAddress', { privateKey: privKeyFhevmDeployer });
105+
109106
const sourceDir = path.resolve(__dirname, 'node_modules/fhevm-core-contracts/contracts');
110107
const destinationDir = path.resolve(__dirname, 'fhevmTemp/contracts');
111108
fs.copySync(sourceDir, destinationDir, { dereference: true });
@@ -115,22 +112,29 @@ task('test', async (_taskArgs, hre, runSuper) => {
115112
const sourceDir3 = path.resolve(__dirname, 'node_modules/fhevm-core-contracts/decryptionOracle');
116113
const destinationDir3 = path.resolve(__dirname, 'fhevmTemp/decryptionOracle');
117114
fs.copySync(sourceDir3, destinationDir3, { dereference: true });
115+
116+
await hre.run('compile:specific', { contract: 'fhevmTemp/contracts/emptyProxy' });
117+
await hre.run('task:deployEmptyUUPSProxies', { privateKey: privKeyFhevmDeployer, useCoprocessorAddress: false });
118+
119+
fs.copySync(destinationDir2, sourceDir2, { dereference: true });
120+
118121
await hre.run('compile:specific', { contract: 'fhevmTemp/contracts' });
119122
await hre.run('compile:specific', { contract: 'fhevmTemp/decryptionOracle' });
120123
await hre.run('compile:specific', { contract: 'lib' });
121124
await hre.run('compile:specific', { contract: 'decryption' });
122-
await hre.run('task:faucetToPrivate', { privateKey: privKeyFhevmDeployer });
125+
123126
await hre.run('task:deployACL', { privateKey: privKeyFhevmDeployer });
124127
await hre.run('task:deployTFHEExecutor', { privateKey: privKeyFhevmDeployer });
125128
await hre.run('task:deployKMSVerifier', { privateKey: privKeyFhevmDeployer });
126129
await hre.run('task:deployInputVerifier', { privateKey: privKeyFhevmDeployer });
127130
await hre.run('task:deployFHEGasLimit', { privateKey: privKeyFhevmDeployer });
131+
await hre.run('task:deployDecryptionOracle', { privateKey: privKeyFhevmDeployer });
132+
128133
await hre.run('task:addSigners', {
129134
numSigners: process.env.NUM_KMS_SIGNERS!,
130135
privateKey: privKeyFhevmDeployer,
131136
useAddress: false,
132137
});
133-
await hre.run('task:launchFhevm', { skipGetCoin: false, useAddress: false });
134138
}
135139
await hre.run('compile:specific', { contract: 'examples' });
136140
await runSuper();
@@ -186,7 +190,7 @@ const config: HardhatUserConfig = {
186190
enabled: true,
187191
runs: 800,
188192
},
189-
viaIR: true,
193+
viaIR: false,
190194
evmVersion: 'cancun',
191195
},
192196
},

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
"eslint": "^8.28.0",
7373
"eslint-config-prettier": "^8.5.0",
7474
"ethers": "^6.8.0",
75-
"fhevm-core-contracts": "0.7.0-2",
75+
"fhevm-core-contracts": "0.7.0-3",
7676
"fhevmjs": "^0.6.0-8",
7777
"hardhat": "^2.22.10",
7878
"hardhat-deploy": "^0.11.29",

tasks/taskDecryptionOracleRelayer.ts

Lines changed: 0 additions & 126 deletions
This file was deleted.

0 commit comments

Comments
 (0)