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

dolphin-tools

v0.2.0

Published

Watch tokenised stocks on Robinhood Chain from your terminal, and get alerted when one moves.

Readme

Dolphin Tools

Watch tokenised stocks on Robinhood Chain from your terminal, and get alerted when one moves.

npm i -g dolphin-tools

eco watch --alert

A tokenised stock never pays you anything. When the underlying pays a dividend or splits, the token does not mint or transfer anything. It raises one number, and every balance is reinterpreted through it:

shares = balanceOf(you) * uiMultiplier() / 1e18

Your wallet, your explorer and your portfolio tracker all show you the raw balance, which is quietly wrong and drifts further every quarter. Dolphin Tools reads the multiplier, decodes every change into a dividend, a split or a reversal, and watches the one contract that can freeze all of it.

Commands

eco check <address>   is it blocked, what it really holds, and the shares
                       that never show up in a balance
eco watch             live tail of every corporate action and every move
                       the registry makes
eco actions [TICKER]  history of multiplier changes, all tokens or one
eco tokens            every tokenised stock, its multiplier and its state
eco risk              what the registry can do to your holdings, and how
                       often it has
eco mine [address]    the treasury's dividend accrual, and your share of it

Mining

A corporate action is a block. The treasury holds tokenised stock, and every time an issuer declares a dividend the multiplier rises and the treasury owns more shares than it did before. Nothing is minted and nothing is transferred: the shares already existed, the multiplier just started counting them.

That accrual is the block reward.

Splits pay nothing, and that is not a detail. A 4 for 1 split raises the multiplier 300% while the share price falls by the same factor, so the position is worth exactly what it was. Counting it as a reward would pay out a number that does not exist. Only dividends accrue.

eco mine 0xYourAddress

Block times belong to corporate calendars. The chain has produced 16 distinct corporate actions in four months and nobody schedules them, so eco mine says the next block is unscheduled rather than inventing a rate.

--alert           desktop notification on every event (watch)
--poll <seconds>  poll interval, default 15 (watch)
--limit <n>       rows to print (actions)
--moved           only tokens that have had an action (tokens)
--treasury <0x>   treasury to read, or set ECHO_TREASURY (mine)
--token <0x>      project token, for your share of supply (mine)
--since <block>   count blocks from launch, or ECHO_LAUNCH_BLOCK (mine)
--rpc <url>       override the RPC, or set ECHO_RPC
--json            machine-readable output
NO_COLOR=1        plain text, for pipes and CI

No key, no account, no server

Every command is a read against https://rpc.mainnet.chain.robinhood.com (chain 4663) and nothing else. There is no telemetry, no login and no gate: the chain is public, so a gate here would only be something to delete.

The hosted console at https://dolphintools.me/console runs the same commands in a browser and is gated, because not installing anything is a convenience someone has to pay for, and that one runs on a machine that costs money.

How it reads the chain

Every corporate action is one event signature, UIMultiplierUpdated, with no indexed fields. One eth_getLogs filtered on the topic over the full range returns the complete history of the chain. No pagination, and no token list to fall behind, because the filter is the topic rather than a set of addresses.

The same query filtered by address instead of topic times out on this RPC, and a plain Transfer query hits the 10 000-log ceiling in under 1 500 blocks. The topic filter is not a style choice.

MIT. Node 20+.