FHEVM v0.9 - October 2025
Highlights
The upcoming 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.
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 theKMSGeneration
gateway contract.
For the connector:
KMS_GENERATION_ADDRESS
: The address of theKMSGeneration
gateway contract.
New
PauserSet
immutable contractHost and Gateway contracts can now be paused by any addresses added in the
PauserSet
contract.New environment variables:
For the gateway contracts:
NUM_PAUSERS
: The number of pauser addresses to add. Should be set ton_kms + n_copro
, withn_kms
the number of registered KMS nodes andn_copro
the 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_kms
the number of registered KMS nodes andn_copro
the 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
Decryption
contract: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
->MultichainACL
KmsManagement
->KMSGeneration
As a consequence, the following environment variable have been renamed:
KMS_MANAGEMENT_ADDRESS
->KMS_GENERATION_ADDRESS
KMS_CONNECTOR_KMS_MANAGEMENT_CONTRACT__ADDRESS
->KMS_CONNECTOR_KMS_GENERATION_CONTRACT__ADDRESS
Also, in the
values.yaml
files 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