mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
import with allow and import with permit
This commit is contained in:
parent
1a5f62ab22
commit
89791e74fa
|
@ -221,7 +221,7 @@ describe("Import Compound v3 Position", function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("check user Compound position", async () => {
|
describe("check user Compound position", async () => {
|
||||||
it("Should create Compound v3 position of DAI(collateral) and ETH(debt)", async () => {
|
it("Should create Compound v3 position of WETH(collateral) and USDC(debt)", async () => {
|
||||||
await wethContract.connect(signer).transfer(wallet.address, parseEther("100"));
|
await wethContract.connect(signer).transfer(wallet.address, parseEther("100"));
|
||||||
// approve WETH to market
|
// approve WETH to market
|
||||||
|
|
||||||
|
@ -269,7 +269,95 @@ describe("Import Compound v3 Position", function () {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("Compound position migration", async () => {
|
describe("Compound position migration - Using `allow` by EOA", async () => {
|
||||||
|
it("Should migrate Compound position", async () => {
|
||||||
|
|
||||||
|
let buffer = ethers.utils.parseUnits("100", 3).toNumber();
|
||||||
|
let amount0 = new BigNumber(await comet.connect(wallet0).borrowBalanceOf(wallet.address)).plus(buffer);
|
||||||
|
let amountB = new BigNumber(amount0.toString()).multipliedBy(5).dividedBy(1e4);
|
||||||
|
let amountWithFee = amount0.plus(amountB);
|
||||||
|
|
||||||
|
await comet.connect(walletSigner).allow(dsaWallet0.address, true);
|
||||||
|
console.log("DSA Permitted as manager");
|
||||||
|
|
||||||
|
const flashSpells = [
|
||||||
|
{
|
||||||
|
connector: "COMPOUND-V3-X",
|
||||||
|
method: "paybackOnBehalf",
|
||||||
|
args: [market, tokens.usdc.address, wallet.address, ethers.constants.MaxUint256, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
connector: "COMPOUND-V3-X",
|
||||||
|
method: "transferAssetOnBehalf",
|
||||||
|
args: [market, tokens.weth.address, wallet.address, dsaWallet0.address, ethers.constants.MaxUint256, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
connector: "COMPOUND-V3-X",
|
||||||
|
method: "borrow",
|
||||||
|
args: [market, tokens.usdc.address, amountWithFee.toFixed(0), 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
connector: "INSTAPOOL-C",
|
||||||
|
method: "flashPayback",
|
||||||
|
args: [tokens.usdc.address, amountWithFee.toFixed(0), 0, 0]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: "INSTAPOOL-C",
|
||||||
|
method: "flashBorrowAndCast",
|
||||||
|
args: [tokens.usdc.address, amount0.toFixed(), 5, encodeFlashcastData(flashSpells), "0x"]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
let tx = await dsaWallet0.connect(walletSigner).cast(...encodeSpells(spells), wallet0.address);
|
||||||
|
await tx.wait();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Should check DSA COMPOUND position", async () => {
|
||||||
|
expect((await comet.connect(wallet0).userCollateral(dsaWallet0.address, tokens.weth.address)).balance).to.be.gte(
|
||||||
|
ethers.utils.parseEther("100")
|
||||||
|
);
|
||||||
|
expect(await comet.connect(wallet0).borrowBalanceOf(dsaWallet0.address)).to.be.gte(
|
||||||
|
ethers.utils.parseUnits("100", 6)
|
||||||
|
);
|
||||||
|
|
||||||
|
expect((await comet.connect(wallet0).userCollateral(wallet.address, tokens.weth.address)).balance).to.be.lte(
|
||||||
|
ethers.utils.parseEther("0")
|
||||||
|
);
|
||||||
|
expect(await comet.connect(wallet0).borrowBalanceOf(wallet.address)).to.be.lte(ethers.utils.parseUnits("0", 6));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Compound position migration - Using `toggleManagerUsingPermit` spell by Manager DSA", async () => {
|
||||||
|
|
||||||
|
describe("check user Compound position", async () => {
|
||||||
|
it("Should create Compound v3 position of WETH(collateral) and USDC(debt)", async () => {
|
||||||
|
await wethContract.connect(signer).transfer(wallet.address, parseEther("100"));
|
||||||
|
// approve WETH to market
|
||||||
|
|
||||||
|
await wethContract.connect(walletSigner).approve(market, parseEther("100"));
|
||||||
|
|
||||||
|
//deposit WETH in Compound
|
||||||
|
await comet.connect(walletSigner).supply(tokens.weth.address, parseEther("100"));
|
||||||
|
console.log("Supplied WETH on compound");
|
||||||
|
|
||||||
|
//borrow Base from compound
|
||||||
|
await comet.connect(walletSigner).withdraw(tokens.usdc.address, parseUnits("100", 6));
|
||||||
|
console.log("Borrowed USDC from compound");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Should check position of user", async () => {
|
||||||
|
expect((await comet.connect(signer).userCollateral(wallet.address, tokens.weth.address)).balance).to.be.gte(
|
||||||
|
new BigNumber(100).multipliedBy(1e18).toString()
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(await comet.connect(signer).borrowBalanceOf(wallet.address)).to.be.gte(
|
||||||
|
new BigNumber(100).multipliedBy(1e6).toString()
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it("Should migrate Compound position", async () => {
|
it("Should migrate Compound position", async () => {
|
||||||
const DOMAIN_TYPEHASH = keccak256(
|
const DOMAIN_TYPEHASH = keccak256(
|
||||||
ethers.utils.toUtf8Bytes("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)")
|
ethers.utils.toUtf8Bytes("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)")
|
||||||
|
@ -324,32 +412,31 @@ describe("Import Compound v3 Position", function () {
|
||||||
console.log(`structHash: ${structHash}`);
|
console.log(`structHash: ${structHash}`);
|
||||||
console.log(`block timestamp: ${(await provider.getBlock(15469858)).timestamp}`);
|
console.log(`block timestamp: ${(await provider.getBlock(15469858)).timestamp}`);
|
||||||
|
|
||||||
// let interface_ = new ethers.Contract("0x285617313887d43256F852cAE0Ee4de4b68D45B0", extABI);
|
|
||||||
console.log(await ethers.provider.getBalance(walletSigner.address));
|
console.log(await ethers.provider.getBalance(walletSigner.address));
|
||||||
// await comet.connect(walletSigner).allowBySig(wallet.address, dsaWallet0.address, true, nonce, expiry,v, ethers.utils.hexlify(r), ethers.utils.hexlify(s));
|
// await comet.connect(walletSigner).allowBySig(wallet.address, dsaWallet0.address, true, nonce, expiry,v, ethers.utils.hexlify(r), ethers.utils.hexlify(s));
|
||||||
await comet.connect(walletSigner).allow(dsaWallet0.address, true);
|
const spells1 = [
|
||||||
// const spells1 = [
|
{
|
||||||
// {
|
connector: "COMPOUND-V3-X",
|
||||||
// connector: "COMPOUND-V3-X",
|
method: "toggleAccountManagerWithPermit",
|
||||||
// method: "toggleAccountManagerWithPermit",
|
args: [
|
||||||
// args: [
|
market,
|
||||||
// market,
|
wallet.address,
|
||||||
// wallet.address,
|
dsaWallet0.address,
|
||||||
// dsaWallet0.address,
|
true,
|
||||||
// true,
|
nonce,
|
||||||
// nonce,
|
expiry,
|
||||||
// expiry,
|
v,
|
||||||
// v,
|
ethers.utils.hexlify(r),
|
||||||
// ethers.utils.hexlify(r),
|
ethers.utils.hexlify(s)
|
||||||
// ethers.utils.hexlify(s)
|
]
|
||||||
// ]
|
}
|
||||||
// }
|
];
|
||||||
// ];
|
let [targets, calldata] = encodeSpells(spells1);
|
||||||
// let [targets, calldata] = encodeSpells(spells1);
|
console.log(targets);
|
||||||
// console.log(targets);
|
console.log(calldata);
|
||||||
// console.log(calldata);
|
|
||||||
// let tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells1), wallet0.address);
|
let tx = await dsaWallet0.connect(walletSigner).cast(...encodeSpells(spells1), wallet0.address);
|
||||||
// const receipt = await tx.wait();
|
const receipt = await tx.wait();
|
||||||
console.log("DSA Permitted as manager");
|
console.log("DSA Permitted as manager");
|
||||||
|
|
||||||
const flashSpells = [
|
const flashSpells = [
|
||||||
|
@ -382,16 +469,16 @@ describe("Import Compound v3 Position", function () {
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
let tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet0.address);
|
tx = await dsaWallet0.connect(walletSigner).cast(...encodeSpells(spells), wallet0.address);
|
||||||
await tx.wait();
|
await tx.wait();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Should check DSA COMPOUND position", async () => {
|
it("Should check DSA COMPOUND position", async () => {
|
||||||
expect((await comet.connect(wallet0).userCollateral(dsaWallet0.address, tokens.weth.address)).balance).to.be.gte(
|
expect((await comet.connect(wallet0).userCollateral(dsaWallet0.address, tokens.weth.address)).balance).to.be.gte(
|
||||||
ethers.utils.parseEther("100")
|
ethers.utils.parseEther("200")
|
||||||
);
|
);
|
||||||
expect(await comet.connect(wallet0).borrowBalanceOf(dsaWallet0.address)).to.be.gte(
|
expect(await comet.connect(wallet0).borrowBalanceOf(dsaWallet0.address)).to.be.gte(
|
||||||
ethers.utils.parseUnits("100", 6)
|
ethers.utils.parseUnits("200", 6)
|
||||||
);
|
);
|
||||||
|
|
||||||
expect((await comet.connect(wallet0).userCollateral(wallet.address, tokens.weth.address)).balance).to.be.lte(
|
expect((await comet.connect(wallet0).userCollateral(wallet.address, tokens.weth.address)).balance).to.be.lte(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user