感谢您对Bank智能合约项目的关注!我们欢迎各种形式的贡献。
- 查看现有的Issues确保问题未被报告
- 使用Bug报告模板创建新Issue
- 提供详细的复现步骤和环境信息
- 查看现有的Issues确保功能未被建议
- 使用功能请求模板创建新Issue
- 详细描述功能需求和使用场景
- Fork本仓库
- 创建功能分支:
git checkout -b feature/amazing-feature - 提交代码:
git commit -m 'Add amazing feature' - 推送到分支:
git push origin feature/amazing-feature - 创建Pull Request
# 克隆仓库
git clone https://github.com/your-username/bank-foundry.git
cd bank-foundry
# 安装Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup
# 编译和测试
make build
make test-
命名约定
- 合约名: PascalCase (
Bank) - 函数名: camelCase (
getBalance) - 变量名: camelCase (
totalDeposits) - 常量名: UPPER_SNAKE_CASE (
MAX_DEPOSIT)
- 合约名: PascalCase (
-
注释规范
- 使用NatSpec注释
- 所有public/external函数必须有注释
- 复杂逻辑需要inline注释
-
安全规范
- 使用
require进行输入验证 - 实现重入攻击防护
- 遵循checks-effects-interactions模式
- 使用
-
测试覆盖率
- 所有public/external函数必须有测试
- 边界条件测试
- 错误场景测试
-
测试命名
- 测试函数:
test<FunctionName><Scenario> - 模糊测试:
testFuzz<FunctionName><Scenario>
- 测试函数:
-
测试结构
function testDepositSuccess() public { // Arrange uint256 depositAmount = 1 ether; // Act vm.prank(user); bank.deposit{value: depositAmount}(); // Assert assertEq(bank.getBalance(user), depositAmount); }
使用Conventional Commits格式:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
feat: 新功能fix: Bug修复docs: 文档更新style: 代码格式修改refactor: 代码重构test: 测试相关chore: 构建过程或辅助工具的变动
feat(bank): add interest calculation feature
Implement compound interest calculation for deposits
- Add interest rate state variable
- Add calculateInterest() function
- Update deposit() to accrue interest
Closes #123
-
代码质量
make build # 编译通过 make test # 所有测试通过 make test-coverage # 覆盖率检查
-
Gas优化
make test-gas # 查看Gas报告 -
安全检查
- 手动安全审查
- 确保无新的安全漏洞
- 使用PR模板
- 详细描述变更内容
- 列出相关的Issue
- 说明测试情况
所有PR需要经过代码审查:
-
自动检查
- CI/CD流水线通过
- 测试覆盖率维持
- Gas成本检查
-
人工审查
- 代码逻辑正确性
- 安全性评估
- 代码风格一致性
MAJOR.MINOR.PATCH- 例如:
1.0.0,1.1.0,1.1.1
- 更新版本号
- 更新CHANGELOG.md
- 创建Git tag
- 发布到测试网
- 创建GitHub Release
- 保持尊重和包容
- 专注于技术讨论
- 接受建设性反馈
- 帮助新贡献者
- GitHub Issues: 问题报告和功能请求
- GitHub Discussions: 技术讨论
- Pull Requests: 代码贡献
如果发现安全漏洞:
- 不要在公开Issue中报告
- 发送邮件到: [security@example.com]
- 提供详细的漏洞信息
- 等待回复和修复
我们承诺:
- 24小时内确认收到报告
- 10个工作日内提供初步评估
- 修复后公开致谢(如果您同意)
贡献代码即表示您同意在MIT许可证下发布您的贡献。
感谢所有贡献者的付出!每一个PR、Issue和讨论都让这个项目变得更好。
如有任何问题,请随时在Issues中询问或查看我们的FAQ。