ethereumjs / ethereumjs-monorepo

Compare 2dfa7ee ... +0 ... 125e210

Coverage Reach
client/lib/sync/fetcher/fetcher.ts client/lib/sync/fetcher/blockfetcher.ts client/lib/sync/fetcher/headerfetcher.ts client/lib/sync/fetcher/blockfetcherbase.ts client/lib/sync/txpool.ts client/lib/sync/fullsync.ts client/lib/sync/execution/vmexecution.ts client/lib/sync/execution/execution.ts client/lib/sync/sync.ts client/lib/sync/lightsync.ts client/lib/net/protocol/boundprotocol.ts client/lib/net/protocol/ethprotocol.ts client/lib/net/protocol/lesprotocol.ts client/lib/net/protocol/protocol.ts client/lib/net/protocol/flowcontrol.ts client/lib/net/protocol/libp2psender.ts client/lib/net/protocol/rlpxsender.ts client/lib/net/protocol/sender.ts client/lib/net/server/rlpxserver.ts client/lib/net/server/libp2pserver.ts client/lib/net/server/server.ts client/lib/net/peer/rlpxpeer.ts client/lib/net/peer/libp2ppeer.ts client/lib/net/peer/peer.ts client/lib/net/peer/libp2pnode.ts client/lib/net/peerpool.ts client/lib/rpc/modules/eth.ts client/lib/rpc/modules/engine.ts client/lib/rpc/modules/admin.ts client/lib/rpc/modules/net.ts client/lib/rpc/modules/web3.ts client/lib/rpc/validation.ts client/lib/rpc/index.ts client/lib/rpc/error-code.ts client/lib/service/fullethereumservice.ts client/lib/service/service.ts client/lib/service/ethereumservice.ts client/lib/service/lightethereumservice.ts client/lib/miner/miner.ts client/lib/util/parse.ts client/lib/util/index.ts client/lib/blockchain/chain.ts client/lib/config.ts client/lib/client.ts client/lib/logging.ts client/lib/types.ts devp2p/src/rlpx/peer.ts devp2p/src/rlpx/ecies.ts devp2p/src/rlpx/rlpx.ts devp2p/src/rlpx/mac.ts devp2p/src/dpt/server.ts devp2p/src/dpt/dpt.ts devp2p/src/dpt/message.ts devp2p/src/dpt/kbucket.ts devp2p/src/dpt/ban-list.ts devp2p/src/eth/index.ts devp2p/src/les/index.ts devp2p/src/dns/dns.ts devp2p/src/dns/enr.ts devp2p/src/util.ts devp2p/src/browser/dns.ts block/src/header.ts block/src/block.ts block/src/from-rpc.ts block/src/helpers.ts block/src/clique.ts block/src/header-from-rpc.ts blockchain/src/index.ts blockchain/src/clique.ts tx/src/legacyTransaction.ts tx/src/eip1559Transaction.ts tx/src/eip2930Transaction.ts tx/src/baseTransaction.ts tx/src/util.ts tx/src/transactionFactory.ts tx/src/types.ts common/src/index.ts common/src/chains/index.ts common/src/genesisStates/index.ts ethash/src/index.ts ethash/src/util.ts

Flags

Flags have been temporarily removed from this view while the flagging feature is refactored for better performance and user experience.

You can still use flags when viewing individual files. Flag-level thresholds will also remain on pull and merge requests in your repository provider.

More information can be found in our documentation.


@@ -1,4 +1,4 @@
Loading
1 -
import multiaddr from 'multiaddr'
1 +
import { Multiaddr, multiaddr } from 'multiaddr'
2 2
import PeerId from 'peer-id'
3 3
import { Libp2pMuxedStream as MuxedStream } from '../../types'
4 4
import { Libp2pSender } from '../protocol/libp2psender'
@@ -7,17 +7,18 @@
Loading
7 7
import { Protocol } from '../protocol'
8 8
import { Libp2pServer } from '../server'
9 9
import { Event } from '../../types'
10 +
10 11
export interface Libp2pPeerOptions extends Omit<PeerOptions, 'address' | 'transport'> {
11 12
  /* Multiaddrs to listen on */
12 -
  multiaddrs?: multiaddr[]
13 +
  multiaddrs?: Multiaddr[]
13 14
}
14 15
15 16
/**
16 17
 * Libp2p peer
17 18
 * @memberof module:net/peer
18 19
 * @example
19 20
 * ```typescript
20 -
 * import multiaddr from 'multiaddr'
21 +
 * import { multiaddr } from 'multiaddr'
21 22
 * import { Libp2pPeer } from './lib/net/peer'
22 23
 * import { Chain } from './lib/blockchain'
23 24
 * import { EthProtocol } from './lib/net/protocol'
@@ -35,7 +36,7 @@
Loading
35 36
 * ```
36 37
 */
37 38
export class Libp2pPeer extends Peer {
38 -
  private multiaddrs: multiaddr[]
39 +
  private multiaddrs: Multiaddr[]
39 40
  private connected: boolean
40 41
41 42
  /**
@@ -63,7 +64,7 @@
Loading
63 64
    const node = new Libp2pNode({ peerId, addresses })
64 65
    await node.start()
65 66
    for (const ma of this.multiaddrs) {
66 -
      await node.dial(ma)
67 +
      await node.dial(ma as any)
67 68
      await this.bindProtocols(node, ma)
68 69
    }
69 70
    this.config.events.emit(Event.PEER_CONNECTED, this)
@@ -86,15 +87,15 @@
Loading
86 87
   */
87 88
  async bindProtocols(
88 89
    node: Libp2pNode,
89 -
    peer: PeerId | multiaddr,
90 +
    peer: PeerId | Multiaddr,
90 91
    server?: Libp2pServer
91 92
  ): Promise<void> {
92 93
    await Promise.all(
93 94
      this.protocols.map(async (p) => {
94 95
        await p.open()
95 96
        const protocol = `/${p.name}/${p.versions[0]}`
96 97
        try {
97 -
          const { stream } = await node.dialProtocol(peer, protocol)
98 +
          const { stream } = await node.dialProtocol(peer as any, protocol)
98 99
          await this.bindProtocol(p, new Libp2pSender(stream))
99 100
        } catch (err: any) {
100 101
          const peerInfo = peer instanceof PeerId ? `id=${peer.toB58String()}` : `multiaddr=${peer}`

@@ -4,32 +4,41 @@
Loading
4 4
5 5
export type Logger = WinstonLogger
6 6
7 -
const levelColors = {
8 -
  error: 'red',
9 -
  warn: 'yellow',
10 -
  info: 'green',
11 -
  debug: 'white',
12 -
}
13 -
14 7
const { combine, timestamp, label, printf } = format
15 8
9 +
/**
10 +
 * Colors for logger levels
11 +
 */
12 +
enum LevelColors {
13 +
  error = 'red',
14 +
  warn = 'yellow',
15 +
  info = 'green',
16 +
  debug = 'white',
17 +
}
18 +
19 +
/*
20 +
 * Adds stack trace to error message if included
21 +
 */
16 22
const errorFormat = format((info: any) => {
17 23
  if (info.message instanceof Error && info.message.stack) {
18 -
    info.message = info.message.stack
24 +
    return { ...info, message: info.message.stack }
19 25
  }
20 26
  if (info instanceof Error && info.stack) {
21 -
    return Object.assign({}, info, { message: info.stack })
27 +
    return { ...info, message: info.stack }
22 28
  }
23 29
  return info
24 30
})
25 31
26 -
function logFormat(colors = true) {
32 +
/**
33 +
 * Returns the formatted log output optionally with colors enabled
34 +
 */
35 +
function logFormat(colors = false) {
27 36
  return printf((info: any) => {
28 37
    let level = info.level.toUpperCase()
29 38
    if (colors) {
30 -
      // @ts-ignore: implicitly has an 'any' TODO
31 -
      const color = chalk[levelColors[info.level]].bind(chalk)
32 -
      level = color(info.level.toUpperCase())
39 +
      const colorLevel = LevelColors[info.level as keyof typeof LevelColors]
40 +
      const color = chalk.keyword(colorLevel).bind(chalk)
41 +
      level = color(level)
33 42
      const re = /(\w+)=(.+?)(?:\s|$)/g
34 43
      info.message = info.message.replace(
35 44
        re,
@@ -40,7 +49,10 @@
Loading
40 49
  })
41 50
}
42 51
43 -
function formatConfig(colors = true) {
52 +
/**
53 +
 * Returns the complete logger format
54 +
 */
55 +
function formatConfig(colors = false) {
44 56
  return combine(
45 57
    errorFormat(),
46 58
    format.splat(),
@@ -50,44 +62,46 @@
Loading
50 62
  )
51 63
}
52 64
65 +
/**
66 +
 * Returns a transport with log file saving (rotates if args.logRotate is true)
67 +
 */
68 +
function logFileTransport(args: any) {
69 +
  let filename = args.logFile === true ? 'ethereumjs.log' : args.logFile
70 +
  const opts = {
71 +
    level: args.logLevelFile,
72 +
    format: formatConfig(),
73 +
  }
74 +
  if (!args.logRotate) {
75 +
    return new wTransports.File({
76 +
      ...opts,
77 +
      filename,
78 +
    })
79 +
  } else {
80 +
    // Insert %DATE% before the last period
81 +
    const lastPeriod = filename.lastIndexOf('.')
82 +
    filename = `${filename.substring(0, lastPeriod)}.%DATE%${filename.substring(lastPeriod)}`
83 +
    return new DailyRotateFile({
84 +
      ...opts,
85 +
      filename,
86 +
      maxFiles: args.logMaxFiles,
87 +
    })
88 +
  }
89 +
}
90 +
91 +
/**
92 +
 * Returns a formatted {@link Logger}
93 +
 */
53 94
export function getLogger(args: { [key: string]: any } = { loglevel: 'info' }) {
54 95
  const transports: any[] = [
55 96
    new wTransports.Console({
56 97
      level: args.loglevel,
57 98
      silent: args.loglevel === 'off',
58 -
      format: formatConfig(),
99 +
      format: formatConfig(true),
59 100
    }),
60 101
  ]
61 -
  let filename = args.logFile === true ? 'ethereumjs.log' : args.logFile
62 -
  if (filename) {
63 -
    const opts = {
64 -
      level: args.logLevelFile,
65 -
      format: formatConfig(false),
66 -
    }
67 -
    if (args.logRotate) {
68 -
      // Insert %DATE% before the last period
69 -
      const lastPeriod = filename.lastIndexOf('.')
70 -
      filename = `${filename.substring(0, lastPeriod)}.%DATE%${filename.substring(lastPeriod)}`
71 -
      transports.push(
72 -
        new DailyRotateFile({
73 -
          ...opts,
74 -
          filename,
75 -
          maxFiles: args.logMaxFiles,
76 -
        })
77 -
      )
78 -
    } else {
79 -
      transports.push(
80 -
        new wTransports.File({
81 -
          ...opts,
82 -
          filename,
83 -
        })
84 -
      )
85 -
    }
86 -
  }
87 -
88 -
  const logger = createLogger({ format: formatConfig(), transports })
89 -
  if (filename) {
90 -
    logger.debug(`Writing log file=${filename}`)
102 +
  if (args.logFile) {
103 +
    transports.push(logFileTransport(args))
91 104
  }
105 +
  const logger = createLogger({ transports })
92 106
  return logger
93 107
}

@@ -109,29 +109,31 @@
Loading
109 109
      address: this.host,
110 110
      tcpPort: this.port,
111 111
    })
112 -
    this.rlpx.on('peer:error', (_: Devp2pRlpxPeer, error: Error) => {
112 +
113 +
    const peerErrorHandler = (_: Devp2pRlpxPeer, error: Error) => {
113 114
      this.config.events.emit(Event.PEER_ERROR, error, this)
114 -
    })
115 -
    this.rlpx.once('peer:added', async (rlpxPeer: Devp2pRlpxPeer) => {
115 +
    }
116 +
    const peerErrorHandlerBound = peerErrorHandler.bind(this)
117 +
    const peerAddedHandler = async (rlpxPeer: Devp2pRlpxPeer) => {
116 118
      try {
117 119
        await this.bindProtocols(rlpxPeer)
118 120
        this.config.events.emit(Event.PEER_CONNECTED, this)
119 121
      } catch (error: any) {
120 122
        this.config.events.emit(Event.PEER_ERROR, error, this)
121 123
      }
122 -
    })
123 -
    this.rlpx.once('peer:removed', (rlpxPeer: Devp2pRlpxPeer) => {
124 -
      try {
125 -
        if (rlpxPeer !== this.rlpxPeer) {
126 -
          return
127 -
        }
128 -
        this.rlpxPeer = null
129 -
        this.connected = false
130 -
        this.config.events.emit(Event.PEER_DISCONNECTED, this)
131 -
      } catch (error: any) {
132 -
        this.config.events.emit(Event.PEER_ERROR, error, this)
124 +
    }
125 +
    const peerRemovedHandler = (rlpxPeer: Devp2pRlpxPeer) => {
126 +
      if (rlpxPeer !== this.rlpxPeer) {
127 +
        return
133 128
      }
134 -
    })
129 +
      this.rlpxPeer = null
130 +
      this.connected = false
131 +
      this.config.events.emit(Event.PEER_DISCONNECTED, this)
132 +
      this.rlpx?.removeListener('peer:error', peerErrorHandlerBound)
133 +
    }
134 +
    this.rlpx.on('peer:error', peerErrorHandlerBound)
135 +
    this.rlpx.once('peer:added', peerAddedHandler.bind(this))
136 +
    this.rlpx.once('peer:removed', peerRemovedHandler.bind(this))
135 137
  }
136 138
137 139
  /**

@@ -1,15 +1,15 @@
Loading
1 1
import PeerId from 'peer-id'
2 2
// eslint-disable-next-line implicit-dependencies/no-implicit
3 3
import crypto from 'libp2p-crypto'
4 -
import multiaddr from 'multiaddr'
4 +
import { Multiaddr, multiaddr } from 'multiaddr'
5 5
import { Event, Libp2pConnection as Connection } from '../../types'
6 6
import { Libp2pNode } from '../peer/libp2pnode'
7 7
import { Libp2pPeer } from '../peer'
8 8
import { Server, ServerOptions } from './server'
9 9
10 10
export interface Libp2pServerOptions extends ServerOptions {
11 11
  /* Multiaddrs to listen on */
12 -
  multiaddrs?: multiaddr[]
12 +
  multiaddrs?: Multiaddr[]
13 13
}
14 14
15 15
/**
@@ -19,7 +19,7 @@
Loading
19 19
export class Libp2pServer extends Server {
20 20
  private peers: Map<string, Libp2pPeer> = new Map()
21 21
  private banned: Map<string, number> = new Map()
22 -
  private multiaddrs: multiaddr[]
22 +
  private multiaddrs: Multiaddr[]
23 23
  private node: Libp2pNode | null
24 24
25 25
  /**
@@ -156,11 +156,11 @@
Loading
156 156
    return PeerId.createFromPrivKey(protoBuf)
157 157
  }
158 158
159 -
  getPeerInfo(connection: Connection): [PeerId, multiaddr] {
159 +
  getPeerInfo(connection: Connection): [PeerId, Multiaddr] {
160 160
    return [connection.remotePeer, connection.remoteAddr]
161 161
  }
162 162
163 -
  createPeer(peerId: PeerId, multiaddrs?: multiaddr[]) {
163 +
  createPeer(peerId: PeerId, multiaddrs?: Multiaddr[]) {
164 164
    const peer = new Libp2pPeer({
165 165
      config: this.config,
166 166
      id: peerId.toB58String(),

@@ -3,7 +3,7 @@
Loading
3 3
import * as rlp from 'rlp'
4 4
import { sscanf } from 'scanf'
5 5
import { ecdsaVerify } from 'secp256k1'
6 -
import Multiaddr from 'multiaddr'
6 +
import { Multiaddr } from 'multiaddr'
7 7
import base64url from 'base64url'
8 8
import { PeerInfo } from '../dpt'
9 9
import { toNewUint8Array, keccak256 } from '../util'
@@ -74,8 +74,8 @@
Loading
74 74
75 75
    const peerInfo: PeerInfo = {
76 76
      address: Convert.toString(ipCode, obj.ip) as string,
77 -
      tcpPort: Convert.toString(tcpCode, toNewUint8Array(obj.tcp)) as number,
78 -
      udpPort: Convert.toString(udpCode, toNewUint8Array(obj.udp)) as number,
77 +
      tcpPort: Number(Convert.toString(tcpCode, toNewUint8Array(obj.tcp))),
78 +
      udpPort: Number(Convert.toString(udpCode, toNewUint8Array(obj.udp))),
79 79
    }
80 80
81 81
    return peerInfo

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Learn more Showing 64 files with coverage changes found.

Changes in packages/client/lib/logging.ts
-1
+1
Loading file...
Changes in packages/devp2p/src/rlpx/mac.ts
-4
Loading file...
Changes in packages/block/src/clique.ts
-1
Loading file...
Changes in packages/block/src/header-from-rpc.ts
-6
Loading file...
packages/vm/src/evm/precompiles/11-bls12-map-fp-to-g1.ts
Loading file...
packages/vm/src/evm/stack.ts
Loading file...
packages/vm/src/evm/precompiles/06-ecadd.ts
Loading file...
packages/vm/src/evm/precompiles/02-sha256.ts
Loading file...
packages/vm/src/evm/precompiles/0b-bls12-g1mul.ts
Loading file...
packages/devp2p/src/dpt/index.ts
Loading file...
packages/vm/src/evm/memory.ts
Loading file...
packages/devp2p/src/rlpx/index.ts
Loading file...
packages/vm/src/evm/precompiles/0a-bls12-g1add.ts
Loading file...
packages/client/lib/util/debug.ts
Loading file...
packages/client/lib/service/index.ts
Loading file...
packages/vm/src/evm/precompiles/07-ecmul.ts
Loading file...
packages/client/lib/net/peer/index.ts
Loading file...
packages/vm/src/evm/precompiles/04-identity.ts
Loading file...
packages/vm/src/evm/message.ts
Loading file...
packages/vm/src/index.ts
Loading file...
packages/vm/src/exceptions.ts
Loading file...
packages/devp2p/src/index.ts
Loading file...
packages/client/lib/net/server/index.ts
Loading file...
packages/client/lib/net/protocol/index.ts
Loading file...
packages/vm/src/runBlock.ts
Loading file...
packages/vm/src/evm/opcodes/EIP2929.ts
Loading file...
packages/vm/src/evm/precompiles/12-bls12-map-fp2-to-g2.ts
Loading file...
packages/vm/src/evm/precompiles/0f-bls12-g2multiexp.ts
Loading file...
packages/vm/src/evm/precompiles/0c-bls12-g1multiexp.ts
Loading file...
packages/vm/src/runTx.ts
Loading file...
packages/client/lib/miner/index.ts
Loading file...
packages/vm/src/evm/precompiles/08-ecpairing.ts
Loading file...
packages/vm/src/evm/precompiles/0d-bls12-g2add.ts
Loading file...
packages/vm/src/evm/txContext.ts
Loading file...
packages/devp2p/src/dns/index.ts
Loading file...
packages/vm/src/evm/opcodes/functions.ts
Loading file...
packages/vm/src/evm/precompiles/index.ts
Loading file...
packages/vm/src/buildBlock.ts
Loading file...
packages/block/src/index.ts
Loading file...
packages/tx/src/index.ts
Loading file...
packages/client/lib/blockchain/index.ts
Loading file...
packages/vm/src/runBlockchain.ts
Loading file...
packages/client/lib/sync/fetcher/index.ts
Loading file...
packages/vm/src/runCall.ts
Loading file...
packages/vm/src/evm/precompiles/0e-bls12-g2mul.ts
Loading file...
packages/vm/src/evm/interpreter.ts
Loading file...
packages/vm/src/evm/evm.ts
Loading file...
packages/vm/src/runCode.ts
Loading file...
packages/vm/src/evm/precompiles/09-blake2f.ts
Loading file...
packages/vm/src/evm/precompiles/01-ecrecover.ts
Loading file...
packages/vm/src/bloom/index.ts
Loading file...
packages/vm/src/evm/opcodes/codes.ts
Loading file...
packages/vm/src/state/cache.ts
Loading file...
packages/vm/src/evm/precompiles/03-ripemd160.ts
Loading file...
packages/vm/src/evm/precompiles/05-modexp.ts
Loading file...
packages/vm/src/evm/eei.ts
Loading file...
packages/vm/src/evm/precompiles/10-bls12-pairing.ts
Loading file...
packages/vm/src/evm/precompiles/util/bls12_381.ts
Loading file...
packages/vm/src/evm/opcodes/util.ts
Loading file...
packages/vm/src/evm/opcodes/EIP2200.ts
Loading file...
New file packages/blockchain/src/clique.ts
New
Loading file...
Changes in packages/client/lib/config.ts
-1
+1
Loading file...
Changes in packages/block/src/helpers.ts
-2
-1
Loading file...
Changes in packages/devp2p/src/rlpx/rlpx.ts
-2
-1
+3
Loading file...
Files Coverage
packages 0.74% 82.06%
Project Totals (81 files) 82.06%
Loading