arnaucube.com/blog/index.html
blog/index.htmlRaw
1<!DOCTYPE html>
2<html lang="en">
3
4 <head>
5 <meta name="description" content="arnaucube blog" />
6 <meta charset="utf-8">
7 <title>arnaucube - blog</title>
8 <meta name="title" content="arnaucube - blog">
9 <meta name="description" content="arnaucube blog">
10
11 <meta property="og:title" content="arnaucube - blog" />
12 <meta property="og:description" content="arnaucube blog" />
13 <meta property="og:url" content="https://arnaucube.com/blog" />
14 <meta property="og:type" content="article" />
15 <meta property="og:image" content="https://arnaucube.com/blog/img/logoArnauCube.png" />
16 <meta name="twitter:title" content="arnaucube - blog">
17 <meta name="twitter:description" content="arnaucube blog">
18 <meta name="twitter:image" content="https://arnaucube.com/blog/img/logoArnauCube.png">
19 <meta name="twitter:card" content="summary_large_image">
20 <meta name="author" content="arnaucube">
21
22 <link rel="icon" type="image/png" href="img/logoArnauCubeFavicon.png">
23
24 <meta name="viewport" content="width=device-width, initial-scale=1">
25
26 <link href="css/bootstrap.min.css" rel="stylesheet">
27 <link rel="stylesheet" href="css/style.css">
28
29 <!-- highlightjs -->
30 <!-- <link rel="stylesheet" href="js/highlightjs/atom-one-dark.css"> -->
31 <link rel="stylesheet" href="js/highlightjs/atom-one-light.css">
32 <!-- <link rel="stylesheet" href="js/highlightjs/gruvbox-dark.css"> -->
33 <script src="js/highlightjs/highlight.pack.js"></script>
34
35 <!-- katex -->
36 <link rel="stylesheet" href="js/katex/katex.min.css">
37 <link rel="alternate" type="application/rss+xml" title="arnaucube - blog RSS" href="https://arnaucube.com/blog/rss.xml">
38</head>
39
40 <body>
41
42 <!-- o_gradient_background" -->
43 <nav id="mainNav" class="navbar navbar-default navbar-fixed-top"
44 style="height:50px;font-size:100%;">
45 <div class="container">
46 <div style="float:left;">
47 <a href="/blog" style="color:#000;display:inline-block;">blog</a>
48 <span style="margin-right:20px; margin-left:20px;">|</span>
49 <a href="/blog/notes.html" style="font-size:90%;color:#000;display:inline-block;">notes</a>
50 </div>
51 <div style="float:right;">
52 <a href="/" style="color:#000;display:inline-block;margin-right:10px;">arnaucube.com</a>
53 <a href="/blog/rss.xml" target="_blank"
54 type="application/rss+xml" title="subscribe via RSS" aria-label="subscribe via RSS">
55 <img width="12px;" src="img/rss.png" />
56 </a>
57 <div class="onoffswitch" style="margin-left:0px;display:inline-block;" title="change theme">
58 <input onclick="switchTheme()" type="checkbox" name="onoffswitch" class="onoffswitch-checkbox"
59 id="themeSwitcher">
60 <label class="onoffswitch-label" for="themeSwitcher"></label>
61 </div>
62 </div>
63 </div>
64 <!-- <img style="height:5px; width:100%; margin-top:8px;" src="img/gradient-line.jpg" /> -->
65 </nav>
66
67
68
69 <div class="container" style="margin-top:0px;max-width:800px;">
70 <a href='/blog/labrador.html'><div class="row postThumb">
71 <h3>Notes on Labrador, a lattice-based SNARK scheme</h3>
72
73<p>Overview of how the (post-quantum) lattice-based SNARK scheme “Labrador” works.</p>
74
75<p><em>2026-06-11</em></p>
76
77</div>
78
79</a><a href='/blog/tools.html'><div class="row postThumb">
80 <h3>Tools</h3>
81
82<p>A non-exhaustive overview of tools I use daily.</p>
83
84<p><em>2026-06-08</em></p>
85
86</div>
87
88</a><a href='/blog/ai-connections.html'><div class="row postThumb">
89 <h3>Human connections in the early days of AI</h3>
90
91<p>A short note on aiccelerationism, hyperreality, and the recovery of human connections.</p>
92
93<p><em>2025-06-03</em></p>
94
95</div>
96
97</a><a href='https://www.youtube.com/watch?v=z3FH9I8klDk'><div class="row postThumb">
98 <h3><span style="font-size:85%">[zkSummit12 talk]</span> Sonobe, a modular folding schemes library</h3>
99
100<p>(link to youtube video of the talk)</p>
101
102<p><em>2024-11-21</em></p>
103
104</div>
105
106</a><a href='/blog/protogalaxy.html'><div class="row postThumb">
107 <h3>Notes on ProtoGalaxy</h3>
108
109<p>The idea of these notes is to provide some extra intuition and explainations on ProtoGalaxy’s paper.
110ProtoGalaxy is a <em>folding scheme</em> which iterates on ideas from ProtoStar paper.</p>
111
112<p><em>2023-08-20</em></p>
113
114</div>
115
116</a><a href='https://raw.githubusercontent.com/arnaucube/math/master/notes_hypernova.pdf'><div class="row postThumb">
117 <h3>Notes on HyperNova (pdf)</h3>
118
119<p>This document contains notes on HyperNova and CCS.</p>
120
121<p><em>2023-05-16</em></p>
122
123</div>
124
125</a><a href='/blog/ipa.html'><div class="row postThumb">
126 <h3>IPA polynomial commitment by hand</h3>
127
128<p>This post overviews the IPA polynomial commitment described in the Halo paper, first by providing an overview on the protocol, then by doing a step-by-step example with small values, following the style done in the “Plonk by hand series” from Joshua Fitzgerald, and later by providing a Sage implementation of the protocol.</p>
129
130<p><em>2023-04-06</em></p>
131
132</div>
133
134</a><a href='https://raw.githubusercontent.com/arnaucube/math/master/notes_fri_stir.pdf'><div class="row postThumb">
135 <h3>Notes on FRI and STIR (pdf)</h3>
136
137<p>This document contains notes on FRI low degree testing and the trick to convert it to a polynomial commitment scheme.
138(Update 2024-03-22: also few notes on STIR).</p>
139
140<p><em>2023-02-26</em></p>
141
142</div>
143
144</a><a href='/blog/powersoftau.html'><div class="row postThumb">
145 <h3>Implementing the powers of tau contributor</h3>
146
147<p>In the following notes we go over the ideas behind the <em>Powers of Tau</em> ceremony, how participants contribute and how the contributions are verified (logic & code). We focus on the Ethereum’s upcoming KZG-Ceremony.</p>
148
149<p><em>2023-01-02</em></p>
150
151</div>
152
153</a><a href='/blog/ringsig.html'><div class="row postThumb">
154 <h3>bLSAG ring signatures overview</h3>
155
156<p>Notes on bLSAG: Back’s Linkable Spontaneous Anonymous Group signatures</p>
157
158<p><em>2022-07-20</em></p>
159
160</div>
161
162</a><a href='/blog/shamir-secret-sharing.html'><div class="row postThumb">
163 <h3>Lagrange Polynomial Interpolation and Shamir secret sharing</h3>
164
165<p>Overview of Langrange Polynomial interpolation and Shamir’s secret sharing.</p>
166
167<p><em>2021-10-10</em></p>
168
169</div>
170
171</a><a href='/blog/kzg-batch-proof.html'><div class="row postThumb">
172 <h3>Batch proof in KZG Commitments</h3>
173
174<p>The benefit of <em>batch proof</em> is that allows us to proof multiple points while the proof size remains constant to one <span class="math inline">\(\mathbb{G}_1\)</span> point.</p>
175
176<p><em>2021-08-14</em></p>
177
178</div>
179
180</a><a href='/blog/kzg-commitments.html'><div class="row postThumb">
181 <h3>Notes on KZG polynomial commitments</h3>
182
183<p>In the following notes I’ve tried to summarize the KZG Commitments scheme with the concepts that helped me to follow the reasoning.</p>
184
185<p><em>2021-08-05</em></p>
186
187</div>
188
189</a><a href='/blog/blind-signatures-ec.html'><div class="row postThumb">
190 <h3>Notes on blind signatures over elliptic curves</h3>
191
192<p>In this notes, we will cover the scheme proposed at <em>“New Blind Signature Schemes Based on the (Elliptic Curve) Discrete Logarithm Problem”</em> paper by Hamid Mala & Nafiseh Nezhadansari.</p>
193
194<p><em>2021-07-30</em></p>
195
196</div>
197
198</a><a href='/blog/coffeeminer-hacking-wifi-cryptocurrency-miner.html'><div class="row postThumb">
199 <h3>CoffeeMiner: Hacking WiFi to inject cryptocurrency miner to HTML requests</h3>
200
201<p>The goal of this post, is to explain how can be done the attack of MITM (Machine-In-The-Middle) to inject some javascript in the html pages, to force all the machines connected to a WiFi network to be mining a cryptocurrency for the attacker.</p>
202
203<p><em>2018-01-04</em></p>
204
205</div>
206
207</a><a href='/blog/flock-botnet.html'><div class="row postThumb">
208 <h3>Auto generated tweets from Markov chains</h3>
209
210<p>Developing a twitter botnet with autonomous bots replying tweets with text generated based on probabilities in Markov chains</p>
211
212<p><em>2017-12-29</em></p>
213
214</div>
215
216</a><a href='/blog/blogo.html'><div class="row postThumb">
217 <h3>Static blog template engine implementation in Go</h3>
218
219<p>How has this blog been made? In this post we will see how to develop a minimalistic static blog template engine with Go.</p>
220
221<p><em>2017-12-26</em></p>
222
223</div>
224
225</a>
226 </div>
227
228 <footer style="text-align:center; margin-top:100px;margin-bottom:50px;">
229 <div class="container">
230 <br>
231 <a href="/blog">Go to main</a>
232 <br><br>
233 <div class="row">
234 <ul class="list-inline">
235 <li><a href="https://twitter.com/arnaucube"
236 style="color:gray;text-decoration:none;"
237 target="_blank">twitter.com/arnaucube</a>
238 </li>
239 <li><a href="https://github.com/arnaucube"
240 style="color:gray;text-decoration:none;"
241 target="_blank">github.com/arnaucube</a>
242 </li>
243 </ul>
244 </div>
245 <div class="row" style="display:inline-block;">
246 Blog made with <a href="http://github.com/arnaucube/blogo/"
247 target="_blank" style="color: gray;text-decoration:none;">Blogo</a>
248 </div>
249 </div>
250 </footer>
251
252 <script>
253 </script>
254 <script src="js/external-links.js"></script>
255 <script>hljs.initHighlightingOnLoad();</script>
256 <script defer src="js/katex/katex.min.js"></script>
257 <script defer src="js/katex/auto-render.min.js"></script>
258 <script>
259 document.addEventListener("DOMContentLoaded", function() {
260 renderMathInElement(document.body, {
261 displayMode: false,
262 // customised options
263 // • auto-render specific keys, e.g.:
264 delimiters: [
265 {left: '$$', right: '$$', display: true},
266 {left: '$', right: '$', display: false},
267 {left: "\\[", right: "\\]", display: true},
268 {left: "\\(", right: "\\)", display: false},
269 {left: "\\begin{equation}", right: "\\end{equation}", display: true}
270 ],
271 // • rendering keys, e.g.:
272 throwOnError : true
273 });
274 });
275
276 ///
277 let theme = localStorage.getItem("theme");
278 if ((theme === "light-theme")||(theme==null)) {
279 theme = "light-theme";
280 document.getElementById("themeSwitcher").checked = false;
281 } else if (theme === "dark-theme") {
282 theme = "dark-theme";
283 document.getElementById("themeSwitcher").checked = true;
284 }
285 document.body.className = theme;
286 localStorage.setItem("theme", theme);
287
288 function switchTheme() {
289 theme = localStorage.getItem("theme");
290 if (theme === "light-theme") {
291 theme = "dark-theme";
292 document.getElementById("themeSwitcher").checked = true;
293 } else {
294 theme = "light-theme";
295 document.getElementById("themeSwitcher").checked = false;
296 }
297 document.body.className = theme;
298 localStorage.setItem("theme", theme);
299
300 console.log(theme);
301 }
302 </script>
303 <script>
304 function tagLinks(tagName) {
305 var tags = document.getElementsByTagName(tagName);
306 for (var i=0, hElem; hElem = tags[i]; i++) {
307 if (hElem.parentNode.className=="row postThumb") {
308 continue;
309 }
310 hElem.id = hElem.innerHTML.toLowerCase().replace(" ", "-");
311 hElem.innerHTML = "<a style='color:black!important;' href='#"+hElem.id+"'>"+hElem.innerHTML+"</a>";
312 }
313 }
314 tagLinks("h2");
315 tagLinks("h3");
316 tagLinks("h4");
317 tagLinks("h5");
318 </script>
319 <script>
320function generateTOC(tocContainerId = "toc") {
321 const tocContainer = document.getElementById(tocContainerId);
322 if (!tocContainer) return;
323
324 const headings = document.querySelectorAll("h2, h3, h4, h5, h6");
325 if (!headings.length) return;
326
327 // Generate IDs if missing
328 headings.forEach((heading, index) => {
329 if (!heading.id) {
330 heading.id =
331 heading.textContent
332 .trim()
333 .toLowerCase()
334 .replace(/[^\w\s-]/g, "")
335 .replace(/\s+/g, "-") +
336 "-" +
337 index;
338 }
339 });
340
341 const toc = document.createElement("ul");
342 let currentLevel = 1;
343 let currentList = toc;
344 const stack = [toc];
345
346 headings.forEach((heading) => {
347 const level = parseInt(heading.tagName.substring(1), 10);
348
349 const li = document.createElement("li");
350 const a = document.createElement("a");
351
352 a.href = "#" + heading.id;
353 a.textContent = heading.textContent;
354
355 li.appendChild(a);
356
357 if (level > currentLevel) {
358 for (let i = currentLevel; i < level; i++) {
359 const nestedList = document.createElement("ul");
360
361 const lastLi =
362 currentList.lastElementChild ||
363 currentList.appendChild(document.createElement("ul"));
364
365 lastLi.appendChild(nestedList);
366
367 stack.push(nestedList);
368 currentList = nestedList;
369 }
370 } else if (level < currentLevel) {
371 for (let i = currentLevel; i > level; i--) {
372 stack.pop();
373 }
374 currentList = stack[stack.length - 1];
375 }
376
377 currentList.appendChild(li);
378 currentLevel = level;
379 });
380
381 tocContainer.innerHTML = "";
382 tocContainer.appendChild(toc);
383}
384
385document.addEventListener("DOMContentLoaded", () => {
386 generateTOC();
387});
388 </script>
389 <script src="js/mermaid.min.js"></script>
390
391 </body>
392</html>
393