-
-
Notifications
You must be signed in to change notification settings - Fork 612
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Share miscalculation/share scamming #620
Comments
What's the detailed mechanism for pulling this off? I dunno. I have noticed only one tiny hint of a problem. You can do this experiment too.
When I do this, the number of hashes is sometimes different, by maybe 3 or 18 or something. Out of a hundred-million hashes, whats 3 or 18? Who cares? Well, but this shows the pool is recording a number that is different from the actual number of submitted hashes. Which is wrong. And its wrong not by some even number, but by some weird fraction that came out of thin air. Now, I can't test to see what happens if I submitted a few billion hashes, but I'm thinking that the math error is going to be ... significant ... significant enough to be worth exploiting. Just guessing here. Circumstantial evidence. But, you too can run these experiments. You too can reproduce these results. |
p.s. I have not seen spikes on monero pools. However, this does not mean that monero pools are not vulnerable to to something similar, maybe on a smaller scale, or something. |
FWIW, contacted all the pools that I could. Admins of both miningocean and herominers are in full denial; they're saying "that is just how it works". |
i feel like this will stay a monologue my friend, this code is unsupported or supported by people that ask you for $ even to answer a simple question. Sad individuals |
@linas so where is the issue, redis storing the shares, redis accumulating the shares, truncation, miner calculating shares differently to pool.? |
systems very easy.
|
so i've given this some thought. maybe you could run a pool and insert some code into the pool.js module that records all shares in a file. somewhere around here. https://github.com/dvandal/cryptonote-nodejs-pool/blob/master/lib/pool.js#L1076 add something like this log('warn', logSystem, 'miners hashes %s', [job.difficulty]) then run you test and accumulate shares from file would be nice if miner could have share logging turned on, then we could see where the issue occurs think this would highlight several things
|
It would improve the "believability" of this issue, if someone could reproduce this, especially, my last comment #620 (comment) - I've spoken to one person who is in complete denial, but is unwilling to perform basic tests (citing "proprietary modifications" to this code base). As to where the problem might be: I've instrumented the miner (xmrig) to see how it works; I don't think its the miner; when it prints Being off by 3 or 18 out of a hundred-million hashes smells more like a floating-point rounding error, rather than (say) a thread race condition. Thread-race conditions (e.g. some read-modify-write was not locked/atomic) would wipe out an entire share, not a fraction of a share. |
Fuuu... in a different pool, I asked it to send me fixed-sized difficulty. I picked exactly 500000. It sends me 500054 ... why? I dunno, I assumed some kind of prime-number nonce magic or something. When the miner finds something, it reports |
If I get a free moment I might setup a test pool. Het the definitive answer.
Get Outlook for Android<https://aka.ms/ghei36>
…________________________________
From: Linas Vepštas <notifications@github.com>
Sent: Sunday, January 3, 2021 3:40:33 PM
To: dvandal/cryptonote-nodejs-pool <cryptonote-nodejs-pool@noreply.github.com>
Cc: muscleman <musclesonvacation@hotmail.com>; Comment <comment@noreply.github.com>
Subject: Re: [dvandal/cryptonote-nodejs-pool] Share miscalculation/share scamming (#620)
Fuuu... in a different pool, I asked it to send me fixed-sized difficulty. I picked exactly 500000. It sends me 500054 ... why? I dunno, I assumed some kind of prime-number nonce magic or something. When the miner finds something, it reports accepted (nnn/0) diff 50054. If I look at the pool, it increments by 500000 and not 500054 .. what happened to that extra 54 hashes? (That works out to 0.0108% which is way too small to be a "pool fee" or "donations to core team") ... is my miner crazy, or is the pool crazy? This is ... irritating... the amounts are small, but why is there any difference at all?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#620 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABDK6E5YCSIGRH3TZNCYJGTSYDP5DANCNFSM4VM4XFUA>.
|
Here's another screen grab showing very regular, but absolutely immense oscillations of the network hash power: Found that at https://explorer.theqrl.org/ -- assuming 60 seconds/block the period is about 95 minutes ... why would there be a factor of 10x or 20x oscillation of network hash power, that is extremely regular? What would cause/motivate miners to "pile on" like that? Why would this be a beneficial strategy? Answer Why does this work? Well, if you constantly mined QRL with 2x to 4x the current network hash rate, then the block difficulty would slowly adjust to the new network hash rate -- the difficulty would be 2x to 4x harder. With current QRL network settings, it would take about a day(?) to level out at the new difficulty. But if you can aim a firehose at it, and pulse it, like this, the difficulty stays low. Mining stays easy. To put it differently: if you control 2x to 4x the network hash rate, and you pulse it, then mining is 2x or 4x easier, than if you mined at a constant rate. For the same amount of hash power, you get 2x to 4x more coin! What a deal! Somewhere, the QRL specs say that "enough blocks are left for 200 years" but that assumes that the mining rate is approx constant from day to day. i.e. that the network difficulty auto-adjustment is able to respond to mining rate changes. Clearly, it can't: its responding much too slowly. Someone will mine out that 200-year supply in just a decade or so, cause they can mine at 5-20 seconds/block. Anyway, I think that is the answer for the wild hash-rate swings. Someone is pumping the network, mining while its easy, then backing off soon as the difficulty starts increasing in response. Here's my own, independent graph of time-to-block-discovery, showing the 90-minute cycles. |
Actually a pool operator that I maintain software for had 400gh on monero the other day for less than 10mins. We believe there is a massive farm or facility with a Russian ip that is doing this. Seems limited to CPU algos.
Get Outlook for Android<https://aka.ms/ghei36>
…________________________________
From: Linas Vepštas <notifications@github.com>
Sent: Sunday, January 3, 2021 4:32:15 PM
To: dvandal/cryptonote-nodejs-pool <cryptonote-nodejs-pool@noreply.github.com>
Cc: muscleman <musclesonvacation@hotmail.com>; Comment <comment@noreply.github.com>
Subject: Re: [dvandal/cryptonote-nodejs-pool] Share miscalculation/share scamming (#620)
Here's another screen grab showing very regulat, but absolutely immense oscillations of the network hash power:
[qrl-hash-power]<https://user-images.githubusercontent.com/94368/103490300-9273ae80-4de0-11eb-9f81-f6edd6cf6c42.png>
Found that at https://explorer.theqrl.org/ -- assuming 60 seconds/block the period is about 95 minutes ... why would there be a factor of 10x or 20x oscillation of network hash power, that is extremely regular? What would cause/motivate miners to "pile on" like that? Why would this be a beneficial strategy?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#620 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABDK6E6DP72LCHAMHFB2HMDSYDV67ANCNFSM4VM4XFUA>.
|
Also with pps they'll get the majority of the block reward. So I'm about to do pplns
Get Outlook for Android<https://aka.ms/ghei36>
…________________________________
From: Gary Rusher <musclesonvacation@hotmail.com>
Sent: Sunday, January 3, 2021 4:38:35 PM
To: dvandal/cryptonote-nodejs-pool <cryptonote-nodejs-pool@noreply.github.com>; dvandal/cryptonote-nodejs-pool <reply@reply.github.com>
Cc: Comment <comment@noreply.github.com>
Subject: Re: [dvandal/cryptonote-nodejs-pool] Share miscalculation/share scamming (#620)
Actually a pool operator that I maintain software for had 400gh on monero the other day for less than 10mins. We believe there is a massive farm or facility with a Russian ip that is doing this. Seems limited to CPU algos.
Get Outlook for Android<https://aka.ms/ghei36>
________________________________
From: Linas Vepštas <notifications@github.com>
Sent: Sunday, January 3, 2021 4:32:15 PM
To: dvandal/cryptonote-nodejs-pool <cryptonote-nodejs-pool@noreply.github.com>
Cc: muscleman <musclesonvacation@hotmail.com>; Comment <comment@noreply.github.com>
Subject: Re: [dvandal/cryptonote-nodejs-pool] Share miscalculation/share scamming (#620)
Here's another screen grab showing very regulat, but absolutely immense oscillations of the network hash power:
[qrl-hash-power]<https://user-images.githubusercontent.com/94368/103490300-9273ae80-4de0-11eb-9f81-f6edd6cf6c42.png>
Found that at https://explorer.theqrl.org/ -- assuming 60 seconds/block the period is about 95 minutes ... why would there be a factor of 10x or 20x oscillation of network hash power, that is extremely regular? What would cause/motivate miners to "pile on" like that? Why would this be a beneficial strategy?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#620 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABDK6E6DP72LCHAMHFB2HMDSYDV67ANCNFSM4VM4XFUA>.
|
Do mining huge across many pools may keep the network diff flatter while getting blocks at many pools
Get Outlook for Android<https://aka.ms/ghei36>
…________________________________
From: Gary Rusher <musclesonvacation@hotmail.com>
Sent: Sunday, January 3, 2021 4:40:08 PM
To: dvandal/cryptonote-nodejs-pool <cryptonote-nodejs-pool@noreply.github.com>; dvandal/cryptonote-nodejs-pool <reply@reply.github.com>
Cc: Comment <comment@noreply.github.com>
Subject: Re: [dvandal/cryptonote-nodejs-pool] Share miscalculation/share scamming (#620)
Also with pps they'll get the majority of the block reward. So I'm about to do pplns
Get Outlook for Android<https://aka.ms/ghei36>
________________________________
From: Gary Rusher <musclesonvacation@hotmail.com>
Sent: Sunday, January 3, 2021 4:38:35 PM
To: dvandal/cryptonote-nodejs-pool <cryptonote-nodejs-pool@noreply.github.com>; dvandal/cryptonote-nodejs-pool <reply@reply.github.com>
Cc: Comment <comment@noreply.github.com>
Subject: Re: [dvandal/cryptonote-nodejs-pool] Share miscalculation/share scamming (#620)
Actually a pool operator that I maintain software for had 400gh on monero the other day for less than 10mins. We believe there is a massive farm or facility with a Russian ip that is doing this. Seems limited to CPU algos.
Get Outlook for Android<https://aka.ms/ghei36>
________________________________
From: Linas Vepštas <notifications@github.com>
Sent: Sunday, January 3, 2021 4:32:15 PM
To: dvandal/cryptonote-nodejs-pool <cryptonote-nodejs-pool@noreply.github.com>
Cc: muscleman <musclesonvacation@hotmail.com>; Comment <comment@noreply.github.com>
Subject: Re: [dvandal/cryptonote-nodejs-pool] Share miscalculation/share scamming (#620)
Here's another screen grab showing very regulat, but absolutely immense oscillations of the network hash power:
[qrl-hash-power]<https://user-images.githubusercontent.com/94368/103490300-9273ae80-4de0-11eb-9f81-f6edd6cf6c42.png>
Found that at https://explorer.theqrl.org/ -- assuming 60 seconds/block the period is about 95 minutes ... why would there be a factor of 10x or 20x oscillation of network hash power, that is extremely regular? What would cause/motivate miners to "pile on" like that? Why would this be a beneficial strategy?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#620 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABDK6E6DP72LCHAMHFB2HMDSYDV67ANCNFSM4VM4XFUA>.
|
noticed the same shenanigans on my pools: i have set fixed diff in the miner at 200000: Pool side: but on the miner side i get: So there's def something odd going on |
well, just checked it out. if you using my pool software. thats version < 2.0.0 there ain't an issue. So if your looking to mine on one of these pools. |
There appears to be reasonable evidence that someone has figured out how to confuse the calculation of shares for (an older version) of this pool software. It appears to affect at least
twoeight different pools. It's a doozey. Here we go.An earlier version of this bug is reported here: tevador/RandomX#200 because I mistakenly assumed this was a RandomX weakness; it almost surely is not, its a pool weakness. To recap:
QRL, the "Quantum Resistant Ledger" uses RandomX. It's a small coin, about 14 MH/sec grand total network hashrate. Pool2mine is a small pool for QRL, about 84KH/sec. So, about 3x or 4x per day, someone joins this pool, mines at a rate of 2-5MH/sec for 2-5 minutes, and then leaves. When they mine, they pick up almost every block, and every block they pick up has a difficulty of 1% to 50%.
At first I thought: "a hah, someone is guessing the easy blocks and sucking them up". Nope. What I now think is happening is that someone is aiming a firehose of shares: about 100x more than what this pool normally sees, and approx 1/3rd of the total network hash-rate, and is tangling up the share calculator to credit them with more than they actually shared. (I mean, if this was a RandomX weakness, they would just solo-mine, instead of attaching to a pool.) This miner is probably a regular Monero miner (Monero has a network hash rate of 1.5GH/sec, so a 3MH/sec miner is not that big. But for QRL, 3MH/sec is huge.)
For Pool2mine you can see evidence for this as follows. Here's some recent activity:
So -- 27 December is a good example. This miner shows up at the indicated time, with maybe 5MH/sec(? approx?) hash power (this is maybe(?) 1/3rd(?) of total hash power for this coin), then, starting with block 1322615 they mined almost every block in a row, every 5 to 30 seconds, and then they leave about 7 minutes later. The network rate is supposed to be one block per minute.
You can view the above at the Pool Blocks page. The hash rate spikes are visible at the Dashboard. Note that the spikes there are are the hash-rate averaged over half an hour; the instantaneous rate is much higher. The miner is Q010300...91977ef and is visible in the top ten charts
So, how much is being lost? Here's my experiment:
If this is an old bug or a known bug, let me know. pool2mine seems to be running a Feb 11 2020 version of this s/w. No clue what version miningocean is using.
The text was updated successfully, but these errors were encountered: