-
m-relay
<xfedex:matrix.org> Is it possible for an end-user to buy RISC-V CPUs, build a computer with it, and mine RandomX efficiently?
-
sech1
Yes, IIRC Milk-V Pioneer can be bought. It has SG2042 CPU
-
m-relay
<xfedex:matrix.org> it has 64 cores, 64MB L3 cache, it seems
-
m-relay
<xfedex:matrix.org> not enough for XMR mining? doesn't that require 2MB L3 per core to be efficient?
-
m-relay
<xfedex:matrix.org> Another thing that's not really related to Monero PoW. Is it possible to see, from a stratum server side, if miner supports Nicehash without having to look at useragent?
-
m-relay
<xfedex:matrix.org> So that pools or proxies can send a Nicehash job to miners that support it (e.g. xmrig) but not to clients that do not support or want it (e.g. xmrig-proxy).
-
sech1
Miner can send nicehash support in "extensions" json parameter
-
sech1
SG2042 can mine with 32 threads
-
m-relay
<xfedex:matrix.org> Ok thank you.
-
m-relay
<xfedex:matrix.org> And the "nicehash" in Extensions parameter isn't sent by proxy, correct?
-
m-relay
<xfedex:matrix.org> i am not seeing the extension parameters sent by miner to stratum server...
-
m-relay
-
m-relay
<xfedex:matrix.org> this is what my software receives from an xmrig miner request (stripped algos and address for simplicity and privacy)... there is no "extensions" field
-
m-relay
<xfedex:matrix.org> isn't "extensions" only sent in the login response (server to client)? then how can server detect if it should use nicehash?
-
sech1
-
sech1
-
m-relay
<xfedex:matrix.org> Yes, so the pool cannot know if the miner supports NiceHash. Is this correct? Only the miner can know if the pool is supporting nicehash jobs.
-
sech1
No, it's the miner who sends this extension data to the pool
-
m-relay
<xfedex:matrix.org> "extensions" field is included in the Server-To-Client login response
-
m-relay
<xfedex:matrix.org> {
-
m-relay
<xfedex:matrix.org> "id": 1, "jsonrpc": "2.0", "error": null,
-
m-relay
<xfedex:matrix.org> "result": {
-
m-relay
<xfedex:matrix.org> "id": "...",
-
m-relay
<xfedex:matrix.org> "job": {
-
m-relay
<xfedex:matrix.org> "blob": "...", "job_id": "...", "target": "...", "id": "...", "algo": "..."
-
m-relay
<xfedex:matrix.org> },
-
m-relay
<xfedex:matrix.org> "extensions": ["keepalive", "nicehash"],
-
m-relay
<xfedex:matrix.org> "status": "OK"
-
m-relay
<xfedex:matrix.org> }
-
m-relay
<xfedex:matrix.org> }
-
m-relay
<xfedex:matrix.org> this is the login response packet
-
m-relay
<xfedex:matrix.org> i think "extensions" should be sent by Client Handshake too, not only by Server Response
-
sech1
right
-
m-relay
<xfedex:matrix.org> it's limiting, that the pool cannot know what the miner supports, unless it parses user agent, which requires some maintenance burden
-
sech1
You can assume that everyone supports "nicehash"
-
m-relay
<xfedex:matrix.org> xmrig-proxy doesn't support nicehash?
-
sech1
It does
-
m-relay
<xfedex:matrix.org> if i send a Nicehash job to XMRig-proxy, it is not going to be able to reuse it for multiple miners, isn't it?
-
sech1
Just switch it to simple mode in config
-
sech1
then it pass the nicehash job to miners
-
m-relay
<xfedex:matrix.org> at that point nicehash is useless
-
sech1
proxy defaults to nicehash mode, so it merges 256 miners into 1 upstream miner
-
m-relay
<xfedex:matrix.org> i know that, but let's suppose this
-
sech1
proxy defaults to nicehash mode, so it merges 256 miners into 1 upstream miner
-
sech1
of course proxy can't do it if it gets nicehash job from the upstream
-
sech1
so you must switch to simple mode
-
m-relay
<xfedex:matrix.org> Let's suppose there is a pool which wants to save as much CPU and RAM as possible. For doing this, it reuses the same job between many miners. But, it musn't send a Nicehash job to Xmrig-Proxy.
-
m-relay
<xfedex:matrix.org> It would be easy to solve this problem if the Client-To-Server login packet included the "extensions" field, like the Server-To-Client login response
-
sech1
pools just use nicehash mode for everyone connecting, they don't care if it's a proxy or not
-
m-relay
<xfedex:matrix.org> in practice i'm suggesting to add the "extensions" field to Client-To-Server login packet, so that pools can react accordingly
-
sech1
i.e. pools bring the burden of configuration to miners. Pools don't care
-
m-relay
<xfedex:matrix.org> but then if a proxy receives Nicehash job, it cannot reduce pool load, since the same job can only be used by one miner
-
m-relay
<xfedex:matrix.org> aka the proxy will make 1 connection per miner
-
m-relay
<xfedex:matrix.org> correct?
-
m-relay
<xfedex:matrix.org> xmrig-proxy would be useless in that case...
-
sech1
yes
-
m-relay
<xfedex:matrix.org> that's why i am proposing to add an "extensions" field
-
sech1
MoneroOcean runs transparent proxies for people who connect many miners (deducting a fee for this)
-
sech1
But usually pools don't use nicehash jobs, they change extra_nonce for each new miner
-
m-relay
<xfedex:matrix.org> right now on my pool i am parsing user agent, and if it starts with "XMRig/", sending the nicehash job, otherwise sending non-nicehash job
-
m-relay
<xfedex:matrix.org> but i think it's a bad design practice
-
m-relay
<xfedex:matrix.org> hardcoding things isn't optimal
-
sech1
but why do you send nicehash job
-
sech1
change extra_nonce instead
-
m-relay
<xfedex:matrix.org> to save RAM and CPU
-
m-relay
<xfedex:matrix.org> changing extra_nonce requires computation of merkle tree
-
sech1
logN time
-
sech1
you only need to update 1 branch of the tree
-
sech1
p2pool can generate 10k extra_nonces in < 0.01 seconds
-
m-relay
<xfedex:matrix.org> i didn't know that, sorry... i'm relying on monerod's get_block_template blocktemplate_blob computation, since i am lazy and that thing is quite complex to implement, especially for many different Monero-based altcoins with different headers :)