arnaucube.com/index.html
index.htmlRaw
1<!doctype html>
2
3<html lang="en">
4
5<head>
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width, initial-scale=1">
8
9 <title>arnaucube</title>
10 <meta name="description" content="arnaucube, arnaucube software developer">
11 <meta name="keyword" content="arnaucube, arnaucode, arnau, cube, software, developer, portfolio, computer, science, electronics, telecomunications, engineer">
12 <link rel="icon" type="image/png" href="img/logoArnauCubeFavicon.png">
13
14 <style>
15 :root {
16 --bg: #ffffff;
17 --text: #1d3557;
18 --muted: #58708e;
19 --link: #4d9aa1;
20 --code: #4d9aa1;
21 --card: #ffffff;
22 }
23 body.dark-theme {
24 --bg: #0f0f10;
25 --text: #e9e9ea;
26 --muted: #a9a9ad;
27 --link: #4d9aa1;
28 --code: #4d9aa1;
29 --card: #0f0f10;
30 }
31 body {
32 overflow-x: hidden;
33 background: var(--bg);
34 color: var(--text);
35 font-family: "Avenir Next", "Montserrat", "Helvetica Neue", "Segoe UI", Arial, sans-serif;
36 font-size:100%;
37 margin: 0;
38 }
39
40 a,
41 a:hover,
42 a:focus,
43 a:active {
44 color: var(--link);
45 text-decoration:none;
46 }
47 ul{
48 margin-top:0px;
49 }
50 li{
51 margin-top: 5px;
52 }
53 code {
54 font-size: 130%!important;
55 color: var(--code)!important;
56 }
57 .recentwork{
58 color: var(--link)!important;
59 text-decoration: underline;
60 }
61 .gray{
62 color: var(--muted);
63 }
64 h3 {
65 margin-bottom: 2px;
66 }
67 h4 {
68 margin-bottom: 2px;
69 }
70 .recent-work-box{
71 background: transparent;
72 border-radius: 0;
73 padding-left: 20px;
74 padding-right: 20px;
75 padding-bottom: 10px;
76 margin: 10px;
77 }
78 .main {
79 margin: 0 auto;
80 max-width: 760px;
81 padding: 20px;
82 }
83 .theme-toggle {
84 /*position: sticky;*/
85 top: 12px;
86 float: right;
87 z-index: 2;
88 background: var(--card);
89 color: var(--text);
90 border: 1px solid var(--muted);
91 border-radius: 999px;
92 width: 30px;
93 height: 30px;
94 font-size: 16px;
95 line-height: 1;
96 padding: 0;
97 cursor: pointer;
98 }
99 @media only screen and (min-width: 450px) {
100 .tresd{
101 z-index: -2;
102 position: absolute;
103 left:30%!important;
104 top:25%;
105 }
106 }
107 @media only screen and (max-width: 450px) {
108 .tresd{
109 z-index: -2;
110 position: absolute;
111 left:0%;
112 top:25%;
113 }
114 }
115
116
117 * {
118 box-sizing: border-box;
119 }
120 .column {
121 width: 100%;
122 padding: 0;
123 margin: 0;
124 float: none;
125 }
126 @media only screen and (max-width: 700px) {
127 .main {
128 padding: 14px;
129 }
130 }
131 </style>
132</head>
133
134<body>
135 <div class="main">
136 <button id="theme-toggle" class="theme-toggle" type="button" aria-label="Toggle theme">☀</button>
137
138 <!-- <div id="tresd" style="z-index: -2; position: absolute; top:25%;"></div> -->
139 <!-- <div id="tresd" style="z-index: -2; position: absolute; left:0%;top:25%;"></div> -->
140 <div id="tresd" class="tresd"></div>
141
142 <div style="margin-top: 0;">
143 <div class="row">
144 <div class="column">
145
146 <div style="float:left;">
147 <img src="img/logoArnauCube_transparent.png" style="max-width: 100px;margin-top:30px;" \>
148 </div>
149 <br>
150 <div style="display:inline-block;max-width:500px; margin-left:10%;">
151 <!-- <div style="float:right; max-width:500px;"> -->
152 <p><b>arnaucube</b> - cryptography engineer</p>
153 <span style="font-size:110%;">
154 <a href="/blog">blog</a>
155 <span style="margin: 10px;">|</span>
156 <a href="/blog/notes.html">notes</a>
157 <span style="margin: 10px;">|</span>
158 <a href="https://github.com/arnaucube" target="_blank">github</a>
159 <span style="font-style:italic;">(<a href="https://git.arnaucube.com/arnaucube?sort=moststars" target="_blank">git-mirror</a>)</span>
160 <span style="margin: 10px;">|</span>
161 <a href="https://twitter.com/arnaucube" target="_blank">twitter</a>
162 </span>
163 </div>
164
165 <br><br>
166 <div style="margin:30px;">
167 Some of the projects I've enjoyed working on over these past years:<br>
168 <ul>
169 <li>
170 <i>Folding schemes</i> implementations such as Nova, HyperNova, ProtoGalaxy, CycleFold in the
171 <a href="https://github.com/privacy-ethereum/sonobe" target="_blank">Sonobe</a> library
172 </li>
173 <li>
174 <i>Commitment schemes</i> such as
175 <a href="https://github.com/arnaucube/kzg-commitments-study" target="_blank">KZG10</a>,
176 <a href="https://github.com/arnaucube/fri-commitment" target="_blank">FRI</a>,
177 <a href="https://github.com/arnaucube/ipa-rs" target="_blank">IPA</a>
178 </li>
179 <li>
180 Elliptic curve <i>signature schemes</i> such as
181 <a href="https://github.com/arnaucube/ring-signatures-rs" target="_blank">bLSAG ring signatures</a>
182 and <a href="https://github.com/aragonzkresearch/ark-ec-blind-signatures" target="_blank">blind signatures</a>
183 </li>
184 <li>
185 other <i>cryptographic primitives</i> such as
186<a href="https://github.com/arnaucube/go-snark-study" target="_blank">go-snark</a> lib,
187<a href="https://github.com/vocdoni/arbo" target="_blank">arbo</a> (CPU-parallelized MerkleTree),
188 <a href="https://github.com/arnaucube/babyjubjub-rs" target="_blank">BabyJubJub</a> elliptic curve, <a href="https://github.com/arnaucube/poseidon-rs" target="_blank">Poseidon</a> hash
189 </li>
190 <li>
191 zk <i>circuits</i> such as <a
192 href="https://github.com/vocdoni/keccak256-circom"
193 target="_blank">keccak256-circom</a>,
194<a href="https://github.com/vocdoni/zk-franchise-proof-circuit/tree/9d25884142f0018746326d5f8c3ac714fe844edd" target="_blank">census-proof</a>
195 </li>
196 <li>
197 some voting system <i>designs & implementations</i> <a
198 href="https://github.com/aragonzkresearch/research/blob/main/ovote/ovote.pdf"
199 target="_blank">OVOTE</a> and <a
200href="https://github.com/aragonzkresearch/research/blob/main/blind-ovote/blind-ovote.pdf"
201target="_blank">Blind-OVOTE</a>.
202 </li>
203 <li>
204 <i>FHE (full-homomorphic encryption)</i> schemes such as CKKS, BFV, TFHE at <a href="https://github.com/arnaucube/fhe-study" target="_blank">fhe-study</a>.
205 </li>
206 </ul>
207 <!--
208 Interested on implementing cryptographic primitives (both rust libraries and zk circuits).
209Examples of things I've enjoyed working on these past years:
210
211- Rust libraries: various folding schemes implementations (Nova, HyperNova, ProtoGalaxy, CycleFold) (which included also implementing circuits), various commitment schemes (KZG, IPA, FRI), various signature schemes.
212- zk circuits: various elliptic curve signature schemes, keccak256 hash function in circom.
213
214Maybe a common denominator from all the above would be: deep rabbit hole to dive into, requiring math understanding together with coding knowledge; ie. take a paper - study it - implement it.
215 -->
216 </div>
217
218 <br>
219 </div>
220
221 <!-- <br><br><br> -->
222 <!-- <hr style="width:70%;"> -->
223 <!-- <br><br> -->
224
225 <div class="column" style="font-size:100%;">
226 <h2>Recent <b>Work</b>:</h2>
227
228 <div class="recent-work-box">
229 <h4 class="gray">2023 - now</h4>
230 <!-- 2023 -->
231 <h3 style="display:inline;"><a href="https://research.0xparc.org" target="_blank" class="recentwork">0xPARC Research</a> -</h3>
232 <i style="display:inline;">Applied cryptography research</i>
233 <br>
234 Research and implementations of folding schemes.
235 <ul>
236 <li>
237 <span class="gray">privacy-ethereum/</span><a href="https://github.com/privacy-ethereum/sonobe" target="_blank">sonobe</a>: folding schemes modular library. Implemented Nova, CycleFold, HyperNova and part of ProtoGalaxy. Also designed the onchain verification approach which allowed Sonobe to be the first folding schemes library to achieve verifying folding proofs in Ethereum.
238 <ul><li><a href="https://github.com/privacy-ethereum/sonobe" target="_blank">sonobe</a>, <a href="https://privacy-ethereum.github.io/sonobe-docs" target="_blank">sonobe-docs</a></li></ul>
239 </li>
240 <li>
241 <a href="https://github.com/arnaucube/protogalaxy-poc" target="_blank">protogalaxy-poc</a>: ProtoGalaxy folding scheme proof of concept implementation
242 </li>
243 <li>
244 <span class="gray">privacy-scaling-explorations/</span><a href="https://github.com/privacy-scaling-explorations/multifolding-poc" target="_blank">multifolding-poc</a>: HyperNova folding scheme proof of concept implementation
245 </li>
246 </div>
247
248 <!-- <hr style="width:40%;margin-left:0;margin-bottom:30px;margin-top:20px;"> -->
249
250 <div class="recent-work-box">
251 <h4 class="gray">2022 - 2023</h4>
252 <!-- 2022 - 2023 -->
253 <h3 style="display:inline;"><a href="https://vocdoni.io" target="_blank" class="recentwork">Vocdoni</a> & <a href="https://research.aragon.org/about/" target="_blank" class="recentwork">Aragon-ZK-Research</a> -</h3>
254 <i style="display:inline;">Decentralized governance & voting tooling.</i>
255 <br>
256 Design and implementation of voting schemes using zkSNARKs and other cryptographic schemes.
257 <!-- Design and implementation of <a href="https://docs.vocdoni.io/architecture/protocol/anonymous-voting/zk-census-proof.html#implementation-spec" target="_blank">anonymous voting solutions</a> using zkSNARKs. -->
258 <!-- Introduced <a href="https://github.com/vocdoni/protocol/discussions/23" target="_blank">some</a> design <a href="https://github.com/vocdoni/zk-franchise-proof-circuit/commit/2efeecc12669279dcf493bd9c782ba80b3c87dc8" target="_blank">optimizations</a> in the circuits which reduced the number of constraints. -->
259 <!-- <br>Also, contributed to <span class="gray">vocdoni/</span><a href="https://github.com/vocdoni/vocdoni-node/commits?author=arnaucube" target="_blank">vocdoni-node</a> adding zk related code. -->
260 <!-- <br> -->
261 <!-- Other stuff implemented: -->
262 <br>
263 <ul>
264 <li>
265 <span class="gray">vocdoni/</span><a href="https://github.com/vocdoni/keccak256-circom" target="_blank">keccak256-circom</a>: ethereum sha3 (keccak256) hash function implemented in Circom
266 </li>
267 <li>
268 <span class="gray">vocdoni/</span><a href="https://github.com/vocdoni/zk-franchise-proof-circuit" target="_blank">zk-census-proof</a>: anonymous census proof circuit used in Vocdoni's Blockchain
269 <ul>
270 <li>
271 <span class="gray">aragonzkresearch/</span><a href="https://github.com/aragonzkresearch/ark-anon-vote" target="_blank">ark-anon-vote</a>: (similar design, implemented in arkworks) onchain anonymous voting snark circuit.
272 </li>
273 </ul>
274 </li>
275 <li>
276 <span class="gray">vocdoni/</span><a href="https://github.com/vocdoni/arbo" target="_blank">arbo</a>: optimized MerkleTree which parallelizes by CPUs for faster computation, compatible with circomlib implementation
277 </li>
278 <li>
279 <span class="gray">aragonzkresearch/</span><a href="https://github.com/aragonzkresearch/ark-ec-blind-signatures" target="_blank">ark-ec-blind-signatures</a>: Blind signatures over elliptic curve implementation (native & r1cs constraints)
280 </li>
281 </ul>
282 <span style="">OVOTE</span>: Offchain Voting with Onchain Trustless Execution (kind of a validity-Rollup for voting)
283 <ul>
284 <li>
285 <a href="https://research.aragon.org/docs/ovote" target="_blank">OVOTE technical document</a>
286 </li>
287 <li>
288 <a href="https://forum.aragon.org/t/we-present-ovote-offchain-voting-with-onchain-trustless-execution/3603" target="_blank">Forum post</a> with a high level explanation.
289 </li>
290 <li>
291 <span class="gray">aragonzkresearch/</span><a href="https://github.com/aragonzkresearch/ovote" target="_blank">ovote</a>: implementation of the OVOTE circuits, smart contracts & libs
292 </li>
293 <li>
294 <span class="gray">aragonzkresearch/</span><a href="https://github.com/aragonzkresearch/ovote-node" target="_blank">ovote-node</a>: OVOTE backend node implemented in Go
295 </li>
296 </ul>
297 <span style="">Blind-OVOTE</span>: (OVOTE with Blind Signatures) L2 validity rollup combined with blind signatures over elliptic curves inside zkSNARK, to provide offchain anonymous voting with onchain binding execution on Ethereum
298 <ul>
299 <li>
300 <a href="https://research.aragon.org/docs/blind-ovote" target="_blank">Blind-OVOTE technical document</a>
301 </li>
302 <li>
303 <a href="https://forum.aragon.org/t/blind-ovote-ovote-with-blind-signatures-for-voter-anonymity/3881" target="_blank">Forum post</a> with a high level explanation.
304 </li>
305 <li>
306 <span class="gray">aragonzkresearch/</span><a href="https://github.com/aragonzkresearch/blind-ovote" target="_blank">blind-ovote</a>: Blind-OVOTE implementation in arkworks.
307 </li>
308 </ul>
309 </div>
310 <!-- <hr> -->
311 <!-- <hr style="width:40%;margin-left:0;margin-bottom:30px;margin-top:20px;"> -->
312 <div class="recent-work-box">
313 <h4 class="gray">2018 - 2022</h4>
314 <!-- 2021 - 2022 -->
315 <h3 style="display:inline;"><a href="https://hermez.io" target="_blank" class="recentwork">Hermez zkRollup</a> -</h3>
316 <i style="display:inline;"> Decentralized zkRollup on Ethereum.</i><br>
317 Main task has been to implement the Hermez node,
318 used to <a href="https://cointelegraph.com/news/hermes-network-launches-zk-rollups-on-ethereum-mainnet-to-process-cheap-payments"
319 target="_blank">launch the mainnet</a> of the zkRollup network (1.0):
320 <br><span style="margin-left:30px;"></span> <span class="gray">hermeznetwork/</span><a href="https://github.com/arnaucube/hermez-node" target="_blank">hermez-node</a>
321 <br>My focus has been mainly in the TxSelector, TxProcessor (managing
322 the rollup state tree) and BatchBuilder (generating the data
323 structure compatible with the zkSNARK circuits to do the proof generation).
324 <!-- </div> -->
325 <!-- <hr> -->
326 <!-- <hr style="width:40%;margin-left:0;margin-bottom:30px;margin-top:20px;"> -->
327 <!-- <div class="recent-work-box"> -->
328 <!-- 2018 - 2021 -->
329 <br><br>
330 <h3 style="display:inline;"><a href="https://iden3.io" target="_blank" class="recentwork">iden3</a> -</h3>
331 <i style="display:inline;"> Scalable decentralized identity system with privacy by using zero knowledge proofs.</i><br>
332 Design and specify the core protocol, develop the core libraries, servers, zk circom circuits and zkSNARK Groth16 Go prover.
333 <ul>
334 <li>
335 <span class="gray">iden3/</span><a href="https://github.com/iden3/go-iden3-crypto" target="_blank">go-iden3-crypto</a>: cryptographic primitives (SNARK-friendly) used in iden3 </li>
336 <li>
337 <span class="gray">iden3/</span><a href="https://github.com/iden3/go-iden3-core" target="_blank">go-iden3-core</a>: core implementation of the iden3 system
338 </li>
339 <li>
340 <span class="gray">iden3/</span><a href="https://github.com/iden3/go-circom-prover-verifier" target="_blank">go-circom-prover-verifier</a>: implementation of the Groth16 zkSNARK Prover and Verifier compatible with Circom
341 </li>
342 <li>
343 <span class="gray">iden3/</span><a href="https://github.com/iden3/circuits" target="_blank">circuits</a>: zkSNARK circuits used by the iden3 core protocol
344 </li>
345 </ul>
346
347</div>
348
349<div style="font-size:80%;">
350 <h2>Some other <b>free time</b> side projects:</h2>
351 <ul>
352 <li>
353 <a href="https://github.com/arnaucube/go-snark-study" target="_blank">go-snark-study</a>: <code>Go</code> zkSNARK implementation from scratch (compiler, setup, prover, verifier)
354 </li>
355 <li>
356 <a href="https://github.com/arnaucube/go-bellman-verifier" target="_blank">go-bellman-verifier</a>: <code>Go</code> Groth16 zkSNARK bellman proof verifier using cloudflare/bn256 Pairing
357 </li>
358 <li>
359 <a href="https://github.com/arnaucube/babyjubjub-rs" target="_blank">babyjubjub-rs</a>: BabyJubJub elliptic curve implementation in <code>Rust</code>
360 </li>
361 <li>
362 <a href="https://github.com/arnaucube/kzg-commitments-study" target="_blank">kzg-commitments</a>: Kate-Zaverucha-Goldberg (KZG10) Polynomial Commitments in <code>Go</code>
363 </li>
364 <li>
365 <a href="https://github.com/arnaucube/fri-commitment" target="_blank">fri-commitment</a>: FRI polynomial commitment in <code>Rust</code>
366 </li>
367 <li>
368 <a href="https://github.com/arnaucube/ipa-rs" target="_blank">ipa-rs</a>: modified Inner Product Argument (IPA) version from Halo paper in <code>Rust</code> using arkworks.
369 </li>
370 <li>
371 <a href="https://github.com/arnaucube/ring-signatures-rs" target="_blank">ring-signatures-rs</a>: bLSAG ring signatures implementation in <code>Rust</code>
372 </li>
373 <li>
374 <a href="https://github.com/arnaucube/poseidon-rs" target="_blank">poseidon-rs</a>: Poseidon hash implementation in <code>Rust</code>
375 </li>
376 <li>
377 <a href="https://github.com/arnaucube/go-blindsecp256k1" target="_blank">go-blindsecp256k1</a>: Blind signatures over secp256k1 elliptic curve in <code>Go</code> <i>(with the <a href="https://github.com/arnaucube/blindsecp256k1-js" target="_blank">compatible typescript implementation</a>)</i>
378 </li>
379 <!-- </ul> -->
380 <!-- Other: -->
381 <!-- <ul> -->
382 <!-- <li> -->
383 <!-- <a href="https://github.com/arnaucube/evm-rs" target="_blank">evm-rs</a>: Ethereum Virtual Machine in <code>Rust</code> -->
384 <!-- </li> -->
385 <!-- <li> -->
386 <!-- <a href="https://github.com/arnaucube/go-dht" target="_blank">go-dht</a>: Kademlia DHT implementation in <code>Go</code> -->
387 <!-- </li> -->
388 <li>
389 <a href="https://github.com/arnaucube/merkletree-rs" target="_blank">merkletree-rs</a>: Sparse MerkleTree implementation in <code>Rust</code> (also a <code>Go</code> impl <a href="https://github.com/arnaucube/go-merkletree" target="_blank">go-merkletree</a>)
390 </li>
391 <li>
392 <a href="https://github.com/arnaucube/shamirsecretsharing" target="_blank">shamirsecretsharing</a>: Shamir's Secret Sharing <code>Rust</code> & <code>Go</code> implementation + <code>WASM</code> lib
393 </li>
394 <!-- <li> -->
395 <!-- <a href="https://github.com/arnaucube/cryptofun" target="_blank">cryptofun</a>: Crypto algorithms from scratch, in order to get familiar with them from inside. For example: ECC, Paillier, RSA, Homomorphic computation, ElGamal, Schnorr, ECDSA, BN128, ... -->
396 <!-- </li> -->
397 <li>
398 <a href="https://github.com/arnaucube/evm-rs" target="_blank">evm-rs</a>: partial implementation of the Ethereum Virtual Machine (EVM) in <code>Rust</code>
399 </li>
400 <li>
401 <a href="https://kvartalo.github.io/website/" target="_blank">kvartalo</a>: a local social cryptocurrency for neigbourhoods, that we used in a Barcelona neighbourhood as experiment during few months. Build on top of Ethereum blockchain & Tendermint Core
402 </li>
403 <li>
404 <a href="https://github.com/arnaucube/chip8-rs" target="_blank">chip8-rs</a>: CHIP-8 virtual machine emulator written in <code>Rust</code> (also a <code>Go</code> impl <a href="https://github.com/arnaucube/go-chip8" target="_blank">go-chip8</a>)
405 </li>
406 <li>
407 <a href="https://github.com/arnaucube/fft-rs" target="_blank">fft-rs</a>: Fast Fourier Transform (FFT) implementation in <code>Rust</code>
408 </li>
409 <li>
410 <a href="https://github.com/arnaucube/miksi-core" target="_blank">miksi</a>: Ethereum zk-coin-mixer where all the computation & constructions are done offchain and then proved inside a zkSNARK to the smart-contract. <i><a href="https://arnaucube.github.io/miksi-app/" target="_blank">(live demo on testnet)</a></i>
411 </li>
412 <li>
413 <a href="https://github.com/arnaucube/eth-kzg-ceremony-alt" target="_blank">eth-kzg-ceremony-alt</a>: Alternative implementation of the contributor-client for the Ethereum KZG Trusted Setup Ceremony
414 </li>
415 </ul>
416
417 More projects directly in github: <a href="https://github.com/arnaucube?tab=repositories" target="_blank">https://github.com/arnaucube</a> <i>(Mirror of all the repos at: <a href="https://git.arnaucube.com/arnaucube?sort=moststars" target="_blank">https://git.arnaucube.com</a>)</i>.
418 </div>
419
420 <br><br><br>
421 <p style="padding:0;margin:0;font-size:120%;">
422 <a href="blog/index.html">blog</a>
423 <span style="margin: 10px;">|</span>
424 <a href="https://github.com/arnaucube" target="_blank">github</a>
425 <span style="font-style:italic;">(<a href="https://git.arnaucube.com/arnaucube?sort=moststars" target="_blank">git-mirror</a>)</span>
426 <span style="margin: 10px;">|</span>
427 <a href="https://twitter.com/arnaucube" target="_blank">twitter</a>
428 </p>
429 <br><br>
430 <img src="img/email.png" />
431
432
433
434
435 <!-- <hr> -->
436 <!-- <br> -->
437 </div>
438
439 </div>
440 </div>
441 </div>
442
443
444 <!-- threejs -->
445 <script src="js/three.min.js"></script>
446 <script src="js/Detector.js"></script>
447 <script src="js/tresd.min.js"></script>
448 <!-- <script src="js/tresd.js"></script> -->
449 <script>
450 const toggleButton = document.getElementById("theme-toggle");
451 let savedTheme = localStorage.getItem("theme");
452 if (savedTheme === "dark") {
453 savedTheme = "dark-theme";
454 }
455 if (savedTheme !== "dark-theme") {
456 savedTheme = "light-theme";
457 }
458 document.body.classList.remove("light-theme", "dark-theme");
459 document.body.classList.add(savedTheme);
460 toggleButton.innerHTML = savedTheme === "dark-theme" ? "☾" : "☀";
461
462 toggleButton.addEventListener("click", function () {
463 const currentTheme = localStorage.getItem("theme") === "dark-theme" ? "dark-theme" : "light-theme";
464 const nextTheme = currentTheme === "dark-theme" ? "light-theme" : "dark-theme";
465 document.body.classList.remove("light-theme", "dark-theme");
466 document.body.classList.add(nextTheme);
467 localStorage.setItem("theme", nextTheme);
468 toggleButton.innerHTML = nextTheme === "dark-theme" ? "☾" : "☀";
469 });
470
471 tresd = "cube";
472 init();
473 animate();
474 </script>
475</body>
476
477</html>