Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable
[submodule "lib/bread-token-v2"]
path = lib/bread-token-v2
url = git@github.com:BreadchainCoop/bread-token-v2.git
url = https://github.com/BreadchainCoop/bread.git
[submodule "lib/openzeppelin-foundry-upgrades"]
path = lib/openzeppelin-foundry-upgrades
url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades
9 changes: 3 additions & 6 deletions remappings.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
bread-token/=lib/bread-token-v2/
forge-std/=lib/forge-std/src/
openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
openzeppelin-contracts/=lib/openzeppelin-contracts/
lib/openzeppelin-contracts:@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
lib/openzeppelin-contracts-upgradeable:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
lib/openzeppelin-contracts-upgradeable:@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/
@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/
2 changes: 1 addition & 1 deletion script/deploy/DeployButteredBread.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ pragma solidity ^0.8.25;
import "forge-std/Script.sol";
import "forge-std/StdJson.sol";
import "forge-std/console.sol";
import "openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import {GNOSIS_BREAD} from "script/Constants.s.sol";
import {ButteredBread, IButteredBread} from "src/ButteredBread.sol";

Expand Down
2 changes: 1 addition & 1 deletion script/deploy/DeployVotingStreakMultiplier.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
import "forge-std/Script.sol";
import "forge-std/StdJson.sol";
import "forge-std/console.sol";
import "openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";

import {VotingStreakMultiplier} from "../../src/multipliers/VotingStreakMultiplier.sol";

Expand Down
4 changes: 2 additions & 2 deletions script/deploy/DeployYieldDistributor.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ pragma solidity ^0.8.20;
import "forge-std/Script.sol";
import "forge-std/StdJson.sol";
import "forge-std/console.sol";
import "openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import "openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol";
import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";

import {YieldDistributor} from "../../src/YieldDistributor.sol";

Expand Down
16 changes: 9 additions & 7 deletions src/ButteredBread.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@
pragma solidity 0.8.25;

import {ERC20VotesUpgradeable} from
"openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20VotesUpgradeable.sol";
"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol";
import {EIP712Upgradeable} from "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol";
import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {ReentrancyGuardUpgradeable} from
"openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol";
"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";

import {IButteredBread} from "src/interfaces/IButteredBread.sol";
import {IERC20Votes} from "src/interfaces/IERC20Votes.sol";
Expand Down Expand Up @@ -47,9 +48,10 @@ contract ButteredBread is IButteredBread, ERC20VotesUpgradeable, Ownable2StepUpg
if (_initData.liquidityPools.length != _initData.scalingFactors.length) revert InvalidValue();
bread = IERC20Votes(_initData.breadToken);

__Ownable_init(msg.sender);
__ERC20_init(_initData.name, _initData.symbol);
__EIP712_init(_initData.name, "1");
__ERC20Votes_init();
__Ownable_init(msg.sender);
__ReentrancyGuard_init();

for (uint256 i; i < _initData.liquidityPools.length; ++i) {
Expand Down Expand Up @@ -132,11 +134,11 @@ contract ButteredBread is IButteredBread, ERC20VotesUpgradeable, Ownable2StepUpg
revert NonDelegatable();
}

/// @notice Get the balance and scaling factor of a specific LP for a given account
/// @notice Get the LP data (balance and scaling factor) of a specific LP for a given account
/// @param _holder The address of the account to get the data for
/// @param _lp The address of the LP to get the data for
/// @return LPData memory The balance and scaling factor of the LP for the given account
function balanceOfLP(address _holder, address _lp) external view returns (LPData memory) {
/// @return LPData memory The LP data containing balance and scaling factor for the given account
function getLPData(address _holder, address _lp) external view returns (LPData memory) {
return _accountToLPData[_holder][_lp];
}

Expand Down
4 changes: 2 additions & 2 deletions src/VotingMultipliers.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {Ownable2StepUpgradeable} from "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol";
import {Math} from "openzeppelin-contracts/contracts/utils/math/Math.sol";
import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
import {IVotingMultipliers, IMultiplier} from "src/interfaces/IVotingMultipliers.sol";
import {MultiplierConstants} from "src/libraries/MultiplierConstants.sol";

Expand Down
6 changes: 3 additions & 3 deletions src/YieldDistributor.sol
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {Ownable2StepUpgradeable} from "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol";
import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
import {Checkpoints} from
"openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol";
"@openzeppelin/contracts/utils/structs/Checkpoints.sol";
import {ERC20VotesUpgradeable} from
"openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20VotesUpgradeable.sol";
"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol";
import {Bread} from "bread-token/src/Bread.sol";

import {IYieldDistributor} from "src/interfaces/IYieldDistributor.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/interfaces/ICurveStableSwap.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.25;

import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";

interface ICurveStableSwap is IERC20 {
/**
Expand Down
2 changes: 1 addition & 1 deletion src/interfaces/IERC20Votes.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.25;

import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";

interface IERC20Votes is IERC20 {
/**
Expand Down
8 changes: 4 additions & 4 deletions test/ButteredBread.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ import "forge-std/StdJson.sol";
import "forge-std/StdUtils.sol";
import {Test} from "forge-std/Test.sol";
import {TransparentUpgradeableProxy} from
"openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";

import {ButteredBread, IButteredBread} from "src/ButteredBread.sol";
import {ICurveStableSwap} from "src/interfaces/ICurveStableSwap.sol";
import {IERC20Votes} from "src/interfaces/IERC20Votes.sol";
import {YieldDistributorTestWrapper} from "src/test/YieldDistributorTestWrapper.sol";
import {YieldDistributor, IYieldDistributor} from "src/YieldDistributor.sol";
import {IBread} from "bread-token/src/interfaces/IBread.sol";
import {Ownable2StepUpgradeable} from "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol";
import {ERC20Mock} from "openzeppelin-contracts/contracts/mocks/token/ERC20Mock.sol";
import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
import {ERC20Mock} from "@openzeppelin/contracts/mocks/token/ERC20Mock.sol";

uint256 constant XDAI_FACTOR = 700; // 700% scaling factor; 7X
uint256 constant TOKEN_AMOUNT = 1000 ether;
Expand Down
10 changes: 5 additions & 5 deletions test/YieldDistributor.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import {Test, console2} from "forge-std/Test.sol";
import "forge-std/StdJson.sol";

import {ERC20VotesUpgradeable} from
"openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20VotesUpgradeable.sol";
import {Ownable2StepUpgradeable} from "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol";
"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol";
import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
import {TransparentUpgradeableProxy} from
"openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import {IERC721} from "openzeppelin-contracts/contracts/token/ERC721/IERC721.sol";
"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";

import {YieldDistributor, IYieldDistributor} from "src/YieldDistributor.sol";
Expand Down Expand Up @@ -235,7 +235,7 @@ contract YieldDistributorTest is Test {
// Generating random values for the test
uint256 randomval = uint256(keccak256(abi.encodePacked(seed, i)));
uint256 vote = randomval % 100;
address holder = address(uint160(randomval));
address holder = vm.addr(randomval);
uint256 token_amount = bound(randomval, _minVotingAmount, 1000 * _minVotingAmount);

// Setting up the account for voting
Expand Down
4 changes: 2 additions & 2 deletions test/upgrades/v1.0.0/YieldDistributor.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol";
import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
import {Checkpoints} from
"openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol";
"@openzeppelin/contracts/utils/structs/Checkpoints.sol";
import {Bread} from "bread-token/src/Bread.sol";

/**
Expand Down
4 changes: 2 additions & 2 deletions test/upgrades/v1.0.1/YieldDistributor.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol";
import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
import {Checkpoints} from
"openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol";
"@openzeppelin/contracts/utils/structs/Checkpoints.sol";
import {Bread} from "bread-token/src/Bread.sol";

/**
Expand Down