Skip to content

Commit

Permalink
fix: erc20tracker: only deep copy once
Browse files Browse the repository at this point in the history
Resolves BACK-840.
  • Loading branch information
Louis-Amas committed Dec 16, 2022
1 parent 1b7ce5d commit a0c0264
Showing 1 changed file with 3 additions and 5 deletions.
8 changes: 3 additions & 5 deletions src/lib/generics-events-subscribers/erc20-event-subscriber.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ export class ERC20EventSubscriber extends StatefulEventSubscriber<ERC20StateMap>
const erc20Transfer = decodeERC20Transfer(event);

if (erc20Transfer.from in state) {
state = _.cloneDeep(state);
state[erc20Transfer.from].balance -= erc20Transfer.value;
this.dexHelper.cache.hset(
this.mapKey,
Expand All @@ -61,7 +60,6 @@ export class ERC20EventSubscriber extends StatefulEventSubscriber<ERC20StateMap>
}

if (erc20Transfer.to in state) {
state = _.cloneDeep(state);
state[erc20Transfer.to].balance += erc20Transfer.value;
this.dexHelper.cache.hset(
this.mapKey,
Expand All @@ -77,7 +75,6 @@ export class ERC20EventSubscriber extends StatefulEventSubscriber<ERC20StateMap>
const deposit = decodeWrappedDeposit(event);

if (deposit.dst in state) {
state = _.cloneDeep(state);
state[deposit.dst].balance += deposit.wad;
this.dexHelper.cache.hset(
this.mapKey,
Expand All @@ -93,7 +90,6 @@ export class ERC20EventSubscriber extends StatefulEventSubscriber<ERC20StateMap>
const deposit = decodeWrappedWithdrawal(event);

if (deposit.src in state) {
state = _.cloneDeep(state);
state[deposit.src].balance -= deposit.wad;
this.dexHelper.cache.hset(
this.mapKey,
Expand All @@ -110,8 +106,10 @@ export class ERC20EventSubscriber extends StatefulEventSubscriber<ERC20StateMap>
logs: Readonly<Log>[],
blockHeader: Readonly<BlockHeader>,
): Promise<DeepReadonly<ERC20StateMap> | null> {
let newState = await super.processBlockLogs(state, logs, blockHeader);
const _state = _.cloneDeep(state);
let newState = await super.processBlockLogs(_state, logs, blockHeader);
if (!newState) {
this.logger.warn('received empty state generate new one');
newState = await this.generateState(blockHeader.number);
}

Expand Down

0 comments on commit a0c0264

Please sign in to comment.