npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

suiami

v3.0.0

Published

SUIAMI — cross-chain identity resolver on Sui. Proof-carrying messages + on-chain roster mapping SuiNS/ENS names to IKA-derived BTC, ETH, SOL addresses. Seal-encrypted, non-custodial, upgradeable.

Readme

suiami

One name, every chain. Zero bridges.

Resolve a single SuiNS or ENS name to native BTC, ETH, and SOL addresses — each one signed by an IKA threshold MPC dWallet, encrypted by Seal, queryable from anywhere.

npm bundle license Sui Suilana Ikasystem by brando.sui


npm i suiami
import { readByName, readByEns } from 'suiami/roster';

const brando = await readByName('brando.sui');
// { name, sui_address, chains: { btc, eth, sol, … }, dwallet_caps, updated_ms }

const alice = await readByEns('alice.waap.eth');
// same shape — ENS subnames resolve through the same roster

That's it. No bridge contracts, no RPC endpoints to configure, no wallet handshake. Any JS runtime, any edge worker, any browser.

Why this exists

ENS resolves Ethereum addresses for Ethereum-aware apps. username.cb.id is custodial. Lens and Farcaster are social graphs that terminate at a profile, not a UTXO. Sui zkLogin onboards users to one chain.

SUIAMI is the plumbing. Given a name, hand me the right address on the right chain — BTC, ETH, SOL, Sui — where the name owner actually holds the key. The key isn't in a bridge contract. It isn't on our server. It's a threshold share across the IKA validator set plus the owner's local share — neither half can sign alone.

Who it's for

  • Sui dApp builders who want ENS reach without writing a bridge. Your *.waap.eth users already work in MetaMask, Coinbase Wallet, Brave, Rainbow.
  • Fintech / onramp engineers who need alice.waap.eth to resolve to ETH when sending ETH and BTC when sending BTC. One CCIP-read call per send. PayPal resolves ENS across SLIP-44 coins today — so do we.
  • Privacy-minded users who want one handle across chains without publishing every address. Your roster lives as Seal-encrypted Walrus blobs; only you can decrypt, and only the record for the chain being queried needs to reveal.

vs the field

| | suiami | ENS | cb.id | SIWE | zkLogin | Lens / Farcaster | Namestone | |---|:-:|:-:|:-:|:-:|:-:|:-:|:-:| | Resolves to native BTC | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | Resolves to native SOL | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | Keys are threshold-MPC | ✅ | ❌ | ❌ | n/a | ❌ | n/a | ❌ | | Non-custodial issuer | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | partial | | Cross-chain records encrypted | ✅ | ❌ | ❌ | n/a | n/a | ❌ | ❌ | | CCIP-read compatible gateway | ✅ | ✅ | ✅ | n/a | n/a | ❌ | ✅ | | Answerable from Sui + Ethereum | ✅ | Eth | Eth | Eth | Sui | — | Eth |

How it works

   sender query                  on-chain                          name owner
   ──────────────                ────────                         ────────────
   readByName("brando.sui")  →   Sui Roster ([0x30b4…ab1d])  →    IdentityRecord
          │                            │                                │
          └─ GraphQL dynamic field ────┘                                │
                                                                        │
   readByEns("alice.waap.eth") →  EnsHashKey namespace                  │
                                                                        │
   *.waap.eth via PayPal / MetaMask / Coinbase                          │
          │                                                             │
          └─ ENSIP-10 OffchainLookup → /ens-resolver/:sender/:data ─────┘
                                              │
                                              ├─ SLIP-44 ETH (60)
                                              ├─ SLIP-44 BTC (0)
                                              ├─ SLIP-44 SOL (501) ← derived from IKA dWallet ed25519 pubkey
                                              └─ text("sui")

Every chain address comes from an IKA dWallet DKG — the private key was never reconstructed at the user, never existed on our server. Signing requires 2f+1 IKA validators to cooperate with the user's local share. Reads are permissionless; decrypts of Seal-encrypted cross-chain records are owner-only via the v3 seal_approve_roster_reader_v3 policy.

API

// Lookups (public — no wallet required)
readByName(name, opts?)         // "brando.sui"
readByAddress(address, opts?)   // "0x3ca0…222b"
readByChain(chain, addr, opts?) // "btc", "bc1q…" — reverse lookup
readByEns(ensName, opts?)       // "alice.waap.eth"

// Hashes
nameHash(bareName)              // keccak256(bare)
ensHash(ensName)                // keccak256(full)

// PTB builders (for client-side tx construction)
buildSetIdentityArgs(name, chains, caps?)        // SuiNS-gated write
buildSetEnsIdentityArgs(ensName, ethSig?)        // ENS bind (owner-locked)

// Proof tokens (off-chain identity attestation)
buildMessage(name, addr, nftId, chains?, balanceUsd?)
createProof(message, bytes, signature)
parseProof(token)
extractName(message)

// Constants
ROSTER_PACKAGE         // original id — use for PTB targets + type tags
ROSTER_PACKAGE_LATEST  // latest published-at — Seal v3 policy calls
ROSTER_OBJECT          // shared Roster object id

// Server-side verification
import { verify } from 'suiami/verify';
const result = await verify(token, { maxAgeMs: 300_000 });
// checks sig freshness, fetches on-chain SuiNS NFT ownership, validates domain match.
// Node / Deno / Cloudflare Workers / Bun — works everywhere.

Trust layer

  • IKA 2PC-MPC: every chain address derives from a DKG round across the IKA validator set. No single party — including the user — ever reconstructs the full key. Signing requires threshold cooperation.
  • Seal policy (on-chain Move): suiami::seal_roster::seal_approve_roster_reader_v3 — gate-keeps decrypt of the Walrus-stored cross-chain squids. Caller's Sui address must match the record's owner.
  • Seal key servers (mainnet, 2-of-3): Overclock, Studio Mirai, H2O Nodes. No centralized decrypt bottleneck.
  • Walrus: cross-chain records live as Seal-encrypted blobs on Walrus. Blobs are currently pinned to the Walrus testnet publisher/aggregator — mainnet migration tracked upstream.
  • Mainnet package: original-id 0x2c1d63b3…e1052fa · v5 published-at 0xea0b9485…d4f202.
  • UpgradeCap holder: plankton.sui. Changes gate-kept by a known Sui address, not a relayer or admin key.

Unaudited. Use at your own risk. Third-party review is on the roadmap. In the meantime: read the Move, read the TypeScript, read the tests in the .SKI monorepo.

Powered by

Sui · IKA · SuiNS · Seal · Walrus · ENS · Cloudflare Workers

Links

License

MIT


Part of the Suilana Ikasystem — Sui settlement, Solana speed, Ethereum and Bitcoin reserves, IKA threshold signatures across all of it.