Skip to content

feat: implement reentrancy guard hardening across all vaults#439

Open
TheCreatorNode wants to merge 17 commits intoPulsefy:mainfrom
TheCreatorNode:security/reentrancy-hardening
Open

feat: implement reentrancy guard hardening across all vaults#439
TheCreatorNode wants to merge 17 commits intoPulsefy:mainfrom
TheCreatorNode:security/reentrancy-hardening

Conversation

@TheCreatorNode
Copy link
Copy Markdown

  • Add shared reentrancy guard module using instance storage
  • Protect crowdfund_vault: deposit, withdraw, refund_contributors
  • Protect vesting-wallet: create_vesting, claim
  • Add ReentrancyDetected error variants to both contracts
  • Implement comprehensive test suites for reentrancy protection
  • Add documentation in REENTRANCY_GUARD.md

Resolves #424 (150 points)

Summary

Describe what changed and why.

Linked Issue

Closes #

Type of Change

  • feat
  • fix
  • docs
  • refactor
  • test
  • chore

Validation

  • Lint passed for affected area(s)
  • Tests passed for affected area(s)
  • Manual verification completed (if applicable)

Documentation

  • Documentation updated (or N/A with explanation)
  • Screenshots/videos attached for UI changes

Checklist

  • Branch name uses feat/, fix/, or docs/
  • Commit messages follow Conventional Commits
  • PR scope matches linked issue acceptance criteria

- Add shared reentrancy guard module using instance storage
- Protect crowdfund_vault: deposit, withdraw, refund_contributors
- Protect vesting-wallet: create_vesting, claim
- Add ReentrancyDetected error variants to both contracts
- Implement comprehensive test suites for reentrancy protection
- Add documentation in REENTRANCY_GUARD.md

Resolves Pulsefy#424 (150 points)
@drips-wave
Copy link
Copy Markdown

drips-wave bot commented Mar 24, 2026

@TheCreatorNode Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Cedarich
Copy link
Copy Markdown
Contributor

Please fix workflow

@TheCreatorNode
Copy link
Copy Markdown
Author

Please fix workflow

Working on it

- Changed &2000 to &1000 for amount and cliff_amount parameters
- Ensures consistency with other tests in the file
- Fixes test failure due to mismatched expected values
@Cedarich
Copy link
Copy Markdown
Contributor

Please resolve conflicts

@TheCreatorNode
Copy link
Copy Markdown
Author

@Cedarich Awaiting your review

@Cedarich
Copy link
Copy Markdown
Contributor

Please address failing workflow

@Cedarich
Copy link
Copy Markdown
Contributor

@TheCreatorNode fix clippy

- Install missing @nestjs/cache-manager and cache-manager dependencies
- Fix cache service async/await and return type issues
- Simplify cache module to use memory store
- All tests passing (130 tests)
- Build successful
- Lint passing
@TheCreatorNode
Copy link
Copy Markdown
Author

@TheCreatorNode fix clippy

awaiting your review

@Cedarich
Copy link
Copy Markdown
Contributor

Clippy check still failing

- Replace deprecated contractevent/topic system with env.events().publish()
- Fix all event calls to use function-based API instead of struct-based
- Remove testutils feature from production dependencies
- Update symbol_short usage across all contracts
- All contracts now build successfully for WASM target

The event system has been completely modernized to work with Soroban SDK 21.x
@TheCreatorNode
Copy link
Copy Markdown
Author

Clippy check still failing

resolved

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reentrancy Guard Hardening Across All Vaults

2 participants