
@ethereum fellow, grantee @starknet, contributor @onlydust_xyz, ex @nethermindeth intern, ex Drupal dev. Interested in applied cryptography in blockchains
Novi Sad, Serbia
Joined April 2023
- Tweets73
- Following567
- Followers221
- Likes303
Just got my @EFDevcon with @themu_xyz ❤️
If you’re curious what Ethereum actually does, don't miss Devconnect. Nov 17–22 in Buenos Aires 🇦🇷
You coming? devconnect.org/argentina/tic…
Dragan Pilipovic retweeted
I wrote a little note to explore the ZK-friendliness of Verkle proofs: hackmd.io/@dlubarov/B1rVbPgb…
TLDR: Compared to binary Merkle proofs, it's hard to say which is more ZK-friendly; it will come down to a bunch of implementation details.
Bandersnatch curve is native to zkevms which use KZG as PCS (with EIP 2537), but im wondering how performant will the 255bit field when emulating with small fields and STARKs?
This has been something i've been learning about past 6 months. Its very interesting problem!
Replying to @MihailoBjelic
ZK-ifying keccak merkle patricia trees with worst case 300 MB witness sizes is a non-starter.
The verkle tree spec is designed to be zk friendly (eg. choice of curve, using pedersen as the hash)
So switching to verkle helps with ZKing the L1.
Dragan Pilipovic retweeted
Replying to @MihailoBjelic
ZK-ifying keccak merkle patricia trees with worst case 300 MB witness sizes is a non-starter.
The verkle tree spec is designed to be zk friendly (eg. choice of curve, using pedersen as the hash)
So switching to verkle helps with ZKing the L1.
Dragan Pilipovic retweeted
Today from the ZK community gathering by @ethbelgrade:
@gagadrupal presented stateless Ethereum with (of course, his favourite) Verkle tries and the Verge 💡
Did you know that each node in that trie has 256 children? 🤯
Many thanks to @gagadrupal and Aleksandar Veljković 🤗
Dragan Pilipovic retweeted
We're excited to announce the next @ethbelgrade meetup dedicated to ZK! 🚀
Join us and don't miss this unique gathering with amazing speakers Aleksandar Veljković and @gagadrupal, great company, and beer. 🍻
📍@attic42
Sign up here: lu.ma/1zwkoam5
Dragan Pilipovic retweeted
Live for ETH Belgrade Community meetup #7 Novi Sad edition 🙌
Thanks HTECH for hosting us, and thanks @Neon_EVM for sponsoring this meetup 🥰 – at Novi Sad, Republic of Serbia
Dragan Pilipovic retweeted
anyone want to implement `hash_to_curve` (following this comment ethereum-magicians.org/t/eip…) in solidity?
happy to explore a grant for the work
Dragan Pilipovic retweeted
We wrote a new blog post.
Our (@class_lambda) highly subjective view on the history of Zero-Knowledge Proofs
blog.lambdaclass.com/our-hig…
Dragan Pilipovic retweeted
93% of open-source contributors on @OnlyDust_com are eligible for the @Starknet airdrop.
Keep building the future of tech, devs.
You will be rewarded.
Dragan Pilipovic retweeted
EPF Study Group has been cooking for a while and it's finally here! An education program for anyone interested in the internals of Ethereum core protocol. With @joshdavislight, we will take you on a 10-week journey into the protocol and development👇
blog.ethereum.org/2024/02/07…
Ethereum is an open but complex machine. And as the pace of core R&D is not slowing down, it becomes quite hard to keep up with everything. I believe it's important for the Ethereum community to understand what's under the hood and demand a focus on security, decentralization.
This program is for everybody with a desire to technically understand the core of Ethereum. Whether you are a developer, student, or just a crypto enthusiast, EPFsg can help you safely dive into the scary depths of the protocol.
Especially if you are considering joining EPF and starting your path as a core developer, the study group is a great place to begin your journey. Starting with a general overview and diving deeper into the architecture and specific domains, it's up to you what topics you want to focus on.
As a part of this program, we are launching a Protocol Wiki. A knowledge base for gathering resources about all domains of the protocol. It's a community effort that will help EPFsg participants gain experience as contributors.
If you are curious about the study group, considering joining or have any questions, join us for a town hall on Monday. All info in the announcement blog post:
Dragan Pilipovic retweeted
L2 peace xitter.cf/i/broadcasts/1ypKdkMPP…
Dragan Pilipovic retweeted
I wrote a deep dive into Verkle proofs and the stateless clients.
ihagopian.com/posts/anatomy-…
Dragan Pilipovic retweeted
🔊 Calling all speakers!
Today, we officially open speaker applications for ETH Belgrade 2024.
Last June, over three conference days, nearly 💯speakers shared their knowledge, experiences, and brought immense value to the community.
Can we exceed that this year?
Absolutely 💪
Be a speaker at ETH Belgrade ▶️ ethbelgrade.rs/
Dragan Pilipovic retweeted
Latest updates on the work towards stateless Ethereum, from Verkle Implementers Call #9!
First, a quick refresher on the benefits we eventually get from all of this 📈 Not only will verkle/statelessness significantly improve the decentralization of the network (by reducing the amount of data most nodes will need to store), it will also help pave the way for additional performance/scalability work (potentially raising gas limit (tbd), improving i/o, etc). Verkle is also more compatible / gets us closer to a zkevm future we are likely working towards.
But of course still work to be done to verify assumptions and evaluate tradeoffs of some of these decisions. Good thread here for further reading: xitter.cf/gakonst/status/1724978…
On to this week’s agenda:
1. Client team updates
2. Small bug fix to MainStorageOffset
3. BLS curves & Verkle
4. Gas schedule changes: EIP-4762
5. State proof verification precompile: EIP-7545
===
1. Client team updates
@gballet: Making good progress on the shadow fork. Attempted with the Holesky testnet, and because it's a real payload a few bugs were found that were not previously visible. Will have more to share soon (note: a shadow fork is a new testnet created by forking a live network with a small number of nodes, keeping the same state/history).
@ignaciohagopian: completed some test vectors for cryptography libraries. Ran them in the Go implementation. Probably will work on the Rust implementation in the near term. Next up will be completing the other part of the test vectors for the Verkle tree data structure and witness generation.
@Gajpower: for @EFJavaScript: working on stateless sync. Integrating the new gas schedule, and adding the charges for Verkle witness accesses. Have had some success there, and able to run a few of the transactions. Aim is to complete this week and then try again syncing into EthereumJS stateless implementation!
@kt2am1990: for @HyperledgerBesu: working on having the same root hash for the genesis block. Fixed several issues. Last issue remaining was due to a small difference between the spec and the Geth implementation. Once we have the same generic state root, then should be able to join the testnet.
Somnath: for @ErigonEth: have been able to join the network, but hit some issues on block 12 related to gas schedule mismatch. Working to resolve this issue soon, and then make further progress on syncing with the testnet.
@jasoriatanishq: for @nethermind: working on fixing some issues with block production, and after that will get back on Verkle sync.
Daniel: for @ethnimbus: finalizing the crypto library, and will integrate it into the Nimbus Verkle implementation in the next couple of weeks. Then can start seeing root hashes.
===
2. MainStorageOffset fix
@gballet took a few mins to flag this recent small fix, just to make sure all client teams are aware. Tldr: there was a mistake in the computation of the mainStorageOffset value. @kt2am1990 kindly spotted the issue, and Guillaume was able to put up a fix. When the testnet is next relaunched it’ll include the fix. See github.com/gballet/go-ethere…
===
3. BLS curves & Verkle
Next up, @CPerezz19 led a helpful discussion summarizing some conversations around BLS curves & Verkle, which was started in part from an exploration of a great paper recently put out by @asanso: github.com/asanso/bls-s/blob…
Note: for a bit more general background on this topic I recommend this awesome resource put together by @benjaminion_xyz: hackmd.io/@benjaminion/bls12…
The initial idea from @CPerezz19 was to see if it was worth it to try to find a new pair of curves which could have some nice gains. Feedback received from discussions with @dankrad/@GottfriedHerold/@ignaciohagopian and others was that the drawbacks of the curve used today shouldn’t actually cause significant issues. And the design of a new BLS curve isn’t worth the benefits at this point, considering the work it would take to actually put into a precompile etc.
Also there is a good chance that BLS12-381 will make it into mainnet anyways via 4844, so it’s probably worth it to reuse this.
Conclusion: sticking with BLS12-381 (plus Banderwagon) is the best path forward.
===
4. Gas schedule changes: EIP-4762
Background: EIP-4762 outlines statelessness gas cost changes, and was initially created with the idea that this EIP would ship in the fork right before Verkle (to give time for dapps to adopt the new model, among other things). It’s no longer likely that these changes will ship prior to Verkle, because we can’t make the changes to lower gas costs for certain operations before implementing Verkle.
Potential problem: a good bit of tooling breaks with gas schedule changes. For example, with each transaction, you have intrinsic gas which is gas that you pay upfront prior to execution of a transaction. With Verkle, this is something that we pay on the side, because we’d be paying the cost of adding it to the witness.
So that means even sending a simple transaction might no longer be 21,000 gas with Verkle. This breaks some tooling because that value is hardcoded in a lot of places.
Conclusion: should keep it at 21,000 with Verkle. When you start up a transaction, you'd read the sender account and read the recipient account, and those values won’t get charged. They are included in the 21,000. And those values get added to the witness with Verkle, so they don’t get charged later on. Guillaume to create a PR to update the EIP.
===
5. State proof verification precompile: EIP-7545
Last up: there is a proposal to add a precompile that helps with state verification. This isn’t necessarily verkle-specific, as it could actually have the ability to verify merkle trees as well.
How the precompile would work at a simplified, high-level: it gets the version from the first byte, and if version is zero it will deserialize the merkle proof. If the version is one, it will deserialize a verkle proof. The precompile returns one if it successfully verified the proof, and zero if it did not.
Two points brought up by @ignaciohagopian: (1) this precompile should have a way to check which keys are being proven. Because if a contract is receiving a proof and using this precompile to verify, you will probably want to know specifically which keys are being verified. (2) other point is whether the support for merkle proofs is worth the added complexity, since at some point after verkle is on mainnet, merkle proofs may no longer have much usage.
@CPerezz19: regarding complexity of implementation: it’s prob not that complicated to just support the precompile. The complex thing will be all of the logistics when it gets deprecated, or the maintenance burden, etc. The ongoing support costs even if no one uses it.
@dankrad: regarding the precompile having a way to check which keys are being proven: ideally you'd want more for a really independent proof scheme. You want even logically to say what you want to access. Because even if you prove key values, then the proof is still dependent on the mapping.
Conclusion: all agreed, and @gballet to think about how to implement the API.
===
That’s it for this week’s call! Check out verkle.info, or pop into the Eth R&D Discord (verkle-trie-migration channel) to stay up-to-date 🙏
Dragan Pilipovic retweeted
What does it mean ? It means that excluding storage update costs that will be fixed with Volition/EIP4844, in terms of pure computation, today a groth16 verification costs ~25$ to verify on Ethereum. With Starknet 0.13 dividing compute costs by 2, and groth16 verif with Garaga at ~1.3m steps, the computation for it on Starknet will cost less than one miserable $.
Just deployed my first ever Cairo1 contract on @Starknet mainnet because I was fed up of the baby 10k steps transactions I was seeing and I wanted to test the limits.
Got this one with 2.94 Millions steps (current max is 3M) for only 3.65$. starkscan.co/tx/0x36df40f97e… Bullish.
Enjoyed 2 weeks with @class_lambda in Buenos Aires and Bariloche! No bullshit, only code! That's great mantra for the strong team! – at San Carlos de Bariloche, Argentina
Thank you @lean_knack for inviting! Learned a lot from you, lambda team and other guests – at Bačka Palanka, Srbija
Verkle proofs and zkEVM proofs:
Verkle proofs are used for serving proofs for witnesses for stateless clients, and zkEVM proofs are used for proving state transition in ethereum
These 2 could somehow "merge" in the coming years
I was a participant in @ethereum cohort 4 for onboarding core developers, and during Devconnect presented my views and conclusions on the statement above:
app.streameth.org/devconnect…




















