@venusprotocol/isolated-pools 1.2.0-dev.2 → 1.2.0-dev.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deployments/bscmainnet/PoolLens.json +14 -14
- package/deployments/bscmainnet/RewardsDistributorImpl.json +1545 -0
- package/deployments/bscmainnet/RewardsDistributor_BSW_DeFi.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_BSW_DeFi_Proxy.json +277 -0
- package/deployments/bscmainnet/RewardsDistributor_BTT_Tron.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_BTT_Tron_Proxy.json +277 -0
- package/deployments/bscmainnet/RewardsDistributor_FLOKI_GameFi.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_FLOKI_GameFi_Proxy.json +277 -0
- package/deployments/bscmainnet/RewardsDistributor_HAY_Stablecoins.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_HAY_Stablecoins_Proxy.json +277 -0
- package/deployments/bscmainnet/RewardsDistributor_RACA_GameFi.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_RACA_GameFi_Proxy.json +277 -0
- package/deployments/bscmainnet/RewardsDistributor_SD_LiquidStakedBNB.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_SD_LiquidStakedBNB_Proxy.json +277 -0
- package/deployments/bscmainnet/RewardsDistributor_TRX_Tron.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_TRX_Tron_Proxy.json +277 -0
- package/deployments/bscmainnet/RewardsDistributor_USDD_Tron.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_USDD_Tron_Proxy.json +277 -0
- package/deployments/bscmainnet/RewardsDistributor_WIN_Tron.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_WIN_Tron_Proxy.json +277 -0
- package/deployments/bscmainnet/RewardsDistributor_ankrBNB_LiquidStakedBNB.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_ankrBNB_LiquidStakedBNB_Proxy.json +277 -0
- package/deployments/bscmainnet/RewardsDistributor_stkBNB_LiquidStakedBNB.json +1270 -0
- package/deployments/bscmainnet/RewardsDistributor_stkBNB_LiquidStakedBNB_Proxy.json +277 -0
- package/deployments/bscmainnet/solcInputs/014ac95d16ca74a5ed2395721633a333.json +207 -0
- package/deployments/bscmainnet.json +18301 -10483
- package/deployments/bsctestnet/MockSD.json +450 -0
- package/deployments/bsctestnet/PoolLens.json +14 -14
- package/deployments/bsctestnet/RewardsDistributorImpl.json +1545 -0
- package/deployments/bsctestnet/RewardsDistributor_BSW_DeFi.json +1270 -0
- package/deployments/bsctestnet/RewardsDistributor_BSW_DeFi_Proxy.json +277 -0
- package/deployments/bsctestnet/RewardsDistributor_BTT_Tron.json +1270 -0
- package/deployments/bsctestnet/RewardsDistributor_BTT_Tron_Proxy.json +277 -0
- package/deployments/bsctestnet/RewardsDistributor_FLOKI_GameFi.json +1270 -0
- package/deployments/bsctestnet/RewardsDistributor_FLOKI_GameFi_Proxy.json +277 -0
- package/deployments/bsctestnet/RewardsDistributor_RACA_GameFi.json +1270 -0
- package/deployments/bsctestnet/RewardsDistributor_RACA_GameFi_Proxy.json +277 -0
- package/deployments/bsctestnet/RewardsDistributor_SD_LiquidStakedBNB.json +1270 -0
- package/deployments/bsctestnet/RewardsDistributor_SD_LiquidStakedBNB_Proxy.json +277 -0
- package/deployments/bsctestnet/RewardsDistributor_TRX_Tron.json +1270 -0
- package/deployments/bsctestnet/RewardsDistributor_TRX_Tron_Proxy.json +277 -0
- package/deployments/bsctestnet/RewardsDistributor_USDD_Tron.json +1270 -0
- package/deployments/bsctestnet/RewardsDistributor_USDD_Tron_Proxy.json +277 -0
- package/deployments/bsctestnet/RewardsDistributor_WIN_Tron.json +1270 -0
- package/deployments/bsctestnet/RewardsDistributor_WIN_Tron_Proxy.json +277 -0
- package/deployments/bsctestnet/RewardsDistributor_ankrBNB_LiquidStakedBNB.json +1270 -0
- package/deployments/bsctestnet/RewardsDistributor_ankrBNB_LiquidStakedBNB_Proxy.json +277 -0
- package/deployments/bsctestnet/RewardsDistributor_stkBNB_LiquidStakedBNB.json +1270 -0
- package/deployments/bsctestnet/RewardsDistributor_stkBNB_LiquidStakedBNB_Proxy.json +277 -0
- package/deployments/bsctestnet/solcInputs/014ac95d16ca74a5ed2395721633a333.json +207 -0
- package/deployments/bsctestnet/solcInputs/863d7b2c0abdf05a4c8e289ad842b1db.json +207 -0
- package/deployments/bsctestnet.json +15993 -1881
- package/dist/deploy/001-deploy-mock-tokens.js +2 -1
- package/dist/deploy/010-deploy-reward-distributors.js +7 -0
- package/dist/deploy/011-initial-liquidity.js +31 -14
- package/dist/deploy/013-vip-based-config.js +53 -48
- package/dist/helpers/deploymentConfig.js +160 -7
- package/package.json +1 -1
|
@@ -14,7 +14,8 @@ const func = async function (hre) {
|
|
|
14
14
|
contract: "MockToken",
|
|
15
15
|
args: [token.name, token.symbol, token.decimals],
|
|
16
16
|
log: true,
|
|
17
|
-
autoMine: true,
|
|
17
|
+
autoMine: true,
|
|
18
|
+
skipIfAlreadyDeployed: true,
|
|
18
19
|
});
|
|
19
20
|
}
|
|
20
21
|
}
|
|
@@ -12,6 +12,12 @@ const func = async function (hre) {
|
|
|
12
12
|
const accessControlAddress = await (0, deploymentUtils_1.toAddress)(preconfiguredAddresses.AccessControlManager || "AccessControlManager", hre);
|
|
13
13
|
const proxyOwnerAddress = await (0, deploymentUtils_1.toAddress)(preconfiguredAddresses.NormalTimelock || "account:deployer", hre);
|
|
14
14
|
const pools = await (0, deploymentUtils_1.getUnregisteredRewardsDistributors)(poolConfig, hre);
|
|
15
|
+
await deploy("RewardsDistributorImpl", {
|
|
16
|
+
contract: "RewardsDistributor",
|
|
17
|
+
from: deployer,
|
|
18
|
+
autoMine: true,
|
|
19
|
+
log: true,
|
|
20
|
+
});
|
|
15
21
|
for (const pool of pools) {
|
|
16
22
|
const rewards = pool.rewards;
|
|
17
23
|
if (!rewards)
|
|
@@ -27,6 +33,7 @@ const func = async function (hre) {
|
|
|
27
33
|
from: deployer,
|
|
28
34
|
contract: "RewardsDistributor",
|
|
29
35
|
proxy: {
|
|
36
|
+
implementationName: `RewardsDistributorImpl`,
|
|
30
37
|
owner: proxyOwnerAddress,
|
|
31
38
|
proxyContract: "OpenZeppelinTransparentProxy",
|
|
32
39
|
execute: {
|
|
@@ -1,19 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ethers_1 = require("ethers");
|
|
3
4
|
const deploymentConfig_1 = require("../helpers/deploymentConfig");
|
|
4
5
|
const deploymentUtils_1 = require("../helpers/deploymentUtils");
|
|
6
|
+
const sumAmounts = async (tokens) => {
|
|
7
|
+
const amounts = {};
|
|
8
|
+
for (const { symbol, amount } of tokens) {
|
|
9
|
+
amounts[symbol] = amount.add(amounts[symbol] || 0);
|
|
10
|
+
}
|
|
11
|
+
return amounts;
|
|
12
|
+
};
|
|
5
13
|
const faucetTokens = async (deploymentConfig, hre) => {
|
|
6
14
|
const { poolConfig, tokensConfig } = deploymentConfig;
|
|
7
15
|
const unregisteredVTokens = await (0, deploymentUtils_1.getUnregisteredVTokens)(poolConfig, hre);
|
|
8
16
|
const vTokenConfigs = unregisteredVTokens.map((p) => p.vtokens).flat();
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
const assetsToFaucet = vTokenConfigs
|
|
18
|
+
.map((v) => (0, deploymentConfig_1.getTokenConfig)(v.asset, tokensConfig))
|
|
19
|
+
.filter((token) => token.isMock || token.faucetInitialLiquidity)
|
|
20
|
+
.map((token) => token.symbol);
|
|
21
|
+
const vTokensToFaucet = vTokenConfigs.filter((v) => assetsToFaucet.includes(v.asset));
|
|
22
|
+
const amounts = vTokensToFaucet.map((token) => ({
|
|
23
|
+
symbol: token.asset,
|
|
24
|
+
amount: ethers_1.BigNumber.from(token.initialSupply),
|
|
25
|
+
}));
|
|
26
|
+
const totalAmounts = await sumAmounts(amounts);
|
|
27
|
+
for (const [symbol, amount] of Object.entries(totalAmounts)) {
|
|
28
|
+
const tokenContract = await (0, deploymentUtils_1.getUnderlyingMock)(symbol);
|
|
29
|
+
console.log(`Minting ${amount} mock ${symbol} to owner`);
|
|
30
|
+
const tx = await tokenContract.faucet(amount, { gasLimit: 5000000 });
|
|
17
31
|
await tx.wait(1);
|
|
18
32
|
}
|
|
19
33
|
};
|
|
@@ -24,12 +38,15 @@ const approveTimelock = async (deploymentConfig, hre) => {
|
|
|
24
38
|
const { poolConfig, tokensConfig, preconfiguredAddresses } = deploymentConfig;
|
|
25
39
|
const unregisteredVTokens = await (0, deploymentUtils_1.getUnregisteredVTokens)(poolConfig, hre);
|
|
26
40
|
const vTokenConfigs = unregisteredVTokens.map((p) => p.vtokens).flat();
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
const amounts = vTokenConfigs.map((token) => ({
|
|
42
|
+
symbol: token.asset,
|
|
43
|
+
amount: ethers_1.BigNumber.from(token.initialSupply),
|
|
44
|
+
}));
|
|
45
|
+
const totalAmounts = await sumAmounts(amounts);
|
|
46
|
+
for (const [symbol, amount] of Object.entries(totalAmounts)) {
|
|
47
|
+
const tokenContract = await (0, deploymentUtils_1.getUnderlyingToken)(symbol, tokensConfig);
|
|
48
|
+
console.log(`Approving ${amount} ${symbol} to Timelock`);
|
|
49
|
+
const tx = await tokenContract.approve(preconfiguredAddresses.NormalTimelock, amount, { gasLimit: 5000000 });
|
|
33
50
|
await tx.wait(1);
|
|
34
51
|
}
|
|
35
52
|
};
|
|
@@ -4,13 +4,6 @@ const utils_1 = require("ethers/lib/utils");
|
|
|
4
4
|
const hardhat_1 = require("hardhat");
|
|
5
5
|
const deploymentConfig_1 = require("../helpers/deploymentConfig");
|
|
6
6
|
const deploymentUtils_1 = require("../helpers/deploymentUtils");
|
|
7
|
-
const toProposalActions = (commands) => {
|
|
8
|
-
const targets = commands.map(c => c.contract);
|
|
9
|
-
const values = commands.map(c => c.value);
|
|
10
|
-
const signatures = commands.map(c => c.signature);
|
|
11
|
-
const calldatas = commands.map(c => hardhat_1.ethers.utils.defaultAbiCoder.encode(c.argTypes, c.parameters));
|
|
12
|
-
return { targets, values, signatures, calldatas };
|
|
13
|
-
};
|
|
14
7
|
const addRewardsDistributor = async (rewardsDistributor, pool, rewardConfig) => {
|
|
15
8
|
const comptroller = await hardhat_1.ethers.getContract(`Comptroller_${pool.id}`);
|
|
16
9
|
console.log(`Adding a command to add ${rewardConfig.asset} rewards distributor to Comptroller_${pool.id}`);
|
|
@@ -41,14 +34,14 @@ const setRewardSpeed = async (pool, rewardsDistributor, rewardConfig) => {
|
|
|
41
34
|
value: 0,
|
|
42
35
|
};
|
|
43
36
|
};
|
|
44
|
-
const configureRewards = async (unregisteredRewardDistributors, hre) => {
|
|
37
|
+
const configureRewards = async (unregisteredRewardDistributors, owner, hre) => {
|
|
45
38
|
const commands = await Promise.all(unregisteredRewardDistributors.map(async (pool) => {
|
|
46
39
|
const rewards = pool.rewards || [];
|
|
47
40
|
const poolCommands = await Promise.all(rewards.map(async (rewardConfig) => {
|
|
48
41
|
const contractName = `RewardsDistributor_${rewardConfig.asset}_${pool.id}`;
|
|
49
42
|
const rewardsDistributor = await hardhat_1.ethers.getContract(contractName);
|
|
50
43
|
return [
|
|
51
|
-
...(await acceptOwnership(contractName, hre)),
|
|
44
|
+
...(await acceptOwnership(contractName, owner, hre)),
|
|
52
45
|
await addRewardsDistributor(rewardsDistributor, pool, rewardConfig),
|
|
53
46
|
await setRewardSpeed(pool, rewardsDistributor, rewardConfig),
|
|
54
47
|
];
|
|
@@ -57,15 +50,20 @@ const configureRewards = async (unregisteredRewardDistributors, hre) => {
|
|
|
57
50
|
}));
|
|
58
51
|
return commands.flat();
|
|
59
52
|
};
|
|
60
|
-
const acceptOwnership = async (contractName, hre) => {
|
|
53
|
+
const acceptOwnership = async (contractName, targetOwner, hre) => {
|
|
61
54
|
if (!hre.network.live) {
|
|
62
55
|
return [];
|
|
63
56
|
}
|
|
57
|
+
const abi = ["function owner() view returns (address)"];
|
|
58
|
+
const deployment = await hre.deployments.get(contractName);
|
|
59
|
+
const contract = await hardhat_1.ethers.getContractAt(abi, deployment.address);
|
|
60
|
+
if ((await contract.owner()) === targetOwner) {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
64
63
|
console.log(`Adding a command to accept the admin rights over ${contractName}`);
|
|
65
|
-
const contract = await hardhat_1.ethers.getContract(contractName);
|
|
66
64
|
return [
|
|
67
65
|
{
|
|
68
|
-
contract:
|
|
66
|
+
contract: deployment.address,
|
|
69
67
|
signature: "acceptOwnership()",
|
|
70
68
|
argTypes: [],
|
|
71
69
|
parameters: [],
|
|
@@ -100,12 +98,12 @@ const addPool = (poolRegistry, comptroller, pool) => {
|
|
|
100
98
|
value: 0,
|
|
101
99
|
};
|
|
102
100
|
};
|
|
103
|
-
const addPools = async (unregisteredPools, hre) => {
|
|
101
|
+
const addPools = async (unregisteredPools, poolsOwner, hre) => {
|
|
104
102
|
const poolRegistry = await hardhat_1.ethers.getContract("PoolRegistry");
|
|
105
103
|
const commands = await Promise.all(unregisteredPools.map(async (pool) => {
|
|
106
104
|
const comptroller = await hardhat_1.ethers.getContract(`Comptroller_${pool.id}`);
|
|
107
105
|
return [
|
|
108
|
-
...(await acceptOwnership(`Comptroller_${pool.id}`, hre)),
|
|
106
|
+
...(await acceptOwnership(`Comptroller_${pool.id}`, poolsOwner, hre)),
|
|
109
107
|
await setOracle(comptroller, pool),
|
|
110
108
|
addPool(poolRegistry, comptroller, pool),
|
|
111
109
|
];
|
|
@@ -135,7 +133,7 @@ const transferInitialLiquidity = async (vTokenConfig, deploymentConfig, hre) =>
|
|
|
135
133
|
return [
|
|
136
134
|
{
|
|
137
135
|
contract: preconfiguredAddresses.VTreasury,
|
|
138
|
-
signature: "
|
|
136
|
+
signature: "withdrawTreasuryBEP20(address,uint256,address)",
|
|
139
137
|
argTypes: ["address", "uint256", "address"],
|
|
140
138
|
parameters: [tokenContract.address, initialSupply, preconfiguredAddresses.NormalTimelock],
|
|
141
139
|
value: 0,
|
|
@@ -149,8 +147,15 @@ const approvePoolRegistry = async (poolRegistry, vTokenConfig, deploymentConfig)
|
|
|
149
147
|
const { asset, initialSupply } = vTokenConfig;
|
|
150
148
|
const token = (0, deploymentConfig_1.getTokenConfig)(asset, tokensConfig);
|
|
151
149
|
const tokenContract = await (0, deploymentUtils_1.getUnderlyingToken)(token.symbol, tokensConfig);
|
|
152
|
-
console.log(`Adding
|
|
150
|
+
console.log(`Adding commands to approve ${initialSupply} ${token.symbol} to PoolRegistry`);
|
|
153
151
|
return [
|
|
152
|
+
{
|
|
153
|
+
contract: tokenContract.address,
|
|
154
|
+
signature: "approve(address,uint256)",
|
|
155
|
+
argTypes: ["address", "uint256"],
|
|
156
|
+
parameters: [poolRegistry.address, 0],
|
|
157
|
+
value: 0,
|
|
158
|
+
},
|
|
154
159
|
{
|
|
155
160
|
contract: tokenContract.address,
|
|
156
161
|
signature: "approve(address,uint256)",
|
|
@@ -191,21 +196,38 @@ const addMarkets = async (unregisteredVTokens, deploymentConfig, hre) => {
|
|
|
191
196
|
}));
|
|
192
197
|
return poolCommands.flat();
|
|
193
198
|
};
|
|
199
|
+
const makeRole = (mainnetBehavior, targetContract, method) => {
|
|
200
|
+
if (mainnetBehavior && targetContract === hardhat_1.ethers.constants.AddressZero) {
|
|
201
|
+
return hardhat_1.ethers.utils.keccak256(hardhat_1.ethers.utils.solidityPack(["bytes32", "string"], [hardhat_1.ethers.constants.HashZero, method]));
|
|
202
|
+
}
|
|
203
|
+
return hardhat_1.ethers.utils.keccak256(hardhat_1.ethers.utils.solidityPack(["address", "string"], [targetContract, method]));
|
|
204
|
+
};
|
|
205
|
+
const hasPermission = async (accessControl, targetContract, method, caller, hre) => {
|
|
206
|
+
const role = makeRole(hre.network.name === "bscmainnet", targetContract, method);
|
|
207
|
+
return accessControl.hasRole(role, caller);
|
|
208
|
+
};
|
|
194
209
|
const configureAccessControls = async (deploymentConfig, hre) => {
|
|
195
210
|
const { accessControlConfig, preconfiguredAddresses } = deploymentConfig;
|
|
196
|
-
const
|
|
197
|
-
|
|
211
|
+
const accessControlManagerAddress = await (0, deploymentUtils_1.toAddress)(preconfiguredAddresses.AccessControlManager || "AccessControlManager", hre);
|
|
212
|
+
const accessControlManager = await hardhat_1.ethers.getContractAt("AccessControlManager", accessControlManagerAddress);
|
|
213
|
+
const commands = await Promise.all(accessControlConfig.map(async (entry) => {
|
|
198
214
|
const { caller, target, method } = entry;
|
|
199
215
|
const callerAddress = await (0, deploymentUtils_1.toAddress)(caller, hre);
|
|
200
216
|
const targetAddress = await (0, deploymentUtils_1.toAddress)(target, hre);
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
217
|
+
if (await hasPermission(accessControlManager, targetAddress, method, callerAddress, hre)) {
|
|
218
|
+
return [];
|
|
219
|
+
}
|
|
220
|
+
return [
|
|
221
|
+
{
|
|
222
|
+
contract: accessControlManagerAddress,
|
|
223
|
+
signature: "giveCallPermission(address,string,address)",
|
|
224
|
+
argTypes: ["address", "string", "address"],
|
|
225
|
+
parameters: [targetAddress, method, callerAddress],
|
|
226
|
+
value: 0,
|
|
227
|
+
},
|
|
228
|
+
];
|
|
208
229
|
}));
|
|
230
|
+
return commands.flat();
|
|
209
231
|
};
|
|
210
232
|
const logCommand = (prefix, command) => {
|
|
211
233
|
const valueStr = command.value == 0 ? "" : "{ value: " + (0, utils_1.parseEther)(command.value.toString()) + " }";
|
|
@@ -237,34 +259,17 @@ const func = async function (hre) {
|
|
|
237
259
|
const unregisteredPools = await (0, deploymentUtils_1.getUnregisteredPools)(poolConfig, hre);
|
|
238
260
|
const unregisteredVTokens = await (0, deploymentUtils_1.getUnregisteredVTokens)(poolConfig, hre);
|
|
239
261
|
const unregisteredRewardsDistributors = await (0, deploymentUtils_1.getUnregisteredRewardsDistributors)(poolConfig, hre);
|
|
262
|
+
const owner = preconfiguredAddresses.NormalTimelock || deployer;
|
|
240
263
|
const commands = [
|
|
241
264
|
...(await configureAccessControls(deploymentConfig, hre)),
|
|
242
|
-
...(await acceptOwnership("PoolRegistry", hre)),
|
|
243
|
-
...(await addPools(unregisteredPools, hre)),
|
|
265
|
+
...(await acceptOwnership("PoolRegistry", owner, hre)),
|
|
266
|
+
...(await addPools(unregisteredPools, owner, hre)),
|
|
244
267
|
...(await addMarkets(unregisteredVTokens, deploymentConfig, hre)),
|
|
245
|
-
...(await configureRewards(unregisteredRewardsDistributors, hre)),
|
|
268
|
+
...(await configureRewards(unregisteredRewardsDistributors, owner, hre)),
|
|
246
269
|
];
|
|
247
|
-
const proposalActions = toProposalActions(commands);
|
|
248
|
-
console.log("targets", proposalActions.targets);
|
|
249
|
-
console.log("signatures", proposalActions.signatures);
|
|
250
|
-
console.log("calldatas", proposalActions.calldatas);
|
|
251
|
-
console.log("values", proposalActions.values);
|
|
252
270
|
if (hre.network.live) {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
const meta = {
|
|
256
|
-
version: "v2",
|
|
257
|
-
title: "Isolated lending, phase 1",
|
|
258
|
-
description: ``,
|
|
259
|
-
forDescription: "I agree that Venus Protocol should proceed with IL Phase 1",
|
|
260
|
-
againstDescription: "I do not think that Venus Protocol should proceed with IL Phase 1",
|
|
261
|
-
abstainDescription: "I am indifferent to whether Venus Protocol proceeds with IL Phase 1",
|
|
262
|
-
};
|
|
263
|
-
const signer = await hardhat_1.ethers.getSigner(deployer);
|
|
264
|
-
const tx = await governorBravo
|
|
265
|
-
.connect(signer)
|
|
266
|
-
.propose(proposalActions.targets, proposalActions.values, proposalActions.signatures, proposalActions.calldatas, JSON.stringify(meta), NORMAL_VIP);
|
|
267
|
-
await tx.wait();
|
|
271
|
+
console.log("Please propose a VIP with the following commands:");
|
|
272
|
+
console.log(JSON.stringify(commands.map(c => ({ target: c.contract, signature: c.signature, params: c.parameters, value: c.value }))));
|
|
268
273
|
}
|
|
269
274
|
else {
|
|
270
275
|
await executeCommands(commands, hre);
|
|
@@ -574,6 +574,13 @@ exports.globalConfig = {
|
|
|
574
574
|
decimals: 18,
|
|
575
575
|
tokenAddress: "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd",
|
|
576
576
|
},
|
|
577
|
+
{
|
|
578
|
+
isMock: true,
|
|
579
|
+
name: "Stader (Wormhole)",
|
|
580
|
+
symbol: "SD",
|
|
581
|
+
decimals: 18,
|
|
582
|
+
tokenAddress: hardhat_1.ethers.constants.AddressZero,
|
|
583
|
+
},
|
|
577
584
|
],
|
|
578
585
|
poolConfig: [
|
|
579
586
|
{
|
|
@@ -639,8 +646,8 @@ exports.globalConfig = {
|
|
|
639
646
|
{
|
|
640
647
|
asset: "HAY",
|
|
641
648
|
markets: ["HAY"],
|
|
642
|
-
supplySpeeds: ["
|
|
643
|
-
borrowSpeeds: ["
|
|
649
|
+
supplySpeeds: ["1860119047619047"],
|
|
650
|
+
borrowSpeeds: ["1860119047619047"], // 1500 HAY over 28 days (806400 blocks)
|
|
644
651
|
},
|
|
645
652
|
],
|
|
646
653
|
},
|
|
@@ -754,6 +761,14 @@ exports.globalConfig = {
|
|
|
754
761
|
vTokenReceiver: "0xAE1c38847Fb90A13a2a1D7E5552cCD80c62C6508",
|
|
755
762
|
},
|
|
756
763
|
],
|
|
764
|
+
rewards: [
|
|
765
|
+
{
|
|
766
|
+
asset: "BSW",
|
|
767
|
+
markets: ["BSW"],
|
|
768
|
+
supplySpeeds: ["16753472222222222"],
|
|
769
|
+
borrowSpeeds: ["16753472222222222"], // 14475 BSW over 30 days (864000 blocks)
|
|
770
|
+
},
|
|
771
|
+
],
|
|
757
772
|
},
|
|
758
773
|
{
|
|
759
774
|
id: "GameFi",
|
|
@@ -831,6 +846,20 @@ exports.globalConfig = {
|
|
|
831
846
|
vTokenReceiver: "0x3DdfA8eC3052539b6C9549F12cEA2C295cfF5296",
|
|
832
847
|
},
|
|
833
848
|
],
|
|
849
|
+
rewards: [
|
|
850
|
+
{
|
|
851
|
+
asset: "FLOKI",
|
|
852
|
+
markets: ["FLOKI"],
|
|
853
|
+
supplySpeeds: ["230305570295138888888"],
|
|
854
|
+
borrowSpeeds: ["230305570295138888888"], // 198984012.735 FLOKI over 30 days (864000 blocks), 18 decimals on testnet
|
|
855
|
+
},
|
|
856
|
+
{
|
|
857
|
+
asset: "RACA",
|
|
858
|
+
markets: ["RACA"],
|
|
859
|
+
supplySpeeds: ["6076388888888888888"],
|
|
860
|
+
borrowSpeeds: ["6076388888888888888"], // 5250000 RACA over 30 days (864000 blocks)
|
|
861
|
+
},
|
|
862
|
+
],
|
|
834
863
|
},
|
|
835
864
|
{
|
|
836
865
|
id: "LiquidStakedBNB",
|
|
@@ -942,6 +971,26 @@ exports.globalConfig = {
|
|
|
942
971
|
vTokenReceiver: "0x3DdfA8eC3052539b6C9549F12cEA2C295cfF5296",
|
|
943
972
|
},
|
|
944
973
|
],
|
|
974
|
+
rewards: [
|
|
975
|
+
{
|
|
976
|
+
asset: "ankrBNB",
|
|
977
|
+
markets: ["ankrBNB"],
|
|
978
|
+
supplySpeeds: ["26620370370370"],
|
|
979
|
+
borrowSpeeds: ["26620370370370"], // 23 ankrBNB over 30 days (864000 blocks)
|
|
980
|
+
},
|
|
981
|
+
{
|
|
982
|
+
asset: "stkBNB",
|
|
983
|
+
markets: ["stkBNB"],
|
|
984
|
+
supplySpeeds: ["4629629629629"],
|
|
985
|
+
borrowSpeeds: ["1504629629629"], // 1.3 stkBNB over 30 days (864000 blocks)
|
|
986
|
+
},
|
|
987
|
+
{
|
|
988
|
+
asset: "SD",
|
|
989
|
+
markets: ["BNBx"],
|
|
990
|
+
supplySpeeds: ["3703703703703703"],
|
|
991
|
+
borrowSpeeds: ["3703703703703703"], // 3200 SD over 30 days (864000 blocks)
|
|
992
|
+
},
|
|
993
|
+
],
|
|
945
994
|
},
|
|
946
995
|
{
|
|
947
996
|
id: "Tron",
|
|
@@ -1053,6 +1102,32 @@ exports.globalConfig = {
|
|
|
1053
1102
|
vTokenReceiver: "0x3DdfA8eC3052539b6C9549F12cEA2C295cfF5296",
|
|
1054
1103
|
},
|
|
1055
1104
|
],
|
|
1105
|
+
rewards: [
|
|
1106
|
+
{
|
|
1107
|
+
asset: "BTT",
|
|
1108
|
+
markets: ["BTT"],
|
|
1109
|
+
supplySpeeds: ["19969071901620370370370"],
|
|
1110
|
+
borrowSpeeds: ["19969071901620370370370"], // 17253278123 BTT over 30 days (864000 blocks)
|
|
1111
|
+
},
|
|
1112
|
+
{
|
|
1113
|
+
asset: "WIN",
|
|
1114
|
+
markets: ["WIN"],
|
|
1115
|
+
supplySpeeds: ["24805131365740740740"],
|
|
1116
|
+
borrowSpeeds: ["24805131365740740740"], // 21431633.5 WIN over 30 days (864000 blocks)
|
|
1117
|
+
},
|
|
1118
|
+
{
|
|
1119
|
+
asset: "TRX",
|
|
1120
|
+
markets: ["TRX"],
|
|
1121
|
+
supplySpeeds: ["45461"],
|
|
1122
|
+
borrowSpeeds: ["45461"], // 39278.5 TRX over 30 days (864000 blocks)
|
|
1123
|
+
},
|
|
1124
|
+
{
|
|
1125
|
+
asset: "USDD",
|
|
1126
|
+
markets: ["USDD"],
|
|
1127
|
+
supplySpeeds: ["14467592592592592"],
|
|
1128
|
+
borrowSpeeds: ["14467592592592592"], // 12500 USDD over 30 days (864000 blocks)
|
|
1129
|
+
},
|
|
1130
|
+
],
|
|
1056
1131
|
},
|
|
1057
1132
|
],
|
|
1058
1133
|
accessControlConfig: [
|
|
@@ -1191,6 +1266,13 @@ exports.globalConfig = {
|
|
|
1191
1266
|
decimals: 18,
|
|
1192
1267
|
tokenAddress: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
|
|
1193
1268
|
},
|
|
1269
|
+
{
|
|
1270
|
+
isMock: false,
|
|
1271
|
+
name: "Stader (Wormhole)",
|
|
1272
|
+
symbol: "SD",
|
|
1273
|
+
decimals: 18,
|
|
1274
|
+
tokenAddress: "0x3BC5AC0dFdC871B365d159f728dd1B9A0B5481E8",
|
|
1275
|
+
},
|
|
1194
1276
|
],
|
|
1195
1277
|
poolConfig: [
|
|
1196
1278
|
{
|
|
@@ -1252,7 +1334,14 @@ exports.globalConfig = {
|
|
|
1252
1334
|
vTokenReceiver: "0x3DdfA8eC3052539b6C9549F12cEA2C295cfF5296",
|
|
1253
1335
|
},
|
|
1254
1336
|
],
|
|
1255
|
-
rewards: [
|
|
1337
|
+
rewards: [
|
|
1338
|
+
{
|
|
1339
|
+
asset: "HAY",
|
|
1340
|
+
markets: ["HAY"],
|
|
1341
|
+
supplySpeeds: ["1860119047619047"],
|
|
1342
|
+
borrowSpeeds: ["1860119047619047"], // 1500 HAY over 28 days (806400 blocks)
|
|
1343
|
+
},
|
|
1344
|
+
],
|
|
1256
1345
|
},
|
|
1257
1346
|
{
|
|
1258
1347
|
id: "DeFi",
|
|
@@ -1364,7 +1453,14 @@ exports.globalConfig = {
|
|
|
1364
1453
|
vTokenReceiver: "0xAE1c38847Fb90A13a2a1D7E5552cCD80c62C6508",
|
|
1365
1454
|
},
|
|
1366
1455
|
],
|
|
1367
|
-
rewards: [
|
|
1456
|
+
rewards: [
|
|
1457
|
+
{
|
|
1458
|
+
asset: "BSW",
|
|
1459
|
+
markets: ["BSW"],
|
|
1460
|
+
supplySpeeds: ["16753472222222222"],
|
|
1461
|
+
borrowSpeeds: ["16753472222222222"], // 14475 BSW over 30 days (864000 blocks)
|
|
1462
|
+
},
|
|
1463
|
+
],
|
|
1368
1464
|
},
|
|
1369
1465
|
{
|
|
1370
1466
|
id: "GameFi",
|
|
@@ -1442,7 +1538,20 @@ exports.globalConfig = {
|
|
|
1442
1538
|
vTokenReceiver: "0x3DdfA8eC3052539b6C9549F12cEA2C295cfF5296",
|
|
1443
1539
|
},
|
|
1444
1540
|
],
|
|
1445
|
-
rewards: [
|
|
1541
|
+
rewards: [
|
|
1542
|
+
{
|
|
1543
|
+
asset: "FLOKI",
|
|
1544
|
+
markets: ["FLOKI"],
|
|
1545
|
+
supplySpeeds: ["230305570295"],
|
|
1546
|
+
borrowSpeeds: ["230305570295"], // 198984012.735 FLOKI over 30 days (864000 blocks)
|
|
1547
|
+
},
|
|
1548
|
+
{
|
|
1549
|
+
asset: "RACA",
|
|
1550
|
+
markets: ["RACA"],
|
|
1551
|
+
supplySpeeds: ["6076388888888888888"],
|
|
1552
|
+
borrowSpeeds: ["6076388888888888888"], // 5250000 RACA over 30 days (864000 blocks)
|
|
1553
|
+
},
|
|
1554
|
+
],
|
|
1446
1555
|
},
|
|
1447
1556
|
{
|
|
1448
1557
|
id: "LiquidStakedBNB",
|
|
@@ -1554,7 +1663,26 @@ exports.globalConfig = {
|
|
|
1554
1663
|
vTokenReceiver: "0x3DdfA8eC3052539b6C9549F12cEA2C295cfF5296",
|
|
1555
1664
|
},
|
|
1556
1665
|
],
|
|
1557
|
-
rewards: [
|
|
1666
|
+
rewards: [
|
|
1667
|
+
{
|
|
1668
|
+
asset: "ankrBNB",
|
|
1669
|
+
markets: ["ankrBNB"],
|
|
1670
|
+
supplySpeeds: ["26620370370370"],
|
|
1671
|
+
borrowSpeeds: ["26620370370370"], // 23 ankrBNB over 30 days (864000 blocks)
|
|
1672
|
+
},
|
|
1673
|
+
{
|
|
1674
|
+
asset: "stkBNB",
|
|
1675
|
+
markets: ["stkBNB"],
|
|
1676
|
+
supplySpeeds: ["4629629629629"],
|
|
1677
|
+
borrowSpeeds: ["1504629629629"], // 1.3 stkBNB over 30 days (864000 blocks)
|
|
1678
|
+
},
|
|
1679
|
+
{
|
|
1680
|
+
asset: "SD",
|
|
1681
|
+
markets: ["BNBx"],
|
|
1682
|
+
supplySpeeds: ["3703703703703703"],
|
|
1683
|
+
borrowSpeeds: ["3703703703703703"], // 3200 SD over 30 days (864000 blocks)
|
|
1684
|
+
},
|
|
1685
|
+
],
|
|
1558
1686
|
},
|
|
1559
1687
|
{
|
|
1560
1688
|
id: "Tron",
|
|
@@ -1666,7 +1794,32 @@ exports.globalConfig = {
|
|
|
1666
1794
|
vTokenReceiver: "0x3DdfA8eC3052539b6C9549F12cEA2C295cfF5296",
|
|
1667
1795
|
},
|
|
1668
1796
|
],
|
|
1669
|
-
rewards: [
|
|
1797
|
+
rewards: [
|
|
1798
|
+
{
|
|
1799
|
+
asset: "BTT",
|
|
1800
|
+
markets: ["BTT"],
|
|
1801
|
+
supplySpeeds: ["19969071901620370370370"],
|
|
1802
|
+
borrowSpeeds: ["19969071901620370370370"], // 17253278123 BTT over 30 days (864000 blocks)
|
|
1803
|
+
},
|
|
1804
|
+
{
|
|
1805
|
+
asset: "WIN",
|
|
1806
|
+
markets: ["WIN"],
|
|
1807
|
+
supplySpeeds: ["24805131365740740740"],
|
|
1808
|
+
borrowSpeeds: ["24805131365740740740"], // 21431633.5 WIN over 30 days (864000 blocks)
|
|
1809
|
+
},
|
|
1810
|
+
{
|
|
1811
|
+
asset: "TRX",
|
|
1812
|
+
markets: ["TRX"],
|
|
1813
|
+
supplySpeeds: ["45461"],
|
|
1814
|
+
borrowSpeeds: ["45461"], // 39278.5 TRX over 30 days (864000 blocks)
|
|
1815
|
+
},
|
|
1816
|
+
{
|
|
1817
|
+
asset: "USDD",
|
|
1818
|
+
markets: ["USDD"],
|
|
1819
|
+
supplySpeeds: ["14467592592592592"],
|
|
1820
|
+
borrowSpeeds: ["14467592592592592"], // 12500 USDD over 30 days (864000 blocks)
|
|
1821
|
+
},
|
|
1822
|
+
],
|
|
1670
1823
|
},
|
|
1671
1824
|
],
|
|
1672
1825
|
accessControlConfig: [
|