From 7125ec07505e5e4d339c2c3f69e0316829913e88 Mon Sep 17 00:00:00 2001 From: Jamie Hewitt Date: Tue, 3 Jan 2023 14:42:24 +0000 Subject: [PATCH 1/6] Tracking OPC fees --- schema.graphql | 1 + src/mappings/fixedRateExchange.ts | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/schema.graphql b/schema.graphql index c0ba684c..eb6fb858 100644 --- a/schema.graphql +++ b/schema.graphql @@ -257,6 +257,7 @@ type FixedRateExchangeSwap @entity { block: Int! createdTimestamp: Int! tx: String! + oceanFeeAmount: BigDecimal! } diff --git a/src/mappings/fixedRateExchange.ts b/src/mappings/fixedRateExchange.ts index 36e12474..d9a7dc06 100644 --- a/src/mappings/fixedRateExchange.ts +++ b/src/mappings/fixedRateExchange.ts @@ -176,6 +176,12 @@ export function handleSwap(event: Swapped): void { swap.exchangeId = fixedRateId swap.by = getUser(event.params.by.toHex()).id + // Track OPC swap fee + swap.oceanFeeAmount = weiToDecimal( + event.params.oceanFeeAmount.toBigDecimal(), + BigInt.fromI32(18).toI32() + ) + // we need to fetch the decimals of the base token const baseToken = getToken( Address.fromString(fixedRateExchange.baseToken), From 7e5c902546b1fa514ffc7a783c719863aa17a64e Mon Sep 17 00:00:00 2001 From: Jamie Hewitt Date: Tue, 3 Jan 2023 16:50:39 +0000 Subject: [PATCH 2/6] Updating tests --- test/integration/FixedRateExchange.test.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/integration/FixedRateExchange.test.ts b/test/integration/FixedRateExchange.test.ts index 7b8e8e76..18b134bc 100644 --- a/test/integration/FixedRateExchange.test.ts +++ b/test/integration/FixedRateExchange.test.ts @@ -45,6 +45,7 @@ describe('Fixed Rate Exchange tests', async () => { const templateIndex = 1 const dtAmount = '10' const datatoken = new Datatoken(web3, 8996) + const oceanFeeAmount = (Number(dtAmount) * Number(feeAmount)) / 100 let datatokenAddress: string let fixedRateAddress: string let baseTokenAddress: string @@ -584,6 +585,7 @@ describe('Fixed Rate Exchange tests', async () => { block createdTimestamp tx + oceanFeeAmount __typename } }}` @@ -648,6 +650,10 @@ describe('Fixed Rate Exchange tests', async () => { assert(swaps.block === tx.blockNumber, 'incorrect value for: block') assert(swaps.createdTimestamp >= time, 'incorrect: createdTimestamp') assert(swaps.createdTimestamp < time + 25, 'incorrect: createdTimestamp 2') + assert( + swaps.oceanFeeAmount === `${oceanFeeAmount}`, + 'incorrect: oceanFeeAmount' + ) assert(swaps.tx === tx.transactionHash, 'incorrect value for: tx') assert(swaps.__typename === 'FixedRateExchangeSwap', 'incorrect __typename') }) @@ -668,6 +674,7 @@ describe('Fixed Rate Exchange tests', async () => { block createdTimestamp tx + oceanFeeAmount __typename } }}` @@ -689,6 +696,10 @@ describe('Fixed Rate Exchange tests', async () => { assert(swaps.block === tx.blockNumber, 'incorrect value for: block') assert(swaps.createdTimestamp >= time, 'incorrect: createdTimestamp') assert(swaps.createdTimestamp < time + 25, 'incorrect: createdTimestamp 2') + assert( + swaps.oceanFeeAmount === `${oceanFeeAmount}`, + 'incorrect: oceanFeeAmount' + ) assert(swaps.tx === tx.transactionHash, 'incorrect value for: tx') assert(swaps.__typename === 'FixedRateExchangeSwap', 'incorrect __typename') }) From 4d11cf4e6b4e2a1b5d85d56f66c23e942ad944ca Mon Sep 17 00:00:00 2001 From: Jamie Hewitt Date: Wed, 4 Jan 2023 09:59:12 +0000 Subject: [PATCH 3/6] Updating tests --- test/integration/FixedRateExchange.test.ts | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/test/integration/FixedRateExchange.test.ts b/test/integration/FixedRateExchange.test.ts index 18b134bc..5f0bbedb 100644 --- a/test/integration/FixedRateExchange.test.ts +++ b/test/integration/FixedRateExchange.test.ts @@ -45,7 +45,7 @@ describe('Fixed Rate Exchange tests', async () => { const templateIndex = 1 const dtAmount = '10' const datatoken = new Datatoken(web3, 8996) - const oceanFeeAmount = (Number(dtAmount) * Number(feeAmount)) / 100 + const oceanFeeAmount = String((Number(dtAmount) * Number(feeAmount)) / 100) let datatokenAddress: string let fixedRateAddress: string let baseTokenAddress: string @@ -650,10 +650,7 @@ describe('Fixed Rate Exchange tests', async () => { assert(swaps.block === tx.blockNumber, 'incorrect value for: block') assert(swaps.createdTimestamp >= time, 'incorrect: createdTimestamp') assert(swaps.createdTimestamp < time + 25, 'incorrect: createdTimestamp 2') - assert( - swaps.oceanFeeAmount === `${oceanFeeAmount}`, - 'incorrect: oceanFeeAmount' - ) + assert(swaps.oceanFeeAmount === oceanFeeAmount, 'incorrect: oceanFeeAmount') assert(swaps.tx === tx.transactionHash, 'incorrect value for: tx') assert(swaps.__typename === 'FixedRateExchangeSwap', 'incorrect __typename') }) @@ -696,10 +693,7 @@ describe('Fixed Rate Exchange tests', async () => { assert(swaps.block === tx.blockNumber, 'incorrect value for: block') assert(swaps.createdTimestamp >= time, 'incorrect: createdTimestamp') assert(swaps.createdTimestamp < time + 25, 'incorrect: createdTimestamp 2') - assert( - swaps.oceanFeeAmount === `${oceanFeeAmount}`, - 'incorrect: oceanFeeAmount' - ) + assert(swaps.oceanFeeAmount === oceanFeeAmount, 'incorrect: oceanFeeAmount') assert(swaps.tx === tx.transactionHash, 'incorrect value for: tx') assert(swaps.__typename === 'FixedRateExchangeSwap', 'incorrect __typename') }) From 8853b3ff7a2f819049f7867b27e0639410bef502 Mon Sep 17 00:00:00 2001 From: Jamie Hewitt Date: Thu, 5 Jan 2023 08:43:49 +0000 Subject: [PATCH 4/6] Using basetoken decimals when tracking oceanFeeAmount --- src/mappings/fixedRateExchange.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mappings/fixedRateExchange.ts b/src/mappings/fixedRateExchange.ts index d9a7dc06..83286c72 100644 --- a/src/mappings/fixedRateExchange.ts +++ b/src/mappings/fixedRateExchange.ts @@ -176,12 +176,6 @@ export function handleSwap(event: Swapped): void { swap.exchangeId = fixedRateId swap.by = getUser(event.params.by.toHex()).id - // Track OPC swap fee - swap.oceanFeeAmount = weiToDecimal( - event.params.oceanFeeAmount.toBigDecimal(), - BigInt.fromI32(18).toI32() - ) - // we need to fetch the decimals of the base token const baseToken = getToken( Address.fromString(fixedRateExchange.baseToken), @@ -197,6 +191,12 @@ export function handleSwap(event: Swapped): void { BigInt.fromI32(18).toI32() ) + // Track OPC swap fee + swap.oceanFeeAmount = weiToDecimal( + event.params.oceanFeeAmount.toBigDecimal(), + BigInt.fromI32(baseToken.decimals).toI32() + ) + swap.save() updateFixedRateExchangeSupply(event.params.exchangeId, event.address) From 908164b9588c241fe4228ba737ff6bcda236d1d9 Mon Sep 17 00:00:00 2001 From: Jamie Hewitt Date: Tue, 10 Jan 2023 17:23:47 +0000 Subject: [PATCH 5/6] Comparing the value of oceanFeeAmount returned from the event to the value stored in the subgraph --- test/integration/FixedRateExchange.test.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/integration/FixedRateExchange.test.ts b/test/integration/FixedRateExchange.test.ts index 5f0bbedb..0b4bb82f 100644 --- a/test/integration/FixedRateExchange.test.ts +++ b/test/integration/FixedRateExchange.test.ts @@ -45,7 +45,6 @@ describe('Fixed Rate Exchange tests', async () => { const templateIndex = 1 const dtAmount = '10' const datatoken = new Datatoken(web3, 8996) - const oceanFeeAmount = String((Number(dtAmount) * Number(feeAmount)) / 100) let datatokenAddress: string let fixedRateAddress: string let baseTokenAddress: string @@ -628,6 +627,11 @@ describe('Fixed Rate Exchange tests', async () => { const tx = ( await fixedRate.buyDatatokens(user1, exchangeId, dtAmount, '100') ).events?.Swapped + + const oceanFeeAmount = web3.utils.fromWei( + new BN(tx.returnValues.oceanFeeAmount) + ) + await sleep(sleepMs) user1Balance = await datatoken.balance(datatokenAddress, user1) // user1 has 1 datatoken @@ -658,6 +662,9 @@ describe('Fixed Rate Exchange tests', async () => { await datatoken.approve(datatokenAddress, fixedRateAddress, dtAmount, user1) const tx = (await fixedRate.sellDatatokens(user1, exchangeId, '10', '9')) .events?.Swapped + const oceanFeeAmount = web3.utils.fromWei( + new BN(tx.returnValues.oceanFeeAmount) + ) assert(tx != null) await sleep(sleepMs) const swapsQuery = { From 09991be437eb89d941c76baa327becc11687e2e7 Mon Sep 17 00:00:00 2001 From: Jamie Hewitt Date: Wed, 11 Jan 2023 15:06:19 +0000 Subject: [PATCH 6/6] Tracking consumeMarketFeeAmount and marketFeeAmount --- schema.graphql | 2 ++ src/mappings/fixedRateExchange.ts | 10 +++++++++- test/integration/FixedRateExchange.test.ts | 13 +++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/schema.graphql b/schema.graphql index eb6fb858..2988cec8 100644 --- a/schema.graphql +++ b/schema.graphql @@ -258,6 +258,8 @@ type FixedRateExchangeSwap @entity { createdTimestamp: Int! tx: String! oceanFeeAmount: BigDecimal! + marketFeeAmount: BigDecimal! + consumeMarketFeeAmount: BigDecimal! } diff --git a/src/mappings/fixedRateExchange.ts b/src/mappings/fixedRateExchange.ts index 83286c72..50725b52 100644 --- a/src/mappings/fixedRateExchange.ts +++ b/src/mappings/fixedRateExchange.ts @@ -191,11 +191,19 @@ export function handleSwap(event: Swapped): void { BigInt.fromI32(18).toI32() ) - // Track OPC swap fee + // Track fees swap.oceanFeeAmount = weiToDecimal( event.params.oceanFeeAmount.toBigDecimal(), BigInt.fromI32(baseToken.decimals).toI32() ) + swap.marketFeeAmount = weiToDecimal( + event.params.marketFeeAmount.toBigDecimal(), + BigInt.fromI32(baseToken.decimals).toI32() + ) + swap.consumeMarketFeeAmount = weiToDecimal( + event.params.consumeMarketFeeAmount.toBigDecimal(), + BigInt.fromI32(baseToken.decimals).toI32() + ) swap.save() diff --git a/test/integration/FixedRateExchange.test.ts b/test/integration/FixedRateExchange.test.ts index 0b4bb82f..278f4cd0 100644 --- a/test/integration/FixedRateExchange.test.ts +++ b/test/integration/FixedRateExchange.test.ts @@ -585,6 +585,8 @@ describe('Fixed Rate Exchange tests', async () => { createdTimestamp tx oceanFeeAmount + marketFeeAmount + consumeMarketFeeAmount __typename } }}` @@ -631,6 +633,12 @@ describe('Fixed Rate Exchange tests', async () => { const oceanFeeAmount = web3.utils.fromWei( new BN(tx.returnValues.oceanFeeAmount) ) + const marketFeeAmount = web3.utils.fromWei( + new BN(tx.returnValues.marketFeeAmount) + ) + const consumeMarketFeeAmount = web3.utils.fromWei( + new BN(tx.returnValues.consumeMarketFeeAmount) + ) await sleep(sleepMs) user1Balance = await datatoken.balance(datatokenAddress, user1) @@ -655,6 +663,11 @@ describe('Fixed Rate Exchange tests', async () => { assert(swaps.createdTimestamp >= time, 'incorrect: createdTimestamp') assert(swaps.createdTimestamp < time + 25, 'incorrect: createdTimestamp 2') assert(swaps.oceanFeeAmount === oceanFeeAmount, 'incorrect: oceanFeeAmount') + assert(swaps.marketFeeAmount === marketFeeAmount, 'wrong marketFeeAmount') + assert( + swaps.consumeMarketFeeAmount === consumeMarketFeeAmount, + 'wrong consumeMarketFeeAmount' + ) assert(swaps.tx === tx.transactionHash, 'incorrect value for: tx') assert(swaps.__typename === 'FixedRateExchangeSwap', 'incorrect __typename') })