Skip to content

Commit

Permalink
Refactored so that LiquidationPair can be set after
Browse files Browse the repository at this point in the history
  • Loading branch information
asselstine committed Feb 20, 2024
1 parent bdaa90b commit bc12618
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 10 deletions.
12 changes: 9 additions & 3 deletions src/FeeBurner.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,19 @@ contract FeeBurner is ILiquidationSource {

PrizePool public immutable prizePool;
address public immutable burnToken;
address public immutable liquidationPair;
address public immutable creator;
address public liquidationPair;

constructor(PrizePool _prizePool, address _burnToken, address _liquidationPair) {
constructor(PrizePool _prizePool, address _burnToken, address _creator) {
prizePool = _prizePool;
liquidationPair = _liquidationPair;
burnToken = _burnToken;
creator = _creator;
}

function setLiquidationPair(address _liquidationPair) external {
require(liquidationPair == address(0), "FeeBurner: Liquidation pair already set");
require(msg.sender == creator, "FeeBurner: Only creator can set liquidation pair");
liquidationPair = _liquidationPair;
emit LiquidationPairSet(address(prizePool.prizeToken()), _liquidationPair);
}

Expand Down
8 changes: 4 additions & 4 deletions src/FeeBurnerFactory.sol
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,14 @@ contract FeeBurnerFactory {
function deployFeeBurner(
PrizePool _prizePool,
address _burnToken,
address _liquidationPair
address _creator
) external returns (FeeBurner) {
FeeBurner _feeBurner = new FeeBurner{
salt: keccak256(abi.encode(msg.sender, deployerNonces[msg.sender]++))
}(
_prizePool,
_burnToken,
_liquidationPair
_creator
);

allFeeBurners.push(_feeBurner);
Expand All @@ -68,15 +68,15 @@ contract FeeBurnerFactory {
function computeDeploymentAddress(
PrizePool _prizePool,
address _burnToken,
address _liquidationPair
address _creator
) external view returns (address) {
return address(uint160(uint(keccak256(abi.encodePacked(
bytes1(0xff),
address(this),
keccak256(abi.encode(msg.sender, deployerNonces[msg.sender])),
keccak256(abi.encodePacked(
type(FeeBurner).creationCode,
abi.encode(_prizePool, _burnToken, _liquidationPair)
abi.encode(_prizePool, _burnToken, _creator)
))
)))));
}
Expand Down
7 changes: 4 additions & 3 deletions test/FeeBurnerFactory.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,16 @@ contract FeeBurnerTest is Test {

/// @dev Simple test. Run Forge with `-vvvv` to see stack traces.
function test() external {
address expectedAddress = factory.computeDeploymentAddress(prizePool, burnToken, liquidationPair);
address expectedAddress = factory.computeDeploymentAddress(prizePool, burnToken, address(this));
FeeBurner burner = factory.deployFeeBurner(
prizePool,
burnToken,
liquidationPair
address(this)
);
assertEq(address(burner), expectedAddress, "address was computed correctly");
assertEq(burner.burnToken(), burnToken, "burn token");
assertEq(address(burner.prizePool()), address(prizePool), "prize pool");
assertEq(burner.liquidationPair(), liquidationPair, "liquidation pair");
assertEq(burner.creator(), address(this), "creator");
assertEq(burner.liquidationPair(), address(0), "liquidation pair");
}
}

0 comments on commit bc12618

Please sign in to comment.