py-ecc: Python中的椭圆曲线密码,包括secp256k1、alt_bn128和bls12_381
项目描述
py_ecc
Python中的椭圆曲线密码,包括secp256k1、alt_bn128和bls12_381。
警告: 此库包含一些未经审计的实验性代码。
请参阅下面的文档了解更多信息。 查看变更日志
快速入门
python -m pip install py_ecc
BLS 签名
py_ecc
按照跨链标准化协议实现了 IETF BLS 草案标准 v4。BLS 标准规定了 不同的加密套件,每个套件都有不同的功能,以适应各种使用场景。以下是从这个库中可用的加密套件:
G2Basic
也称为BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_
G2MessageAugmentation
也称为BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_AUG_
G2ProofOfPossession
也称为BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_
基本用法
from py_ecc.bls import G2ProofOfPossession as bls_pop
private_key = 5566
public_key = bls_pop.SkToPk(private_key)
message = b'\xab' * 32 # The message to be signed
# Signing
signature = bls_pop.Sign(private_key, message)
# Verifying
assert bls_pop.Verify(public_key, message, signature)
聚合签名
private_keys = [3, 14, 159]
public_keys = [bls_pop.SkToPk(key) for key in private_keys]
signatures = [bls_pop.Sign(key, message) for key in private_keys]
# Aggregating
agg_sig = bls_pop.Aggregate(signatures)
# Verifying signatures over the same message.
# Note this is only safe if Proofs of Possession have been verified for each of the public keys beforehand.
# See the BLS standards for why this is the case.
assert bls_pop.FastAggregateVerify(public_keys, message, agg_sig)
多次聚合
messages = [b'\xaa' * 42, b'\xbb' * 32, b'\xcc' * 64]
signatures = [bls_pop.Sign(key, message) for key, message in zip(private_keys, messages)]
agg_sig = bls_pop.Aggregate(signatures)
# Verify aggregate signature with different messages
assert bls_pop.AggregateVerify(public_keys, messages, agg_sig)
开发者配置
如果您想修改 py_ecc,请查看 Snake Charmers 战术手册 以了解我们如何操作
- 测试
- 拉取请求
- 文档
我们使用 pre-commit 来维护一致的代码风格。一旦安装,它将在每次提交时自动运行。您也可以使用 make lint
手动运行它。如果您需要提交跳过 pre-commit
检查的提交,可以使用 git commit --no-verify
。
开发环境配置
您可以使用以下方法设置您的开发环境:
git clone git@github.com:ethereum/py_ecc.git
cd py_ecc
virtualenv -p python3 venv
. venv/bin/activate
python -m pip install -e ".[dev]"
pre-commit install
发布设置
要发布新版本
make release bump=$$VERSION_PART_TO_BUMP$$
如何增加版本号
此存储库的版本格式为稳定版本 {major}.{minor}.{patch}
,不稳定版本为 {major}.{minor}.{patch}-{stage}.{devnum}
(stage
可以是 alpha 或 beta)。
要发布下一个版本,指定要增加的部分,例如 make release bump=minor
或 make release bump=devnum
。这通常从主分支进行,除非发布 beta 版本(在这种情况下,beta 版本从主分支发布,而之前的稳定分支从该分支发布)。
如果您处于 beta 版本,使用 make release bump=stage
将切换到稳定版本。
如果当前版本是稳定版本,要发布不稳定版本,请明确指定新版本,例如 make release bump="--new-version 4.0.0-alpha.1 devnum"
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
py_ecc-7.0.1.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 557461f42e57294d734305a30faf6b8903421651871e9cdeff8d8e67c6796c70 |
|
MD5 | d5406bae95a8d2fc149ddd78d484ddad |
|
BLAKE2b-256 | cabddfe49226d5f137d11a946c4b3f3db2ff87b6b02390db8d95b0098365a2db |
py_ecc-7.0.1-py3-none-any.whl的哈希值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 84a8b4d436163c83c65345a68e32f921ef6e64374a36f8e561f0455b4b08f5f2 |
|
MD5 | 9d6d731cbca5d7b2bf9435d4f5728b53 |
|
BLAKE2b-256 | 5bf0a899d0d3e0d2fb5eb95c15ae9f277cb3ee139d4f1576c4c68f08a1301470 |