You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Restructure the website content to focus on "whys" not "eips" (#2)
* Restructure the website content to focus on "whys" not "eips"
Co-authored-by: Andrei Maiboroda <[email protected]>
* Apply suggestions from code review
Co-authored-by: Alex Beregszaszi <[email protected]>
---------
Co-authored-by: Andrei Maiboroda <[email protected]>
Co-authored-by: Alex Beregszaszi <[email protected]>
<p>Rejects deploying code starting with the byte 0xef. This EIP is already live on Ethereum Mainnet</p>
59
+
<h3>Code validation at deploy time</h3>
60
+
<p>Instead of having the interpreter validate instructions repeatedly at runtime, EVM bytecode is validated only once during contract creation, providing a faster, cheaper, and more secure execution.</p>
65
61
</li>
66
62
<li>
67
-
<spanclass="icon major style3 fa-file-code"></span>
<p><b>EOF - Code Validation</b>.</br> Defines how EOF bytecode is validated for correctness at deploy time.</p>
67
+
<h3>Removal of dynamic JUMPs</h3>
68
+
<p>EOF bytecode uses only static relative jumps, which is very desirable for tools involving static analysis, formal verification, compilation to native code, zero-knowledge circuits, as well as L2 EVMs.</p>
75
69
</li>
76
-
</ul>
77
-
<ulclass="features">
78
70
<li>
79
-
<spanclass="icon major style2 fa-file-code"></span>
<p><b>EOF - Static Relative Jumps</b>.</br> Introduces new instructions: RJUMP, RJUMPI, and RJUMPV with a signed immediate encoding the jump destination.</p>
71
+
<h3>Code and gas non-observability</h3>
72
+
<p>Lack of code and gas observability is a <ahref="https://ethereum-magicians.org/t/eof-proposal-ban-code-introspection-of-eof-accounts/12113">long-sought trait of the EVM</a> allowing a more maintainable and upgradeable protocol.</p>
82
73
</li>
83
74
<li>
84
-
<spanclass="icon major style4 fa-file-code"></span>
<p><b>EOF - Functions</b>.</br>Introduces EOF Functions as separate code sections. Also introduces two new instructions; CALLF and RETF to call and return from functions.</p>
75
+
<h3>Removal of JUMPDEST-analysis</h3>
76
+
<p>By obsoleting JUMPDEST-analysis done at contract runtime, EOF simplifies reasoning about EVM bytecode, as well as other changes, like <ahref="https://eips.ethereum.org/EIPS/eip-6690">EVMMAX</a>, <ahref="https://verkle.info">Verkle</a> or bytecode size increase.</p>
87
77
</li>
88
78
<li>
89
-
<spanclass="icon major style7 fa-file-code"></span>
<p><b>EOF - Stack Validation</b>.</br> Deploy-time validation of stack usage for EOF Functions.</p>
79
+
<h3>First-class support for EVM functions</h3>
80
+
<p>Functions in EOF are a subroutine mechanism not relying on dynamic jumps. It improves analysis opportunities by encoding the number of inputs and outputs for each given function, and isolating the stack of each function.</p>
92
81
</li>
93
-
</ul>
94
-
<ulclass="features">
95
82
<li>
96
-
<spanclass="icon major style8 fa-file-code"></span>
<p><b>EOF - JUMPF intruction.</b><br>Introduces JUMPF instruction for chaining function calls.</p>
83
+
<h3>Code versioning</h3>
84
+
<p>Introducing versioning will make backwards-incompatible upgrades much easier. Backwards compatible changes can be done without bumping the EOF version, even if new instructions are introduced.</p>
99
85
</li>
100
-
</ul>
86
+
<li>
87
+
<h3>Addressing EVM pain points</h3>
88
+
<p>EOF proposals address many long-standing issues and quirks of the EVM, streamlining compiler development, providing new compiler optimization opportunities, and ultimately improving developer experience. An example of this are the new improved stack management instructions.</p>
0 commit comments