Skip to content

Commit

Permalink
fix: added deployment scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
web3rover committed Oct 30, 2024
1 parent 265c0a4 commit cdf4e52
Showing 4 changed files with 113 additions and 0 deletions.
37 changes: 37 additions & 0 deletions contracts/oracles/EtherfiAccountantOracle.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// SPDX-License-Identifier: BSD-3-Clause
pragma solidity 0.8.25;

import { CorrelatedTokenOracle } from "./common/CorrelatedTokenOracle.sol";
import { IAccountant } from "../interfaces/IAccountant.sol";
import { ensureNonzeroAddress } from "@venusprotocol/solidity-utilities/contracts/validators.sol";

/**
* @title EtherfiAccountantOracle
* @author Venus
* @notice This oracle fetches the price of eBTC
*/
contract EtherfiAccountantOracle is CorrelatedTokenOracle {
/// @notice Address of Accountant
/// @custom:oz-upgrades-unsafe-allow state-variable-immutable
IAccountant public immutable ACCOUNTANT;

/// @notice Constructor for the implementation contract.
/// @custom:oz-upgrades-unsafe-allow constructor
constructor(
address accountant,
address eBTC,
address wbtc,
address resilientOracle
) CorrelatedTokenOracle(eBTC, wbtc, resilientOracle) {
ensureNonzeroAddress(accountant);
ACCOUNTANT = IAccountant(accountant);
}

/**
* @notice Gets the WBTC for 1 eBTC
* @return amount Amount of WBTC
*/
function _getUnderlyingAmount() internal view override returns (uint256) {
return ACCOUNTANT.getRateSafe();
}
}
28 changes: 28 additions & 0 deletions deploy/14-dependencies-eBTC-oracle.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { ethers } from "hardhat";
import { DeployFunction } from "hardhat-deploy/dist/types";
import { HardhatRuntimeEnvironment } from "hardhat/types";

import { ADDRESSES } from "../helpers/deploymentConfig";

const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: HardhatRuntimeEnvironment) => {
const { deploy } = deployments;
const { deployer } = await getNamedAccounts();

const proxyOwnerAddress = network.live ? ADDRESSES[network.name].timelock : deployer;

await deploy("MockAccountant_eBTC", {
from: deployer,
contract: "MockAccountant",
args: [],
log: true,
autoMine: true,
skipIfAlreadyDeployed: true,
});

const mockAccountant = await ethers.getContract("MockAccountant_eBTC");
await mockAccountant.transferOwnership(proxyOwnerAddress);
};

export default func;
func.tags = ["eBTCAccountantOracle"];
func.skip = async (hre: HardhatRuntimeEnvironment) => hre.network.name !== "sepolia";
46 changes: 46 additions & 0 deletions deploy/14-deploy-eBTC-oracle.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { ethers } from "hardhat";
import { DeployFunction } from "hardhat-deploy/dist/types";
import { HardhatRuntimeEnvironment } from "hardhat/types";

import { ADDRESSES } from "../helpers/deploymentConfig";

const func: DeployFunction = async ({
getNamedAccounts,
deployments,
network,
artifacts,
}: HardhatRuntimeEnvironment) => {
const { deploy } = deployments;
const { deployer } = await getNamedAccounts();

const resilientOracle = await ethers.getContract("ResilientOracle");
const proxyOwnerAddress = network.live ? ADDRESSES[network.name].timelock : deployer;
const defaultProxyAdmin = await artifacts.readArtifact(
"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol:ProxyAdmin",
);
let { eBTC_Accountant } = ADDRESSES[network.name];
const { WBTC, eBTC } = ADDRESSES[network.name];

eBTC_Accountant = eBTC_Accountant || (await ethers.getContract("MockAccountant_eBTC")).address;

await deploy("eBTCAccountantOracle", {
contract: "EtherfiAccountantOracle",
from: deployer,
log: true,
deterministicDeployment: false,
args: [eBTC_Accountant, eBTC, WBTC, resilientOracle.address],
proxy: {
owner: proxyOwnerAddress,
proxyContract: "OptimizedTransparentUpgradeableProxy",
viaAdminContract: {
name: "DefaultProxyAdmin",
artifact: defaultProxyAdmin,
},
},
skipIfAlreadyDeployed: true,
});
};

export default func;
func.tags = ["eBTCAccountantOracle"];
func.skip = async (hre: HardhatRuntimeEnvironment) => hre.network.name !== "ethereum" && hre.network.name !== "sepolia";
2 changes: 2 additions & 0 deletions helpers/deploymentConfig.ts
Original file line number Diff line number Diff line change
@@ -126,6 +126,8 @@ export const ADDRESSES: PreconfiguredAddresses = {
rsETH: "0xfA0614E5C803E15070d31f7C38d2d430EBe68E47",
ezETH: "0xB8eb706b85Ae7355c9FE4371a499F50f3484809c",
weETHs: "0xE233527306c2fa1E159e251a2E5893334505A5E0",
eBTC: "0xd48392CCf3fe028023D0783E570DFc71996859d7",
WBTC: "0x92A2928f5634BEa89A195e7BeCF0f0FEEDAB885b",
},
ethereum: {
vBNBAddress: ethers.constants.AddressZero,

0 comments on commit cdf4e52

Please sign in to comment.