Josh Stevens

Josh Stevens

Coder by day. Coder by night.

Build
Ship
Repeat

Open Source Projects

Building open free to use tools. Doing my part for Ethereum.

2300 Total GitHub Stars
500 Total Github Forks
650000 Weekly Dowloads

Each project makes building on Ethereum easier—whether it's relaying transactions or indexing at lightning speed. These open-source tools have saved devs a ton of time and help power many web3 applications.

commits go brrr 📈

Generating visual...

rindexer

🦀 Built in Rust

rindexer is an opensource powerful, high-speed indexing toolset developed in Rust, designed for compatibility with any EVM chain. This tool allows you to index chain events using a simple YAML file, requiring no additional coding. For more advanced needs, the rindexer provides foundations and advanced capabilities to build whatever you want. It's highly extendable, enabling you to construct indexing pipelines with ease and focus exclusively on the logic. rindexer out the box also gives you a GraphQL API to query the data you have indexed instantly.

598 GitHub Stars
80 Github Forks
View on GitHub →
# rindexer.yaml
name: rETHIndexer
description: My first rindexer project
repository: https://github.com/joshstevens19/rindexer
project_type: no-code
networks:
  - name: ethereum
    chain_id: 1
    rpc: ${RPC_URL}
storage:
  postgres:
    enabled: true
contracts:
  - name: RocketPoolETH
    details:
    - network: ethereum
      address: "0xae78736cd615f374d3085123a210448e74fc6393"
      start_block: 18600000
      end_block: 18718056
    abi: ./abis/RocketTokenRETH.abi.json
    include_events:
      - Transfer
      - Approval
# rrelayer.yaml
name: first-rrelayer
description: "my first rrelayer"
api_config:
  port: 3000
  authentication_username: ${RRELAYER_AUTH_USERNAME}
  authentication_password: ${RRELAYER_AUTH_PASSWORD}
signing_provider:
  aws_kms:
    region: "eu-west-1"
networks:
  - name: sepolia_ethereum
    chain_id: 11155111
    provider_urls:
      - https://sepolia.gateway.tenderly.co
    block_explorer_url: https://sepolia.etherscan.io
    enable_sending_blobs: true
    max_gas_price_multiplier: 4
    gas_bump_blocks_every:
      slow: 10
      medium: 5
      fast: 4
      super_fast: 2

rrelayer

🦀 Built in Rust

rrelayer is an opensource powerful, high-performance blockchain transaction relay service built in Rust, designed for seamless integration with any EVM-compatible network. This tool transforms complex blockchain interactions into simple REST API calls, eliminating the need for applications to manage wallets, transaction queuing, or nonce management. For rrelayer supports advanced wallet infrastructure supporting multiple signing providers including AWS KMS hardware security modules, Turnkey self-custody solutions, Fireblocks enterprise MPC custody, Privy managed wallets, AWS Secrets Manager, GCP Secret Manager, PKCS#11 hardware security modules, and raw mnemonic development setups. It's highly scalable and production-ready, enabling you to build robust Web3 applications with reliability and focus exclusively on your business logic. rrelayer has some super cool out-of-the-box features, like automatic top-ups (with safe support), permissions config including allowlists, API keys with restricted access, webhooks, rate limiting, and the ability to configure the gas bump blocks.

119 GitHub Stars
14 Github Forks
View on GitHub →

ethereum-bloom-filters

Built in TypeScript
Ethereum Foundation Grant

Efficient log filtering optimization for Ethereum. A lightweight bloom filter client which allows you to test ethereum blooms for fast checks of set membership.

93 GitHub Stars
600000 Weekly Downloads
View on GitHub →
import {
isBloom,
isUserEthereumAddressInBloom,
isContractAddressInBloom,
isTopicInBloom,
} from 'ethereum-bloom-filters';
function filterTransactionLogs(bloom: string) {
  if (!isBloom(bloom)) {
    throw new Error('Invalid bloom filter');
  }
  const usdcContract = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
  const userAddress = '0x742d35Cc6634C0532925a3b844Bc454e4438f44e';
  const transferTopic = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
  const hasUSDC = isContractAddressInBloom(bloom, usdcContract);
  const hasUser = isUserEthereumAddressInBloom(bloom, userAddress);
  const hasTransfer = isTopicInBloom(bloom, transferTopic);
  if (!hasUSDC || !hasTransfer) {
    console.log('No USDC transfers, skipping log processing');
    return false;
  }
  console.log('USDC transfer detected - process logs');
  return true;
}
const exampleBloom = '0x....';
filterTransactionLogs(exampleBloom);
import {
  Multicall,
  ContractCallResults,
  ContractCallContext,
} from 'ethereum-multicall';
import { ethers } from 'ethers';
let provider = ethers.getDefaultProvider();
const multicall = new Multicall({ ethersProvider: provider, tryAggregate: true });
const contractCallContext: ContractCallContext[] = [
    {
        reference: 'testContract',
        contractAddress: '0x6795b15f3b16Cf8fB3E56499bbC07F6261e9b0C3',
        abi: [ { name: 'foo', type: 'function', inputs: [ { name: 'example', type: 'uint256' } ], outputs: [ { name: 'amounts', type: 'uint256' }] } ],
        calls: [{ reference: 'fooCall', methodName: 'foo', methodParameters: [42] }]
    },
    {
        reference: 'testContract2',
        contractAddress: '0x66BF8e2E890eA0392e158e77C6381b34E0771318',
        abi: [ { name: 'fooTwo', type: 'function', inputs: [ { name: 'example', type: 'uint256' } ], outputs: [ { name: 'amounts', type: 'uint256', name: "path", "type": "address[]" }] } ],
        calls: [{ reference: 'fooTwoCall', methodName: 'fooTwo', methodParameters: [42] }]
    }
];
const results: ContractCallResults = await multicall.call(contractCallContext);
console.log(results);

ethereum-multicall

Built in TypeScript

ethereum-multicall is a lightweight library for interacting with the Multicall3 smart contract.

375 GitHub Stars
94 Github Forks
12000 Weekly Downloads
View on GitHub →

evmc

Built in TypeScript

A simple cli tool to load a contract code up in your IDE instantly.

130 GitHub Stars
12 Github Forks
View on GitHub →
# Load any contract instantly
$ evmc get mainnet 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2
# Loads verified source code into your IDE
# Supports all major chains and IDEs
Contract loaded in 2.3s!
📁 Files: contracts/AavePool.sol
{
"rethDBLocation": "/home/ubuntu/.local/share/reth/mainnet/db",
"csvLocation": "/tmp",
"fromBlockNumber": 17569693,
"toBlockNumber": 17570693,
"postgres": {
"dropTableBeforeSync": true,
"applyIndexesBeforeSync": false,
"connectionString": "postgresql://postgres:password@localhost:5432/reth_indexer"
},
"eventMappings": [
{
"syncBackRoughlyEveryNLogs": 1000,
"decodeAbiItems": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event",
"customDbIndexes": [["value"], ["to", "from"]]
}
]
}
]
}

reth-indexer

🦀 Built in Rust

reth-indexer reads directly from the reth db and indexes the data into traditional and alternative databases / datastores (postgres, GCP bigquery, parquet, etc) all decoded with a simple config file and no extra setup alongside exposing a API ready to query the data.

500 GitHub Stars
47 Github Forks
View on GitHub →

simple-uniswap-sdk

Built in TypeScript

Uniswap SDK which handles the routes automatically for you, changes in trade quotes reactive subscriptions, exposure to formatted easy to understand information, bringing back the best trade quotes automatically, generating transactions for you and much more. All the uniswap logic for you in a simple to easy understand interface to hook straight into your dApp without having to understand how it all works.

191 GitHub Stars
97 Github Forks
View on GitHub →
import { UniswapPair, ChainId, UniswapVersion, ETH } from 'simple-uniswap-sdk';
const uniswapPair = new UniswapPair({
fromTokenContractAddress: ETH.MAINNET().contractAddress,
toTokenContractAddress: '0x1985365e9f78359a9B6AD760e32412f4a445E862',
ethereumAddress: '0xB1E6079212888f0bE0cf55874B2EB9d7a5e02cD9',
ethereumProvider: YOUR_ETHEREUM_PROVIDER,
settings: new UniswapPairSettings({
slippage: 0.0005,
deadlineMinutes: 20,
disableMultihops: false,
uniswapVersions: [UniswapVersion.v2, UniswapVersion.v3],
}),
});
const uniswapPairFactory = await uniswapPair.createFactory();
# Generate typings instantly
$ abi-types-generator
# Generated typings in ./abi-types
# Supports any EVM contract
Typings generated in 20ms!
📁 Typings Generated in ./abi-types

ethereum-abi-types-generator

Built in TypeScript

A CLI tool which allows you to convert an ABI json file into fully loaded interfaces types.

166 GitHub Stars
2000 Weekly Downloads
View on GitHub →

Work History

Been in web3 for over 7 years

Jun 2025 - Present

SVP Engineering - Aave Labs

July 2023 - Jun 2025

VP Of Engineering - Aave Labs

Dec 2022 - July 2023

Senior Principal Engineer - Aave Labs

Jan 2022 - Dec 2022

Staff Engineer - Aave Labs

August 2021 - Jan 2022

Senior Full Stack Developer - Aave Labs

Jun 2018 - August 2021

Lead Engineer - FunFair Technologies

... corporate jobs
Rust
TypeScript
Solidity
React
Node.js
SQL
Git
AWS
Bash
Docker
PostgreSQL
GraphQL

Adaptability

Flexible across environments and adaptable to any challenge

Thanks for Coming!

Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh Josh
Scroll for the alpha