Brendan K. Chou

307 posts

Brendan K. Chou

Brendan K. Chou

@B_Chou

On the Internet, nobody knows you're a dog. Eng @commonwarexyz

Brooklyn, NY شامل ہوئے Haziran 2011
0 فالونگ882 فالوورز
Brendan K. Chou ری ٹویٹ کیا
vitalik.eth
vitalik.eth@VitalikButerin·
One important technical item that I forgot to mention is the proposed switch from Casper FFG to Minimmit as the finality gadget. To summarize, Casper FFG provides two-round finality: it requires each attester to sign once to "justify" the block, and then again to "finalize" it. Minimmit only requires one round. In exchange, Minimmit's fault tolerance (in our parametrization) drops to 17%, compared to Casper FFG's 33%. Within Ethereum consensus discussions, I have always been the security assumptions hawk: I've insisted on getting to the theoretical bound of 49% fault tolerance under synchrony, kept pushing for 51% attack recovery gadgets, came up with DAS to make data availability checks dishonest-majority-resistant, etc. But I am fine with Minimmit's properties, in fact even enthusiastic in some respects. In this post, I will explain why. Let's lay out the exact security properties of both 3SF (not the current beacon chain, which is needlessly weak in many ways, but the ideal 3SF) and Minimmit. "Synchronous network" means "network latency less than 1/4 slot or so", "asynchronous network" means "potentially very high latency, even some nodes go offline for hours at a time". The percentages ("attacker has <33%") refer to percentages of active staked ETH. ## Properties of 3SF Synchronous network case: * Attacker has p < 33%: nothing bad happens * 33% < p < 50%: attacker can stop finality (at the cost of losing massive funds via inactivity leak), but the chain keeps progressing normally * 50% < p < 67%: attacker can censor or revert the chain, but cannot revert finality. If an attacker censors, good guys can self-organize, they can stop contributing to a censoring chain, and do a "minority soft fork" * p > 67%: attacker can finalize things at will, much harder for good guys to do minority soft fork Asynchronous network case: * Attacker has p < 33%: cannot revert finality * p > 33%: can revert finality, at the cost of losing massive funds via slashing ## Properties of Minimmit Synchronous network case: * Attacker has p < 17%: nothing bad happens * 17% < p < 50%: attacker can stop finality (at the cost of losing massive funds via inactivity leak), but the chain keeps progressing normally * 50% < p < 83%: attacker can censor or revert the chain, but cannot revert finality. If an attacker censors, good guys can self-organize, they can stop contributing to a censoring chain, and do a "minority soft fork" * p > 83%: attacker can finalize things at will, much harder for good guys to do minority soft fork Asynchronous network case: * Attacker has p < 17%: cannot revert finality * p > 17%: can revert finality, at the cost of losing massive funds via slashing I actually think that the latter is a better tradeoff. Here's my reasoning why: * The worst kind of attack is actually not finality reversion, it's censorship. The reason is that finality reversion creates massive publicly available evidence that can be used to immediately cost the attacker millions of ETH (ie. billions of dollars), whereas censorship requires social coordination to get around * In both of the above, a censorship attack requires 50% * A censorship attack becomes *much harder* to coordinate around when the censoring attacker can unilaterally finalize (ie. >67% in 3SF, >83% in Minimmit). If they can't, then if the good guys counter-coordinate, you get two non-finalizing chains dueling for a few days, and users can pick on. If they can, then there's no natural schelling point to coordinate soft-forking * In the case of a client bug, the worst thing that can happen is finalizing something bugged. In 3SF, you only need 67% of clients to share a bug for it to finalize, in Minimmit, you need 83%. Basicallly, Minimmit maximizes the set of situations that "default to two chains dueling each other", and that is actually a much healthier and much more recoverable outcome than "the wrong thing finalizing". We want finality to mean final. So in situations of uncertainty (whether attacks or software bugs), we should be more okay with having periods of hours or days where the chain does not finalize, and instead progresses based on the fork choice rule. This gives us time to think and make sure which chain is correct. Also, I think the "33% slashed to revert finality" of 3SF is overkill. If there is even eg. 15 million ETH staking, then that's 5M ($10B) slashed to revert the chain once. If you had $10B, and you are willing to commit mayhem of a type that violates many countries' computer hacking laws, there are FAR BETTER ways to spend it than to attack a chain. Even if your goal is breaking Ethereum, there are far better attack vectors. And so if we have the baseline guarantee of >= 17% slashed to revert finality (which Minimmit provides), we should judge the two systems from there based on their other properties - where, for the reasons I described above, I think Minimmit performs better.
vitalik.eth@VitalikButerin

Finally, the block building pipeline. In Glamsterdam, Ethereum is getting ePBS, which lets proposers outsource to a free permissionless market of block builders. This ensures that block builder centralization does not creep into staking centralization, but it leaves the question: what do we do about block builder centralization? And what are the _other_ problems in the block building pipeline that need to be addressed, and how? This has both in-protocol and extra-protocol components. ## FOCIL FOCIL is the first step into in-protocol multi-participant block building. FOCIL lets 16 randomly-selected attesters each choose a few transactions, which *must* be included somewhere in the block (the block gets rejected otherwise). This means that even if 100% of block building is taken over by one hostile actor, they cannot prevent transactions from being included, because the FOCILers will push them in. ## "Big FOCIL" This is more speculative, but has been discussed as a possible next step. The idea is to make the FOCILs bigger, so they can include all of the transactions in the block. We avoid duplication by having the i'th FOCIL'er by default only include (i) txs whose sender address's first hex char is i, and (ii) txs that were around but not included in the previous slot. So at the cost of one slot delay, only censored txs risk duplication. Taking this to its logical conclusion, the builder's role could become reduced to ONLY including "MEV-relevant" transactions (eg. DEX arbitrage), and computing the state transition. ## Encrypted mempools Encrypted mempools are one solution being explored to solve "toxic MEV": attacks such as sandwiching and frontrunning, which are exploitative against users. If a transaction is encrypted until it's included, no one gets the opportunity to "wrap" it in a hostile way. The technical challenge is: how to guarantee validity in a mempool-friendly and inclusion-friendly way that is efficient, and what technique to use to guarantee that the transaction will actually get decrypted once the block is made (and not before). ## The transaction ingress layer One thing often ignored in discussions of MEV, privacy, and other issues is the network layer: what happens in between a user sending out a transaction, and that transaction making it into a block? There are many risks if a hostile actor sees a tx "in the clear" inflight: * If it's a defi trade or otherwise MEV-relevant, they can sandwich it * In many applications, they can prepend some other action which invalidates it, not stealing money, but "griefing" you, causing you to waste time and gas fees * If you are sending a sensitive tx through a privacy protocol, even if it's all private onchain, if you send it through an RPC, the RPC can see what you did, if you send it through the public mempool, any analytics agency that runs many nodes will see what you did There has recently been increasing work on network-layer anonymization for transactions: exploring using Tor for routing transactions, ideas around building a custom ethereum-focused mixnet, non-mixnet designs that are more latency-minimized (but bandwidth-heavier, which is ok for transactions as they are tiny) like Flashnet, etc. This is an open design space, I expect the kohaku initiative @ncsgy will be interested in integrating pluggable support for such protocols, like it is for onchain privacy protocols. There is also room for doing (benign, pro-user) things to transactions before including them onchain; this is very relevant for defi. Basically, we want ideal order-matching, as a passive feature of the network layer without dependence on servers. Of course enabling good uses of this without enabling sandwiching involves cryptography or other security, some important challenges there. ## Long-term distributed block building There is a dream, that we can make Ethereum truly like BitTorrent: able to process far more transactions than any single server needs to ever coalesce locally. The challenge with this vision is that Ethereum has (and indeed a core value proposition is) synchronous shared state, so any tx could in principle depend on any other tx. This centralizes block building. "Big FOCIL" handles this partially, and it could be done extra-protocol too, but you still need one central actor to put everything in order and execute it. We could come up with designs that address this. One idea is to do the same thing that we want to do for state: acknowledge that >95% of Ethereum's activity doesn't really _need_ full globalness, though the 5% that does is often high-value, and create new categories of txs that are less global, and so friendly to fully distributed building, and make them much cheaper, while leaving the current tx types in place but (relatively) more expensive. This is also an open and exciting long-term future design space. firefly.social/post/lens/8144…

English
239
108
873
263.1K
Sandy Petersen 🪔
Sandy Petersen 🪔@SandyofCthulhu·
One of the most lethal traps I ever used was this. The problem was when the player fell into the pit, he couldn't see anything because whipped cream is opaque. The other players also couldn't see him. When they tried to lower ropes, the ropes floated on the whipped cream and he couldn't reach them. They eventually attached a weight the rope so it would sink in the cream, but when they did he still couldn't see it and had to grope for it. They also couldn't hear him talking, and eventually he just expired with no oxygen and the whole time I sat there innocently. You might say I was too mean, but I can think of at least three ways they could have gotten him out of the pit. Can you think of one?
Sandy Petersen 🪔 tweet media
English
1K
312
12.8K
1.7M
Brendan K. Chou ری ٹویٹ کیا
patrickogrady.xyz
patrickogrady.xyz@_patrickogrady·
Today, I’m excited to (finally) welcome Minimmit to the @commonwarexyz Library. Implemented independently by both @GTE_XYZ and @vex_0x, Minimmit clobbers our benchmarks: [USA]: 51ms blocks (-40%) | 87ms final p75 (-35%) [Global]: 142ms blocks (-30%) | 269ms final p75 (-15%)
patrickogrady.xyz tweet mediapatrickogrady.xyz tweet mediapatrickogrady.xyz tweet mediapatrickogrady.xyz tweet media
English
20
31
246
52.9K
Brendan K. Chou
Brendan K. Chou@B_Chou·
I can't currently think of a way to efficiently serve the full "implied orderbook" but at least the touch-price can be served extremely efficiently with minimal overhead. The touch-amount could be served if a min-heap (over order size at the touch) is maintained, though this is less efficient than O(1) per order (could be O(log n))
English
0
0
1
113
Brendan K. Chou
Brendan K. Chou@B_Chou·
Lastly, this doesn't seem particularly computationally complex for the matching engine. For a single prediction market, it can simply maintain the current sum of the best bids and the current sum of the best asks for each of the N outcomes. This is an O(1) operation on order placement. If the sum of the best bids would go over 1, or the sum of the best asks would go over N-1, then match orders across all outcomes into an implied trade. This is O(N) but you are matching N orders.
English
1
0
2
207
Brendan K. Chou
Brendan K. Chou@B_Chou·
On prediction markets with N outcomes, I heard they run a separate YES/NO orderbook for each outcome, and rely on arbitrageurs to "balance" such markets. If this is the case, why? Why are exchanges not doing the implied matching atomically to increase liquidity?
English
1
0
2
301
Brendan K. Chou
Brendan K. Chou@B_Chou·
@simonsarris @TheStalwart This is what I thought too, but I think it's wrong to assume an average of 1 left of each. It would be an equal amount percentage-wise, not absolute-wise. So on average maybe 10 mediums 5 larges and 2 XLs
English
1
0
12
717
Simon Sarris
Simon Sarris@simonsarris·
@TheStalwart if goal *pre*-clearance is to have 0 inventory left: they make enough of each size to perfectly sell out evenly (eg make more of median size), once on clearance (now in perfectly even amounts eg 1 of each size remains), the median sizes are more likely to sell out first
English
4
0
122
29.5K
Joe Weisenthal
Joe Weisenthal@TheStalwart·
Something that’s not obvious to me. Why is it that if a clothing retailer has a clearance rack, the items are more likely to be sizes like XXL than, say, M?
English
186
1
423
1.5M
moon shiesty
moon shiesty@moonshiesty·
here's a scenario: ADL'd account has a BTC short 25x, ETH long 25x, 50% of initial margin remaining, 2% margin/notional both markets move 0.1% down, account is fully solvent, but ADLing BTC on the last mark price would cause the account to become insolvent and require ADL on the ETH leg
English
2
0
2
458
Dan Robinson
Dan Robinson@danrobinson·
When perp platforms sort positions to determine which to ADL first, they almost all sort by some combination of leverage (notional value / account value) and PNL (such as current price / entry price). Why not just sort by leverage? PNL seems gameable (you can reset it by exiting and reentering a position), plus I don't see why two identical positions should be treated differently just because they were entered into at a different price.
English
15
5
66
8.6K
Brendan K. Chou ری ٹویٹ کیا
patrickogrady.xyz
patrickogrady.xyz@_patrickogrady·
Over the past few months, we've been prototyping infrastructure components to extend @commonwarexyz (making it faster and cheaper to interact with high-throughput blockchains). We are now looking for our first dedicated eng (0.25-1% equity) to create production-ready APIs 👀
English
13
8
111
18.7K
Brendan K. Chou ری ٹویٹ کیا
patrickogrady.xyz
patrickogrady.xyz@_patrickogrady·
Thrilled to share @commonwarexyz's first paper "Minimmit: Fast Finality with Even Faster Blocks" has been accepted at Financial Cryptography 2026! State-of-the-Art Performance ✅ Peer-Reviewed ✅ Deployed ⚒️ arxiv.org/abs/2508.10862
English
29
34
378
99.6K
Felicia Tang
Felicia Tang@Feliciamtang·
we created a hiring puzzle our ceo can’t solve…
Felicia Tang tweet mediaFelicia Tang tweet media
English
49
8
443
868.9K
Brendan K. Chou ری ٹویٹ کیا
Andrew Lewis-Pye
Andrew Lewis-Pye@AndrewLewisPye·
Excited to announce I’ll be working with the great folks @commonwarexyz! Looking forward to bridging theory and practice in distributed systems…
English
8
2
44
11.4K
Brendan K. Chou ری ٹویٹ کیا
Tempo
Tempo@tempo·
Tempo is adopting the Commonware Library and leading a $25M strategic investment in @commonwarexyz. Together, we will accelerate our shared vision: high-performance, reliable infrastructure for every builder.
Tempo tweet media
English
78
31
521
74.6K
Brendan K. Chou ری ٹویٹ کیا
patrickogrady.xyz
patrickogrady.xyz@_patrickogrady·
Welcome, @tempo Today, we're thrilled to share that Tempo is building with the @commonwarexyz Library, supporting our growth as a new core contributor, and accelerating our research and engineering with a strategic investment. commonware.xyz/blogs/welcome-…
English
97
34
502
247.1K