RSSAmplifier

Blog

$ cat /dev/blog

Personal blog about software engineer and development mostly in Rust & Java.

sergey-melnychuk.github.ioRSS feed ↗20 posts

Latest posts

I built EVM from scratch. Again.

TL;DR: yevm — (Yield-aware | Yet another) EVM implementation — async-first, WASM-native Ethereum VM in Rust, ~12.7K lines across 8 crates. 99.6% on GeneralStateTests at Cancun, cross-validated against revm on Osaka/Fusaka mainnet. Three application layers on top: in-browser simulation, yevm-lens for decoding execution side effects, and yevm-gate — a local RPC proxy that holds outgoing transactions…

EVM Reentrancy Attack Simulation

TL/DR: reentrancy.rs — a classic reentrancy attack simulated end-to-end inside solenoid, running real Solidity contracts in-process completely locally. 8 ETH drained, full execution trace, no testnet required.

Deterministic Deposit Proxy in Solidity

I built a small full-stack system for deterministic deposit addresses and automated treasury routing on Sepolia.

Elliptic Curves math in Rust

TL/DR: ecc - porting “Elliptic Curve Cryptography for Developers” from C/GMP to Rust, chapter by chapter. From modular arithmetic to a working SNARK in ~3700 lines.

Ethereum VM impl from scratch in Rust

TL/DR: solenoid - lightweight, async-first, WASM-friendly Ethereum VM implementation in Rust. ~6800 lines of code, processes real mainnet blocks, runs in a browser. Try it live!

Learning Zero-Knowledge Proofs

TL/DR: ZKP - a learning journey through zero-knowledge proof systems: Groth16, PLONK, and Halo2. Same problem, three frameworks, one surprising insight.

Pooling Around with AI

This is me joining the crowd of self-proclaimed AI experts (thank you LinkedIn for showing me posts of people doing every obvious thing you can do with AI).

YAKVDB gets brand new CLI

I was calmly sleeping in my bed the other night, everything was fine, and then…

Beerus in 2024

The 2024 is almost over and it is time to look back and summarise the whole year of progress on Beerus.

Learning ECDSA with arkworks-rs

While I was doing-some-blockchain recently, I have found out that Elliptic Curve algebra does not seem to fit easily into u128, so this is a second attepmt, now done properly, using arkworks-rs.

Get rid of typos with typos

Typos in code and comments can be annoying. But they don’t have to be, with typos it is super easy to introduce automated typos checking (and fixing).

Recursive SQL queries over tree

Some 10+ years ago on a job interview I was asked to query the database for the comments tree in a front-end friendly way, meaning no heavy processing/sorting to happen on the back-end. Turns out this question was to check if I knew about the Hierarchical Queries with Oracle (WITH RECURSIVE on other databases), which I did not back then.

What Actor Model is really about

TL/DR: read [1] and watch [2]: Actor Model of Computation The Actor Model (Hewitt, Meijer, Szyperski)

Cloudflare Workers setup and usage

TL;DR: See sergey-melnychuk/project-one. INFO: Optional fields missing from Cargo.toml: ‘description’, ‘repository’, and ‘license’. These are not necessary, but recommended INFO: ✨ Done in 2.43s INFO: 📦 Your wasm pkg is ready to publish at /home/work/Temp/project-one/build.

AWS Lambda memory usage

AWS Lambda shows memory peak-usage, but when memory usage hits the limit, breaking down where exactly too much memory is being used might be a very useful things. The runtime is kind of a black box (at least in my understanding), so any telemetry/measurements need to be baked into the function. For this example, I only describe an approach useful for Rust runtime.

The mythical 10x engineer

The 10x engineer - whole industry was discussing it, laughing at it, learning how to become it quite for some time. Googling “10x engineer” gives tons of content (as probably with any other catch-phrase), including some stuff to watch and read. Quite a lot whas told & written about it, but I feel the World needs one more post on the topic!

Argumentz: small & simple command-line arguments parser in Java

Every now and then there is a need to pass arguments to the command-line application. While there are a lot of libraries/frameworks to do that in Java, I still had this feeling “why such an easy thing must be so cumbersome and require so much boilerplate?”.

Multi-threaded HTTP/WebSocket server in Rust

Building up on my previous posts about MIO-based server and parser combinators, this post is about making a very simple HTTP server capable of running on multiple threads and implementing WebSocket protocol.

Throttling dispatcher in Go

One evening I was thinking why don’t I implement throttling dispatcher in Go. I even had to find “The Go Programming Language” book on the shelf, it was waiting for this for more than a year.

Monadic parser combinators in Rust

Why don’t I implement a nice monadic parser combinator library in Rust? That’s what my thought was when after implementing low-level mock-HTTP server in MIO and actually needed to parse the bytes received by server.