From a2688dfda79711b85ba9a39d8000f089e6b544bc Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Mon, 14 Jun 2021 09:00:22 +0200 Subject: [PATCH 1/2] EIP-3607: transactions from senders with deployed contract are forbidden --- Paper.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Paper.tex b/Paper.tex index 76598289..5639c89a 100644 --- a/Paper.tex +++ b/Paper.tex @@ -281,7 +281,7 @@ \subsection{World State} \label{ch:state} \subsection{The Transaction} \label{subsec:transaction} -A transaction (formally, $T$) is a single cryptographically-signed instruction constructed by an actor externally to the scope of Ethereum. While it is assumed that the ultimate external actor will be human in nature, software tools will be used in its construction and dissemination\footnote{Notably, such `tools' could ultimately become so causally removed from their human-based initiation---or humans may become so causally-neutral---that there could be a point at which they rightly be considered autonomous agents. \eg contracts may offer bounties to humans for being sent transactions to initiate their execution.}. There are two types of transactions: those which result in message calls and those which result in the creation of new accounts with associated code (known informally as `contract creation'). Both types specify a number of common fields: +A transaction (formally, $T$) is a single cryptographically-signed instruction constructed by an actor externally to the scope of Ethereum. The sender of a transaction can not be a contract. While it is assumed that the ultimate external actor will be human in nature, software tools will be used in its construction and dissemination\footnote{Notably, such `tools' could ultimately become so causally removed from their human-based initiation---or humans may become so causally-neutral---that there could be a point at which they rightly be considered autonomous agents. \eg contracts may offer bounties to humans for being sent transactions to initiate their execution.}. There are two types of transactions: those which result in message calls and those which result in the creation of new accounts with associated code (known informally as `contract creation'). Both types specify a number of common fields: \begin{description} \item[nonce]\linkdest{tx_nonce}{} A scalar value equal to the number of transactions sent by the sender; formally $T_{\mathrm{n}}$. @@ -584,6 +584,7 @@ \section{Transaction Execution} \label{ch:transactions} \item The transaction is well-formed RLP, with no additional trailing bytes; \item the transaction signature is valid; \item the \hyperlink{transaction_nonce}{transaction nonce} is valid (equivalent to the \hyperlink{account_nonce}{sender account's current nonce}); +\item the sender account has no contract code deployed ($\lVert I_{\mathbf{b}} \rVert = 0$). \item the gas limit is no smaller than the intrinsic gas, $g_0$, used by the transaction; and \item the sender account balance contains at least the cost, $v_0$, required in up-front payment. \end{enumerate} From b395f12b4afca04565487446e5af2c86e1000eb3 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Mon, 28 Jun 2021 14:06:44 +0200 Subject: [PATCH 2/2] 3607: update to use empty code hash instead of codesize --- Paper.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Paper.tex b/Paper.tex index 5639c89a..d25c202c 100644 --- a/Paper.tex +++ b/Paper.tex @@ -584,7 +584,7 @@ \section{Transaction Execution} \label{ch:transactions} \item The transaction is well-formed RLP, with no additional trailing bytes; \item the transaction signature is valid; \item the \hyperlink{transaction_nonce}{transaction nonce} is valid (equivalent to the \hyperlink{account_nonce}{sender account's current nonce}); -\item the sender account has no contract code deployed ($\lVert I_{\mathbf{b}} \rVert = 0$). +\item the sender account has no contract code deployed ($\boldsymbol{\sigma}[S(T)]_{\mathrm{c}} = \texttt{KEC}\big( () \big)$). \item the gas limit is no smaller than the intrinsic gas, $g_0$, used by the transaction; and \item the sender account balance contains at least the cost, $v_0$, required in up-front payment. \end{enumerate} @@ -629,6 +629,7 @@ \subsection{Execution} \begin{array}[t]{rcl} S(T) & \neq & \varnothing \quad \wedge \\ \boldsymbol{\sigma}[S(T)] & \neq & \varnothing \quad \wedge \\ +\boldsymbol{\sigma}[S(T)]_{\mathrm{c}} & = & \texttt{KEC}\big( () \big) \quad \wedge \\ \linkdest{transaction_nonce}{}T_{\mathrm{n}} & = & \boldsymbol{\sigma}[S(T)]_{\mathrm{n}} \quad \wedge \\ g_0 & \leqslant & T_{\mathrm{g}} \quad \wedge \\ v_0 & \leqslant & \boldsymbol{\sigma}[S(T)]_{\mathrm{b}} \quad \wedge \\