pull down to refresh
Update: Since this post, monostr got two changes that answer the main concerns raised here:
- Your view key can stay with you (0.17). A personal watcher runs on a Raspberry Pi, a NAS or any small server. It needs no Monero node, no domain and no open port. It scans through public nodes, and a payment counts only when two independent nodes report it. Tutorial: https://monostr.com/watcher/personal/
- Tip amounts are hidden by default (0.18). Receipts show that someone tipped, not how much. Showing amounts is opt-in.
If you'd rather run a full watcher with your own node, for yourself or for others: https://monostr.com/watcher/self-host/
Feedback welcome, here or on Nostr.
Your idea made it into 0.17: the watcher can now be addressed by its pubkey and relays instead of a domain. It runs on your own machine without a node or domain; the app sets it up from an nprofile. https://github.com/schmidt1024/monostr/blob/main/watcher/SELFHOST.md
Update: both points are addressed now. 0.17: a personal watcher runs on your own machine, so the view key never leaves you. 0.18: tip amounts are hidden by default, intent and receipt no longer carry the amount. Guide: https://github.com/schmidt1024/monostr/blob/main/watcher/SELFHOST.md
that's why setup tells you to use a separate wallet just for tips and offers to create a fresh one right there. The watcher sees every incoming payment to that wallet (!) and the receipt makes amount + recipient public by design (that's what makes tips visible under notes, like zaps). Senders can stay anonymous; amounts can't. If you want zero exposure, run your own watcher.
Thanks, this is exactly the kind of review I was hoping for; not harsh at all.
pid: agreed. The app already uses a CSPRNG. It is now a MUST. The watcher accepts only the first intent per (recipient, pid) so a predictable pid would let someone front-run an intent and claim another person's payment. I kept random pids rather than HMAC derivation, since the intent is public anyway and fresh randomness is the simplest thing to get right.
type tag: it's display-only, so clients can count a tip that was coupled to a like or repost on that button instead of listing it as a separate tip. A missing tag now means tip. App and watcher still always write it, so older versions don't break.
Both changes are done (spec v0.3) and will ship with the next release.
Personal watchers / pubkey instead of domain: this is the strongest point and I think you're right. Running a watcher shouldn't need a domain, TLS and an HTTP API. ["watcher", "<pubkey>", "<relay>"] plus encrypted Nostr messages for registration would let anyone run one on a home box and an optional tag fits that model too. That's a bigger change to spec, watcher and app, so it won't be in the next release. I want to design it properly first, but it's now at the top of the protocol list.
No txid: glad we agree.
I've been building monostr for a few weeks: an Android Nostr client where the "zap" is a Monero tip. No Lightning, no custodian, no KYC wallet in the middle. How it works: you register your primary address and private view key with a watcher (the same trust model as stasher.news, which is where I…
Thank you and no duplication needed, the thread is unanimous: reach first. Since yesterday a few things landed from this very thread: a chosen name, a profile picture and a signed proof that links a kashilo profile to an X or Nostr account, checkable at kashilo.com/verify/Schmidt. If you ever spend XMR here and something is confusing, say so, I read everything.
That shift is the useful part: once the platform holes close, the scam moves into the conversation itself, and "pay part of my fare first" is just a pre-payment ask with a human face. kashilo's answer today is thin but clear: nothing is paid up front, a meeting-point trade is pay on handover, and shipping without escrow is the buyer's risk, said plainly. What I can add cheaply is a warning in the chat the moment money is mentioned before goods. Not a shield either, but it names the tell.
What kashilo does differently: no email or login identity, chat the operator cannot read, seven languages, European focus.
Correction. Douglas Tuman pointed out on X that XmrBazaar's chat is encrypted client-side as well and that signup there needs no email either. Both true, see their FAQ. So two of the four points above are not differences, and I was wrong to list them as such. What actually differs is smaller: kashilo has no password and no chosen username, the account is a key that stays on your device. Languages and the European focus stand
Thank you for the cases, I read them. Most of the burn happens on digital goods and account sales, with the redirect to another site as the tell. That is the strongest argument I have seen today for keeping kashilo physical, at least until there is escrow.
For "this account is me elsewhere": every kashilo account already has a key pair that never leaves the device, so a signed statement you could paste into a Nostr or X profile is within reach. Not built and not promised tonight, but it moved to the top of the trust list, ahead of the chosen handle.
That is the uncomfortable part and thank you for the data. kashilo excludes services and digital goods by rule and your numbers say the demand sits exactly there: proxy shopping, assistance, accounts held on someone else's name. Gift cards are allowed. Proxy shopping is a service, so today it is out.
I chose "physical goods only" to keep fraud and legal exposure small for a one-person operation. Whether that is a principle or just caution I have to think about properly, not promise in a comment. What I take from your piece tonight: the winning category is "break the surveillance chain", and a used-goods board does not do that on its own.
Thank you. ~XMRAgora with a [SELL] tag goes on this week's list. One rule I keep there: only listings whose seller ticked the box for sharing outside kashilo, the same consent I use for X and Nostr. Some sellers want to stay inside, and that is their call.
Trust: both points taken. Escrow is the big one and will not be rushed. Portable reputation is closer: today the name is generated and cannot be changed, so reputation is stuck on one site. A chosen handle first, then a way to prove "this kashilo account is me" elsewhere.
Thank you, also for sharing kashilo in five places before I ever asked. "Never heard of it" is the honest state and the thread agrees: reach first.
Escrow: no custodial variant, agreed. The ceremony complaint is the useful part. If an escrow needs a ceremony the user notices, it has already lost. FROST with offline arbiters is the path I will read into and trust for it has to be earned in public and in small amounts first.
Your two personal reasons hit hardest. Safety: blind meeting points hide the address, shipping exists, but nothing yet hides your address from the seller, like a parcel locker. That gap is real. And "spend Monero only on what only Monero buys" reframes the whole category question. A used bike is fiat's job. Anti-surveillance hardware, privacy phones, the things that keep the parallel economy running, that is what a Monero catalog should be full of. I did not see that clearly before today.
Thanks, that is a lot of useful signal.
Multisig: agreed, it is the biggest gap. I had 2-of-3 with the platform as arbiter on paper; the DKG approach with offline arbitrators in your post is new to me and I will read it properly.
Notifications: you do not have to sit on the site. Browser push exists for new messages, questions and expiring listings, in-app notifications too. No email by design and nothing like SimpleX yet. If push is not enough for sellers, that is worth hearing.
Username: you are right, the name is generated at registration and cannot be changed today. That is a gap, not a principle. Reputation on the platform comes from confirmed deals, and a name you actually chose is part of that.
Social: promoting listings only with the seller's tick is a deliberate choice, some sellers here do not want their listing on X or Nostr at all. The generic posts on X are fair criticism, fewer and more concrete is the fix.
Bazaar forum: will read. Eight sales a day as the whole market is a sobering and useful number.
Nothing in the terms stops that. The rule is physical goods only, no services or digital items. The "proof of possession" photo is optional: a listing without it is simply unverified and buyers see that. So a reseller who orders on demand can list, they just cannot carry the verified badge, which seems fair to the buyer. If you meant something else on the site that reads as a ban, point me to it.
Thanks for the detail. That message comes from OpenStreetMap's tile servers. From here the tiles load fine and the site sends no referrer at all, so I cannot reproduce it. OSM blocks some exit ranges. Either way the right fix is the same: stop loading map tiles from OSM's volunteer servers and serve them from my side, which also keeps your IP away from a third party. Noted.
You found a real bug, not a fallback. The country selector was never wired to the query, so whatever you picked, you got every listing. Worse than what you described and it also means what I told X_Presso above about the country filter was wrong at the time.
Fixed and deployed just now: the filter actually filters, "All countries" is the new default and a shared link like kashilo.com/?country=us opens with the selector set and an honest zero. Reload once if you still see the old version. Your "no listings here, but here is what exists elsewhere" idea is better than a bare zero and goes on the list.
Good starting points, from easy to deep:
Tip: before reading too much, make a key with any client and follow a few people. It clicks faster once you see your notes on several relays at once.