{
  "schema": "leumas.docs.page/1",
  "id": "pkg:@leumas/adapter-web3",
  "slug": "adapters/adapter-web3",
  "kind": "capabilities",
  "bucket": "package",
  "title": "web3",
  "name": "web3",
  "eyebrow": null,
  "chip": null,
  "summary": "Web3 adapter — EIP-55 address checksums, BigInt ether-unit conversion, keccak-256, ENS namehash, function selectors and mnemonic/address validation. Pure and offline: no network calls, no database...",
  "keywords": [
    "adapter-web3",
    "eip-55",
    "bigint",
    "keccak-256",
    "namehash",
    "adapter web3 api",
    "leumas adapter web3",
    "mnemonic"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# web3\n\nOffline blockchain/crypto utilities — **no network calls**, all deterministic crypto/encoding math.\nKeccak-256 (Ethereum's pre-NIST variant, not SHA3-256) is a zero-dependency pure-JS implementation\nimported from `@leumas/web3/keccak`, verified against the `transfer(address,uint256)` → `0xa9059cbb`\nselector. This pack used to carry a byte-identical second copy; the ledger core owns the one.\n\n## Tools\n\n| Tool | Args | Returns |\n|---|---|---|\n| `toChecksumAddress` | `{ address }` | EIP-55 checksummed address |\n| `isValidAddress` | `{ address }` | `{ valid, checksumValid, checksum }` |\n| `convertUnit` | `{ value, from, to }` | exact BigInt unit conversion |\n| `weiToEth` / `ethToWei` / `gweiToWei` | `{ value }` | shortcut conversions |\n| `keccak256` | `{ input, encoding? }` | `{ hash }` (0x hex) |\n| `namehash` | `{ name }` | ENS namehash |\n| `isValidEnsName` | `{ name }` | `{ valid }` |\n| `functionSelector` | `{ signature }` | `{ selector }` (4-byte 0x) |\n| `shortenAddress` | `{ address, chars? }` | `0x1234…abcd` |\n| `bip39Validate` | `{ mnemonic }` | structural validity |\n\n**Limitation:** `bip39Validate` performs a structural check (word count 12/15/18/21/24 + lowercase\nwords) only — full 2048-word list membership and checksum verification are not bundled offline.\nOn-chain lookups (balances, gas, tx) are intentionally out of scope (no network).\n",
  "source": {
    "path": "shared/engines/adapters/domain/web3/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 1566,
    "hash": "0817e041282607dde39663de00df2d1c1ed1957e"
  },
  "urls": {
    "html": "/p/adapters/adapter-web3",
    "json": "/docs/adapters/adapter-web3.json",
    "md": "/docs/adapters/adapter-web3.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  },
  "exports": null
}
