From a521f3ac8c92dcb7c070b4888977d7217f6188fc Mon Sep 17 00:00:00 2001 From: patricio henderson Date: Fri, 22 Sep 2023 14:56:26 -0300 Subject: [PATCH 1/3] Relayer: Modify relayerConfig entity --- schema.graphql | 4 +-- src/Relayer.ts | 66 +++++++++++++++++++++++++------------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/schema.graphql b/schema.graphql index fa45881..5257589 100644 --- a/schema.graphql +++ b/schema.graphql @@ -23,10 +23,10 @@ type SmartVault @entity { tasks: [Task!] @derivedFrom(field: "smartVault") movements: [Movement!] @derivedFrom(field: "smartVault") transactions: [Transaction!] @derivedFrom(field: "smartVault") - relayerParams: RelayerParams @derivedFrom(field: "smartVault") + relayerconfig: RelayerConfig @derivedFrom(field: "smartVault") } -type RelayerParams @entity { +type RelayerConfig @entity { id: ID! smartVault: SmartVault! feeCollector: String! diff --git a/src/Relayer.ts b/src/Relayer.ts index 350525a..2c345d3 100644 --- a/src/Relayer.ts +++ b/src/Relayer.ts @@ -10,44 +10,44 @@ import { TaskExecuted, Withdrawn, } from '../types/Relayer/Relayer' -import { Movement, RelayedExecution, RelayerParams, Task, Transaction } from '../types/schema' +import { Movement, RelayedExecution, RelayerConfig, Task, Transaction } from '../types/schema' import { Task as TaskContract } from '../types/templates/Task/Task' import { rateInUsd } from './rates' import { getWrappedNativeToken } from './rates/Tokens' export function handleDeposited(event: Deposited): void { - const relayerParams = loadOrCreateRelayerParams(event.params.smartVault.toHexString(), event.address) - relayerParams.balance = relayerParams.balance.plus(event.params.amount) - relayerParams.save() + const relayerConfig = loadOrCreateRelayerConfig(event.params.smartVault.toHexString(), event.address) + relayerConfig.balance = relayerConfig.balance.plus(event.params.amount) + relayerConfig.save() } export function handleGasPaid(event: GasPaid): void { - const relayerParams = loadOrCreateRelayerParams(event.params.smartVault.toHexString(), event.address) - relayerParams.balance = relayerParams.balance.minus(event.params.amount) - relayerParams.quotaUsed = relayerParams.balance.plus(event.params.quota) - relayerParams.save() + const relayerConfig = loadOrCreateRelayerConfig(event.params.smartVault.toHexString(), event.address) + relayerConfig.balance = relayerConfig.balance.minus(event.params.amount) + relayerConfig.quotaUsed = relayerConfig.balance.plus(event.params.quota) + relayerConfig.save() } export function handleQuotaPaid(event: QuotaPaid): void { - const relayerParams = loadOrCreateRelayerParams(event.params.smartVault.toHexString(), event.address) + const relayerConfig = loadOrCreateRelayerConfig(event.params.smartVault.toHexString(), event.address) const quotaPaidAmount = event.params.amount - relayerParams.balance = relayerParams.balance.minus(quotaPaidAmount) - relayerParams.quotaUsed = relayerParams.quotaUsed.minus(quotaPaidAmount) - relayerParams.save() + relayerConfig.balance = relayerConfig.balance.minus(quotaPaidAmount) + relayerConfig.quotaUsed = relayerConfig.quotaUsed.minus(quotaPaidAmount) + relayerConfig.save() } export function handleSmartVaultCollectorSet(event: SmartVaultCollectorSet): void { - const relayerParams = loadOrCreateRelayerParams(event.params.smartVault.toHexString(), event.address) + const relayerConfig = loadOrCreateRelayerConfig(event.params.smartVault.toHexString(), event.address) let feeCollector = event.params.collector.toHexString() if (feeCollector == Address.zero().toHexString()) feeCollector = getDefaultFeeCollector(event.address) - relayerParams.feeCollector = feeCollector - relayerParams.save() + relayerConfig.feeCollector = feeCollector + relayerConfig.save() } export function handleSmartVaultMaxQuotaSet(event: SmartVaultMaxQuotaSet): void { - const relayerParams = loadOrCreateRelayerParams(event.params.smartVault.toHexString(), event.address) - relayerParams.maxQuota = event.params.maxQuota - relayerParams.save() + const relayerConfig = loadOrCreateRelayerConfig(event.params.smartVault.toHexString(), event.address) + relayerConfig.maxQuota = event.params.maxQuota + relayerConfig.save() } export function handleTaskExecuted(event: TaskExecuted): void { @@ -96,9 +96,9 @@ export function handleTaskExecuted(event: TaskExecuted): void { } export function handleWithdrawn(event: Withdrawn): void { - const relayerParams = loadOrCreateRelayerParams(event.params.smartVault.toHexString(), event.address) - relayerParams.balance = relayerParams.balance.minus(event.params.amount) - relayerParams.save() + const relayerConfig = loadOrCreateRelayerConfig(event.params.smartVault.toHexString(), event.address) + relayerConfig.balance = relayerConfig.balance.minus(event.params.amount) + relayerConfig.save() } export function getSmartVault(address: Address): Address { @@ -125,17 +125,17 @@ function getDefaultFeeCollector(address: Address): string { return 'Unknown' } -export function loadOrCreateRelayerParams(smartVaultId: string, relayer: Address): RelayerParams { - let relayerParams = RelayerParams.load(smartVaultId) - - if (relayerParams === null) { - relayerParams = new RelayerParams(smartVaultId) - relayerParams.smartVault = smartVaultId - relayerParams.feeCollector = getDefaultFeeCollector(relayer) - relayerParams.balance = BigInt.zero() - relayerParams.maxQuota = BigInt.zero() - relayerParams.quotaUsed = BigInt.zero() - relayerParams.save() +export function loadOrCreateRelayerConfig(smartVaultId: string, relayer: Address): RelayerConfig { + let relayerConfig = RelayerConfig.load(smartVaultId) + + if (relayerConfig === null) { + relayerConfig = new RelayerConfig(smartVaultId) + relayerConfig.smartVault = smartVaultId + relayerConfig.feeCollector = getDefaultFeeCollector(relayer) + relayerConfig.balance = BigInt.zero() + relayerConfig.maxQuota = BigInt.zero() + relayerConfig.quotaUsed = BigInt.zero() + relayerConfig.save() } - return relayerParams + return relayerConfig } From ce31f0e3aeae765cb703e46ffabfee164fa6db03 Mon Sep 17 00:00:00 2001 From: patricio henderson Date: Mon, 25 Sep 2023 13:21:24 -0300 Subject: [PATCH 2/3] Relayer: Fix GasPaid event tracker --- src/Relayer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Relayer.ts b/src/Relayer.ts index 2c345d3..34ed1cb 100644 --- a/src/Relayer.ts +++ b/src/Relayer.ts @@ -24,7 +24,7 @@ export function handleDeposited(event: Deposited): void { export function handleGasPaid(event: GasPaid): void { const relayerConfig = loadOrCreateRelayerConfig(event.params.smartVault.toHexString(), event.address) relayerConfig.balance = relayerConfig.balance.minus(event.params.amount) - relayerConfig.quotaUsed = relayerConfig.balance.plus(event.params.quota) + relayerConfig.quotaUsed = relayerConfig.quotaUsed.plus(event.params.quota) relayerConfig.save() } From a97262c0f2b616c7fbff379d969ffcfa0bf33764 Mon Sep 17 00:00:00 2001 From: patricio henderson Date: Mon, 25 Sep 2023 16:47:37 -0300 Subject: [PATCH 3/3] Relayer: Delete balance from QuotaPaid --- src/Relayer.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Relayer.ts b/src/Relayer.ts index 34ed1cb..ab08db4 100644 --- a/src/Relayer.ts +++ b/src/Relayer.ts @@ -23,7 +23,7 @@ export function handleDeposited(event: Deposited): void { export function handleGasPaid(event: GasPaid): void { const relayerConfig = loadOrCreateRelayerConfig(event.params.smartVault.toHexString(), event.address) - relayerConfig.balance = relayerConfig.balance.minus(event.params.amount) + relayerConfig.balance = relayerConfig.balance.minus(event.params.amount.minus(event.params.quota)) relayerConfig.quotaUsed = relayerConfig.quotaUsed.plus(event.params.quota) relayerConfig.save() } @@ -31,7 +31,6 @@ export function handleGasPaid(event: GasPaid): void { export function handleQuotaPaid(event: QuotaPaid): void { const relayerConfig = loadOrCreateRelayerConfig(event.params.smartVault.toHexString(), event.address) const quotaPaidAmount = event.params.amount - relayerConfig.balance = relayerConfig.balance.minus(quotaPaidAmount) relayerConfig.quotaUsed = relayerConfig.quotaUsed.minus(quotaPaidAmount) relayerConfig.save() }