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

Merge pull request #1804 from ethereum-optimism/develop

Develop -> Master PR
parents 622b32c9 c1a82530
---
'@eth-optimism/batch-submitter': patch
---
Immediately reject on nonce errors to stop falling behind
...@@ -32,11 +32,11 @@ Then check out our list of [good first issues](https://github.com/ethereum-optim ...@@ -32,11 +32,11 @@ Then check out our list of [good first issues](https://github.com/ethereum-optim
root root
├── <a href="./packages">packages</a> ├── <a href="./packages">packages</a>
│ ├── <a href="./packages/contracts">contracts</a>: L1 and L2 smart contracts for Optimistic Ethereum │ ├── <a href="./packages/contracts">contracts</a>: L1 and L2 smart contracts for Optimistic Ethereum
── <a href="./packages/core-utils">core-utils</a>: Low-level utilities that make building Optimistic Ethereum easier ── <a href="./packages/core-utils">core-utils</a>: Low-level utilities that make building Optimistic Ethereum easier
── <a href="./packages/common-ts">common-ts</a>: Common tools for building apps in TypeScript ── <a href="./packages/common-ts">common-ts</a>: Common tools for building apps in TypeScript
── <a href="./packages/data-transport-layer">data-transport-layer</a>: Service for indexing Optimistic Ethereum-related L1 data ── <a href="./packages/data-transport-layer">data-transport-layer</a>: Service for indexing Optimistic Ethereum-related L1 data
── <a href="./packages/batch-submitter">batch-submitter</a>: Service for submitting batches of transactions and results to L1 ── <a href="./packages/batch-submitter">batch-submitter</a>: Service for submitting batches of transactions and results to L1
── <a href="./packages/message-relayer">message-relayer</a>: Tool for automatically relaying L1<>L2 messages in development ── <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="./l2geth">l2geth</a>: Optimistic Ethereum client software, a fork of <a href="https://github.com/ethereum/go-ethereum/tree/v1.9.10">geth v1.9.10</a> ├── <a href="./l2geth">l2geth</a>: Optimistic Ethereum client software, a fork of <a href="https://github.com/ethereum/go-ethereum/tree/v1.9.10">geth v1.9.10</a>
├── <a href="./integration-tests">integration-tests</a>: Various integration tests for an Optimistic Ethereum network ├── <a href="./integration-tests">integration-tests</a>: Various integration tests for an Optimistic Ethereum network
......
...@@ -28,6 +28,21 @@ const getGasPriceInGwei = async (signer: Signer): Promise<number> => { ...@@ -28,6 +28,21 @@ const getGasPriceInGwei = async (signer: Signer): Promise<number> => {
) )
} }
export const ynatmRejectOn = (e) => {
// taken almost verbatim from the readme,
// see https://github.com/ethereum-optimism/ynatm.
// immediately rejects on reverts and nonce errors
const errMsg = e.toString().toLowerCase()
const conditions = ['revert', 'nonce']
for (const cond of conditions) {
if (errMsg.includes(cond)) {
return true
}
}
return false
}
export const submitTransactionWithYNATM = async ( export const submitTransactionWithYNATM = async (
tx: PopulatedTransaction, tx: PopulatedTransaction,
signer: Signer, signer: Signer,
...@@ -55,6 +70,7 @@ export const submitTransactionWithYNATM = async ( ...@@ -55,6 +70,7 @@ export const submitTransactionWithYNATM = async (
maxGasPrice: ynatm.toGwei(config.maxGasPriceInGwei), maxGasPrice: ynatm.toGwei(config.maxGasPriceInGwei),
gasPriceScalingFunction: ynatm.LINEAR(config.gasRetryIncrement), gasPriceScalingFunction: ynatm.LINEAR(config.gasRetryIncrement),
delay: config.resubmissionTimeout, delay: config.resubmissionTimeout,
rejectImmediatelyOnCondition: ynatmRejectOn,
}) })
return receipt return receipt
} }
......
...@@ -124,4 +124,41 @@ describe('submitTransactionWithYNATM', async () => { ...@@ -124,4 +124,41 @@ describe('submitTransactionWithYNATM', async () => {
} }
await submitTransactionWithYNATM(tx, signer, config, 0, nullHooks) await submitTransactionWithYNATM(tx, signer, config, 0, nullHooks)
}) })
it('should immediately reject if a nonce error is encountered', async () => {
const tx = {
gasPrice: BigNumber.from(1),
data: 'hello world!',
} as ethers.PopulatedTransaction
let txCount = 0
const waitForTransaction = async (): Promise<TransactionReceipt> => {
return {} as TransactionReceipt
}
const sendTransaction = async () => {
txCount++
throw new Error('Transaction nonce is too low.')
}
const signer = {
getGasPrice: async () => BigNumber.from(1),
sendTransaction: sendTransaction as any,
provider: {
waitForTransaction: waitForTransaction as any,
},
} as Signer
const config: ResubmissionConfig = {
resubmissionTimeout: 100,
minGasPriceInGwei: 0,
maxGasPriceInGwei: 1000,
gasRetryIncrement: 1,
}
try {
await submitTransactionWithYNATM(tx, signer, config, 0, nullHooks)
} catch (e) {
expect(txCount).to.equal(1)
return
}
expect.fail('Expected an error.')
})
}) })
# Optimistic Ethereum Deployments # Optimistic Ethereum Deployments
## LAYER 2 - [Optimistic Ethereum (mainnet)](./mainnet#readme)
- [Optimistic Kovan (public testnet)](./kovan#readme)
### Chain IDs - [Optimistic Goerli (internal devnet)](./goerli#readme)
- Mainnet: 10
- Kovan: 69
- Goerli: 420
### Pre-deployed Contracts
**NOTE**: Pre-deployed contract addresses are the same on every Optimistic Ethereum network.
| Contract | Address |
| -------- | ------- |
|OVM_L2ToL1MessagePasser|0x4200000000000000000000000000000000000000|
|OVM_DeployerWhitelist|0x4200000000000000000000000000000000000002|
|L2CrossDomainMessenger|0x4200000000000000000000000000000000000007|
|OVM_GasPriceOracle|0x420000000000000000000000000000000000000F|
|L2StandardBridge|0x4200000000000000000000000000000000000010|
|OVM_SequencerFeeVault|0x4200000000000000000000000000000000000011|
|L2StandardTokenFactory|0x4200000000000000000000000000000000000012|
|OVM_L1BlockNumber|0x4200000000000000000000000000000000000013|
|OVM_ETH|0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000|
|WETH9|0x4200000000000000000000000000000000000006|
## LAYER 1
## MAINNET-TRIAL
Network : __mainnet-trial (chain id: 42069)__
| Contract | Address |
| -------- | ------- |
|AddressDictator|[0x020756FD65Ac40690b33B4ef3019d91db16c769e](https://mainnet-trial.etherscan.io/address/0x020756FD65Ac40690b33B4ef3019d91db16c769e)|
|BondManager|[0xe0bd909A7AA766427277869fB8e531b467Aa29d0](https://mainnet-trial.etherscan.io/address/0xe0bd909A7AA766427277869fB8e531b467Aa29d0)|
|CanonicalTransactionChain|[0xfF5723c4Ef6EA25aB09A0a11CEF64cf23ef8c417](https://mainnet-trial.etherscan.io/address/0xfF5723c4Ef6EA25aB09A0a11CEF64cf23ef8c417)|
|ChainStorageContainer-CTC-batches|[0xe6F1852f733BbF417eAD2D7B30686b66EA586629](https://mainnet-trial.etherscan.io/address/0xe6F1852f733BbF417eAD2D7B30686b66EA586629)|
|ChainStorageContainer-SCC-batches|[0xF617f6DAB862736686fD659d7589e2927b99983A](https://mainnet-trial.etherscan.io/address/0xF617f6DAB862736686fD659d7589e2927b99983A)|
|ChugSplashDictator|[0xa71cbD7A95610e3aa1AC7ba61ceaf67C17709990](https://mainnet-trial.etherscan.io/address/0xa71cbD7A95610e3aa1AC7ba61ceaf67C17709990)|
|Lib_AddressManager|[0xdE1FCfB0851916CA5101820A69b13a4E276bd81F](https://mainnet-trial.etherscan.io/address/0xdE1FCfB0851916CA5101820A69b13a4E276bd81F)|
|Proxy__OVM_L1CrossDomainMessenger|[0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1](https://mainnet-trial.etherscan.io/address/0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1)|
|Proxy__OVM_L1StandardBridge|[0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1](https://mainnet-trial.etherscan.io/address/0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1)|
|StateCommitmentChain|[0x982f743B1F164a07768fc02C4CEb7F576F3cb101](https://mainnet-trial.etherscan.io/address/0x982f743B1F164a07768fc02C4CEb7F576F3cb101)|
<!--
Implementation addresses. DO NOT use these addresses directly.
Use their proxied counterparts seen above.
L1StandardBridge_for_verification_only:
- 0x0b3c3d11cFd47327d2B0d2F01b39b535B59eE051
- https://mainnet-trial.etherscan.io/address/0x0b3c3d11cFd47327d2B0d2F01b39b535B59eE051)
OVM_L1CrossDomainMessenger:
- 0xfa416acA8988CAF7997824e98840860652d9Bb6A
- https://mainnet-trial.etherscan.io/address/0xfa416acA8988CAF7997824e98840860652d9Bb6A)
-->
## MAINNET
Network : __mainnet (chain id: 1)__
| Contract | Address |
| -------- | ------- |
|AddressDictator|[0x7a74f7934a233e10E8757264132B2E4EbccF5098](https://etherscan.io/address/0x7a74f7934a233e10E8757264132B2E4EbccF5098)|
|BondManager|[0xcd626E1328b41fCF24737F137BcD4CE0c32bc8d1](https://etherscan.io/address/0xcd626E1328b41fCF24737F137BcD4CE0c32bc8d1)|
|CanonicalTransactionChain|[0x5E4e65926BA27467555EB562121fac00D24E9dD2](https://etherscan.io/address/0x5E4e65926BA27467555EB562121fac00D24E9dD2)|
|ChainStorageContainer-CTC-batches|[0xD16463EF9b0338CE3D73309028ef1714D220c024](https://etherscan.io/address/0xD16463EF9b0338CE3D73309028ef1714D220c024)|
|ChainStorageContainer-SCC-batches|[0xb0ddFf09c4019e31960de11bD845E836078E8EbE](https://etherscan.io/address/0xb0ddFf09c4019e31960de11bD845E836078E8EbE)|
|ChugSplashDictator|[0xD86065136E3ab1e3FCBbf47B59404c08A431051A](https://etherscan.io/address/0xD86065136E3ab1e3FCBbf47B59404c08A431051A)|
|Lib_AddressManager|[0xdE1FCfB0851916CA5101820A69b13a4E276bd81F](https://etherscan.io/address/0xdE1FCfB0851916CA5101820A69b13a4E276bd81F)|
|Proxy__OVM_L1CrossDomainMessenger|[0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1](https://etherscan.io/address/0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1)|
|Proxy__OVM_L1StandardBridge|[0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1](https://etherscan.io/address/0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1)|
|StateCommitmentChain|[0xBe5dAb4A2e9cd0F27300dB4aB94BeE3A233AEB19](https://etherscan.io/address/0xBe5dAb4A2e9cd0F27300dB4aB94BeE3A233AEB19)|
<!--
Implementation addresses. DO NOT use these addresses directly.
Use their proxied counterparts seen above.
L1StandardBridge_for_verification_only:
- 0x29Ea454F8f2750e345E52e302A0c09f1A5215AC7
- https://etherscan.io/address/0x29Ea454F8f2750e345E52e302A0c09f1A5215AC7)
OVM_L1CrossDomainMessenger:
- 0xd9166833FF12A5F900ccfBf2c8B62a90F1Ca1FD5
- https://etherscan.io/address/0xd9166833FF12A5F900ccfBf2c8B62a90F1Ca1FD5)
-->
## KOVAN
Network : __kovan (chain id: 42)__
| Contract | Address |
| -------- | ------- |
|AddressDictator|[0x8676275c08626263c60282A26550464DFa19ABd6](https://kovan.etherscan.io/address/0x8676275c08626263c60282A26550464DFa19ABd6)|
|BondManager|[0xc5a603d273E28185c18Ba4d26A0024B2d2F42740](https://kovan.etherscan.io/address/0xc5a603d273E28185c18Ba4d26A0024B2d2F42740)|
|CanonicalTransactionChain|[0xf7B88A133202d41Fe5E2Ab22e6309a1A4D50AF74](https://kovan.etherscan.io/address/0xf7B88A133202d41Fe5E2Ab22e6309a1A4D50AF74)|
|ChainStorageContainer-CTC-batches|[0x1d6d23989ba6a6e915F0e35BBc574E914d4ed092](https://kovan.etherscan.io/address/0x1d6d23989ba6a6e915F0e35BBc574E914d4ed092)|
|ChainStorageContainer-SCC-batches|[0x122208Aa20237FB4c655a9eF02685F7255DF33E8](https://kovan.etherscan.io/address/0x122208Aa20237FB4c655a9eF02685F7255DF33E8)|
|ChugSplashDictator|[0x23d87F2792C2ca58E5C1b7BD831B0fbDDEEe0ED9](https://kovan.etherscan.io/address/0x23d87F2792C2ca58E5C1b7BD831B0fbDDEEe0ED9)|
|Lib_AddressManager|[0x100Dd3b414Df5BbA2B542864fF94aF8024aFdf3a](https://kovan.etherscan.io/address/0x100Dd3b414Df5BbA2B542864fF94aF8024aFdf3a)|
|Proxy__OVM_L1CrossDomainMessenger|[0x4361d0F75A0186C05f971c566dC6bEa5957483fD](https://kovan.etherscan.io/address/0x4361d0F75A0186C05f971c566dC6bEa5957483fD)|
|Proxy__OVM_L1StandardBridge|[0x22F24361D548e5FaAfb36d1437839f080363982B](https://kovan.etherscan.io/address/0x22F24361D548e5FaAfb36d1437839f080363982B)|
|StateCommitmentChain|[0xD7754711773489F31A0602635f3F167826ce53C5](https://kovan.etherscan.io/address/0xD7754711773489F31A0602635f3F167826ce53C5)|
<!--
Implementation addresses. DO NOT use these addresses directly.
Use their proxied counterparts seen above.
L1StandardBridge_for_verification_only:
- 0x51bB1dc7Ebb531539f6F8349D4177255A9994d1C
- https://kovan.etherscan.io/address/0x51bB1dc7Ebb531539f6F8349D4177255A9994d1C)
OVM_L1CrossDomainMessenger:
- 0xaF91349fdf3B206E079A8FcaB7b8dFaFB96A654D
- https://kovan.etherscan.io/address/0xaF91349fdf3B206E079A8FcaB7b8dFaFB96A654D)
-->
# Optimistic Goerli (internal devnet)
## Notice
Optimistic Goerli is an internal Optimism development network. You're probably looking for [Optimistic Kovan](../kovan#readme), the public Optimistic Ethereum testnet.
## Network Info
- **Chain ID**: 420
## Layer 1 Contracts
<table>
<tr>
<th>
<img width="506px" height="0px" />
<p><small>Contract</small></p>
</th>
<th>
<img width="506px" height="0px" />
<p><small>Address</small></p>
</th>
</tr>
<tr>
<td>
BondManager
</td>
<td align="center">
<a href="https://goerli.etherscan.io/address/0xE5AE60bD6F8DEe4D0c2BC9268e23B92F1cacC58F">
<code>0xE5AE60bD6F8DEe4D0c2BC9268e23B92F1cacC58F</code>
</a>
</td>
</tr>
<tr>
<td>
CanonicalTransactionChain
</td>
<td align="center">
<a href="https://goerli.etherscan.io/address/0x2ebA8c4EfDB39A8Cd8f9eD65c50ec079f7CEBD81">
<code>0x2ebA8c4EfDB39A8Cd8f9eD65c50ec079f7CEBD81</code>
</a>
</td>
</tr>
<tr>
<td>
ChainStorageContainer-CTC-batches
</td>
<td align="center">
<a href="https://goerli.etherscan.io/address/0x0821Ff73FD88bb73E90F2Ea459B57430dff731Dd">
<code>0x0821Ff73FD88bb73E90F2Ea459B57430dff731Dd</code>
</a>
</td>
</tr>
<tr>
<td>
ChainStorageContainer-CTC-queue
</td>
<td align="center">
<a href="https://goerli.etherscan.io/address/0xf96dc01589969B85e27017F1bC449CB981eED9C8">
<code>0xf96dc01589969B85e27017F1bC449CB981eED9C8</code>
</a>
</td>
</tr>
<tr>
<td>
ChainStorageContainer-SCC-batches
</td>
<td align="center">
<a href="https://goerli.etherscan.io/address/0x829863Ce01B475B7d030539d2181d49E7A4b8aD9">
<code>0x829863Ce01B475B7d030539d2181d49E7A4b8aD9</code>
</a>
</td>
</tr>
<tr>
<td>
Lib_AddressManager
</td>
<td align="center">
<a href="https://goerli.etherscan.io/address/0x2F7E3cAC91b5148d336BbffB224B4dC79F09f01D">
<code>0x2F7E3cAC91b5148d336BbffB224B4dC79F09f01D</code>
</a>
</td>
</tr>
<tr>
<td>
Proxy__OVM_L1CrossDomainMessenger
</td>
<td align="center">
<a href="https://goerli.etherscan.io/address/0xEcC89b9EDD804850C4F343A278Be902be11AaF42">
<code>0xEcC89b9EDD804850C4F343A278Be902be11AaF42</code>
</a>
</td>
</tr>
<tr>
<td>
Proxy__OVM_L1StandardBridge
</td>
<td align="center">
<a href="https://goerli.etherscan.io/address/0x73298186A143a54c20ae98EEE5a025bD5979De02">
<code>0x73298186A143a54c20ae98EEE5a025bD5979De02</code>
</a>
</td>
</tr>
<tr>
<td>
StateCommitmentChain
</td>
<td align="center">
<a href="https://goerli.etherscan.io/address/0x1afcA918eff169eE20fF8AB6Be75f3E872eE1C1A">
<code>0x1afcA918eff169eE20fF8AB6Be75f3E872eE1C1A</code>
</a>
</td>
</tr>
</table>
## Layer 2 Contracts
<table>
<tr>
<th>
<img width="506px" height="0px" />
<p><small>Contract</small></p>
</th>
<th>
<img width="506px" height="0px" />
<p><small>Address</small></p>
</th>
</tr>
<tr>
<td>
OVM_L2ToL1MessagePasser
</td>
<td align="center">
<code>0x4200000000000000000000000000000000000000</code>
</td>
</tr>
<tr>
<td>
OVM_DeployerWhitelist
</td>
<td align="center">
<code>0x4200000000000000000000000000000000000002</code>
</td>
</tr>
<tr>
<td>
L2CrossDomainMessenger
</td>
<td align="center">
<code>0x4200000000000000000000000000000000000007</code>
</td>
</tr>
<tr>
<td>
OVM_GasPriceOracle
</td>
<td align="center">
<code>0x420000000000000000000000000000000000000F</code>
</td>
</tr>
<tr>
<td>
L2StandardBridge
</td>
<td align="center">
<code>0x4200000000000000000000000000000000000010</code>
</td>
</tr>
<tr>
<td>
OVM_SequencerFeeVault
</td>
<td align="center">
<code>0x4200000000000000000000000000000000000011</code>
</td>
</tr>
<tr>
<td>
L2StandardTokenFactory
</td>
<td align="center">
<code>0x4200000000000000000000000000000000000012</code>
</td>
</tr>
<tr>
<td>
OVM_L1BlockNumber
</td>
<td align="center">
<code>0x4200000000000000000000000000000000000013</code>
</td>
</tr>
<tr>
<td>
OVM_ETH
</td>
<td align="center">
<code>0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000</code>
</td>
</tr>
<tr>
<td>
WETH9
</td>
<td align="center">
<code>0x4200000000000000000000000000000000000006</code>
</td>
</tr>
</table>
# Optimistic Kovan (public testnet)
## Network Info
- **Chain ID**: 69
- **Public RPC**: https://kovan.optimism.io
- **Block Explorer**: https://kovan-optimistic.etherscan.io
## Layer 1 Contracts
<table>
<tr>
<th>
<img width="506px" height="0px" />
<p><small>Contract</small></p>
</th>
<th>
<img width="506px" height="0px" />
<p><small>Address</small></p>
</th>
</tr>
<tr>
<td>
BondManager
</td>
<td align="center">
<a href="https://kovan.etherscan.io/address/0xc5a603d273E28185c18Ba4d26A0024B2d2F42740">
<code>0xc5a603d273E28185c18Ba4d26A0024B2d2F42740</code>
</a>
</td>
</tr>
<tr>
<td>
CanonicalTransactionChain
</td>
<td align="center">
<a href="https://kovan.etherscan.io/address/0xf7B88A133202d41Fe5E2Ab22e6309a1A4D50AF74">
<code>0xf7B88A133202d41Fe5E2Ab22e6309a1A4D50AF74</code>
</a>
</td>
</tr>
<tr>
<td>
ChainStorageContainer-CTC-batches
</td>
<td align="center">
<a href="https://kovan.etherscan.io/address/0x1d6d23989ba6a6e915F0e35BBc574E914d4ed092">
<code>0x1d6d23989ba6a6e915F0e35BBc574E914d4ed092</code>
</a>
</td>
</tr>
<tr>
<td>
ChainStorageContainer-SCC-batches
</td>
<td align="center">
<a href="https://kovan.etherscan.io/address/0x122208Aa20237FB4c655a9eF02685F7255DF33E8">
<code>0x122208Aa20237FB4c655a9eF02685F7255DF33E8</code>
</a>
</td>
</tr>
<tr>
<td>
Lib_AddressManager
</td>
<td align="center">
<a href="https://kovan.etherscan.io/address/0x100Dd3b414Df5BbA2B542864fF94aF8024aFdf3a">
<code>0x100Dd3b414Df5BbA2B542864fF94aF8024aFdf3a</code>
</a>
</td>
</tr>
<tr>
<td>
Proxy__OVM_L1CrossDomainMessenger
</td>
<td align="center">
<a href="https://kovan.etherscan.io/address/0x4361d0F75A0186C05f971c566dC6bEa5957483fD">
<code>0x4361d0F75A0186C05f971c566dC6bEa5957483fD</code>
</a>
</td>
</tr>
<tr>
<td>
Proxy__OVM_L1StandardBridge
</td>
<td align="center">
<a href="https://kovan.etherscan.io/address/0x22F24361D548e5FaAfb36d1437839f080363982B">
<code>0x22F24361D548e5FaAfb36d1437839f080363982B</code>
</a>
</td>
</tr>
<tr>
<td>
StateCommitmentChain
</td>
<td align="center">
<a href="https://kovan.etherscan.io/address/0xD7754711773489F31A0602635f3F167826ce53C5">
<code>0xD7754711773489F31A0602635f3F167826ce53C5</code>
</a>
</td>
</tr>
</table>
## Layer 2 Contracts
<table>
<tr>
<th>
<img width="506px" height="0px" />
<p><small>Contract</small></p>
</th>
<th>
<img width="506px" height="0px" />
<p><small>Address</small></p>
</th>
</tr>
<tr>
<td>
OVM_L2ToL1MessagePasser
</td>
<td align="center">
<a href="https://kovan-optimistic.etherscan.io/address/0x4200000000000000000000000000000000000000">
<code>0x4200000000000000000000000000000000000000</code>
</a>
</td>
</tr>
<tr>
<td>
OVM_DeployerWhitelist
</td>
<td align="center">
<a href="https://kovan-optimistic.etherscan.io/address/0x4200000000000000000000000000000000000002">
<code>0x4200000000000000000000000000000000000002</code>
</a>
</td>
</tr>
<tr>
<td>
L2CrossDomainMessenger
</td>
<td align="center">
<a href="https://kovan-optimistic.etherscan.io/address/0x4200000000000000000000000000000000000007">
<code>0x4200000000000000000000000000000000000007</code>
</a>
</td>
</tr>
<tr>
<td>
OVM_GasPriceOracle
</td>
<td align="center">
<a href="https://kovan-optimistic.etherscan.io/address/0x420000000000000000000000000000000000000F">
<code>0x420000000000000000000000000000000000000F</code>
</a>
</td>
</tr>
<tr>
<td>
L2StandardBridge
</td>
<td align="center">
<a href="https://kovan-optimistic.etherscan.io/address/0x4200000000000000000000000000000000000010">
<code>0x4200000000000000000000000000000000000010</code>
</a>
</td>
</tr>
<tr>
<td>
OVM_SequencerFeeVault
</td>
<td align="center">
<a href="https://kovan-optimistic.etherscan.io/address/0x4200000000000000000000000000000000000011">
<code>0x4200000000000000000000000000000000000011</code>
</a>
</td>
</tr>
<tr>
<td>
L2StandardTokenFactory
</td>
<td align="center">
<a href="https://kovan-optimistic.etherscan.io/address/0x4200000000000000000000000000000000000012">
<code>0x4200000000000000000000000000000000000012</code>
</a>
</td>
</tr>
<tr>
<td>
OVM_L1BlockNumber
</td>
<td align="center">
<a href="https://kovan-optimistic.etherscan.io/address/0x4200000000000000000000000000000000000013">
<code>0x4200000000000000000000000000000000000013</code>
</a>
</td>
</tr>
<tr>
<td>
OVM_ETH
</td>
<td align="center">
<a href="https://kovan-optimistic.etherscan.io/address/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000">
<code>0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000</code>
</a>
</td>
</tr>
<tr>
<td>
WETH9
</td>
<td align="center">
<a href="https://kovan-optimistic.etherscan.io/address/0x4200000000000000000000000000000000000006">
<code>0x4200000000000000000000000000000000000006</code>
</a>
</td>
</tr>
</table>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
"build:typescript": "tsc -p ./tsconfig.build.json", "build:typescript": "tsc -p ./tsconfig.build.json",
"build:contracts": "hardhat compile --show-stack-traces", "build:contracts": "hardhat compile --show-stack-traces",
"build:dump": "ts-node bin/take-dump.ts", "build:dump": "ts-node bin/take-dump.ts",
"autogen:markdown": "node scripts/generate-markdown.js", "autogen:markdown": "ts-node scripts/generate-markdown.ts",
"autogen:artifacts": "ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts", "autogen:artifacts": "ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts",
"test": "yarn test:contracts", "test": "yarn test:contracts",
"test:contracts": "hardhat test --show-stack-traces", "test:contracts": "hardhat test --show-stack-traces",
......
This diff is collapsed.
This diff is collapsed.
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