-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Balancer weighted pool oracle deployment script (#17)
* Add balancer price oracle * Add Balancer weighted pool oracle deployment script
- Loading branch information
Showing
7 changed files
with
99 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 42 additions & 0 deletions
42
script/single-deployment/BalancerWeightedPoolPriceOracle.s.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
// SPDX-License-Identifier: GPL-3.0 | ||
pragma solidity >=0.8.0 <0.9.0; | ||
|
||
import {Script, console} from "forge-std/Script.sol"; | ||
|
||
import {BalancerWeightedPoolPriceOracle, IVault} from "src/oracles/BalancerWeightedPoolPriceOracle.sol"; | ||
|
||
contract DeployBalancerWeightedPoolPriceOracle is Script { | ||
string constant balancerVaultEnv = "BALANCER_VAULT"; | ||
IVault internal vault; | ||
|
||
constructor() { | ||
try vm.envAddress(balancerVaultEnv) returns (address vault_) { | ||
vault = IVault(vault_); | ||
} catch { | ||
vault = defaultBalancerVault(); | ||
} | ||
console.log("Balancer vault at %s.", address(vault)); | ||
// We assume that if there's code at that address, then it's a Balancer | ||
// vault deployment. This isn't guaranteed because they don't use | ||
// deterministic addresses and in theory there could be any contract | ||
// there. | ||
require(address(vault).code.length > 0, "no code at expected Balancer vault"); | ||
} | ||
|
||
function run() public virtual { | ||
deployBalancerWeightedPoolPriceOracle(); | ||
} | ||
|
||
function deployBalancerWeightedPoolPriceOracle() internal returns (BalancerWeightedPoolPriceOracle) { | ||
vm.broadcast(); | ||
return new BalancerWeightedPoolPriceOracle(vault); | ||
} | ||
|
||
function defaultBalancerVault() internal pure returns (IVault) { | ||
// Balancer uses the same address on each supported chain until now: | ||
// https://docs.balancer.fi/reference/contracts/deployment-addresses/mainnet.html | ||
// Chains: Arbitrum, Avalanche, Base, Gnosis, Goerli, Mainnet, Optimism, | ||
// Polygon, Sepolia, Zkevm | ||
return IVault(0xBA12222222228d8Ba445958a75a0704d566BF2C8); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
21 changes: 21 additions & 0 deletions
21
test/script/single-deployment/DeployBalancerWeightedPoolPriceOracle.t.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// SPDX-License-Identifier: GPL-3.0 | ||
pragma solidity >=0.8.0 <0.9.0; | ||
|
||
import {Test} from "forge-std/Test.sol"; | ||
|
||
import {BalancerSetUp} from "./balancer/BalancerSetUp.sol"; | ||
|
||
import {DeployBalancerWeightedPoolPriceOracle} from "script/single-deployment/BalancerWeightedPoolPriceOracle.s.sol"; | ||
|
||
contract DeployBalancerWeightedPoolPriceOracleTest is Test, BalancerSetUp { | ||
DeployBalancerWeightedPoolPriceOracle script; | ||
|
||
function setUp() public { | ||
setUpBalancerVault(); | ||
script = new DeployBalancerWeightedPoolPriceOracle(); | ||
} | ||
|
||
function testDoesNotRevert() public { | ||
script.run(); | ||
} | ||
} |
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
// SPDX-License-Identifier: GPL-3.0 | ||
pragma solidity >=0.8.0 <0.9.0; | ||
|
||
import {Test} from "forge-std/Test.sol"; | ||
|
||
abstract contract BalancerSetUp is Test { | ||
function setUpBalancerVault() internal { | ||
vm.etch(0xBA12222222228d8Ba445958a75a0704d566BF2C8, hex"1337"); | ||
} | ||
} |