-
DataHoarder
-
br-m
<interestingband:matrix.org> Do you still think it wasn't for profit ? > <@ofrnxmr> Were not dealing with a profit driven attack
-
plowsof
👍 Rucknium can we gain loose consensus that this is factual (to then be a blog post on getmonero surely) <@Datahoarder>: I have made this Timeline of Monero 18-block reorg on September 14th, 2025
github.com/WeebDataHoarder/Monero-Timeline-Sep14"
-
DataHoarder
^ feel free to use the data logs and tables. Strip the intro header text as desired
-
DataHoarder
The data ... well it's there. Hex blobs for block headers and for the transactions. The only mismatch would be the number of transactions - 115 invalidated vs 117 invalidated other people talk about
-
DataHoarder
There might be more invalidated but those could have just been in the mempool-never made them to blocks
-
DataHoarder
As such I don't have the txids readily nor an easy way to prove they existed at that point in time
-
DataHoarder
And if anyone has monerod logs from that time, the reorg section would be relevant.
-
DataHoarder
Timestamps for blocks obtained via ZMQ on arrival, not from their timestamp in header
-
br-m
-
br-m
<privacyx> Are refering to this
-
br-m
-
DataHoarder
I mean a node operator can show the reorg existed by logs alone
-
br-m
<privacyx> This my node logs
-
DataHoarder
That timestamp you fetched is from block template creation
-
DataHoarder
It will mismatch as block solution nonces are found later than that, then broadcasted
-
DataHoarder
They should be within some seconds-minutes of them
-
br-m
<privacyx> Ok I see if find them in my logs
-
DataHoarder
The way to verify the Tari inclusion is a bit more complex if you want to get the block id. I have added the relevant code to blocks.p2pool.observer, but the easiest way is to check the PoW hash of both sides (this gets prominently displayed usually)
-
DataHoarder
-
DataHoarder
> The level of incompetence in
github.com/WeebDataHoarder/Monero-Timeline-Sep14 is baffling. Or the author lied. I invite him to an open debate on X.
-
DataHoarder
Another point, is that p2pool miners included these transaction in templates as witnesses as well (another sidechain) plus the monero id of the orphaned blocks
-
DataHoarder
This part felt redundant but these were included across main/mini/nano miners (and even some of the not updated p2pool chains!)
-
DataHoarder
-
DataHoarder
-
DataHoarder
-
DataHoarder
It also includes yet another unknown transaction 7fa69b04b6c7d1aae9c8b84c7b9a540f4c4de024f5354c5f442c26809372e520 which is probably an invalidated one
-
br-m
<privacyx> Im sorry i though i could help I discovered my logs level was set to 0 so im no good
-
DataHoarder
log level 0 still prints reorgs and depth
-
DataHoarder
start/end as well
-
br-m
<privacyx> Ok i give it another go as my setup is as systemd
-
DataHoarder
-
DataHoarder
this has it
-
DataHoarder
the reorganize on height
-
DataHoarder
59 -> 78
-
br-m
<ofrnxmr:xmr.mx> @interestingband:matrix.org: Yes
-
br-m
-
br-m
-
br-m
<privacyx> This all I could find in my logs are they helpful
-
br-m
<321bob321> Rude word in the log
-
DataHoarder
privacyx:monero.social, yeah those timestamps match the disclosure time I have locally
-
DataHoarder
I have provided the logs of my events as well
-
br-m
<rucknium> I'm using invalidated transaction cb559fa19ab075e6e9e7e0220289da4fa1f77914e9af661e3369d574c4fff8f9 as a case study for what happened during the re-org.
-
br-m
<rucknium> The youngest ring member in its single input has global output index 139283819.
-
DataHoarder
-
br-m
<rucknium> In the honest chain that was re-orged, this index points to:
-
DataHoarder
-
br-m
-
br-m
<rucknium> In the main chain now, after the malicious re-org, the index points to:
-
br-m
-
br-m
<rucknium> Since the output public keys are different, the signature is invalid and the transaction cannot be confirmed on the main chain blockchain.
-
br-m
<rucknium> I will try to show that the signature is invalid with some Rust functions, but that would take a while to figure out. I will probably do a write-up without the Rust.
-
br-m
<rucknium> DataHoarder: Right. You can calculate the global output indices by computing a cumulative sum on the key_offsets. The last one is: 107324833 + 25163987 + 5140812 + 1061458 + 460873 + 90679 + 27 + 9441 + 9463 + 10674 + 1387 + 1372 + 2451 + 1747 + 3100 + 1515 = 139283819
-
DataHoarder
Yeah, I have this code somewhere for observer already
-
br-m
<rucknium> If you view the transaction in a block explorer that still has it in its txpool, you will see that the block explorer thinks that the final ring member in the ring points to output c15f94b62df70d7ef044414ea48f6e099d3fe609fb032d19590cccfd2fa664f5
explorer.xmr.mx/tx/cb559fa19ab075e6…fa1f77914e9af661e3369d574c4fff8f9/1
-
br-m
<rucknium> I mean, points to output public key.
-
br-m
<rucknium> The transaction's own data only has the key_offsets, so the block explorer is erroneously pointing to the wrong output public key.
-
br-m
<rucknium> Block explorers like this one sometimes refer to the output public key as a "stealth address".
-
br-m
<rucknium> Reconstructing the global output index for the orphaned chain wasn't trivial, but wasn't too difficult, either.
-
DataHoarder
As an alternative you could pop_blocks before the reorg, then submit_block all the saved templates, along with all its transactions
-
DataHoarder
Then use the RPC to get values, and you have a node with this chain verified
-
DataHoarder
FYI, they are attempting to take down the event archive, and dox me currently, they want it taken down :)
-
DataHoarder
rucknium: I could build a json dump of all the indices they refer to by manually building this chain in code, if that's useful. would take a bit but I do have the code for it (why did past me write all these utilities?)
-
br-m
<rucknium> Take down the event archive? You mean the GitHub repo?
-
DataHoarder
yep, they don't like it
-
br-m
<rucknium> You have it mirrored in 3 places at least IIRC
-
DataHoarder
the event archive is only there on git, but it's a git repo which can be mirrored yeap
-
DataHoarder
(and it's also signed!)
-
DataHoarder
git clone it as it has the relevant block and tx data as well
-
br-m
<rucknium> Here's my draft code that reconstructs the output index for the orphaned chain and outputs the info for a specified invalidated tx:
gist.github.com/Rucknium/d055e95c92b66ba7109194720e9dff2e
-
br-m
<rucknium> Your monerod needs the orphaned chain as an alt chain and the invalidated tx in its txpool.
-
br-m
<rucknium> I think I already do this in my draft R code. I mean, I do something in my draft R code and I think it's the same thing you're offering to do. > <DataHoarder> Rucknium: I could build a json dump of all the indices they refer to by manually building this chain in code, if that's useful. would take a bit but I do have the code for it (why did past me write all these utilities?)
-
DataHoarder
if you don't want to use pop_blocks - this patch allows using submit_block RPC for lower depths
irc.gammaspectra.live/f5571b32f03eb…6e166d835fb737f2f5dfe531780cc.patch
-
DataHoarder
anyone that wants to verify can use a regular monero node and if they are missing the blocks ^ insert them via that
-
DataHoarder
plus the missing transactions, but that already works via RPC
-
DataHoarder
maybe we can post a concrete explainer using this, rucknium?
-
DataHoarder
if it's only this specific example I can see slides working well
-
DataHoarder
with showing the index as a "pointer" and replacing the square it points at
-
br-m
<rucknium> Which slides?
-
br-m
<rucknium> My plan is to use this (or another) tx for an explainer for my blog. Potentially later for getmonero.org if that's desired. The tone of my blog and getmonero.org would be different.
-
DataHoarder
whoever this is trying to make threats
-
DataHoarder
15:59:08 <m-relay> <wagonbundle:matrix.org> dkat revealed the technical details. I won't share more info unless Monero devs cooperate, remove their false claims about Qubic, and promise not to report CFB or Qubic, causing delistings.
-
br-m
<rucknium> I need to make the diagrams. I will look into the privacy issue with reconstruction of rings, too. I think there are probably examples already on the blockchain, but I need to collect them.
-
br-m
<kill-switch:matrix.org> It seems reasonable to have a step by step walkthrough of sorts explaining the situation that could be followed by anyone who would have submitted those transactions or been on the other side of the transaction and that might have sent goods/services that weren't payed for (or how any user could be effected in the same way in the future); how the privacy of the sender is damaged, etc
-
br-m
<ofrnxmr> @anhdres:matrix.org draws good this type of stuff pretty good
-
br-m
<ofrnxmr> Ofrnenglish talks kinda bad sometimes
-
br-m
<anhdres:matrix.org> @rucknium:monero.social ping me if you want help
-
br-m
<rucknium> @anhdres:matrix.org: Thanks. Maybe I can sketch something out and you can complete it?
-
br-m
<anhdres:matrix.org> sure, how much time would I have? because I'd need to do this after work
-
br-m
<rucknium> @anhdres:matrix.org: Probably 36 to 48 hour turnaround time from when you receive the sketch. Does that sound alright?
-
br-m
<anhdres:matrix.org> should be alright. It'd depend on the complexity and amount of artwork but I guess it's not gonna be super fancy
-
br-m
<anhdres:matrix.org> count me in, glad to help
-
br-m
<ofrnxmr:xmr.mx> @anhdres:matrix.org: your subaddress/subaccount sketches were fire
-
br-m
<rucknium> Thank you!
-
br-m
<ofrnxmr:xmr.mx> I google them anytime someone asks me to explain
-
br-m
<rucknium> I think one or more inputs of about half of the invalidated txs have been spend in valid txs now.
-
DataHoarder
did you get a match on key image?
-
br-m
<rucknium> I looked for the key images of the inputs of the invalidated txs in the main chain. I found 58 transactions that spent inputs that had these key images from the invalidated transactions.
-
br-m
<rucknium> That's the exact number of "double spends" I see when I print_pool_stats.
-
br-m
<rucknium> As expected, the node labels those invalidated transactions that have now had their inputs spent in different transactions as "double spends".
-
br-m
<rucknium> I will work on a privacy analysis of rings. I assume I (and any observer) can deduce the real spends of all of the rings associated with those key images.
-
DataHoarder
58 double spends, 0 not relayed, 0 failing, 115 older than 10 minutes (oldest 3 days ago), estimated 2 block (4 minutes) backlog
-
DataHoarder
I see the same on my witness node
-
DataHoarder
This answers the query of "where are the double spends" ^ they just took some time
-
br-m
<ofrnxmr:xmr.mx> @rucknium: they are double spends :P
-
br-m
<ofrnxmr:xmr.mx> Node that has the invalid tx in mempool sees an incoming node sending another tx that spends the same key images = rejects the incoming tx as a double spend
-
DataHoarder
Have they been mined in blocks now?
-
br-m
<rucknium> All in blocks. I will send the CSV in a moment
-
br-m
<rucknium> I think they can exist in the same node because they are double-spends. The node won't reject a valid block (which has the key image o a tx that is already in the txpool). The node will still keep the invalid tx in the txpool.
-
br-m
<rucknium> I think
-
DataHoarder
The chain might reorg back :)
-
br-m
-
DataHoarder
Thanks. I'll add this to a section in my gh repo (probably a different page) for now, if that's ok
-
br-m
<rucknium> Outputs that are spent in a single invalidated tx are not necessarily spent in a single valid tx later.
-
DataHoarder
you'll get quoted as source :)
-
br-m
<rucknium> DataHoarder: Sounds good to me.
-
DataHoarder
yeah, the inputs could be spread or swept
-
br-m
<rucknium> The code there should work fine to produce the CSV file as long as you didn't flush your txpool
-
DataHoarder
I'll attempt to just talk about key image -> invalid txid : input index => valid txid : input index
-
DataHoarder
I have the txpool and transactions :)
-
DataHoarder
-
DataHoarder
> Since the centralized exchanges increased their confirmation times, the 18 block reorg was safe to perform but it points to the existing problem in the Monero chain.
-
DataHoarder
(no, it was not)
-
DataHoarder
> Interestingly, Qubic and Monero developers are working together in Qubic Discord to figure out the details of this event, and the Qubic team is in discussion to place a voluntary limit on reorganizations to a maximum of 9 blocks once again. This proves Qubic’s “white hat” intentions once again.
-
DataHoarder
(no, devs and most people are banned there)
-
DataHoarder
I'm going to link
docs.getmonero.org/cryptography/asymmetric/key-image for key image explainer, any better source than the PDF papers?
-
br-m
<rucknium> DataHoarder: This maybe:
youtube.com/watch?v=TlVsMTeT_nE
-
br-m
<rucknium> And PDF/paper:
moneroresearch.info/45 Wijaya, D. A., Liu, J. K., Steinfeld, R., Liu, D., & Yu, J. 2019, On The Unforkability of Monero.
-
DataHoarder
I was trying to have a two liner in there :D
-
br-m
<rucknium> About the privacy impacts
-
DataHoarder
I'll have the YT one
-
br-m
-
br-m
-
n1oc
Development of a Book on a Finality Layer has moved to funding!
ccs.getmonero.org/proposals/kayabaNerve-finality-layer-book.html
-
br-m
<321bob321> Is monerov, just monero injected with compound v ? To make a super hero.
-
br-m
<testtank:matrix.org> Does this mean that Serai development will get pushed back? @kayabanerve:monero.social
-
br-m
<testtank:matrix.org> n1oc: Does this mean that Serai development will get pushed back? @kayabanerve:monero.social
-
br-m
<kayabanerve:matrix.org> Somewhat. I generally have a few items I work on, as to give me something else to work on when I'm exhausted with one topic, but this is of a scale and a priority it'll take an extra week or two.