Bug
The API reference docs for FHERC20 and IFHERC20 document all encrypted types as euint32/inEuint32, but the actual FHERC20.sol contract uses euint128/inEuint128 throughout.
Examples of incorrect documentation
// Docs say: ❌
mapping(address => euint32) _encBalances
function approveEncrypted(address spender, struct inEuint32 value) public virtual returns (bool)
function _allowanceEncrypted(address owner, address spender) public view virtual returns (euint32)
function transferFromEncrypted(address from, address to, euint32 value) public virtual returns (euint32)
What the actual contract has
// FHERC20.sol: ✅
mapping(address => euint128) internal _encBalances
function approveEncrypted(address spender, inEuint128 calldata value) public virtual returns (bool)
function _allowanceEncrypted(address owner, address spender) internal view returns (euint128)
function transferFromEncrypted(address from, address to, inEuint128 calldata value) public virtual returns (euint128)
Additional issues in the same files:
_allowanceEncrypted is documented as public but is actually internal
_encBalances is documented without internal visibility
Impact
Any developer copying function signatures or types from these docs will write incompatible code that fails to compile or integrate.
Files affected
docs/devdocs/Solidity API/Experimental/FHERC20.md
docs/devdocs/Solidity API/Experimental/IFHERC20.md
Bug
The API reference docs for
FHERC20andIFHERC20document all encrypted types aseuint32/inEuint32, but the actualFHERC20.solcontract useseuint128/inEuint128throughout.Examples of incorrect documentation
What the actual contract has
Additional issues in the same files:
_allowanceEncryptedis documented aspublicbut is actuallyinternal_encBalancesis documented withoutinternalvisibilityImpact
Any developer copying function signatures or types from these docs will write incompatible code that fails to compile or integrate.
Files affected
docs/devdocs/Solidity API/Experimental/FHERC20.mddocs/devdocs/Solidity API/Experimental/IFHERC20.md