Skip to content
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

secp256k1 crypto core #24

Open
ediliziosantrapa opened this issue Dec 27, 2020 · 3 comments
Open

secp256k1 crypto core #24

ediliziosantrapa opened this issue Dec 27, 2020 · 3 comments

Comments

@ediliziosantrapa
Copy link

I assume this is out of scope for now, and it may be more appropriate bundled in the other crypto issue...

Alongside edd25519, certain cryptocurrencies require secp256k1 also to peform adequately. Grin for example, which is arguably the most cypherpunk currency with core value of maximum simplicity, and original code was written entirely in rust, needs secp256k1.

@vmedea
Copy link

vmedea commented Jan 12, 2021

There is a FOSS secp256k1 core (verification only, no signing) here: https://github.com/ZcashFoundation/zcash-fpga/tree/master/zcash_fpga/src/rtl/secp256k1

@bunnie
Copy link
Member

bunnie commented Jan 13, 2021

Awesome, thanks for the link. Will keep this in mind ...

However, some have also noted that the frequency of secp256k1 operations is relatively low for cryptocurrency transactions, and so it may be fine to do it in software. The main reason for the Curve25519 stuff to be in hardware is because the double-ratchet pubkey operation could potentially happen every chat message (~1/second max rate), which is orders of magnitude more frequent, I gather, than the rate of verification and signing for cryptocurrency?

@vmedea
Copy link

vmedea commented Jan 13, 2021

I agree. The zcash FPGA project aimed to speed up validation of the entire block chain, which is a lot of signatures. This requires powerful hardware in general, and a lot of memory.

A hardware wallet app would do signing at the user's request, possibly validation for checking their own transactions. This is very low frequency and just as well handled in software.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants