diff --git a/deploy/004-single-token-converter.ts b/deploy/004-single-token-converter.ts index aeb68d66..a3670dae 100644 --- a/deploy/004-single-token-converter.ts +++ b/deploy/004-single-token-converter.ts @@ -108,5 +108,6 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { }; func.tags = ["SingleTokenConverter", "Converters"]; +func.id = "xvs-and-prime-converters"; // id required to prevent re-execution export default func; diff --git a/deploy/007-single-token-converter.ts b/deploy/007-single-token-converter.ts new file mode 100644 index 00000000..d3bf248b --- /dev/null +++ b/deploy/007-single-token-converter.ts @@ -0,0 +1,39 @@ +import { parseUnits } from "ethers/lib/utils"; +import { ethers } from "hardhat"; +import { DeployFunction } from "hardhat-deploy/types"; +import { HardhatRuntimeEnvironment } from "hardhat/types"; + +import { ADDRESS_ONE } from "../helpers/utils"; + +const MIN_AMOUNT_TO_CONVERT = parseUnits("10", 18).toString(); + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { deployments, getNamedAccounts } = hre; + const { deploy } = deployments; + const { deployer } = await getNamedAccounts(); + + const usdcAddress = (await ethers.getContractOrNull("USDC"))?.address || ADDRESS_ONE; + + const acmAddress = (await ethers.getContractOrNull("AccessControlManager"))?.address || ADDRESS_ONE; + const oracleAddress = (await ethers.getContractOrNull("ResilientOracle"))?.address || ADDRESS_ONE; + const singleTokenConverterBeacon = await ethers.getContract("SingleTokenConverterBeacon")!; + + const SingleTokenConverter = await ethers.getContractFactory("SingleTokenConverter"); + + const destinationAddress = (await ethers.getContractOrNull("VTreasury"))?.address || ADDRESS_ONE; + + const args: string[] = [acmAddress, oracleAddress, destinationAddress, usdcAddress, MIN_AMOUNT_TO_CONVERT]; + + await deploy("USDCTreasuryConverter", { + from: deployer, + contract: "BeaconProxy", + args: [singleTokenConverterBeacon.address, SingleTokenConverter.interface.encodeFunctionData("initialize", args)], + log: true, + autoMine: true, + }); +}; + +func.tags = ["SingleTokenConverter"]; +func.id = "usdc-treasury-converter"; // id required to prevent re-execution + +export default func; diff --git a/deployments/bscmainnet/.migrations.json b/deployments/bscmainnet/.migrations.json new file mode 100644 index 00000000..16bb81fc --- /dev/null +++ b/deployments/bscmainnet/.migrations.json @@ -0,0 +1,3 @@ +{ + "xvs-and-prime-converters": true +} diff --git a/yarn.lock b/yarn.lock index 2ee1ee29..603d35f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3146,7 +3146,7 @@ __metadata: languageName: node linkType: hard -"@venusprotocol/governance-contracts@npm:^1.4.0-dev.1": +"@venusprotocol/governance-contracts@npm:^1.4.0, @venusprotocol/governance-contracts@npm:^1.4.0-dev.1": version: 1.4.0 resolution: "@venusprotocol/governance-contracts@npm:1.4.0" dependencies: @@ -3206,7 +3206,42 @@ __metadata: languageName: node linkType: hard -"@venusprotocol/protocol-reserve@^2.0.0, @venusprotocol/protocol-reserve@workspace:.": +"@venusprotocol/protocol-reserve@npm:^1.1.0, @venusprotocol/protocol-reserve@npm:^1.4.0": + version: 1.5.0 + resolution: "@venusprotocol/protocol-reserve@npm:1.5.0" + dependencies: + "@nomiclabs/hardhat-ethers": ^2.2.3 + "@openzeppelin/contracts": ^4.8.3 + "@openzeppelin/contracts-upgradeable": ^4.8.3 + "@openzeppelin/hardhat-upgrades": ^1.21.0 + "@solidity-parser/parser": ^0.13.2 + "@venusprotocol/solidity-utilities": ^1.3.0 + ethers: ^5.7.0 + hardhat-deploy: ^0.11.14 + module-alias: ^2.2.2 + checksum: 813bc162103ab756e84bbb0e65fd416ed105cb4a06f9fe55d4a2a066af5bd63b11ca9f2c791376148114ce2b469970c8fe29c85ee1d47f9da9841f2eac8b01e0 + languageName: node + linkType: hard + +"@venusprotocol/protocol-reserve@npm:^2.0.0": + version: 2.2.0 + resolution: "@venusprotocol/protocol-reserve@npm:2.2.0" + dependencies: + "@nomiclabs/hardhat-ethers": ^2.2.3 + "@openzeppelin/contracts": ^4.8.3 + "@openzeppelin/contracts-upgradeable": ^4.8.3 + "@openzeppelin/hardhat-upgrades": ^1.21.0 + "@solidity-parser/parser": ^0.13.2 + "@venusprotocol/solidity-utilities": ^2.0.0 + "@venusprotocol/venus-protocol": ^7.5.0 + ethers: ^5.7.0 + hardhat-deploy: ^0.11.14 + module-alias: ^2.2.2 + checksum: ae875b95c1adabcc73ca52f74bf3f875c15e8a29cc6cbdf08038542692e5c397d986424194f1e1819659b0bc17d53770e75e7f74304ecbee24e9e84dd4ef79ed + languageName: node + linkType: hard + +"@venusprotocol/protocol-reserve@workspace:.": version: 0.0.0-use.local resolution: "@venusprotocol/protocol-reserve@workspace:." dependencies: @@ -3268,23 +3303,6 @@ __metadata: languageName: unknown linkType: soft -"@venusprotocol/protocol-reserve@npm:^1.1.0": - version: 1.5.0 - resolution: "@venusprotocol/protocol-reserve@npm:1.5.0" - dependencies: - "@nomiclabs/hardhat-ethers": ^2.2.3 - "@openzeppelin/contracts": ^4.8.3 - "@openzeppelin/contracts-upgradeable": ^4.8.3 - "@openzeppelin/hardhat-upgrades": ^1.21.0 - "@solidity-parser/parser": ^0.13.2 - "@venusprotocol/solidity-utilities": ^1.3.0 - ethers: ^5.7.0 - hardhat-deploy: ^0.11.14 - module-alias: ^2.2.2 - checksum: 813bc162103ab756e84bbb0e65fd416ed105cb4a06f9fe55d4a2a066af5bd63b11ca9f2c791376148114ce2b469970c8fe29c85ee1d47f9da9841f2eac8b01e0 - languageName: node - linkType: hard - "@venusprotocol/solidity-utilities@npm:2.0.0, @venusprotocol/solidity-utilities@npm:^2.0.0": version: 2.0.0 resolution: "@venusprotocol/solidity-utilities@npm:2.0.0" @@ -3299,7 +3317,7 @@ __metadata: languageName: node linkType: hard -"@venusprotocol/solidity-utilities@npm:^1.3.0": +"@venusprotocol/solidity-utilities@npm:^1.2.0, @venusprotocol/solidity-utilities@npm:^1.3.0": version: 1.3.0 resolution: "@venusprotocol/solidity-utilities@npm:1.3.0" checksum: d1109365a5e01959c47b25fb129373db93792e60bf1bc0ed324b63c2a64f6e4a7878ebf016cfade94bc41a2c1245d3e861fdc6b8c5844ac210ed1d73e7307e72 @@ -3313,6 +3331,21 @@ __metadata: languageName: node linkType: hard +"@venusprotocol/token-bridge@npm:^1.1.0": + version: 1.1.0 + resolution: "@venusprotocol/token-bridge@npm:1.1.0" + dependencies: + "@layerzerolabs/solidity-examples": ^1.0.0 + "@openzeppelin/contracts": ^4.8.3 + "@openzeppelin/contracts-upgradeable": ^4.8.3 + "@openzeppelin/hardhat-upgrades": ^1.21.0 + "@solidity-parser/parser": ^0.13.2 + ethers: ^5.7.0 + module-alias: ^2.2.2 + checksum: 86c0e758491b63ce7da57aacf764a4d040a54fdc89994c92a79363e4cbb33b84cd1db38630e76cbcc26f6f7a5a676b3ac96871ad98486701982ea4699bdc15f1 + languageName: node + linkType: hard + "@venusprotocol/token-bridge@npm:^2.0.0": version: 2.1.0 resolution: "@venusprotocol/token-bridge@npm:2.1.0" @@ -3343,6 +3376,24 @@ __metadata: languageName: node linkType: hard +"@venusprotocol/venus-protocol@npm:^7.5.0": + version: 7.5.0 + resolution: "@venusprotocol/venus-protocol@npm:7.5.0" + dependencies: + "@nomicfoundation/hardhat-ethers": ^3.0.0 + "@openzeppelin/contracts": 4.9.3 + "@openzeppelin/contracts-upgradeable": ^4.8.0 + "@venusprotocol/governance-contracts": ^1.4.0 + "@venusprotocol/protocol-reserve": ^1.4.0 + "@venusprotocol/solidity-utilities": ^1.2.0 + "@venusprotocol/token-bridge": ^1.1.0 + bignumber.js: ^9.1.2 + dotenv: ^16.0.1 + module-alias: ^2.2.2 + checksum: 0a39304b6f2e0db05a20dacf6d678f3245be878a121e7d1ddeb503c28974dea9cbec0228be3d03f77abb97d1adb8e6e8ad8708cb730a5833e62c4e6735fb6eea + languageName: node + linkType: hard + "@venusprotocol/venus-protocol@npm:^9.1.0": version: 9.1.0 resolution: "@venusprotocol/venus-protocol@npm:9.1.0"