-
Notifications
You must be signed in to change notification settings - Fork 1
/
tag-blockworks.html
192 lines (192 loc) · 9.46 KB
/
tag-blockworks.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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="alternate"
type="application/rss+xml"
href="https://chenyo.me/rss.xml"
title="RSS feed for https://chenyo.me">
<title>Chenyo's Blog</title>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'],['\\(','\\)']]}});
</script>
<meta name="author" content="chenyo">
<meta name="referrer" content="no-referrer">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="assets/style.css" type="text/css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"/>
<link rel="favicon" type="image/x-icon" href="favicon.ico">
<script src="assets/search.js"></script></head>
<body>
<div id="preamble" class="status">
<header>
<h1><a href="https://chenyo.me">Chenyo's org-static-blog</a></h1>
<nav>
<a href="https://chenyo.me">Home</a>
<a href="archive.html">Archive</a>
<a href="tags.html">Tags</a>
<div id="search-container">
<input type="text" id="search-input" placeholder="Search anywhere...">
<i class="fas fa-search search-icon"></i>
</div>
</nav>
</header></div>
<div id="content">
<h1 class="title">Posts tagged "blockworks":</h1>
<div class="post-date">08 Aug 2024</div><h1 class="post-title"><a href="https://chenyo.me/2024-08-08-parallel-evm:-blockworks-bigger-picture.html">Parallel EVM: Blockworks news (Sei, Monad, Solana)</a></h1>
<nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#orga587ecd">1. Terminology</a>
<ul>
<li><a href="#org5f410f3">1.1. Ethereum sharding</a></li>
<li><a href="#org17f2a79">1.2. Blob</a></li>
<li><a href="#org83bbc3a">1.3. Erasure coding</a></li>
<li><a href="#org51c3b10">1.4. Data availability sampling (DAS)</a></li>
<li><a href="#orgcd92788">1.5. Danksharding (L2 optimization)</a></li>
<li><a href="#org3dd14bd">1.6. Relations between L1 and L2 scaling</a></li>
<li><a href="#orgb76173b">1.7. Double spending prevention</a></li>
<li><a href="#org826e3b0">1.8. Sealevel (Solana)</a></li>
</ul>
</li>
<li><a href="#org471cb12">2. Ways to achieve parallel processing</a></li>
<li><a href="#orge5e259b">3. Production-ready parallelized EVM projects (Jan 2024)</a></li>
</ul>
</div>
</nav>
<p>
This is a personal note for <a href="https://blockworks.co/news/parallelized-evms-gaining-popularity">Blockworks news (12.01.2024)</a> as well as some terminology explained online, e.g., <a href="https://www.coindesk.com/learn/what-is-ethereum-sharding-a-beginners-guide/">Coindesk</a> and <a href="https://chatgpt.com/c/824f05c9-dc75-4eb6-aeda-59d057baf83a">GPT-4o</a>.
</p>
<div id="outline-container-orga587ecd" class="outline-2">
<h2 id="orga587ecd"><span class="section-number-2">1.</span> Terminology</h2>
<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-org5f410f3" class="outline-3">
<h3 id="org5f410f3"><span class="section-number-3">1.1.</span> Ethereum sharding</h3>
<div class="outline-text-3" id="text-1-1">
<ul class="org-ul">
<li>The Ethereum mainnet is divided into smaller interconnected networks called shards.</li>
<li>Each shard processes and validates its own transactions parallel to others.</li>
<li>Pros: increase scalability and <b><b>participation</b></b>.</li>
<li>Cons: a single unit can be compromised; lead to centralization.</li>
</ul>
</div>
</div>
<div id="outline-container-org17f2a79" class="outline-3">
<h3 id="org17f2a79"><span class="section-number-3">1.2.</span> Blob</h3>
<div class="outline-text-3" id="text-1-2">
<ul class="org-ul">
<li>Rather than storing each transaction data directly in the blockchain, the data is aggregated into a blob (binary object).</li>
<li>Each blob performs erasure coding to dive the blob into multiple smaller pieces with redundancy.</li>
<li>Encoded pieces are stored separately, the block header contain pointers to the piece locations without storing actual data.</li>
<li>Transactions in a block may be distributed across multiple blobs.</li>
</ul>
</div>
</div>
<div id="outline-container-org83bbc3a" class="outline-3">
<h3 id="org83bbc3a"><span class="section-number-3">1.3.</span> Erasure coding</h3>
<div class="outline-text-3" id="text-1-3">
<ul class="org-ul">
<li>Allows one to encode blobs such that if at least half of the data in the blob is published, anyone in the network can reconstruct and re-publish the rest of the data.</li>
</ul>
</div>
</div>
<div id="outline-container-org51c3b10" class="outline-3">
<h3 id="org51c3b10"><span class="section-number-3">1.4.</span> Data availability sampling (DAS)</h3>
<div class="outline-text-3" id="text-1-4">
<ul class="org-ul">
<li>Validators randomly sample blob pieces to confirm the data can be reconstructed.g</li>
<li>If a client cannot get enough pieces to verify the blob availability, or the blob fails the integrity check, or transactions within the blob are invalid or inconsistent with the blockchain state, the blob is rejected.</li>
</ul>
</div>
</div>
<div id="outline-container-orgcd92788" class="outline-3">
<h3 id="orgcd92788"><span class="section-number-3">1.5.</span> Danksharding (L2 optimization)</h3>
<div class="outline-text-3" id="text-1-5">
<ul class="org-ul">
<li>A specific sharding implementation proposal.</li>
<li>Require data availability sampling and <a href="https://chenyo-17.github.io/org-static-blog/tag-evm.html#orgf2db0ef">proposer-builder separation</a>.</li>
<li>Can support hundreds of individual rollups.</li>
</ul>
</div>
</div>
<div id="outline-container-org3dd14bd" class="outline-3">
<h3 id="org3dd14bd"><span class="section-number-3">1.6.</span> Relations between L1 and L2 scaling</h3>
<div class="outline-text-3" id="text-1-6">
<ul class="org-ul">
<li>L1 scaling: optimizations directly to the Ethereum mainnet and core infrastructure, e.g., parallel EVM.</li>
<li>L2 scaling: building secondary rollup layers, e.g., optimistic rollups and ZK rollups, to offload mainnet computation and storage.</li>
</ul>
</div>
</div>
<div id="outline-container-orgb76173b" class="outline-3">
<h3 id="orgb76173b"><span class="section-number-3">1.7.</span> Double spending prevention</h3>
<div class="outline-text-3" id="text-1-7">
<ul class="org-ul">
<li>Bitcoin: uses UTXOs to track which inputs have been spent (no need to go through the entire chain).</li>
<li>Ethereum: uses a nounce to track the number of transactions sent from an account, the nounce is included in the transaction and is incremented by 1 for every new transaction, and all transactions must be executed in order.</li>
</ul>
</div>
</div>
<div id="outline-container-org826e3b0" class="outline-3">
<h3 id="org826e3b0"><span class="section-number-3">1.8.</span> Sealevel (Solana)</h3>
<div class="outline-text-3" id="text-1-8">
<ul class="org-ul">
<li>Solana’s parallel smart contract runtime to process thousands of contracts in parallel.</li>
<li>Solana transactions describe all states a transaction accesses to efficiently recognize transaction dependency and to schedule parallel execution without accessing full blockchain state.</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-org471cb12" class="outline-2">
<h2 id="org471cb12"><span class="section-number-2">2.</span> Ways to achieve parallel processing</h2>
<div class="outline-text-2" id="text-2">
<ul class="org-ul">
<li>Process independent transactions in parallel.</li>
<li>Sharding.</li>
</ul>
</div>
</div>
<div id="outline-container-orge5e259b" class="outline-2">
<h2 id="orge5e259b"><span class="section-number-2">3.</span> Production-ready parallelized EVM projects (Jan 2024)</h2>
<div class="outline-text-2" id="text-3">
<ul class="org-ul">
<li>Sei: optimistic parallel execution.</li>
<li>Monad: custom EVM implementation, optimistic parallel execution, <b><b>custom state database</b></b>.
<ul class="org-ul">
<li>Commodity databases are not optimized for Merkle tree data read/write with SSD.</li>
</ul></li>
<li>Neon (Solana): transactions pre-specify dependencies.</li>
<li>See <a href="https://chenyo-17.github.io/org-static-blog/tag-evm.html#orgcb5510d">BNB chain post</a> for more solutions.</li>
</ul>
</div>
</div>
<div class="taglist"><a href="https://chenyo.me/tags.html">Tags</a>: <a href="https://chenyo.me/tag-evm.html">evm</a> <a href="https://chenyo.me/tag-parallel-evm.html">parallel-evm</a> <a href="https://chenyo.me/tag-blockworks.html">blockworks</a> </div><div id="archive">
<a href="https://chenyo.me/archive.html">Other posts</a>
</div>
</div>
<div id="postamble" class="status"><div id="search-results"></div>
<footer>
<div class="footer-content">
<div class="footer-left">
<p>© 2024 chenyo. Some rights reserved.</p>
<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">
<img alt="Creative Commons License" style="border-width: 0"
src="https://i.creativecommons.org/l/by-nc/4.0/88x31.png"/>
</a>
</div>
<div class="social-links">
<a href="https://t.me/chenyo17" target="_blank" rel="noopener noreferrer">
<i class="fab fa-telegram"></i>
</a>
<a href="https://github.com/chenyo-17" target="_blank" rel="noopener noreferrer">
<i class="fab fa-github"></i>
</a>
</div>
</footer></div>
</body>
</html>