libp2p-middleware-evm
Version:
EVM middleware for libp2p
61 lines (50 loc) • 1.4 kB
text/typescript
/**
* @packageDocumentation
*
* The challenge-response middleware implements a challenge-response
* authentication protocol for libp2p protocol middleware.
*/
import { MiddlewareEVM as MiddlewareEVMClass } from './middleware-evm.js'
import type { ComponentLogger, PeerId } from '@libp2p/interface'
import type { ConnectionManager, Registrar } from '@libp2p/interface-internal'
import type { Wallet } from 'ethers'
import type { EVMRuleEngine } from 'evm-rule-engine'
export interface MiddlewareEVMInit {
/**
* How long to wait for challenge responses (in ms)
*/
timeout?: number
/**
* Protocol prefix to use
*/
protocolPrefix?: string
/**
* Maximum number of inbound streams
*/
maxInboundStreams?: number
/**
* Maximum number of outbound streams
*/
maxOutboundStreams?: number
/**
* Run on limited connection - default: true
*/
runOnLimitedConnection?: boolean
/**
* A configured EVM rule engine
*/
evmRuleEngine: EVMRuleEngine
/**
* Signer for EVM challenges
*/
signer: Wallet
}
export interface MiddlewareEVMComponents {
connectionManager: ConnectionManager
logger: ComponentLogger
registrar: Registrar
peerId: PeerId
}
export function middlewareEVM (init: MiddlewareEVMInit): (components: MiddlewareEVMComponents) => MiddlewareEVMClass {
return (components) => new MiddlewareEVMClass(components, init)
}