Repository avatar
Finance
v0.3.210
active

shinjuku-shield

io.github.ShinjukuStaition/shinjuku-shield

Private x402 payments on Solana: shield, pay, and unshield USDC under caps you set.

Documentation

Shinjuku Shield. The privacy suite for AI. Shield once. Pay anywhere.

Solana mainnet x402 facilitator MCP Self-custody Tor

Shinjuku Shield

The privacy suite for AI. Shield once. Pay anywhere.

Install it once. Take your privacy everywhere you and your AI go.

  • Private payments. Your AI pays for services online from your shielded balance: a private balance that stays in your own wallet. The chain does not show who paid.
  • Private AI. Each AI answer is paid privately, and the AI service does not see who asked. More is coming.
  • Your keys stay with you. The wallet makes your keys on your computer. We never hold them, and only they can spend your balance.
  • No SOL needed. Add USDC from any wallet or exchange. We pay the network fees.

It works today in Claude Code and in a terminal. To start, follow the two lines in Get started.

For builders

Shinjuku Shield is a privacy-only x402 payment facilitator on Solana. An agent pays an x402 endpoint from a balance that it holds itself. The chain does not show who paid.

  • Privacy-only. We do not offer a cheaper path that is not private.
  • You keep your keys. The wallet makes your keys on your machine. We never hold them, and only they can spend your balance.
  • We relay and pay the fees. Our relayer sends your relayed deposits and exits and pays their network fees. Our facilitator pays the network fee of each payment that it settles.
  • One balance. Your Shinjuku Shielded balance is a set of redeemable notes that you hold. The wallet shows it as one number.
  • Outside sellers work. Any Solana x402 exact seller that takes USDC gets paid, whichever facilitator it uses (Coinbase CDP, PayAI, or any other). The seller changes nothing. Your wallet pays us privately, and we pay the seller from our own float. The chain shows Shinjuku paying the seller, never your wallet.

Notice, 2026-11-01: Shinjuku updated its on-chain program at 11:50 UTC. If you use version 0.3.131, update to the stable version 0.3.210: run npx shinjuku@0.3.210 setup in the terminal. Your balance is safe. The next release follows such an update by itself.

What your agent gets

The private x402 facilitator, inside your agent.

Shinjuku Shield settles x402 payments from a shielded USDC balance on Solana: on chain, a shielded payment does not show who paid. This MCP server is how your agent uses it. It runs on your machine, under caps that only you set.

  • Self-custody. The server runs on your machine. Your keys never leave it. We never run it, and only your keys can spend your balance.
  • Shielded payments. Your agent pays from a shielded balance. Add --tor and no server sees your IP.
  • Two lines to set up. npm install -g shinjuku@0.3.210, then shinjuku setup. Setup makes the wallet, a private passphrase file, and the checked proof tools, and prints the line that adds the wallet to your agent host.
  • Add funds from 0.01 USDC. Ask your agent to add funds. wallet_add_funds gives a one-time address. Send USDC to it from any wallet or exchange, and it becomes private by itself.
  • Caps that only you set. Spending limits are optional; by default there is none (only the balance bounds a payment). Setup records the ones you set. A tool call can only lower them, never raise them.
  • Find sellers. x402_discover searches public x402 listings (Coinbase x402 Bazaar, PayAI, Dexter, and others) on your machine.
  • Pay any Solana exact seller. A seller on Coinbase CDP, PayAI, or any other facilitator is paid through Shinjuku: your wallet pays us privately, and we pay the seller from our own float. Nothing to fill or set aside.
  • Look before you pay. x402_preview shows the price and whether your caps allow it. It pays nothing.
  • No SOL. wallet_add_funds and wallet_shield need only USDC. Our facilitator's relayer pays the network fee.
  • Never twice. A retry with the same request_id resumes the same payment, deposit, or unshield. It never starts a second one.
  • No RPC, no sign-up, no API key. Reads go through our relay by default. Your own RPC always wins if you give one.

This repository holds the setup guide, the examples, the docs, the changelog, and the published SHA-256 hashes of every wallet file and its proof tools (Releases). It holds no server code, no circuit code, and no wallet source code.

Docs

  • How it works: x402, our three schemes, the flow of one payment, and what runs where.
  • Privacy model: what the chain, the seller, our facilitator, the RPC, and the MCP host see, with each limit.
  • Sell with Shinjuku Shielded: get paid by Shinjuku Shielded buyers with stock x402 middleware, and get listed.
  • Proof: live mainnet transactions, and what each one shows and hides.
  • FAQ: custody, cost, networks, Tor, recovery, and audits.
  • Changelog: what changed in each release. The first changelog of the wallet file, up to 08a4b56f (npm 0.3.8): changelog-to-0.3.8.md.

Release 0.3.210

Stable version, pinned 2026-11-11. A self-custody wallet for AI agents. It pays any x402 endpoint from a shielded balance, so the chain does not show which wallet paid. Two commands set it up. Your agent does the rest from plain requests.

Pinned versionshinjuku-shield@0.3.210
Wallet release2b7c138c (its hash)
NetworkSolana, USDC

0.3.210 passed live runs with real USDC on production on 2026-11-11, in a terminal and through the wallet's MCP tools: setup, add money, balance, pay a new seller with and without Tor, send to your own wallet, cancel, receipts, private AI answers, and a price check in the Hermes app. Other agent apps have not had a run on this version yet.

Get started

You need Node.js 22.21 or newer, or Node.js 24 (node --version shows which one your node command runs). Tor is optional: run it if you also want to hide your IP address.

  1. Set up the wallet. In a terminal, type these two lines as they are:

    npm install -g shinjuku@0.3.210
    shinjuku setup
    

    The first line installs the shinjuku command for every folder and every new terminal window (-g means global). Or, without installing anything: npx -y shinjuku@0.3.210 setup. Setup adds npm's folder to your PATH by itself. If shinjuku still says "'shinjuku' is not recognized" (on a Windows computer with more than one account), type npx -y shinjuku@0.3.210 in place of shinjuku in the lines below.

    Setup asks whether to use Tor and for your own wallet address (optional; Enter keeps the default or skips). It makes the wallet on your machine and a private passphrase file, and downloads every proof file it needs (about 191 MB, checked by hash).

  2. Add it to your agent app. For Claude Code, run shinjuku setup --add-to claude-code once. For Claude Desktop, Cursor and other apps, setup prints the config at the end: paste it once (in Claude Desktop, Settings > Developer > Edit Config opens its settings file). Then restart the app once. On Windows, Claude Desktop keeps running when you close its window: right-click its icon by the clock (it may be under the ^ arrow there) and choose Exit, then open it again. On a Mac, press Command+Q. Your agent app then starts the wallet by itself.

    Setup also adds the wallet for you to other apps: --add-to codex for the ChatGPT desktop app (its Codex side) and Codex CLI, --add-to claude-desktop for Claude Desktop, also the Microsoft Store version, --add-to grok for Grok Build, --add-to hermes for Hermes Agent, --add-to opencode for OpenCode, --add-to copilot for the GitHub Copilot CLI, --add-to openclaw for OpenClaw, and --add-to goose for Goose. Setup then says how to restart and check that app. In the ChatGPT desktop app, use its Codex side: ChatGPT's own chat cannot start a program on your computer.

  3. Add money. Ask your agent "Add 1 USDC to my private balance." It gives you a one-time address. Send USDC on Solana to it from any wallet or exchange. You need no SOL. A few minutes after it arrives, the money is private.

  4. Use it. Ask your agent to pay a URL, find a paid API, send money out, or ask an AI model. Every feature below works from a plain request.

In a terminal, shinjuku help lists every command.

Release 0.3.131

The previous stable version, pinned 2026-10-30 and replaced by 0.3.210 on 2026-11-11.

Pinned versionshinjuku-shield@0.3.131
Wallet release3c8b302d (its hash)
NetworkSolana, USDC

Features

Each feature here passed a live run on the published 0.3.131 package, on production, with real USDC: the check of the stable version, from 2026-10-30 23:51 UTC to 2026-10-31 00:33 UTC, in Claude Code and in a terminal. No other agent app was run on 0.3.131. One feature has no run of its own on 0.3.131: one question with shinjuku infer.

Add money

  • Add funds (wallet_add_funds, shinjuku add-funds). A new one-time address for each deposit, from 0.01 USDC. Send from any wallet or exchange; no SOL needed. The wallet makes it private by itself after it lands, even if your agent app closed. Ask: "Add 1 USDC to my private balance." Terminal: shinjuku add-funds --route exchange --amount 1
  • Make public USDC private (wallet_shield). USDC that sits on the wallet's own public address moves into the shielded balance. The facilitator pays the network fee. Ask: "Make the USDC on my address private."

Pay

  • Pay any x402 endpoint (x402_pay, shinjuku pay, shinjuku curl). Pays an x402 URL from the shielded balance and returns the answer. The seller gets paid as usual; the chain does not show which wallet paid. The price and the fee show in the answer. Ask: "Pay for this endpoint and show me what it returns: "
  • Price preview (x402_preview). Shows what a URL costs before you pay. Nothing is paid or signed. Ask: "How much does this URL cost?"
  • Find paid APIs (x402_discover). Searches public x402 endpoints for a job. Your search words stay on your machine; nothing is paid. Ask: "Find a paid API for Brazil inflation data."
  • Automatic refunds (x402_pay). If the seller fails before it takes the money, the full amount comes back to the private balance by itself. If the seller took the money and gave nothing, the receipt says so with the seller's transaction. Nothing to ask: the receipts show each refund and its transaction.
  • Slow sellers, never paid twice (x402_pay). When a seller is slow, the wallet answers early and keeps waiting. Asking again with the same request continues the same payment. It never pays twice. Ask again with the same request when the agent tells you the seller is still working.
  • Images and files (x402_pay). A paid answer that is an image or a file is saved in the wallet folder, with its path and hash. Ask: "Buy a QR code for this text from ."
  • Cancel (wallet_cancel, shinjuku cancel). Closes a payment that can no longer settle, so its reserved money comes back. A finished payment cannot be taken back, and the wallet says so. Ask: "Cancel that payment."

Send money out

  • Send to an address (wallet_unshield, shinjuku unshield). Sends some or all of the private balance to any Solana wallet as plain USDC. The facilitator pays the network fee. Ask: "Send my whole private balance to my main wallet." Terminal: shinjuku unshield --amount all --to <address>
  • Send all of it (wallet_unshield, shinjuku unshield --amount all). A balance from several deposits is readied by itself when you send all of it. You do nothing extra. Ask: "Send all of it."
  • Spend a received payment (wallet_unshield). A wallet that only received private payments can send them out directly, with no extra step. Ask: "Send what I received to
    ."

Your wallet

  • Balance (wallet_balance, shinjuku balance). One number: what you can spend. It also shows any public USDC on the wallet's own address and any money still on its way. Ask: "What is my private balance?"
  • Receipts (wallet_receipts). Every payment, refund, deposit and send, newest first, with the seller, the price, the fee and the transactions. Ask: "Show my receipts from today. Did I get my money back on failed payments?"
  • Spending limits (--max-payment, --max-session, shinjuku limits). Optional limits per payment and per 24 hours. A payment over a limit is refused before anything is paid, and the answer says how to change the limit. Set them in setup or in your host's MCP entry, for example --max-payment 0.05.
  • Version pin and update notice (npx ... shinjuku-shield@0.3.210 mcp). Your host runs the exact version it names. When a new release is ready, the wallet tells you to restart. Nothing to ask.

Private AI

  • Ask an AI model (inference_chat). Your agent asks an AI model and pays for the answer from the shielded balance. The chain does not show which wallet paid. Ask: "Ask a private AI model: what is the capital of France?"
  • Terminal chat (shinjuku chat). A private AI chat in your terminal. The conversation stays in memory only and is gone when you exit. Terminal: shinjuku chat, then /cost and /exit
  • One question (shinjuku infer). One question, one paid answer, no setup flags. Terminal: shinjuku infer "Say hello" or echo "Say hello" | shinjuku infer -
  • Private AI address for your apps (shinjuku infer start, inference_server). A local OpenAI-compatible address (http://127.0.0.1:11402/v1) with an API key. Any app that speaks the OpenAI chat API, streaming included, gets private paid answers. It runs in the background after the terminal closes, but not after the computer restarts: then run shinjuku infer start again (the API key stays the same). Ask: "Start my local private AI address." Terminal: shinjuku infer start, shinjuku infer status, shinjuku infer stop

Privacy and setup

  • Tor (setup --tor, --tor, --no-tor). With Tor, every request goes through Tor and reaches the facilitator through its onion service, so no server sees your IP address. After a Tor setup, every command uses Tor by itself. Run Tor with HTTPTunnelPort 127.0.0.1:9080, then setup --tor.
  • Self-custody (shinjuku setup, backup-export). The keys are made and kept on your machine. Only your keys move your balance. The facilitator settles and pays network fees; only your keys can spend your balance. Back up after setup: shinjuku help backup-export
  • The terminal command (setup offers to install it). Every wallet action from a terminal: setup, add-funds, balance, pay, unshield, chat, infer and more. Terminal: shinjuku help

Speed

The time from "pay" to the seller's data, for the first payment to a seller the wallet never paid before (a fresh wallet process, production, 2026-10-23, version 0.3.86):

RouteFirst sellerSecond seller
Direct4.85 s (payai.agentstools.dev)11.31 s
Over Tor9.94 s (werner.ddns.net)18.14 s

Fixed since 0.3.86

These seven issues of the older stable version 0.3.86 are fixed in 0.3.131. Each fix passed a live run when it came out (0.3.87 to 0.3.91).

  1. When a seller fails before it takes the money, the answer starts with "Paid". The money is not taken and comes back by itself.
  2. The terminal send prints one internal line that starts with SELLER_STORE.
  3. shinjuku chat can print raw Tor lines while Tor is slow.
  4. When the spending limit comes from the host's MCP entry, the refusal names setup as the place to change it.
  5. Before a send that needs the balance readied first, the agent may not tell you it takes about 2 minutes.
  6. In a terminal, balance, infer and unshield print internal Tor, RPC and history lines.
  7. A plain shinjuku balance right after a deposit can show no number. shinjuku balance --refresh shows it.

Payments to outside sellers show the price and the seller on chain as any x402 payment does; what the chain does not show is which wallet paid. Every release and its changes: CHANGELOG.md.

Talk to it in plain words

Ask your agent the way you would ask a person:

You sayYour agent calls
"what is my balance"wallet_balance
"add 0.50 USDC to my shielded balance"wallet_add_funds
"shield 5 USDC"wallet_shield
"find a seller of satellite images"x402_discover
"pay this URL"x402_preview, then x402_pay
"ask an AI model privately"inference_chat
"send 2 USDC privately to
"
wallet_unshield

Each answer tells the agent the exact next call. The wallet reads the chain and writes an encrypted backup by itself, so you never run a command for upkeep.

Tools

SETUP

On a machine with no wallet, the server starts in setup mode.

ToolWhat it does
shinjuku_setupAsks you to confirm in your MCP client that it may create a Shinjuku Shielded wallet on this machine, and shows the caps. Then it runs the setup and switches the same server to the wallet tools. It never asks for a secret. A client that cannot ask is told to run the setup in a terminal.
wallet_statusSays whether the wallet is set up, and what to do next.

In setup mode, every money tool answers wallet_not_set_up and does nothing.

FUND

ToolWhat it does
wallet_add_fundsGives a new one-time Solana address of this wallet and a solana: pay link. Send USDC to it from any wallet or exchange, from 0.01 USDC. You need no SOL. A few minutes after the USDC arrives, it becomes private by itself while the MCP server runs. One round takes up to 5 USDC; a larger amount goes in by rounds. Use each address for one payer. The call itself moves no money.
wallet_shieldMoves USDC that is already on the wallet's own Solana key into your shielded balance: any amount from 0.01 USDC, while the shielded balance stays at most 5 USDC. It is a public step: the chain shows the wallet's own key. It is on with --proof-tools. --no-shield turns it off. Funding takes minutes: the first call starts it and returns a stage. Call again with the same request_id to see the stage. It never starts a second deposit. When the deposit lands, the wallet reads it from the chain and writes an encrypted backup. The wallet's own key needs the USDC and no SOL: our facilitator's relayer pays the network fee, and you pay the shield cost.

PAY

ToolWhat it does
x402_discoverSearches public x402 listings (Coinbase x402 Bazaar, PayAI, Dexter, and others) on your machine and returns the sellers that match. Pays nothing. The first call takes about 15 s.
x402_previewOne unpaid request. Returns the seller's price, the scheme, and whether your caps allow it. Pays nothing. For a standard exact seller it adds feeAtomic (our fee) and totalAtomic (price plus fee, what leaves your balance). A seller that lists several networks is priced from its Solana offer.
x402_payPays the URL (if it asks for payment) and returns the answer. A URL that does not answer 402 is fetched once and nothing is paid. An image answer (image bytes, or JSON image_base64) comes back as an MCP image block, and the file is saved. A payment that landed, from a seller that gives no answer, closes as paid. If a standard exact seller does not take our payment, the answer is p03_float_refund_pending: price and fee come back to your balance by themselves within about 7 minutes. Alias: fetch_paid.
inference_chatOne AI answer from usePod's x402 chat endpoint, paid privately from your shielded balance. A short qwen3-8-flash answer costs about 0.0011 USDC: the provider price plus the 0.001 USDC Shinjuku fee. It needs --tor or a proxy.

UNSHIELD

ToolWhat it does
wallet_unshieldSends shielded USDC to a public Solana address. It is on with --exit-proof-tools and --profile. Our facilitator pays every network fee. The same request_id never unshields twice. An address that you named with --unshield-to is sent at once. Any other address is sent only after you confirm it in your MCP client: "Send X USDC from your shielded balance to
?". A decline, or no answer in 5 minutes, sends nothing. A client that cannot ask is refused, so a prompt injection cannot pick an address by itself. The wallet's own key is refused: it made the deposits, so an exit there would link them.

WALLET

ToolWhat it does
wallet_balanceONE balance (balanceAtomic, what x402_pay can spend) and UNSHIELDED (unshieldedAtomic, plain USDC on the wallet's own Solana key), with ownAddress and status ("current" when the balance is read). breakdown names what the one balance holds: shieldedAtomic (what wallet_unshield can send), refundsInFlightAtomic (a Shinjuku refund on its way back), and setAsideAtomic (value in pockets of an older version). A stale balance is read from the chain first. UNSHIELDED is one network read; if it fails, that line is empty and says why.
wallet_receiptsYour most recent paid receipts: {ok, count, total, facilitatorNote, receipts}. Each receipt has kind (x402, inference, or a move), the host (never the full URL), amountAtomic, and transaction.
wallet_cancelCloses one unfinished payment (its reserved balance comes back), the pieces of a private send that did not start, or an add-funds link that no USDC reached.

wallet_shield and wallet_unshield always appear in the tool list. When one is off, it answers "error": "mcp_tool_disabled" and tells the agent what to ask you.

What it pays:

  • shielded-exact, from your shielded balance, whenever the seller offers it.
  • Standard Solana exact, through Shinjuku (float pay). For a seller on any facilitator (Coinbase CDP, PayAI, or any other), x402_pay pays us privately from your shielded balance: the seller's price plus a flat fee (feeAtomic, 0.001 USDC on 2026-10-22). We pay the seller at once from our own shared float. The chain shows Shinjuku paying the seller, never your wallet. max_payment_atomic must cover price plus fee. The largest price that one request can pay is largestAtomic in GET https://pay.shinjukustaition.com/api/x402/float/config (10 USDC on 2026-10-22).
  • A retry with the same request_id never pays twice.

Hidden amounts (scheme confidential, the V0b vault) are retired: the V0b program was closed on chain on 2026-10-11.

Value that an older version put in pockets still counts in the one balance. When the server has --proof-tools, --exit-proof-tools, and --profile, it returns that value to the shielded balance by itself while it is idle. shinjuku pocket reshield does the same by hand.

A balance from several deposits: one payment can spend only a few of them at once. The server gathers them into one by itself (a private payment to itself; nothing leaves the shielded balance, and our facilitator pays the network fee). When no single deposit covers a price yet, x402_pay says so, the gathering starts within about a minute, and the answer says when to pay again.

Privacy modes

Default--tor
On chainA shielded payment does not show who paid.The same.
Your IPPayments go to pay.shinjukustaition.com, with no CDN in the path. Our server sees your IP. It keeps no access logs.Hidden from everyone, us included.
The sellerSees your IP.Does not see your IP.
SpeedFaster.About 1-2 s slower per request.
NeedsNothing extra.Tor with HTTPTunnelPort 127.0.0.1:9080 IsolateDestAddr in torrc.
When a path is slow-The wallet races our onion addresses and keeps the first that answers. A facilitator onion that gives no answer in 15 s brings in two spare onions. A history request with no answer moves to the next history onion, and a history source that is silent for 60 s ends with a plain error instead of a long wait. A stalled Tor circuit is replaced. A facilitator request never falls back to our clearnet address.

Setup

You need Node.js 22.21 or later (or Node.js 24 or later), on Windows or Linux. macOS is not supported yet.

The stable version is 0.3.210 (wallet release 2b7c138c, pinned 2026-11-11). Every command here names it. Setup prints host lines that name this exact version. It uses npm tag latest. Status and the changelog list its changes.

A later stable version gets its own row in the Releases table: run its setup once and put its version in your host's config. Your wallet, its address, and its balance stay the same.

1. Run the setup in a terminal

npx -y shinjuku@0.3.210 setup

It asks whether to use Tor and for your own wallet address (optional: your agent can then send money back to you without asking for it). When the shinjuku command is not installed yet, it offers to install it. Enter keeps the default or skips. At the end it offers to add funds (Enter skips). --yes asks nothing. --add-to claude-code (or claude-desktop, cursor) also adds the server to that host's config; if Claude Code already has a wallet entry for another wallet folder, setup asks before it replaces it. In our 0.3.131 runs (2026-10-30), setup took about 17 s on a fast line and about 80 s over Tor, with the setup-file download of about 191 MB. At the end it prints a summary, for example:

Shinjuku Shield is set up.
  limits       no limit per payment, no limit in any 24 hours, no limit for the life of the wallet
  config       <home>/config.json
  passphrase   <home>/passphrase.txt (a new random passphrase; only you can read the file; it is never printed)
  setup files  <home>/proof-tools/a9af32df (30 files downloaded, every hash checked)
  balance      prepared during setup: your first balance after a deposit shows sooner
  wallet       created
  recovery     <home>/recovery-<time>.txt

Setup writes to ~/.carbon-shielded-wallet (or SHIELDED_WALLET_HOME):

  • The wallet, and a recovery file with the seed and the key. Copy the recovery file to two offline places, then delete it from this machine.
  • passphrase.txt: a new random passphrase, readable by you alone. It is never printed, and no tool takes or returns it. Keep it: the wallet file opens only with it.
  • The proof tools. Setup checks every file against the set that this wallet release pins.
  • config.json: the caps, the paths, and Tor. With it, mcp needs no flags. A flag on the command line still wins.

Spending limits are optional and off by default: with none, only the balance bounds a payment. To set them, give --max-payment, --max-session, or --max-cumulative, in USDC (0.05 = 5 cents). A setup rerun lifts the old default caps (0.05 / 1 / 20 USDC) of earlier versions. --prefer-tor records Tor (see Privacy modes).

You can run setup again at any time. It never changes an existing wallet, and it checks every proof-tool file again.

2. Add the server to your agent host

If you gave --add-to, this step is done. For Claude Code, the simplest way is shinjuku setup --add-to claude-code (it runs the line below for you). Setup also prints these lines. Add the wallet once: one entry named shinjuku.

Claude Code:

claude mcp add --scope user shinjuku -- npx -y --no-audit --no-fund shinjuku-shield@0.3.210 mcp

--no-audit --no-fund stop npx from asking npm's audit and funding services when it starts a new version. Once, that request held the start for 5 minutes.

On native Windows, the line that setup prints puts cmd /c before npx. With a wallet folder that is not the default, it adds -e SHIELDED_WALLET_HOME=<home> (or an "env" block in JSON).

Claude Desktop (claude_desktop_config.json), Cursor (~/.cursor/mcp.json), and other JSON-config hosts:

{
  "mcpServers": {
    "shinjuku": {
      "command": "npx",
      "args": ["-y", "--no-audit", "--no-fund", "shinjuku-shield@0.3.210", "mcp"]
    }
  }
}

Or: start the server first and accept the setup

You can also add the server first, with no wallet on the machine. Then the server starts in setup mode. Ask your agent "what is my balance". Your MCP client asks you to confirm: create a Shinjuku Shielded wallet on this machine. Accept, and the setup runs (with the proof-tool download of about 191 MB). Then the same server switches to the wallet tools. You do not restart it. A client that cannot ask is told to run the setup in a terminal.

In a terminal, shinjuku mcp asks "Set up Shinjuku Shield now? (y/n)".

3. Add funds

The wallet starts empty. Ask your agent "Add 0.50 USDC to my shielded balance". It calls wallet_add_funds and gives a one-time address. Send that USDC on Solana from any wallet or exchange. Amounts from 0.01 USDC work, and you need no SOL. The USDC becomes private by itself while the MCP server runs: our relayer pays every fee.

From an exchange, in a terminal, whole USDC only:

shinjuku add-funds --route exchange --amount 2

It prints a one-time address. Withdraw exactly that amount of USDC (Solana SPL) from the exchange to it, and it shields the USDC by itself. --amount is a whole number of USDC (2 = 2 USDC).

USDC that is already on the wallet's own address (ownAddress in wallet_balance) goes in with wallet_shield. The steps are in First 10 minutes.

Verify a release

The wallet is one file, shinjuku-wallet.mjs. The same file, with the same SHA-256, is in three places: the npm package shinjuku-shield, our website, and the Releases table of this repository. The steps below check the stable version 0.3.210 (wallet release 2b7c138c). Its SHA-256 in the Releases table is 2b7c138c4c824705da41d7d40c276b95bd8d546a6f80c782fdc5b698c8946996.

  1. Install the npm package into a new, empty folder. Type each line alone:

    mkdir shinjuku-check
    cd shinjuku-check
    npm init -y
    npm install --ignore-scripts shinjuku-shield@0.3.210
    
  2. The npm copy. Hash the wallet file inside the installed package. The hash must equal the SHA-256 above.

    Linux: sha256sum node_modules/shinjuku-shield/shinjuku-wallet.mjs

    macOS: shasum -a 256 node_modules/shinjuku-shield/shinjuku-wallet.mjs

    Windows (PowerShell):

    (Get-FileHash .\node_modules\shinjuku-shield\shinjuku-wallet.mjs -Algorithm SHA256).Hash
    

    PowerShell prints the hash in capital letters; the letters are the same.

  3. The npm signatures. In the same folder:

    npm audit signatures
    

    It checks the registry signatures and the provenance attestations of the installed package. It must print "1 package has a verified registry signature" and "1 package has a verified attestation". It does not print who built the package.

  4. Who built it. The provenance attestation is a statement, signed through Sigstore during the build, of where the package was built. To read it, open https://www.npmjs.com/package/shinjuku-shield/v/0.3.210, select the green check mark next to the version, then "View more details". "Source Commit" must be a commit of ShinjukuStaition/shinjuku-shield, and "Build File" must be .github/workflows/publish.yml.

  5. The website copy. Download the file and check it. Go on only when the check prints OK:

    curl -fsSLO https://shinjukustaition.com/wallet/2b7c138c/shinjuku-wallet.mjs
    echo "2b7c138c4c824705da41d7d40c276b95bd8d546a6f80c782fdc5b698c8946996  shinjuku-wallet.mjs" | sha256sum -c -
    

    On macOS, end the second line with shasum -a 256 -c - in place of sha256sum -c -.

    On Windows (PowerShell), type curl.exe in place of curl, then:

    if ((Get-FileHash .\shinjuku-wallet.mjs -Algorithm SHA256).Hash -eq "2b7c138c4c824705da41d7d40c276b95bd8d546a6f80c782fdc5b698c8946996") { "OK" } else { "MISMATCH" }
    

    The file and its hash are also in section 7b of https://shinjukustaition.com/skill.md. To run the file itself, replace shinjuku with node /abs/path/shinjuku-wallet.mjs in the commands.

What these steps show: the npm copy, the website copy and the Releases table have the same hash; npm's signatures on the package are valid; and the provenance names the repository and workflow that built the package. They do not show the wallet's source code, which is not public. As npm says, provenance does not guarantee that a package has no malicious code.

Advanced: flags instead of config.json

mcp reads config.json only when you give no --pool and no --wallet. To give the flags yourself (for example, for a wallet that you made with init before 0.2.0):

claude mcp add --scope user shinjuku -- npx -y --no-audit --no-fund shinjuku-shield@0.3.210 mcp \
  --max-payment 0.05 --max-session 0.2 --tor \
  --pool <pool> \
  --program 8PYPw3FSFTMbvSneXdcoH6jNoN4VD23nHwPY2A2riUy1 \
  --memo-service https://pay.shinjukustaition.com \
  --proof-tools /abs/path/shinjuku-proof-tools/proof-tools.json \
  --exit-proof-tools /abs/path/shinjuku-proof-tools/exit-proof-tools.json \
  --profile /abs/path/shinjuku-proof-tools/public-profile.json \
  --passphrase-file /abs/path/passphrase.txt

With --pool, --program and --memo-service are required. Setup writes the pool, the program, and the facilitator into config.json: <pool> is the pool in your config.json. shinjuku help mcp prints every flag.

Use absolute paths: a host starts the server from its own folder. On Windows, write C:/Users/you/.... --proof-tools turns wallet_shield on. --exit-proof-tools and --profile turn wallet_unshield on.

For an older wallet, you can also run setup once with SHIELDED_WALLET_HOME set to your wallet folder and --passphrase-file set to your passphrase file. It keeps your wallet and writes config.json beside it.

A send to a new address needs a host that supports MCP elicitation (it shows you the confirmation). With a host that does not, name each address with --unshield-to.

Use your private AI from your own code

Your wallet can run a private AI address on your computer. Any program that talks to OpenAI can use it. Each answer is paid from your private balance. The address always runs through Tor, so the AI company does not see your IP address.

These steps ran on the candidate 0.3.179 on a new Windows account, one short question each, with curl, TypeScript, Python and LangChain.

1. Start the address

npx -y shinjuku@0.3.210 infer start

It prints the address, an API key and the model. You need the first two:

base_url http://127.0.0.1:11402/v1
api key  <your key: 48 letters and numbers>
model    qwen3-8-flash (others: ...)

The address keeps running in the background. It stops when your computer restarts: then run the line again (the key stays the same). To stop it: npx -y shinjuku@0.3.210 infer stop.

2. Put your key where your program can find it

In the same window (Windows, Command Prompt):

set OPENAI_API_KEY=<your key from step 1>

On a Mac or Linux: export OPENAI_API_KEY=<your key from step 1>. This lasts until you close the window. Keep the key to yourself: a program on your computer that has it can spend from your balance.

3a. curl (no install needed on Windows 10 or 11)

In Command Prompt (one line; copy it as it is):

curl http://127.0.0.1:11402/v1/chat/completions -H "Authorization: Bearer %OPENAI_API_KEY%" -H "Content-Type: application/json" -d "{\"model\":\"qwen3-8-flash\",\"max_tokens\":256,\"messages\":[{\"role\":\"user\",\"content\":\"What is the capital of Japan?\"}]}"

The answer is the text after "content":. The reply's "paid_atomic" is what you paid, in millionths of a USDC (3118 = 0.003118 USDC).

3b. TypeScript or JavaScript (needs Node.js)

Node.js is already on your computer if the wallet runs. In a new folder:

npm install openai tsx

Save this as ask.ts (in Notepad: File, Save as, "Save as type: All files", file name ask.ts):

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "http://127.0.0.1:11402/v1",
  apiKey: process.env.OPENAI_API_KEY,
});

async function main() {
  const answer = await client.chat.completions.create({
    model: "qwen3-8-flash",
    max_tokens: 256,
    messages: [{ role: "user", content: "What is the capital of Japan?" }],
  });
  console.log(answer.choices[0].message.content);
}

main();

Run it: npx tsx ask.ts

3c. Python (needs Python 3)

If python --version says "Python was not found" or opens the Microsoft Store, install Python from https://www.python.org/downloads/ and tick "Add python.exe to PATH" in the installer. Then close the window and open a new one (the old window does not see the new Python), go back to your folder and set your key again (step 2).

pip install openai

pip can print yellow "not on PATH" warnings and a note about a newer pip. They do no harm. Save this as ask.py:

import os
from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:11402/v1",
    api_key=os.environ["OPENAI_API_KEY"],
)

answer = client.chat.completions.create(
    model="qwen3-8-flash",
    max_tokens=256,
    messages=[{"role": "user", "content": "What is the capital of Japan?"}],
)
print(answer.choices[0].message.content)

Run it: python ask.py

3d. LangChain (Python)

Do 3c first, then:

pip install langchain-openai

Save this as ask_langchain.py:

import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    base_url="http://127.0.0.1:11402/v1",
    api_key=os.environ["OPENAI_API_KEY"],
    model="qwen3-8-flash",
    max_tokens=256,
)
print(llm.invoke("What is the capital of Japan?").content)

Run it: python ask_langchain.py

What it costs

Each answer is paid before it runs, for the longest reply you allow (max_tokens). A part you do not use is not paid back, so a small max_tokens keeps each answer cheap. 256 is the smallest: a smaller value is raised to 256, so the answer is not empty. A request with no max_tokens pays for 4096. infer start says the most it pays for one answer and for one run.

Examples

examples/ has complete configs and a walkthrough:

Caps and flags

After setup, config.json holds the caps and the paths. You can add any of these flags to the mcp command. A flag wins over config.json.

Flag
--max-payment <usdc>Optional. The most one payment may cost, in USDC (0.05 = 5 cents). Setup records it. Default: no limit.
--max-session <usdc>Optional. The most this wallet may pay in any 24 hours, from every MCP process together. When you set both, it must be at least --max-payment. Setup records it. Default: no limit.
--max-per-host-day <usdc>Optional. The most one seller host may receive in 24 hours, in USDC.
--allow-host <host>Optional, repeatable. Pay only these seller hosts.
--no-shieldOptional. Turns wallet_shield off. It is on with --proof-tools.
--max-shield <usdc>Optional. The most one shield call may move, and the most this wallet may shield in any 24 hours, in USDC. Without it, no cap beyond the balance.
--allow-shieldAccepted for older configs. wallet_shield is on without it.
--exit-proof-tools <file>, --profile <file>Optional. Turn wallet_unshield on (with --proof-tools).
--unshield-to <address>Optional, repeatable. These addresses receive with no confirmation. Any other address needs your confirmation in the MCP client. The wallet's own key is refused: the server does not start when you name it here.
--ready-pockets <0-5>Accepted for older configs and ignored. Standard exact sellers are paid through Shinjuku, and the wallet fills no pocket.
--no-auto-pocketsAccepted for older configs. It also stops the idle return of old pockets to the shielded balance.
--max-unshield <usdc>Optional. The most one unshield call may move, and the most this wallet may unshield in any 24 hours, in USDC. Without it, a send you confirm can move the whole shielded balance.
--no-torOptional. This run does not use the Tor that setup recorded.
--torOptional. Every request goes through Tor; our facilitator is reached over its onion service. Needs Tor with HTTPTunnelPort 127.0.0.1:9080 in torrc. See Privacy modes.
--rpc-file <file>Optional. Your own Solana RPC URL. Without it, reads go to our relay, which sees which addresses the wallet reads.

The passphrase comes from --passphrase-file or SHIELDED_WALLET_PASSPHRASE at start, never from a tool call. A refusal is a normal answer ({"ok": false, "error", "detail", "next"}); the agent does what next says. A cap refusal tells the agent to ask you: only you set the caps.

An unshield is your own money, so it does not count against the payment budget of the wallet file (init --max-payment, --max-cumulative). Payments to sellers still count. To show, change, or remove those wallet-file caps, run shinjuku limits (none removes a cap). A refusal by one of them tells the agent to ask you for this.

Upkeep is automatic. After a deposit lands, and before a payment or unshield when the local balance is stale, the server reads the chain itself. By default it reads the pool history through our facilitator's https history proxy: a new wallet is ready in about 60 s. After each shield and unshield, the wallet writes an encrypted backup to <SHIELDED_WALLET_HOME>/auto-backups/<pool>/. It keeps the newest 5 complete, verified backups. They are on the same disk as the wallet: copy one to another place.

What others can see

  • The seller sees your request, the price, the time, and your IP unless you use --tor.
  • Your agent host and its model provider see every URL, body, price, paid answer, amount, and unshield address the agent handles. A local model removes that observer.
  • Your MCP client app (Claude Code, Codex, Claude Desktop, Cursor, ...) answers the confirmation of a send, not the model. So a prompt-injected agent cannot approve a send. But the wallet trusts the client app to show the dialog to you: a malicious or modified client app could answer "accept" by itself. For a strict setup, name your addresses with --unshield-to and use a client without elicitation. Then any other address is refused.
  • Our facilitator processes your payment. It keeps no access logs.
  • On chain, a shielded-exact payment does not show who paid. A float pay payment is a pool payment to us (the payer hidden), then a normal USDC transfer from a Shinjuku float pocket to the seller. Many buyers pay from the same float pockets. The transfer lands seconds after the pool payment, so time can pair the two.
  • For a float payment, our server sees which private payment paid which seller, the price, the URL, and the time, until the payment is final or refunded. It does not see your wallet.
  • wallet_add_funds: the chain shows the USDC that arrives at the one-time address, the amount, and the time. Use each address for one payer.
  • wallet_shield is a public step: the chain shows USDC leave the wallet's own key, the amount, and the time.
  • wallet_unshield is a public step: the chain shows the amount, the address that receives it, and the time.
  • inference_chat: usePod and the model provider see the prompt and the answer.
  • The UNSHIELDED line of wallet_balance reads the wallet's own key. The RPC (our relay by default) sees which key it reads.
  • Privacy needs a crowd. With few users, timing can still link payments.

Which endpoints you can pay

  • A seller whose 402 offers shielded-exact. The wallet pays it from your shielded balance, and our facilitator settles the payment.
  • Any other Solana x402 exact endpoint that takes USDC, whichever facilitator settles it (float pay). pay (or the MCP x402_pay) pays us privately from your shielded balance: the seller's price plus a flat fee of 0.001 USDC. We then pay the seller at once from our own shared float. You fill nothing and set nothing aside. If the seller does not take the payment, we refund price and fee to your shielded balance by ourselves. This path, and every other payment, needs wallet release 08a4b56f (npm shinjuku-shielded@0.3.8) or later: the pool program was upgraded on 2026-10-11, and earlier releases refuse to pay.

The largest price that float pay can pay for one request is the size of our largest float pocket. Read it, and the fee, before you pay:

curl -fsS https://pay.shinjukustaition.com/api/x402/float/config

feeAtomic is the fee and largestAtomic is the largest price, in atomic USDC (1000000 = 1 USDC). On 2026-10-22 they were 1000 (0.001 USDC) and 10000000 (10 USDC). A higher price is refused before anything is paid (p03_float_price_above_capacity).

The 3D market game Shinjuku Undermarket is our first customer and our live demo.

Status

  • Stable version (pinned 2026-11-11): wallet release 2b7c138c, npm shinjuku-shield@0.3.210 (the same wallet file as 0.3.209). Install that exact version. The wallet runs Tor for you, Windows needs no WSL (on Windows type npx -y shinjuku@0.3.210 setup in Command Prompt), the shinjuku screen runs every job, setup offers a backup before the first deposit, and a wallet from an older version updates with no new setup. The changelog lists the rest. How to start: the 0.3.210 release notes. Hash: the 2b7c138c row of Releases.
  • The stable version before it: wallet release 3c8b302d (npm 0.3.131, pinned 2026-10-30). Its feature list: the 0.3.131 release notes.
  • The stable version before that: wallet release b650bf06 (npm 0.3.86).
  • What 0.3.131 changes: a send that stopped at any point finishes with the same plain command, a send to your own wallet needs no address, and a new limit applies without a restart. It shows the QR code of a deposit address in the chat (a picture in an app, text in a terminal), never as a file. It fixes known issues 1 to 7 of 0.3.86, shows a QR code for a deposit, takes any amount from 0.01 USDC in a terminal, keeps every tool text short enough for agent apps to read in full, asks "Use Tor?" when an agent app sets up the wallet, waits for your answer in the setup box, names your recovery file when setup ends, says when you confirmed a send, and asks for each value in a terminal instead of a flag. It adds slash commands in Claude Code (type / and pick a command, then add its value, or press Enter and the agent asks), one default AI model (qwen3-8-flash, 4096 tokens for an answer) for the chat and the private AI address, and the time when a refund lands after a seller refuses at once. It says when a seller works too long before it charges (about 30 s) for any wallet to pay it. A private send keeps the money that its next payments need, so its last payment no longer waits until you cancel it. The balance then says when one payment can use the change of your last payment, and a request id that an earlier payment used gets one new request id named. A new deposit or send leaves its request id out, so an old send never answers for a new one. A new payment or AI question leaves it out too. Answers show you no request id, and the balance names a private send by its amount and address. A payment can go while a private send in parts runs from the same money, and it waits for one step of a part, not the whole part. A refund notice names its payment and stays until an answer shows it. A send that the agent app cut finishes at the next start without holding up the first payment, and a part that finishes before the chain marks it final waits and tries again. A new private send leaves in one transfer, and a terminal send of money you received goes straight to the address. The wallet reads the chain before it says your balance is 0, and a terminal command with no money says how to add money before it asks anything. The words of an answer name no tool and no field. The history reads go in fewer, shared requests. The search for paid APIs reads the seller lists through Shinjuku's copies, so every list works with Tor, and an answer names a list it could not read. An AI answer limit below 0.01 USDC, a price check on a low balance, a declined question and the AI model list say in plain words what stops a payment and what works.
  • shielded-exact payments from the shielded balance: live on mainnet.
  • Float pay to any Solana x402 exact endpoint that takes USDC: live on mainnet since 2026-10-11 (wallet release e3348092 and later). On 2026-10-11 it paid two stock sellers on the PayAI facilitator, 0.10 USDC in 15 s and 1.50 USDC in 20 s, and a stock seller on our own facilitator (488372b4 and later), 0.01 USDC in 16 s and 17 s: see proof.md.
  • Faster pool anchors: live on mainnet since the pool program upgrade of 2026-10-11 (wallet release 08a4b56f and later). The pool takes an anchor about every 30 s when it grew. In our test, 12 of 12 new deposits could pay within 45 s (median 18 s).
  • Pool moves: live from wallet release 701809bd (npm shinjuku-shielded@0.3.9). When we open a new pool, the old pool keeps serving until it is empty, and move moves your whole balance to the new pool privately: you pay our float in the old pool, and the float pays you in the new pool. Nothing goes through a public address.
  • Per-user pockets: replaced by float pay. The wallet fills no new pocket for a payment. pocket reshield returns the USDC of an old pocket to your shielded balance.
  • Hidden amounts (scheme confidential, the V0b vault): retired. The V0b program was closed on chain on 2026-10-11.
  • The wallet file and its proof tools, served from our site and our onion service with SHA-256 hashes: live.
  • Key ceremonies: a multi-party ceremony: not yet.
  • Independent audit: none yet.

Listed in the official MCP Registry as io.github.ShinjukuStaition/shinjuku-mcp. npm: shinjuku-shield (the one package that holds the wallet; the older name shinjuku-shielded runs the same wallet at the same version, so wallets installed under it keep updating: from the release after 0.3.186 it is a small package that runs shinjuku-shield; 0.3.186 and earlier hold the same files), published from this repository's workflow with npm provenance (from 0.1.1).

Live on Solana mainnet. The current wallet release is 2b7c138c (npm 0.3.210, pinned 2026-11-11). How to start: Release 0.3.210.

Every release and its changes: CHANGELOG.md.

Float pay paid two stock sellers on the PayAI facilitator on production on 2026-10-11, 0.10 USDC and 1.50 USDC, and a stock seller on our own facilitator, 0.01 USDC twice: the transactions are in proof.md.

These transactions were made with real money through this MCP server, against our production facilitator, on an earlier pool (retired 2026-10-10). The first two came from a new wallet with the default setup and no SOL at any time (wallet release 94a357bc). The others used wallet release 1a336885 (2026-10-08).

ToolTransaction
wallet_shield (no SOL)5np1EYjN…fH2
x402_pay to a public satellite-imagery seller (0.013 USDC, JPEG answer in 8 s)iC6gnjFM…DHwC
wallet_shield (1 USDC in)hWzDiR1R…izn
wallet_unshield (0.5 USDC out)self-pay 5evVHz8X…r9uv · exit 4yY2YXLS…pgF2i
wallet_unshield with your confirmation (0.25 USDC, release 1a336885)self-pay 3jQyPgrA…QEWw · exit 4yA3qkHU…jCoh
x402_pay (pocket exact, before float pay)kX2zbbuR…8wW

No unshield transaction contains the wallet that shielded; our facilitator paid every network fee of each unshield.

Full guide: https://shinjukustaition.com/skill.md · Onion: http://2kfhlfuyuwvhmibjrpxqsg4nrbcxasjgjq7kmnfzgfwzptkhhznz3dad.onion/skill.md · X: @Shin_StAItion

Check a release with verify.mjs

verify.mjs checks one published release with one command. It needs Node.js 22 or later and nothing else:

git clone https://github.com/ShinjukuStaition/shinjuku-shield
cd shinjuku-shield
node verify.mjs 0.3.210
  • It downloads the npm package shinjuku-shield and checks it against its npm sha512.
  • It checks the sha256 of the wallet file inside it against the package's own record.
  • It checks the wallet file against its row in the Releases table below.
  • It checks the wallet file against the hash our website serves.
  • It reads the npm provenance and checks that it names this exact package file, this repository and .github/workflows/publish.yml.
  • It does the same download and provenance checks for the shinjuku and shinjuku-shielded packages of that version. A small pointer package must depend only on shinjuku-shield at that version and hold no wallet file. An older full copy must hold the same wallet file.

Each check prints OK or FAIL. A package that npm does not have at that version prints SKIP, and the last line counts it. The script runs no downloaded file. It does not check the Sigstore signature of the provenance. To check it, run npm audit signatures in a folder where the package is installed.

Releases

Each release is one file, shinjuku-wallet.mjs, and a set of proof tools. Our website serves the files and their SHA-256 hashes at https://shinjukustaition.com/wallet/<sha8>/ and https://shinjukustaition.com/proof-tools/<sha8>/. This repository is a second, separate place for those hashes: each release adds its row here.

The stable version is 2b7c138c, on npm as shinjuku-shield@0.3.210 (pinned 2026-11-11). Use it for a new install. A row marked "candidate" records a release served beside the stable version and published on npm under the tag next, not latest; it becomes the stable version only when we say so here. Rows marked "no longer served" are gone from the website; the other older rows stay for the record. Some short-lived releases served between 2026-10-05 and 2026-10-07 have no row here. What changed in each release after 08a4b56f is in the changelog.

Released (UTC)Wallet releaseWallet file SHA-256BytesProof toolsSHA-256 of the proof-tools file listProof-tools files
2026-10-0268aac3c1 (no longer served)68aac3c1f7bcf9e21c44637c5db4cef3ad8ed52732cd5634f0884d1417a78b1d9,476,013864898cb864898cb1a7db74c54bc567307795ba154f2b8ed70e36a1336bf8c6c06c5c70229 (183,830,695 bytes)
2026-10-05f561eccf (no longer served)f561eccf5c357731d9be5bc06a02accbc52e6368dd95ce95efb85542c039acc79,548,479864898cb864898cb1a7db74c54bc567307795ba154f2b8ed70e36a1336bf8c6c06c5c70229 (183,830,695 bytes)
2026-10-07833aeed3 (no longer served)833aeed35eca3ad85a9b8b949b2452945a071081765677060c509fd786976ff49,602,171c777fa3ec777fa3eac5f874d0b8b07a4ed352ece37825412b9dfde206222f66a31a1225229 (184,817,703 bytes)
2026-10-07cbd97cea (no longer served)cbd97cea4c71cdf0b27df3b59d687cd65e4b6d93965e36a6a8f3f5a525c12c429,798,568c777fa3ec777fa3eac5f874d0b8b07a4ed352ece37825412b9dfde206222f66a31a1225229 (184,817,703 bytes)
2026-10-07c0fb991f (no longer served)c0fb991f0a59133c389486af11b40f0565732331152b9b8b82a84e62999d9bc39,932,761c777fa3ec777fa3eac5f874d0b8b07a4ed352ece37825412b9dfde206222f66a31a1225229 (184,817,703 bytes)
2026-10-07a66228ab (no longer served)a66228aba12d70e4f2cfc0fa83122bb09073bbd5734aec74a0b16ddebad044a99,937,88082b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-07c7abfaaf (no longer served)c7abfaafb1fbcdae82adeb927b4322d79582cd45af5410f5af532141e2d740049,944,07982b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-070a638498 (no longer served)0a6384984b20f971739f29ba3b7d1d54ff9f0861e79f330b7018812c06ba5e089,947,33782b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-0733d54d54 (no longer served)33d54d540882fdbe8d2cfaf85cfee3a34084f6de6f30a0ee7416f1996fb1f1769,949,93082b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-07551f8ad9 (no longer served)551f8ad94c8a9eb17edd1322c22381e30b363d6e9478869ca92ee753162356ce9,959,99882b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-07dc92be17 (no longer served)dc92be17c691b053e6a63e7b60c64d08952e56b375d8fb9010e735083d2005629,994,93382b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-07bf2652a3 (no longer served)bf2652a341042f419a2dd63157bc82f354a63d01652ebb62f265540f77d71d0d9,997,34482b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-076909057a (no longer served)6909057a6992ed86c302318cee394e8aa93bb27a7b4d006a0cf6f170939fd95c10,000,53482b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-07c6afbdbe (no longer served)c6afbdbe7e3da1d159a3f90af4ab1524a4397ca52f8d1668e5437ad10d026aaa10,041,88382b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-073765885f (no longer served)3765885f2f9fdab66250967a4f3392708177f10c3feb7efd1f0e05cbbda39a8a10,083,25382b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-0797d6703d (no longer served)97d6703d6e3060fc07e00453022cdd800a7a67854a3be19d056c6993aed59a6b10,085,13982b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-07721b8d65 (no longer served)721b8d6561911e580597559df09d3dbad0cee28b234204e1b58cc60634a464b910,086,77882b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-07061adadb (no longer served)061adadb83970c5954fbca5a7650c7d48644df10bdeed01795bf256a59a94c7110,087,51682b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-07b4c514cd (no longer served)b4c514cdd74db9644478f804eb0f44274843916196f0be140b7788906d56ab0d10,087,97682b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-07768001dd (no longer served)768001dd1107bfa2bdcfaaffb53b791591a8b9e2c012889ce14b615a30b49ee710,098,49382b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-0757bfd2fd (no longer served)57bfd2fd31e127d7bcfdbd11f067cb34085d23f6938be0daf3a106bd7226fb4010,101,61782b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-08565c4f87 (no longer served)565c4f8710070da6e604d0fa5a25f3147ae5dc9826bbc556e51113abce8c527610,107,04582b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-0863316238 (no longer served)633162382f09c72a48eb6d1fc21a0e09a9b5e4d920da5e74ab6eb018e6dcaf8510,110,24882b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-08b7d6f394 (no longer served)b7d6f394211c9d08ad158dc5e31495f31391c4dc5a9a60dc57a3773e443ba13310,149,06982b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-08c4a50798 (no longer served)c4a50798e53cdde49c34a51ab16143d095278e1477eedcf0a72bc6f83ac6104210,154,63082b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-082c2f9874 (no longer served)2c2f9874f95619ef291f89fa88158b97d2125198a12abe8ecade9d6c2e9f10fc10,175,81682b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-081a336885 (no longer served)1a3368854f4bdfe185a2ac398106c9b39a7148225f1a3ec6a6dcead563c7ed5310,176,43482b2d87082b2d8709f28cfdd65c9a03707af4811b8d6e77b1231b4e1de6dd2d84f209c3b26 (144,319,243 bytes)
2026-10-0811fe6b40 (no longer served)11fe6b40661d3af5e7fe50a20603a1efde4d0997fc243fb16709daad94fd8d2910,289,40424e819a824e819a86928a3da7b2f0d297237f6411129cc0cccffbc77d92461022e617da026 (144,322,131 bytes)
2026-10-0894a357bc (no longer works: pool program upgraded)94a357bc22e57592fde37c3a98a4a79a79d031ea5f1ab90261d2f25d7ad85aec10,438,545262e1e98262e1e98f871a12dbd7f3d6a41350982a098109e7e7356e44e854b96dac73f2426 (144,322,131 bytes)
2026-10-08a8516e49 (no longer works: pool program upgraded)a8516e499a99fb8c0157cbdf5321ed3e9352d4511707b5ccc39e12277771c52910,438,942262e1e98262e1e98f871a12dbd7f3d6a41350982a098109e7e7356e44e854b96dac73f2426 (144,322,131 bytes)
2026-10-08d2a7291f (no longer works: pool program upgraded)d2a7291f11d583fab55b39ab67cc820808e5c7607618d1456c70cda34eb3450f10,441,804262e1e98262e1e98f871a12dbd7f3d6a41350982a098109e7e7356e44e854b96dac73f2426 (144,322,131 bytes)
2026-10-0936d0219d (no longer works: stale proof-tools pin)36d0219d0ccb169ff0dc6d81d60a0437c10e7c26d9878fe673d86cc4043fb58110,759,010a9f18f88a9f18f88d1999f50f1c589ec80c746fda634262c7051a5e7d76c534fe9431db826 (144,324,423 bytes)
2026-10-0914dd9efa (no longer works: pool AAG16 retired)14dd9efa7c6bbd2906a56e732a4aff9d23c7b867b6fd9fec4f005494acc3823b10,759,0689975fdf89975fdf857298f5fcb82feba64400b21faca0bad846c61e9126b9a0663d430be26 (144,324,423 bytes)
2026-10-10f2ea6840 (no longer served)f2ea684051a96e03ea86d998ad5b2f4033de55fce3a4f9695376e611884fdbc610,788,620ad860e62ad860e62dd9bde09008fce798dbe0970f59ef9f7fca846e5a5238c93d7f4259726 (144,319,242 bytes)
2026-10-11e3348092 (no longer served)e3348092deb29664a3496827f72bdd6dafc9f5f67f41b463da4c2bc84432cfac10,846,173ad860e62ad860e62dd9bde09008fce798dbe0970f59ef9f7fca846e5a5238c93d7f4259726 (144,319,242 bytes)
2026-10-119f9b4039 (no longer served)9f9b4039a044f74189b8a1a932c489c9653c1cdd3609d6b062363ced61ca30c610,814,984ad860e62ad860e62dd9bde09008fce798dbe0970f59ef9f7fca846e5a5238c93d7f4259726 (144,319,242 bytes)
2026-10-11488372b4 (no longer works: stale program pin)488372b4f12886748870eb5fb6d5f25eb42a43b6ddc6f74c20cac033fe5f692710,818,483ad860e62ad860e62dd9bde09008fce798dbe0970f59ef9f7fca846e5a5238c93d7f4259726 (144,319,242 bytes)
2026-10-1119542942 (no longer served)195429425616ad43e2e4bbb61e31da7b25bd74b30301b28ae4f4aa18a08250b110,818,4834767891247678912949d7da8b705c399edf03d2367465f6eb581b00a059356373baed28e26 (144,322,174 bytes)
2026-10-11394d020a (no longer served)394d020a4183ea7ff50282001e5f37cd5d5602822ef468df72569a0c3292061e10,819,9734767891247678912949d7da8b705c399edf03d2367465f6eb581b00a059356373baed28e26 (144,322,174 bytes)
2026-10-1108a4b56f08a4b56f6452268ffdd513e67326de8782b53dcec16ba88adaddf1679358120610,822,0474767891247678912949d7da8b705c399edf03d2367465f6eb581b00a059356373baed28e26 (144,322,174 bytes)
2026-10-12701809bd701809bdf80ea16a9d16105f067998029d2a0f03d69b885720a08d806eae30d410,943,9074767891247678912949d7da8b705c399edf03d2367465f6eb581b00a059356373baed28e26 (144,322,174 bytes)
2026-10-1228f3385328f33853062c9982283f59bef13a6bb33b6ce474ea62c0d30ae6e0d473e66da210,945,7185bed238f5bed238f3696208ca3a8e66d206e5fffc85f1823e959abe1901c2d57c17bcdf326 (144,319,242 bytes)
2026-10-12a9b9ea19a9b9ea19ca82a7e4fe991f01050aae148bea45db0bb46be31c22df310e08196910,949,2925bed238f5bed238f3696208ca3a8e66d206e5fffc85f1823e959abe1901c2d57c17bcdf326 (144,319,242 bytes)
2026-10-13d769dad3d769dad321e1a1f88e0557c65b56336b2d6356fbd0167bc0f4acbed55793b27a11,120,0515fa836925fa8369234088b532977254d91109e7eced3aef0228b9ed55c7c8a02e0a9a90826 (144,322,314 bytes)
2026-10-13d2ba7e62d2ba7e62eff143df57466d5f0ba534856e29c88007eafc22c3dfaeb89535eadb11,120,7945fa836925fa8369234088b532977254d91109e7eced3aef0228b9ed55c7c8a02e0a9a90826 (144,322,314 bytes)
2026-10-13db079e37db079e3700b17388873252fb91358d1918801ff69d1ee26f4e3e9f21bccbab3411,121,6705fa836925fa8369234088b532977254d91109e7eced3aef0228b9ed55c7c8a02e0a9a90826 (144,322,314 bytes)
2026-10-136a87b0a16a87b0a15ec5979313adc3e9b7f19e239c2f14af1c46565e958054dbc60e8af711,122,0245fa836925fa8369234088b532977254d91109e7eced3aef0228b9ed55c7c8a02e0a9a90826 (144,322,314 bytes)
2026-10-13b32bffc7b32bffc727e1e7e33fb134a3918638006259033511e1a2aaf455d037da1f70b311,124,2015fa836925fa8369234088b532977254d91109e7eced3aef0228b9ed55c7c8a02e0a9a90826 (144,322,314 bytes)
2026-10-132ec5cd822ec5cd82c2ae8b9008491d07b5dc4740a5db5904e92814870fd66080aec7fc7b11,113,1785fa836925fa8369234088b532977254d91109e7eced3aef0228b9ed55c7c8a02e0a9a90826 (144,322,314 bytes)
2026-10-136adb44306adb44302a8db0b19245a1366e56090c0f0d27c443f37e69c1c2ef97151c9e7411,115,0975fa836925fa8369234088b532977254d91109e7eced3aef0228b9ed55c7c8a02e0a9a90826 (144,322,314 bytes)
2026-10-148b897dc98b897dc95ce8c17c9b0730c6ca5fddaf727b315d054489154d30bd795692a39011,127,3285fa836925fa8369234088b532977254d91109e7eced3aef0228b9ed55c7c8a02e0a9a90826 (144,322,314 bytes)
2026-10-14c1963de1c1963de19cc61973bc35d2d55284b771db5846c323419f771e342f9cd3052e5711,128,1065fa836925fa8369234088b532977254d91109e7eced3aef0228b9ed55c7c8a02e0a9a90826 (144,322,314 bytes)
2026-10-1479f40d9479f40d948e80ecdbe29b67d336b971ecc50c3f6b220349e0915ff7d8cae7178d11,130,6495fa836925fa8369234088b532977254d91109e7eced3aef0228b9ed55c7c8a02e0a9a90826 (144,322,314 bytes)
2026-10-1400da3f6d00da3f6dfb766d83cd9f1fdb8c3a335c2de51a5dbab0d13b0e6ce3d50106cf0211,131,15678c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-1410c8bdfe10c8bdfe8bd677ce6f50d143c1af4b28d5b3f653c5c65f6356f1034e6f5840df11,132,90278c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-145e07378e5e07378e3416f54223cbb56fc04d28bed3106dfbdef58b62570ad0469f27aade11,135,32278c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-141505ebf01505ebf0afdb67fbbe6050d5065335f3b13e94cefd356fb422ce946f4fba325311,138,28478c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-15f2dc55fbf2dc55fb5d552bef98fe2d530d37c301045501d0f750a2c9a17ddf63b1a934f311,150,73978c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-15adb0f68badb0f68b23e192445ecb391a89f3e05dba89f05d0177aacdb092fbea3539fa8511,154,51878c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-15dd6ce54add6ce54a50e0e58be863f647620b767cb760d1278ee089b74c10c9806838304711,159,10778c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-15902397c7902397c7c00f815b7f80b1275a1a987ca78871df5fdf370e7c80a282ecfb15a411,176,40178c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-15a523d67ba523d67b85ebcfd6f07f653c2a9bde16a7c9d87f908874ddae71cf91083fabc811,177,57978c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-15c8c82dc4c8c82dc4ce0277f8c560adec5cb16119709d00240a8efa4ebbb2a426e5161b6a11,178,23578c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-153ec79a833ec79a8335ea99f87cf8f2c34ea8723c70a30bd6f30fc5c0fb177edfa181671411,184,49878c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-15dae9ba88dae9ba8800e48179602d5595c5bbc71029a758be726e72482d24a52126649ac911,184,99978c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-15b22ae0f7b22ae0f772097b698eba694cfec8b31061921a38948c11702df3653881361e9f11,185,13278c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-15fc7329d0fc7329d0267d82e7f06546009c64924d0ec713165c3bfe270512ba0672b94cbd11,187,41678c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-1565889774658897741c5d9bce482ff9d932f4ade7e51cf98f834e78c3f693da1e1771e54711,193,86878c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-151335e8151335e815f99108526e1a9d4e93f53a94d95910ea150e404987f09826c39fc54711,195,84078c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-15a7255985a72559850e57ae647a20df449f9f47be5d359e1cf1debda30ded104225bdacb511,212,42178c7114378c71143ecedf22096fdc1901eda5160e29c141f6961cce935b92e714ff85bd930 (191,014,041 bytes)
2026-10-155f5ca1895f5ca189829786779ba9e05c237bb6edf057a06d4745f0a601212136aa0bf68f11,216,2018d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-165b21a7885b21a788efa0e47f3e83f413f73a4c11a70f068edda47f4f68be3bd6c085595511,226,3338d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-16387938b4387938b415cfece575952e875ecafc7149e29279e202a4e862433f66f664a80311,230,0188d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-16f55f1fb8f55f1fb8f1b63bf4caf94b552f06f6c3126ed8fd598d6d8fe8fc9abd7377b50911,232,3548d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-160ff1dea50ff1dea585d7a2ca69e0a37f43684dcb411f5a28eafa84a3f7fee65f5cd1390411,235,8048d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-1699e5ce6099e5ce600a930373051d72e16b2fe75bec451cfbdd509439e58546d0e77058d211,247,2068d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-1654ae7e6554ae7e6525d0c2a5330f3243891a2cbc5d728a4bcea81a61ba3aaf065bed8b6311,266,5708d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-16fe90fa0afe90fa0a418682c08b49b05bcda64ffd7b6cf8803166f95968205c80a2fcab4b11,282,0218d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-16efd1a80defd1a80db30f354b1fd326c9619666b7d63ce4051428a5e7a4f267a04ca568ea11,284,4968d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-168d1268b78d1268b754e192e52be5ba3d5cf134ed42eee552605d96c11076a6004204c73711,402,5688d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-164baf3bca4baf3bca327b51694452760cdb6a4f65d8e869a4c64040c832e92937f66ab39511,416,6278d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-18491c1f01491c1f0186d39c718fba9a7e275a88a72752a90a63fab845ae8844abfbf3869411,537,1958d8db6a08d8db6a0ef847031d01a2b65608e4b456c231c0d348f893e01eba4ad908907f330 (191,017,113 bytes)
2026-10-1822fd74c522fd74c53ae9aa03fb33a848794e41f62e92c1d20e95697cc9d3233ca76c243211,593,541a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-19dfff2182dfff21825cc4452582636aa8ccf6fe96823b1f335bdb0514c723f9a5ae6f02dd11,614,411a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-20667ac38b667ac38b9b42b60853ea07024e81b1074105b3dbfba4346d61d86ef3aabef1b311,939,765a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-21285d2c1d285d2c1db3cfd9d8a5df47acc2c70e7e65816539c3f2ad216ede6a16358d762b12,117,554a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-2170ff655b70ff655b113c19d39c8594566c77d38fe7d459ea415f66cda1c09919841ad1a912,128,720a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-21e18d1d95e18d1d9537ea063f2a28f88b4db41a1b93067c5d5aa4f300daaddf80d854407412,133,623a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22a5a9b7dda5a9b7ddd7aa96aa7feb6470868cd662c20f0f412df665093e768c07c4cda23c12,153,017a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22780f6896780f6896d6051a0d49b5a716d0ed36d9ea1487342f5582b7f2bc1c91280342e712,157,954a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22a18f4dcca18f4dcc8553e48c173aa610e7b3632d8edb25dbe317dd1f820e44673dd0fa3912,158,087a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22ad143a47ad143a47257fa8b5e147ba3f6b662576794b06184abbedce42fd4f74993d9b7e12,161,659a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22fd8f40cffd8f40cfc0110953e30d8479bfe751545e04952df8faf03b634073d7fd308c7812,166,389a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22d9319f9cd9319f9cc0d4e5deebfa15e1ac35bee0bc4f4ffb95cd4f58e400ee322ac1107612,167,009a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22f3c65200f3c652001435e22d3e54232fe742166dd8dd5ae183b92c1a24274c7a52ed137c12,174,893a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22f7b2fe09f7b2fe093da4904a611ef95fb52e7888ad1f23b2f41681474d1bd9bef75a71f812,179,295a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22f1563e53f1563e53fc8d137fe44e6fb65d7247fa157b3066b7129b41ef9f99d2e3061ba712,180,292a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22402e7c36402e7c3666bf4dfe147de8229872bdf611540526a15d5fdb690392c81b878b9d12,181,283a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-224d9b6de24d9b6de27c68f9fb53c414d063679fde5a62eb26a2a46f13bebfde9a4d74b04212,186,827a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-223d64f9b43d64f9b47b1139c42d3a2ff22642951710beeb669bf633b934b31419e94cc84312,187,129a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22c6cbe0a6c6cbe0a61037f0a435f7ce448d6ff6fc6a4a97a9b7336fea33c9e7a1e56c11e712,194,855a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22ae568c80ae568c800e9c2e6ccaf4cad6958cf133aa07469a93428827e679d3a1be89505f12,197,454a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-2261674c4e61674c4e8c6309ae6c93338211bf57a674837f572e498215300031a65b9aa74312,200,396a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-220799072207990722e8c34815b7af576fe293f456c602895b74cbe6f75d5ea3d8b5a1d57812,201,104a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22ff6f25bcff6f25bccfd2a50929a8dc82137b4fb42172790f9d71a6c07f166bda3e052d2212,210,958a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-22bf5ad0c1bf5ad0c16095110ed0258b16525e55dc743dbaa36b6ba0e0738d4ab9c185ce9012,226,842a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-2357e0bc6a57e0bc6a687a2bfdd99fe9ff69834c53f842829dac245c756dc02a49cc1bd0fa12,235,821a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-236d58045e6d58045e00745225ce82558f7a464bd8ad3379915ac3d909a4cd1c9a2ab7c84c12,243,658a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-23e2b3bd72e2b3bd72ce01876258900e8683258e3d1606c598f9757c882fe49f57ac2868e512,248,891a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-23b840ab22b840ab22b761c3a08caa1fc73f7e9d0b4ae0139a21aeca10fdf71086a009270412,282,953a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-232b67ac652b67ac65c0b0dbe5bb41d3c393c8c44970fdd9c43e7e84a96c6a9e373ad5c95712,294,189a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-2398296ff098296ff0ef88ddfa494d9e1f46963a55563d92b1ec6fc29cfc1b0f18debe81e012,313,625a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-23 (candidate, npm next)63f08b6263f08b6256e8f9d53e9d4e2f24be3ac56580e8cb82d64517a8326e6749eaa92812,448,432a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-23 (candidate, npm next)eaf7063eeaf7063ed1fe0dbcbf1c1f689e1ce60018401d669fe8bad7a7d4483cb875da0a12,477,292a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-23 (candidate, npm next)a59aa27ba59aa27b98cd1822c4651ed0567cd35b3f03e087818d8e5cfdb71e6320b7ffae12,484,127a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-23 (candidate, npm next)b73f57e5b73f57e58ae0466a090f5b1728e7852bab48e7d28ad6bb0f0ba9657b6cc681b112,505,075a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-23 (candidate, npm next)654041bc654041bce4139bfb928180cc1a3c1ff05e570d9fc51ddfa718e9d0ef7fbf909512,513,236a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-23 (stable, pinned)b650bf06b650bf0682830e05207f52bad2ba426ec7f8fa1bbbfdb7e028057865e3d83d2412,522,998a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-23 (candidate, npm next)c0b0b77bc0b0b77bafa0cc4e15bd9c01e207c73b8188102f8ed1c9fe5e74e67c7bde008b12,523,149a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-23 (candidate, npm next)17d8275d17d8275d7939ba1783b53b5839277d88fdb473fd4e1cfb1e59e6f0226e13d8fb12,524,840a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)9af597979af59797297cdea3750a86cc8bc6287cab8952e4a8fc5da4bdb8d3e48ab2bd6712,528,864a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)4cda17924cda1792a58d926b79cdd34975b53b9177940b1f3e266318695cb32d7f70b29512,682,087a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)1d7842461d7842469a3a56390eae2b339649cb42551a19ef63c2f9b1d5716f875ce11b5212,694,423a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)afa037c8afa037c8868c722838c0642335b1767af4bcc0040878ae441e83cb94dd9aeea212,692,822a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)6048ca616048ca6123de12e425ab2f3575fa69838eb1ea93dbff3d2facab612e0004bf8a12,704,961a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)af5b54d5af5b54d5bce11c64a002dca7d59c8593767ddefe4b7177b8ef44cdefb27f003012,706,861a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)6304f6806304f68098886ee10121039f4fb06e7b07fc812b608c5595292ffeaad1ff2ea912,720,423a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)4a3321b04a3321b081e721e8815c614b5e68bb8bf31405cda64ff0b1b9f3b98e62958bab12,723,643a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)7438f0e37438f0e355051a345b05c050dcc5f2aac8a676e3972b1cf195cc48bb4188379012,750,584a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)1fe3c2f71fe3c2f76f93108cbe16d3ca665e14e298d03ec14f081a9660f82e114011e87d12,772,279a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)5023a2915023a2917ba9f9f802a955c0782826c061664754b9b463c59aca590154c1539e12,786,716a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)fe6cb068fe6cb068e76316bd9c4fab329dbd3586d980d69f6fe42a0f01fa1a254abb441012,791,175a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)1c3d204e1c3d204e7ba114b9d80654035efb4a244ac607f038e1961f23663b7af9b45dc512,794,106a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)3a9841623a9841626e4a97d756f610278b4e03f2571b556a7b06207c418a850b2b5200bf12,797,194a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-24 (candidate, npm next)b5da74cbb5da74cb566cf4df5a7381cbb3eb28797aff16377f170472b6fcefce230db2a212,800,520a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-26 (candidate, npm next)2408266a2408266a7f9cbcbb20184b9057f7a4b2c4f16aae5cc8bfc4860c9ec2ae49102212,809,303a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-26 (candidate, npm next)f8173150f8173150b96135bb49254f76b2b0de6154439b0d8dd47133320c2df65499e4948,272,978a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-27 (candidate, npm next)28821f7e28821f7e8b417b970591f4d9e27071b1d4886575f770c29b29cb112f7ed899638,286,646a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-27 (candidate, npm next)3163c1c63163c1c64f3d99abd84b0d2914132a07377d9a5ad2c08f803bd75ca8f042a67c8,295,891a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-27 (candidate, npm next)b09cef56b09cef5660e803ffc955922b067c8e00b717853b994c096d2fc591053bd593788,328,905a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-27 (candidate, npm next)f6ab1c40f6ab1c4098bf84c9d5af4dbbcbf9aa077430dd347aa14912fbaf571741bd314a8,332,382a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-27 (candidate, npm next)ca9504f8ca9504f8356a05d2a1fc36428f6443419e6943406d11e201d4fa2ff9d6c848148,333,810a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-27 (candidate, npm next)1406c0d41406c0d44399772d43e33dc6b4cfb7428f9f24215e13389ac46f5dd6dc28d2248,331,849a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-27 (candidate, npm next)bfaedd12bfaedd12d120b4b5421cdf6c9c06b07b7e338fd6d4e74b7225f2a0d3aa150cf48,339,853a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-27 (candidate, npm next)dc0b6b99dc0b6b99ced49b6c454c44c8b92ee46d77d38d5fdabcf44154b42008944250068,345,095a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-27 (candidate, npm next)148b3f52148b3f5279bf4b0914aa076c617b9fd51956480a57058dfee4492c208fd72e7a8,348,544a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-28 (candidate, npm next)458187f8458187f8965d771cfb6028f26b902dea88f170e8d38c3943d7e3b3d5d16255938,387,014a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-28 (candidate, npm next)396cdf6f396cdf6f70b5fdf59dc7459886dfff44b027d1626accf8a8b0d53bb20c01796c8,403,065a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-28 (candidate, npm next)ec36e97eec36e97eb1f5e46885b1d6ed829214fdbc3d8429da8e82742533e55cd9ecb9fc8,412,038a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-28 (candidate, npm next)27af600c27af600ce166932ba579f8155970ea89dfe489ec56ef98fd5f9e7f3db69d049a8,450,204a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-28 (candidate, npm next)967a5d2f967a5d2f095fb69eab394061c62db26cc077bdcb3e7a0791480f2b4ed54308eb8,458,850a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-28 (candidate, npm next)b2d6f450b2d6f4507136f85fea6e6305a0a958a98b95c3ba2b82a060cc182b4a6d6f26bd8,471,165a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-28 (candidate, npm next)67cedf2467cedf24617c4cd78d268b549ad4b346101b6de7338a5a3889df8f81a29c78a38,472,739a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-28 (candidate, npm next)916f76a4916f76a4396c16a3e274e9644291fef6362b5ba89f462400859888f9d94f77f98,474,565a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-29 (candidate, npm next)885a1cb2885a1cb267c4c77037e8a92d4fc5f093768cf59dd51221d6d58b23b9360e66808,655,739a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-29 (candidate, npm next)48f5c8ab48f5c8ab81e2ef98cc7c1d8daded7e7990caab27a7e9b7b0d85f45ec6a9cf8068,708,740a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-29 (candidate, npm next)ffeec7ccffeec7cc3bbf725f6735af177fde4e435f76dc81bb5dd8b098b6840af828c99e8,720,536a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-29 (candidate, npm next)487128ca487128ca5b4e0eb3583a73ee5d9bece578476a10e6652f283aa1688276b916f28,741,887a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-30 (candidate, npm next)821b09a3821b09a3d1295b30eee38eafb6aad2665a60808a3163baddeb14c02366109e568,815,826a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-30 (candidate, npm next)1de148b91de148b9fd19cd1bac5b690267cb77c227a3e74300873fa9eda02085833ccb2f8,826,955a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-30 (candidate, npm next)8f281d4a8f281d4a0dfc79a40a10dbf8c31de01823d8dffb15c151b6e774d781e96f17368,847,121a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-10-30 (stable, npm latest)3c8b302d3c8b302d8f0616edc98cc277f1b41b5cc47d121efb77a7b1cba3214ab60fb8b88,854,666a9af32dfa9af32df6b7ff7e3243bd607b7ff582da5732fa422f28afd9b8bc3e9f0d6c74130 (191,112,305 bytes)
2026-11-02 (candidate, npm next)8ab2085b8ab2085ba462b3c2dda5d50de087d053593a7e96d2210bf9dfaa6d763dbe20d29,047,71129a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-03 (candidate, npm next)d446c36dd446c36da9b526aea16cf685fb7b1532542f1eea13d0f2acabca373711bace8f9,048,03029a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-03 (candidate, npm next)706b774a706b774ac8ab6d671a81f7aa269e2a1d1e222d60f545ddde48945fbfdc8b0bcd9,052,67629a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-03 (candidate, npm next)65d2837c65d2837cf983622ed22a9d2bfb488a3a6ff0f276cb0d561b1be6074415daab0f9,055,61029a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-03 (candidate, npm next)003fb669003fb669ed2395e72fbedad6336c943c92c940fba878d03c4fa03245e2b5ae789,056,15329a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-03 (candidate, npm next)46b6176b46b6176b85190a52572566a760686111c9f01d07b8057e83a3ea1d76a20a3f5f9,069,62829a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-03 (candidate, npm next)7e2a43927e2a4392fba9ab1854f4b81a553759d92a07d500b9408515bcf3fb28f28c7f399,218,28829a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-04 (candidate, npm next)cefda627cefda627cdfe4d2186085a15dd230f822175f98c4f3a10c4b5f1e1327114d6279,244,37429a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-04 (candidate, npm next)eb6f9ba6eb6f9ba6c43c52189f2d1f9124f1e23b23e471a168ffc0fe008c818c35f6b9819,251,59929a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-04 (candidate, npm next)9bbc535c9bbc535c39d7f3ca35992be853e343d8374075618e0130ef2ab4f526a300b0919,260,16929a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-04 (candidate, npm next)424f0dda424f0dda8e881f18e02c8fb9b224deaa3c4f65476f26e5f66e4a6dbb30ff2d889,260,30429a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-04 (candidate, npm next)7a038d957a038d95a5e6a448ffafbb485aac78f879c5ff57a261b73a263ffa5e9c9b61169,273,26829a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-04 (candidate, npm next)c7dd8df8c7dd8df81dd11b9f7cce75520a5c4ebacc1cd071faa64497a5454745cce12a8e9,297,38429a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-04 (candidate, npm next)a896aa3ca896aa3cf3bf8327b7e63ff433a9373a16c26437b16ba8a319c0668c32523fbe9,298,61929a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-05 (candidate, npm next)162d3a00162d3a005e0491faedec0df58d95385a183a68993d209faa54e51dbdc2c81afb9,298,96429a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-05 (candidate, npm next)6801635b6801635b43f010f60eea3c04a763a1ad06ef772c20b6a77907c8bdc66fae8e759,301,25129a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-05 (candidate, npm next)7320b9c07320b9c07d69b0d94e0ee25c1821e1f674dde5964c65e84fe3de3be6c1ff71709,306,00629a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-05 (candidate, npm next)9ade26e69ade26e6a05c6891180751fdd695d76a8fef6376a8636b2c975b622192ac00029,313,54929a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-05 (candidate, npm next)1011ea8e1011ea8eb912d2b6cdb1c8b5696e9c9c284ac665033663e9f9d4bf553c7843b19,317,65829a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-05 (candidate, npm next)b033b5f8b033b5f8e1c224d3b32949534c3da43da92a43b991cc6943889b74701533bafb9,331,41329a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-05 (candidate, npm next)020857fb020857fbde16e97bd3ade045266b4f7476f966a68df61b34e8878e7cc92eac879,353,09929a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-05 (candidate, npm next)190dcbc3190dcbc3bb63059691cef5a801d8c249f403dff69a2e45c031da5f5edbde9f299,389,00329a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-05 (candidate, npm next)1018a5341018a5346c79bc828bd3200c8c6c7d741cac55e279d5b88a70f895f44cc105c69,392,33229a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-05 (candidate, npm next)dd3bab15dd3bab15896a11e725fd452abbfd4fbad9b412640201141c884a77bd6c81d5dd9,395,75129a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)eb821202eb8212021af756602a223fcb5e329e0eaf488b7b276850014abef3c6a917eb819,401,66629a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)8d9526ec8d9526ec3aa19b0a648557fb5ccb8568e7988f91bab9b208767fb00a50c8b71f9,405,04129a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)ab594bacab594bac31fc1416d01a6b552a820a8b35f99418b00d66bffd63991692a3f5c69,406,42729a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)839c305e839c305ea9d4e06bfef8f435128052c21d778a3754eba202d27a99359774e8979,442,29329a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)4c74d0994c74d0997c8a9b3f885f16ddde11a7ed912e216fdf1ac5392ca1dcbda0b0e2d29,473,78029a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)56086b8f56086b8fbc2942ce2fdf0a58d9d18c060af7b3d11fce2efd89e217827d0e777a9,344,33129a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)a38a1b54a38a1b5453939a41409bd1049286eea2801c7c67ffa5c216ea43f6b3cb1f0f399,353,05129a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)d67bcc6cd67bcc6c4e3910c2c10af366bc4f0dfab14e7023805cd9b15ebe92f68ba410989,344,40629a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)fed76293fed76293d7f682c50f249284a7f4bbf14d2d6c7d8926c052c6ef1f683419b8dd9,349,71629a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)cab378d1cab378d1d911f907711de448e5c6525febcd0e73ff8988efcb4ae7d1fa82e9619,351,54929a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-06 (candidate, npm next)80d2ed1080d2ed100a8e4a1f0c3926c4572c20f71ed5c333ff510dd0e291065480fe2d989,360,48829a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-07 (candidate, npm next)f02883e5f02883e5a9d69a70b2c237fb4bf3c3a80a722c19a0d1fc60042d749bfa263f699,334,67529a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-07 (candidate, npm next)6816afb56816afb568f56eea0cdc61849cdbba1804ee43e3f22368f6c518c36c7cc2ec939,340,65929a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-07 (candidate, npm next)6b2545a26b2545a2de92f5fb8df1feebbf9543948db4f8d72ec205d3a1d07ebe89e79f489,341,37929a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-07 (candidate, npm next)af144e3caf144e3c6a627910142f0a31ac16fa0cf3337d464a85afce247eb28be6575a669,345,96429a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-07 (candidate, npm next)9491b5e09491b5e02a253f9ee9f72f83f676c678b2330dc8f7655eeeb6f1fcc4fd324a479,347,29829a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-08 (candidate, npm next)bceca311bceca3110047bb17e9d30e8a10e2066f2d180f4d5b111bac1c6a5a2b1d88e6259,362,56529a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-08 (candidate, npm next)8f28c0268f28c026829781a1271b3273a5ccd80808a7fa65a822143ec0243a619fe278139,384,79129a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-08 (candidate, npm next)33c8013b33c8013b5b98881e3247ff282f4997f433affbe6a72c2d65540c6df14746982c9,396,98029a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-08 (candidate, npm next)2e69a6492e69a649217c7f9c78c5cab9d748fd478e50b0752c0b769e5be6533b65c717bd9,406,05629a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-08 (candidate, npm next)9f713df29f713df26eed69219dcf8555afe39ba224a2606edd8ba970e79786a4de4a79b99,433,97929a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-08 (candidate, npm next)a7aadb54a7aadb545214ada4d5c61433b62539a78559d35e2ae00106e9a0516eff2ad2569,445,99429a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-09 (candidate, npm next)30be98b730be98b75cc5bfe572442c64facdc78894536998dfbea14c4693f43d62c1c5f19,454,03429a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-09 (candidate, npm next)00e93f6500e93f651c5151d2105472d1135cca61a9e68340553f742a990f0c3fa02d51d29,469,18329a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-09 (candidate, npm next)373e47b0373e47b02351671d49cb9b32f4c6d10d7695f424e8db567275ae4d7223dde2d39,484,58529a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-09 (candidate, npm next)571f1b88571f1b887cf0dbf6b36b6c44932d84de22f13951d26d6c5484dddb44cbfed6439,479,35129a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-09 (candidate, npm next)70b69f2a70b69f2aadc0757823442d0bc3a0b23409df574750044b69bf9cb4be830955889,493,36529a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-09 (candidate, npm next)b5d26888b5d26888908f60a311b42d9d0ba42bb5be37f1464a4bdcfe1ef3ea45343634439,493,84429a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-09 (candidate, npm next)3a493f913a493f914e0d58e854685af40d3f380b1021aaca963528edb50a6a4447da7ff69,497,35229a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-09 (candidate, npm next)a7462936a74629364f4ac22ce7b0ac74294824d926277cc1d2c5fb160f69087cb04a03039,497,70329a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-09 (candidate, npm next)f733f68af733f68a13bd6ac7a1cbb747e88504c18a09eda4a5bb15bb6d5eb076698f46829,499,67929a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-10 (candidate, npm next)cb3d8f7dcb3d8f7da30834d0d6bb95942a06afe07b394be9ad6f48bc19fff3718d4a05cc9,504,18129a6a9c729a6a9c77ae04a76abf29670f580759df450e7e393e803d7756f21beabbf483830 (191,114,154 bytes)
2026-11-11 (candidate, npm next)bf8c2b52bf8c2b5242ddeb14e6f291ce51ae98d257b1f0cc85d920e85273d97b26d0e1e79,645,966eb4cbf8aeb4cbf8a3a7b510e8b35439297669578e3d7e4138ff3f251c9fed34d4dbaab9930 (191,116,074 bytes)
2026-11-11 (stable until 2026-11-11, 0.3.210)2b7c138c2b7c138c4c824705da41d7d40c276b95bd8d546a6f80c782fdc5b698c89469969,650,108eb4cbf8aeb4cbf8a3a7b510e8b35439297669578e3d7e4138ff3f251c9fed34d4dbaab9930 (191,116,074 bytes)
2026-11-11 (candidate, npm next, 0.3.211)16c37be116c37be1941f1e83a98ce3c15d4bd9bdb3528c5916f0d5aa7f6b3b0d2eeaa5799,662,400eb4cbf8aeb4cbf8a3a7b510e8b35439297669578e3d7e4138ff3f251c9fed34d4dbaab9930 (191,116,074 bytes)
2026-11-11 (candidate, npm next, 0.3.212)2dd06d0d2dd06d0d1f1482e159084ac58482cb1a9f1a7d605d73cc74b291678481650edd9,664,309eb4cbf8aeb4cbf8a3a7b510e8b35439297669578e3d7e4138ff3f251c9fed34d4dbaab9930 (191,116,074 bytes)
2026-11-11 (candidate, npm next, 0.3.213)451d8fb8451d8fb860e4006d553a2b5611ff5d022557e2b0d2ec9a7c52be5d935f2ba6d99,702,875eb4cbf8aeb4cbf8a3a7b510e8b35439297669578e3d7e4138ff3f251c9fed34d4dbaab9930 (191,116,074 bytes)
2026-11-11 (candidate, npm next, 0.3.214)0356e4bf0356e4bfd5a34def081801c4b51462cf718c217f411f400479e0e4b9c82eb1309,715,960eb4cbf8aeb4cbf8a3a7b510e8b35439297669578e3d7e4138ff3f251c9fed34d4dbaab9930 (191,116,074 bytes)
2026-11-11 (candidate, npm next, 0.3.215)167ac278167ac2788a26bee55b1042f37570ce152e7748aaa35675f831057c2e0975e86b9,766,852eb4cbf8aeb4cbf8a3a7b510e8b35439297669578e3d7e4138ff3f251c9fed34d4dbaab9930 (191,116,074 bytes)
2026-11-11 (candidate, npm next, 0.3.216)11be1dd011be1dd024a789d9353884cbe72295cf14a0f70fa09e026f060b6d259f396e2610,198,212eb4cbf8aeb4cbf8a3a7b510e8b35439297669578e3d7e4138ff3f251c9fed34d4dbaab9930 (191,116,074 bytes)
2026-11-11 (stable, npm latest, 0.3.217)80851766808517662304749b5963afa0417a3bc175db75431d3793f73e64378abf7b3f1310,206,582eb4cbf8aeb4cbf8a3a7b510e8b35439297669578e3d7e4138ff3f251c9fed34d4dbaab9930 (191,116,074 bytes)

Beside each wallet file, the website also serves LICENSE.txt (the copyright notice), THIRD_PARTY_NOTICES.txt (the open-source licenses inside the file), and manifest.json (the source commit and every bundled package). The manifest's source commit names our private development repository. This public repository publishes the hashes, not the source code. Every release is reproducible: two independent builds (Windows and Linux) of that commit give the same SHA-256, and our server refuses to start if the file it serves differs from the pinned hash.

Advanced: the wallet file without npm

You do not need this part: shinjuku setup does all of it. It is for a machine without npm, or to get and check each file yourself.

The wallet needs Node.js 22.21 or later (or Node.js 24 or later) and nothing else. The stable release is 2b7c138c: put it in place of <sha8> below.

1. Download

curl -fsSLO https://shinjukustaition.com/wallet/<sha8>/shinjuku-wallet.mjs

On Windows, type curl.exe, not curl (in Windows PowerShell, curl is a different command).

Over Tor, from our onion service (production):

curl --socks5-hostname 127.0.0.1:9050 -fsSLO \
  http://2kfhlfuyuwvhmibjrpxqsg4nrbcxasjgjq7kmnfzgfwzptkhhznz3dad.onion/wallet/<sha8>/shinjuku-wallet.mjs

2. Check the SHA-256

Compare the file with the hash in the Releases table above. Go on only when the check prints OK. On any other result, delete the file and do not run it.

Linux:

echo "<sha256>  shinjuku-wallet.mjs" | sha256sum -c -

macOS:

echo "<sha256>  shinjuku-wallet.mjs" | shasum -a 256 -c -

Windows (PowerShell):

if ((Get-FileHash .\shinjuku-wallet.mjs -Algorithm SHA256).Hash -eq "<sha256>") { "OK" } else { "MISMATCH" }

Windows (cmd.exe): certutil -hashfile shinjuku-wallet.mjs SHA256 prints the hash. It must equal the SHA-256 in the table.

A match proves that your copy is complete and equals the file whose hash we published here. It does not prove who made the file.

3. Read the help

node shinjuku-wallet.mjs help
node shinjuku-wallet.mjs help init

help <command> prints a working example, every flag, and the next step. Exit code 0 means done. Exit code 1 means the command ran and failed (one line says why). Exit code 2 means the command line is wrong (it shows a working example).

With the wallet file alone, these commands work: every help page, init, backup-export, backup-verify, restore, balance (without --refresh), and limits. The money commands also need the proof tools (next section).

4. Get the proof tools

add-funds, deposit, recover, balance --refresh, pay, buy-item, unshield, and pocket reshield need the proof tools of the facilitator that you use: two manifests, the facilitator's public profile, Linux x86-64 provers, and the signed proving parameters (30 files, about 191 MB, for proof tools a9af32df).

The provers are Linux programs.

  • Linux: run the steps below as written.
  • Windows: install WSL (Ubuntu). Run the steps in a WSL shell, in a folder on a Windows drive (for example /mnt/c/Users/<you>/shinjuku-proof-tools). Then run the wallet from Windows with the C:\ paths. The wallet runs each prover through wsl.exe.
  • macOS: not supported. Use a Linux machine or a Linux container.
mkdir shinjuku-proof-tools && cd shinjuku-proof-tools
base=https://shinjukustaition.com/proof-tools/<sha8>
curl -fsSO "$base/SHA256SUMS"
echo "<sha256 of the file list>  SHA256SUMS" | sha256sum -c -
while read -r sum path; do mkdir -p "$(dirname "$path")"; curl -fsS -o "$path" "$base/$path"; done < SHA256SUMS
sha256sum -c --strict --quiet SHA256SUMS && echo ALL_OK
chmod +x bin/* house/bin/* bundle/bin/*

Go on only when the list check prints OK and the last check prints ALL_OK. Then give the wallet:

  • --proof-tools shinjuku-proof-tools/proof-tools.json (--payer-proof-tools for unshield),
  • --exit-proof-tools shinjuku-proof-tools/exit-proof-tools.json,
  • --profile shinjuku-proof-tools/public-profile.json.

The wallet checks the SHA-256 of each binary again before every run.

5. Use the wallet file

The full guide is the wallet's own help. The steps below follow it.

What you need

  • Node.js 22.21 or later, or Node.js 24 or later. (The two privacy-cash commands need Node.js 24 and the Privacy Cash SDK, which the wallet file does not include.)
  • The proof tools (previous section).
  • A Solana RPC URL in a private file, rpc.txt. With --tor, use an RPC URL that has no API key in it: a keyed URL names its owner.
  • A private folder for the wallet, and a passphrase of 8 or more characters.
  • The public identities (program, pool, mint, network, facilitator): run node shinjuku-wallet.mjs help. Each release names its own facilitator.
export SHIELDED_WALLET_HOME=<a private folder>
export SHIELDED_WALLET_PASSPHRASE=<your passphrase>
W=shinjuku-wallet.mjs

Keep the same passphrase in passphrase.txt and your RPC URL in rpc.txt.

Hide your IP

Add --tor to any command. Start Tor with one line in torrc: HTTPTunnelPort 127.0.0.1:9080 IsolateDestAddr. The wallet checks that it reaches the network through Tor before it sends any other request, and it refuses any connection that does not go through the proxy.

1. Create the wallet

node $W init --pool $POOL --network $NETWORK --asset $MINT \
  --binding carbon-shielded-exact/svm-v3 --backup-out recovery.txt

Caps are optional: by default there is no limit, and only the balance bounds a payment. init --max-payment and --max-cumulative set caps in the wallet file. limits shows them, and changes or removes them later (none removes a cap):

node $W limits --pool $POOL
node $W limits --pool $POOL --max-payment none --max-cumulative none

init writes your recovery text (the seed and the Solana secret key) only to the new --backup-out file, never to the screen. Copy that file to two offline places, then delete it from this machine. Keep the solanaFeePayer and seedFingerprint that init prints beside it.

2. Back up (after every step that moves value)

node $W backup-export --pool $POOL --to /backups/01-created
node $W backup-verify --pool $POOL --backup-dir /backups/01-created

3. Add funds privately

node $W help add-funds

add-funds runs every funding step in order and waits between them. It ends with ready and your balance. Three routes:

  • exchange: withdraw the exact amount from an exchange to the one-time address that the wallet prints. The exchange knows you, the amount, and the address.
  • changenow: a fixed-rate ChangeNOW swap to the one-time address, paid with Monero (best), BTC, or ETH. ChangeNOW sees the amount and the address.
  • privacy-cash: your own wallet pays into the Privacy Cash pool; at least 24 hours and 10 other deposits later, Privacy Cash pays the one-time address. It takes about a day.

Never fund the one-time address from a wallet that you use elsewhere. That transfer links you.

4. Pay

node $W help pay
  • A seller whose 402 offers shielded-exact: pay pays it from your shielded balance at the seller's price.
  • Any other Solana x402 exact endpoint that takes USDC: pay pays it through Shinjuku (float pay). Your wallet pays us privately, price plus the fee, and we pay the seller from our float. --maximum-atomic must cover price plus fee. Nothing to fill or set up.
  • A rerun with the same --request-id never pays twice.

A balance that came in by several deposits (for example 0.779 and 2.000 USDC) cannot pay 2.001 USDC in one payment, although the total covers it. node $W help names the command that readies such a balance for one payment: nothing leaves the pool, and our relayer pays every fee. After it, wait for the next pool anchor (usually within a minute), then pay.

5. Check your balance and withdraw

node $W help balance
node $W help unshield

unshield sends some or all of your balance to a public Solana address; our relayer sends the exit and pays its fees. Run backup-export again after each step that moves value.

The self-custody model

  • Your keys are a Solana key and a shielded seed. init makes both on your machine. No sign-up, no Ethereum key, and no identity signature.
  • We never receive your keys, seed, passphrase, or recovery file. We cannot recover them. If you lose the seed and the recovery file, your funds are lost.
  • restore rebuilds the wallet from the recovery file. recover reads your shielded notes from your seed, the public chain history, and the public memos.
  • The wallet writes deposit, payment, and unshield steps to its log before it sends them. After an interruption, run the same command again. The help of each command says how it resumes.
  • Our relayer pays the network fees of relayed deposits and exits. A self-broadcast deposit and the first Privacy Cash step are paid by your own key.
  • We never ask for your seed, passphrase, or recovery file. Anyone who asks is not us.

What the privacy covers, and what it does not

What the chain does not show: who paid a seller from a Shinjuku Shielded balance. With float pay, the chain shows a pool payment (the payer hidden) and then a Shinjuku float pocket that pays the seller. Many buyers pay from the same float pockets, so a chain observer cannot group one buyer's purchases.

What it does not hide:

  • Our server sees what it processes: your deposits, payments, and exits, their times, and the IP address of each request (a Tor exit with --tor).
  • Deposits are public. A deposit's amount and time are public. With few depositors in a pool, time can pair your deposit with your later payments. When you are the only user (k=1), waiting buys nothing. Our pools are new and have few users.
  • Float pay: our server sees both sides. For a float payment, our server sees that this private payment paid seller X, the price, the resource URL, and the time. It does not see your wallet. It keeps that link only until the payment is final or refunded.
  • Float pay: the seller's price is public. The transfer from our float pocket to the seller shows the amount, the seller, and the time. It lands seconds after your pool payment, so time can pair the two.
  • Another facilitator sees its last step. The seller's own facilitator settles the transfer from our float pocket. It sees our pocket, the seller, the amount, and the time, as the chain does.
  • Your own traces. A keyed RPC URL names you. The timing of your requests links them. Everything you sign on chain is public.

Keys, audits, and limits:

  • The production keys of the main shielded pool came from a single-operator offline setup. No multi-party ceremony has run.
  • No independent audit of the circuits, the verifiers, or the binding has run.
  • Do not expect a cold wallet to settle at once: on 2026-09-23 a payment took 1.5 to 4 minutes.
  • A new deposit pays after the next pool anchor (about every 30 s when the pool grew; 12 of 12 within 45 s in our test on 2026-10-11). So a balance from several deposits can need one extra step and one anchor wait before a large payment.
  • Float pay needs our float to hold enough. When it is busy or being filled, the wallet refuses before it pays (p03_float_busy_retry_later, p03_float_not_ready_retry_later); try again later.

Copyright

Each wallet file comes with this notice (LICENSE.txt beside the file):

Shinjuku Shielded wallet Copyright (c) 2026 Shinjuku Shielded. All rights reserved.

The open-source packages inside this file keep their own licenses: see THIRD_PARTY_NOTICES.txt.

THIRD_PARTY_NOTICES.txt beside each release lists every open-source component inside the file, with its license text. One of them, rpc-websockets, is under LGPL-3.0-only.

Security

See SECURITY.md.

NPM
shinjuku-shield
Install Command
npm install shinjuku-shield
Runtime: npx