ethereum / ethereum/py_ecc

Unification of interfaces across secp256k1 and bls

Open
#119 0 comments 3 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
231
Forks
88
PR merge metrics
No merged PRs in 30d

Description

### What is wrong?

It would be nice if `py_ecc.secpk256k1`, `py_ecc.bls12_381` and `py_ecc.bn128` all had roughly the same API.

### How can it be fixed

A combination of exposing a few un-exposed APIs from `secpk256k1` and renaming things.

- expose `add` and `multiply` from `py_ecc.secp256k1.secp256k1` from `py_ecc.secp256k1`
- I think `py_ecc.secp256k1.secp256k1.inv` needs to be renamed/aliased to `neg` to line up with the bls/bn APIs.
- some other things like `field_modulus` and `curve_order` might need to have their equivalent values exposed from `secp256k1`

Contributor guide

Open the contributing guide

Research direction

Start by comparing the public APIs of py_ecc.secp256k1, py_ecc.bls12_381, and py_ecc.bn128, then inspect py_ecc.secp256k1.secp256k1 and its package exports. Done means the requested secp256k1 operations and equivalent field_modulus and curve_order values are exposed with names consistent across the three curve modules.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cryptography
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.