-
Guest56
hi in \monero\external\supercop\crypto-sign\ed25519 there are two implementations:
-
Guest56
- amd64-51-30k
-
Guest56
- amd64-64-24k
-
Guest56
What is the difference?
-
Guest56
sech1 maybe you know?
-
m-relay
<vtnerd:monero.social> One uses 51bit limbs with a 30k precomputation table, and the other uses 64 bit limbs with a 24k precomputation table. They have different performance characteristics on different cpus. The larger table thrashes the cache more, but has less less overflow scenarios on 64 bit integers
-
m-relay
<vtnerd:monero.social> There's a utility to benchmark the two to determine which is best for your cpu
-
Guest56
Are both implementations for linux only?
-
Guest56
Or maybe only for AMD cpu's?
-
m-relay
<vtnerd:monero.social> They are for x86-64 only, so amd and Intel. It is currently limited to system V calling convention due to assembly files. So it could work on Linux, bsd, and macos - let me check what systems it is currently enabled for though
-
m-relay
<vtnerd:monero.social> They should be enabled for bsd and macos as well. Only windows builds should be omitted right noe
-
m-relay
<vtnerd:monero.social> *now
-
Guest56
There is also an implementation in src\crypto\crypto.cpp which implementation is it?
-
Guest56
64bit limbs right?
-
m-relay
<vtnerd:monero.social> No that is basically "ref10" which has 32bit limbs and 32 bit integers
-
Guest56
hmm
-
m-relay
<vtnerd:monero.social> I'm planned (at some point) a donna64 investigation for use in LWS scanning - it should see speed improvements on all 64 but processors and oses
-
Guest56
Which implementation would be faster if the CPU supports it?
-
Guest56
64bit limbs?
-
m-relay
<vtnerd:monero.social> *bit
-
m-relay
<vtnerd:monero.social> Yes. You can test the speed difference with the benchmark utility - it provides comparisons against each 64 bit implementation and the basic ref10/32bit implementation
-
Guest56
Where do I find the benchmark utility?
-
m-relay
<vtnerd:monero.social> I forget the speed difference, let me see if it's in the notes somewhere
-
Guest56
Yes please
-
Guest56
Both 51limbs and 64bit limbs should be faster than the 32bit limb implementation as long as the CPU supports 64bit integers, I assume.
-
Guest56
vtnerd still there?
-
m-relay
<vtnerd:monero.social> Yes. The benchmark utility is built with the tests - or `make monero-wallet-crypto-bench`. Look in the `tests/` folder of the cmake output directory for the executable with the same name.
-
m-relay
-
Guest56
I currently have some issues with vscode cmake. Can you show me your benchmark results?
-
Guest56
Ah, it looks like there is a benchmark
-
m-relay
<vtnerd:monero.social> Just did, look in the above link for results with a Ryzen 3900x. It's ~146% slower to use the 32bit code. The real scan time was improved by 28%
-
m-relay
<vtnerd:monero.social> We didn't see optimal gains because of how the blocks are fetched, something the new scanner for fcmp++ should improve further
-
Guest56
I see, thanks
-
Guest56
where can I find the new scanner for fcmp++?
-
m-relay
<vtnerd:monero.social> Uh, it's really not available yet. I guess you could look in jbermans repo
-
m-relay
<vtnerd:monero.social> The latest is here
github.com/j-berman/monero
-
m-relay
<vtnerd:monero.social> There's also
github.com/seraphis-migration/monero
-
m-relay
<vtnerd:monero.social> I'm not sure of the status of either repo tbh, jberman would probably be the best contact for that
-
Guest56
where are the main changes?
-
m-relay
<vtnerd:monero.social> His irc handle is the same
-
m-relay
<vtnerd:monero.social> You'd have to ask him directly, I'm not sure which of his branches is the best. The earlier ones with `seraphis` in the name wouldve been the related ones, but he may have abandoned that for something involving `fcmp` in the name
-
Guest56
ahh ok
-
m-relay
-
Guest56
Who exactly is Justin Berman?
-
m-relay
<vtnerd:monero.social> That branch is probably a good start until he responds. There's several folders labeled seraphis which should support "legacy" and seraphis scanning. The seraphis branches have gone stale as development shifted to something called fcmp
-
Guest56
hmm
-
m-relay
<vtnerd:monero.social> A dev that is CCS funded to work on monero
-
m-relay
<vtnerd:monero.social> More specifically his work is now focused on integrating fcmp++ so that monero no longer uses ring signatures in favor of including all outstanding outputs as candidates for spending (similar to zcash shielded pools)
-
Guest56
I see
-
Guest56
What is the the issue with RingSIG?
-
Guest56
Also is zcash not beeing spammed?
-
Guest56
I wonder why
-
Guest56
there is also qhasm stuff in external\supercop\ why another implementation?
-
m-relay
<vtnerd:monero.social> qhasm stuff? You mean in `src/amd64`? I tried to minimize changes to the supercop upstream directories, and put some new assembly files in that folder. And the assembly files are mostly copy-paste anyway
-
m-relay
<vtnerd:monero.social> Ring signatures have a smaller anonymity set that can theoretically be attacked if someone dominates the txes in my every block (i.e. they create lots of dummy transactions). FCMP is harder to defeat since the spend can from _any_ prior output/tx
-
m-relay
<jberman:monero.social> For fcmp++'s, we're implementing a merkle tree for all outputs in the chain. Full-wallet scanners need to keep track of every received output's complete path in the merkle tree (scanning isn't implemented yet)
-
m-relay
<jberman:monero.social> We've been discussing an optimized approach in the no-wallet-left-behind channel. @jeffro256 proposed full wallets keep a pruned tree saved
-
m-relay
<jberman:monero.social> I believe this can work by keeping all members of the right-most path in the tree for each block saved, up to some reorg depth
-
m-relay
<jberman:monero.social> I wrote up this description (slightly modified) and sent the description to @dangerousfreedom who's aiming to tackle this (it doesn't account for reorg handling as written):
paste.debian.net/1324876
-
Guest56
nice jberman
-
Guest56
jberman where can I find the implementation for fcmp++ in your repository?
-
m-relay
<jberman:monero.social> the fcmp++ branch
-
Guest56
in here right?
-
Guest56
-
m-relay
<jberman:monero.social> no that branch doesn't have any fcmp related stuff implemented
-
m-relay
-
Guest56
can you ahhhh
-
m-relay
<jberman:monero.social> this branch^ I just linked includes daemon-side changes to sync the merkle tree, no scanning or wallet-side changes implemented in there
-
Guest56
now I see
-
Guest56
in fcmp
-
Guest56
jberman do you have a youtube channel by any chance explaining these implementations?
-
m-relay
<jberman:monero.social> however as noted in that paste I linked above, I think some functions I wrote there could be reused for wallet sync too, when it's implemented
-
Guest56
or docs?
-
m-relay
<jberman:monero.social> @kayabaNerve wrote a good specification of fcmp++'s here:
github.com/kayabaNerve/fcmp-ringct/blob/develop/fcmp%2B%2B.pdf
-
m-relay
<jberman:monero.social> section 6 includes integration-related changes. the scanner stuff is a little out of date since the discussions on the optimized approach are relatively fresh
-
m-relay
<jberman:monero.social> I intend to write docs explaining my implementation too soon
-
Guest56
jberman do you have twitter or where do we get notifications about your work?
-
Guest56
*or X
-
m-relay
<jberman:monero.social> we have meetings in the no-wallet-left-behind channel every Monday at 18:00 UTC, and meetings in the monero-research-lab every Wednesday at 17:00 UTC
-
m-relay
<jberman:monero.social> meeting logs are posted here:
monero-project/meta #1045
-
m-relay
<jberman:monero.social> I'm not really active on twitter
-
Guest56
jberman - noted, thanks
-
Guest56
which CPU's work better with 64-64-24k? and which work better with 64-51-30k?
-
Guest56
which rule determines that?
-
m-relay
-
m-relay
<vtnerd:monero.social> Typically the 64-51-30k variant is just slightly faster on some Intel cpus
-
m-relay
<vtnerd:monero.social> As you can see it's never by much
-
Guest56
thanks vtnerd
-
Guest56
so if I interpret that graph correctly the 64-64-24k variant is the best algorithm available
-
Guest56
because it has the lowest trycycles on most cpus
-
Guest56
(using it on a CPU in which 64-51-30k would be better would just increase the speed slightly over using 64-64-24k on these CPU's)
-
Guest56
so I also understand from this that the 64-64-24k algorithm would also work on these CPU's
-
Guest56
(almost as well)
-
m-relay
<vtnerd:monero.social> Yes, the monero wallet and the supercop cmake code default to 64-64-24k for this reason
-
Guest56
great! I am really new to this source code, so I am learning this just now
-
m-relay
<redhawk18:matrix.org> Hey is there a protocol on how to connect to a pool? Currently I'm trying to test a web socket connection but before I can even send the json needed to login the pool closes the socket. Does anyone know why this happens?
-
m-relay
<redhawk18:matrix.org> I read here that everything is done with a tcp socket which is what a web socket should be so I'm confused.
-
m-relay
-
m-relay
<redhawk18:matrix.org> I visited the pool channel and noticed that it wasn't really the type of discussion that would be needed to ask highly technical questions.