Hoomanify

Human-readable transaction signing with ERC-7730 descriptors and Ledger hardware wallet integration

Hoomanify

Created At

ETHGlobal Buenos Aires

Winner of

Curvegrid

Curvegrid - Best use of MultiBaas

Ledger

Ledger - CLEAR SIGNING (ERC-7730) 2nd place

Project Description

Hoomanify is a Web3 security application that solves a critical problem in blockchain interactions: blind transaction signing. When users interact with smart contracts today, they typically see incomprehensible hexadecimal calldata (like 0x1760feec000000...) and must trust they're signing the right transaction. This leads to phishing attacks, approval exploits, and lost funds. The project implements the ERC-7730 standard, which provides a structured way to translate raw transaction calldata into human-readable format. Think of it as a "translation layer" between machine code and human language for blockchain transactions. The Workflow: Developer deploys contract → Hardhat generates deployment artifacts Script auto-generates ERC-7730 descriptor → Maps ABI to human-readable format User initiates transaction → Creates raw calldata Decoder parses calldata → ethers.js extracts function and parameters Formatter applies ERC-7730 rules → Converts addresses to token names, wei to decimals, timestamps to dates Ledger displays formatted data → User reviews on hardware device or simulator User approves → Transaction signed with private key on hardware Signature exported → Ready for broadcast to blockchain Why This Matters? Security: Users can verify exactly what they're signing before it happens Sovereignty: Private keys stay on hardware devices, never exposed to browsers Usability: Complex DeFi operations become understandable to non-technical users Standards Compliance: Full ERC-7730 implementation ensures interoperability. This project essentially builds the missing infrastructure for safe, transparent Web3 interactions—making blockchain transactions as clear as traditional banking while maintaining complete user sovereignty over their assets.

How it's Made

Technology Stack Breakdown: Smart Contract Layer (Hardhat 3) Hardhat 3.0.0 - Cutting-edge version with ESM support ("type": "module" in package.json) Solidity 0.8.24 - Latest compiler with optimized bytecode OpenZeppelin Contracts 5.0.1 - Battle-tested ERC20 interfaces and Ownable pattern ethers.js v6.10.0 - Used for deployment scripts and descriptor generation ERC-7730 Descriptor Generation (Node.js Automation)

Hacky detail #1 : The Magic Script: generate-descriptor.ts Reads compiled contract artifacts from artifacts/contracts/DemoRouter.sol/DemoRouter.json Extracts the ABI automatically Pulls deployed address from deployments/DemoRouter.json (if exists) Generates complete ERC-7730 JSON descriptor with: Context (ABI + deployment addresses) Metadata (owner, timestamps, URLs) Display formats (field mappings with human-readable labels) Dual output: Saves to descriptors AND copies to descriptors for runtime access

Hacky Detail #2: Dynamic Field Path Resolution The formatter uses dot-notation paths (params.tokenIn) to navigate nested struct parameters. This handles Solidity's SwapParams calldata params being decoded as args[0] by ethers.js.

Key Dependencies: Next.js 14.1.0 - App Router with server components ethers.js v6.10.0 - ABI decoding via Interface class @ledgerhq/hw-transport-webusb 6.28.5 - Low-level WebUSB transport layer @ledgerhq/hw-app-eth 6.35.4 - High-level Ethereum app API axios 1.13.2 - MultiBaAS REST API client Tailwind CSS 3.4.0 - Utility-first styling

Hacky Detail #3: Smart Amount Formatting Auto-detects token decimals based on value size

Hacky Detail #4: WebUSB Compatibility Only works in Chrome/Edge (Firefox doesn't support WebUSB). Falls back gracefully to simulator mode. The TransportWebUSB.create() triggers browser's native USB device picker.

Ledger (@ledgerhq packages): Direct hardware integration without intermediaries Private keys never leave device WebUSB enables browser-native connections Standardized BIP44 derivation paths

MultiBaAS (Curvegrid): Unified API for portfolio, governance, and events Eliminates need for multiple RPC providers Pre-indexed blockchain data (faster queries) RESTful interface (simpler than GraphQL subgraphs)

Hardhat 3: Mainnet forking for realistic testing Built-in TypeScript support Deployment artifact management Network abstraction (localhost → testnet → mainnet)

background image mobile

Join the mailing list

Get the latest news and updates

Hoomanify | ETHGlobal