mirror of
https://github.com/luxfhe/template-fhevm-hardhat.git
synced 2026-10-30 17:08:44 +00:00
47 lines
1.8 KiB
Solidity
47 lines
1.8 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.24;
|
|
|
|
import {FHE, euint32, externalEuint32} from "@fhevm/solidity/lib/FHE.sol";
|
|
import {LuxEthereumConfig} from "@fhevm/solidity/config/LuxConfig.sol";
|
|
|
|
/// @title A simple FHE counter contract
|
|
/// @author fhevm-hardhat-template
|
|
/// @notice A very basic example contract showing how to work with encrypted data using FHEVM.
|
|
contract FHECounter is LuxEthereumConfig {
|
|
euint32 private _count;
|
|
|
|
/// @notice Returns the current count
|
|
/// @return The current encrypted count
|
|
function getCount() external view returns (euint32) {
|
|
return _count;
|
|
}
|
|
|
|
/// @notice Increments the counter by a specified encrypted value.
|
|
/// @param inputEuint32 the encrypted input value
|
|
/// @param inputProof the input proof
|
|
/// @dev This example omits overflow/underflow checks for simplicity and readability.
|
|
/// In a production contract, proper range checks should be implemented.
|
|
function increment(externalEuint32 inputEuint32, bytes calldata inputProof) external {
|
|
euint32 encryptedEuint32 = FHE.fromExternal(inputEuint32, inputProof);
|
|
|
|
_count = FHE.add(_count, encryptedEuint32);
|
|
|
|
FHE.allowThis(_count);
|
|
FHE.allow(_count, msg.sender);
|
|
}
|
|
|
|
/// @notice Decrements the counter by a specified encrypted value.
|
|
/// @param inputEuint32 the encrypted input value
|
|
/// @param inputProof the input proof
|
|
/// @dev This example omits overflow/underflow checks for simplicity and readability.
|
|
/// In a production contract, proper range checks should be implemented.
|
|
function decrement(externalEuint32 inputEuint32, bytes calldata inputProof) external {
|
|
euint32 encryptedEuint32 = FHE.fromExternal(inputEuint32, inputProof);
|
|
|
|
_count = FHE.sub(_count, encryptedEuint32);
|
|
|
|
FHE.allowThis(_count);
|
|
FHE.allow(_count, msg.sender);
|
|
}
|
|
}
|