Live on Robinhood Chain
Hasp

Shut what you left open.

Every time you trade or lend, your wallet signs a permission that lets a contract move your tokens — usually with no limit and no end date. Hasp finds every one your address has ever given on Robinhood Chain, shows what each could still take today, and shuts the ones you pick.

Holders with one open
72%
of 60 stock holders we read
Could still be taken
$1.5m
from those wallets, today
Our contracts
0
and no approval to us
Reads your whole history, not a list of popular apps Prices what each approval can take right now Every Permit2 allowance in one call Nothing to approve, nothing to trust but the chain
How it works

Find it, price it, shut it

Hasp is a page, not a company. It reads the chain from your browser and sends nothing but what you choose from your own wallet.

01

Read the whole history

Paste any address or connect a wallet. Hasp asks Robinhood Chain for every approval that address has ever signed — plain token approvals, Permit2 allowances, "all my NFTs" approvals and Morpho authorisations — from the chain's first block.

Free · no wallet needed to look
02

Price what is still open

History only says what was ever allowed. Hasp then reads, at one block, what each approval can move now: the smaller of what it was allowed and what you hold, priced at what the stock costs in its best pool.

Riskiest first: plain wallets, then unpublished code
03

Shut them in one go

Tick what you want gone. Every Permit2 allowance closes in a single call. The rest go as one batch if your wallet can batch, one after another if it cannot. Then Hasp reads the chain again and shows you it worked.

About $0.0057 of gas an approval
The thing you signed

An approval outlives the trade

You meant "let this swap take $50 of USDG". What most sites ask your wallet to sign is something much larger.

What you signed

Any amount, forever

  • Most sites ask for the largest number a token can hold, so they never have to ask again.
  • It covers what you hold now and everything you receive later.
  • It does not end when you close the tab, or when the site shuts down, or when its contract turns out to have a bug.
  • Nothing on the screen reminds you. It lives on the chain until you take it back.
What Hasp does

Shows it, then shuts it

  • Names every contract that can still move a token of yours, and says which have no published source code and which are ordinary wallets.
  • Puts a dollar figure on each one: what it could take if it moved this second.
  • Sends only the four calls that turn approvals off — to the token, to Permit2 or to Morpho, from your own wallet.
  • Leaves the rest alone. Uniswap's own Permit2 needs your approval to work, and Hasp says so rather than frighten you off it.
What we found

We read 60 wallets that hold stock

We took the first page of Blockscout's holder list for each of the 51 tokenized stocks Hasp prices — 775 distinct addresses that are not contracts — and ordered them by the hash of their address, which nobody chose, then read the first 60 with the same code the app runs. None of them was a bot. Every current number was read at one block, 64,896,490 (2026-09-16).

Carry an open approval
43 of 60

The median wallet we read has 7 approvals open. Every one was read at block 64,896,490, not guessed from history.

Carry an unlimited one
42 of 60

5,368 of the 5,799 open approvals have no ceiling at all: they cover whatever the wallet will ever hold.

Could be taken today
$1.53m

Per wallet and per token: what its open approvals could move, never more than it holds, priced in the stock's best pool. In the 30 wallets where it is above zero, the median is $5,547.25. Our first count said $5.34m — it added up approvals that reach the same balance.

Open approvals in all
5,799

Out of 8,210 approvals these wallets have ever given: 5,283 plain token approvals, 516 Permit2 allowances, 0 "all my NFTs" and 0 Morpho authorisations still stand. 294 Permit2 allowances had already expired.

The case against ourselves

Most of that money is not in danger. Uniswap's and Morpho's own contracts alone could reach $1.48m of it, through 1,632 approvals — which is how those apps are meant to work: Permit2 still needs a fresh signature for every trade, and shutting it only means the next trade asks again. We say so rather than frighten anyone off a normal approval. Contracts Hasp does not recognise could reach $649,368, most of it through routers whose source is published on the explorer. The part that looks most like a door left open is smaller: 3,151 approvals to plain wallets or to code nobody has published, which could reach $12,921 today. (These figures overlap — one balance can be reachable by several contracts — so they do not add up to the total.) An approval is a permission, not a theft; none of these has taken anything that we know of. The only person who can shut one is the wallet's owner.

Every contract that can still move money in these wallets

WhoWhat it isWalletsOpenCould take
Uniswap Permit2
0x0000…8BA3
Recognised34930$1.48m
Uniswap v3 Positions
0x7399…E0D3
Recognised1171$963,947
Uniswap Universal Router
0x8876…0904
Recognised17212$719,855
Uniswap v4 Positions
0x58da…4fA7
Recognised16334$435,986
MetaAggregationRouterV2
0x6131…37b5
Published code5101$389,160
Uniswap SwapRouter02
0xCaf6…5cb2
Recognised585$291,352
UniswapV2Router02
0x89e5…9eba
Published code13$149,035
SmartRouter
0x13f4…8Dd4
Published code13$149,035
SwapRouter
0x1e40…d406
Published code12$149,035
AllowanceHolder
0x0000…2734
Published code411$134,136
TokenApprove
0x4217…f53d
Published code8355$62,695
ERC1967Proxy
0xD29C…7978
Published code66$36,840
BeaconProxy
0xF51f…606A
Published code11$14,461
TransparentUpgradeableProxy
0xeF4f…EB66
Published code22$9,044.20
RelayApprovalProxyV3
0xCcC8…15bE
Published code223$8,600.73
TransferDelegate
0x49e9…44E5
Published code11$8,600.73
DSLOProtocol
0xcab2…4f6C
Published code11$8,600.73
unnamed
0x0000…86a2
Unpublished code16$6,221.98
unnamed
0x1319…4F2D
Unpublished code4182$4,190.53
unnamed
0xEd09…B1F9
Unpublished code5126$3,967.59
unnamed
0xeF16…e318
Unpublished code4239$3,948.92
unnamed
0x6dBA…8970
Unpublished code432$3,854.01
unnamed
0x302A…17AC
Unpublished code37$3,854.01
SwapRouter
0xC062…9415
Published code120$3,663.24
SwapRouter
0x56B2…36f2
Published code120$3,663.24
TransparentUpgradeableProxy
0x6505…40Dc
Published code2406$3,468.47
unnamed
0x12Fa…91Ba
Unpublished code13$2,399.03
Ve33Positions
0xdA38…f068
Published code12$2,399.03
unnamed
0x6F39…a5f2
Unpublished code12$2,399.03
BeaconProxy
0x1937…6c33
Published code11$1,000.00
BeaconProxy
0xfe09…72c5
Published code11$1,000.00
DeepstateV1
0x6cf1…7B96
Published code11$486.52
TransparentUpgradeableProxy
0x663D…C251
Published code11$251.82
unnamed
0x7130…3C83
Unpublished code257$174.92
unnamed
0xdf04…4c30
Unpublished code5107$106.90
unnamed
0x0f27…06c0
Unpublished code2110$104.86
unnamed
0xF928…dB56
Unpublished code23$84.45
PonsV2LaunchAndBuy
0xe33E…2948
Published code11$28.16
AggregationRouterV6
0x5A70…89C7
Published code415$19.41
CurveStableSwap
0x1E8D…9Df1
Published code11$11.17
RainbowRouter
0x0000…10E2
Published code14$9.83
unnamed
0x3814…CD6f
Unpublished code345$0.64
unnamed
0x4A86…6f60
Unpublished code18$0.00
ParkERC1967Proxy
0x9689…8341
Published code15$0.00
BeefyTokenManager
0x057d…08Ef
Published code13$0.00
unnamed
0xBb1B…7Ba5
Unpublished code1116$0.00
unnamed
0x8d50…2F80
A plain wallet110$0.00
unnamed
0x8A35…7489
Unpublished code1182$0.00
unnamed
0x1bfF…1E4a
Unpublished code11$0.00
unnamed
0x0b2f…4B54
Unpublished code17$0.00
unnamed
0x76E7…2dFD
Unpublished code13$0.00
unnamed
0x074B…2c99
Unpublished code19$0.00
unnamed
0x5158…089F
Unpublished code1376$0.00
StakingRewards
0xEba5…e01A
Published code11$0.00
Staking
0xB078…2E87
Published code23$0.00
Router
0x06fC…e1c9
Published code13$0.00
SwapProxy
0x02E5…B2a9
Published code11$0.00
unnamed
0xd7E8…92A7
Unpublished code113$0.00
BatchTransfer
0x3f43…c8C8
Published code11$0.00
unnamed
0x7B22…08B2
Unpublished code239$0.00
unnamed
0x68be…5C8d
Unpublished code217$0.00
TransparentUpgradeableProxy
0x77dC…3f9d
Published code25$0.00
unnamed
0xc6cd…FaBc
Unpublished code11$0.00
unnamed
0x1053…5448
Unpublished code14$0.00
unnamed
0xE3dc…FC38
Unpublished code12$0.00
unnamed
0x0442…A435
Unpublished code119$0.00
unnamed
0x0ED1…F3Be
Unpublished code111$0.00
unnamed
0x0412…D4df
Unpublished code18$0.00
unnamed
0xcd17…474b
Unpublished code119$0.00
unnamed
0xF736…70e0
Unpublished code115$0.00
unnamed
0xd0a4…E4Bf
Unpublished code328$0.00
StonkSafeLaunchpad
0xEcA5…71f9
Published code15$0.00
unnamed
0x19Af…8e05
Unpublished code29$0.00
StonkSafeLaunchpadQuoted
0xABEa…9c29
Published code11$0.00
unnamed
0x55C2…6599
Unpublished code147$0.00
StonkSafeLaunchpadV2
0xFCd6…EC9f
Published code12$0.00
MorphogenMarketRouter
0xFCB9…BABb
Published code11$0.00
unnamed
0xfb5C…8c3C
Unpublished code121$0.00
unnamed
0xA7A2…2EA3
Unpublished code140$0.00
Diamond
0xb300…028d
Published code12$0.00
unnamed
0x18Be…2982
Unpublished code11$0.00
unnamed
0x8a19…0b51
Unpublished code12$0.00
unnamed
0xd7aa…503D
Unpublished code137$0.00
unnamed
0x9Be3…237c
Unpublished code133$0.00
unnamed
0xB01C…2049
Unpublished code182$0.00
unnamed
0x243A…8A37
Unpublished code163$0.00
unnamed
0x6a5E…0835
Unpublished code15$0.00
unnamed
0x6F6F…b7Fe
Unpublished code234$0.00
unnamed
0x88DA…d5a2
Unpublished code11$0.00
unnamed
0x7Bcb…B996
Unpublished code224$0.00
unnamed
0xd301…b997
Unpublished code221$0.00
unnamed
0xe492…ce2B
Unpublished code1924$0.00
ERC1967Proxy
0xb7fA…cb00
Published code11$0.00
What it costs

Cents, measured on chain

Hasp charges nothing. Shutting an approval is an ordinary transaction, and this is what each kind burned when we ran the real contracts at block 64,853,337, at an ETH price of $2,404.20.

A token approval
$0.0057

47,065 gas for approve(spender, 0) on a tokenized stock.

Every Permit2 allowance
$0.0037

One lockdown call: 30,284 gas for one pair, 62,574 for five. Each extra pair adds about 8,073.

An "all my NFTs" approval
$0.0036

29,448 gas on Uniswap's v3 position NFT.

A Morpho authorisation
$0.0037

30,334 gas for setAuthorization(address, false).

What you're trusting

Less than you'd think

Hasp has no contract, holds nothing, and never asks for an approval of its own. Here is everything it does do, and how we checked it.

Four calls, and nothing else

The page can build approve(spender, 0), setApprovalForAll(operator, false), Permit2's lockdown and Morpho's setAuthorization(address, false). Before your wallet sees anything, the page decodes what it built and refuses anything else, any amount but zero, any ether, and any approval you did not tick.

Every call is tried first

Each call is run against the chain from your own address before it is sent. If the chain would refuse it, you get a sentence, not a failed transaction.

History from the one node that keeps it

Robinhood Chain's public mirror answers an old history query with an empty list instead of an error. Hasp asks Robinhood's own node and nothing else, so "nothing found" never means "nobody answered".

Not audited

Nobody has audited this page. It is small, its source is what your browser loads, and the checks on the right are what we have instead.

How we checked it
20/20

properties hold on Robinhood Chain, run against the real contracts at block 64,905,282 with nothing deployed. Each one names what the contract said when it refused, and proves the same call went through before.

  • 20/20 properties on Robinhood Chain at block 64,905,282
  • 13/13 deliberate breaks caught by the check named for each
  • 43/43 real wallets: every open approval shut by the page's own calls
  • 4/4 random sequences clean; 13/13 broken readers caught
  • 26/26 checks clicking the real app against a fork
Read how each was run
Questions

Before you shut anything

Should I shut my approval to Uniswap's Permit2?

Usually not. Permit2 is how Uniswap's apps move your tokens, and each trade still needs a fresh signature from you. Shutting it means your next trade asks for the approval again. What Hasp ticks by default is different: approvals to plain wallets, to contracts with no published source, and any that could take more than $1.00.

What is a Permit2 allowance, and why is it one call?

Once a token is approved to Permit2, an app can ask you to sign a message that lets a specific contract move an amount until a date. Those live inside Permit2, not the token. Permit2 has a lockdown function that sets any number of them to zero at once, so Hasp shuts all you tick in one transaction.

Do I have to connect a wallet to look?

No. Paste any address and Hasp reads it. You only connect when you want to shut something, and it has to be the wallet that gave the approval — nobody else can take one back.

Why does it take a minute?

Hasp reads your history from the chain's first block. Robinhood's node answers in pieces, and busy stretches of the chain have to be asked for in smaller ones. An address with more than 20,000 approval events is almost certainly a bot, and Hasp stops rather than read it all.

What does Hasp not find?

Approvals for a single NFT (they clear when the NFT moves), tokens that change an allowance without announcing it, and anything on another chain. The docs list every limit.

Can shutting an approval lose me money?

No. It only removes permission. It moves nothing and cannot be used to move anything. The worst case is that an app you still use asks for approval again.

What can still leave your wallet?

Paste an address. It takes about a minute and costs nothing to look.

Scan a wallet