Commit 6ab755d1 authored by Mark Tyneway's avatar Mark Tyneway Committed by GitHub

Merge pull request #5964 from ethereum-optimism/cleanup/delete-message-relayer-2

cleanup: delete message-relayer
parents e87ad76d 0518263a
...@@ -91,7 +91,6 @@ jobs: ...@@ -91,7 +91,6 @@ jobs:
- "packages/drippie-mon/node_modules" - "packages/drippie-mon/node_modules"
- "packages/fault-detector/node_modules" - "packages/fault-detector/node_modules"
- "packages/hardhat-deploy-config/node_modules" - "packages/hardhat-deploy-config/node_modules"
- "packages/message-relayer/node_modules"
- "packages/migration-data/node_modules" - "packages/migration-data/node_modules"
- "packages/replica-healthcheck/node_modules" - "packages/replica-healthcheck/node_modules"
- "packages/sdk/node_modules" - "packages/sdk/node_modules"
...@@ -1189,13 +1188,6 @@ workflows: ...@@ -1189,13 +1188,6 @@ workflows:
dependencies: "(common-ts|contracts|core-utils|sdk)" dependencies: "(common-ts|contracts|core-utils|sdk)"
requires: requires:
- yarn-monorepo - yarn-monorepo
- js-lint-test:
name: message-relayer-tests
coverage_flag: message-relayer-tests
package_name: message-relayer
dependencies: "(common-ts|core-utils|sdk)"
requires:
- yarn-monorepo
- js-lint-test: - js-lint-test:
name: replica-healthcheck-tests name: replica-healthcheck-tests
coverage_flag: replica-healthcheck-tests coverage_flag: replica-healthcheck-tests
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
/packages/chain-mon @smartcontracts /packages/chain-mon @smartcontracts
/packages/fault-detector @ethereum-optimism/devxpod /packages/fault-detector @ethereum-optimism/devxpod
/packages/hardhat-deploy-config @ethereum-optimism/legacy-reviewers /packages/hardhat-deploy-config @ethereum-optimism/legacy-reviewers
/packages/message-relayer @ethereum-optimism/legacy-reviewers
/packages/migration-data @ethereum-optimism/legacy-reviewers /packages/migration-data @ethereum-optimism/legacy-reviewers
/packages/replica-healthcheck @ethereum-optimism/legacy-reviewers /packages/replica-healthcheck @ethereum-optimism/legacy-reviewers
/packages/sdk @ethereum-optimism/devxpod /packages/sdk @ethereum-optimism/devxpod
......
...@@ -16,7 +16,6 @@ jobs: ...@@ -16,7 +16,6 @@ jobs:
# map the step outputs to job outputs # map the step outputs to job outputs
outputs: outputs:
l2geth: ${{ steps.packages.outputs.l2geth }} l2geth: ${{ steps.packages.outputs.l2geth }}
message-relayer: ${{ steps.packages.outputs.message-relayer }}
fault-detector: ${{ steps.packages.outputs.fault-detector }} fault-detector: ${{ steps.packages.outputs.fault-detector }}
balance-mon: ${{ steps.packages.outputs.balance-mon }} balance-mon: ${{ steps.packages.outputs.balance-mon }}
drippie-mon: ${{ steps.packages.outputs.drippie-mon }} drippie-mon: ${{ steps.packages.outputs.drippie-mon }}
...@@ -148,33 +147,6 @@ jobs: ...@@ -148,33 +147,6 @@ jobs:
push: true push: true
tags: ethereumoptimism/hardhat-node:${{ needs.canary-publish.outputs.canary-docker-tag }} tags: ethereumoptimism/hardhat-node:${{ needs.canary-publish.outputs.canary-docker-tag }}
message-relayer:
name: Publish Message Relayer Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
needs: canary-publish
if: needs.canary-publish.outputs.message-relayer != ''
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./ops/docker/Dockerfile.packages
target: message-relayer
push: true
tags: ethereumoptimism/message-relayer:${{ needs.canary-publish.outputs.canary-docker-tag }}
fault-detector: fault-detector:
name: Publish Fault Detector Version ${{ needs.canary-publish.outputs.canary-docker-tag }} name: Publish Fault Detector Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
needs: canary-publish needs: canary-publish
......
...@@ -15,7 +15,6 @@ jobs: ...@@ -15,7 +15,6 @@ jobs:
# map the step outputs to job outputs # map the step outputs to job outputs
outputs: outputs:
l2geth: ${{ steps.packages.outputs.l2geth }} l2geth: ${{ steps.packages.outputs.l2geth }}
message-relayer: ${{ steps.packages.outputs.message-relayer }}
fault-detector: ${{ steps.packages.outputs.fault-detector }} fault-detector: ${{ steps.packages.outputs.fault-detector }}
balance-mon: ${{ steps.packages.outputs.drippie-mon }} balance-mon: ${{ steps.packages.outputs.drippie-mon }}
drippie-mon: ${{ steps.packages.outputs.drippie-mon }} drippie-mon: ${{ steps.packages.outputs.drippie-mon }}
...@@ -197,33 +196,6 @@ jobs: ...@@ -197,33 +196,6 @@ jobs:
GITCOMMIT=${{ steps.build_args.outputs.GITCOMMIT }} GITCOMMIT=${{ steps.build_args.outputs.GITCOMMIT }}
GITVERSION=${{ steps.build_args.outputs.GITVERSION }} GITVERSION=${{ steps.build_args.outputs.GITVERSION }}
message-relayer:
name: Publish Message Relayer Version ${{ needs.release.outputs.message-relayer }}
needs: release
if: needs.release.outputs.message-relayer != ''
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./ops/docker/Dockerfile.packages
target: message-relayer
push: true
tags: ethereumoptimism/message-relayer:${{ needs.release.outputs.message-relayer }},ethereumoptimism/message-relayer:latest
fault-detector: fault-detector:
name: Publish Fault Detector Version ${{ needs.release.outputs.fault-detector }} name: Publish Fault Detector Version ${{ needs.release.outputs.fault-detector }}
needs: release needs: release
......
...@@ -24,10 +24,6 @@ ...@@ -24,10 +24,6 @@
"directory": "packages/chain-mon", "directory": "packages/chain-mon",
"changeProcessCWD": true "changeProcessCWD": true
}, },
{
"directory": "packages/message-relayer",
"changeProcessCWD": true
},
{ {
"directory": "packages/fault-detector", "directory": "packages/fault-detector",
"changeProcessCWD": true "changeProcessCWD": true
......
...@@ -126,7 +126,6 @@ This will build the following containers: ...@@ -126,7 +126,6 @@ This will build the following containers:
* [`deployer`](https://hub.docker.com/r/ethereumoptimism/deployer): process that deploys L1 smart contracts to the L1 chain * [`deployer`](https://hub.docker.com/r/ethereumoptimism/deployer): process that deploys L1 smart contracts to the L1 chain
* [`l2geth`](https://hub.docker.com/r/ethereumoptimism/l2geth): L2 geth node running in Sequencer mode * [`l2geth`](https://hub.docker.com/r/ethereumoptimism/l2geth): L2 geth node running in Sequencer mode
* [`verifier`](https://hub.docker.com/r/ethereumoptimism/go-ethereum): L2 geth node running in Verifier mode * [`verifier`](https://hub.docker.com/r/ethereumoptimism/go-ethereum): L2 geth node running in Verifier mode
* [`relayer`](https://hub.docker.com/r/ethereumoptimism/message-relayer): helper process that relays messages between L1 and L2
If you want to make a change to a container, you'll need to take it down and rebuild it. If you want to make a change to a container, you'll need to take it down and rebuild it.
For example, if you make a change in l2geth: For example, if you make a change in l2geth:
......
...@@ -56,7 +56,6 @@ Refer to the Directory Structure section below to understand which packages are ...@@ -56,7 +56,6 @@ Refer to the Directory Structure section below to understand which packages are
│ ├── <a href="./packages/core-utils">core-utils</a>: Low-level utilities that make building Optimism easier │ ├── <a href="./packages/core-utils">core-utils</a>: Low-level utilities that make building Optimism easier
│ ├── <a href="./packages/chain-mon">chain-mon</a>: Chain monitoring services │ ├── <a href="./packages/chain-mon">chain-mon</a>: Chain monitoring services
│ ├── <a href="./packages/fault-detector">fault-detector</a>: Service for detecting Sequencer faults │ ├── <a href="./packages/fault-detector">fault-detector</a>: Service for detecting Sequencer faults
│ ├── <a href="./packages/message-relayer">message-relayer</a>: Tool for automatically relaying L1<>L2 messages in development
│ ├── <a href="./packages/replica-healthcheck">replica-healthcheck</a>: Service for monitoring the health of a replica node │ ├── <a href="./packages/replica-healthcheck">replica-healthcheck</a>: Service for monitoring the health of a replica node
│ └── <a href="./packages/sdk">sdk</a>: provides a set of tools for interacting with Optimism │ └── <a href="./packages/sdk">sdk</a>: provides a set of tools for interacting with Optimism
├── <a href="./op-bindings">op-bindings</a>: Go bindings for Bedrock smart contracts. ├── <a href="./op-bindings">op-bindings</a>: Go bindings for Bedrock smart contracts.
...@@ -84,7 +83,6 @@ Refer to the Directory Structure section below to understand which packages are ...@@ -84,7 +83,6 @@ Refer to the Directory Structure section below to understand which packages are
│ ├── <a href="./packages/core-utils">core-utils</a>: Low-level utilities that make building Optimism easier │ ├── <a href="./packages/core-utils">core-utils</a>: Low-level utilities that make building Optimism easier
│ ├── <a href="./packages/chain-mon">chain-mon</a>: Chain monitoring services │ ├── <a href="./packages/chain-mon">chain-mon</a>: Chain monitoring services
│ ├── <a href="./packages/fault-detector">fault-detector</a>: Service for detecting Sequencer faults │ ├── <a href="./packages/fault-detector">fault-detector</a>: Service for detecting Sequencer faults
│ ├── <a href="./packages/message-relayer">message-relayer</a>: Tool for automatically relaying L1<>L2 messages in development
│ ├── <a href="./packages/replica-healthcheck">replica-healthcheck</a>: Service for monitoring the health of a replica node │ ├── <a href="./packages/replica-healthcheck">replica-healthcheck</a>: Service for monitoring the health of a replica node
│ └── <a href="./packages/sdk">sdk</a>: provides a set of tools for interacting with Optimism │ └── <a href="./packages/sdk">sdk</a>: provides a set of tools for interacting with Optimism
├── <a href="./indexer">indexer</a>: indexes and syncs transactions ├── <a href="./indexer">indexer</a>: indexes and syncs transactions
......
...@@ -39,6 +39,5 @@ flag_management: ...@@ -39,6 +39,5 @@ flag_management:
- name: dtl-tests - name: dtl-tests
- name: chain-mon-tests - name: chain-mon-tests
- name: fault-detector-tests - name: fault-detector-tests
- name: message-relayer-tests
- name: replica-healthcheck-tests - name: replica-healthcheck-tests
- name: sdk-tests - name: sdk-tests
version: '3.4'
x-system-addr-env: &system-addr-env
# private key: a6aecc98b63bafb0de3b29ae9964b14acb4086057808be29f90150214ebd4a0f
# OK to publish this since it will only ever be used in itests
SYSTEM_ADDRESS_0_DEPLOYER: '0xa961b0d6dce82db098cf70a42a14add3ee3db2d5'
# private key: 3b8d2345102cce2443acb240db6e87c8edd4bb3f821b17fab8ea2c9da08ea132
# OK to publish this since it will only ever be used in itests
SYSTEM_ADDRESS_1_DEPLOYER: '0xdfc82d475833a50de90c642770f34a9db7deb725'
services:
# this is a helper service used because there's no official hardhat image
l1_chain:
image: ethereumoptimism/hardhat-node:${DOCKER_TAG_HARDHAT:-latest}
build:
context: ./docker/hardhat
dockerfile: Dockerfile
env_file:
- ./envs/l1_chain.env
ports:
# expose the service to the host for integration testing
- ${L1CHAIN_HTTP_PORT:-9545}:8545
deployer:
depends_on:
- l1_chain
build:
context: ..
dockerfile: ./ops/docker/Dockerfile.packages
target: deployer
image: ethereumoptimism/deployer:${DOCKER_TAG_DEPLOYER:-latest}
entrypoint: ./deployer.sh
environment:
# Env vars for the deployment script.
CONTRACTS_RPC_URL: http://l1_chain:8545
CONTRACTS_DEPLOYER_KEY: 'ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'
CONTRACTS_TARGET_NETWORK: 'local'
ports:
# expose the service to the host for getting the contract addrs
- ${DEPLOYER_PORT:-8080}:8081
dtl:
depends_on:
- l1_chain
- deployer
- l2geth
build:
context: ..
dockerfile: ./ops/docker/Dockerfile.packages
target: data-transport-layer
image: ethereumoptimism/data-transport-layer:${DOCKER_TAG_DATA_TRANSPORT_LAYER:-latest}
# override with the dtl script and the env vars required for it
entrypoint: ./dtl.sh
env_file:
- ./envs/dtl.env
# set the rest of the env vars for the network whcih do not
# depend on the docker-compose setup
environment:
# used for setting the address manager address
URL: http://deployer:8081/addresses.json
# connect to the 2 layers
DATA_TRANSPORT_LAYER__L1_RPC_ENDPOINT: http://l1_chain:8545
DATA_TRANSPORT_LAYER__L2_RPC_ENDPOINT: http://l2geth:8545
DATA_TRANSPORT_LAYER__SYNC_FROM_L2: 'true'
DATA_TRANSPORT_LAYER__L2_CHAIN_ID: 17
ports:
- ${DTL_PORT:-7878}:7878
l2geth:
depends_on:
- l1_chain
- deployer
build:
context: ..
dockerfile: ./l2geth/Dockerfile
image: ethereumoptimism/l2geth:${DOCKER_TAG_L2GETH:-latest}
# override with the geth script and the env vars required for it
entrypoint: sh ./geth.sh
env_file:
- ./envs/geth.env
environment:
<<: *system-addr-env
ETH1_HTTP: http://l1_chain:8545
ROLLUP_TIMESTAMP_REFRESH: 5s
ROLLUP_STATE_DUMP_PATH: http://deployer:8081/state-dump.latest.json
# connecting to the DTL
ROLLUP_CLIENT_HTTP: http://dtl:7878
ETH1_CTC_DEPLOYMENT_HEIGHT: 8
RETRIES: 60
# no need to keep this secret, only used internally to sign blocks
BLOCK_SIGNER_KEY: '6587ae678cf4fc9a33000cdbf9f35226b71dcc6a4684a31203241f9bcfd55d27'
BLOCK_SIGNER_ADDRESS: '0x00000398232E2064F896018496b4b44b3D62751F'
ROLLUP_ENFORCE_FEES: ${ROLLUP_ENFORCE_FEES:-true}
ROLLUP_FEE_THRESHOLD_DOWN: 0.9
ROLLUP_FEE_THRESHOLD_UP: 1.1
ports:
- ${L2GETH_HTTP_PORT:-8545}:8545
- ${L2GETH_WS_PORT:-8546}:8546
relayer:
depends_on:
- l1_chain
- l2geth
deploy:
replicas: 0
build:
context: ..
dockerfile: ./ops/docker/Dockerfile.packages
target: message-relayer
image: ethereumoptimism/message-relayer:${DOCKER_TAG_MESSAGE_RELAYER:-latest}
entrypoint: ./relayer.sh
environment:
MESSAGE_RELAYER__L1_RPC_PROVIDER: http://l1_chain:8545
MESSAGE_RELAYER__L2_RPC_PROVIDER: http://l2geth:8545
MESSAGE_RELAYER__L1_WALLET: '0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97'
RETRIES: 60
fault_detector:
depends_on:
- l1_chain
- l2geth
deploy:
replicas: 0
build:
context: ..
dockerfile: ./ops/docker/Dockerfile.packages
target: fault-detector
image: ethereumoptimism/fault-detector:${DOCKER_TAG_FAULT_DETECTOR:-latest}
entrypoint: ./detector.sh
environment:
FAULT_DETECTOR__L1_RPC_PROVIDER: http://l1_chain:8545
FAULT_DETECTOR__L2_RPC_PROVIDER: http://l2geth:8545
RETRIES: 60
verifier:
depends_on:
- l1_chain
- deployer
- dtl
- l2geth
deploy:
replicas: 1
build:
context: ..
dockerfile: ./l2geth/Dockerfile
image: ethereumoptimism/l2geth:${DOCKER_TAG_L2GETH:-latest}
entrypoint: sh ./geth.sh
env_file:
- ./envs/geth.env
environment:
<<: *system-addr-env
ETH1_HTTP: http://l1_chain:8545
SEQUENCER_CLIENT_HTTP: http://l2geth:8545
ROLLUP_STATE_DUMP_PATH: http://deployer:8081/state-dump.latest.json
ROLLUP_CLIENT_HTTP: http://dtl:7878
ROLLUP_BACKEND: 'l1'
ETH1_CTC_DEPLOYMENT_HEIGHT: 8
RETRIES: 60
ROLLUP_VERIFIER_ENABLE: 'true'
ports:
- ${VERIFIER_HTTP_PORT:-8547}:8545
- ${VERIFIER_WS_PORT:-8548}:8546
replica:
depends_on:
- dtl
- l2geth
deploy:
replicas: 1
build:
context: ..
dockerfile: ./l2geth/Dockerfile
image: ethereumoptimism/l2geth:${DOCKER_TAG_L2GETH:-latest}
entrypoint: sh ./geth.sh
env_file:
- ./envs/geth.env
environment:
<<: *system-addr-env
ETH1_HTTP: http://l1_chain:8545
SEQUENCER_CLIENT_HTTP: http://l2geth:8545
ROLLUP_STATE_DUMP_PATH: http://deployer:8081/state-dump.latest.json
ROLLUP_CLIENT_HTTP: http://dtl:7878
ROLLUP_BACKEND: 'l2'
ROLLUP_VERIFIER_ENABLE: 'true'
ETH1_CTC_DEPLOYMENT_HEIGHT: 8
RETRIES: 60
ports:
- ${REPLICA_HTTP_PORT:-8549}:8545
- ${REPLICA_WS_PORT:-8550}:8546
replica_healthcheck:
depends_on:
- l2geth
- replica
deploy:
replicas: 0
build:
context: ..
dockerfile: ./ops/docker/Dockerfile.packages
target: replica-healthcheck
image: ethereumoptimism/replica-healthcheck:${DOCKER_TAG_REPLICA_HEALTHCHECK:-latest}
environment:
HEALTHCHECK__REFERENCE_RPC_PROVIDER: http://l2geth:8545
HEALTHCHECK__TARGET_RPC_PROVIDER: http://replica:8545
ports:
- ${HEALTHCHECK_HTTP_PORT:-7300}:7300
...@@ -89,12 +89,6 @@ WORKDIR /opt/optimism/packages/contracts-bedrock ...@@ -89,12 +89,6 @@ WORKDIR /opt/optimism/packages/contracts-bedrock
CMD ["yarn", "run", "deploy"] CMD ["yarn", "run", "deploy"]
FROM base as message-relayer
WORKDIR /opt/optimism/packages/message-relayer
COPY ./ops/scripts/relayer.sh .
CMD ["npm", "run", "start"]
FROM base as fault-detector FROM base as fault-detector
WORKDIR /opt/optimism/packages/fault-detector WORKDIR /opt/optimism/packages/fault-detector
COPY ./ops/scripts/detector.sh . COPY ./ops/scripts/detector.sh .
......
ignores: [
"@babel/eslint-parser",
"@typescript-eslint/parser",
"eslint-plugin-import",
"eslint-plugin-unicorn",
"eslint-plugin-jsdoc",
"eslint-plugin-prefer-arrow",
"eslint-plugin-react",
"@typescript-eslint/eslint-plugin",
"eslint-config-prettier",
"eslint-plugin-prettier",
"chai"
]
# URL pointing to an L1 RPC provider
MESSAGE_RELAYER__L1_RPC_PROVIDER=
# URL pointing to an L2 RPC provider
MESSAGE_RELAYER__L2_RPC_PROVIDER=
# Private key for a wallet with ETH on L1
MESSAGE_RELAYER__L1_WALLET=
# Optional, L2 block height to start relaying messages from (default is 0)
MESSAGE_RELAYER__FROM_L2_TRANSACTION_INDEX=
module.exports = {
extends: '../../.eslintrc.js',
}
module.exports = {
...require('../../.prettierrc.js'),
};
\ No newline at end of file
# @eth-optimism/message-relayer
## 0.5.34
### Patch Changes
- Updated dependencies [a1b7ff9e3]
- Updated dependencies [8133872ed]
- Updated dependencies [afc2ab8c9]
- Updated dependencies [5063a69fb]
- Updated dependencies [aa854bdd8]
- @eth-optimism/sdk@2.1.0
## 0.5.33
### Patch Changes
- dbe5eb308: Empty patch release to re-release packages that failed to be released by a bug in the release process.
- Updated dependencies [be3315689]
- @eth-optimism/sdk@2.0.2
## 0.5.32
### Patch Changes
- Updated dependencies [fecd42d67]
- Updated dependencies [66cafc00a]
- @eth-optimism/common-ts@0.8.1
- @eth-optimism/sdk@2.0.1
## 0.5.31
### Patch Changes
- Updated dependencies [cb19e2f9c]
- @eth-optimism/sdk@2.0.0
## 0.5.30
### Patch Changes
- @eth-optimism/sdk@1.10.4
## 0.5.29
### Patch Changes
- @eth-optimism/sdk@1.10.3
## 0.5.28
### Patch Changes
- Updated dependencies [0e179781b]
- Updated dependencies [5372c9f5b]
- Updated dependencies [4ae94b412]
- @eth-optimism/common-ts@0.8.0
- @eth-optimism/sdk@1.10.2
## 0.5.27
### Patch Changes
- Updated dependencies [f04e5db2d]
- @eth-optimism/common-ts@0.7.1
- @eth-optimism/sdk@1.10.1
## 0.5.26
### Patch Changes
- Updated dependencies [3f4b3c328]
- @eth-optimism/sdk@1.10.0
## 0.5.25
### Patch Changes
- @eth-optimism/sdk@1.9.1
## 0.5.24
### Patch Changes
- Updated dependencies [e23f60f63]
- Updated dependencies [ab8ec365c]
- Updated dependencies [ba8b94a60]
- Updated dependencies [9b2891852]
- Updated dependencies [d1f9098f9]
- Updated dependencies [c6c9c7dbf]
- Updated dependencies [ffcee1013]
- Updated dependencies [eceb0de1d]
- @eth-optimism/common-ts@0.7.0
- @eth-optimism/sdk@1.9.0
## 0.5.23
### Patch Changes
- 1d3c749a2: Bumps the version of ts-node used
- Updated dependencies [767585b07]
- Updated dependencies [c975c9620]
- Updated dependencies [136ea1785]
- @eth-optimism/sdk@1.8.0
- @eth-optimism/core-utils@0.12.0
- @eth-optimism/common-ts@0.6.8
## 0.5.22
### Patch Changes
- Updated dependencies [1bfe79f20]
- @eth-optimism/sdk@1.7.0
## 0.5.21
### Patch Changes
- 97b5f578c: Fixes how versions are imported for BaseServiceV2 services
- @eth-optimism/sdk@1.6.11
## 0.5.20
### Patch Changes
- Updated dependencies [1e76cdb86]
- @eth-optimism/core-utils@0.11.0
- @eth-optimism/common-ts@0.6.7
- @eth-optimism/sdk@1.6.10
## 0.5.19
### Patch Changes
- @eth-optimism/sdk@1.6.9
## 0.5.18
### Patch Changes
- @eth-optimism/sdk@1.6.8
## 0.5.17
### Patch Changes
- Updated dependencies [b40913b1]
- Updated dependencies [a5e715c3]
- @eth-optimism/sdk@1.6.7
## 0.5.16
### Patch Changes
- Updated dependencies [ce7da914]
- @eth-optimism/common-ts@0.6.6
- @eth-optimism/sdk@1.6.6
## 0.5.15
### Patch Changes
- Updated dependencies [e2faaa8b]
- @eth-optimism/sdk@1.6.5
## 0.5.14
### Patch Changes
- 7215f4ce: Bump ethers to 5.7.0 globally
- 4f0cc4a4: Small patch release meant to test a fix for a bug in our canary release process for this package.
- Updated dependencies [7215f4ce]
- Updated dependencies [206f6033]
- Updated dependencies [d7679ca4]
- @eth-optimism/common-ts@0.6.5
- @eth-optimism/core-utils@0.10.1
- @eth-optimism/sdk@1.6.4
## 0.5.13
### Patch Changes
- @eth-optimism/sdk@1.6.3
## 0.5.12
### Patch Changes
- Updated dependencies [cfa81f88]
- @eth-optimism/sdk@1.6.2
## 0.5.11
### Patch Changes
- Updated dependencies [b27d0fa7]
- Updated dependencies [dbfea116]
- @eth-optimism/sdk@1.6.1
- @eth-optimism/core-utils@0.10.0
- @eth-optimism/common-ts@0.6.4
## 0.5.10
### Patch Changes
- Updated dependencies [3df66a9a]
- Updated dependencies [8323407f]
- Updated dependencies [3af9c7a9]
- Updated dependencies [aa2949ef]
- Updated dependencies [a1a73e64]
- Updated dependencies [f53c30b9]
- @eth-optimism/sdk@1.6.0
## 0.5.9
### Patch Changes
- Updated dependencies [dcd715a6]
- @eth-optimism/sdk@1.5.0
## 0.5.8
### Patch Changes
- Updated dependencies [0df744f6]
- Updated dependencies [8ae39154]
- Updated dependencies [f05ab6b6]
- Updated dependencies [dac4a9f0]
- @eth-optimism/core-utils@0.9.3
- @eth-optimism/sdk@1.4.0
- @eth-optimism/common-ts@0.6.3
## 0.5.7
### Patch Changes
- Updated dependencies [0bf3b9b4]
- Updated dependencies [680714c1]
- Updated dependencies [8d26459b]
- Updated dependencies [4477fe9f]
- Updated dependencies [29830750]
- @eth-optimism/core-utils@0.9.2
- @eth-optimism/sdk@1.3.1
- @eth-optimism/common-ts@0.6.2
## 0.5.6
### Patch Changes
- Updated dependencies [032f7214]
- @eth-optimism/sdk@1.3.0
## 0.5.5
### Patch Changes
- Updated dependencies [f9fee446]
- @eth-optimism/core-utils@0.9.1
- @eth-optimism/sdk@1.2.1
- @eth-optimism/common-ts@0.6.1
## 0.5.4
### Patch Changes
- 977493bc: Update SDK version and usage to account for new constructor
- Updated dependencies [977493bc]
- Updated dependencies [700dcbb0]
- Updated dependencies [3d1cb720]
- @eth-optimism/sdk@1.2.0
- @eth-optimism/core-utils@0.9.0
- @eth-optimism/common-ts@0.6.0
## 0.5.3
### Patch Changes
- Updated dependencies [cb71fcde]
- Updated dependencies [10e41522]
- @eth-optimism/common-ts@0.5.0
## 0.5.2
### Patch Changes
- 29ff7462: Revert es target back to 2017
- Updated dependencies [c201f3f1]
- Updated dependencies [29ff7462]
- Updated dependencies [52b26878]
- @eth-optimism/common-ts@0.4.0
- @eth-optimism/core-utils@0.8.7
- @eth-optimism/sdk@1.1.9
## 0.5.1
### Patch Changes
- Updated dependencies [9ba869a7]
- Updated dependencies [050859fd]
- @eth-optimism/common-ts@0.3.1
## 0.5.0
### Minor Changes
- 84a8934c: BaseServiceV2 exposes service name and version as standard synthetic metric
### Patch Changes
- Updated dependencies [d9e39931]
- Updated dependencies [84a8934c]
- @eth-optimism/common-ts@0.3.0
## 0.4.13
### Patch Changes
- Updated dependencies [9ecbf3e5]
- @eth-optimism/common-ts@0.2.10
- @eth-optimism/sdk@1.1.8
## 0.4.12
### Patch Changes
- Updated dependencies [17962ca9]
- @eth-optimism/core-utils@0.8.6
- @eth-optimism/common-ts@0.2.9
- @eth-optimism/sdk@1.1.7
## 0.4.11
### Patch Changes
- d18ae135: Updates all ethers versions in response to BN.js bug
- Updated dependencies [f16383f2]
- Updated dependencies [d18ae135]
- @eth-optimism/common-ts@0.2.8
- @eth-optimism/core-utils@0.8.5
- @eth-optimism/sdk@1.1.6
## 0.4.10
### Patch Changes
- Updated dependencies [86901552]
- @eth-optimism/sdk@1.1.5
## 0.4.9
### Patch Changes
- @eth-optimism/sdk@1.1.4
## 0.4.8
### Patch Changes
- 412688d5: Replace calls to getNetwork() with getChainId util
- @eth-optimism/sdk@1.1.3
## 0.4.7
### Patch Changes
- Updated dependencies [5cb3a5f7]
- Updated dependencies [6b9fc055]
- @eth-optimism/core-utils@0.8.4
- @eth-optimism/sdk@1.1.2
- @eth-optimism/common-ts@0.2.7
## 0.4.6
### Patch Changes
- Updated dependencies [1338135c]
- @eth-optimism/sdk@1.1.1
## 0.4.5
### Patch Changes
- Updated dependencies [a9f8e577]
- @eth-optimism/sdk@1.1.0
## 0.4.4
### Patch Changes
- b57014d1: Update to typescript@4.6.2
- Updated dependencies [b57014d1]
- @eth-optimism/common-ts@0.2.6
- @eth-optimism/core-utils@0.8.3
- @eth-optimism/sdk@1.0.4
## 0.4.3
### Patch Changes
- c1957126: Update Dockerfile to use Alpine
- d9a51154: Bump to hardhat@2.9.1
- Updated dependencies [e36b085c]
- Updated dependencies [c1957126]
- Updated dependencies [51673b90]
- Updated dependencies [7a179003]
- Updated dependencies [d9a51154]
- @eth-optimism/common-ts@0.2.5
- @eth-optimism/core-utils@0.8.2
- @eth-optimism/sdk@1.0.3
## 0.4.2
### Patch Changes
- Updated dependencies [f981b8da]
- @eth-optimism/common-ts@0.2.4
## 0.4.1
### Patch Changes
- 88601cb7: Refactored Dockerfiles
- 5cd1e996: Have BaseServiceV2 add spaces to environment variable names
- Updated dependencies [f7761058]
- Updated dependencies [5ae15042]
- Updated dependencies [5cd1e996]
- Updated dependencies [d49feca1]
- @eth-optimism/common-ts@0.2.3
- @eth-optimism/sdk@1.0.2
## 0.4.0
### Minor Changes
- 860fef46: Rewrites the message-relayer to use the BaseServiceV2.
### Patch Changes
- Updated dependencies [b3f9bdef]
- Updated dependencies [7ae1c67f]
- Updated dependencies [e53b5783]
- Updated dependencies [47e5d118]
- @eth-optimism/common-ts@0.2.2
- @eth-optimism/sdk@1.0.1
## 0.3.2
### Patch Changes
- Updated dependencies [42227d69]
- Updated dependencies [84f63c49]
- @eth-optimism/sdk@1.0.0
## 0.3.1
### Patch Changes
- Updated dependencies [b66e3131]
- Updated dependencies [5a6f539c]
- Updated dependencies [27d8942e]
- @eth-optimism/sdk@0.2.5
- @eth-optimism/core-utils@0.8.1
## 0.3.0
### Minor Changes
- dcdcc757: Removes message relaying utilities from the Message Relayer, to be replaced by the SDK
### Patch Changes
- 189f63be: Update message relayer to log sent tx hashes
- Updated dependencies [f37c283c]
- Updated dependencies [3f4d3c13]
- Updated dependencies [0b4453f7]
- Updated dependencies [0c54e60e]
- @eth-optimism/sdk@0.2.3
- @eth-optimism/core-utils@0.8.0
## 0.2.18
### Patch Changes
- 31108ed0: Fixes a bug that prevented the relayer from running correctly.
- Updated dependencies [b4165299]
- Updated dependencies [3c2acd91]
- @eth-optimism/core-utils@0.7.7
- @eth-optimism/contracts@0.5.14
## 0.2.17
### Patch Changes
- Updated dependencies [438bc78a]
- @eth-optimism/contracts@0.5.13
## 0.2.16
### Patch Changes
- ba14c59d: Updates various ethers dependencies to their latest versions
- Updated dependencies [ba14c59d]
- @eth-optimism/contracts@0.5.12
- @eth-optimism/core-utils@0.7.6
## 0.2.15
### Patch Changes
- Updated dependencies [e631c39c]
- @eth-optimism/contracts@0.5.11
## 0.2.14
### Patch Changes
- Updated dependencies [ad94b9d1]
- @eth-optimism/core-utils@0.7.5
- @eth-optimism/contracts@0.5.10
## 0.2.13
### Patch Changes
- Updated dependencies [ba96a455]
- Updated dependencies [c3e85fef]
- @eth-optimism/core-utils@0.7.4
- @eth-optimism/contracts@0.5.9
## 0.2.12
### Patch Changes
- e7c65ade: Fix docker build
- Updated dependencies [b3efb8b7]
- Updated dependencies [279603e5]
- Updated dependencies [b6040bb3]
- @eth-optimism/contracts@0.5.8
## 0.2.11
### Patch Changes
- 3a673322: Removed old node.js service running script
## 0.2.10
### Patch Changes
- Updated dependencies [b6f89fad]
- @eth-optimism/contracts@0.5.7
## 0.2.9
### Patch Changes
- Updated dependencies [bbd42e03]
- Updated dependencies [453f0774]
- @eth-optimism/contracts@0.5.6
## 0.2.8
### Patch Changes
- 57d5b8f9: Build docker images with node.js version 16
## 0.2.7
### Patch Changes
- 0ab37fc9: Update to node.js version 16
## 0.2.6
### Patch Changes
- 6b73a94a: Fix dockerfile
## 0.2.5
### Patch Changes
- Updated dependencies [584cbc25]
- @eth-optimism/core-utils@0.7.3
- @eth-optimism/contracts@0.5.5
## 0.2.4
### Patch Changes
- 8e634b49: Fix package JSON issues
- Updated dependencies [8e634b49]
- @eth-optimism/core-utils@0.7.2
- @eth-optimism/contracts@0.5.4
## 0.2.3
### Patch Changes
- Updated dependencies [b9049406]
- Updated dependencies [a8b14a7d]
- @eth-optimism/contracts@0.5.3
## 0.2.2
### Patch Changes
- 243f33e5: Standardize package json file format
- Updated dependencies [243f33e5]
- @eth-optimism/common-ts@0.2.1
- @eth-optimism/contracts@0.5.2
- @eth-optimism/core-utils@0.7.1
## 0.2.1
### Patch Changes
- Updated dependencies [c0fc7fee]
- @eth-optimism/contracts@0.5.1
## 0.2.0
### Minor Changes
- 3f590e33: Remove the "OVM" Prefix from contract names
- 81ccd6e4: `regenesis/0.5.0` release
### Patch Changes
- 0a147680: Add legacy proof generation to message-relayer
- 222a3eef: Add 'User-Agent' to the http headers for ethers providers
- b70ee70c: upgraded to solidity 0.8.9
- a98a1884: Fixes dependencies instead of using caret constraints
- 8f4cb337: Removes the onlyRelayer modifier from the L1CrossDomainMessenger
- beb6c977: Remove obsoleted contract code. Improve events usability by indexing helpful params. Switch using encoded message and use decoded message from event
- Updated dependencies [e4a1129c]
- Updated dependencies [64ea3ac9]
- Updated dependencies [3ce62c81]
- Updated dependencies [299a459e]
- Updated dependencies [8c8807c0]
- Updated dependencies [d7978cfc]
- Updated dependencies [e16d41c0]
- Updated dependencies [5db50b3d]
- Updated dependencies [cee2a464]
- Updated dependencies [66bf56a6]
- Updated dependencies [2c91ca00]
- Updated dependencies [d5036826]
- Updated dependencies [222a3eef]
- Updated dependencies [dfc784e8]
- Updated dependencies [896168e2]
- Updated dependencies [436c48fd]
- Updated dependencies [7c352b1e]
- Updated dependencies [2ade9a79]
- Updated dependencies [0272a536]
- Updated dependencies [6ee7423f]
- Updated dependencies [3f590e33]
- Updated dependencies [e20deca0]
- Updated dependencies [2a731e0d]
- Updated dependencies [199e895e]
- Updated dependencies [872f5976]
- Updated dependencies [9c1443a4]
- Updated dependencies [26906518]
- Updated dependencies [c53b3587]
- Updated dependencies [1b917041]
- Updated dependencies [483f561b]
- Updated dependencies [b70ee70c]
- Updated dependencies [c38e4b57]
- Updated dependencies [a98a1884]
- Updated dependencies [b744b6ea]
- Updated dependencies [20c8969b]
- Updated dependencies [d2eb8ae0]
- Updated dependencies [1e63ffa0]
- Updated dependencies [ff266e9c]
- Updated dependencies [b56dd079]
- Updated dependencies [56fe3793]
- Updated dependencies [3e2aa16a]
- Updated dependencies [d3cb1b86]
- Updated dependencies [3e41df63]
- Updated dependencies [973589da]
- Updated dependencies [83a449c4]
- Updated dependencies [9c63e9bd]
- Updated dependencies [81ccd6e4]
- Updated dependencies [f38b8000]
- Updated dependencies [d5f012ab]
- Updated dependencies [76c84f21]
- Updated dependencies [6d32d701]
- Updated dependencies [3605b963]
- Updated dependencies [3f28385a]
- Updated dependencies [280f348c]
- Updated dependencies [a0947c3f]
- Updated dependencies [51821d8f]
- Updated dependencies [29f1c228]
- Updated dependencies [8f4cb337]
- Updated dependencies [beb6c977]
- Updated dependencies [33abe73d]
- Updated dependencies [71de86d6]
- @eth-optimism/contracts@0.5.0
- @eth-optimism/core-utils@0.7.0
- @eth-optimism/common-ts@0.2.0
## 0.1.14
### Patch Changes
- 6d3e1d7f: Update dependencies
- Updated dependencies [6d3e1d7f]
- Updated dependencies [2e929aa9]
- @eth-optimism/common-ts@0.1.6
- @eth-optimism/contracts@0.4.14
- @eth-optimism/core-utils@0.6.1
## 0.1.13
### Patch Changes
- e504bb47: added coverage for getMerkleTreeProof
- Updated dependencies [e0be02e1]
- Updated dependencies [7f7f35c3]
- Updated dependencies [8da04505]
- @eth-optimism/core-utils@0.6.0
- @eth-optimism/contracts@0.4.13
## 0.1.12
### Patch Changes
- 21b17edd: Added coverage for packages
- Updated dependencies [888dafca]
- Updated dependencies [eb0854e7]
- Updated dependencies [21b17edd]
- Updated dependencies [dfe3598f]
- @eth-optimism/contracts@0.4.11
- @eth-optimism/core-utils@0.5.5
## 0.1.11
### Patch Changes
- 918c08ca: Bump ethers dependency to 5.4.x to support eip1559
- Updated dependencies [918c08ca]
- @eth-optimism/contracts@0.4.10
- @eth-optimism/core-utils@0.5.2
## 0.1.10
### Patch Changes
- ecc2f8c1: Patch so contracts package will correctly use the browser-compatible contract artifacts import
- Updated dependencies [ecc2f8c1]
- @eth-optimism/contracts@0.4.9
## 0.1.9
### Patch Changes
- e4fea5e0: Use latest contracts package for browser compatibility support
- Updated dependencies [e4fea5e0]
- @eth-optimism/contracts@0.4.8
## 0.1.8
### Patch Changes
- c73c3939: Update the typescript version to `4.3.5`
- Updated dependencies [c73c3939]
- @eth-optimism/common-ts@0.1.5
- @eth-optimism/contracts@0.4.5
- @eth-optimism/core-utils@0.5.1
## 0.1.7
### Patch Changes
- fd86043a: Adds a new l2 to l1 message relaying utility within the message relayer package
- Updated dependencies [0313794b]
- Updated dependencies [049200f4]
- Updated dependencies [21e47e1f]
- @eth-optimism/contracts@0.4.2
- @eth-optimism/core-utils@0.5.0
## 0.1.6
### Patch Changes
- 735cd78f: Update relayer package JSON to correctly export all files in dist
- Updated dependencies [25f09abd]
- Updated dependencies [dd8edc7b]
- Updated dependencies [c87e4c74]
- Updated dependencies [db0dbfb2]
- Updated dependencies [7f5936a8]
- Updated dependencies [f87a2d00]
- Updated dependencies [85da4979]
- Updated dependencies [57ca21a2]
- Updated dependencies [5fc728da]
- Updated dependencies [2e72fd90]
- Updated dependencies [c43b33ec]
- Updated dependencies [26bc63ad]
- Updated dependencies [a0d9e565]
- Updated dependencies [2bd49730]
- Updated dependencies [38355a3b]
- Updated dependencies [3c2c32e1]
- Updated dependencies [d9644c34]
- Updated dependencies [48ece14c]
- Updated dependencies [e04de624]
- Updated dependencies [014dea71]
- Updated dependencies [fa29b03e]
- Updated dependencies [6b46c8ba]
- Updated dependencies [e045f582]
- Updated dependencies [5c89c45f]
- Updated dependencies [df5ff890]
- Updated dependencies [e29fab10]
- Updated dependencies [c2a04893]
- Updated dependencies [baacda34]
- @eth-optimism/contracts@0.4.0
- @eth-optimism/core-utils@0.4.6
- @eth-optimism/common-ts@0.1.4
## 0.1.5
### Patch Changes
- baa3b761: Improve Sentry support, initializing as needed and ensuring ERROR logs route to Sentry
- Updated dependencies [baa3b761]
- @eth-optimism/common-ts@0.1.3
## 0.1.4
### Patch Changes
- 9d39121b: Adds a README and cleans up the interface for generating messages and proofs
- 86708bb5: Adds a new set of tools for generating messages to be relayed and their proofs
- 064c03af: Removes spreadsheet mode from the message relayer
- Updated dependencies [a64f8161]
- Updated dependencies [4e03f8a9]
- Updated dependencies [8e2bfd07]
- Updated dependencies [750a5021]
- Updated dependencies [c2b6e14b]
- Updated dependencies [245136f1]
- @eth-optimism/core-utils@0.4.5
- @eth-optimism/contracts@0.3.5
## 0.1.3
### Patch Changes
- e3b138b: Fix to avoid getting OOM killed when the relayer runs for a long period of time
- Updated dependencies [5e5d4a1]
- @eth-optimism/contracts@0.3.3
## 0.1.2
### Patch Changes
- 96a586e: Migrate bcfg interface to core-utils
- fa4898a: Explicitly log error messages so that they do not show as empty objects
- Updated dependencies [96a586e]
- Updated dependencies [0c16805]
- Updated dependencies [775118a]
- @eth-optimism/core-utils@0.4.3
- @eth-optimism/common-ts@0.1.2
- @eth-optimism/contracts@0.3.1
## 0.1.1
### Patch Changes
- aedf931: Add updated config parsing in a backwards compatible way
- d723b2a: Don't log the config options at startup because it contains secrets
## 0.1.0
### Minor Changes
- b799caa: Updates to use RLP encoded transactions in batches for the `v0.3.0` release
### Patch Changes
- 33fcd84: Add a check for `OVM_L2MessageRelayer` in the AddressManager before attempting to relay messages to help surface errors more quickly
- Updated dependencies [b799caa]
- Updated dependencies [6132e7a]
- Updated dependencies [b799caa]
- Updated dependencies [b799caa]
- Updated dependencies [b799caa]
- Updated dependencies [20747fd]
- Updated dependencies [b799caa]
- Updated dependencies [b799caa]
- @eth-optimism/contracts@0.3.0
- @eth-optimism/core-utils@0.4.2
## 0.0.5
### Patch Changes
- 28dc442: move metrics, logger, and base-service to new common-ts package
- Updated dependencies [28dc442]
- Updated dependencies [d2091d4]
- Updated dependencies [a0a0052]
- Updated dependencies [0ef3069]
- @eth-optimism/common-ts@0.1.0
- @eth-optimism/core-utils@0.4.0
- @eth-optimism/contracts@0.2.9
## 0.0.4
### Patch Changes
- Updated dependencies [91460d9]
- Updated dependencies [a0a7956]
- Updated dependencies [0497d7d]
- @eth-optimism/core-utils@0.3.0
- @eth-optimism/contracts@0.2.5
## 0.0.3
### Patch Changes
- 3b00b7c: bump private package versions to try triggering a tag
## 0.0.2
### Patch Changes
- Updated dependencies [6cbc54d]
- @eth-optimism/core-utils@0.2.0
- @eth-optimism/contracts@0.2.2
(The MIT License)
Copyright 2020-2021 Optimism
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# @eth-optimism/message-relayer
[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/develop/graph/badge.svg?token=0VTG7PG7YR&flag=message-relayer-tests)](https://codecov.io/gh/ethereum-optimism/optimism)
`message-relayer` is a service that automatically finalizes ("relays") messages sent from Optimism to Ethereum.
This package is meant to be used during local development and should NOT be used on a production network.
## Installation
Clone, install, and build the Optimism monorepo:
```
git clone https://github.com/ethereum-optimism/optimism.git
yarn install
yarn build
```
## Running the relayer (Docker)
The `message-relayer` can be included as part of the [local Optimism development environment](https://community.optimism.io/docs/developers/build/dev-node/).
Although the `message-relayer` is not turned on by default, it can be enabled by [changing this line in docker-compose.yml](https://github.com/ethereum-optimism/optimism/blob/51a527b8e3fe69940fb8c0f5e4aa2e0ae8ee294c/ops/docker-compose.yml#L129) to:
```
replicas: 1
```
## Running the relayer (manual)
The `message-relayer` can also be run manually.
Copy `.env.example` into a new file named `.env`, then set the environment variables listed there.
Once your environment variables have been set, run the relayer via:
```
yarn start
```
import { HardhatUserConfig } from 'hardhat/config'
import '@nomiclabs/hardhat-ethers'
import '@nomiclabs/hardhat-waffle'
const config: HardhatUserConfig = {
paths: {
sources: './test/test-contracts',
},
solidity: {
version: '0.8.9',
settings: {
optimizer: { enabled: true, runs: 200 },
metadata: {
bytecodeHash: 'none',
},
outputSelection: {
'*': {
'*': ['metadata', 'storageLayout'],
},
},
},
},
}
export default config
{
"private": true,
"name": "@eth-optimism/message-relayer",
"version": "0.5.34",
"description": "[Optimism] Service for automatically relaying L2 to L1 transactions",
"main": "dist/index",
"types": "dist/index",
"files": [
"dist/*"
],
"scripts": {
"start": "ts-node ./src/service.ts",
"test:coverage": "echo 'No tests defined.'",
"build": "tsc -p ./tsconfig.json",
"clean": "rimraf dist/ ./tsconfig.tsbuildinfo",
"lint": "yarn lint:fix && yarn lint:check",
"pre-commit": "lint-staged",
"lint:fix": "yarn lint:check --fix",
"lint:check": "eslint . --max-warnings=0"
},
"keywords": [
"optimism",
"ethereum",
"relayer"
],
"homepage": "https://github.com/ethereum-optimism/optimism/tree/develop/packages/message-relayer#readme",
"license": "MIT",
"author": "Optimism PBC",
"repository": {
"type": "git",
"url": "https://github.com/ethereum-optimism/optimism.git"
},
"dependencies": {
"@eth-optimism/common-ts": "0.8.1",
"@eth-optimism/core-utils": "0.12.0",
"@eth-optimism/sdk": "2.1.0",
"ethers": "^5.7.0"
},
"devDependencies": {
"@ethersproject/abstract-provider": "^5.7.0",
"@nomiclabs/hardhat-ethers": "^2.0.2",
"@nomiclabs/hardhat-waffle": "^2.0.1",
"ethereum-waffle": "^3.3.0",
"hardhat": "^2.9.6",
"ts-node": "^10.9.1"
}
}
/* Imports: External */
import { Signer } from 'ethers'
import { getChainId, sleep } from '@eth-optimism/core-utils'
import {
BaseServiceV2,
validators,
Gauge,
Counter,
} from '@eth-optimism/common-ts'
import { CrossChainMessenger, MessageStatus } from '@eth-optimism/sdk'
import { Provider } from '@ethersproject/abstract-provider'
import { version } from '../package.json'
type MessageRelayerOptions = {
l1RpcProvider: Provider
l2RpcProvider: Provider
l1Wallet: Signer
fromL2TransactionIndex?: number
}
type MessageRelayerMetrics = {
highestCheckedL2Tx: Gauge
highestKnownL2Tx: Gauge
numRelayedMessages: Counter
}
type MessageRelayerState = {
wallet: Signer
messenger: CrossChainMessenger
highestCheckedL2Tx: number
highestKnownL2Tx: number
}
export class MessageRelayerService extends BaseServiceV2<
MessageRelayerOptions,
MessageRelayerMetrics,
MessageRelayerState
> {
constructor(options?: Partial<MessageRelayerOptions>) {
super({
version,
name: 'message-relayer',
options,
optionsSpec: {
l1RpcProvider: {
validator: validators.provider,
desc: 'Provider for interacting with L1.',
},
l2RpcProvider: {
validator: validators.provider,
desc: 'Provider for interacting with L2.',
},
l1Wallet: {
validator: validators.wallet,
desc: 'Wallet used to interact with L1.',
},
fromL2TransactionIndex: {
validator: validators.num,
desc: 'Index of the first L2 transaction to start processing from.',
default: 0,
public: true,
},
},
metricsSpec: {
highestCheckedL2Tx: {
type: Gauge,
desc: 'Highest L2 tx that has been scanned for messages',
},
highestKnownL2Tx: {
type: Gauge,
desc: 'Highest known L2 transaction',
},
numRelayedMessages: {
type: Counter,
desc: 'Number of messages relayed by the service',
},
},
})
}
protected async init(): Promise<void> {
this.state.wallet = this.options.l1Wallet.connect(
this.options.l1RpcProvider
)
this.state.messenger = new CrossChainMessenger({
l1SignerOrProvider: this.state.wallet,
l2SignerOrProvider: this.options.l2RpcProvider,
l1ChainId: await getChainId(this.state.wallet.provider),
l2ChainId: await getChainId(this.options.l2RpcProvider),
})
this.state.highestCheckedL2Tx = this.options.fromL2TransactionIndex || 1
this.state.highestKnownL2Tx =
await this.state.messenger.l2Provider.getBlockNumber()
}
protected async main(): Promise<void> {
// Update metrics
this.metrics.highestCheckedL2Tx.set(this.state.highestCheckedL2Tx)
this.metrics.highestKnownL2Tx.set(this.state.highestKnownL2Tx)
// If we're already at the tip, then update the latest tip and loop again.
if (this.state.highestCheckedL2Tx > this.state.highestKnownL2Tx) {
this.state.highestKnownL2Tx =
await this.state.messenger.l2Provider.getBlockNumber()
// Sleeping for 1000ms is good enough since this is meant for development and not for live
// networks where we might want to restrict the number of requests per second.
await sleep(1000)
return
}
this.logger.info(`checking L2 block ${this.state.highestCheckedL2Tx}`)
const block =
await this.state.messenger.l2Provider.getBlockWithTransactions(
this.state.highestCheckedL2Tx
)
// Should never happen.
if (block.transactions.length !== 1) {
throw new Error(
`got an unexpected number of transactions in block: ${block.number}`
)
}
const messages = await this.state.messenger.getMessagesByTransaction(
block.transactions[0].hash
)
// No messages in this transaction so we can move on to the next one.
if (messages.length === 0) {
this.state.highestCheckedL2Tx++
return
}
// Make sure that all messages sent within the transaction are finalized. If any messages
// are not finalized, then we're going to break the loop which will trigger the sleep and
// wait for a few seconds before we check again to see if this transaction is finalized.
let isFinalized = true
for (const message of messages) {
const status = await this.state.messenger.getMessageStatus(message)
if (
status === MessageStatus.IN_CHALLENGE_PERIOD ||
status === MessageStatus.STATE_ROOT_NOT_PUBLISHED
) {
isFinalized = false
}
}
if (!isFinalized) {
this.logger.info(
`tx not yet finalized, waiting: ${this.state.highestCheckedL2Tx}`
)
return
} else {
this.logger.info(
`tx is finalized, relaying: ${this.state.highestCheckedL2Tx}`
)
}
// If we got here then all messages in the transaction are finalized. Now we can relay
// each message to L1.
for (const message of messages) {
try {
const tx = await this.state.messenger.finalizeMessage(message)
this.logger.info(`relayer sent tx: ${tx.hash}`)
this.metrics.numRelayedMessages.inc()
} catch (err) {
if (err.message.includes('message has already been received')) {
// It's fine, the message was relayed by someone else
} else {
throw err
}
}
await this.state.messenger.waitForMessageReceipt(message)
}
// All messages have been relayed so we can move on to the next block.
this.state.highestCheckedL2Tx++
}
}
if (require.main === module) {
const service = new MessageRelayerService()
service.run()
}
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./dist"
},
"include": [
"package.json",
"src/**/*"
]
}
...@@ -10237,7 +10237,7 @@ ethereum-waffle@^3.0.0, ethereum-waffle@^3.4.4: ...@@ -10237,7 +10237,7 @@ ethereum-waffle@^3.0.0, ethereum-waffle@^3.4.4:
"@ethereum-waffle/provider" "^3.4.4" "@ethereum-waffle/provider" "^3.4.4"
ethers "^5.0.1" ethers "^5.0.1"
ethereum-waffle@^3.3.0, ethereum-waffle@^3.4.0: ethereum-waffle@^3.4.0:
version "3.4.0" version "3.4.0"
resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz#990b3c6c26db9c2dd943bf26750a496f60c04720" resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz#990b3c6c26db9c2dd943bf26750a496f60c04720"
integrity sha512-ADBqZCkoSA5Isk486ntKJVjFEawIiC+3HxNqpJqONvh3YXBTNiRfXvJtGuAFLXPG91QaqkGqILEHANAo7j/olQ== integrity sha512-ADBqZCkoSA5Isk486ntKJVjFEawIiC+3HxNqpJqONvh3YXBTNiRfXvJtGuAFLXPG91QaqkGqILEHANAo7j/olQ==
......
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