Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat surplus invariant #785

Merged
merged 6 commits into from
Mar 8, 2024
Merged

Conversation

GalloDaSballo
Copy link
Collaborator

@GalloDaSballo GalloDaSballo commented Feb 28, 2024

  • TODO - Let it cook

Summary by CodeRabbit

  • New Features

    • Introduced GitHub Actions workflow for invariant testing.
    • Added Chainlink Adapter contract for fetching and converting Chainlink oracle price data.
    • Implemented new EbtcFeed contract for mainnet price feed connectivity.
    • New contracts and interfaces for enhanced TWAP (Time-Weighted Average Price) calculations and CDP (Collateralized Debt Position) management.
    • Expanded test suite with ActivePoolTwapAccTest for TWAP functionality testing and various other test enhancements for contract functionality verification.
  • Enhancements

    • Updated contracts with new dependencies and logic for improved system debt handling, liquidation functions, redemption logic, and collateral surplus handling.
    • Enhanced price feed functionality with multiple feed types and error handling.
    • Improved governance contracts with refined loop conditions and additional checks for setting fee recipient addresses.
  • Bug Fixes

    • Adjusted contract logic to handle overflow conditions and ensure accurate TWAP calculations.
    • Fixed issues in CDP management logic, including liquidation and collateral handling.
  • Documentation

    • Updated .gitignore entries for better management of local deployment outputs and directories.
  • Refactor

    • Consolidated and optimized contract logic for better efficiency and readability.
    • Refined interfaces and data structures for clearer contract interactions and functionality.
  • Tests

    • Significantly expanded testing framework for contracts, including new scenarios for price feeds, CDP management, and TWAP functionality.
    • Introduced new test contracts for specific functionality verification and error scenario testing.

@GalloDaSballo GalloDaSballo changed the base branch from main to release-0.7 February 28, 2024 19:46
@getrecon-bot
Copy link

Job ID b0650327-5f80-4fae-895b-ffef52f9ba05
Command yarn && git submodule init && git submodule update && solc-select use 0.8.17 && cd packages/contracts/ && yarn echidna --test-mode assertion --test-limit 300000
Instance ID i-07743b559921a0498
Instance Type c5.2xlarge
Status Started
Elapsed

@getrecon-bot
Copy link

Job ID b0650327-5f80-4fae-895b-ffef52f9ba05
Command yarn && git submodule init && git submodule update && solc-select use 0.8.17 && cd packages/contracts/ && yarn echidna --test-mode assertion --test-limit 300000
Instance ID i-07743b559921a0498
Instance Type c5.2xlarge
Status Running
Elapsed 42 seconds

@getrecon-bot
Copy link

Job ID b0650327-5f80-4fae-895b-ffef52f9ba05
Command yarn && git submodule init && git submodule update && solc-select use 0.8.17 && cd packages/contracts/ && yarn echidna --test-mode assertion --test-limit 300000
Instance ID i-07743b559921a0498
Instance Type c5.2xlarge
Status Running
Elapsed 43 seconds

Copy link
Contributor

coderabbitai bot commented Feb 28, 2024

Walkthrough

The recent updates bring a holistic transformation to the contract ecosystem, emphasizing TWAP integration, CDP management refinement, and enhanced price feed mechanisms using Chainlink adapters. Governance processes are streamlined, debt and collateral handling is refined, and system robustness is fortified through mathematical safeguards and improved testing frameworks. These changes aim to elevate system integrity, efficiency, and user experience.

Changes

Files Change Summary
.github/workflows/invariant-test.yml Introduced invariant-test GitHub Actions workflow.
packages/contracts/.gitignore Updated to ignore new files and directories.
packages/contracts/contracts/... Integrated TwapWeightedObserver, EbtcMath, and adjusted contract logic and dependencies.
packages/contracts/contracts/Dependencies/... Added new functions, constants, and refined authority handling.
packages/contracts/contracts/Interfaces/... Updated interfaces with new functions and events while removing outdated ones.
packages/contracts/contracts/TestContracts/... Enhanced testing contracts with new logic, functions, and invariants for robust testing.
packages/contracts/foundry_test/... Adjusted and removed tests reflecting changes in governance, TWAP calculations, and contract operations.

"In the code's woven warren, rabbits toil with care,
Twap and Chainlink blend, a magic rare.
Through contracts' maze, with math as guide,
They refine, test, and tweak, with pride.
🌟 To solidity and beyond, our changes soar,
A leap towards perfection, forever more."
🐰✨

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share

Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit-tests for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit tests for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit tests.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • The JSON schema for the configuration file is available here.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/coderabbit-overrides.v2.json

CodeRabbit Discord Community

Join our Discord Community to get help, request features, and share feedback.

@getrecon-bot
Copy link

Job ID b0650327-5f80-4fae-895b-ffef52f9ba05
Command yarn && git submodule init && git submodule update && solc-select use 0.8.17 && cd packages/contracts/ && yarn echidna --test-mode assertion --test-limit 300000
Instance ID i-07743b559921a0498
Instance Type c5.2xlarge
Status Error
Elapsed 1 day 2 hours 30 minutes 58 seconds

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Status

Actionable comments generated: 4

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between c49e5f1 and b322029.
Files selected for processing (2)
  • packages/contracts/contracts/TestContracts/invariants/TargetFunctions.sol (3 hunks)
  • packages/contracts/foundry_test/EchidnaToFoundry.t.sol (4 hunks)
Files skipped from review as they are similar to previous changes (1)
  • packages/contracts/contracts/TestContracts/invariants/TargetFunctions.sol
Additional comments: 1
packages/contracts/foundry_test/EchidnaToFoundry.t.sol (1)
  • 1678-1693: The new test function test_debugTheLiquidation is added for liquidation testing. Ensure that this test covers all necessary scenarios and edge cases for liquidation. It's also important to verify that the test does not expose any sensitive information or interact with real assets in a way that could be harmful if executed in a live environment.

@dapp-whisperer dapp-whisperer changed the base branch from release-0.7 to release-0.8 March 6, 2024 18:21
@dapp-whisperer dapp-whisperer changed the base branch from release-0.8 to feat/flashloanFeeLoss March 6, 2024 18:27
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Status

Actionable comments generated: 1

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between b322029 and 2b46535.
Files selected for processing (1)
  • packages/contracts/foundry_test/EchidnaToFoundry.t.sol (3 hunks)
Additional comments: 3
packages/contracts/foundry_test/EchidnaToFoundry.t.sol (3)
  • 28-31: The logic in the setup modifier for determining the actor based on the sender is a clever way to introduce variability in the test setup. However, ensure that the use of msg.sender in this context aligns with the intended test scenarios, as msg.sender might not vary in a predictable manner across test runs.
  • 37-37: The assignment of actor in the setUp function to use the address of USER1 directly simplifies the actor setup for tests. This change seems to focus the test scenarios on a specific user context, which could be beneficial for targeted testing but might reduce the breadth of test coverage. Consider if additional variability in actor setup is needed for comprehensive testing.
  • 250-265: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [229-262]

Adding logging of prices and shares in the _logStakes function enhances the visibility into test execution, which is crucial for debugging and understanding test outcomes. Ensure that the added logging statements provide sufficient detail and consider if any other key data points should be logged for a comprehensive understanding of the test state.

Comment on lines 25 to 40
{
modifier setup() override {
_;
address sender = uint160(msg.sender) % 3 == 0 ? address(USER1) : uint160(msg.sender) % 3 == 1
? address(USER2)
: address(USER3);
actor = actors[sender];
}

function setUp() public {
_setUp();
_setUpActors();
actor = actors[USER1];
vm.startPrank(address(actor));
actor = actors[address(USER1)];
}

function _checkTotals() internal {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [663-663]

AWS Access Key ID values detected in comments. Storing sensitive credentials, even in comments, poses a security risk. It's recommended to remove or obfuscate these values and ensure they are securely managed outside the codebase, such as through environment variables or secure secrets management solutions.

Also applies to: 694-694, 724-724, 942-942

@dapp-whisperer dapp-whisperer merged commit ef4f90d into feat/flashloanFeeLoss Mar 8, 2024
5 checks passed
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.

3 participants