Blockchain @ Berkeley Geth & IBC Research Project Updates

Thread/Topic for updates on two of Blockchain @ Berkeley’s internal research projects, on the Geth and Cosmos-IBC codebases, which have been given small grants from Smart Contract Research for support.

Updates will be periodically added to this thread for discussion.

5 Likes

Geth Node Client Optimization Project

Ethereum’s most commonly used node client, Geth (aka Go Ethereum), is highly modifiable. While there is plentiful documentation for end users, there is no such documentation for developers. The first goal of our project was to read through the source code to develop a better understanding of how the Blockchain specifications are actually implemented in code.Our team has been working towards optimizing the codebase for:

  1. Better Data Querying, such as the ability to query the entire storage space associated with each or multiple account slots in one call, the ability to subscribe to an arbitrary number of transaction filters in one call, or filter to trace internal transactions of new blocks for appearances of an address.
  2. Better Simulations, such as simulating multiple state changes on top of another and being able to query post-state change states, producing user friendly outputs for traces of transactions, arbitrary number of state changes, etc,
  3. Better Connectivity, such as optimizing peer selection algorithms to maintain connectivity to “good” nodes while dropping “bad” ones, optimizing mempool transaction filters to drop “stale” txs, and more.

Cosmos-IBC

This research team is designed to be an open-ended effort to learn, document, and build on top of the Cosmos IBC ecosystem. Concretely:

  • Learn - discuss and curate resources on the implementation of Cosmos and IBC through an internal whitepaper circle.
  • Document - publish technical writing articles and/or SoK papers based on our learning.
  • Build - experiment with Cosmos-IBC through bitesize projects and longer-term contributions to the IBC protocol.

The project team has been working towards the goal of producing technical writing on Cosmos-IBC to improve understanding or an SoK (Systemization of Knowledge) paper, as well as technical projects such as a multi-hop IBC connection protocol or a cross-chain IBC swap module to execute swaps through Osmosis.

4 Likes

Welcome to the forum! Do you have any sense of the kind of project you’ll be creating on Cosmos? What appeals to you about their mechanism over something like Solana?

2 Likes

Are you (or is anyone) working on IBC for Geth?

I know evmos brought the EVM to cosmos but now I am curious if we’ll see something similar for IBC.

3 Likes

I find this statement interesting because I have always thought that stuff like this are too technical for the average ‘end user’ but easy to understand for developers. For context, the only time I interacted with Geth was during a blockchain programming BootCamp (which I dropped out from by the way cos it got too technical for me :sweat_smile:).

When you say ‘plentiful documentation’, do you mean user guides, tutorials, etc?

Also, why do you think documentations for developers were non-existent?

1 Like

The thing about coding is: good coders use comments, whereas people who THINK they’re great coders don’t.

There is a culture of not adding comments to code for the sake of “looking like perfect code”. This is a cultural misstep, in that the best coders in the traditional school of computer science add notes not just for others, but for “themselves”. If you’re writing 100,000 lines of code, then one bug can be the difference between that entire codebase functioning or not. Without comments, it’s not impossible to know what’s happening at each line, but it makes it unnecessarily difficult to know what each unique script means. While commonly used scripts don’t need notation, specific and unique functions demand good notation on account of the script being novel and something that is not necessarily known.

I have seen some communities practice better note-taking than others, but in general: complex code needs complex comments. Comments specifically solve a lot of the problems.

Here is an example of a guide on how to make comments in a codebase: A Basic Good Coding Practise: How To Comment Codes And Take Notes – Take Notes Guide

Here is a tutorial on how to make comments specifically in Solidity: Solidity - Comments (tutorialspoint.com)

From what I can tell, the developers that tend to code without comments seem to think it makes their code look more clean and professional. In reality, the practices surrounding coding and information distribution between coders tends to encourage extensive note-taking so that anyone who understands the language can come in and understand a script based on the comments left by the person writing the code.

5 Likes