add test upgrade bsc-xdai

This commit is contained in:
Drygin 2022-01-30 18:48:16 +03:00
parent 1dc13e68e5
commit e7b360b7f9
6 changed files with 86 additions and 13 deletions

View File

@ -1,6 +0,0 @@
{
"novaProxy": "0xD692Fd2D0b2Fbd2e52CFa5B5b9424bC981C30696",
"newNovaImpl": "TODO",
"ethAmbBridge": "0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e",
"gasLimit": 200000
}

View File

@ -0,0 +1,23 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
import "@openzeppelin/contracts/utils/Address.sol";
contract TestExecutor {
event ProposalExecuted(address indexed target);
function execute(address target) public payable virtual {
require(Address.isContract(target), "Governance::execute: not a contract");
(bool success, bytes memory data) = target.delegatecall(abi.encodeWithSignature("executeProposal()"));
if (!success) {
if (data.length > 0) {
revert(string(data));
} else {
revert("Proposal execution failed");
}
}
emit ProposalExecuted(target);
}
}

View File

@ -66,5 +66,11 @@ module.exports = {
: { mnemonic: 'test test test test test junk' }, : { mnemonic: 'test test test test test junk' },
timeout: 2147483647, timeout: 2147483647,
}, },
bsc: {
url: process.env.ETH_RPC || 'https://bsc-dataseed.binance.org/',
accounts: process.env.PRIVATE_KEY
? [process.env.PRIVATE_KEY]
: { mnemonic: 'test test test test test junk' },
},
}, },
} }

View File

@ -1,7 +1,18 @@
const { ethers } = require('hardhat') const { ethers } = require('hardhat')
const config = require('../config')
async function main() { async function main() {
const gasLimit = 200000
// BSC TEST VALUES
const novaProxy = '0xC953965A9287d298bbECF13fd59aA3F4cE69d322' // test one
const newNovaImpl = '0x75Df5AF045d91108662D8080fD1FEFAd6aA0bb59' // random contract
const ethAmbBridge = '0x05185872898b6f94AA600177EF41B9334B1FA48B' // on bsc
// MAINNET VALUES
// const novaProxy = "0xD692Fd2D0b2Fbd2e52CFa5B5b9424bC981C30696"
// const newNovaImpl = "TODO"
// const ethAmbBridge = "0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e"
const [deployer] = await ethers.getSigners() const [deployer] = await ethers.getSigners()
console.log('Deploying contracts with the account:', deployer.address) console.log('Deploying contracts with the account:', deployer.address)
@ -9,12 +20,7 @@ async function main() {
console.log('Account balance:', (await deployer.getBalance()).toString()) console.log('Account balance:', (await deployer.getBalance()).toString())
const Proposal = await ethers.getContractFactory('NovaUpgradeProposal') const Proposal = await ethers.getContractFactory('NovaUpgradeProposal')
const proposal = await Proposal.deploy( const proposal = await Proposal.deploy(novaProxy, newNovaImpl, ethAmbBridge, gasLimit)
config.novaProxy,
config.newNovaImpl,
config.ethAmbBridge,
config.gasLimit,
)
console.log('Proposal address:', proposal.address) console.log('Proposal address:', proposal.address)
} }

22
scripts/deployExecutor.js Normal file
View File

@ -0,0 +1,22 @@
const { ethers } = require('hardhat')
async function main() {
const [deployer] = await ethers.getSigners()
console.log('Deploying contracts with the account:', deployer.address)
console.log('Account balance:', (await deployer.getBalance()).toString())
const Executor = await ethers.getContractFactory('TestExecutor')
const executor = await Executor.deploy()
await executor.deployed()
console.log('Executor address:', executor.address)
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error)
process.exit(1)
})

22
scripts/testUpgrade.js Normal file
View File

@ -0,0 +1,22 @@
const { ethers } = require('hardhat')
async function main() {
const [sender] = await ethers.getSigners()
console.log('Calling contracts with the account:', sender.address)
console.log('Account balance:', (await sender.getBalance()).toString())
const executor = await ethers.getContractAt('TestExecutor', '0xC953965A9287d298bbECF13fd59aA3F4cE69d322')
console.log('Executor address:', executor.address)
const tx = await executor.connect(sender).execute('0x189A86fB2c334095efd04B1F00d0ee27A54c74f5')
let receipt = await tx.wait()
console.log('Upgrade receipt:', receipt)
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error)
process.exit(1)
})