Skip to content

Fix: Enable <18 Decimal Tokens as Collateral in Bonding Curve#435

Merged
Zitzak merged 12 commits intotemp_devfrom
weird-erc-tokens-test
Apr 9, 2024
Merged

Fix: Enable <18 Decimal Tokens as Collateral in Bonding Curve#435
Zitzak merged 12 commits intotemp_devfrom
weird-erc-tokens-test

Conversation

@0xNuggan
Copy link
Contributor

@0xNuggan 0xNuggan commented Apr 2, 2024

changes to core contracts:

  • padding the virtual collateral to have the same amount of decimals than the issued token.

main changes in tests:

  • bound the fuzzed input in a way that considers the decimals the token has so we avoid overflows when padding
  • use the padded version when we are directly calling the formula

some test are still failing because of excessive rejections
Comment on lines +460 to +463
// An input verification is needed here since the Bancor formula, which determines the
// issucance price, utilizes PPM for its computations. This leads to a precision loss
// that's too significant to be acceptable for tokens with fewer than 7 decimals.
if (_decimals < 7) {
if (_decimals < 7 || _decimals > collateralTokenDecimals) {
Copy link
Member

@marvinkruse marvinkruse Apr 2, 2024

Choose a reason for hiding this comment

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

Is this gonna be a problem for Tokens like USDC and Tether, as they are both 6 decimal tokens?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

You are of course completely right, this is what I get for rushing to quickly update the setter before the dev call 😆 It should be as mentioned in the interface. I pushed the fix

Copy link
Member

@marvinkruse marvinkruse Apr 2, 2024

Choose a reason for hiding this comment

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

Haha, all good! 😂
So the bonding curve (issuance) token decimals need to be at least 7 (for precision) and also need to be at least equal to the collateral tokens decimals, not lower, correct? That's how I understand the fix you pushed now, which looks good to me, just making sure.

Initially, I thought _decimals was for the collateral token, but it's for the issuance token, I think I get it now. Is there a good reason why someone would set the issuance tokens decimals to anything but 18? (just out of curiosity)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, exactly!
Personally, I can't think of a good reason to not have 18 decimals. But if we are going to "plug in" our bonding curve to an external token maybe that token had a good reason for it? So better to keep it open...


// Other constants.
uint8 private constant DECIMALS = 18;
//uint8 private constant DECIMALS = 18; //Question : Is there any reason to hardcode the decimals for this fundingmanager to 18?
Copy link
Member

@marvinkruse marvinkruse Apr 2, 2024

Choose a reason for hiding this comment

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

Is this for the collateral token or the issuance token? If it's for the collateral token, then it shouldn't be hardcoded, right?

edit: this might be for the issuance token as well, I think I initially misunderstood.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It's for the token that the bonding curve will issue. But I guess since we are going to make changes anyway for minting from an existing token, we shouldn't hardcode it

@0xNuggan
Copy link
Contributor Author

0xNuggan commented Apr 2, 2024

Thinking a bit more about what @marvinkruse said, we'll probably need to do similar checks for the issuance token once we allow using external contracts for it. But for now we can limit it to the collateral

@0xNuggan 0xNuggan changed the title Weird erc tokens test Make the Bonding Curve work with collateral tokens that have less than 18 decimals Apr 3, 2024
@0xNuggan 0xNuggan marked this pull request as ready for review April 3, 2024 10:55
@0xNuggan 0xNuggan requested a review from Zitzak April 3, 2024 10:55
_addVirtualCollateralAmount(_depositAmount - feeAmount);
uint normalizedDepositAmount = _convertAmountToRequiredDecimal(
(_depositAmount - feeAmount),
collateralTokenDecimals,
Copy link
Collaborator

Choose a reason for hiding this comment

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

As the amounts now get normalized to 18 decimals, if we indeed use for example USDC with 6 decimals as collateral, and a UI would like to get the virtual supply, don't they get this now in 18 decimals. So the dAPP interfacing with the contract has to know to calculate the value back to it's orginal decimals like this right?

Maybe it makes more sense to always convert it back to the original decimals, i.e. in my example this would be 6. Wdyt @0xNuggan

fundingManager.sell(
fundingManager.balanceOf(bob), fundingManager.balanceOf(bob)
fundingManager.balanceOf(bob),
fundingManager.balanceOf(bob) // Question: What happens with the fee? Shouldn't the amounts be wildly different since they are different tokens?
Copy link
Collaborator

Choose a reason for hiding this comment

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

Unsure what is meant by the questions. Could you elaborate pls.

supply/collateral of 1/1, the first buy will move the price by a lot, since we will be effectively depositing 1e12 collateral tokens (1 + padding to 18).
This will exceed the delta by a lot, but it IS expected behavior.
If we set the initial supply to 1e18 and the initial collateral t 1e12 (what we can call "realistic values"), the delta holds again. But on the ohter hand, we
aren't testing on the empty curve, just a "normal" point in it.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Personally I would go with testing for realistic values. The BCRG is also building a simulation tool which will also (I think) help with defining the edge cases which we should then warn the user for

Copy link
Collaborator

@Zitzak Zitzak left a comment

Choose a reason for hiding this comment

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

Only thing I found is the questions around always normalizing it, and how we should handle it for when the virtual supply is retrieved.

modified the getVirtual... functions to return the value in the native decimal amount instead of the normalized one and added some tests
@0xNuggan
Copy link
Contributor Author

0xNuggan commented Apr 3, 2024

After a talk with @Zitzak we decided that external facing function should return the collateral and supply values in the native decimals, instead of the normalized ones. I've changed that and added some tests

this should help set stuff up for external BC tokens
@marvinkruse marvinkruse changed the title Make the Bonding Curve work with collateral tokens that have less than 18 decimals Fix: Make Bonding Curve work with collateral tokens with less than 18 decimals Apr 4, 2024
@marvinkruse marvinkruse changed the title Fix: Make Bonding Curve work with collateral tokens with less than 18 decimals Fix: Enable <18 decimal tokens as collateral in Bonding Curve Apr 4, 2024
@marvinkruse marvinkruse changed the title Fix: Enable <18 decimal tokens as collateral in Bonding Curve Fix: Enable <18 Decimal Tokens as Collateral in Bonding Curve Apr 4, 2024
0xNuggan added 5 commits April 5, 2024 10:27
Ended up moving the place where the decimals get converted, and adapted all tests
the online editor merge messed the format up
@Zitzak Zitzak requested review from Zitzak and marvinkruse April 5, 2024 10:08
Copy link
Collaborator

@Zitzak Zitzak left a comment

Choose a reason for hiding this comment

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

LGTM 🚀

@0xNuggan
Copy link
Contributor Author

0xNuggan commented Apr 8, 2024

@marvinkruse do you think we can merge this?

Copy link
Member

@marvinkruse marvinkruse left a comment

Choose a reason for hiding this comment

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

lgtm as well! @0xNuggan

@Zitzak Zitzak merged commit ae010a6 into temp_dev Apr 9, 2024
@Zitzak Zitzak deleted the weird-erc-tokens-test branch April 9, 2024 12:50
marvinkruse pushed a commit that referenced this pull request Apr 12, 2024
* change decimals to 6

* working draft

some test are still failing because of excessive rejections

* formatting

* bugfix

* fix vm.assume rejections

* review fixes

modified the getVirtual... functions to return the value in the native decimal amount instead of the normalized one and added some tests

* add normalization to virtualSupply

this should help set stuff up for external BC tokens

* changes after discussion with marvin + corresponding tests

Ended up moving the place where the decimals get converted, and adapted all tests

* remove remaining question

* format

the online editor merge messed the format up

* remove stray comments
marvinkruse added a commit that referenced this pull request Apr 14, 2024
* [DO NOT MERGE] OpenZeppelin V5 update (#401)

* chore: update OZ lib to V5

* chore: update openzeppelin to v5

- updated paths were needed
- added constructor arguments for Ownable update
- updated OZErrors and the expectRevert that were using them to work with
custom errors
- replaces Address.isContract with the logic it used, as it has been removed

* chore: update Solidity version 0.8.19 -> 0.8.20

* format: format code

* chore: fix CI and update version

The CI failed because of imports, which are now corrected.

Next to this we decided to set the Solidity version to 0.8.23 because
it will be more up-to-date when we launch to mainnet

* Delete .gas-snapshot

* Update .gitignore

* Change TestsupportsInterface to only check immediate Iterfaces

---------

Co-authored-by: hieser <47272854+FHieser@users.noreply.github.com>
Co-authored-by: FHieser <felix_hieser@web.de>

* chore: update CI to include testing scripts

* Update ci.yml (#421)

* fix: solved address collition in bc test

* SC-122: Implement MultiCall and MetaTransaction Support (#405)

* chore: update OZ lib to V5

* chore: update openzeppelin to v5

- updated paths were needed
- added constructor arguments for Ownable update
- updated OZErrors and the expectRevert that were using them to work with
custom errors
- replaces Address.isContract with the logic it used, as it has been removed

* chore: update Solidity version 0.8.19 -> 0.8.20

* format: format code

* 394 metatransactions dev (#399)

* Modify ModuleManager to enact ERC2771

* Intermediate Push

I need to check something and pushing makes most sense he

* Fix inheritance to enable build

* Expose isTrustedForwarder in Orchestrator

* Implement modified ERC2771 to Module

* Fix Tests

A lot of modules havent  been properly initialized in the tests. The fix targets that by actually using the proxy Clone implementation and then properly  initializing them

* Add Module Test

* Implement MinimalForwarder

* Fix MakeFile

* Create E2ETest

* Add specific Role section in E2E Test

* Remove todo

* Marvin G Fix

* Foundryup formatting

* Fix after openZepplelin Update

* Create Transaction forwarder

* Update IModule.sol

* Change to Transaction forwarder

* chore: fix CI and update version

The CI failed because of imports, which are now corrected.

Next to this we decided to set the Solidity version to 0.8.23 because
it will be more up-to-date when we launch to mainnet

* WIP

* Fixing tests

* Cleanup

* Add Multicall Section into E2ETest

* Cleanup

* Merge fix

* Fix based on comments

* Delete .gas-snapshot

* Update .gitignore

* Change TestsupportsInterface to only check immediate Iterfaces

* Fix merge

* Create DeployAndSetUpTransactionForwarder.s.sol

* Add Transaction Forwarder Script to deployment scripts

---------

Co-authored-by: Zitzak <marvin88gr@gmail.com>

* SC-140: Implement version and intervention mechanism in beacon (#418)

* Rename Contracts

* Refactor Beacons and add Version function

* Make it buildable

* Fix test

* Cleanup

* Update InverterBeacon.t.sol

* Update InverterBeacon.t.sol

* add BeaconProxy Test

* Clarify Outcommented

* Fix Beacon Upgrade Script

* Update UpgradeBeacon.s.sol

* Add Intervention Mechanism to InverterBeacon

* Make it buildable

* PR comment fix

* Add tests

* Add Interface

* Cleanup

* Move and update Beacon e2e

* Update InverterBeaconE2E.t.sol

* Cleanup

* Adapt naming

* Fix after merge

* Fix ModuleTest bug

* Create digest helper function for meta tx forwarder (#430)

* Create digest creation function

* Cleanup

* Add getDigest Test

* add _ to getStructHash()

* Update deployment metadata

* typo fixes

* format + change active addresses

* Fix: Revamp scripts & re-add to CI (#419)

* Fix: Workflow File Syntax

* Chore: Update VSCode settings

- Adding the git.detectSubmodule setting to the config. This tells your local VSCode to ignore the submodules in the "git" tab. Which makes it a bit easier to work with, as we will only touch the submodules via forge commands anyways.
- Update remote compiler version to 0.8.23 as well (just in case)

* Chore: Add install cmd to Makefile

* Fix: Old Wording in Makefile

* Add basic run functions

* Update ci.yml

* Swap scripts to higher position

* Update ci.yml

* Test removing the override of the clean command

* Split make pre-test into pre-test and pre-script

* Update Makefile

* Update Env Variables in make file

* Fix typo

* Quick test

* Revert "Quick test"

This reverts commit 192f71e.

* Change comments

* Update ci.yml to source the env from dev.env

* Test if set dev command was wrong

* Update ci.yml

* Update ci.yml

* Test setting env in make file directly

* Load directly from the dev.env file

* Create DeployRecurringPaymentManager.s.sol

* Simplify Transaction Forwarder Script

* Update DeployAndSetUpBeacon.s.sol

* Fix comments

* Update DeploymentScript.s.sol

Add missing scripts and todo comments for @Zitzak

* fix: DeploymentScript

* Remove Beacon from Factories

* Small Fixes

* Fix merge

* Remove todos

* Update ci.yml

* Revert removal of make clean

* Change metadata

* Fix: Clarify comment

* Chore: Update yml file to use make commands

* Tests: Add check for bc funding manager in tests

---------

Co-authored-by: FHieser <felix_hieser@web.de>
Co-authored-by: hieser <47272854+FHieser@users.noreply.github.com>
Co-authored-by: Zitzak <marvin88gr@gmail.com>

* CI: Enable CI on certain Branches & all PRs

* Fix: Enable <18 Decimal Tokens as Collateral in Bonding Curve (#435)

* change decimals to 6

* working draft

some test are still failing because of excessive rejections

* formatting

* bugfix

* fix vm.assume rejections

* review fixes

modified the getVirtual... functions to return the value in the native decimal amount instead of the normalized one and added some tests

* add normalization to virtualSupply

this should help set stuff up for external BC tokens

* changes after discussion with marvin + corresponding tests

Ended up moving the place where the decimals get converted, and adapted all tests

* remove remaining question

* format

the online editor merge messed the format up

* remove stray comments

* Feat: Add Governance Contract (#436)

* Create IGovernanceContract.sol

* Create GovernanceContract.sol

* Add Natspec

* Refactoring and improvements

* Create Tests

* Add more detail to test

* Add Governance to dev.env

* Update ModuleFactoryMock.sol

* Update ModuleFactory.t.sol

* Remove comment

* Remove comments

* Update Module Factory to check for governanceContract ownership

* Add Governance to E2ETests

* Update InverterBeaconE2E.t.sol

* Delete ModuleTest_Template.txt

* Fix Tests

* Fix to a buildable state in scripts

* Create DeployGovernanceContract.s.sol

* Fix description

* Remove validNewVersion and add setImplementation in Constructor

* Update Makefile

* Fix typo

* Update DeploymentScript.s.sol

* Rename to governor contract

* Correct error naming and set minimum Timelock Period to 48h

* Revert "Delete ModuleTest_Template.txt"

This reverts commit a62d07c.

* Fix based on recommondations

* Test for beacon not owned by Governor

* Make Governance Implementation a proxy in scripts and e2e

* accessible instead of accessable

* Fix typos

* Adapt naming

* Adapt naming

* Change naming

* Adapt naming

* Remove Ownable dependency

* Use AccessControlUpgradeable instead of AccessControl

* Adapt naming

* Forgot the R in Governor

* Fix inheritance

* Remove beacon implementation assumption

* update _contextSuffixLength

* Remove test for empty beacon implementation

* Let Module inherit from ERC2771ContextUpgradeable

* Fix init in Module test

* Fix tests

* Add batched role grant/revoke (#444)

* Add batched functions

* Clean up AuthorizerMock

* Update tests

* Feat: Allow zero minor version for first implementation (#446)

* Feat: Allow minor version to be zero

Note: Only possible during intialization, which is why the
modifier (used for any subsequent version) only allows
versions greater than zero/the last version.

* Test: Adapt tests to cover zero version flow

* Test: Change tests to all start at minor version zero

* Scripts: Change deployment scripts to start with minor version zero

* Feat: Allow minor version to be zero

Note: Only possible during intialization, which is why the
modifier (used for any subsequent version) only allows
versions greater than zero/the last version.

* Test: Adapt tests to cover zero version flow

* Test: Change tests to all start at minor version zero

* Scripts: Change deployment scripts to start with minor version zero

* [DO NOT MERGE] OpenZeppelin V5 update (#401)

* chore: update OZ lib to V5

* chore: update openzeppelin to v5

- updated paths were needed
- added constructor arguments for Ownable update
- updated OZErrors and the expectRevert that were using them to work with
custom errors
- replaces Address.isContract with the logic it used, as it has been removed

* chore: update Solidity version 0.8.19 -> 0.8.20

* format: format code

* chore: fix CI and update version

The CI failed because of imports, which are now corrected.

Next to this we decided to set the Solidity version to 0.8.23 because
it will be more up-to-date when we launch to mainnet

* Delete .gas-snapshot

* Update .gitignore

* Change TestsupportsInterface to only check immediate Iterfaces

---------

Co-authored-by: hieser <47272854+FHieser@users.noreply.github.com>
Co-authored-by: FHieser <felix_hieser@web.de>

* chore: update CI to include testing scripts

* Update ci.yml (#421)

* SC-122: Implement MultiCall and MetaTransaction Support (#405)

* chore: update OZ lib to V5

* chore: update openzeppelin to v5

- updated paths were needed
- added constructor arguments for Ownable update
- updated OZErrors and the expectRevert that were using them to work with
custom errors
- replaces Address.isContract with the logic it used, as it has been removed

* chore: update Solidity version 0.8.19 -> 0.8.20

* format: format code

* 394 metatransactions dev (#399)

* Modify ModuleManager to enact ERC2771

* Intermediate Push

I need to check something and pushing makes most sense he

* Fix inheritance to enable build

* Expose isTrustedForwarder in Orchestrator

* Implement modified ERC2771 to Module

* Fix Tests

A lot of modules havent  been properly initialized in the tests. The fix targets that by actually using the proxy Clone implementation and then properly  initializing them

* Add Module Test

* Implement MinimalForwarder

* Fix MakeFile

* Create E2ETest

* Add specific Role section in E2E Test

* Remove todo

* Marvin G Fix

* Foundryup formatting

* Fix after openZepplelin Update

* Create Transaction forwarder

* Update IModule.sol

* Change to Transaction forwarder

* chore: fix CI and update version

The CI failed because of imports, which are now corrected.

Next to this we decided to set the Solidity version to 0.8.23 because
it will be more up-to-date when we launch to mainnet

* WIP

* Fixing tests

* Cleanup

* Add Multicall Section into E2ETest

* Cleanup

* Merge fix

* Fix based on comments

* Delete .gas-snapshot

* Update .gitignore

* Change TestsupportsInterface to only check immediate Iterfaces

* Fix merge

* Create DeployAndSetUpTransactionForwarder.s.sol

* Add Transaction Forwarder Script to deployment scripts

---------

Co-authored-by: Zitzak <marvin88gr@gmail.com>

* SC-140: Implement version and intervention mechanism in beacon (#418)

* Rename Contracts

* Refactor Beacons and add Version function

* Make it buildable

* Fix test

* Cleanup

* Update InverterBeacon.t.sol

* Update InverterBeacon.t.sol

* add BeaconProxy Test

* Clarify Outcommented

* Fix Beacon Upgrade Script

* Update UpgradeBeacon.s.sol

* Add Intervention Mechanism to InverterBeacon

* Make it buildable

* PR comment fix

* Add tests

* Add Interface

* Cleanup

* Move and update Beacon e2e

* Update InverterBeaconE2E.t.sol

* Cleanup

* Adapt naming

* Fix after merge

* Fix ModuleTest bug

* Create digest helper function for meta tx forwarder (#430)

* Create digest creation function

* Cleanup

* Add getDigest Test

* add _ to getStructHash()

* Update deployment metadata

* typo fixes

* format + change active addresses

* Fix: Revamp scripts & re-add to CI (#419)

* Fix: Workflow File Syntax

* Chore: Update VSCode settings

- Adding the git.detectSubmodule setting to the config. This tells your local VSCode to ignore the submodules in the "git" tab. Which makes it a bit easier to work with, as we will only touch the submodules via forge commands anyways.
- Update remote compiler version to 0.8.23 as well (just in case)

* Chore: Add install cmd to Makefile

* Fix: Old Wording in Makefile

* Add basic run functions

* Update ci.yml

* Swap scripts to higher position

* Update ci.yml

* Test removing the override of the clean command

* Split make pre-test into pre-test and pre-script

* Update Makefile

* Update Env Variables in make file

* Fix typo

* Quick test

* Revert "Quick test"

This reverts commit 192f71e.

* Change comments

* Update ci.yml to source the env from dev.env

* Test if set dev command was wrong

* Update ci.yml

* Update ci.yml

* Test setting env in make file directly

* Load directly from the dev.env file

* Create DeployRecurringPaymentManager.s.sol

* Simplify Transaction Forwarder Script

* Update DeployAndSetUpBeacon.s.sol

* Fix comments

* Update DeploymentScript.s.sol

Add missing scripts and todo comments for @Zitzak

* fix: DeploymentScript

* Remove Beacon from Factories

* Small Fixes

* Fix merge

* Remove todos

* Update ci.yml

* Revert removal of make clean

* Change metadata

* Fix: Clarify comment

* Chore: Update yml file to use make commands

* Tests: Add check for bc funding manager in tests

---------

Co-authored-by: FHieser <felix_hieser@web.de>
Co-authored-by: hieser <47272854+FHieser@users.noreply.github.com>
Co-authored-by: Zitzak <marvin88gr@gmail.com>

* CI: Enable CI on certain Branches & all PRs

* Fix: Enable <18 Decimal Tokens as Collateral in Bonding Curve (#435)

* change decimals to 6

* working draft

some test are still failing because of excessive rejections

* formatting

* bugfix

* fix vm.assume rejections

* review fixes

modified the getVirtual... functions to return the value in the native decimal amount instead of the normalized one and added some tests

* add normalization to virtualSupply

this should help set stuff up for external BC tokens

* changes after discussion with marvin + corresponding tests

Ended up moving the place where the decimals get converted, and adapted all tests

* remove remaining question

* format

the online editor merge messed the format up

* remove stray comments

* Feat: Add Governance Contract (#436)

* Create IGovernanceContract.sol

* Create GovernanceContract.sol

* Add Natspec

* Refactoring and improvements

* Create Tests

* Add more detail to test

* Add Governance to dev.env

* Update ModuleFactoryMock.sol

* Update ModuleFactory.t.sol

* Remove comment

* Remove comments

* Update Module Factory to check for governanceContract ownership

* Add Governance to E2ETests

* Update InverterBeaconE2E.t.sol

* Delete ModuleTest_Template.txt

* Fix Tests

* Fix to a buildable state in scripts

* Create DeployGovernanceContract.s.sol

* Fix description

* Remove validNewVersion and add setImplementation in Constructor

* Update Makefile

* Fix typo

* Update DeploymentScript.s.sol

* Rename to governor contract

* Correct error naming and set minimum Timelock Period to 48h

* Revert "Delete ModuleTest_Template.txt"

This reverts commit a62d07c.

* Fix based on recommondations

* Test for beacon not owned by Governor

* Make Governance Implementation a proxy in scripts and e2e

* accessible instead of accessable

* Fix typos

* Adapt naming

* Adapt naming

* Change naming

* Adapt naming

* Remove Ownable dependency

* Use AccessControlUpgradeable instead of AccessControl

* Adapt naming

* Forgot the R in Governor

* Add batched role grant/revoke (#444)

* Add batched functions

* Clean up AuthorizerMock

* Update tests

* Feat: Allow zero minor version for first implementation (#446)

* Feat: Allow minor version to be zero

Note: Only possible during intialization, which is why the
modifier (used for any subsequent version) only allows
versions greater than zero/the last version.

* Test: Adapt tests to cover zero version flow

* Test: Change tests to all start at minor version zero

* Scripts: Change deployment scripts to start with minor version zero

* Feat: Allow minor version to be zero

Note: Only possible during intialization, which is why the
modifier (used for any subsequent version) only allows
versions greater than zero/the last version.

* Test: Adapt tests to cover zero version flow

* Test: Change tests to all start at minor version zero

* Scripts: Change deployment scripts to start with minor version zero

* [DO NOT MERGE] OpenZeppelin V5 update (#401)

* chore: update OZ lib to V5

* chore: update openzeppelin to v5

- updated paths were needed
- added constructor arguments for Ownable update
- updated OZErrors and the expectRevert that were using them to work with
custom errors
- replaces Address.isContract with the logic it used, as it has been removed

* chore: update Solidity version 0.8.19 -> 0.8.20

* format: format code

* chore: fix CI and update version

The CI failed because of imports, which are now corrected.

Next to this we decided to set the Solidity version to 0.8.23 because
it will be more up-to-date when we launch to mainnet

* Delete .gas-snapshot

* Update .gitignore

* Change TestsupportsInterface to only check immediate Iterfaces

---------

Co-authored-by: hieser <47272854+FHieser@users.noreply.github.com>
Co-authored-by: FHieser <felix_hieser@web.de>

* chore: update CI to include testing scripts

* Update ci.yml (#421)

* SC-122: Implement MultiCall and MetaTransaction Support (#405)

* chore: update OZ lib to V5

* chore: update openzeppelin to v5

- updated paths were needed
- added constructor arguments for Ownable update
- updated OZErrors and the expectRevert that were using them to work with
custom errors
- replaces Address.isContract with the logic it used, as it has been removed

* chore: update Solidity version 0.8.19 -> 0.8.20

* format: format code

* 394 metatransactions dev (#399)

* Modify ModuleManager to enact ERC2771

* Intermediate Push

I need to check something and pushing makes most sense he

* Fix inheritance to enable build

* Expose isTrustedForwarder in Orchestrator

* Implement modified ERC2771 to Module

* Fix Tests

A lot of modules havent  been properly initialized in the tests. The fix targets that by actually using the proxy Clone implementation and then properly  initializing them

* Add Module Test

* Implement MinimalForwarder

* Fix MakeFile

* Create E2ETest

* Add specific Role section in E2E Test

* Remove todo

* Marvin G Fix

* Foundryup formatting

* Fix after openZepplelin Update

* Create Transaction forwarder

* Update IModule.sol

* Change to Transaction forwarder

* chore: fix CI and update version

The CI failed because of imports, which are now corrected.

Next to this we decided to set the Solidity version to 0.8.23 because
it will be more up-to-date when we launch to mainnet

* WIP

* Fixing tests

* Cleanup

* Add Multicall Section into E2ETest

* Cleanup

* Merge fix

* Fix based on comments

* Delete .gas-snapshot

* Update .gitignore

* Change TestsupportsInterface to only check immediate Iterfaces

* Fix merge

* Create DeployAndSetUpTransactionForwarder.s.sol

* Add Transaction Forwarder Script to deployment scripts

---------

Co-authored-by: Zitzak <marvin88gr@gmail.com>

* SC-140: Implement version and intervention mechanism in beacon (#418)

* Rename Contracts

* Refactor Beacons and add Version function

* Make it buildable

* Fix test

* Cleanup

* Update InverterBeacon.t.sol

* Update InverterBeacon.t.sol

* add BeaconProxy Test

* Clarify Outcommented

* Fix Beacon Upgrade Script

* Update UpgradeBeacon.s.sol

* Add Intervention Mechanism to InverterBeacon

* Make it buildable

* PR comment fix

* Add tests

* Add Interface

* Cleanup

* Move and update Beacon e2e

* Update InverterBeaconE2E.t.sol

* Cleanup

* Adapt naming

* Fix after merge

* Create digest helper function for meta tx forwarder (#430)

* Create digest creation function

* Cleanup

* Add getDigest Test

* add _ to getStructHash()

* typo fixes

* format + change active addresses

* Fix: Revamp scripts & re-add to CI (#419)

* Fix: Workflow File Syntax

* Chore: Update VSCode settings

- Adding the git.detectSubmodule setting to the config. This tells your local VSCode to ignore the submodules in the "git" tab. Which makes it a bit easier to work with, as we will only touch the submodules via forge commands anyways.
- Update remote compiler version to 0.8.23 as well (just in case)

* Chore: Add install cmd to Makefile

* Fix: Old Wording in Makefile

* Add basic run functions

* Update ci.yml

* Swap scripts to higher position

* Update ci.yml

* Test removing the override of the clean command

* Split make pre-test into pre-test and pre-script

* Update Makefile

* Update Env Variables in make file

* Fix typo

* Quick test

* Revert "Quick test"

This reverts commit 192f71e.

* Change comments

* Update ci.yml to source the env from dev.env

* Test if set dev command was wrong

* Update ci.yml

* Update ci.yml

* Test setting env in make file directly

* Load directly from the dev.env file

* Create DeployRecurringPaymentManager.s.sol

* Simplify Transaction Forwarder Script

* Update DeployAndSetUpBeacon.s.sol

* Fix comments

* Update DeploymentScript.s.sol

Add missing scripts and todo comments for @Zitzak

* fix: DeploymentScript

* Remove Beacon from Factories

* Small Fixes

* Fix merge

* Remove todos

* Update ci.yml

* Revert removal of make clean

* Change metadata

* Fix: Clarify comment

* Chore: Update yml file to use make commands

* Tests: Add check for bc funding manager in tests

---------

Co-authored-by: FHieser <felix_hieser@web.de>
Co-authored-by: hieser <47272854+FHieser@users.noreply.github.com>
Co-authored-by: Zitzak <marvin88gr@gmail.com>

* Feat: Add Governance Contract (#436)

* Create IGovernanceContract.sol

* Create GovernanceContract.sol

* Add Natspec

* Refactoring and improvements

* Create Tests

* Add more detail to test

* Add Governance to dev.env

* Update ModuleFactoryMock.sol

* Update ModuleFactory.t.sol

* Remove comment

* Remove comments

* Update Module Factory to check for governanceContract ownership

* Add Governance to E2ETests

* Update InverterBeaconE2E.t.sol

* Delete ModuleTest_Template.txt

* Fix Tests

* Fix to a buildable state in scripts

* Create DeployGovernanceContract.s.sol

* Fix description

* Remove validNewVersion and add setImplementation in Constructor

* Update Makefile

* Fix typo

* Update DeploymentScript.s.sol

* Rename to governor contract

* Correct error naming and set minimum Timelock Period to 48h

* Revert "Delete ModuleTest_Template.txt"

This reverts commit a62d07c.

* Fix based on recommondations

* Test for beacon not owned by Governor

* Make Governance Implementation a proxy in scripts and e2e

* accessible instead of accessable

* Fix typos

* Adapt naming

* Adapt naming

* Change naming

* Adapt naming

* Remove Ownable dependency

* Use AccessControlUpgradeable instead of AccessControl

* Adapt naming

* Forgot the R in Governor

* FIx: Merge conflicts

* Fix merge issue: Reworked deployment script

* Fix Merge issue: ERC2771ContextUpgradeable Inheritance

* Fix scripts on a basic level

* Add to make scripts and reorder scripts

* cleanup

* Fix: Remove hardcoded decimals from RebasingFM tests

---------

Co-authored-by: Marvin <43185740+Zitzak@users.noreply.github.com>
Co-authored-by: hieser <47272854+FHieser@users.noreply.github.com>
Co-authored-by: FHieser <felix_hieser@web.de>
Co-authored-by: Zitzak <marvin88gr@gmail.com>
Co-authored-by: 0xNuggan <82726722+0xNuggan@users.noreply.github.com>
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