Plonky3代码贡献指南:从新手到核心开发者的成长路径
Plonky3代码贡献指南从新手到核心开发者的成长路径【免费下载链接】Plonky3A toolkit for polynomial IOPs (PIOPs)项目地址: https://gitcode.com/gh_mirrors/pl/Plonky3Plonky3是一个用于实现多项式IOPPIOP的工具包主要用于支持STARK-based的零知识虚拟机。作为一名开源项目Plonky3欢迎来自全球开发者的贡献但需要遵循一定的规范和流程。本指南将详细介绍如何从新手逐步成长为Plonky3的核心开发者。 准备工作搭建开发环境在开始贡献代码之前您需要正确配置开发环境。Plonky3使用Rust语言编写因此需要安装Rust工具链# 克隆Plonky3仓库 git clone https://gitcode.com/gh_mirrors/pl/Plonky3 cd Plonky3 # 安装Rust如果尚未安装 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh # 设置环境变量以启用CPU优化 export RUSTFLAGS-Ctarget-cpunative为了获得最佳性能建议启用所有支持的CPU特性。Plonky3包含针对新CPU指令集的优化如x86的BMI1/2、AVX2和AVX-512指令集。 理解项目架构Plonky3采用模块化设计包含多个独立的crate。每个crate都有特定的功能字段模块提供多种有限域实现包括Mersenne31、BabyBear、KoalaBear和Goldilocks承诺方案包含FRI-based多项式承诺方案和广义Merkle树哈希函数支持Rescue、Poseidon、Poseidon2、BLAKE3、Keccak-256、SHA-256和MonolithSTARK实现提供单变量和多变量STARK实现FFT算法包含多种快速傅里叶变换实现项目的主要入口点位于Cargo.toml它定义了工作空间中的所有成员crate。每个crate都有独立的版本管理和依赖关系。 寻找贡献机会1. 从简单问题开始对于新手贡献者建议从以下类型的任务开始修复文档错误添加测试用例优化现有代码的性能修复已知的bug2. 查看现有问题在开始编码之前建议先查看项目的issue列表了解当前的需求和待解决的问题。这可以避免重复工作并确保您的贡献符合项目优先级。3. 与社区沟通Plonky3团队建议在开始任何重要工作之前先在公共Discord的#development频道中说明您的意图。这样可以避免与其他贡献者的工作重复获得团队对实现方案的反馈确保您的贡献符合项目发展方向 代码贡献流程第一步创建分支git checkout -b feature/your-feature-name第二步实现功能或修复bug在编写代码时请遵循以下规范代码风格遵循Rust 2018惯用语法使用cargo fmt格式化代码测试覆盖为所有新功能添加测试用例性能考虑对于性能优化需要提供基准测试数据文档完善为公共API添加文档注释第三步运行测试在提交PR之前确保所有测试通过# 运行所有测试 RUSTFLAGS-Ctarget-cpunative cargo test # 运行CI工作流中的命令 cargo check --all-targets cargo test --all-targets cargo clippy --all-targets -- -D warnings第四步提交Pull Request创建PR时请确保PR描述清晰详细说明解决的问题或实现的功能单一目的每个PR只解决一个问题bug修复、新功能或性能优化包含测试所有PR必须包含相应的测试用例性能数据对于性能优化需要提供前后对比数据 不同类型的贡献指南1. Bug修复贡献如果您要修复一个bug请在PR描述中明确说明bug的具体表现和复现步骤bug的根本原因分析您的修复方案和原理例如如果修复验证器在某些恶意证明下可能panic的问题您需要添加触发该bug的测试用例在修复后确保测试通过考虑使用catch_unwind包装验证逻辑2. 新功能贡献在实现新功能之前请务必与Polygon Zero团队确认该功能的优先级。新功能PR必须包含功能描述和使用场景实现方案的技术细节完整的测试套件必要的文档更新3. 性能优化贡献性能优化是Plonky3特别欢迎的贡献类型。提交性能优化PR时必须提供目标瓶颈的具体描述性能测试方法和环境信息优化前后的性能对比数据机器配置CPU、操作系统、线程数等 开发最佳实践1. 使用正确的RUSTFLAGS为了获得最佳性能始终设置export RUSTFLAGS-Ctarget-cpunative2. 启用并行处理对于计算密集型任务启用parallel特性cargo build --features parallel3. 内存优化对于重复证明的工作负载可以设置jemalloc配置export JEMALLOC_SYS_WITH_MALLOC_CONFretain:true,dirty_decay_ms:-1,muzzy_decay_ms:-14. 链接时优化在发布构建中启用LTO以获得额外性能提升[profile.release] lto fat 测试策略Plonky3的测试分为多个层次单元测试每个crate内部的测试集成测试跨crate的功能测试性能测试使用criterion进行基准测试示例测试确保示例代码正常工作运行特定模块的测试# 测试特定crate cargo test -p p3-field # 运行性能基准测试 cargo bench 性能基准测试Plonky3包含详细的性能基准测试。运行示例基准测试RUSTFLAGS-Ctarget-cpunative cargo run --example prove_prime_field_31 --release --features parallel -- --field koala-bear --objective poseidon-2-permutations --log-trace-length 17 --discrete-fourier-transform radix-2-dit-parallel --merkle-hash keccak-f这个命令会证明2^20个宽度为16的Poseidon2置换使用KoalaBear字段、Radix2DitParallel DFT和KeccakF作为Merkle树哈希。 常见陷阱和注意事项1. 避免混合不同类型的修改不要在一个PR中混合bug修复和新功能不要在一个PR中包含多个不相关的性能优化保持PR的单一目的性便于评审2. 文档修改限制Plonky3团队通常不接受仅包含文档小修改的PR。如果发现文档问题建议创建issue团队会在有时间时修复。3. 使用稳定版RustPlonky3使用稳定版Rust避免依赖不稳定特性。如果需要使用不稳定特性请先与团队讨论。4. CI要求所有PR必须通过GitHub CI检查。您可以在本地运行CI命令来预检查# 模拟CI检查 cargo check --all-targets cargo test --all-targets cargo clippy --all-targets -- -D warnings 成为核心开发者随着贡献的增加您可能希望成为Plonky3的核心开发者。以下是成长路径阶段一熟悉项目阅读所有主要模块的源代码理解Plonky3的架构设计运行并分析所有示例程序阶段二贡献修复修复简单的bug添加测试用例改进文档阶段三实现功能实现较小的新功能进行性能优化添加新的示例阶段四架构设计参与新功能的架构设计评审其他贡献者的PR帮助维护项目质量阶段五核心维护拥有合并PR的权限参与项目路线图规划指导新贡献者 获取帮助和支持1. 社区资源Telegram群组t.me/plonky3GitHub仓库的问题和讨论区项目文档和示例代码2. 学习资源阅读field/README.md了解字段实现查看circle/README.md学习循环群FFT参考examples/examples/prove_prime_field_31.rs学习使用示例3. 调试技巧使用tracing进行日志记录启用调试符号进行性能分析使用criterion进行基准测试 开始您的贡献之旅现在您已经了解了Plonky3代码贡献的完整流程。无论您是密码学专家、数学爱好者还是系统程序员Plonky3都欢迎您的贡献。从简单的bug修复开始逐步深入了解这个强大的多项式IOP工具包。记住每个伟大的开源项目都是由像您这样的贡献者共同构建的。您的每一行代码、每一个测试、每一次优化都在让Plonky3变得更加强大和可靠。开始您的第一个贡献吧【免费下载链接】Plonky3A toolkit for polynomial IOPs (PIOPs)项目地址: https://gitcode.com/gh_mirrors/pl/Plonky3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考