Skip to content

Commit a13e28e

Browse files
committed
Update
1 parent 0c2a5ab commit a13e28e

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

presentation.tex

+23-21
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
\title[hevm]{hevm, a Fast Symbolic Execution Framework for EVM Bytecode}
2525
\author[dxo, Soos, Paraskevopoulou, Lundfall, Brockmann]{dxo$^{1}$, \emph{Mate Soos$^{1}$}, Zoe Paraskevopoulou$^{1}$, Martin Lundfall$^{2}$, Mikael Brockman$^{2}$}
2626
\institute[]{$^{1}$ Ethereum Foundation, $^{2}$ Independent Researcher}
27-
\date{26th of July 2024, Montreal, Canada}
27+
%\date{26th of July 2024, Montreal, Canada}
2828
%\logo{sdfsdaf}
2929

3030

@@ -139,8 +139,10 @@ \section{Recap of Ethereum \& Related Work}
139139
.if_true:
140140
add %ax $5 ax: v1+5 bx: v2
141141
.end:
142-
---- v1==v2 -> ax: v1+5 bx: v2
143-
---- v1!=v2 -> ax: v1+4 bx: v2
142+
\end{Verbatim}
143+
\begin{Verbatim}[fontsize=\small]
144+
-**- v1==v2 -> ax: v1+5 bx: v2
145+
-**- v1!=v2 -> ax: v1+4 bx: v2
144146
\end{Verbatim}
145147
\end{minipage}
146148
\bigskip
@@ -159,7 +161,7 @@ \section{Recap of Ethereum \& Related Work}
159161
\begin{itemize}
160162
\item \textbf{Certora Prover}: Based on backwards exploration and weakest precondition computation
161163
\item \textbf{EthBMC}: Bounded model checking-based exploration of contracts
162-
\item \textbf{halmos}: written in python, with its own IR and internal rewrite engine
164+
\item \textbf{halmos}: Written in python, with its own IR and internal rewrite engine
163165
\item \textbf{KEVM}: K-framework based, allows to ``break out'' into K to prove lemmas
164166
\end{itemize}
165167
\end{frame}
@@ -263,9 +265,9 @@ \section{hevm, the details}
263265

264266
Limitations:
265267
\begin{itemize}
266-
\item Cannot deal with symbolic gas other than ignoring it
267-
\item Symbolic offset/size memory copy is not yet implemented
268-
\item Loops and recursion are explored only to a fixed depth
268+
\item Cannot deal with \textbf{symbolic gas} other than ignoring it
269+
\item \textbf{Symbolic offset/size memcopy} is not yet implemented
270+
\item \textbf{Loops and recursion} are explored only to a fixed depth
269271
\end{itemize}
270272
\end{frame}
271273

@@ -423,20 +425,20 @@ \section{hevm, the details}
423425
\end{itemize}
424426
\end{frame}
425427
%
426-
%\begin{frame}[fragile=singleslide]{Intermediate Representation: Maps}
427-
%Storage of contracts is an unstructured array of uint256. Solidity uses: $keccak (bytes32(key) || bytes32(id))$ to map $mymap[key]$ where $id$ is the map index:
428-
%
429-
%\begin{Verbatim}[frame=single, framerule=0.2mm, framesep=2mm,fontsize=\small]
430-
%contract C {
431-
% mapping(uint => uint) mymap_id0;
432-
% mapping(uint => uint) mymap_id1;
433-
%}
434-
%\end{Verbatim}
435-
%We have Solidity-specific rewrite rules to strip writes. So when writing two $keccak (bytes32(key) || bytes32(id))$-s on top of each other, and then reading, we traverse the list of writes to pick out the potentially matching one(s).
436-
%\bigskip
437-
%
438-
%Notice that the SMT solver can use our Keccak rules to do this, too, but it's a lot slower
439-
%\end{frame}
428+
\begin{frame}[fragile=singleslide]{Intermediate Representation: Maps}
429+
Storage of contracts is an unstructured array of uint256. Solidity uses: $keccak (bytes32(key) || bytes32(id))$ to map $mymap[key]$ where $id$ is the map index:
430+
431+
\begin{Verbatim}[frame=single, framerule=0.2mm, framesep=2mm,fontsize=\small]
432+
contract C {
433+
mapping(uint => uint) map_id_0;
434+
mapping(uint => uint) map_id_1;
435+
}
436+
\end{Verbatim}
437+
We have Solidity-specific rewrite rules to strip writes. So when writing two $keccak (bytes32(key) || bytes32(id))$-s on top of each other, and then reading, we traverse the list of writes to pick out the potentially matching one(s).
438+
\bigskip
439+
440+
Notice that the SMT solver can use our Keccak rules to do this, too, but it's a lot slower
441+
\end{frame}
440442

441443
\begin{frame}[fragile=singleslide]{Intermediate Representation: Simplification}
442444
We do all the following rewrites to fixedpoint:

0 commit comments

Comments
 (0)