Martin Verzilli
3.9K posts

Martin Verzilli
@mverzilli
currently @AztecLabs_, previously @manastech, @CrystalLanguage There's a bunch of things I love.
Amsterdam, The Netherlands Katılım Kasım 2008
245 Takip Edilen368 Takipçiler
Martin Verzilli retweetledi

My project was adopted by 32% of enterprises. I have no idea who any of them are. I only know because Wiz (a business intelligence security company) published an aggregate report on it. We had spotty download statistics from Hugging Face but Mozilla didn't trust them, because we saw very few people engaging on GitHub and Discord. There's no way to monetize a community of dark matter developers you can't see.
People pay for things if you have leverage, it's scarce, or it solves their pain. In the 2000s when open source was immature and the world was unfamiliar with how it worked, there was an abundance of folks willing to pay for help solving the problems that caused. But as Linux and friends became more polished and perfect, Red Hat's business model dried up.
Software is infinitely copyable and requires zero effort to maintain, which makes it fundamentally at odds with having any kind of economy. There have been numerous efforts to make software not be the way that it is. For example, software is the only thing on Earth that can be both patented and copyrighted. Both of them failed. Folks would pirate. Patent trolls abused it. Open source rejected it.
Additionally folks have tried to regulate software, with things like FIPS standards, that need corporations to pay for experts for certifications but this was rejected by the industry too. You have little hope of making any income off that unless you're a government contractor and that means having the right connections. There definitely exists an economy for certifying and owning the risks of open source, but I don't think much of the money goes to the people who did the software work. That's just how their world operates, and I think it's a good thing that open source has helped them succed.
The most successful model for profiting off software to date, has been to never distribute it. You put it in the cloud and charge rent to anyone wanting to use it. It's the only way the software industry could survive, and everything which isn't that just became open source.
At the end of the day, open source simply isn't compatible with any economic model we know, because it's the absense of an economic model. Capitalism won't work. Socialism won't work. The only funding model I've seen work is the most ancient one, which is patronage. Before devices like patents existed ancient innovators would seek the sponsorship of the most powerful folks in their day. This is how people like Archimedes, Michelangelo, etc. got paid.
So I wish people wouldn't try to solve the open source monetization problem because there isn't one. Money is orthogonal and it should stay orthogonal. I think it should be a gentleman amateur activity rather than an institutionalized role people perform to feed their kids. Open source is the byproduct of curiosity and it's not the sort of thing you can industrialize. If you bring too much money into the equation, it creates liabilities, responsibilities, etc. that corrupt the motivations at endanger those of us who just want to be curious.
However this isn't just my wish, it's a warning. I've seen many folks try to solve this unsolvable problem and it makes them all half mad, and if they're smart then they give up before they go completely mad.
The solution for an open source developer looking for income, to me, has always seemed as clear as day. You either win the affection of a Medici, or you make your money doing something else.
One modern Medici is the European social safety net. Many open source developers hail from Europe since their economic policies ensure people have food and shelter, giving them the freedom to focus on anything, while taking away many freedoms to be enterprising.
In America, I was able to fund my open source work on Cosmopolitan Libc for many years with a very simple stock trading strategy, which was to invest 100% of my money in a tech company on Charleston Road. With financial markets giving me money for nothing, I felt it was fair that I should work on open source to kick back some of the benefits to the community.
I've actually been discovering new ways to redistribute wealth from Wall Street to the open source community. It makes me happy to have the opportunity to apply my work towards building a thing for me. I mean, you can't spend your whole career making the tools to other people do things without ever doing a thing yourself?
What's great is that financial markets are unbiased. It's surprisingly competitive giving things away for free. I've dealt with plenty of hate and harassment for sharing software with the world. But the NASDAQ won't hate me because of what I am or what it thinks I believe. All that matters is if I can write a cleverer algorithm. That's the thing open source is supposed to be about. The only tradeoff is I'll stop making money the moment I share my algorithm with everyone. So there's no glory or recognition in doing it. Just dollars.
In life, you can optimize for earning respect. You can optimize for money. You can even optimize for impact. But you can't maximize all of the above. The world just does not let it happen. But it'll give you a lot more of one if you're willing to give up the others. So anyone who's made the intentional tradeoff to max out one stat at the expense of the others, shouldn't feel unhappy they weren't given all three.
English


@Aella_Girl Fixed point? ~80% of people tend to “play it safe”?
English
Martin Verzilli retweetledi

I'm quite proud of this milestone.
Private transactions are finally live on Ethereum!
- Private function inputs
- Private state
- Private contractual terms
- (you don't even need to broadcast the bytecode to execute private fns, so your agreements can stay private)
- Private execution
- Private msg_sender
- Private composability
- Private smart contracts making external calls to other private smart contracts, in a single tx, all on the user's device.
- Private logs
- Private consumption of L1->L2 messages
- Private emission of L2->L1 messages
Observers learn: someone did something; we're not sure what, but we know they followed the rules of whatever it was.
Plus, composability with public smart contracts:
- Public state, functions, smart contract code, execution, events, etc.
- Make public fn calls from private
- Emit notes & nullifiers from public
Plus, composability with L1 liquidity and state through L1<>L2 messaging.
Plus, composability with the growing ecosystem of "proofs of everything". Verify zk-proofs of whatever directly in private smart contracts, without revealing what you were verifying or even the fact that you verified a proof.
Easy programmability, with a novel smart contract framework which:
- provides convenient abstractions to help you build quickly and safely on top of a note/nullifier-based protocol.
- has rails for simple emission and efficient discovery of private logs (encrypted notes and messages)
- no more brute-forcing of notes
- handles db management of notes, nullifiers, logs for all smart contracts
- simple js sdk for deploying and interacting with smart contracts
Flexibility, for advanced devs:
- Custom note structs
- Custom nullification schemes (if you want)
- Custom private log emission, delivery, and processing:
- Custom secret sharing
- Custom encryption schemes
- Offchain logs, Onchain logs (via blobs)
- Constrained or unconstrained delivery of logs (depending on your use case)
- Custom discovery and processing of logs
That's ideal for customising private token designs however you need.
Abstraction
- Account abstraction:
- No EoAs: there are only smart contracts.
- Any contract can be the "entrypoint" to a tx (as long as it accepts msg_sender == null).
- A dapp can be the entrypoint, if you meet its custom entrypoint criteria:
- Custom tx entrypoint criteria:
- Traditional signatures:
- Any signature scheme you want
- Sign in with
- Passkeys
- FaceId/TouchId
- Password
- Proof of zkpassport
- Proof of membership to
- Proof of subscription to an app
- Proof of whatever you want
- A signed message from Vitalik that he likes you.
- No one will even learn what kind of custom entrypoint you used!
- Fee Abstraction:
- Pay with any token
- Pay with NFTs, if you want
- Dapps can pay the network fees on users' behalves:
- Subsidise certain actions and pay users' fees for better onboarding; or
- Verify a proof of subscription to your app; or
- Verify that the user has a voucher for a free trial; or
- Pay a fee from the user's activities within the app (e.g. extract a fee from a swap)
- Or pay directly with FeeJuice
- Pay fees privately
Works on phones and in the browser.
- That's hard to do. Lots of cryptography. Nice.
Decentralised.
- You know all the reasons why decentralisation is important.
- Decentralising an L2 is _really hard_. The block production protocol is a work of art.
Loads of innovations, behind the scenes:
- Insane client-side proving system (CHONK) for low-memory, fast proving on phones and in browsers.
- A custom zkVM (the "AVM") for efficiently proving public function execution.
- Noir: A purpose-built DSL for proving programs. Huge in its own right.
- Recursive proving of the rollup's txs into a single proof.
- Possibly my favourite fact about Aztec: You don't technically need to "deploy" a private-fn-only contract: you can just execute it and submit a proof, even if no one else in the world has ever seen the code. That's mad.
- A kzg blob-batching protocol that saves 10m gas every aztec epoch, when submitting the rollup proof to L1.
- An unhinged private kernel architecture for private function execution and composing calls between private functions that:
- Stitches-together the inputs and outputs of the circuits;
- Enables smart contracts to only pay for merkle membership constraints that they actually need, for the number of notes that that they actually needed to read.
- Enables smart contracts to recursively call themselves if they need to nullify more notes.
- Enables a function to nullify notes that were created earlier by other functions in the same tx. It then enables that note and nullifier to be deleted to save the user $'s on DA emission.
- Safely "siloes" notes, nullifiers and logs, to prevent malicious contracts from contaminating other contracts' state or impersonating other contracts.
- Protects against Faerie Gold attacks at the protocol level.
- Enables private functions to be upgraded.
- Enables master secret keys to be app-siloed, to prevent malicious apps from learning master secret keys (nullifier keys & viewing keys).
---
Think of a private blockchain application that you've seen. Now build it quickly on Aztec.
Think of a private blockchain application you haven't been able to build yet. Now build it quickly on Aztec.
Now compose them all together in one beautiful private ecosystem.
It's taken a while to get here.
It's still an Alpha network, so stay cautious.
We're now working on a gigantic Roadmap of enhancements. Nice.
Aztec@aztecnetwork
Alpha is live. After nearly a decade, the first feature-complete privacy stack on Ethereum is here. Developers can now build apps and contracts with ground-up customizable privacy, from execution to settlement. aztec.network/blog/announcin…
English
Martin Verzilli retweetledi

Alpha is live.
After nearly a decade, the first feature-complete privacy stack on Ethereum is here.
Developers can now build apps and contracts with ground-up customizable privacy, from execution to settlement.
aztec.network/blog/announcin…
English
Martin Verzilli retweetledi

After eight years of building @AztecNetwork, the network is about to go live at Alpha.
My co-founders @zac_aztec and @arnaudschenk are moving to @aztecFND to steward the protocol, while I am returning to my roots: building privacy products people actually use.
English
Martin Verzilli retweetledi

SystemD has added birth date storage in order to comply with Brazil and California Age Verification laws.
Let that sink in.
A Linux init system now handles Age Verification.
github.com/systemd/system…

English

I've learned an interesting number recently, from working on loccount.
What would your guess be about the number of distinct computer languages and plain-text markup formats in the world? The range is anything for which "count lines" might be an interesting question on a Unix machine.
I've been working on extending loccount's breadth of coverage for a while, and recently I've been using AIs to find obscure languages and markup formats to add.
And...I've hit a wall. I've actually had an LLM tell me that I've covered every computer language outside of obscure academic toys, and most of those too. And when I ask it what markup formats I should add, it's reduced to pointing at various obscure bits of glue in build and orchestration systems.
So I know what that number is. There's room for some argument about it along the usual splitter/lumper lines, but none of those arguments are going to budge the number by 20% at the outside.
Make a guess. Drop it in a reply. I'm interested in what the range of peoples' estimates is.
When the hubbub dies down, I'll post the answer.
English

@alejoamiras You mean sth like this? blog.cloudflare.com/markdown-for-a…
English
Martin Verzilli retweetledi

I left xAI today.
Not because of the pay.
Not because of the internal politics.
Not even because of the SpaceX and
xAI merger.
But because, in my manager’s words:
“No matter what feedback I give you, you never change your direction.”
At first, I thought he was just calling me stubborn. Then my inner math brain clicked… He was literally describing an eigenvector.
See, in math, when you apply a transformation (matrix A) to a vector (v), most vectors get spun around, twisted, and thrown somewhere else. They change direction and magnitude.
But an eigenvector is different, it keeps the same direction. The only thing that changes is its scale, given by something called an eigenvalue (λ).
If λ = 2 → The vector doubles in size.
If λ = 0.5 → It shrinks.
If λ = −1 → It flips direction.
If λ = 1 → It stays the same size.
Apparently… in his eyes, I was λ = 1.
Always the same size.
Always the same direction.
Now the math part (because unlike my manager, I actually explain things):
Here’s how you find eigenvalues and eigenvectors using a 2×2 matrix example:
Let’s say the transformation matrix was:
A =
[ 2 1 ]
[ 1 2 ]
Step 1: Find eigenvalues (λ)
We solve:
A·v = λ·v
→ (A − λI)·v = 0
→ det(A − λI) = 0
Subtract λ from each diagonal entry of A:
A − λI =
[ 2−λ 1 ]
[ 1 2−λ ]
Set the determinant equal to 0 and solve for λ:
Determinant:
(2−λ)(2−λ) − 1 = 0
(2−λ)² − 1 = 0
(2−λ)² = 1
2 − λ = ±1
λ = 2 ± 1
Case 1:
λ = 2 − 1 → λ = 1
Case 2:
λ = 2 + 1 → λ = 3
So, the eigenvalues are:
λ₁ = 1, λ₂ = 3
Step 2: Find eigenvectors (v)
For λ = 1:
(A − λI)·v = 0
[ 2−λ 1 ] [ x ] = [ 0 ]
[ 1 2−λ ] [ y ] [ 0 ]
[ 2−1 1 ] [ x ] = [ 0 ]
[ 1 2−1 ] [ y ] [ 0 ]
[ 1 1 ] [ x ] = [ 0 ]
[ 1 1 ] [ y ] [ 0 ]
From the first row:
x + y = 0
y = −x
From the second row:
x + y = 0
y = −x
So, the eigenvector is any scalar multiple of [ 1, −1 ]ᵀ.
For λ = 3:
(A − λI)·v = 0
[ 2−λ 1 ] [ x ] = [ 0 ]
[ 1 2−λ ] [ y ] [ 0 ]
[ 2−3 1 ] [ x ] = [ 0 ]
[ 1 2−3 ] [ y ] [ 0 ]
[ −1 1 ] [ x ] = [ 0 ]
[ 1 −1 ] [ y ] [ 0 ]
From the first row:
−x + y = 0
y = x
From the second row:
x − y = 0
x = y
So, the eigenvector is any scalar multiple of [ 1, 1 ]ᵀ.
Final result:
λ = 1 → v = [ 1, −1 ]
λ = 3 → v = [ 1, 1 ]
Congratulations 🎉, You have just learned how to find the eigenvectors and eigenvalues of a matrix.
Bonus: Why does AI/ML care?
Eigenvalues and eigenvectors are everywhere in AI/ML:
PCA → Reduces dimensions by keeping the top eigenvectors of the covariance matrix (largest eigenvalues = most variance).
Spectral clustering → Graph Laplacian eigenvalues help find clusters.
Neural stability → Eigenvalues of weight matrices can indicate exploding or vanishing gradients.
Markov chains → Long-term behavior is the eigenvector with eigenvalue 1.
In short:
Eigenvectors tell you the “unchangeable direction” under a transformation.
Eigenvalues tell you “how much” that direction is stretched.
English
Martin Verzilli retweetledi

bedtime convo with my 7yo
7yo: “I think when I grow up I want to be an illustrator and novelist. I have many great book ideas”
me: “That’s great. You could use the computer to turn them into movies now!"
7yo: "yeah but anyone can do that. So it's not going to be special."
me: "special how?"
7yo: "when anyone can do it with the computer, the book that wasn't done with the computer will be special because it was done by me"
me: "hmm"
7yo: "people will say: ohh that one was done by a human. She's really good."
English
Martin Verzilli retweetledi








