Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions src/components/Indexer/ChainIndexer.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import EventEmitter from 'node:events'
import { FallbackProvider, Log, Signer } from 'ethers'
import { JsonRpcProvider, Log, Signer } from 'ethers'
import { SupportedNetwork } from '../../@types/blockchain.js'
import { LOG_LEVELS_STR } from '../../utils/logging/Logger.js'
import { isDefined, sleep } from '../../utils/util.js'
Expand Down Expand Up @@ -163,8 +163,8 @@ export class ChainIndexer {
`Initial details for chain ${this.blockchain.getSupportedChain()}: RPCS start block: ${this.rpcDetails.startBlock}, Contract deployment block: ${contractDeploymentBlock}, Crawling start block: ${crawlingStartBlock}`
)

const provider = await this.blockchain.getProvider()
const signer = await this.blockchain.getSigner()
let provider = await this.blockchain.getProvider()
let signer = await this.blockchain.getSigner()
const interval = getCrawlingInterval()
let chunkSize = this.rpcDetails.chunkSize || 1
let successfulRetrievalCount = 0
Expand Down Expand Up @@ -298,7 +298,13 @@ export class ChainIndexer {
INDEXER_LOGGER.error(
`Error in indexing loop for chain ${this.blockchain.getSupportedChain()}: ${error.message}`
)
// Reset the provider so ethers recreates it fresh on next iteration.
// JsonRpcProvider permanently marks configs as _lastFatalError after
// any RPC failure — without reset, all subsequent calls throw immediately.
this.blockchain.resetProvider()
await sleep(interval)
provider = await this.blockchain.getProvider()
signer = await this.blockchain.getSigner()
} finally {
lockProcessing = false
}
Expand Down Expand Up @@ -435,7 +441,7 @@ export class ChainIndexer {
* Uses FIFO (First-In, First-Out) order via shift()
*/
private async processReindexQueue(
provider: FallbackProvider,
provider: JsonRpcProvider,
signer: Signer
): Promise<void> {
while (this.reindexQueue.length > 0) {
Expand Down
2 changes: 1 addition & 1 deletion src/components/Indexer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ export class OceanIndexer {
interval: number = 5000 // in milliseconds, default 2 secs
): Promise<boolean> {
try {
const retryInterval = Math.max(blockchain.getKnownRPCs().length * 3000, interval) // give 2 secs per each one
const retryInterval = Math.max(3000, interval)
const result = await this.startCrawler(blockchain)
const dbActive = this.getDatabase()
if (!dbActive || !(await isReachableConnection(dbActive.getConfig().url))) {
Expand Down
6 changes: 3 additions & 3 deletions src/components/Indexer/processor.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ethers, Signer, FallbackProvider, Interface, getAddress } from 'ethers'
import { ethers, Signer, JsonRpcProvider, Interface, getAddress } from 'ethers'
import { BlocksEvents, ProcessingEvents } from '../../@types/blockchain.js'
import { EVENTS } from '../../utils/constants.js'
import { getConfiguration } from '../../utils/config.js'
Expand Down Expand Up @@ -58,7 +58,7 @@ function getEventProcessor(eventType: string, chainId: number): BaseEventProcess
export const processChunkLogs = async (
logs: readonly ethers.Log[],
signer: Signer,
provider: FallbackProvider,
provider: JsonRpcProvider,
chainId: number
): Promise<BlocksEvents> => {
const storeEvents: BlocksEvents = {}
Expand Down Expand Up @@ -185,7 +185,7 @@ export const processChunkLogs = async (
export const processBlocks = async (
blockLogs: ethers.Log[],
signer: Signer,
provider: FallbackProvider,
provider: JsonRpcProvider,
network: number,
lastIndexedBlock: number,
count: number
Expand Down
6 changes: 3 additions & 3 deletions src/components/Indexer/processors/BaseProcessor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
hexlify,
getBytes,
toUtf8String,
FallbackProvider
JsonRpcProvider
} from 'ethers'
import { Readable } from 'winston-transport'
import { DecryptDDOCommand, NonceCommand } from '../../../@types/commands.js'
Expand Down Expand Up @@ -83,7 +83,7 @@ export abstract class BaseEventProcessor {
}

protected async getEventData(
provider: FallbackProvider,
provider: JsonRpcProvider,
transactionHash: string,
abi: any,
eventType: string
Expand Down Expand Up @@ -487,7 +487,7 @@ export abstract class BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider,
provider: JsonRpcProvider,
eventName?: string
): Promise<any>
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider, ZeroAddress } from 'ethers'
import { ethers, Signer, JsonRpcProvider, ZeroAddress } from 'ethers'
import { EVENTS } from '../../../utils/constants.js'
import { getDatabase } from '../../../utils/database.js'
import { INDEXER_LOGGER } from '../../../utils/logging/common.js'
Expand All @@ -20,7 +20,7 @@ export class DispenserActivatedEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider
provider: JsonRpcProvider
): Promise<any> {
const decodedEventData = await this.getEventData(
provider,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager, PriceType } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider, ZeroAddress } from 'ethers'
import { ethers, Signer, JsonRpcProvider, ZeroAddress } from 'ethers'
import { EVENTS } from '../../../utils/constants.js'
import { getDatabase } from '../../../utils/database.js'
import { INDEXER_LOGGER } from '../../../utils/logging/common.js'
Expand All @@ -20,7 +20,7 @@ export class DispenserCreatedEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider
provider: JsonRpcProvider
): Promise<any> {
const decodedEventData = await this.getEventData(
provider,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider, ZeroAddress } from 'ethers'
import { ethers, Signer, JsonRpcProvider, ZeroAddress } from 'ethers'
import { EVENTS } from '../../../utils/constants.js'
import { getDatabase } from '../../../utils/database.js'
import { INDEXER_LOGGER } from '../../../utils/logging/common.js'
Expand All @@ -20,7 +20,7 @@ export class DispenserDeactivatedEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider
provider: JsonRpcProvider
): Promise<any> {
const decodedEventData = await this.getEventData(
provider,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider, ZeroAddress } from 'ethers'
import { ethers, Signer, JsonRpcProvider, ZeroAddress } from 'ethers'
import { EVENTS } from '../../../utils/constants.js'
import { getDatabase } from '../../../utils/database.js'
import { INDEXER_LOGGER } from '../../../utils/logging/common.js'
Expand All @@ -20,7 +20,7 @@ export class ExchangeActivatedEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider
provider: JsonRpcProvider
): Promise<any> {
try {
if (!(await isValidFreContract(event.address, chainId, signer))) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider, ZeroAddress } from 'ethers'
import { ethers, Signer, JsonRpcProvider, ZeroAddress } from 'ethers'
import { EVENTS } from '../../../utils/constants.js'
import { getDatabase } from '../../../utils/database.js'
import { INDEXER_LOGGER } from '../../../utils/logging/common.js'
Expand All @@ -20,7 +20,7 @@ export class ExchangeCreatedEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider
provider: JsonRpcProvider
): Promise<any> {
try {
if (!(await isValidFreContract(event.address, chainId, signer))) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider, ZeroAddress } from 'ethers'
import { ethers, Signer, JsonRpcProvider, ZeroAddress } from 'ethers'
import { EVENTS } from '../../../utils/constants.js'
import { getDatabase } from '../../../utils/database.js'
import { INDEXER_LOGGER } from '../../../utils/logging/common.js'
Expand All @@ -20,7 +20,7 @@ export class ExchangeDeactivatedEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider
provider: JsonRpcProvider
): Promise<any> {
if (!(await isValidFreContract(event.address, chainId, signer))) {
INDEXER_LOGGER.error(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider, ZeroAddress } from 'ethers'
import { ethers, Signer, JsonRpcProvider, ZeroAddress } from 'ethers'
import { EVENTS } from '../../../utils/constants.js'
import { getDatabase } from '../../../utils/database.js'
import { INDEXER_LOGGER } from '../../../utils/logging/common.js'
Expand All @@ -20,7 +20,7 @@ export class ExchangeRateChangedEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider
provider: JsonRpcProvider
): Promise<any> {
try {
if (!(await isValidFreContract(event.address, chainId, signer))) {
Expand Down
4 changes: 2 additions & 2 deletions src/components/Indexer/processors/MetadataEventProcessor.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager, DDO, VersionedDDO } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider, getAddress } from 'ethers'
import { ethers, Signer, JsonRpcProvider, getAddress } from 'ethers'
import {
ENVIRONMENT_VARIABLES,
EVENTS,
Expand All @@ -23,7 +23,7 @@ export class MetadataEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider,
provider: JsonRpcProvider,
eventName: string
): Promise<any> {
let did = 'did:op'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider } from 'ethers'
import { ethers, Signer, JsonRpcProvider } from 'ethers'
import { EVENTS, MetadataStates } from '../../../utils/constants.js'
import { getDatabase } from '../../../utils/database.js'
import { INDEXER_LOGGER } from '../../../utils/logging/common.js'
Expand All @@ -13,7 +13,7 @@ export class MetadataStateEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
_signer: Signer,
provider: FallbackProvider
provider: JsonRpcProvider
): Promise<any> {
INDEXER_LOGGER.logMessage(`Processing metadata state event...`, true)
const decodedEventData = await this.getEventData(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider } from 'ethers'
import { ethers, Signer, JsonRpcProvider } from 'ethers'
import { EVENTS } from '../../../utils/constants.js'
import { getDatabase } from '../../../utils/database.js'
import { INDEXER_LOGGER } from '../../../utils/logging/common.js'
Expand All @@ -18,7 +18,7 @@ export class OrderReusedEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider
provider: JsonRpcProvider
): Promise<any> {
const decodedEventData = await this.getEventData(
provider,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DDOManager } from '@oceanprotocol/ddo-js'
import { ethers, Signer, FallbackProvider } from 'ethers'
import { ethers, Signer, JsonRpcProvider } from 'ethers'
import { EVENTS } from '../../../utils/constants.js'
import { getDatabase } from '../../../utils/database.js'
import { INDEXER_LOGGER } from '../../../utils/logging/common.js'
Expand All @@ -13,7 +13,7 @@ export class OrderStartedEventProcessor extends BaseEventProcessor {
event: ethers.Log,
chainId: number,
signer: Signer,
provider: FallbackProvider
provider: JsonRpcProvider
): Promise<any> {
const decodedEventData = await this.getEventData(
provider,
Expand Down
10 changes: 4 additions & 6 deletions src/components/Indexer/utils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Signer, ethers, getAddress, FallbackProvider } from 'ethers'
import { Signer, ethers, getAddress, JsonRpcProvider } from 'ethers'
import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' with { type: 'json' }
import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' }
import { EVENT_HASHES, isDefined } from '../../utils/index.js'
Expand Down Expand Up @@ -61,15 +61,13 @@
return deployedBlock
}

export const getNetworkHeight = async (provider: FallbackProvider) => {
const networkHeight = await provider.getBlockNumber()

return networkHeight
export const getNetworkHeight = async (provider: JsonRpcProvider): Promise<number> => {

Check failure on line 64 in src/components/Indexer/utils.ts

View workflow job for this annotation

GitHub Actions / lint

Async arrow function has no 'await' expression
return provider.getBlockNumber()
}

export const retrieveChunkEvents = async (
signer: Signer,
provider: FallbackProvider,
provider: JsonRpcProvider,
network: number,
lastIndexedBlock: number,
count: number
Expand Down
4 changes: 2 additions & 2 deletions src/components/KeyManager/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { PeerId } from '@libp2p/interface'
import { Signer, Wallet, FallbackProvider } from 'ethers'
import { Signer, Wallet, JsonRpcProvider } from 'ethers'
import { IKeyProvider } from '../../@types/KeyManager.js'
import { OceanNodeConfig } from '../../@types/OceanNode.js'
import { RawPrivateKeyProvider } from './providers/RawPrivateKeyProvider.js'
Expand Down Expand Up @@ -96,7 +96,7 @@ export class KeyManager {
* @param provider - The JSON-RPC provider to connect the signer to
* @returns An ethers Signer instance
*/
async getEvmSigner(provider: FallbackProvider, chainId?: number): Promise<Signer> {
async getEvmSigner(provider: JsonRpcProvider, chainId?: number): Promise<Signer> {
// Create a cache key based on chainId and provider URL
// TO DO
if (!chainId) {
Expand Down
4 changes: 2 additions & 2 deletions src/components/core/utils/feesHandler.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { ComputeResourcesPricingInfo } from '../../../@types/C2D/C2D.js'
import {
FallbackProvider,
JsonRpcProvider,
ethers,
Interface,
BigNumberish,
Expand Down Expand Up @@ -134,7 +134,7 @@ export async function createProviderFee(
export async function verifyProviderFees(
txId: string,
userAddress: string,
provider: FallbackProvider,
provider: JsonRpcProvider,
service: Service
): Promise<ProviderFeeValidation> {
/* given a transaction, check if there is a valid provider fee event
Expand Down
6 changes: 3 additions & 3 deletions src/components/core/utils/validateOrders.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Contract, Interface, TransactionReceipt, Signer, FallbackProvider } from 'ethers'
import { Contract, Interface, TransactionReceipt, Signer, JsonRpcProvider } from 'ethers'
import { fetchEventFromTransaction } from '../../../utils/util.js'
import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' }
import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' }
Expand All @@ -14,7 +14,7 @@ const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))

export async function fetchTransactionReceipt(
txId: string,
provider: FallbackProvider,
provider: JsonRpcProvider,
retries: number = 2
): Promise<TransactionReceipt> {
while (retries > 0) {
Expand All @@ -39,7 +39,7 @@ export async function fetchTransactionReceipt(
export async function validateOrderTransaction(
txId: string,
userAddress: string,
provider: FallbackProvider,
provider: JsonRpcProvider,
dataNftAddress: string,
datatokenAddress: string,
serviceIndex: number,
Expand Down
Loading
Loading