-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Summary
Migrate lib/sp-registry/hooks.ts from ethers.js to viem for reduced bundle size and better TypeScript support.
Background
Current State
- ethers v6.16.0 used only for SP Registry contract calls
- viem v2.44.0 already bundled via wagmi (transitive dependency)
Bundle Impact
| Library | Bundle Size | Status |
|---|---|---|
| ethers v6 | ~130KB | Explicit dependency |
| viem | ~35KB | Already bundled via wagmi |
| Net savings | ~95KB | Remove ethers entirely |
File to Migrate
lib/sp-registry/hooks.ts
Current ethers Usage
import { Contract, JsonRpcProvider } from 'ethers';
const provider = new JsonRpcProvider(FILECOIN_RPC_URL);
registryContract = new Contract(SP_REGISTRY_ADDRESS, SP_REGISTRY_ABI, provider);
// Contract calls
result = await contract.getProviderByAddress(address);
productResult = await contract.getProviderWithProduct(providerId, PRODUCT_TYPE_PDP);Target viem Implementation
import { createPublicClient, http, getContract } from 'viem';
import { filecoin } from 'viem/chains';
const client = createPublicClient({
chain: filecoin,
transport: http(FILECOIN_RPC_URL),
});
const contract = getContract({
address: SP_REGISTRY_ADDRESS,
abi: SP_REGISTRY_ABI,
client,
});
// Contract calls (slightly different syntax)
result = await contract.read.getProviderByAddress([address]);
productResult = await contract.read.getProviderWithProduct([providerId, PRODUCT_TYPE_PDP]);Why Migrate
- Bundle size: Save ~95KB (viem is already bundled)
- TypeScript: Better type inference with viem
- Ecosystem: viem is the modern standard (wagmi, rainbowkit)
- Maintenance: One less library to maintain
Testing Plan
- Run existing SP Registry unit tests
- Verify SP enrichment data on Payee detail pages
- Test with known registered SPs
- Verify unregistered addresses return
isRegistered: false
Acceptance Criteria
- ethers removed from package.json
- lib/sp-registry/hooks.ts uses viem
- All existing tests pass
- SP data displays correctly on Payee pages
- Bundle size reduced (measure before/after)
References
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels