forked from nanexcool/pumpthegas
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
385 lines (317 loc) · 16.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="style.css">
<meta name="theme-color" content="#151515">
<meta name="msapplication-navbutton-color" content="#151515">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<title>Pump the Gas</title>
<link rel="canonical" href="https://pumpthegas.org/" />
<meta property="og:title" content="Pump the Gas" />
<meta property="og:locale" content="en_US" />
<meta name="description"
content="An effort to educate the Ethereum community about the gas limit and how it can be used to help improve Ethereum scaling." />
<meta property="og:description"
content="An effort to educate the Ethereum community about the gas limit and how it can be used to help improve Ethereum scaling." />
<meta property="og:url" content="https://pumpthegas.org/" />
<meta property="og:site_name" content="Pump the Gas" />
<meta property="og:type" content="website" />
<meta property="og:image"
content="https://opengraph.b-cdn.net/production/documents/0da6f1d6-d60b-4053-917d-04421ce447c7.png?token=LZyOCpRJ1lFZdLwkkH94XlJ9WWWIE20KD76OqZD246M&height=303&width=600&expires=33246868301">
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Pump the Gas" />
<meta name="twitter:image"
content="https://opengraph.b-cdn.net/production/documents/0da6f1d6-d60b-4053-917d-04421ce447c7.png?token=LZyOCpRJ1lFZdLwkkH94XlJ9WWWIE20KD76OqZD246M&height=303&width=600&expires=33246868301">
</head>
<body>
<header>
<div class="container">
<a id="a-title" href="/">
<h1>pump the gas</h1>
</a>
<h2 id="subtitle">help scale Ethereum today</h2>
<script>
if (Math.random() < 0.33) {
document.getElementById("subtitle").textContent = "36m is the new 30m";
}
</script>
<!-- <section id="downloads">
<a href="https://github.com/pages-themes/hacker/zipball/master" class="btn">Download as .zip</a>
<a href="https://github.com/pages-themes/hacker/tarball/master" class="btn">Download as .tar.gz</a>
<a href="https://github.com/pages-themes/hacker" class="btn btn-github"><span class="icon"></span>View
on GitHub</a>
</section> -->
</div>
</header>
<div class="container">
<section id="main_content">
<p>Pump the gas is an effort to educate the Ethereum community about the gas limit and how it can be used to help
<strong>improve Ethereum scaling</strong>. Signal your social support and spread our effort on twitter
or farcaster.
Use the hashtag <a target="_blank"
href="https://twitter.com/intent/post?text=I%20support%20raising%20the%20gas%20limit%20to%2040m%20%23pumpthegas%20https%3A%2F%2Fpumpthegas.org">#pumpthegas</a>
</p>
<blockquote>
<p>I'm generally a <strong>gas bull</strong> and think it is time for a <strong>gas limit increase</strong>.
I think the best would be a package of measures:</p>
<ul>
<li><strong>Increase execution gas limit (to 40m or even more)</strong></li>
<li>Increase blob count (3->8)</li>
<li>Implement EIP-7623 to limit the max block size</li>
</ul>
<p><strong>Dankrad Feist</strong> <a href="https://twitter.com/dankrad/status/1770489206961307717"
target="_blank">on Twitter</a></p>
</blockquote>
<blockquote>
<p>I think doing a <strong>modest gas limit increase even today is reasonable</strong>. The gas limit
has not been increased for nearly three years[...]. <strong>an increase to
around 40M or so.</strong></p>
<p><strong>Vitalik Buterin</strong> <a href="https://www.reddit.com/r/ethereum/comments/191kke6/comment/kh7ekx3/"
target="_blank">from a Reddit
AMA</a></p>
</blockquote>
<a id="solo-stakers">
<h1 id="header-1">SOLO STAKERS - What you can do</h1>
</a>
<p>If you are a <strong>solo staker</strong> you can increase the gas limit today by adding a flag to your client
configuration.</p>
<p>If you use <strong>Dappnode</strong> you can go to <code
class="language-plaintext highlighter-rouge">your client package > config > show advanced editor > EXTRA_OPTS</code>
</p>
<div class="row">
<div class="column">
<div style="padding-right: 10px;">
<h3 id="header-3">Consensus Client (externally produced blocks)</h3>
<div class="language-js highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code><span class="c1"># Lighthouse (validator client)</span>
<span class="kd">--gas-limit</span> <span class="nx">36000000</span>
<span class="c1"># Lodestar (validator client)</span>
<span class="kd">--defaultGasLimit</span> <span class="nx">36000000</span>
<span class="c1"># Nimbus</span>
<span class="kd">--suggested-gas-limit</span><span class="o">=</span><span class="nx">36000000</span>
<span class="c1"># Prysm (validator client)</span>
<span class="kd">--suggested-gas-limit</span> <span class="nx">36000000</span>
<span class="c1"># Teku</span>
<span class="kd">--Xvalidators-builder-registration-default-gas-limit</span><span class="o">=</span><span class="nx">36000000</span>
</code></pre>
</div>
</div>
</div>
</div>
<div class="column">
<h3 id="header-3">Execution Client (locally produced blocks)</h3>
<div class="language-js highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code><span class="c1"># Besu</span>
<span class="kd">--target-gas-limit</span> <span class="nx">36000000</span>
<span class="c1"># Erigon</span>
<span class="kd">--miner.gaslimit</span> <span class="nx">36000000</span>
<span class="c1"># Geth</span>
<span class="kd">--miner.gaslimit</span> <span class="nx">36000000</span>
<span class="c1"># Nethermind</span>
<span class="kd">--Blocks.TargetBlockGasLimit</span> <span class="nx">36000000</span>
<span class="c1"># Reth</span>
<span class="kd">--builder.gaslimit</span> <span class="nx">36000000</span>
</code></pre>
</div>
</div>
</div>
</div>
<p>After changing your configuration, you should restart your client.</p>
<p><a target="_blank" href="https://twitter.com/MKjrstad/status/1656549642140614658">Source</a></p>
<div class="card">
<h2 id="header-2">Validator Check</h2>
<p>Check if a validator is ready for the gas limit increase:</p>
<form style="margin-top: 20px;">
<input type="text" id="validatorInput" placeholder="Enter validator address (0x....)"
style="padding: 10px; width: 400px; border: 1px solid #ccc; border-radius: 4px;" />
<button class="checkBtn" type="button" onclick="checkValidator()">Check</button>
<div id="validatorCheckResult"></div>
</form>
</div>
<script>
document.getElementById("validatorInput").addEventListener("keydown", function (event) {
if (event.key === "Enter") {
event.preventDefault();
checkValidator();
}
});
function checkValidator() {
const validatorCheckResult = document.getElementById("validatorCheckResult");
validatorCheckResult.textContent = "";
const relayers = [
{
name: "Aestus Live",
url: "https://mainnet.aestus.live/"
},
{
name: "Agnostic Relay",
url: "https://agnostic-relay.net/"
},
{
name: "Bloxroute Max Profit",
url: "https://bloxroute.max-profit.blxrbdn.com/"
},
{
name: "Bloxroute Regulated",
url: "https://bloxroute.regulated.blxrbdn.com/"
},
{
name: "Eden Network",
url: "https://relay.edennetwork.io/"
},
{
name: "Flashbots Boost Relay",
url: "https://boost-relay.flashbots.net/"
},
{
name: "Manifold",
url: "https://mainnet-relay.securerpc.com/"
},
{
name: "Ultra Sound",
url: "https://relay.ultrasound.money/"
},
];
const validator = document.getElementById("validatorInput").value;
if (validator.length === 98 && validator.startsWith("0x") && /^[0-9a-fA-F]+$/.test(validator.slice(2))) {
// Input is valid, proceed with the code
relayers.forEach((relayer) => {
const url = `https://api.allorigins.win/raw?url=${relayer.url}relay/v1/data/validator_registration?pubkey=${validator}`;
fetch(url)
.then((response) => response.json())
.then((data) => {
console.log(data);
const gasLimit = data.message?.gas_limit ?? data.Message?.gas_limit;
const message = data.message || data.Message || "";
if (data.code === 400 || data.code === 404) {
validatorCheckResult.innerHTML += `${relayer.name} - not registered<br />`;
} else {
validatorCheckResult.innerHTML += `${relayer.name} - ${gasLimit}<br />`;
}
});
});
} else {
// Input is invalid, display an error message
validatorCheckResult.textContent = "Please enter a valid Ethereum validator address.";
}
}
</script>
<hr />
<h1 id="header-1">CLIENT TEAMS - What you can do</h1>
<p>Increase the gas limit to <code class="language-plaintext highlighter-rouge">36000000</code> in your client so
it's the default in future releases.
This will by far be the most effective way to make sure everyone is running clients with this configuration.</p>
<h1 id="header-1">BIG POOLS - What you can do</h1>
<p>Increase the gas limit to <code class="language-plaintext highlighter-rouge">36000000</code> in all your
clients.</p>
<hr />
<h1 id="header-1">FAQ</h1>
<h3 id="header-3">What is the gas block limit?</h3>
<p>Understanding 'gas' is fundamental to understanding how the Ethereum network functions.</p>
<p>The EVM - the Ethereum Virtual Machine (EVM) running on each Ethereum node - is an emulation of a computer
system. One example of a regular, non-blockchain virtual machine is the VirtualBox software, which allows you to
emulate computer systems (guests) on your physical hardware (hosts). Any operation in the EVM consumes CPU
cycles, disk access, memory, of the hosting machine (which carries a cost). This cost is paid via Ethereum
'gas'.</p>
<p>In order to prevent "overload" of the host, each operation on the EVM consumes a certain amount of gas.
Accessing memory or writing to disk have differing costs with each EVM operator setting an upper limit to the
gas consumed during execution of a contract. So, if a malicious operator crafted a smart contract that went into
an infinite loop, each loop would consume some gas and eventually run into the limit, at which point the EVM
would abort the execution of this contract. Essentially, the larger, more complex the contract and the more
operations it performs, the more expensive it is to run it.</p>
<p>There are many key components to a transaction that are important to understand:</p>
<table>
<thead>
<tr>
<th>Term</th>
<th>Description</th>
</tr>
</thead>
<tr>
<td>Gas</td>
<td>Unit for how much computation work is done.</td>
</tr>
<tr>
<td>Gas Price</td>
<td>How much you're willing to pay per gas for work (in gwei)</td>
</tr>
<tr>
<td>Tx Cost</td>
<td>Gas used * Gas Price</td>
</tr>
<tr>
<td>Gas Limit</td>
<td>Max gas you'll pay for a certain tx</td>
</tr>
<tr>
<td>Gas Block Limit</td>
<td>Max gas allowed in a block</td>
</tr>
</table>
<h3 id="header-3">What is the curent gas block limit?</h3>
<p><code class="language-plaintext highlighter-rouge">30,000,000</code></p>
<h3 id="header-3">What are we targetting for the new gas block limit?</h3>
<p><code class="language-plaintext highlighter-rouge">36,000,000</code></p>
<h3 id="header-3">Why this target specifically?</h3>
<p>After discussion with multiple community stakeholders, this feels like a reasonable amount to raise the limit
without putting the network at risk.</p>
<h3 id="header-3">How does this help Ethereum?</h3>
<p>Raising the gas block limit 20% gives Layer 1 Ethereum the ability to process 20% more transaction load in a
day.
This has the potential to lower gas fees on L1. It's <a target="_blank"
href="https://ethresear.ch/t/estimating-cryptocurrency-transaction-demand-elasticity-from-natural-experiments/2330">estimated</a>
this could reduce tx fees ~10-30%. </p>
<h3 id="header-3">What about blobs?</h3>
<p>Blobs (EIP-4844) help greatly reduce Layer 2 transaction fees, not Layer 1 transaction fees. A combination of
blobs + gas limit
increase can help scale both L1 and L2 Ethereum.</p>
<h3 id="header-3">Why not go even higher?</h3>
<p>It's important to remember that one of the core goals of Ethereum is to remain as decentralized as possible. If
the gas limit is raised too high we could create
a scenario where the chain becomes too large for solo node operators to validate and download. Technology
improves however and it does make sense to slowly increase it as time goes on.
Another important factor to consider is if we raise it too fast, we may run into unexpected externalities,
beyond just storage and bandwidth requirements.</p>
<h3 id="header-3">What can we do to make gas increases safer?</h3>
<p>We think there are 2 EIPs that are very important to allowing even further increases in the future. These are
<a target="_blank" href="https://eips.ethereum.org/EIPS/eip-7623">EIP-7623</a>
and <a target="_blank" href="https://eips.ethereum.org/EIPS/eip-4444">EIP-4444</a>, both of which the Ethereum
community should seriously consider.
</p>
<h3 id="header-3">How can I view the progress of this effort?</h3>
<p>You can view the latest blocks with a gas limit over 30M over at
<a target="_blank" href="https://blockchair.com/ethereum/blocks?s=id(desc)&q=gas_limit(30000001..100000000)">Blockchair.</a>
You can also see a bar chart over at
<a target="_blank" href="https://dune.com/queries/4359271/7316295">Dune.</a>
</p>
<h3 id="header-3">I'm in, how can I help?</h3>
<p>If you're a validator, you can set flags on your execution clients and consensus clients to signal that you'd
like to raise the gas limit. <a href="#solo-stakers">Please see above for these flags.</a></p>
<hr />
<h4>Further Reading</h4>
<p><a target="_blank" href="https://www.paradigm.xyz/2024/03/how-to-raise-the-gas-limit-1">Paradigm - How to Raise
the Gas Limit, Part 1: State Growth</a></p>
<p><a target="_blank" href="https://ethresear.ch/t/on-block-sizes-gas-limits-and-scalability/18444">Ethereum
Research - On Block Sizes, Gas Limits and Scalability</a></p>
<div class="card language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>pumpthegas.org
Made by <a target="_blank" href="https://twitter.com/econoar">@econoar</a> & <a target="_blank" href="https://twitter.com/nanexcool">@nanexcool</a> (who loves big blocks and loves you)
Mariano wants you to <a target="_blank" href="https://github.com/nanexcool/pumpthegas">send a PR to make this website prettier please</a>
</code></pre>
</div>
</div>
</section>
</div>
</body>
</html>