跳转到主要内容

py-ecc: Python中的椭圆曲线密码,包括secp256k1、alt_bn128和bls12_381

项目描述

py_ecc

Join the conversation on Discord Build Status PyPI version Python versions

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=minormake 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 (45.4 kB 查看散列)

上传时间

构建分发

py_ecc-7.0.1-py3-none-any.whl (43.3 kB 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面