web3_universal_ens 0.1.1+1 copy "web3_universal_ens: ^0.1.1+1" to clipboard
web3_universal_ens: ^0.1.1+1 copied to clipboard

ENS (Ethereum Name Service) resolution for Web3 Universal SDK.

dart_web3_ens #

License: MIT

A human-readable identity resolver for the Dart Web3 ecosystem. It provides fully compliant support for the Ethereum Name Service (ENS), including forward resolution, reverse resolution, and off-chain data fetching.

🚀 Features #

  • Forward Resolution: Map names like alice.eth to 0x... addresses.
  • Reverse Resolution: Discover the ENS name associated with a specific address.
  • Content Discovery: Fetch IPFS/IPNS hashes, avatar URLs, and social metadata associated with a name.
  • Wildcard & L2 Support: (Planned) Support for EIP-3668 (CCIP-Read) for reduced gas resolution.

Usage Flow #

sequenceDiagram
    participant U as User
    participant E as EnsResolver
    participant R as Registry
    participant RV as Resolver Contract
    U->>E: resolve('vitalik.eth')
    E->>R: get node hash
    R-->>E: resolver address
    E->>RV: addr(node)
    RV-->>E: 0xd8da...
    E-->>U: Final Address

🏗️ Architecture #

graph TD
    User[Name Context] --> Registry[ENS Registry]
    Registry --> Resolver[Resolver Contract]
    Resolver --> Address[Ethereum Address]
    Resolver --> Text[Text Records / Content]
    
    subgraph Logic [Name Processing]
        NameHash[UTS-46 Normalization]
        LabelHash[Label Hashing]
    end
    
    User --> Logic
    Logic --> Registry

📚 Technical Reference #

Core Classes #

Class Responsibility
Ens The main entry point for all resolution requests.
EnsName An object representing a unique ENS node.
EnsResolver Low-level logic for interacting with Resolver contracts.
NameHash Implementation of the ENS namehash algorithm.

🛡️ Security Considerations #

  • UTS-46 Normalization: Never manually hash a name string. Always use the built-in normalization logic to prevent homograph attacks and encoding errors.
  • Resolver Verification: Before acting on resolution data, ensure the resolver returned is the one currently authorized by the official ENS Registry.
  • Trustless Avatars: When displaying ENS avatars, use a secure proxy or verify the source URL to prevent UI-level exploits.

💻 Usage #

Complete Name Resolution #

import 'package:dart_web3_ens/dart_web3_ens.dart';

void main() async {
  final ens = Ens(client: publicClient);

  // 1. Resolve Address
  final address = await ens.getAddress('vitalik.eth');
  print('Vitalik is at: $address');

  // 2. Fetch Text Records (Avatar, Email, etc.)
  final avatar = await ens.getText('vitalik.eth', key: 'avatar');
  print('Avatar URL: $avatar');
}

📦 Installation #

dependencies:
  dart_web3_ens: ^0.1.0
0
likes
160
points
2
downloads

Publisher

unverified uploader

Weekly Downloads

ENS (Ethereum Name Service) resolution for Web3 Universal SDK.

Homepage
Repository (GitHub)
View/report issues

Topics

#web3 #ethereum #ens #dns

Documentation

API reference

License

MIT (license)

Dependencies

web3_universal_client, web3_universal_contract, web3_universal_core, web3_universal_crypto

More

Packages that depend on web3_universal_ens