Pinned Tweet
Major update: the Bankhaus smart contracts are deployed. Everything is now live on Robinhood Chain.
Smart Contract: 0x2025c6ee9f15b46ae8ed4b76bbd688e41948ca15, source verified, exact match.
What went live is the onchain protocol: sealed balances, proofs checked on chain, mandates, letters, payroll, x402, multi-path. Connect a wallet and use it.
Update: the board opens streams. A company account that pays salaries by the hour.
One member proposes the stream, k members sign, and the board opens it with one proof under the view key they share. The treasury sets the total aside, sealed; each person releases what accrued. No admin key, no payroll run, no rate on chain.
bankhaus.app/board
Improved privacy? Say no more.
Introducing a salary nobody can trace. Not the amount, not the person.
A sealed stream can now go to a hidden recipient: a one-time account announced at the counter, which only they recognise with their key. The chain sees a stream to an address with no handle, no history and no second use, and a rate that is two ciphertexts. They release from that account whenever they like.
bankhaus.app/streams
Four days, nine updates.
Passkey accounts, alerts and webhooks, range letters, multisig boards, audit export, sub-agents, sealed streams, metered x402 and payroll that pays itself. Two contracts redeployed, 132 checks on the real bytecode, 42 tools in bankhaus-mcp, and still not one figure on chain. All of it live on Robinhood Chain.
More to come!
What a sealed stream costs.
Opening one is 2,006,323 gas: one proof, 1,792 bytes. A release is 38,239 gas: two multiplications, two additions, by anyone. A month of hourly pay as 160 sealed transfers would be 293.6M gas; as one stream and 160 releases it is 8.1M. Thirty-six times less, measured on the real bytecode.
New: payroll that pays itself.
One sealed stream per person, by the hour, opened once with one proof each. Everyone releases what accrued when they like, and next month there is nothing to run. The chain holds five streams, no rate and no total. The payslip is the letter that opens the rate to that person alone.
bankhaus.app/payroll
Why a stream release needs no proof?
ElGamal is homomorphic. Multiply both points of a ciphertext of the rate by k and you get a ciphertext of k × rate under the same key. The chain does that with the periods elapsed and adds the result to the recipient’s balance. The total was proven once at opening and the count is enforced, so nothing else needs proving.
We improved our x402: pay an API by the second, with one proof per session.
The server’s 402 asks for a stream instead of a price: so much per second, for so long. Your agent opens the stream once and retries with a letter that opens the rate to the server; the server checks it against the stream on chain and serves while the meter runs. It releases what accrued whenever it likes; you stop paying by cancelling. The price never appears on chain.
Live at bankhaus.app/api/metered
New sealed streams. Pay someone by the hour, by the day or by the month, and the chain never learns the amount.
Sealed balances contract (not a token): 0x2ac72c1dbe9aa3d03d4af67996dc8a709f36d59f
What it is: you open a stream once. The rate is sealed to your key and to theirs, you prove once that rate × duration fits in your balance, and that total is set aside. From then on the money accrues by itself: the recipient, or anyone, releases what has accrued at any time, with no signature from you and no proof from anyone, because the chain just multiplies the sealed rate by the time elapsed. Cancel and what is left comes back to you, still sealed. Salaries, rent, subscriptions. Live on Robinhood Chain.
No, nobody can, including us.
Your balance is an ElGamal ciphertext on chain. The view key that opens it is derived on your device from one signature and never leaves it, the site has no server that holds keys. When you need to show a figure, you write a letter that opens one transfer to one reader, or an audit file for one period. The chain keeps a receipt that you answered, never the number.
xitter.cf/Nuev9999/status/211224…
Thanks for reaching out.
The chain never sees the figure, but it checks a proof with every transfer. Each sealed transfer carries a 1,792-byte proof: a Sigma protocol that links the encrypted deltas to the sender’s key, and a Bulletproof that shows the balance after the payment is still in range.
No balance, no proof, no transfer. The verifier checks it in one multi-scalar multiplication, 1.83M gas.
xitter.cf/0xHach1/status/2112239…
Replying to @UseBankhaus
If the amounts are encrypted, how does the chain know the sender actually has the balance?
Update: sub-agents. An agent can hire an agent, and the mandate only shrinks.
A sub-agent runs under the same owner with ceilings that fit inside its parent’s, and a recipient list the parent could pay. Every spend below counts against the day of every agent above, so a whole tree never exceeds the root mandate. Pause the top and the branch stops. Live on Robinhood Chain.
bankhaus.app/agents#subagent…
0xefb57fd8fd62dbe2f7f486e56aa6f81fe83f43f9
Bankhaus team is proud to announce the audit export. Hand the auditor one period, proven line by line, and nothing else.
An audit file holds every sealed transfer you sent between two dates, each as a letter the auditor checks against the chain, plus the total. The auditor also lists your transfers for the period on chain and matches them: a line left out shows as missing, one invented shows as extra. Nothing before, nothing after, never your balance.
More details at bankhaus.app/audit
A sealed transfer’s proof is 1,792 bytes.
Two commitments, one challenge and seven responses for the Sigma protocol. Then the Bulletproof: four points, three scalars, six folded rounds of L and R, and a, b. The rest is ABI framing. The chain checks it in one multi-scalar multiplication.
What a proof is tied to.
The challenge of a sealed transfer is a keccak over twenty words: chain id, token, sender, recipient, both keys, the balance ciphertext and both deltas. Change one and it is a different proof. So nothing replays on another chain, to another recipient, or after the balance moved.
We have been working all weekend for this, and it is finally here: multisig company accounts.
The Board is a Bankhaus account with n members and a threshold k. It holds the sealed balance, owns the agents and approves their queue, and does anything only when k members have signed. No admin key, no proposal on chain, a single-use nonce, a deadline. Live on Robinhood Chain.
0xefb57fd8fd62dbe2f7f486e56aa6f81fe83f43f9
Update: range letters. Prove “at least”, never the number.
A landlord wants to know you earn at least 3,000 a month; a bank, that you hold at least 50,000. A range letter proves the bound and nothing else: no figure, no randomness, a proof the reader checks offline. Ask for more than there is and no letter can be written at all.
bankhaus.app/letters#range
Any questions about Bankhaus?
How a sealed transfer is checked, what a letter proves, how an agent is held to its mandate, what the chain sees and what it never does. Ask in the comments. We answer the best ones here, one by one, and nothing is too basic or too technical.
We just added alerts and webhooks, where your keys are, not on our server.
A notification on your device when a payment lands, a letter names you or an agent queues something. A signed webhook for your server, a tool for your agent. All of it polls the chain itself: no subscription list anywhere, and no alert ever carries a figure.
bankhaus.app/docs#alerts
Short term roadmap: the next days, then the next weeks.
Days: the SDK, MCP and CLI on npm, alerts and webhooks, range letters.
Week one: audit export, one line on the board that stays sealed until it ships, passkeys on Android.
Week two: company accounts with multisig approvals. Then one proof for all the legs of a multi-path payment: aggregated Bulletproofs, a third of the gas.
More details to come, stay tuned.
0xefb57fd8fd62dbe2f7f486e56aa6f81fe83f43f9
Why passkeys matter: every feature we shipped was behind a wallet. Install an extension, save twelve words, find ETH, switch networks. Now the door is your fingerprint, the keys are never stored, and the house pays your first gas.
Same privacy, no wall. This is the update that turns the tech into a product anyone can use.
bankhaus.app/app
xitter.cf/UseBankhaus/status/211…




















