add reset protection mechanism
This commit is contained in:
@@ -7,11 +7,11 @@
|
||||
|
||||
// import * as assert from 'assert';
|
||||
|
||||
import { decimalStr } from '../utils/Converter';
|
||||
import { decimalStr, mweiStr } from '../utils/Converter';
|
||||
import { DPPContext, getDPPContext } from '../utils/DPPContext';
|
||||
import { assert } from 'chai';
|
||||
import { EXTERNAL_VALUE_NAME, getContractWithAddress, MINTABLE_ERC20_CONTRACT_NAME, newContract } from '../utils/Contracts';
|
||||
import { sendParam } from '../../script/utils';
|
||||
// import { sendParam } from '../../script/utils';
|
||||
const truffleAssert = require('truffle-assertions');
|
||||
|
||||
let lp: string;
|
||||
@@ -29,7 +29,7 @@ async function init(ctx: DPPContext): Promise<void> {
|
||||
var kValue = decimalStr("0.2")
|
||||
await ctx.transferBaseToDPP(lp, baseAmount)
|
||||
await ctx.transferQuoteToDPP(lp, quoteAmount)
|
||||
await ctx.DPP.methods.reset(lp, lpFeeRate, mtFeeRate, iValue, kValue, "0", "0").send(ctx.sendParam(ctx.Deployer))
|
||||
await ctx.DPP.methods.reset(lp, lpFeeRate, mtFeeRate, iValue, kValue, "0", "0", "0", "0").send(ctx.sendParam(ctx.Deployer))
|
||||
}
|
||||
|
||||
describe("DPP Trader", () => {
|
||||
@@ -59,7 +59,7 @@ describe("DPP Trader", () => {
|
||||
var kValue = decimalStr("0.3")
|
||||
await ctx.transferBaseToDPP(lp, decimalStr("10"))
|
||||
await ctx.transferQuoteToDPP(lp, decimalStr("1000"))
|
||||
await ctx.DPP.methods.reset(lp, lpFeeRate, mtFeeRate, iValue, kValue, "0", "0").send(ctx.sendParam(ctx.Deployer))
|
||||
await ctx.DPP.methods.reset(lp, lpFeeRate, mtFeeRate, iValue, kValue, "0", "0", "0", "0").send(ctx.sendParam(ctx.Deployer))
|
||||
|
||||
var state = await ctx.DPP.methods.getPMMState().call()
|
||||
assert.equal(state.B, decimalStr("20"))
|
||||
@@ -77,7 +77,7 @@ describe("DPP Trader", () => {
|
||||
var mtFeeRate = decimalStr("0.02")
|
||||
var iValue = decimalStr("300")
|
||||
var kValue = decimalStr("0.3")
|
||||
await ctx.DPP.methods.reset(lp, lpFeeRate, mtFeeRate, iValue, kValue, decimalStr("1"), decimalStr("100")).send(ctx.sendParam(ctx.Deployer))
|
||||
await ctx.DPP.methods.reset(lp, lpFeeRate, mtFeeRate, iValue, kValue, decimalStr("1"), decimalStr("100"), "0", "0").send(ctx.sendParam(ctx.Deployer))
|
||||
|
||||
var state = await ctx.DPP.methods.getPMMState().call()
|
||||
assert.equal(state.B, decimalStr("9"))
|
||||
@@ -95,7 +95,7 @@ describe("DPP Trader", () => {
|
||||
var mtFeeRate = decimalStr("0.02")
|
||||
var iValue = decimalStr("300")
|
||||
var kValue = decimalStr("0.3")
|
||||
await ctx.DPP.methods.reset(lp, lpFeeRate, mtFeeRate, iValue, kValue, "0", "0").send(ctx.sendParam(ctx.Deployer))
|
||||
await ctx.DPP.methods.reset(lp, lpFeeRate, mtFeeRate, iValue, kValue, "0", "0", "0", "0").send(ctx.sendParam(ctx.Deployer))
|
||||
|
||||
var state = await ctx.DPP.methods.getPMMState().call()
|
||||
assert.equal(state.B, decimalStr("10"))
|
||||
@@ -138,16 +138,16 @@ describe("DPP Trader", () => {
|
||||
|
||||
it("i or k can not out of range", async () => {
|
||||
await truffleAssert.reverts(
|
||||
ctx.DPP.methods.reset(lp, "0", "0", "0", decimalStr("1"), "0", "0").send(ctx.sendParam(ctx.Deployer)), "I_OUT_OF_RANGE"
|
||||
ctx.DPP.methods.reset(lp, "0", "0", "0", decimalStr("1"), "0", "0" ,"0", "0").send(ctx.sendParam(ctx.Deployer)), "I_OUT_OF_RANGE"
|
||||
)
|
||||
await truffleAssert.reverts(
|
||||
ctx.DPP.methods.reset(lp, "0", "0", "10000000000000000000000000000000000000", decimalStr("1"), "0", "0").send(ctx.sendParam(ctx.Deployer)), "I_OUT_OF_RANGE"
|
||||
ctx.DPP.methods.reset(lp, "0", "0", "10000000000000000000000000000000000000", decimalStr("1"), "0", "0", "0", "0").send(ctx.sendParam(ctx.Deployer)), "I_OUT_OF_RANGE"
|
||||
)
|
||||
await truffleAssert.reverts(
|
||||
ctx.DPP.methods.reset(lp, "0", "0", decimalStr("1"), "1", "0", "0").send(ctx.sendParam(ctx.Deployer)), "K_OUT_OF_RANGE"
|
||||
ctx.DPP.methods.reset(lp, "0", "0", decimalStr("1"), "1", "0", "0", "0", "0").send(ctx.sendParam(ctx.Deployer)), "K_OUT_OF_RANGE"
|
||||
)
|
||||
await truffleAssert.reverts(
|
||||
ctx.DPP.methods.reset(lp, "0", "0", decimalStr("1"), decimalStr("2"), "0", "0").send(ctx.sendParam(ctx.Deployer)), "K_OUT_OF_RANGE"
|
||||
ctx.DPP.methods.reset(lp, "0", "0", decimalStr("1"), decimalStr("2"), "0", "0", "0", "0").send(ctx.sendParam(ctx.Deployer)), "K_OUT_OF_RANGE"
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -153,15 +153,11 @@ describe("DODOProxyV2.0", () => {
|
||||
assert.equal(beforeState.Q0,mweiStr("30000"));
|
||||
await logGas(await ctx.DODOProxyV2.methods.resetDODOPrivatePool(
|
||||
dpp_DODO_USDT,
|
||||
config.lpFeeRate,
|
||||
config.mtFeeRate,
|
||||
mweiStr("0.3"),
|
||||
decimalStr("0.2"),
|
||||
decimalStr("1000"),
|
||||
mweiStr("1000"),
|
||||
decimalStr("0"),
|
||||
mweiStr("0"),
|
||||
[config.lpFeeRate, config.mtFeeRate, mweiStr("0.3"), decimalStr("0.2")],
|
||||
[decimalStr("1000"), mweiStr("1000"), decimalStr("0"), mweiStr("0")],
|
||||
0,
|
||||
decimalStr("100000"),
|
||||
mweiStr("0"),
|
||||
Math.floor(new Date().getTime()/1000 + 60 * 10)
|
||||
),ctx.sendParam(project),"resetDPP");
|
||||
var afterState = await DPP_DODO_USDT.methods.getPMMState().call();
|
||||
@@ -179,15 +175,11 @@ describe("DODOProxyV2.0", () => {
|
||||
var b_ETH = await ctx.Web3.eth.getBalance(project);
|
||||
var tx = await logGas(await ctx.DODOProxyV2.methods.resetDODOPrivatePool(
|
||||
dpp_WETH_USDT,
|
||||
config.lpFeeRate,
|
||||
config.mtFeeRate,
|
||||
mweiStr("600"),
|
||||
decimalStr("0.2"),
|
||||
decimalStr("0"),
|
||||
mweiStr("1000"),
|
||||
decimalStr("1"),
|
||||
mweiStr("0"),
|
||||
[config.lpFeeRate, config.mtFeeRate, mweiStr("600"), decimalStr("0.2")],
|
||||
[decimalStr("0"), mweiStr("1000"), decimalStr("1"), mweiStr("0")],
|
||||
3,
|
||||
decimalStr("0"),
|
||||
mweiStr("0"),
|
||||
Math.floor(new Date().getTime()/1000 + 60 * 10)
|
||||
),ctx.sendParam(project),"resetDPP-OutETH");
|
||||
var afterState = await DPP_WETH_USDT.methods.getPMMState().call();
|
||||
@@ -209,15 +201,11 @@ describe("DODOProxyV2.0", () => {
|
||||
var b_ETH = await ctx.Web3.eth.getBalance(project);
|
||||
var tx = await logGas(await ctx.DODOProxyV2.methods.resetDODOPrivatePool(
|
||||
dpp_WETH_USDT,
|
||||
config.lpFeeRate,
|
||||
config.mtFeeRate,
|
||||
mweiStr("600"),
|
||||
decimalStr("0.2"),
|
||||
decimalStr("1"),
|
||||
mweiStr("1000"),
|
||||
[config.lpFeeRate, config.mtFeeRate, mweiStr("600"), decimalStr("0.2")],
|
||||
[decimalStr("1"), mweiStr("1000"), decimalStr("0"), mweiStr("0")],
|
||||
1,
|
||||
decimalStr("0"),
|
||||
mweiStr("0"),
|
||||
1,
|
||||
Math.floor(new Date().getTime()/1000 + 60 * 10)
|
||||
),ctx.sendParam(project,"1"),"resetDPP-InETH");
|
||||
var afterState = await DPP_WETH_USDT.methods.getPMMState().call();
|
||||
|
||||
@@ -92,6 +92,13 @@ export class DPPContext {
|
||||
this.Maintainer = allAccounts[1];
|
||||
this.SpareAccounts = allAccounts.slice(2, 10);
|
||||
|
||||
await gasPriceSource.methods.init(this.Deployer, MAX_UINT256).send(this.sendParam(this.Deployer))
|
||||
await lpFeeRateModel.methods.init(this.DPP.options.address, config.lpFeeRate).send(this.sendParam(this.Deployer))
|
||||
await mtFeeRateModel.methods.init(this.DPP.options.address, config.mtFeeRate).send(this.sendParam(this.Deployer))
|
||||
|
||||
await kSource.methods.init(this.DPP.options.address, config.k).send(this.sendParam(this.Deployer))
|
||||
await iSource.methods.init(this.DPP.options.address, config.i).send(this.sendParam(this.Deployer))
|
||||
|
||||
await this.DPP.methods.init(
|
||||
this.Deployer,
|
||||
this.Maintainer,
|
||||
@@ -105,13 +112,6 @@ export class DPPContext {
|
||||
permissionManager.options.address,
|
||||
).send(this.sendParam(this.Deployer))
|
||||
|
||||
await gasPriceSource.methods.init(this.Deployer, MAX_UINT256).send(this.sendParam(this.Deployer))
|
||||
await lpFeeRateModel.methods.init(this.DPP.options.address, config.lpFeeRate).send(this.sendParam(this.Deployer))
|
||||
await mtFeeRateModel.methods.init(this.DPP.options.address, config.mtFeeRate).send(this.sendParam(this.Deployer))
|
||||
|
||||
await kSource.methods.init(this.DPP.options.address, config.k).send(this.sendParam(this.Deployer))
|
||||
await iSource.methods.init(this.DPP.options.address, config.i).send(this.sendParam(this.Deployer))
|
||||
|
||||
console.log(log.blueText("[Init DPP context]"));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user