bolt Batched on-chain reads
Batched on-chain reads.
Without the compromise.
domino solves the N×M RPC problem. Sequential, self-triggering on-chain reads — resolved in M multicalls, not N×M individual calls.
data_object 2.1KB gzipped (viem)
code 2.4KB gzipped (ethers-v5)
check_circle 53 tests passing
hub viem ^2 · ethers ^5/^6
gavel MIT License
Stop making N×M calls
close The problem
for (const vault of vaults) { // Call 1: get user's vault shares const shares = await vault.balanceOf(user); // Call 2: convert to assets (depends on Call 1 output) const assets = await vault.convertToAssets(shares); // Call 3: get underlying asset const token = await vault.asset(); }
check The solution
// 1 single batched multicall const results = await resolver.resolveBatch( vaults.map(v => ({ vault: v, owner: user })) );
account_tree
FSM executor
Results from step N flow automatically into step N+1. Build complex read pipelines.
extension
Framework agnostic
First-class support for viem, ethers v6, and ethers v5. Fully tree-shaken.
speed
Zero dependencies
Relies only on Multicall3 on-chain. Incredibly lightweight footprint.
Interactive Demo
rocket_launch
LIVE ON-CHAIN
Quick Start
import { createResolver } from "@halaprix/domino/viem"; const resolver = createResolver(client); const vault = await resolver.resolveErc4626({ vault: "0x...", owner: "0x..." });