March 4th, 2022

If you’re completely new to SQL and Ethereum I recommend starting with my full beginners’ overview or breaking down an Ethereum transaction first. Feel free to support my work by buying a Data Landscape edition at the end of the article, or sending a tip to ilemi.eth!

Most explanations of storage and state on Ethereum are diagram heavy and don’t get into the meat and bones of how to access or work with that data. I’m going to avoid the diagrams and theoretical explanations, but you should still have some understanding of data tries so skim this and this if you know absolutely nothing about how data gets into blocks.

Essentially, what you need to know is that every time you make a transaction with a contract involved, there will be state and storage changes saved to the block. State changes involve things like an addresses’ Ether balance or Nonce, storage changes involve storage slots on contracts such as your balance of ERC20 tokens in a contract.

To access these changes from an Ethereum node, you’ll need to use a replay VM - meaning you have to replay a transaction or block to get the raw diffs in state and storage. This is easily done using Infura or Alchemy, without running your own node. You can go to Alchemy’s API composer to play with the trace_replayTransaction endpoint (here). If you want to read more about how traces works, read the standards here - but I’ll run through one example.

February 6th, 2022

Welcome! I’m assuming you’re a data analyst who is new to web3, starting to build your web3 analytics team, or have just taken an interest in web3 data in general. Either way, you should already be loosely familiar with how APIs, databases, transformations, and models work in web2.

For this inaugural guide, I’m going to try to keep things very concise and highlight my thoughts across these three pillars:

  1. Thinking: why an open data pipeline re-shapes how data work gets done
  2. Tools: an overview of tools along the web3 data stack, and how to leverage them
  3. Teams: basic considerations and skills to have in a web3 data team

This is probably a good time to say that this is all just my view of the space, and I’ve showcased only a few facets of the tools/communities mentioned below.

November 17th, 2021

Why does token context matter?

Hopefully, you're familiar with the Web3 product stack, and why it's considered composable. If not, then here's a quick refresher that explains the following layers:

  • Frontend Layer: Webpages and/or wallets that allow us to interact abstractly with everything web3
  • Smart Contract Layer: The protocols that hold interaction logic and storage, like Uniswap
  • Blockchain Layer: Layer ones like Ethereum, or L2's like Optimism

Another precursor for this article that will be helpful is how web3 communities create tokens that become the membership structure that platforms are built off of, whereas web2 communities are forced into membership structures of existing platforms.

October 4th, 2021

if you’re looking for more web3 data content, check out my 30-day free course (with videos)!

What's in your wallet?

If you've ever made a transaction on Ethereum (or any smart contract enabled blockchain), then you've probably looked it up on a block explorer and seen this heap of information:

and that's just the information on the first tab
and that's just the information on the first tab
September 26th, 2021

Having a token brings a community together loosely with a financial stake, but composable membership holds a community together long term with social capital. That's a lot of buzzwords, so let’s explore this in three parts:

  1. How access, permissions, and status are the primary components of membership (and the role of tokens)
  2. Membership in Web2 versus Web3 platforms, and why composability matters here
  3. Designing a membership system to generate social capital

Access, Permissions, and Status

Our data and actions give us identity and relationships, but having a social graph does not give you community. Put in a Web3 context, a group of people holding or trading the same token does not mean you are a community - at best, it gives you clusters. **An actual community has fairly clear boundaries for growth (in more than a financial sense). You've probably seen some variation on the chart below...

August 30th, 2021

It's been almost one year since I really entered crypto, which I count as the day I first subscribed to @bankless. It's been quite a fun journey, and I'd love to share the path I took and some of the lessons learned.

First Bankless Receipt
First Bankless Receipt

Life Before Crypto:

Before I entered crypto, I worked at a large investment bank in their rotational grad program. Over two years, I worked with different teams on everything from managing the bank's liquidity to our commercial real estate portfolio.

August 22nd, 2021

User experience (UX) describes how people feel when they interact with a system or service and encompasses several factors including usability, design, marketing, accessibility, performance, comfort, and utility. Don Norman once said,

“Everything has a personality; everything sends an emotional signal. Even where this was not the intention of the designer, the people who view the website infer personalities and experience emotions. Bad websites have horrible personalities and instill horrid emotional states in their users, usually unwittingly. We need to design things — products, websites, services — to convey whatever personality and emotions are desired.”

Ethereum's personality is someone who is extremely inscrutable and easily misunderstood. To make matters worse, most users don't even think about it as interacting with Ethereum when they're using your interface or a wallet. If you're ever in the live chat of an Artblock's auction, you'll notice as soon as an auction ends there are at least a dozen people complaining that it is Metamask's fault that they didn't get a mint. I think in the last year the UX of many dapps on Ethereum has improved greatly in both product interaction and explainability of transactions. For the most part, dapps don't just leave you with a loading spinner after you sign the transaction anymore.

Even with the design of dapps is generally improving, I'm not sure how deep UX research has gone yet. When I see data analytics or research on various protocols, users are mostly treated as homogenous. This is somewhat shifting with some of the analysis I've seen of Uniswap V3 liquidity providers and Rabbithole Questers, but even those are still heavily focused on just confirmed transactions on-chain. From my own experience, most of the emotion evoked and behavioral quirks happen when I'm submitting, waiting, speeding up, or canceling my transaction. For some applications, the user might leave and go do something else after submitting a transaction. But for a product like Artblock's auctions, they're going to stay around until the confirmation has happened, likely checking anything they can for updates and with compounding anxiety.

August 16th, 2021

A (very) short history on token airdrops:

Airdrops have come a long way in the last year, most notably starting from Uniswap's 400 UNI token airdrop in September of 2020. From there, we've grown into airdrops that are calculated based on the frequency and volume of interactions with different facets of a protocol. Below is one such example:

We've also seen NFT drops recently that rely on more standardized tools built for quickly setting rules/requirements and rewards/distribution. None of these methodologies are bad, but I do believe there's still a lot of room for improvement. This could come from the distribution model, drop frequency, or even the token rules themselves. In this proposal, I'll be focusing on a new distribution model, one that combines data from user interactions in the Mirror $WRITE race, on Twitter, and in Mirror-related Ethereum transactions.

July 29th, 2021

In my previous post on digital identity, I mentioned that "the tokenization of these graph shards could take many forms and will likely be layered upon by proof tokens." I believe that sharded graph identity approach requires coming up with a community-specific reputation score that measures how influential a certain person has been in expanding a specific network. While some reputation scores may be more set in terms of having to have done X or Y actions, this score captures a users reputation in the context of other users in a more fluid manner - acting like a signal rather than a badge.

Typically in Web2, users are "rewarded" by an algorithm which will highlight them based on the engagement and attention they bring to the platform. Thus, their reputation score is just the number of likes or followers they have - regardless of who those vanity metrics come from. In Web3, we typically reward with tokens representing the value of the protocol or product. These tokens also carry a lot of power in the form of voting and other privileges. As such, a score that signals not only influence but also how supportive or aligned a user is with the rest of the community will become increasingly important over time.

For this post, we will be focusing on creating a reputation score for Mirror users (voters, writers, contributors) based on where each user sits on an interaction-based social graph across Ethereum, Twitter, and Mirror data. I chose Mirror for three reasons:

  1. I'm already very familiar with their community and product
  2. They have verifiable consolidation of identity on their platform (Ethereum <> Twitter), allowing me to layer social graphs together.
  3. Their product and governance are heavily user-to-user interaction focused, something most products on Ethereum don't currently have (we mostly interact with pools or marketplace protocols).
May 30th, 2021

A decade or two ago, your digital identity didn't mean very much. It was represented more by your email address than any social media account you had. Fast forward to today, and we've seen an increased focus on how we appear in online media by everyone: yourself, your friends, and your employers. Most of our day-to-day interactions exist in digital accounts on someone's database.

Yet all-in-all, your digital worth is measured by the engagement (and advertising revenue) garnered. Sometimes you get a share of that revenue, but for 99% of us, the value of our digital identity is locked within the platform. This doesn't just apply to Facebook, Twitter, or Reddit - the "platform" can be our workplace as well.

Let's say you've worked at a company for a few years, and you've decided to move on. When you leave the company, your reputation still stands with individuals you've worked with and in the many programs/emails you've created, but otherwise, the company's reputation is your reputation. This dynamic has slowly changed with the rise of the internet - hence the rise of the personal brand. However, your personal brand is still built off of your own word (which may or may not have much value when first starting out).

Our digital identity exists in fragments, it isn't flexible past the platform it was built on, and it has little reusability other than cross-platform authentication. We don't own our digital identity, and it's not composable at all. Now, what if you could own all of the pieces of your digital identity permanently, while also controlling who you reveal that data to and how it's represented? This would enable us to tell more compelling stories and have a user-controlled value function for identity. I think we're (finally) not so far off from a future where all of that is possible.

May 27th, 2021

Ever since sharding and the internet of blockchains ideas were first introduced, maintaining composability has been a hot topic of discussion. Let's try to better understand the role bridges play in keeping our ecosystem composable.

While I've written about composability of dapps and wallets before, I don't believe I've explicitly defined the word "composable." Generally, I think composability is comprised of existence, flexibility, and reusability. As a pre-condition, everything should be accessible in a permissionless manner (i.e. sufficiently decentralized).


I believe that right now, most people think of bridges as "how can I get token A transferred from blockchain X to blockchain Y," or slightly fancier as "how can I swap token A on blockchain X for token B on blockchain Y."