FHEVM v0.9 - October 2025
Highlights
The v.0.9 version will introduce new keygen capabilities, dynamic coprocessor management, and a redesigned decryption events workflow. These changes improve flexibility, scalability, and consensus handling while deprecating older event formats.
Breaking change
The methods FHE.requestDecryption and FHE.setDecryptionOracle are now deprecated and must be removed.
Please update your contracts to use the new decryption flow via the relayer, as outlined in the latest FHEVM protocol documentation.
New features
Support generation of FHE key and CRS on-chain:
Request the generation of an FHE key and a CRS directly through the Gateway.
New environment variables:
For the gateway contracts:
KMS_GENERATION_THRESHOLD: The threshold used to validate the consensus on an FHE key or CRS generation.KMS_NODE_STORAGE_URL_[0-N]: The storage base URL where public materials are stored for each KMS node.
For the coprocessor (
gw-listener):KMS_GENERATION_ADDRESS: The address of theKMSGenerationgateway contract.
For the connector:
KMS_GENERATION_ADDRESS: The address of theKMSGenerationgateway contract.
New
PauserSetimmutable contractHost and Gateway contracts can now be paused by any addresses added in the
PauserSetcontract.New environment variables:
For the gateway contracts:
NUM_PAUSERS: The number of pauser addresses to add. Should be set ton_kms + n_copro, withn_kmsthe number of registered KMS nodes andn_coprothe number of registered coprocessors.PAUSER_ADDRESS_[0-N]: The pauser addresses.
For the host contracts:
NUM_PAUSERS: The number of pauser addresses to add. Should be set ton_kms + n_copro, withn_kmsthe number of registered KMS nodes andn_coprothe number of registered coprocessors.PAUSER_ADDRESS_[0-N]: The pauser addresses.
Re-randomisation of transaction inputs
All inputs (including from state) of transactions are re-encrypted before evaluation of FHE operations to provide sIND-CPAD security.
This new feature is transparent to users.
Improvements
User decryption response:
Encrypted shares and signatures are no longer aggregated on-chain in the Gateway. Each response sent by a KMS now directly emits an event containing them separately.
New events introduced in the
Decryptioncontract:UserDecryptionResponse(uint256 indexed decryptionId, uint256 indexShare, bytes userDecryptedShare, bytes signature, bytes extraData);UserDecryptionResponseThresholdReached(uint256 indexed decryptionId);
Gateway contract renaming
Two contracts have been renamed.
Breaking changesThe following Gateway contracts have been renamed:
MultichainAcl->MultichainACLKmsManagement->KMSGeneration
As a consequence, the following environment variable have been renamed:
KMS_MANAGEMENT_ADDRESS->KMS_GENERATION_ADDRESSKMS_CONNECTOR_KMS_MANAGEMENT_CONTRACT__ADDRESS->KMS_CONNECTOR_KMS_GENERATION_CONTRACT__ADDRESS
Also, in the
values.yamlfiles of the KMS Connector's Helm chart, the following field has been renamed:kmsManagement->kmsGeneration
Gateway check functions replaced
All external
check...view functions have been removed from the Gateway contracts.Associated errors have been moved to different contracts or deleted.
They have been replaced by equivalent
is...view functions that no longer revert and instead return a boolean.
Resources
Last updated