Skip to content

Commit 6ef6062

Browse files
EIP-3607: transactions from senders with deployed contract are forbidden (#801)
* EIP-3607: transactions from senders with deployed contract are forbidden * 3607: update to use empty code hash instead of codesize
1 parent d16c749 commit 6ef6062

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

Paper.tex

+3-1
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ \subsection{World State} \label{ch:state}
301301

302302
\subsection{The Transaction} \label{subsec:transaction}
303303

304-
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:
304+
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:
305305

306306
\begin{description}
307307
\item[nonce]\linkdest{tx_nonce}{} A scalar value equal to the number of transactions sent by the sender; formally $T_{\mathrm{n}}$.
@@ -604,6 +604,7 @@ \section{Transaction Execution} \label{ch:transactions}
604604
\item The transaction is well-formed RLP, with no additional trailing bytes;
605605
\item the transaction signature is valid;
606606
\item the \hyperlink{transaction_nonce}{transaction nonce} is valid (equivalent to the \hyperlink{account_nonce}{sender account's current nonce});
607+
\item the sender account has no contract code deployed ($\boldsymbol{\sigma}[S(T)]_{\mathrm{c}} = \texttt{KEC}\big( () \big)$).
607608
\item the gas limit is no smaller than the intrinsic gas, $g_0$, used by the transaction; and
608609
\item the sender account balance contains at least the cost, $v_0$, required in up-front payment.
609610
\end{enumerate}
@@ -648,6 +649,7 @@ \subsection{Execution}
648649
\begin{array}[t]{rcl}
649650
S(T) & \neq & \varnothing \quad \wedge \\
650651
\boldsymbol{\sigma}[S(T)] & \neq & \varnothing \quad \wedge \\
652+
\boldsymbol{\sigma}[S(T)]_{\mathrm{c}} & = & \texttt{KEC}\big( () \big) \quad \wedge \\
651653
\linkdest{transaction_nonce}{}T_{\mathrm{n}} & = & \boldsymbol{\sigma}[S(T)]_{\mathrm{n}} \quad \wedge \\
652654
g_0 & \leqslant & T_{\mathrm{g}} \quad \wedge \\
653655
v_0 & \leqslant & \boldsymbol{\sigma}[S(T)]_{\mathrm{b}} \quad \wedge \\

0 commit comments

Comments
 (0)