Commit aedf9310 authored by Mark Tyneway's avatar Mark Tyneway Committed by GitHub

config: message relayer (#809)

* relayer: migrate towards prefixed config w/ backwards compat

* chore: update relayer config parsing

* env: use start-offset instead of block offset

* lint: fix

* deps: add bcfg

* message-relayer: cleaner config parsing

* lint: fix
parent d723b2a1
---
'@eth-optimism/message-relayer': patch
---
Add updated config parsing in a backwards compatible way
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
}, },
"dependencies": { "dependencies": {
"@eth-optimism/common-ts": "^0.1.0", "@eth-optimism/common-ts": "^0.1.0",
"bcfg": "^0.1.6",
"@eth-optimism/contracts": "^0.3.0", "@eth-optimism/contracts": "^0.3.0",
"@eth-optimism/core-utils": "^0.4.2", "@eth-optimism/core-utils": "^0.4.2",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
......
import { Wallet, providers } from 'ethers' import { Wallet, providers } from 'ethers'
import { MessageRelayerService } from '../service' import { MessageRelayerService } from '../service'
import SpreadSheet from '../spreadsheet' import SpreadSheet from '../spreadsheet'
import { config } from 'dotenv' import * as dotenv from 'dotenv'
config() import Config from 'bcfg'
const env = process.env interface Bcfg {
const L2_NODE_WEB3_URL = env.L2_NODE_WEB3_URL load: (options: { env?: boolean; argv?: boolean }) => void
const L1_NODE_WEB3_URL = env.L1_NODE_WEB3_URL str: (name: string, defaultValue?: string) => string
const ADDRESS_MANAGER_ADDRESS = env.ADDRESS_MANAGER_ADDRESS uint: (name: string, defaultValue?: number) => number
const L1_WALLET_KEY = env.L1_WALLET_KEY bool: (name: string, defaultValue?: boolean) => boolean
const MNEMONIC = env.MNEMONIC ufloat: (name: string, defaultValue?: number) => number
const HD_PATH = env.HD_PATH }
const RELAY_GAS_LIMIT = env.RELAY_GAS_LIMIT || '4000000'
const POLLING_INTERVAL = env.POLLING_INTERVAL || '5000'
const GET_LOGS_INTERVAL = env.GET_LOGS_INTERVAL || '2000'
const L2_BLOCK_OFFSET = env.L2_BLOCK_OFFSET || '1'
const L1_START_OFFSET = env.L1_BLOCK_OFFSET || '1'
const FROM_L2_TRANSACTION_INDEX = env.FROM_L2_TRANSACTION_INDEX || '0'
// Spreadsheet configuration dotenv.config()
const SPREADSHEET_MODE = env.SPREADSHEET_MODE || ''
const SHEET_ID = env.SHEET_ID || ''
const CLIENT_EMAIL = env.CLIENT_EMAIL || ''
const CLIENT_PRIVATE_KEY = env.CLIENT_PRIVATE_KEY || ''
const main = async () => { const main = async () => {
const config: Bcfg = new Config('message-relayer')
config.load({
env: true,
argv: true,
})
const env = process.env
const L2_NODE_WEB3_URL = config.str('l2-node-web3-url', env.L2_NODE_WEB3_URL)
const L1_NODE_WEB3_URL = config.str('l1-node-web3-url', env.L1_NODE_WEB3_URL)
const ADDRESS_MANAGER_ADDRESS = config.str(
'address-manager-address',
env.ADDRESS_MANAGER_ADDRESS
)
const L1_WALLET_KEY = config.str('l1-wallet-key', env.L1_WALLET_KEY)
const MNEMONIC = config.str('mnemonic', env.MNEMONIC)
const HD_PATH = config.str('hd-path', env.HD_PATH)
const RELAY_GAS_LIMIT = config.uint(
'relay-gas-limit',
parseInt(env.RELAY_GAS_LIMIT, 10) || 4000000
)
const POLLING_INTERVAL = config.uint(
'polling-interval',
parseInt(env.POLLING_INTERVAL, 10) || 5000
)
const GET_LOGS_INTERVAL = config.uint(
'get-logs-interval',
parseInt(env.GET_LOGS_INTERVAL, 10) || 2000
)
const L2_BLOCK_OFFSET = config.uint(
'l2-start-offset',
parseInt(env.L2_BLOCK_OFFSET, 10) || 1
)
const L1_START_OFFSET = config.uint(
'l1-start-offset',
parseInt(env.L1_BLOCK_OFFSET, 10) || 1
)
const FROM_L2_TRANSACTION_INDEX = config.uint(
'from-l2-transaction-index',
parseInt(env.FROM_L2_TRANSACTION_INDEX, 10) || 0
)
// Spreadsheet configuration
const SPREADSHEET_MODE = config.bool(
'spreadsheet-mode',
!!env.SPREADSHEET_MODE || false
)
const SHEET_ID = config.str('sheet-id', env.SHEET_ID)
const CLIENT_EMAIL = config.str('client-email', env.CLIENT_EMAIL)
const CLIENT_PRIVATE_KEY = config.str(
'client-private-key',
env.CLIENT_PRIVATE_KEY
)
if (!ADDRESS_MANAGER_ADDRESS) { if (!ADDRESS_MANAGER_ADDRESS) {
throw new Error('Must pass ADDRESS_MANAGER_ADDRESS') throw new Error('Must pass ADDRESS_MANAGER_ADDRESS')
} }
...@@ -69,12 +112,12 @@ const main = async () => { ...@@ -69,12 +112,12 @@ const main = async () => {
l2RpcProvider: l2Provider, l2RpcProvider: l2Provider,
addressManagerAddress: ADDRESS_MANAGER_ADDRESS, addressManagerAddress: ADDRESS_MANAGER_ADDRESS,
l1Wallet: wallet, l1Wallet: wallet,
relayGasLimit: parseInt(RELAY_GAS_LIMIT, 10), relayGasLimit: RELAY_GAS_LIMIT,
fromL2TransactionIndex: parseInt(FROM_L2_TRANSACTION_INDEX, 10), fromL2TransactionIndex: FROM_L2_TRANSACTION_INDEX,
pollingInterval: parseInt(POLLING_INTERVAL, 10), pollingInterval: POLLING_INTERVAL,
l2BlockOffset: parseInt(L2_BLOCK_OFFSET, 10), l2BlockOffset: L2_BLOCK_OFFSET,
l1StartOffset: parseInt(L1_START_OFFSET, 10), l1StartOffset: L1_START_OFFSET,
getLogsInterval: parseInt(GET_LOGS_INTERVAL, 10), getLogsInterval: GET_LOGS_INTERVAL,
spreadsheetMode: !!SPREADSHEET_MODE, spreadsheetMode: !!SPREADSHEET_MODE,
spreadsheet, spreadsheet,
}) })
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment