Skip to content

Commit

Permalink
test: add bridge simulations for sepolia to bsc
Browse files Browse the repository at this point in the history
  • Loading branch information
GitGuru7 committed Feb 23, 2024
1 parent a0261a6 commit d0673f5
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 12 deletions.
93 changes: 93 additions & 0 deletions multisig/simulations/vip-011/vip-011-sepolia/simulations.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers";
import { expect } from "chai";
import { Contract } from "ethers";
import { parseUnits } from "ethers/lib/utils";
import { ethers } from "hardhat";

import { NETWORK_ADDRESSES } from "../../../../src/networkAddresses";
import { initMainnetUser } from "../../../../src/utils";
import { forking, pretendExecutingVip } from "../../../../src/vip-framework";
import { vip011 } from "../../../proposals/vip-011/vip-011-sepolia";
import RESILIENT_ORACLE_ABI from "./abi/resilientOracle.json";
Expand All @@ -12,6 +14,7 @@ import VAI_BRIDGE_ABI from "./abi/vaiBridge.json";
import VAI_BRIDGE_ADMIN_ABI from "./abi/vaiBridgeAdmin.json";

const { sepolia } = NETWORK_ADDRESSES;
const DEST_CHAIN_ID = 10102;

forking(5340851, () => {
let vai: Contract;
Expand Down Expand Up @@ -43,8 +46,18 @@ forking(5340851, () => {
});

describe("Post-Execution state", () => {
let acc1: SignerWithAddress;
let impersonateMinterOfVAI: SignerWithAddress;
let receiverAddressBytes32: string;
let defaultAdapterParams: string;
before(async () => {
await pretendExecutingVip(vip011());
// Mocking for simulations
impersonateMinterOfVAI = await initMainnetUser(sepolia.TOKEN_BRIDGE_VAI, ethers.utils.parseEther("2"));
[acc1] = await ethers.getSigners();
await vai.connect(impersonateMinterOfVAI).mint(acc1.address, parseUnits("50001", 18));
receiverAddressBytes32 = ethers.utils.defaultAbiCoder.encode(["address"], [acc1.address]);
defaultAdapterParams = ethers.utils.solidityPack(["uint16", "uint256"], [1, 300000]);
});
it("Should set bridge owner to multisig", async () => {
const owner = await vaiBridgeAdmin.owner();
Expand Down Expand Up @@ -95,5 +108,85 @@ forking(5340851, () => {
const price = await oracle.getPrice(sepolia.VAI);
expect(price).equals(parseUnits("1", 18));
});

it("Should emit an event on successfull bridging of VAI", async () => {
const amount = parseUnits("0.5", 18);
const nativeFee = (
await vaiBridge.estimateSendFee(DEST_CHAIN_ID, receiverAddressBytes32, amount, false, defaultAdapterParams)
).nativeFee;

await vai.connect(acc1).approve(vaiBridge.address, amount);

await expect(
vaiBridge
.connect(acc1)
.sendFrom(
acc1.address,
DEST_CHAIN_ID,
receiverAddressBytes32,
amount,
[acc1.address, ethers.constants.AddressZero, defaultAdapterParams],
{ value: nativeFee },
),
)
.to.be.emit(vaiBridge, "SendToChain")
.withArgs(DEST_CHAIN_ID, acc1.address, receiverAddressBytes32, amount);
});

it("Reverts if single transaction limit exceed", async function () {
const amount = ethers.utils.parseUnits("10001", 18);
await vai.connect(acc1).approve(vaiBridge.address, amount);

const nativeFee = (
await vaiBridge.estimateSendFee(DEST_CHAIN_ID, receiverAddressBytes32, amount, false, defaultAdapterParams)
).nativeFee;
await expect(
vaiBridge
.connect(acc1)
.sendFrom(
acc1.address,
DEST_CHAIN_ID,
receiverAddressBytes32,
amount,
[acc1.address, ethers.constants.AddressZero, defaultAdapterParams],
{ value: nativeFee },
),
).to.be.revertedWith("Single Transaction Limit Exceed");
});

it("Reverts if max daily transaction limit exceed", async function () {
const maxPlusAmount = ethers.utils.parseUnits("50001");
const amount = ethers.utils.parseUnits("10000");

await vai.connect(acc1).approve(vaiBridge.address, maxPlusAmount);
const nativeFee = (
await vaiBridge.estimateSendFee(DEST_CHAIN_ID, receiverAddressBytes32, amount, false, defaultAdapterParams)
).nativeFee;

for (let i = 0; i < 4; i++) {
await vaiBridge
.connect(acc1)
.sendFrom(
acc1.address,
DEST_CHAIN_ID,
receiverAddressBytes32,
amount,
[acc1.address, ethers.constants.AddressZero, defaultAdapterParams],
{ value: nativeFee },
);
}
await expect(
vaiBridge
.connect(acc1)
.sendFrom(
acc1.address,
DEST_CHAIN_ID,
receiverAddressBytes32,
amount,
[acc1.address, ethers.constants.AddressZero, defaultAdapterParams],
{ value: nativeFee },
),
).to.be.revertedWith("Daily Transaction Limit Exceed");
});
});
});
8 changes: 4 additions & 4 deletions simulations/vip-260/bsctestnet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import VAI_ABI from "./abi/VAI.json";
import VAIBridgeAdmin_ABI from "./abi/VAIBridgeAdmin.json";
import VAI_BRIDGE_ABI from "./abi/VAITokenBridge.json";

const DEST_CHAIN_ID = "10161";
const DEST_CHAIN_ID = 10161;
const TOKEN_BRIDGE_CONTROLLER_VAI = "0x91b653f7527D698320133Eb97BB55a617663e792";
const TRUSTED_REMOTE = "0xfa62bc6c0e20a507e3ad0df4f6b89e71953161fa";
const VAI_HOLDER = "0x7Db4f5cC3bBA3e12FF1F528D2e3417afb0a57118";
Expand Down Expand Up @@ -94,16 +94,16 @@ forking(37969204, () => {
expect(await vaiBridge.chainIdToMaxDailyReceiveLimit(DEST_CHAIN_ID)).to.equal("50000000000000000000000");
});

it("Should emit an event on successfull bridging of bsctestnet.VAI", async () => {
it("Should emit an event on successfull bridging of VAI", async () => {
const amount = parseUnits("0.5", 18);
const nativeFee = (
await vaiBridge.estimateSendFee(DEST_CHAIN_ID, receiverAddressBytes32, amount, false, defaultAdapterParams)
).nativeFee;

await vai.connect(vaiHolderSigner).approve(vaiBridge.address, amount);

expect(
await vaiBridge
await expect(
vaiBridge
.connect(vaiHolderSigner)
.sendFrom(
vaiHolderSigner.address,
Expand Down
8 changes: 0 additions & 8 deletions vips/vip-260/bsctestnet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,8 @@ import { NETWORK_ADDRESSES } from "../../src/networkAddresses";
import { ProposalType } from "../../src/types";
import { makeProposal } from "../../src/utils";

// const bsctestnet.TOKEN_BRIDGE_VAI = "0x2280aCD3BE2eE270161a11A6176814C26FD747f9";
// const bsctestnet.TOKEN_BRIDGE_ADMIN_VAI = "0xfF058122378BD9AC5B572A2F7c1815E09504D859";
// const bsctestnet.TOKEN_BRIDGE_CONTROLLER_VAI = "0x91b653f7527D698320133Eb97BB55a617663e792";
// const bsctestnet.ACM = "0x45f8a08F534f34A97187626E05d4b6648Eeaa9AA";
// const bsctestnet.NORMAL_TIMELOCK = "0xce10739590001705F7FF231611ba4A48B2820327";
// const bsctestnet.FAST_TRACK_TIMELOCK = "0x3CFf21b7AF8390fE68799D58727d3b4C25a83cb6";
// const bsctestnet.CRITICAL_TIMELOCK = "0x23B893a7C45a5Eb8c8C062b9F32d0D2e43eD286D";
const GUARDIAN = "0x2Ce1d0ffD7E869D9DF33e28552b12DdDed326706";
const TRUSTED_REMOTE = "0xFA62BC6C0E20A507E3Ad0dF4F6b89E71953161fa";
// const bsctestnet.VAI = "0x5fFbE5302BadED40941A403228E6AD03f93752d9";
const { bsctestnet } = NETWORK_ADDRESSES;

export const vip260Testnet = () => {
Expand Down

0 comments on commit d0673f5

Please sign in to comment.