🚧 This documentation is currently under development. Content may be incomplete or subject to change. 🚧
Skip to content

fromExternal ​

Validates an EIP-712 proof attached to an encrypted handle submitted by a user. On success, returns a typed handle ready for computation. Reverts if the proof is invalid, expired, or was issued for a different contract.

This is the entry point for all user-provided encrypted inputs. The user encrypts a value with the JS SDK, and the contract validates the proof on-chain before using the handle.

Supported types: ebool, eaddress, euint16, euint256, eint16, eint256

TIP

The external* types enforce at the Solidity type level that unvalidated handles cannot be used in computations. You must call fromExternal first.

Usage ​

solidity
function deposit(externalEuint256 encryptedAmount, bytes calldata proof) external {
    // Validate the user's encrypted input
    euint256 amount = Nox.fromExternal(encryptedAmount, proof);

    // Now use the validated handle in computations
    euint256 newBalance = Nox.add(_balances[msg.sender], amount);
    Nox.allowThis(newBalance);
    Nox.allow(newBalance, msg.sender);
    _balances[msg.sender] = newBalance;
}

Signature ​

solidity
function fromExternal(externalEuint256 handle, bytes calldata proof) internal returns (euint256)