Quick anecdote: I've quit RPC services & Eth consensus dev to go full time Solana core dev at
@jump_firedancer
Solana's execution layer & eBPF, was vastly more interesting to me due to its potential.
We exist, but we're rather rare, for the following reasons.
Cosmos and the modular stack is the prob the only meaningful brain drain Ethereum have ever received
It's one hell of a powerful nerdsnipe that Solana, Cardano, and other alt L1s dont have
If you think you have skin in the game, reminder that there's a Solana validator team (not me) that maintained near perfect uptime, persevering through shelling and bombardment, to now building >500+ UAVs for territorial defense taking out modern tanks.
Clarifying some misconceptions about QUIC networking problems on blockchain.
Here's my take:
- QUIC is not inherently vulnerable DDoS (it still sucks)
- Switching to another protocol won't magically fix things
- Short term solution is to harden & fix QUIC servers
You'll be able to run a node from any home DSL once we ship basic improvements to Solana's block propagation protocols.
Pic shows April 21st raw mainnet bandwidth (blue) at ~11 Mbps. Compression brings it down to 4 Mbps (orange).
Philip from the Firedancer team optimized 256-bit Base58 encoding (radix conversion) down to ~300 clock cycles (~100ns).
That's a 10-40x improvement over the Rust libraries!
fd_xdp, Firedancer's high-performance network driver, has landed in main. 🔥💃
Bypassing the Linux networking stack using AF_XDP allows for operation at over 40 Gbps while also staying compatible with existing hardware.
Re blockchain code diversity:
Reproducing complex deterministic software is nigh impossible with typical system programming practices.
It took us over a year to rebuild Solana's SVM and understand it better than anyone else. A quick recap:
Solana goals we should all be aiming for:
- Execution client diversity
- Even greater block producer diversity
- Stateless block production
- <32GB memory for full replay
- <10Mbps p2p bandwidth requirement
- On-demand replay of any chunk of history
- >3x replay speed
Trent walked me through the recent mainnet performance issues in Agave. Almost all of them are fixed by Frankendancer (FD network stack, Agave runtime/consensus), which was released to testnet last BP. Currently going through audits.
This false narrative is just tiring.
Yet again, the facts (as of 2023-04-02):
- Only whitelisted entities can prevent fraud on Arbitrum ¹
- Optimism has no network security; it is a central database with replicas ²
- Polygon PoS supermajority consists of just 11 validators ³…
Excited to share fd_quic and fd_xdp, a scalable kernel-bypass net stack for building QUIC servers 💃🏻
TL;DR: 6Gbps per core / 1.4M streams/s. Still room for optimization.
Introducing Firedancer’s latest technical milestone: fd_quic 🔥💃
A high-performance implementation of the QUIC and Solana transaction ingest network protocols.
1/15
Reed-Solomon faster than your memory bandwidth presented by
@jump_firedancer
🏃🏻
Using AVX512-GFNI (or AVX2) acceleration and an FFT-based algorithm, these make Solana's DA layer and P2P error correction more efficient. (ballpark 20x faster than Solana Labs Rust library 🤯)
@AlgodTrading
@0xMert_
IMO It's more about solving complex challenges with a simple design. Solana has not needed any architecture changes since 2019 and we are now just optimizing its components. Think of it as a classic distributed system (such as the ones trading firms use) with security features…
You can't claim moral high ground by using ARB, OP, MATIC as your shining examples.
Two use a private permissioned security model. The other is secured by 11 nodes.
Mention Ethereum, and you are "naturally self-selected as a security-focused chain builder" 🤣
@zen_llama
K I shouldn’t have phrased it as *any*
I was saying to
@Austin_Federa
in DMs, there’s no magical property of L2s that make them so so can’t go down, ofc. They have the same risks that Solana has.
The main difference between the high profile “Ethereum aligned” L2s (Arb, Op,…
Average week at
@jump_firedancer
:
Kevin releases malloc 2; Network squad writes 100G zero-copy/DMA backend; Philip is scheduling AVX insns on paper and bin-packing L1I cache in his brain; I find out that a Solana slot can actually have more than 64 microblocks 💀
Fuzzing is cool. But symbolically unit testing a component against all possible inputs & constraint checking every intermediary state is cooler. 😎
Applying formal verification via CBMC/minisat2 to
@jump_firedancer
's TLS 1.3 state machine:
There's tech tested at scale for >2y. Now the easy part: Build docs and educate!
I'm not done until:
- More independent core devs than at Solana Labs
- Give Toly a hug
- Make strong devs start new "side projects" that into full-time dev affairs
🚧 WIP:
This week,
@jump_firedancer
received some quality-of-life improvements (1/3):
fd_snapshot, a tool for Solana state snapshot.tar.zst archives. Supports YAML serialization of implicit state and CSV dumping of accounts while streaming from a file or HTTP.
5 years into full time work I'm now feeling the pain of not having a degree. I have massive respect for the people that actually understand math, because it's all moon runes to me.
Wat do now? Books? Sneak into lectures? Online courses? Accept fate?
@R89Capital
Don't care if Solana goes sideways, up, down. Don't care if I get paid. I will finish this validator client because there is nothing more rewarding to me than Eth VCs coping and seething at a 10x faster system lol
Solana mainnet-beta consensus has degraded and currently in vote-only mode. This is a fail-safe mechanism that enables network-wide when finalization stalls. Block production continues but economic activity (non-vote-txns) has effectively halted.
Solana can currently provide enough capacity to execute the vast majority of economic activity on Ethereum and all of its rollups.
Some are still coping with this fact.
Imagine being so bearish and doomer on crypto that thinking one mediocre server can supply the world's demand for crypto
Reminder: web2 runs on 100,000,000 servers, billions of client-side peers also computing
Correct eng'ing solution: fractal scaling w/ validity & fraud proofs
If you work on Solana, you need ImHex – an open-source hex editor with a flexible struct definition language coming from the game reverse engineering scene (
@WerWolv
)
I cherish Twitter's reaction to unrolling a loop for a 5-10% performance improvement:
"wtf", "kinda cool", a floppa meme, and "this is unmaintainable & job security" 🤣
The Solana VM memory map makes me profoundly sad.
Mixed permissions within page. Unmapped pages sprayed into stack area. Input accounts not sufficiently aligned. 10kB of zeros at every account.
We should run sBPF at native speeds, not function call for every memory access!
I want to rewrite the entire Solana program library in optimized C with ACSL annotations, together with
@CantelopePeel
.
C drop-in replacements for slow contracts would eliminate a lot of overhead, not to mention if we change the ABIs.
Solana's eBPF platform is about to declare death to vendor lock-in. The same platform running
- C and Rust via LLVM
- Move via LLVM
- EVM via
@NeonLabsOrg
- Python via
@seahorse_lang
1/3
What if Solana validators kept most of the ~200GB of accounts on disk instead of memory?
We simulated an LRU cache strategy with a 2GB in-memory cache. First results indicate <=1MB/s median cache misses (disk accesses), and <=20MB/s p99.9.
Recently, Solana mainnet state footprint has exceeded ~450 million accounts totalling 221.7 GB.
We don't often look at bandwidth though, so I began extracting data. The amount of state accesses each slot (400ms) are surprisingly low. (Might be underreported)
Last Breakpoint conf, some of
@everstake_pool
devs couldn't attend due to obvious reasons, so they sent over homemade strawberry booze & their local craft beer as gifts instead. Protect them at all costs ♥️
One of my favorite engineering teams to follow atm is
@TigerBeetleDB
. Close to the metal, linear per-core scalability, state-of-the-art fault tolerance, and trad distributed systems eng. 10/10 will satisfy all your C & Zig nerd hunger.
We live in a 🤡🌍 — 🇩🇪 left and green party celebrate shutdown of all nuclear power plants. What we achieved: increased carbon emissions, higher electricity prices, a national security problem amidst a war, and irreversible brain drain of nuclear eng. Depressing.
@0xMert_
Hey
@CoinDesk
@RosiePerper
this is inaccurate – transaction times are 5 times higher on Polygon compared to Solana (~2200ms vs 400ms) and fees are about ~35x more expensive
@0xEdgar
Usually it's not worth optimizing memcpy, but it yielded a surprising improvement in the critical path of SHA-256 for hash chain and hash tree construction. (About 10% in the order of ~10 million nodes per second per core)
LLVM + libFuzzer + rust-fuzz + arbitrary is a godsent combo
Took me 60 mins to throw together coverage-guided differential fuzzing of Firedancer vs Labs runtime. Soo many test cases generated
How did the "next billion users" narrative get so popular? The largest public ledgers struggle to scale to even a million daily users.
Feels like a grift without a demonstrable 1000x improvement in transaction processing performance.
Shoutout to
@0xErre
for "reverse engineering" Solana's ChaCha20-based PRNG. Thanks to his work,
@jump_firedancer
can now derive the Solana mainnet leader schedule. Of course, with better memory and algorithmic efficiency. :) Spec to come!
When hashing <4KB messages, batch processing makes a dramatic difference: 6 Gbps => 20 Gbps speedup possible for
#BLAKE3
when processing 1024 byte messages.
Hoping to release fd_blake3 this week.
For Agave, the tricky part lies in retrofitting external dependencies like quinn and rustls. Their devs are working on it.
This is why we've designed
@jump_firedancer
's custom net stack & QUIC server with these network practices in mind. Pushing hard to bring it to mainnet!
Work: "sorry for putting you on this bytecode format, it's a little undocumented"
>They don't know for the past 2 years, me and my bros have been decompiling Mario Kart Wii into bit-by-bit reproducible C++ so we can play it without an emulator 😭 (this is FUN to me) (15% done)
Was planning to finish my draft on standardizing Solana full history storage which has been cooking with
@triton_one
@protocollabs
since Oct 2022
But I ended up sleeping literally the entire Sunday so here's a teaser instead lmeow. Will be out this week
Large financial institutions interact with Solana more than any other blockchain network.
Success stories in institutional DeFi are written by fundamentals: Reliability, Throughput, Low Latency, and Low Fees
Solana is the only blockchain in the world on which the CBOE, Jane Street, Virtu and 70 other major financial institutions submit txs to every single day.
@PythNetwork
is an onboarding path for financial institutions
Creating an associated token account (ATA) should not require 4 cross-program invocations considering how expensive those are.
This proliferation of invocation spamming has unfortunately become extremely common (and even encouraged by Labs' Token2022).
This shitpost-tier marketing is admittedly funny
But the "modular" corner of the space has not even remotely demonstrated a leap in performance as implied here
@Foobazzler
honestly, I could have done 18 years at Los Alamos National Lab, D.E. Shaw, Bell Labs, and Intel too, written an award winning PhD thesis in electrical engineering and computer science, and programmed supercomputers for kinetic plasma simulation, but I just wasn't feeling the…
The Solana VM memory map makes me profoundly sad.
Mixed permissions within page. Unmapped pages sprayed into stack area. Input accounts not sufficiently aligned. 10kB of zeros at every account.
We should run sBPF at native speeds, not function call for every memory access!
After two weeks hammering at this, I'm very happy to finally move onto the next bottleneck. If there's interest, I'll write a forum post about the optimizations though.
I started writing a draft for a lightweight transport protocol on the weekend. Once the PoC works, I'll explain it in more detail on the forum.
Warning, messy:
A modular stack isn't the reason why the Cosmos space is great at attracting talent (Solana codebase is also somewhat modular).
Cosmos SDK is well documented in a way that Solana isn't, which greatly reduces friction for new researchers/developers.
As a blockchain nerd, super happy to see
@Aptos_Network
thrive lately.
Having been through Libra/Diem testnets and countless validator drills, it was brutal to see the tech slowly die in 2021.
But the same team of engineers pushed on regardless with strong commitment, respect.
Validator operators, please start capturing your TPU ingress so we build models of the transaction spam and backtest improvements to scheduling algorithms
... is what I'd say if pcaps weren't useless due to QUIC packet metadata encryption. I hate QUIC 👍
Sometimes when I'm really proud of a piece of code, KFB gives me that unimpressed look to subconsciously remind me my HPC skills are on par with those of a mcdonalds sprite
Please consider the following
@solanalabs
✅ v1, v2, v3, v4
🚫 Deprecated, Upgradable, X, v3
🚫 v0.23.5, v1.14.11, X
🚫 Legacy, v0
🚫 Legacy, Legacy2, X
(These are all real examples)
Solana core dev frens:
-
@CantelopePeel
: Building Firedancer's eBPF virtual machine & Solana runtime
-
@immaterial_ink
: Solana Go SDK maintainer & building the Solana IPLD/IPFS integration
-
@FS4WyWe9
@acheroncrypto
: Building interactive eBPF debugger with web frontend
Everyone is chipping away at the protocol full speed this week. I'm currently in a feature branch merge hell cleaning up completed work (the software equivalent of washing the dishes) rebasing around 500 commits. Lots of stuff to land main this week.
@dominic_w
This paper is entirely based on findings in a three node test cluster. Even PBFT needs min 4 nodes.
Such a test setting is clearly not appropriate for drawing generalized conclusions.
Stake weight QoS is a band aid at best. An arbitrary and transparent policy for traffic prioritization is better than nothing at all, and that's all that it has going for it.
@aeyakovenko
@dimahledba
@fede_intern
StarkWare lacks neutral credibility, governance is nowhere close to be as decentralized as Solana, hardware requirements too high. StarkWare is definitely interesting engineering wise but lacks fundamental philosophical aspects to be considered as a viable L2 IMO.
Great work by
@brianlong
@linuskendall
@immaterial_ink
& Protocol Labs
The new archive format is easy to parse, verifiable (soon with Firedancer), and support streaming.
Gone are the days of dealing with .tar.zst dumps of RocksDBs 🥶
Solana’s ledger archive history is massive (~225 TB) and growing rapidly.
Until recently, this data was stored on a centralized cloud provider.
@brianlong
, co-founder of
@triton_one
, tells the story of how and why the Solana ledger archive is migrating over to Filecoin ↓
Two opposite experiences I had when I was 18yo:
A) Rewrote non-custodial backend infra of [large crypto exchange], hand it off to their team, get it into prod, get employment offer for $20/hr "not sure how flexible we are, it's great for your age!"
Re RPC APIs: FD won't need have an API for real-time account updates.
Because the funk account cache *is* a shared memory protocol.
I want it no less than entirely transparent, position-independent, and built from lock-free data structures.
Out of principle, just not going to use any network where a token transfer costs more than one cent or has less than 20 known identified block producers
Regardless, I'm experimenting with Agave's networking.
Will draft a replacement for the unscalable Tokio scheduler + quinn async QUIC server with a hand-written mio event loop + quiche packet handling + stake-weight QoS. Gain precise control over allocs & CPU time, remove locks..
(Wall of text warning TL;DR abandoning my side projects)
This isn't my first p2p dev rodeo, but Solana core dev has been more time intensive than I thought.
Every bit of time not spent on the client compounds and will result in delays launching.
And that requires sacrificing…
@tinpham1612
@Austin_Federa
@jump_firedancer
It's hard to say but we are very close (days) to a demo of a block producer running the Firedancer transaction ingest modules (signature verification & dedup).
For the rest, we created milestones on GitHub
Another example is
@protocollabs
, who build reusable open standards to power their products (literally implied by the company name)
The result: IPFS and IPLD have a massive silent adoption rate among web2, probably surpassing even Bitcoin and Ethereum.
No but do you know the brain tingle when you unwind a stack of thoughts faster than you can communicate it but the person you're talking to is on the same wave length, so you go monke instead and exchange thoughts hyper efficiently ,,,,,,
Relentlessly minimize protocol complexity:
- No more native programs, use enshrined eBPF (great work by
@realbuffalojoe
)
- Kill syscalls, find a VM model efficient enough to do cryptography in bytecode
- Use lighter network protocols
SystemProgram can be written entirely in BPF given the current runtime and some minor tweaks. Technically SystemProgram::CreateAccount is just setting an empty account to 0 -> N