-
fucid
on verification, parallelize in second thread
-
fucid
on additional algorithm, there's no mathematical proof another algorithm is impossible
-
hyc
parallelism is already being used *now*
-
hyc
you can't hide the slowdown
-
hyc
as for mathematical proof of other algorithm - it's actually pretty simple
-
hyc
any fixed algorithm can be optimized by a fixed-function ASIC
-
hyc
therefore the only possible way to defeat ASICs is with a dynamic algorithm
-
hyc
if the algorithm is sufficiently dynamic, it will be equivalent to RandomX
-
sech1
RandomX is not perfect too, it doesn't have nested loops and conditional branches (except for regular loops). RandomX VM is Turing complete most probably though
-
fucid
on "Fully predictable branches cannot depend on the runtime value of any VM register". I think this means deterministic, not fully predictable. A value can be unpredictable until runtime but deterministic
-
sech1
It's all deterministic, or it couldn't be used as PoW
-
sech1
"Predictable" means predictable by CPU branch predictor
-
sech1
so branches that follow some pattern
-
fucid
so it'd be good to have predictable branches to waste less energy, right?
-
hyc
no
-
sech1
then comes the problem with the pattern. No matter where it comes from, ASIC can just use it and predict 100%
-
hyc
^
-
fucid
would overwriting binary code at runtime break the pattern?
-
hyc
overwriting it with what?
-
hyc
what are you going to put in there that an ASIC developer can't also use to their advantage?
-
moneromooo
You put a text string that reads "by reading this text you agree not to use an ASIC to mine monero. If you do not agree, do not read this text".
-
hyc
perfect
-
fucid
with code that changes the branch pattern
-
hyc
my previous question still stands
-
sech1
I think creating branch patterns which are predictable and at the same time can't be cheated with look-up table is a topic for many future PhD thesises
-
sech1
meanwhile, "Miners 39038"
-
sech1
it's been growing fast in the recent few days
-
fucid
not sure: something that flips the branch direction from one to the other, in a way that expands exponentially the number of possible states the ASIC would have to cache
-
fucid
maybe with indirect branches
-
hyc
the pattern must be implemented in code. the code can be embedded into ASIC.
-
hyc
you're handwaving your way thru stuff that just won't work.
-
gingeropolous
its a tempting thing so thats for sure
-
fucid
why isn't the register controlling the branch never modified?
-
gingeropolous
double negative
-
sech1
because if it's modified, we can't guarantee that the program always finishes
-
fucid
can something be added that guarantees the problem always finishes? like add in every basic block a different type of branch that checks if the program should be aborted after a lot of basic blocks were executed
-
hyc
no.
-
hyc
we did that in an earlier version
-
hyc
you're just retreading old ground that's not worth doing
-
hyc
adding a check will itself perturb the branch predictor
-
hyc
it adds a great deal of overhead
-
fucid
which areas of RandomX need improvement?
-
fucid
it would help if what you tried was documented somewhere
-
fucid
did you try stopping the program with the global debug registers