百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
E

etherface

> 编程语言
开源

以太坊签名数据库

188 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

以太坊签名数据库

This project has been sunset, all its data has been transferred over to sourcify.

What started as a bachelor's thesis project to get a better understanding of Rust and the Ethereum blockchain has become, objectively speaking, a better alternative to 4Byte. With over 4.7 million signatures, Etherface at some point represented (to my knowledge) the biggest publicly available database of Ethereum signatures. After three years, I have decided to sunset the project due to lack of time and interest. All data has been transferred over to sourcify.

Etherface

Similar to 4Byte and eth.samczsun, Etherface is an Ethereum Signature Database hosting over 4.7 million function, event and error signatures, making it the biggest publicly available database. Unlike other providers that rely primarily on user submissions, Etherface utilizes a specialized crawler that runs 24/7 to autonomously discover signatures from GitHub, Etherscan, and 4Byte. This automated approach eliminates the need for manual curation and ensures continuous growth.

Additionally, this crawling architecture allows Etherface to provide context for every signature. A search result returns not just the decoded clear-text signature, but also its source, such as the specific GitHub repository or Etherscan address where it was discovered. Try it out.

Signature Databases

Every transaction in Ethereum can carry additional input data, for example take the following arbitrary transaction found on Etherscan. Its input data consists of 0x095ea7b...85190000 and at first sight might look uninteresting. This specific piece of data however is an encoded Keccak256 hash and is essential when communicating with smart contracts. Specifically the first 4 bytes of this input data, i.e. 0x095ea7b3, specify which function in the smart contract gets executed. However, since hashes are not reversible we cannot simply decode 0x095ea7b3 back into its original function name. Instead, we need a rainbow table of precomputed signatures to match the hash. This is the core purpose of Etherface: it maps these opaque 4-byte selectors back to human-readable text, bringing transparency to Ethereum transactions. For example 0x095ea7b3 has a mapping to approve(address,uint256), thus we know there's a transaction between A and B interacting with the approve function.

Architecture

Etherface's architecture consists of three main modules, namely the Fetcher, Scraper and REST API.

  • The Fetcher module is responsible for finding pages (URLs) with Solidity code / signatures from various websites by either crawling (GitHub) or polling (Etherscan, 4Byte) them. These pages along other metadata are then inserted into the database.
  • The Scraper module regularly retrieves the inserted data by the Fetcher, downloads these Solidity files (if present), extracts all signatures and inserts them into the database.
  • The REST API is responsible for providing data to the outside world and is documented on etherface.io/api-documentation

Project Structure

  • etherface/: Contains the Fetcher and Scraper modules.
  • etherface-lib: Holds shared library modules (API clients, database handlers, etc.).
  • etherface-rest: Implements the REST API.
  • etherface-ui: The NextJS web application.

The project itself is heavily documented, which can be further inspected using Rustdoc via cargo doc --open --no-deps

Installation (Development)

  1. Install
    • Rust
    • Docker
    • Etherface dependencies
      bash
      sudo apt install build-essential docker-compose pkg-config libpq-dev libssl-dev
      
      # You might need to start another bash instance if Rust has been freshly installed
      cargo install diesel_cli --no-default-features --features postgres
  2. Populate the .env file
    • GitHub tokens to be used are "Classic" and of the form ghp_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. The token will work with the default permissions - nothing additional must be granted.
  3. Execute docker-compose up -d
  4. Log into postgres, create the etherface database and run the diesel-rs migration
    bash
    # Create etherface database
    docker ps                           # copy the CONTAINER ID of the IMAGE 'postgres:XX'
    docker exec -it  bash
    
    psql -U root
    CREATE DATABASE etherface;          # Inside the psql CLI
    
    # Run the diesel-rs migration
    diesel migration run
  5. Start etherface, etherface-rest or etherface-ui, best done within a tmux session
    bash
    # In the ./etherface folder
    cargo r --release --bin etherface
    cargo r --release --bin etherface-rest
    
    # In the ./etherface/etherface-ui folder
    npm install
    npm run dev

Acknowledgements

Etherface was started as the project for my bachelor's thesis. I would like to thank the Security and Privacy Lab at the University of Innsbruck and my supervisor for the support and inspiration.

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Rust4byteblockchainethereumevm

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月18日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言