manav2401

@manav2401

Joined on Mar 26, 2021

  • Submission for Paradigm Fellowship Hey there, I am Manav Darji and this is my submission for the technical question requested in the Paradigm Fellowship application form. I am really hoping to get in! I've attempted to work on first task i.e. simulating an EVM with tracing. This documents mentions everything about the project implementation, my approach towards implementing some modules, and few things which I though are worth mentioning. I've also attached a video link for the walkthrough and a working demo. Github: https://github.com/manav2401/goevm Overview The implementation contains the fundamental modules needed for the EVM i.e. stack, memory and storage to begin with. It contains bunch of isolated opcodes (e.g. arithmeric and logical operations) and certain opcodes which interact with state/storage as well. The whole set of opcodes supported can be found here.
     Like  Bookmark
  • Final Dev Update for EPF Cohort 4 Hey there, I am Manav Darji and these are my final dev updates for the Ethereum Protocol Fellowship - Cohort 4. It was a really fun ride and I genuinely enjoyed being a part of this fellowship, working on complex problems and meeting new people. TL;DR Throughout the fellowship, I worked on ePBS (enshrined proposer builder separation) with forward inclusion list design project under the mentorship of Potuz and Terence from Prysm team. We as a team were able to help them review the consensus specifications and also kicked off some aspects of the implementation. Project Abstract Currently, PBS (Proposer Builder Separation) exists outside of the protocol by builders helping in block building through entities like relays. This design relies on small set of trusted relays and even builders which introduces centralisation risks and makes Ethereum more vulnerable to censorship. This ethereum research post advocates for having in-protocol PBS overcoming the problems which exist in an out of protocol solution while still maintaining the core properties of PBS. ePBS has multiple designs and we worked on the Payload-timeliness committee (PTC) design. This design was also coupled with a flavour of forward inclusion lists design known as no free lunch. At a high level, this design will allow builders to be part of the ethereum validator set by staking a relatively high amount compared to normal validators. This allows builders to propagate bids to the proposer which further chooses the best bid and builds a block without payload. Once enough votes are gathered on the blinded beacon block (without payload), builder reveals the payload and the PTC committee (a subset of selected validators) will vote on that payload. Based on the beacon block and PTC votes, the next proposer decides which fork to build the next block on. Additionally, the proposer of the current block can include transactions as a part of inclusion list forcing the builder of next block to include them in their payload, preventing censorship.
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 16 (20/10 - 05/11). The goal of this week was to explore possibility of simulating CL in geth to test the end to end inclusion list flow. Updates Geth PoCCL SimulationAs inclusion list is planned to go with ePBS, it also requires lot of changes and implementation on the CL front. Lot of progress on that front is yet to be done and hence as a result, EL changes need to wait to be fully tested. But, as testing with abstrating out different components is a good practice and is heavily followed in ethereum clients, my plan is to explore if I can simulate the Cl <-> EL interactions by mocking calls to EL engine API (or call the functions directly in a test). The goal is to explore the possibility of the same and try different approaches as well. I am not sure if this will be completed fully but I believe it will be super helpful to test the EL changes independently of the CL changes. Back
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 14 and 15 (16/10 - 29/10). The goal of this week was to write some tests for inclusion list implementation in geth PoC. Updates Geth PoCWrote tests for the inclusion list verification functions. Used appropriate patterns to mock certain functions (e.g. getStateNonce in txpool module). Writing tests in this way allowed me to explicitly test the core verification logic without external dependencies. Fixed a few bugs encountered with the tests. Next steps
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 13 (09/10 - 15/10). The goal of this week is to update the specs to reflect the implementation nuances. Updates Execution (Engine API) specsThe specs were a bit outdated and needed some refactoring. NC, already had an initial specs PR. Created a new PR on top to reflect some modifications. https://github.com/manav2401/execution-apis/pull/1 Geth PoC
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 12 (02/10 - 08/10). The goal of this week was to continue on the geth PR and try to complete the block verification engine API. Updates Geth PoCCompleted the implementation of the last engine API engine_newPayloadVePBS which does the block verification before it's imported. It does the following things.Takes a new block payload as input along with an inclusion list which it satisfies, the parent hash it's built upon and an exclusion list. Inclusion list as mentioned in the specs is list of (address, gasLimit) pairs which the block needs to include on top. Exclusion list is nothing but a list of index of transactions of parent block which represents the transactions in current inclusion list and can be removed from verificationThis needs to be done because when the inclusion list is proposed, the current block payload isn't revealed. Hence there can be inclusion of some of the transactions which inclusion list was referring to in the current block's payload intentionally or un-intentionally. This verification happens before the block goes for the state transition
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 11 (25/09 - 01/10). I was travelling this week so wasn't able to work on the project. Next steps Continue geth PR refactor and last engine API call implementation. Start with setting up Prysm with some initial data structures to be added/modified. Back
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 9 (11/09 - 17/09). The goal of this week was to explore and review the fork-choice section of ePBS in the CL spec. Updates Fork choiceOne of the most crucial change in CL will be fork-choice as it's difficult to think of edge cases. Potuz and Terrence updated the spec with fork-choice modifications required for the PTC design. Had a quick explainer session for the same during weekly catchup. Went through some resources to understand current fork-choice and types of reorgs. Prepared a few questions to ask mentors for the next call.
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 7 (28/08 - 03/09). The goal of this week was to continue on spec review and PoC implementation in geth. Updates Created project proposal. Discussed few doubts over weekly catch up calls with mentors. Reviewed the consensus specs for new IL design. Moved the Geth PR to personal fork. Here's the PR. Next steps
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 6 (21/08 - 27/08). The goal of this week was to start doing some experimental changes for PoC implementation. Updates The new inclusion list design (mentioned here) was finalised and the mentors started to update the consensus specs. Discussed few doubts and updated mechanism in the weekly catchup calls. Also, discussed about how to approach making changes for the PoC. Marius from geth team will be involved for helping or reviewing whenever required. As the CL side of things were still moving, I thought of starting to make changes in the EL side as it was much open ended comparatively and I had some idea of a few modules of geth. Created a draft PR on geth with some initial structure and abstractions. For now, setup the engine API methods in eth/catalyst and IL related functions in core/txpool modules. Functions are dummy for now as I wanted to figure out abstractions amongst modules first and then deal with the core logic. Will be iterating over this in the upcoming weeks.
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 5 (14/08 - 20/08). The goal of this week was to start thinking more about the implementation details as the spec is bit solidified (by the mentors). Moreover, the implementation scope now also includes inclusion list design. Updates On the weekly catch up call, Potuz pointed out a problem with free data availability in the existing inclusion list design and later in the week, Vitalik and Mike proposed a way to avoid that problem with a new design. The design is mentioned here. I spent good amount of time understanding this and also clearing a few doubts regarding the same with mentors. Later on, started with glacing over few modules which will be affected in the Prysm codebase. I started with the p2p gossip module where the communication and triggers of any action are mentioned which led me to going through some existing structures, validation and processing mechanism. Next steps
     Like  Bookmark
  • Hey there, I am Manav Darji based out of India. I will be maintaining a running list of my weekly updates (including references and analysis if any) for the Ethereum Protocol Fellowship Cohort 4 here. I am working on the ePBS i.e. enshrined proposer builder separation project during the fellowship. Week 0 Updates (10/07 - 16/07) Week 1 Updates (17/07 - 23/07) Week 2 Updates (24/07 - 30/07) Week 3 Updates (31/07 - 06/08) Week 4 Updates (07/08 - 13/08) Week 5 Updates (14/08 - 20/08) Week 6 Updates (21/08 - 27/08)
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 4 (07/08 - 13/08). On the project, ePBS implementation, we are having some interesting discussions and brain dump sessions in the Prysm channel from Potuz and Terrence. They've been really helpful in answering our questions and helping us understand the reasoning behind some descisions. I was sick most of the week so wasn't able to work much on my project. But, we had the weekly call with the mentors where they discussed few ideas and blockers with the project. Back
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 2 (31/07 - 06/08). The goal of this week was to have an initial discussion with the Mentors (Terrence and Potuz) from the Prysm team and plan out the next steps. Updates Had a call for discussing a rough path ahead for the EPF fellows choosing the ePBS project.Gathered rough idea of all the sub-topics involved in the project. Also, got to know about some design descisions which I was earlier unsure about. Few of the sub-topics to look at are
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 2 (24/07 - 30/07). As I was confused between 2 projects i.e. ePBS and Single slot finality, the primary goal for this week was analyse both the projects, their current situation and decide on what I really want to work on for the fellowship. TL;DR - I have decided to work on the ePBS project with the Prysm team. Moreover, based on that descision, carry on with further studies about the project. Why ePBS I spent good amount of time reading and wrapping my head around the need for ePBS through the design articles on eth research and various talks from past events and PBS day in Paris. I believe that this project is in a good pace and active discussion already and hence there's good motivation to follow it. Moreover, it touches on a lot of different sub-domains starting from mechanism design (game theory), consensus layer changes, networking, etc which I am generally interested in. Hence, I believe, I could learn a lot by contributing to this project.
     Like  Bookmark
  • Hey there, I am Manav Darji and these are my updates for week 1 (17/07 - 23/07). The primary goal for this week was to read more about the project(s) I am interested to work on and gather as much context as possible with the respective teams. Updates Verkle treesGot in touch with Tanishq from Nethermind who is actively contributing to the Verkle tree project. To narrow down, one of the projects I am considering to work on is verkle tree migration (using the overlay tree method) as it is yet to be implemented in Nethermind Read a few docs around the same. Moreover, I am also trying to understand Statelessness as a broad topic to get some more ideas/projects under it. ReferencesNotes on Statelessness and state expiry
     Like  Bookmark
  • Networking spec starts here... This document contains the consensus-layer networking specification for ePBS. The specification of these changes continues in the same format as the network specifications of previous upgrades, and assumes them as pre-requisite. Table of contents The gossip domain: gossipsub Some gossip meshes are upgraded in the fork of ePBS to support upgraded types.
     Like  Bookmark
  • Deep dive into Biconomy The phase of web3.0 and decentralization, specifically in the ethereum and solana ecosystem, has tried to solve lots of challenges which are faced in traditional systems. More and more users are transitioning to these kind of open and permissionless systems. The ecosystem has been evolving and new apps are being built on top of blockchain, which are ready to use for wide adoption but the lot of consumer facing problems are yet unaddressed. If you want to learn about ethereum, you can always start with these below Ethereum primer/101, ETHHub, ETH for devs, and glossary. The problem statement With such wide variety of protocols and decentralized applications (dapps) being built on a lot of chains (layer1 and layer2), they've become more and more fragmented and cluttered with complicated user experience. The end user of these protocols and dapps require significant knowledge of how things work under the hood and need to estimate their cost of interacting with them in a better way so that they do not end up overpaying or underpaying the fees (Every interaction, specifically writing to blockchain, requires the user to pay gas fees in the network's native token). Moreover, high gas prices on ethereum has also become a major hurdle for users.
     Like  Bookmark
  • Idea dump Preventing rug pulls using DAO and superfluid streams. Controllable funding to projects. ICO launchpad Feasible solution Multiplayer gamified experience PhaserJS, webrtc/socket.io
     Like  Bookmark
  • Mastering Ethereum Notes Chapter 1: What is Ethereum? A general purpose blockchain It is a distributed state machine. But instead of tracking only the state of currency ownership, Ethereum tracks the state transitions of a general-purpose data store, i.e., a store that can hold any data expressible as a key–value tuple Two of the critical differences from most general-purpose computers are that Ethereum state changes are governed by the rules of consensus and the state is distributed globally Components of Ethereum A peer to peer network Consensus rules
     Like  Bookmark