Create Account
Log In
Dark
chart
exchange
Premium
Terminal
Screener
Stocks
Crypto
Forex
Trends
Depth
Close
Check out our Dark Pool Levels

CCS
CENTURY COMMUNITIES, INC.
stock NYSE

At Close
Sep 15, 2026 3:59:52 PM EDT
61.32USD+0.772%(+0.47)275,277
0.00Bid   0.00Ask   0.00Spread
Pre-market
Sep 14, 2026 9:12:30 AM EDT
59.76USD-1.791%(-1.09)0
After-hours
Sep 14, 2026 4:10:30 PM EDT
60.85USD-0.066%(-0.04)0
OverviewOption ChainMax PainOptionsPrice & VolumeDividendsHistoricalExchange VolumeDark Pool LevelsDark Pool PrintsExchangesShort VolumeShort Interest - DailyShort InterestBorrow Fee (CTB)Failure to Deliver (FTD)ShortsTrendsNewsTrends
CCS Reddit Mentions
Subreddits
Limit Labels     

We have sentiment values and mention counts going back to 2017. The complete data set is available via the API.
Take me to the API
CCS Specific Mentions
As of Sep 16, 2026 3:41:04 AM EDT (1 min. ago)
Includes all comments and posts. Mentions per user per ticker capped at one per hour.
6 hr ago • u/ScottyStellar • r/wallstreetbets • rklb_profit_outdated_and_maybe_the_worst_fumble • C
My best move was selling CCS on almost all of my shares when it was like $120-130, with 145 and 185 strikes. Think I was getting 15-30 per share which is move than my cost average. Made it hurt a lot less when it went down, but I did shit myself when it flew past 145 right after I sold them.
sentiment -0.53
7 hr ago • u/klipsetrades • r/Daytrading • spx_0dte_credit_spreads_the_anchor_paid_the_lotto • B
I'm a 0DTE credit spread trader with a focus on SPX.
* 7625/7645 CCS
* 7640/7660 CCS
* 7560 Put
P/L: **+$210**
[SPX 5-min chart, September 15, 2026](https://preview.redd.it/ygt5j97x2sph1.png?width=1543&format=png&auto=webp&s=616d23e31b86ea2f731aa5f349cbf9b08b9c4890)
***My core trade made the day; the late lotto only charged me $30 to test an idea.***
# Morning Thesis
I came in with a bearish bias. The 10Y was near 5.01%, Brent was around $106.31, and markets were pricing a 92.5% probability of a Fed hike the following day. All three supported a cautious, risk-off environment.
I still wanted price confirmation before entering. SPX started with some chop, failed to reclaim the prior-day close, then broke and held below the 7600 psychological level. That was enough confirmation for me to begin selling call-side premium.
# My First Trade
I sold a **5-lot 7640/7660 CCS at $0.40** as my anchor for the day. SPX continued lower after entry, allowing me to leave the position alone and let theta work.
As momentum expanded, I sold **one 7625/7645 CCS at $0.80**. This position was much closer to the lava, so it was never intended to be held as long as the anchor. I closed it out at $0.40 as SPX reached its morning low.
# Midday Patience
After reaching 7572.69, SPX stabilized and spent most of the session chopping around the 7580 weekly low.
I was willing to play a confirmed reversal or add another bearish trade if SPX broke its range. Neither happened, so I kept the anchor and avoided forcing another credit spread.
# Testing a Late-Day Idea
I bought one **7560 put for $0.40**. Buying late-day 0DTE options is not part of my primary strategy, and I viewed this as a small lotto-style experiment.
The idea came from a setup I have seen before: SPX sells off sharply in the morning from macro pressure/news, fails to produce a meaningful recovery by chopping in a range most the day, and then makes one final buyer-led push before sellers trigger another downside expansion.
The 7560 strike was roughly 12 points below the low of day, so I needed a breakdown with enough velocity and gamma expansion to move the contract into profit. Unfortunately, that trigger never arrived — even though at one point it looked like it was about to. I used the final downside push to **exit at $0.10 for a $30 loss** instead of letting the contract expire completely worthless.
# Key Takeaway
***A lower-probability experiment should never be large enough to erase the work of the core strategy.***
The anchor worked, theta did its job, and the late-day put did not. I accepted the smaller loss, preserved the green day, and gained another live example to compare against the setup in the future.
sentiment -0.96
14 hr ago • u/Adventurous-Win6029 • r/Monero • told_to_get_back_to_work_after_my_apology_heres • B
Disclosure up front: I built this. I take 0.075% of the ETH side of a swap. Another 0.075% goes somewhere else — a separate multisig I'll explain below, so that somebody who isn't me can get paid to keep this alive. Both addresses are burned into the contract at deploy. Neither can be changed, by me or anyone.
The protocol isn't mine. That's Athanor's, built on Joël Gugger's paper. The ed25519 library the contract uses is Jan Vornberger's, turned into a Solidity library by hbs.
Last time I was in here I said ETH-XMR atomic swaps were dead and that nobody was funded to keep one running. Both wrong, and monerobull was the one who put me straight. I posted an apology. Somebody replied that it was accepted and to get back to work.
So here's the work.
What's live
Contract on Base: 0xC2b2e8D385309d6552657c0b80434ca616DE12fC. Verified on Basescan. 525 lines. No owner. No admin function. No upgrade path. owner() doesn't exist — the call reverts.
A buyer page that needs a browser wallet and nothing else: https://dafarusd.github.io/monero-swap/
A seller program, monero-swap-v2, in the repo.
https://github.com/dafarusd/monero-swap
Nobody's selling on it. Including me. The board is empty as I write this, so there's nothing to take today. I'd rather say that than have you click and find out.
How it works
Buyer locks ETH in the contract. Seller sends Monero to an address that needs both parties' one-time keys to spend. Buyer confirms it arrived. Seller collects the ETH — and collecting is what reveals the seller's one-time Monero key on-chain. Buyer adds that to their own key and can spend the Monero.
Seller never sends? Buyer takes the ETH back. Buyer refunds? That reveals the buyer's key, and the seller sweeps the Monero back. Nobody ends up holding nothing.
The contract checks the revealed key itself — an ed25519 scalar multiply against the committed Monero public spend key. Athanor used secp256k1 and a cross-curve DLEq proof because that multiply costs too much on Ethereum mainnet. On an L2 you can just do it, and the whole DLEq layer vanishes from the client.
What I changed in v2, and why
Timeouts are 24 hours minimum now. They were an hour. That was a bug. Base runs one sequencer, and if it censors you your way out is forcing the transaction in from L1, which takes about twelve hours. An hour-long window can close while you're being censored and you'd never get a move in.
Sellers post a bond — 5% of the offer's ceiling. It comes back every time, whichever way the swap ends. It's never handed to the other side. The contract can't see Monero, so it can't tell a seller who didn't deliver from a buyer who bailed, and a bond it can't judge fairly is one it has no business keeping. It's there so spamming the board costs something.
Fees are credited, not sent. If a fee address is a contract that reverts when it receives, and you push the fee inside claim, that address can brick every claim in the system. So the contract credits it and you withdraw later. Pull, don't push.
Tokens are gone. v1 swapped ERC-20s. An issuer can freeze a contract's balance and strand every swap sitting in it. hbs's FAQ made that argument before I ever started. I shipped tokens anyway, then pulled them.
The offer board lives in contract storage. Enumerable, so finding an offer never depends on how long some node kept its logs.
Measured today: posting an offer 357,981 gas, taking one 254,026, marking ready 30,904, claiming 617,795. At the gas price my own deploy paid, a claim runs about 0.0000037 ETH. 83 Foundry tests pass, twelve of them invariants the fuzzer hammers across 128,000 calls with no reverts. The one I care about checks that every wei the contract holds is either a bond, money owed, or value in an open swap — measured against a ledger the test keeps itself, not against the contract's own books.
The fee, the dev fund, and handing this over
This is the part I actually want feedback on.
This sub has watched a swap project die because one person stopped caring. I don't want to be that, so the money is arranged to outlive me.
0.15% comes off the ETH side of a swap. It splits in half. 0.075% to me. The other 0.075% goes to a dev-fund multisig at 0x61C9cc608Edf3Ba392B8c654171823984FA32240. That's not a donation address and it's not mine to spend on whatever — it's there so somebody who isn't me can be paid to maintain this.
Here's why that's a real mechanism and not a nice sentence. The contract's copy of that address is immutable, so it gets paid forever regardless of who's running things. But a Safe's signers are not immutable. Add signers, change the threshold, and the people doing the work control that money — no redeploy, no migration, nobody asking my permission. That's the whole reason the fee splits in two instead of landing in one wallet.
Where it stands right now, honestly: both Safes are 1-of-1, both signers are me, and both hold exactly zero, because no swap has ever paid a fee. It's a mechanism, not a treasury. I'm not going to call an empty wallet a war chest.
And there's nothing to hand over on the contract itself, which is the point. No owner, no admin function, no upgrade path. Nobody can change the fee, the split, the bond, the timeouts or either payout address. It runs whether or not I'm around. That part's finished, not promised.
What I keep is the 0.075%, permanently, and I can't redirect it any more than a successor could. If this outlives my interest I end up a fee recipient while somebody else runs it. That's the arrangement, said out loud now rather than sprung on anyone later.
The backstop matters more than any of it: you don't need my permission for a thing. It's MIT. Take the contract, put your own two addresses in the constructor, set your own fee, set it to zero if you like, deploy it. I have no claim on yours. Only thing that makes this one mine is that I deployed it first.
The other one, and where it's better than mine
hbs's MoneroSwap: https://codeberg.org/moneroswap/moneroswap. MIT. The dApp was funded by a CCS of 135 XMR, finished and paid in February. Talks at EthCC and two MoneroKons. Still shipping security fixes this week.
We landed on the same answers independently more often than not — on-chain order book, ed25519 checked on-chain with no DLEq, 24-hour minimum timeouts, native currency only, deposits from both sides, no upgrade path.
Where theirs wins:
Their seller runs no software at all. Browser wallet, plus a normal phone wallet to scan a payment QR. No daemon, no wallet-rpc, no CLI. Mine needs a program running. If you want to sell Monero once, theirs is the better tool and I'm not going to pretend otherwise. I didn't copy it because I wasn't building for the one-off sale — I wanted something that keeps an offer up continuously and survives a restart with nobody watching. Once a long-running thing holds Monero and signs by itself you need wallet-rpc anyway, which is why their market-making bot needs it too. But they made the manual path work without any of that and I didn't build a manual path at all. That's a hole in mine, not a design choice I'm proud of.
Reproducible builds. Their docs tell you to hash the deployed code and match it to a repo tag. I tried it on one of their deployments and it matched exactly. Their app is static, pinned on IPFS, addressed by ENS. Mine's a GitHub Pages build and you're trusting the bundle came from the source. Theirs is better and I'm copying it.
Both directions. They run a buy book and a sell book. Mine has one — the maker is always the Monero side. Sitting on ETH, you can only wait for someone to post; you can't advertise a bid.
Funding requests, so a seller with no native coin can borrow the deposit from a third party.
No protocol fee. Theirs takes nothing. Mine takes 0.15%.
Where mine differs. Three things, all checkable:
No owner, at all. Theirs has one, set in the constructor, who can move the coverage ratio, the funding fee, book sizes, offer limits, both delays and the price oracle. They know it's a risk — the owner can lock the contract for a stretch and their app shows a padlock, and their own safety doc warns parameters can shift between you posting an offer and someone taking it. Their deployed Gnosis contracts carry three more owner functions than their current source does, left from an sDAI yield feature, and the owner called withdraw on it as recently as March. That's yield, not swap principal, and it's in their FAQ. Still a key that can do things. Mine has none.
It pays for itself. Their CCS is finished and only ever covered the dApp — the contract was unpaid work. Grants end, then maintenance stops. That's the failure I'm building against. You may think taking a fee is the wrong trade. Fair.
The page does its own Monero scanning. View-tag matching, ECDH amount decryption, commitment check, in JS, so it can tell you the money landed rather than asking you to go look.
On chains: they're on Gnosis, Lens and Stable — native currencies that are stablecoins, which is a clever way to offer stablecoin swaps without ever touching an ERC-20. They're on Base too, same address, empty book there like everywhere else. I'm Base only. Not dressing that up as an edge: Gnosis gas is ten wei, so their swaps cost less than mine do.
Why build it when your wallet already swaps
Because it doesn't, in this direction.
The swap buttons in Monero wallets sell Monero. They take your XMR and hand you something else. Try to go the other way — turn ETH into Monero without an account — and there's no button. I went and read the source of the one I use to be sure, and the source coin is hardcoded. The receive screen doesn't contain a line of swap code.
There's also no trustless option anywhere in shipping wallet software. eigenwallet does real atomic swaps, but it's desktop-only and Bitcoin↔Monero.
And the swaps those buttons do run aren't trustless either. They hand your coins to an exchange service, which holds them and then sends the other asset. From the AML policy of the one behind it:
"Exolix reserves the right to suspend, delay, reject or cancel transactions until compliance review procedure is completed."
They can ask for legal name, date of birth, address, citizenship, government ID, a selfie or liveness check, proof of address, source of funds, source of wealth. And:
"Failure to provide the required information will lead to transaction delays, cancellations, restrictions on account or exclusion from the use of the Services."
"Exolix is not obliged to notify the user about reporting, reviewing, and flagging any transaction, wallet or activity related to compliance."
The one that should bother this sub most, about coins already sitting in their deposit address:
"If the funds that came to the deposit under your transaction were recognized by the system as suspicious, we may ask you for information to verify the source of the funds. If you refuse to provide such information, we are not responsible for ensuring the refund or completion for this transaction."
ID asked for after they're holding your Monero, and they've written down in advance that refusing might cost you both the swap and the coins.
Two more, since this is r/Monero. You have to turn Tor off to use it — the wallet says so itself in the error string. And in May 2026 a researcher found that service's partner API was handing out full transaction histories: 355,944 swaps, $39.5M, deposit addresses matched to withdrawal addresses. Monero was the single largest asset in the dump. That's precisely the link a swap is supposed to break. Their answer was that the access was "in fact a feature."
None of which is a warning you'll see in the app. I grepped every string in it — there's an IP note and nothing about custody, ID or frozen funds.
The part I can't spin
Nobody trades on either of these. Not mine. Not hbs's.
Every mainnet order book of theirs I checked is empty. Their busiest deployment has 87 transactions and the one complete swap I could trace had the same address on both sides — a developer testing. Mine has zero swaps and zero offers. Two people built ETH↔XMR atomic swaps and there's no volume on either.
Their project isn't dead, to be clear — hbs shipped fixes this week and has 565 commits behind him. Mine's just new. Neither of us has users.
People had the choice and they took the custodial one. Ten to thirty minutes, about 0.79% in spread, and they accept that someone might ask them for a selfie holding their ID. Against that, this asks for a 24-hour wait, a program left running, and a counterparty who doesn't exist yet. I get it. I'd make the same call most days — and I did. The Monero I was going to sell trustlessly, I bought through a custodial exchanger, because it was there and this wasn't.
So I'm not telling anyone to switch. Use the wallet, it's faster and it works. I built this for the case where nobody's holding your coins while they decide whether to give them back.
Run a seller
The ask, if there is one. Contract works, page works, nobody's selling.
git clone https://github.com/dafarusd/monero-swap.git
cd monero-swap
./scripts/install-monero-linux.sh
make build-swap-v2
./bin/monero-swap-v2 --eth-rpc https://mainnet.base.org --contract 0xC2b2e8D385309d6552657c0b80434ca616DE12fC terms
terms reads the live contract and prints the fee, the split, the bond and the timeouts before you put anything in. Don't take my word for those numbers — that command doesn't either. Then addresses to see what needs funding, then:
./bin/monero-swap-v2 --eth-rpc https://mainnet.base.org --contract 0xC2b2e8D385309d6552657c0b80434ca616DE12fC --monerod-host node.monerodevs.org --monerod-port 18089 maker run --payout YOUR\_ETH\_ADDRESS --min 0.01 --max 0.1 --price 15.5
\--payout is any wallet you want; it never touches the gas key. --manual-xmr if you'd rather the program didn't hold your Monero — it watches, you pay from your own wallet.
Two things that'll catch you:
The bond comes out of the same key that pays gas. 5% of your --max. Fund it for both.
The bond returns as a credit inside the contract, not a transfer. maker run collects it after each swap on its own; withdraw does it by hand. Miss that and your bonds pile up and it looks like the contract ate them.
And the one that matters: this program has never carried a swap start to finish. The logic is the v1 seller's, which did run real swaps on test networks, but nobody's run v2 against a real buyer. Use an amount you don't care about. Tell me what breaks.
Limits
Not audited. 525 lines, tests pass, nobody outside the repo has read it. Tests only prove what I thought to check.
The v2 seller has never completed a swap.
Five swaps and one refund ran end to end on test networks, all on v1. No real-money swap has finished on either version.
The seller has to be online and act inside the windows. That's Monero, not a bug.
24-hour timeouts tie your money up for a day.
My page has no reproducible-build story. Theirs does.
Base only. The same contract runs on any EVM chain, and every extra chain splits the sellers.
One offer direction. Running a seller is selling Monero for ETH, so both roles exist — but only the Monero side can post. No buy-side book.
If you spot a hole in the key check or the accounting I'd rather hear it here than read about it on Basescan.
sentiment 0.94
6 hr ago • u/ScottyStellar • r/wallstreetbets • rklb_profit_outdated_and_maybe_the_worst_fumble • C
My best move was selling CCS on almost all of my shares when it was like $120-130, with 145 and 185 strikes. Think I was getting 15-30 per share which is move than my cost average. Made it hurt a lot less when it went down, but I did shit myself when it flew past 145 right after I sold them.
sentiment -0.53
7 hr ago • u/klipsetrades • r/Daytrading • spx_0dte_credit_spreads_the_anchor_paid_the_lotto • B
I'm a 0DTE credit spread trader with a focus on SPX.
* 7625/7645 CCS
* 7640/7660 CCS
* 7560 Put
P/L: **+$210**
[SPX 5-min chart, September 15, 2026](https://preview.redd.it/ygt5j97x2sph1.png?width=1543&format=png&auto=webp&s=616d23e31b86ea2f731aa5f349cbf9b08b9c4890)
***My core trade made the day; the late lotto only charged me $30 to test an idea.***
# Morning Thesis
I came in with a bearish bias. The 10Y was near 5.01%, Brent was around $106.31, and markets were pricing a 92.5% probability of a Fed hike the following day. All three supported a cautious, risk-off environment.
I still wanted price confirmation before entering. SPX started with some chop, failed to reclaim the prior-day close, then broke and held below the 7600 psychological level. That was enough confirmation for me to begin selling call-side premium.
# My First Trade
I sold a **5-lot 7640/7660 CCS at $0.40** as my anchor for the day. SPX continued lower after entry, allowing me to leave the position alone and let theta work.
As momentum expanded, I sold **one 7625/7645 CCS at $0.80**. This position was much closer to the lava, so it was never intended to be held as long as the anchor. I closed it out at $0.40 as SPX reached its morning low.
# Midday Patience
After reaching 7572.69, SPX stabilized and spent most of the session chopping around the 7580 weekly low.
I was willing to play a confirmed reversal or add another bearish trade if SPX broke its range. Neither happened, so I kept the anchor and avoided forcing another credit spread.
# Testing a Late-Day Idea
I bought one **7560 put for $0.40**. Buying late-day 0DTE options is not part of my primary strategy, and I viewed this as a small lotto-style experiment.
The idea came from a setup I have seen before: SPX sells off sharply in the morning from macro pressure/news, fails to produce a meaningful recovery by chopping in a range most the day, and then makes one final buyer-led push before sellers trigger another downside expansion.
The 7560 strike was roughly 12 points below the low of day, so I needed a breakdown with enough velocity and gamma expansion to move the contract into profit. Unfortunately, that trigger never arrived — even though at one point it looked like it was about to. I used the final downside push to **exit at $0.10 for a $30 loss** instead of letting the contract expire completely worthless.
# Key Takeaway
***A lower-probability experiment should never be large enough to erase the work of the core strategy.***
The anchor worked, theta did its job, and the late-day put did not. I accepted the smaller loss, preserved the green day, and gained another live example to compare against the setup in the future.
sentiment -0.96
14 hr ago • u/Adventurous-Win6029 • r/Monero • told_to_get_back_to_work_after_my_apology_heres • B
Disclosure up front: I built this. I take 0.075% of the ETH side of a swap. Another 0.075% goes somewhere else — a separate multisig I'll explain below, so that somebody who isn't me can get paid to keep this alive. Both addresses are burned into the contract at deploy. Neither can be changed, by me or anyone.
The protocol isn't mine. That's Athanor's, built on Joël Gugger's paper. The ed25519 library the contract uses is Jan Vornberger's, turned into a Solidity library by hbs.
Last time I was in here I said ETH-XMR atomic swaps were dead and that nobody was funded to keep one running. Both wrong, and monerobull was the one who put me straight. I posted an apology. Somebody replied that it was accepted and to get back to work.
So here's the work.
What's live
Contract on Base: 0xC2b2e8D385309d6552657c0b80434ca616DE12fC. Verified on Basescan. 525 lines. No owner. No admin function. No upgrade path. owner() doesn't exist — the call reverts.
A buyer page that needs a browser wallet and nothing else: https://dafarusd.github.io/monero-swap/
A seller program, monero-swap-v2, in the repo.
https://github.com/dafarusd/monero-swap
Nobody's selling on it. Including me. The board is empty as I write this, so there's nothing to take today. I'd rather say that than have you click and find out.
How it works
Buyer locks ETH in the contract. Seller sends Monero to an address that needs both parties' one-time keys to spend. Buyer confirms it arrived. Seller collects the ETH — and collecting is what reveals the seller's one-time Monero key on-chain. Buyer adds that to their own key and can spend the Monero.
Seller never sends? Buyer takes the ETH back. Buyer refunds? That reveals the buyer's key, and the seller sweeps the Monero back. Nobody ends up holding nothing.
The contract checks the revealed key itself — an ed25519 scalar multiply against the committed Monero public spend key. Athanor used secp256k1 and a cross-curve DLEq proof because that multiply costs too much on Ethereum mainnet. On an L2 you can just do it, and the whole DLEq layer vanishes from the client.
What I changed in v2, and why
Timeouts are 24 hours minimum now. They were an hour. That was a bug. Base runs one sequencer, and if it censors you your way out is forcing the transaction in from L1, which takes about twelve hours. An hour-long window can close while you're being censored and you'd never get a move in.
Sellers post a bond — 5% of the offer's ceiling. It comes back every time, whichever way the swap ends. It's never handed to the other side. The contract can't see Monero, so it can't tell a seller who didn't deliver from a buyer who bailed, and a bond it can't judge fairly is one it has no business keeping. It's there so spamming the board costs something.
Fees are credited, not sent. If a fee address is a contract that reverts when it receives, and you push the fee inside claim, that address can brick every claim in the system. So the contract credits it and you withdraw later. Pull, don't push.
Tokens are gone. v1 swapped ERC-20s. An issuer can freeze a contract's balance and strand every swap sitting in it. hbs's FAQ made that argument before I ever started. I shipped tokens anyway, then pulled them.
The offer board lives in contract storage. Enumerable, so finding an offer never depends on how long some node kept its logs.
Measured today: posting an offer 357,981 gas, taking one 254,026, marking ready 30,904, claiming 617,795. At the gas price my own deploy paid, a claim runs about 0.0000037 ETH. 83 Foundry tests pass, twelve of them invariants the fuzzer hammers across 128,000 calls with no reverts. The one I care about checks that every wei the contract holds is either a bond, money owed, or value in an open swap — measured against a ledger the test keeps itself, not against the contract's own books.
The fee, the dev fund, and handing this over
This is the part I actually want feedback on.
This sub has watched a swap project die because one person stopped caring. I don't want to be that, so the money is arranged to outlive me.
0.15% comes off the ETH side of a swap. It splits in half. 0.075% to me. The other 0.075% goes to a dev-fund multisig at 0x61C9cc608Edf3Ba392B8c654171823984FA32240. That's not a donation address and it's not mine to spend on whatever — it's there so somebody who isn't me can be paid to maintain this.
Here's why that's a real mechanism and not a nice sentence. The contract's copy of that address is immutable, so it gets paid forever regardless of who's running things. But a Safe's signers are not immutable. Add signers, change the threshold, and the people doing the work control that money — no redeploy, no migration, nobody asking my permission. That's the whole reason the fee splits in two instead of landing in one wallet.
Where it stands right now, honestly: both Safes are 1-of-1, both signers are me, and both hold exactly zero, because no swap has ever paid a fee. It's a mechanism, not a treasury. I'm not going to call an empty wallet a war chest.
And there's nothing to hand over on the contract itself, which is the point. No owner, no admin function, no upgrade path. Nobody can change the fee, the split, the bond, the timeouts or either payout address. It runs whether or not I'm around. That part's finished, not promised.
What I keep is the 0.075%, permanently, and I can't redirect it any more than a successor could. If this outlives my interest I end up a fee recipient while somebody else runs it. That's the arrangement, said out loud now rather than sprung on anyone later.
The backstop matters more than any of it: you don't need my permission for a thing. It's MIT. Take the contract, put your own two addresses in the constructor, set your own fee, set it to zero if you like, deploy it. I have no claim on yours. Only thing that makes this one mine is that I deployed it first.
The other one, and where it's better than mine
hbs's MoneroSwap: https://codeberg.org/moneroswap/moneroswap. MIT. The dApp was funded by a CCS of 135 XMR, finished and paid in February. Talks at EthCC and two MoneroKons. Still shipping security fixes this week.
We landed on the same answers independently more often than not — on-chain order book, ed25519 checked on-chain with no DLEq, 24-hour minimum timeouts, native currency only, deposits from both sides, no upgrade path.
Where theirs wins:
Their seller runs no software at all. Browser wallet, plus a normal phone wallet to scan a payment QR. No daemon, no wallet-rpc, no CLI. Mine needs a program running. If you want to sell Monero once, theirs is the better tool and I'm not going to pretend otherwise. I didn't copy it because I wasn't building for the one-off sale — I wanted something that keeps an offer up continuously and survives a restart with nobody watching. Once a long-running thing holds Monero and signs by itself you need wallet-rpc anyway, which is why their market-making bot needs it too. But they made the manual path work without any of that and I didn't build a manual path at all. That's a hole in mine, not a design choice I'm proud of.
Reproducible builds. Their docs tell you to hash the deployed code and match it to a repo tag. I tried it on one of their deployments and it matched exactly. Their app is static, pinned on IPFS, addressed by ENS. Mine's a GitHub Pages build and you're trusting the bundle came from the source. Theirs is better and I'm copying it.
Both directions. They run a buy book and a sell book. Mine has one — the maker is always the Monero side. Sitting on ETH, you can only wait for someone to post; you can't advertise a bid.
Funding requests, so a seller with no native coin can borrow the deposit from a third party.
No protocol fee. Theirs takes nothing. Mine takes 0.15%.
Where mine differs. Three things, all checkable:
No owner, at all. Theirs has one, set in the constructor, who can move the coverage ratio, the funding fee, book sizes, offer limits, both delays and the price oracle. They know it's a risk — the owner can lock the contract for a stretch and their app shows a padlock, and their own safety doc warns parameters can shift between you posting an offer and someone taking it. Their deployed Gnosis contracts carry three more owner functions than their current source does, left from an sDAI yield feature, and the owner called withdraw on it as recently as March. That's yield, not swap principal, and it's in their FAQ. Still a key that can do things. Mine has none.
It pays for itself. Their CCS is finished and only ever covered the dApp — the contract was unpaid work. Grants end, then maintenance stops. That's the failure I'm building against. You may think taking a fee is the wrong trade. Fair.
The page does its own Monero scanning. View-tag matching, ECDH amount decryption, commitment check, in JS, so it can tell you the money landed rather than asking you to go look.
On chains: they're on Gnosis, Lens and Stable — native currencies that are stablecoins, which is a clever way to offer stablecoin swaps without ever touching an ERC-20. They're on Base too, same address, empty book there like everywhere else. I'm Base only. Not dressing that up as an edge: Gnosis gas is ten wei, so their swaps cost less than mine do.
Why build it when your wallet already swaps
Because it doesn't, in this direction.
The swap buttons in Monero wallets sell Monero. They take your XMR and hand you something else. Try to go the other way — turn ETH into Monero without an account — and there's no button. I went and read the source of the one I use to be sure, and the source coin is hardcoded. The receive screen doesn't contain a line of swap code.
There's also no trustless option anywhere in shipping wallet software. eigenwallet does real atomic swaps, but it's desktop-only and Bitcoin↔Monero.
And the swaps those buttons do run aren't trustless either. They hand your coins to an exchange service, which holds them and then sends the other asset. From the AML policy of the one behind it:
"Exolix reserves the right to suspend, delay, reject or cancel transactions until compliance review procedure is completed."
They can ask for legal name, date of birth, address, citizenship, government ID, a selfie or liveness check, proof of address, source of funds, source of wealth. And:
"Failure to provide the required information will lead to transaction delays, cancellations, restrictions on account or exclusion from the use of the Services."
"Exolix is not obliged to notify the user about reporting, reviewing, and flagging any transaction, wallet or activity related to compliance."
The one that should bother this sub most, about coins already sitting in their deposit address:
"If the funds that came to the deposit under your transaction were recognized by the system as suspicious, we may ask you for information to verify the source of the funds. If you refuse to provide such information, we are not responsible for ensuring the refund or completion for this transaction."
ID asked for after they're holding your Monero, and they've written down in advance that refusing might cost you both the swap and the coins.
Two more, since this is r/Monero. You have to turn Tor off to use it — the wallet says so itself in the error string. And in May 2026 a researcher found that service's partner API was handing out full transaction histories: 355,944 swaps, $39.5M, deposit addresses matched to withdrawal addresses. Monero was the single largest asset in the dump. That's precisely the link a swap is supposed to break. Their answer was that the access was "in fact a feature."
None of which is a warning you'll see in the app. I grepped every string in it — there's an IP note and nothing about custody, ID or frozen funds.
The part I can't spin
Nobody trades on either of these. Not mine. Not hbs's.
Every mainnet order book of theirs I checked is empty. Their busiest deployment has 87 transactions and the one complete swap I could trace had the same address on both sides — a developer testing. Mine has zero swaps and zero offers. Two people built ETH↔XMR atomic swaps and there's no volume on either.
Their project isn't dead, to be clear — hbs shipped fixes this week and has 565 commits behind him. Mine's just new. Neither of us has users.
People had the choice and they took the custodial one. Ten to thirty minutes, about 0.79% in spread, and they accept that someone might ask them for a selfie holding their ID. Against that, this asks for a 24-hour wait, a program left running, and a counterparty who doesn't exist yet. I get it. I'd make the same call most days — and I did. The Monero I was going to sell trustlessly, I bought through a custodial exchanger, because it was there and this wasn't.
So I'm not telling anyone to switch. Use the wallet, it's faster and it works. I built this for the case where nobody's holding your coins while they decide whether to give them back.
Run a seller
The ask, if there is one. Contract works, page works, nobody's selling.
git clone https://github.com/dafarusd/monero-swap.git
cd monero-swap
./scripts/install-monero-linux.sh
make build-swap-v2
./bin/monero-swap-v2 --eth-rpc https://mainnet.base.org --contract 0xC2b2e8D385309d6552657c0b80434ca616DE12fC terms
terms reads the live contract and prints the fee, the split, the bond and the timeouts before you put anything in. Don't take my word for those numbers — that command doesn't either. Then addresses to see what needs funding, then:
./bin/monero-swap-v2 --eth-rpc https://mainnet.base.org --contract 0xC2b2e8D385309d6552657c0b80434ca616DE12fC --monerod-host node.monerodevs.org --monerod-port 18089 maker run --payout YOUR\_ETH\_ADDRESS --min 0.01 --max 0.1 --price 15.5
\--payout is any wallet you want; it never touches the gas key. --manual-xmr if you'd rather the program didn't hold your Monero — it watches, you pay from your own wallet.
Two things that'll catch you:
The bond comes out of the same key that pays gas. 5% of your --max. Fund it for both.
The bond returns as a credit inside the contract, not a transfer. maker run collects it after each swap on its own; withdraw does it by hand. Miss that and your bonds pile up and it looks like the contract ate them.
And the one that matters: this program has never carried a swap start to finish. The logic is the v1 seller's, which did run real swaps on test networks, but nobody's run v2 against a real buyer. Use an amount you don't care about. Tell me what breaks.
Limits
Not audited. 525 lines, tests pass, nobody outside the repo has read it. Tests only prove what I thought to check.
The v2 seller has never completed a swap.
Five swaps and one refund ran end to end on test networks, all on v1. No real-money swap has finished on either version.
The seller has to be online and act inside the windows. That's Monero, not a bug.
24-hour timeouts tie your money up for a day.
My page has no reproducible-build story. Theirs does.
Base only. The same contract runs on any EVM chain, and every extra chain splits the sellers.
One offer direction. Running a seller is selling Monero for ETH, so both roles exist — but only the Monero side can post. No buy-side book.
If you spot a hole in the key check or the accounting I'd rather hear it here than read about it on Basescan.
sentiment 0.94
1 day ago • u/klipsetrades • r/Daytrading • spx_0dte_credit_spreads_i_was_no_match_for_the • Trade Review - Provide Context • B
I'm a 0DTE credit spread trader with a focus on SPX.
Positions traded today:
* 7565/7545 PCS
* 7590/7570 PCS
* 7645/7665 CCS
* 7660/7680 CCS
P/L: **-$290**
[SPX 5-min chart, September 14, 2026](https://preview.redd.it/j784kcdfskph1.png?width=1576&format=png&auto=webp&s=b8afbc77e73352acbb76c760e6282945e74cef77)
***The market can make a disciplined exit look unnecessary by the close. That does not make it the wrong decision.***
# Morning Thesis
I entered with a bearish bias, but the gap down made me cautious of an upside squeeze. The 10-year yield, Brent crude, and Fed rate-hike odds remained elevated, while continued tech and AI weakness added pressure to SPX.
Any favorable surprise could still produce an upside reaction, so I was willing to follow price higher if SPX confirmed it. After the early two-way movement, I adjusted from a strictly bearish bias toward a tighter-range thesis.
# My First Trade
SPX broke and initially held above the morning range, so I opened **five 7565/7545 PCS contracts for a $0.45 credit**. Price almost immediately reversed, catching me in the sweep.
When SPX broke back into the opening range with momentum, I opened **five 7645/7665 CCS contracts for $0.65**. SPX then hovered around 7600 without cleanly accepting lower, so I held the PCS and added **one more contract for $0.60**.
# When Headline Risk Took Over
***Today, I was no match for the Trump headlines pumping SPX against my CCS.***
Each Iran-related headline triggered another upside reaction, repeatedly testing or breaking the technical structure behind my thesis. Every new alert felt like, *“Ok dude, we get it!”* while I waited to see whether the market would reverse and shrug off a familiar *“they want to make a deal”* story.
I made one addition to the **7645/7665 CCS for $1.00**, but SPX continued higher. Once price broke and held above my opening-range invalidation and the spread reached my $1.90 stop-loss backstop, I exited all **six contracts for a $715 loss** on that position.
I still believed the move could eventually reverse, but I did not force that belief after price invalidated the trade.
The original CCS ultimately would have finished safe. However, holding it would have required sitting through the 7645 short strike moving ITM and **a drawdown thousands of dollars larger** than I was comfortable managing. The eventual outcome does not make the real-time exit wrong.
# Adapting Instead of Fighting
On the same upside break, I opened one **7590/7570 PCS for $0.55**. This was not an emotional attempt to recover some of the CCS loss — the break and hold was a setup I would normally trade. I kept it to one contract because I remained uncertain that the headline move would last. I also repositioned the CCS farther out by opening **five 7660/7680 contracts for $0.50** rather than continuing to defend the original strikes.
More headlines produced additional upside spikes during midday. I remained skeptical, but Pakistan’s established role as an intermediary meant I could not dismiss the possibility of renewed engagement completely, even as Iranian officials publicly pushed back.
I used Friday’s 7650 level as my final CCS invalidation. Each push eventually faded enough to relieve the pressure, but the repeated reactions kept the risk elevated and kept me monitoring price very closely.
# Afternoon Management
As SPX began forming lower highs and breaking structure to the downside, I became more confident that the high was in and that the market was beginning to shrug off the headlines.
I maintained a range thesis into the close and believed the session’s high and low were likely established, assuming no additional late-day headline.
I closed all **six 7565/7545 PCS contracts for $0.15**, bought back the **five 7660/7680 CCS contracts for $0.15**, and allowed the 7590/7570 PCS to expire. Those positions offset **$425 of the original CCS loss** without requiring me to force additional size.
# Accepting the Red Day
As soon as I exited the original CCS, **my mindset shifted**.
I was dealing with a red day — ***and I accepted that***.
That acceptance kept me from getting more aggressive simply because I wanted to be right. I continued making decisions based on how I would normally trade instead of trying to recover everything emotionally before the close.
**This simply was not my day.** The opportunity to make it back exists tomorrow, the next day, or whenever price action offers more time and a cleaner environment that fits my style.
***There is always another day.***
# Key Takeaway
Being right by the close does not make a broken thesis valid in real time.
I believed the market would eventually shrug off the headlines, and it did — but the path there mattered. When price broke my structure and reached my stop-loss backstop, I adapted, accepted the controlled loss, and protected myself from a much deeper drawdown.
I wanted to be right on the original CCS. I just wasn’t willing to fight price to prove it.
sentiment -0.76


Share
About
Pricing
Policies
Markets
API
Info
tz UTC-4
Connect with us
ChartExchange Email
ChartExchange on Discord
ChartExchange on X
ChartExchange on Reddit
ChartExchange on GitHub
ChartExchange on YouTube
© 2020 - 2026 ChartExchange LLC