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
33 changes: 33 additions & 0 deletions scripts/utils/checkProposal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@ import proposals from '@protocol/proposalsConfig';

import * as dotenv from 'dotenv';
import { execProposal } from './exec';
import { overwriteChainlinkAggregator } from '@test/helpers';
import { formatNumber } from './printUtils';

dotenv.config();

// Multisig
const voterAddress = '0xB8f482539F2d3Ae2C9ea6076894df36D1f632775';
const proposalName = process.env.DEPLOY_FILE;
const doSetup = process.env.DO_SETUP;
const checkCrOracle = process.env.READ_CR_ORACLE;

if (!proposalName) {
throw new Error('DEPLOY_FILE env variable not set');
Expand All @@ -28,11 +31,29 @@ async function checkProposal(proposalName: string, doSetup?: string) {

const contractAddresses = getAllContractAddresses();

if (proposalFuncs.setup.toString().length > 130 && !doSetup) {
console.log(`Heads up: setup() is defined in ${proposalName}, but you did not use the DO_SETUP=true env variable`);
}

if (doSetup) {
console.log('Setup');
await proposalFuncs.setup(contractAddresses, contracts, contracts, true);
}

let crOracleReadingBefore;
if (checkCrOracle) {
console.log('Reading CR oracle before proposal execution');
crOracleReadingBefore = await contracts.collateralizationOracle.pcvStats();

// persist chainlink ETH/USD reading for BAMM deposit to not revert with 'chainlink is down'
const chainlinkEthUsd = await contracts.chainlinkEthUsdOracleWrapper.read();
await overwriteChainlinkAggregator(
contractAddresses.chainlinkEthUsdOracle,
Math.round(chainlinkEthUsd[0] / 1e10),
'8'
);
}

const { feiDAO } = contracts;

const proposalNo = proposals[proposalName].proposalId;
Expand All @@ -54,6 +75,18 @@ async function checkProposal(proposalName: string, doSetup?: string) {
contracts as unknown as NamedContracts,
true
);

if (checkCrOracle) {
console.log('Reading CR oracle after proposal execution');
const crOracleReadingAfter = await contracts.collateralizationOracle.pcvStats();
const pcvChange =
crOracleReadingAfter.protocolControlledValue.toString() / 1 -
crOracleReadingBefore.protocolControlledValue.toString() / 1;
const feiChange =
crOracleReadingAfter.userCirculatingFei.toString() / 1 - crOracleReadingBefore.userCirculatingFei.toString() / 1;
console.log('PCV Change :', formatNumber(pcvChange));
console.log('FEI Circulating Change :', formatNumber(feiChange));
}
}

checkProposal(proposalName, doSetup)
Expand Down
23 changes: 23 additions & 0 deletions scripts/utils/printUtils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
export function formatNumber(x) {
x = Number(x);
let ret = x >= 0 ? '+' : '-'; // red or green
let absX = Math.abs(x);
let suffix = '';
if (absX >= 1e17) {
// 18 decimals... probably
absX = absX / 1e18;
suffix = ' (e18)';
}
if (absX > 1e6) {
// > 1M
absX = absX / 1e6;
suffix = ' M' + suffix;
} else if (absX > 1e3) {
// > 1k
absX = absX / 1e3;
suffix = ' k' + suffix;
}
const xRound = Math.round(absX * 100) / 100;
ret += xRound + suffix;
return ret;
}