mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
Restructured from flat .tex/.pdf files into per-paper subdirectories. Added Antje Worring as co-author on all papers. Synced PDFs to pdfs/ for download site.
86 lines
2.7 KiB
TeX
86 lines
2.7 KiB
TeX
\section{Integration with Ethereum}
|
|
|
|
|
|
\subsection{EIP-7702 Delegation}
|
|
|
|
EIP-7702 allows EOAs (Externally Owned Accounts) to delegate execution to smart contracts while preserving address. EPERVIER enables quantum-resistant delegation:
|
|
|
|
\textbf{Workflow:}
|
|
\begin{algorithmic}[1]
|
|
\STATE User generates EPERVIER keypair
|
|
\STATE Deploy delegation contract with EPERVIER verification logic
|
|
\STATE Set EOA's code pointer to delegation contract (via EIP-7702 transaction)
|
|
\STATE Future transactions validated via EPERVIER instead of ECDSA
|
|
\end{algorithmic}
|
|
|
|
\textbf{Example Contract:}
|
|
\begin{lstlisting}[language=Solidity]
|
|
contract EPERVIERDelegate {
|
|
address public owner;
|
|
IEPERVIER verifier;
|
|
|
|
function execute(
|
|
address to, uint256 value, bytes calldata data,
|
|
bytes calldata signature
|
|
) external {
|
|
bytes32 msgHash = keccak256(abi.encode(to, value, data));
|
|
address recovered = verifier.recover(msgHash, signature);
|
|
require(recovered == owner, "Invalid signature");
|
|
|
|
(bool success,) = to.call{value: value}(data);
|
|
require(success, "Execution failed");
|
|
}
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\subsection{EIP-4337 Account Abstraction}
|
|
|
|
EPERVIER integrates with EIP-4337 for quantum-resistant smart contract wallets:
|
|
|
|
\textbf{UserOperation Structure:}
|
|
\begin{lstlisting}
|
|
struct UserOperation {
|
|
address sender;
|
|
bytes callData;
|
|
uint256 maxFeePerGas;
|
|
bytes signature; // EPERVIER signature
|
|
// ... other fields
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\textbf{Validation:}
|
|
\begin{lstlisting}[language=Solidity]
|
|
function validateUserOp(UserOperation calldata userOp)
|
|
external returns (uint256 validationData)
|
|
{
|
|
bytes32 userOpHash = getUserOpHash(userOp);
|
|
address recovered = EPERVIER.recover(userOpHash, userOp.signature);
|
|
if (recovered != address(this)) return SIG_VALIDATION_FAILED;
|
|
return 0; // success
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\textbf{Gas Budget:} EIP-4337 allocates 4M gas for UserOp validation. EPERVIER's 1.9M gas fits comfortably, leaving 2.1M for additional logic (e.g., session keys, spending limits).
|
|
|
|
\subsection{Native Precompile Proposal}
|
|
|
|
Long-term viability requires native EVM precompile support. We propose:
|
|
|
|
\textbf{Precompile Address:} 0x0b (next available after 0x0a for Blake2f)
|
|
|
|
\textbf{Interface:}
|
|
\begin{lstlisting}
|
|
Input: [pubkey_hash (32B)] [signature (666B)] [message (var)]
|
|
Output: [success (1B)] 0x01 if valid, 0x00 otherwise
|
|
Gas: 30,000 (comparable to ECDSA)
|
|
\end{lstlisting}
|
|
|
|
\textbf{Rationale:}
|
|
\begin{itemize}
|
|
\item NTT amenable to hardware acceleration (GPU, FPGA, ASIC)
|
|
\item Estimated 100-500x speedup vs. Solidity implementation
|
|
\item Target: $<$50k gas (20x cheaper than current)
|
|
\item Precedent: BLS12-381 precompiles (EIP-2537) for Ethereum 2.0
|
|
\end{itemize}
|
|
|