Files
sre-06-oracles/packages/hardhat/deploy/02_deploy_optimistic.ts
2026-01-23 20:20:58 +07:00

48 lines
1.6 KiB
TypeScript

import { HardhatRuntimeEnvironment } from "hardhat/types";
import { DeployFunction } from "hardhat-deploy/types";
const deployOptimisticOracle: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
const { deployments, getNamedAccounts } = hre;
const { deploy } = deployments;
const { deployer } = await getNamedAccounts();
console.log("Deploying OptimisticOracle...");
// Get the deployer's current nonce
const deployerNonce = await hre.ethers.provider.getTransactionCount(deployer);
const futureDeciderAddress = hre.ethers.getCreateAddress({
from: deployer,
nonce: deployerNonce + 1, // +1 because it will be our second deployment
});
// Deploy the OptimisticOracle contract with deployer as temporary decider
const optimisticOracle = await deploy("OptimisticOracle", {
contract: "OptimisticOracle",
from: deployer,
args: [futureDeciderAddress],
log: true,
autoMine: false,
});
// Deploy the Decider contract
const decider = await deploy("Decider", {
contract: "Decider",
from: deployer,
args: [optimisticOracle.address],
log: true,
autoMine: false,
});
// Check if the decider address matches the expected address
if (decider.address !== futureDeciderAddress) {
throw new Error("Decider address does not match expected address");
}
console.log("OptimisticOracle deployed to:", optimisticOracle.address);
console.log("Decider deployed to:", decider.address);
};
deployOptimisticOracle.id = "deploy_optimistic_oracle";
deployOptimisticOracle.tags = ["OptimisticOracle"];
export default deployOptimisticOracle;