project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

Blockhead: ETHOnline 2022

Blockhead is a super-interface for EVM chains, DeFi apps, and web3 protocols, where YOU choose the data sources powering the portfolio tracker, block explorer and app dashboards ā€“ a user experience purpose-built to be transparent, redundant, accessible, and decentralized!

Blockhead: ETHOnline 2022

Created At

ETHOnline 2022

Winner of

trophy

šŸ„ˆ Aurora ā€” Best Use

trophy

šŸ„‡ Cronos ā€” Best Use

trophy

šŸŠā€ā™‚ļø NFTPort ā€” Pool Prize

trophy

šŸŠā€ā™‚ļø Valist ā€” Pool Prize

trophy

šŸ„‡ Quicknode ā€” Best Use

Project Description

Blockhead is a super-interface for EVM blockchains, DeFi, and web3 protocols, consisting of a crypto/DeFi/NFT portfolio tracker ("Portfolio"), a cross-EVM block explorer ("Explorer"), and data explorers for DeFi apps and web3 protocols ("Apps"). Built as a data-agnostic, fully client-side web app, Blockhead is tightly integrated with a wide variety of indexing solutions and infrastructure providers across the decentralized web, putting YOU in full control of the data sources that power the views and dashboards. It's a web3-native frontend experience purpose-built for customizability, transparency, redundancy, accessibility, and decentralization!

Fun fact: Blockhead started two years ago as a hack for ETHOnline 2020 (https://showcase.ethglobal.com/ethonline/blockhead), and I've continued to iterate and integrate new data providers at hackathons ever since!

Follow me on Twitter and Gitcoin Grants:

ā€¢ twitter.com/darryl__yeo

ā€¢ twitter.com/0xBlockhead

ā€¢ gitcoin.co/grants/2966/blockhead

How it's Made

Changes made during ETHOnline 2022:

ā€¢ Aurora: Added Aurora to the "Portfolio" and "Explorer" views to allow users to view their token balances, DeFi balances, NFTs, and smart contract activity on Aurora.

ā€¢ Covalent: Refactored the logic for fetching token and NFT balances using TypeScript types to make internal data structures more consistent with other data providers. (Data normalization is a hard problem!)

ā€¢ Cronos: Added Cronos to the "Portfolio" and "Explorer" views to allow users to view their token balances, DeFi balances, NFTs, and smart contract activity on Cronos.

ā€¢ ENS: Added QuickNode as an "On-Chain Data" provider which resolves users' ENS names over JSON-RPC. Upgraded Blockhead's ENS explorer (powered by the hosted ENS subgraph) to the latest version of Houdini (a GraphQL client for Svelte) which fetches and caches GraphQL schemas and generates TypeScript bindings automatically as part of the local dev and build processes!

ā€¢ IPFS: Published Blockhead as a static web app on the Valist Registry (powered by Polygon and IPFS).

ā€¢ NFTPort: Refactored the logic for fetching NFT balances using TypeScript types to make internal data structures more consistent with other data providers. (Data normalization is a hard problem!)

ā€¢ Optimism: Added QuickNode as an "On-Chain Data" (JSON-RPC) provider for Optimism (used to fetch native currency balances in "Portfolio" and query historical transaction data in "Explorer"). Refactored the logic for fetching token and NFT balances using TypeScript types to make internal data structures more consistent across data providers.

ā€¢ Polygon: Published Blockhead as a static web app on the Valist Registry (powered by Polygon and IPFS). Added QuickNode as an "On-Chain Data" (JSON-RPC) provider for Polygon.

ā€¢ QuickNode: Added QuickNode as a "Token Balances" provider to fetch users' Ethereum token balances via QuickNode's custom "qn_getWalletTokenBalance" JSON-RPC method. Added QuickNode as an "On-Chain Data" provider for Ethereum, Polygon, and Optimism (JSON-RPC data is used throughout Blockhead to resolve ENS names, fetch native currency balances, query historical transaction data, and query Ethereum DeFi balances through Zerion's smart contracts). I plan to implement the "qn_fetchNFTs" method so I can add QuickNode as an "NFT" provider as well!

ā€¢ The Graph: Upgraded to the latest version of Houdini (a GraphQL client for Svelte) that fetches and caches GraphQL schemas and generates TypeScript bindings automatically as part of the local dev and build processes! Upgraded Blockhead's ENS explorer (powered by the hosted ENS subgraph) accordingly.

ā€¢ Valist: Published Blockhead as a static web app on the Valist Registry (powered by Polygon and IPFS).

Paying off tech debt:

ā€¢ Upgraded SvelteKit to 1.0.0-next.405 (a major breaking change).

ā€¢ Upgraded to the latest version of Houdini (a GraphQL client for Svelte) adjacent to the SvelteKit upgrades.

ā€¢ Replaced Zapper's deprecated v1 API with Zapper's v2 API (powering "Account" views in "Apps", "Balances" and "DeFi Balances" in "Portfolio").

ā€¢ Lots of internal renaming of variables and data structures, especially for views with swappable data providers. (Data normalization is a hard problem!)

background image mobile

Join the mailing list

Get the latest news and updates