Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove old vortex dependency #165

Open
wants to merge 4 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 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
16 changes: 1 addition & 15 deletions contracts/vortex/CarbonVortex.sol
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ contract CarbonVortex is ICarbonVortex, Upgradeable, ReentrancyGuardUpgradeable,

// addresses for token withdrawal
ICarbonController private immutable _carbonController;
IVault private immutable _oldVortex;
IVault private immutable _vault;

// address for token collection - collects all swapped target/final target tokens
Expand Down Expand Up @@ -96,14 +95,12 @@ contract CarbonVortex is ICarbonVortex, Upgradeable, ReentrancyGuardUpgradeable,
constructor(
ICarbonController carbonController,
IVault vault,
IVault oldVortex,
address payable transferAddress,
Token targetTokenInit,
Token finalTargetTokenInit
) validAddress(transferAddress) validAddress(Token.unwrap(targetTokenInit)) {
_carbonController = carbonController;
_vault = vault;
_oldVortex = oldVortex;

_transferAddress = transferAddress;

Expand Down Expand Up @@ -178,7 +175,7 @@ contract CarbonVortex is ICarbonVortex, Upgradeable, ReentrancyGuardUpgradeable,
* @inheritdoc Upgradeable
*/
function version() public pure override(IVersioned, Upgradeable) returns (uint16) {
return 2;
return 3;
}

/**
Expand Down Expand Up @@ -357,9 +354,6 @@ contract CarbonVortex is ICarbonVortex, Upgradeable, ReentrancyGuardUpgradeable,
if (address(_vault) != address(0)) {
totalFees += token.balanceOf(address(_vault));
}
if (address(_oldVortex) != address(0)) {
totalFees += token.balanceOf(address(_oldVortex));
}
return totalFees + token.balanceOf(address(this));
}

Expand All @@ -379,7 +373,6 @@ contract CarbonVortex is ICarbonVortex, Upgradeable, ReentrancyGuardUpgradeable,
// cache address checks to save gas
bool carbonControllerIsNotZero = address(_carbonController) != address(0);
bool vaultIsNotZero = address(_vault) != address(0);
bool oldVortexIsNotZero = address(_oldVortex) != address(0);

// withdraw fees from carbon, vault and old vortex
ivanzhelyazkov marked this conversation as resolved.
Show resolved Hide resolved
for (uint256 i = 0; i < len; i = uncheckedInc(i)) {
Expand All @@ -396,13 +389,6 @@ contract CarbonVortex is ICarbonVortex, Upgradeable, ReentrancyGuardUpgradeable,
_vault.withdrawFunds(token, payable(address(this)), vaultBalance);
totalFeeAmount += vaultBalance;
}
if (oldVortexIsNotZero) {
// get old vortex token balance
uint256 oldVortexBalance = token.balanceOf(address(_oldVortex));
// withdraw old vortex token balance
_oldVortex.withdrawFunds(token, payable(address(this)), oldVortexBalance);
totalFeeAmount += oldVortexBalance;
}
feeAmounts[i] = totalFeeAmount;

// get reward amount for token
Expand Down
3 changes: 0 additions & 3 deletions data/named-accounts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -155,9 +155,6 @@ const BancorNamedAccounts = {
vault: {
...getAddress(mainnet, ZERO_ADDRESS),
...getAddress(base, '0xD2b2D272c30d9a0ff3DbaFe848DA7e2f194f697F')
},
oldVortex: {
...getAddress(mainnet, '0xba7d1581Db6248DC9177466a328BF457703c8f84')
}
};

Expand Down
25 changes: 25 additions & 0 deletions deploy/scripts/mainnet/0017-CarbonVortex-upgrade.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { DeployFunction } from 'hardhat-deploy/types';
import { HardhatRuntimeEnvironment } from 'hardhat/types';
import { DeployedContracts, upgradeProxy, InstanceName, setDeploymentMetadata } from '../../../utils/Deploy';
import { NATIVE_TOKEN_ADDRESS } from '../../../utils/Constants';

/**
* upgrade carbon vortex 2.0 to v3:
* add maxInput to trade function
ivanzhelyazkov marked this conversation as resolved.
Show resolved Hide resolved
* fix upgradeable contract
*/
const func: DeployFunction = async ({ getNamedAccounts }: HardhatRuntimeEnvironment) => {
const { deployer, bnt, vault } = await getNamedAccounts();
const carbonController = await DeployedContracts.CarbonController.deployed();

await upgradeProxy({
name: InstanceName.CarbonVortex,
from: deployer,
args: [carbonController.address, vault, bnt, NATIVE_TOKEN_ADDRESS, bnt],
checkVersion: false
});

return true;
};

export default setDeploymentMetadata(__filename, func);
33 changes: 33 additions & 0 deletions deploy/tests/mainnet/0017-carbon-vortex-upgrade.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { CarbonVortex, ProxyAdmin } from '../../../components/Contracts';
import { DeployedContracts, describeDeployment } from '../../../utils/Deploy';
import { expect } from 'chai';
import { ethers } from 'hardhat';

describeDeployment(__filename, () => {
let proxyAdmin: ProxyAdmin;
let carbonVortex: CarbonVortex;

beforeEach(async () => {
proxyAdmin = await DeployedContracts.ProxyAdmin.deployed();
carbonVortex = await DeployedContracts.CarbonVortex.deployed();
});

it('should deploy and configure the carbon vortex contract', async () => {
expect(await proxyAdmin.getProxyAdmin(carbonVortex.address)).to.equal(proxyAdmin.address);
expect(await carbonVortex.version()).to.equal(3);
});

it('carbon vortex implementation should be initialized', async () => {
const implementationAddress = await proxyAdmin.getProxyImplementation(carbonVortex.address);
const carbonControllerImpl: CarbonVortex = await ethers.getContractAt('CarbonVortex', implementationAddress);
// hardcoding gas limit to avoid gas estimation attempts (which get rejected instead of reverted)
const tx = await carbonControllerImpl.initialize({ gasLimit: 6000000 });
await expect(tx.wait()).to.be.reverted;
});

it('cannot call postUpgrade on carbon vortex', async () => {
// hardcoding gas limit to avoid gas estimation attempts (which get rejected instead of reverted)
const tx = await carbonVortex.postUpgrade(true, '0x', { gasLimit: 6000000 });
await expect(tx.wait()).to.be.reverted;
});
});
7 changes: 1 addition & 6 deletions deploy/tests/mainnet/carbon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ import { ethers, getNamedAccounts } from 'hardhat';
let carbonVortex: CarbonVortex;

let daoMultisig: SignerWithAddress;
let oldVortex: string;

shouldHaveGap('CarbonController');
shouldHaveGap('Pairs', '_lastPairId');
Expand All @@ -58,7 +57,6 @@ import { ethers, getNamedAccounts } from 'hardhat';

before(async () => {
({ daoMultisig } = await getNamedSigners());
({ oldVortex } = await getNamedAccounts());
});

beforeEach(async () => {
Expand All @@ -77,10 +75,7 @@ import { ethers, getNamedAccounts } from 'hardhat';
await expectRoleMembers(carbonVortex, Roles.Upgradeable.ROLE_ADMIN, [daoMultisig.address]);

// expect carbon vortex to have fee manager role in Carbon
await expectRoleMembers(carbonController, Roles.CarbonController.ROLE_FEES_MANAGER, [
oldVortex,
carbonVortex.address
]);
await expectRoleMembers(carbonController, Roles.CarbonController.ROLE_FEES_MANAGER, [carbonVortex.address]);

// expect carbonController to have minter role in voucher
await expectRoleMembers(voucher, Roles.Voucher.ROLE_MINTER, [carbonController.address]);
Expand Down
Loading
Loading