Reduce gas costs of deposits#667
Conversation
|
ebe315b to
18d3082
Compare
18d3082 to
d0a4122
Compare
...ontracts/contracts/optimistic-ethereum/OVM/bridge/messaging/Abs_BaseCrossDomainMessenger.sol
Outdated
Show resolved
Hide resolved
68cac05 to
dfc912c
Compare
| * @param _messageNonce Nonce for the provided message. | ||
| * @return ABI encoded cross domain calldata. | ||
| */ | ||
| function _getXDomainCalldata( |
There was a problem hiding this comment.
This function is identical between the OVM_L{1,2}CrossDomainMessenger contracts, and I think that property will continue to hold true due to the nature of messages touching both contracts. Thoughts on a library which these both use?
nit: I think we could also take this opportunity to rename this to encodeXDomainCalldata if we like, which is a little clearer IMO.
|
Could the integration tests not be running because of the merge conflicts? |
I have a feeling that its due to the merge conflicts |
df97bc4 to
15f7c28
Compare
...ontracts/contracts/optimistic-ethereum/iOVM/bridge/messaging/iOVM_L1CrossDomainMessenger.sol
Show resolved
Hide resolved
| _messageNonce | ||
| ); | ||
| } | ||
| } No newline at end of file |
There was a problem hiding this comment.
nit: missing trailing newline
There was a problem hiding this comment.
@elenadimitrova you can ensure you don't have to think about things like this be setting up your IDE to use the .editorconfig file in the root of this repo.
Ref: #433
| * @title Lib_CrossDomainUtils | ||
| */ | ||
| library Lib_CrossDomainUtils { | ||
| /** |
There was a problem hiding this comment.
nit: comment misaligned here
There was a problem hiding this comment.
Doesn't the linter catch that sort of issues?
| // We need to consume some amount of L1 gas in order to rate limit transactions going into | ||
| // L2. However, L2 is cheaper than L1 so we only need to burn some small proportion of the | ||
| // provided L1 gas. | ||
| uint256 gasToConsume = _gasLimit/L2_GAS_DISCOUNT_DIVISOR; |
There was a problem hiding this comment.
cc @ben-chain, I was under the impression the gas burn here was necessary to prevent what are effectively DoS attacks. Why are we able to remove it now?
There was a problem hiding this comment.
This isn't a good way to prevent DoS attacks as it does nothing to recoup the cost that the sequencer must bear by the transaction getting through. Instead of burning gas an amount of value should be transferred to the sequencer on L1 to cover the cost of batch submission
There was a problem hiding this comment.
does nothing to recoup the cost that the sequencer must bear by the transaction getting through
This is true, although I am comfortable with the high degree of asymmetry of the grief attack. The cost to the sequencer is 32bytes of calldata vs. an SSTORE for the attacker, even without the gas burn.
That grief ratio is high enough that I would still be comfortable with removing the gas burn logic, but after a discussion earlier today on standup, it sounds like we want to leave it in for now IIRC.
There was a problem hiding this comment.
@ben-chain @smartcontracts may be worth being explicit: Does this mean this change should be reverted? Could you request changes in the PR if so?
There was a problem hiding this comment.
Aw man. The gas burn is a real pain to deal with and sending messages already takes a massive amount of gas.
Currently costs about $50 (100 gwei, $3300 ETH, 150k gas) which is far beyond what any user on L2 would be paying. Feels like the ratelimit is already baked into the >100k of storage overhead.
There was a problem hiding this comment.
So the real problem is there is no way to know the gas consumption of the L1 to L2 message and a single L1 transaction could in theory send many L1 to L2 messages in a single transaction. A way to solve this would be to have the execution fee paid out to the sequencer on L1 but it is impossible to really know that execution fee up front. This means that a way to do this is to limit the amount of gas used by a L1 to L2 message. There could be a free tier which allows for a gasLimit up to a certain value and then higher gasLimit require a payment to the sequencer. h/t @karlfloersch
maurelian
left a comment
There was a problem hiding this comment.
LGTM pending resolution of the questions related to replayMessage and gas burning.
.../contracts/contracts/optimistic-ethereum/OVM/bridge/messaging/OVM_L1CrossDomainMessenger.sol
Show resolved
Hide resolved
| _messageNonce | ||
| ); | ||
| } | ||
| } No newline at end of file |
There was a problem hiding this comment.
@elenadimitrova you can ensure you don't have to think about things like this be setting up your IDE to use the .editorconfig file in the root of this repo.
Ref: #433
cf1f2b4 to
c773603
Compare
Codecov Report
@@ Coverage Diff @@
## regenesis/0.4.0 #667 +/- ##
===================================================
+ Coverage 82.21% 82.47% +0.26%
===================================================
Files 48 48
Lines 1895 1906 +11
Branches 303 304 +1
===================================================
+ Hits 1558 1572 +14
+ Misses 337 334 -3
Continue to review full report at Codecov.
|
aefc812 to
5aab13b
Compare
maurelian
left a comment
There was a problem hiding this comment.
Changes requests to reduce duplicate calls to the address manager.
.../contracts/contracts/optimistic-ethereum/OVM/bridge/messaging/OVM_L1CrossDomainMessenger.sol
Show resolved
Hide resolved
| uint40 queueLength = iOVM_CanonicalTransactionChain(resolve("OVM_CanonicalTransactionChain")).getQueueLength(); | ||
|
|
||
| bytes memory xDomainCalldata = Lib_CrossDomainUtils.encodeXDomainCalldata( | ||
| _target, | ||
| msg.sender, | ||
| _message, | ||
| queueLength | ||
| ); | ||
|
|
||
| _sendXDomainMessage(xDomainCalldata, _gasLimit); |
There was a problem hiding this comment.
resolve("OVM_CanonicalTransactionChain") is called here, and again in _sendXDomainMessage on line 439. Both require a CALL and an SLOAD. We can probably save gas by caching the address in memory.
A similar pattern can be seen in the CTC wherever queue() is called.
There was a problem hiding this comment.
@ben-chain told me that the entire LibAddressManager model will be dropped as part of the upgradability work, right Ben? Still I made the suggested changes as they are valid anyhow.
| _message, | ||
| _messageNonce | ||
| // Verify that the message is in the queue: | ||
| Lib_OVMCodec.QueueElement memory element = iOVM_CanonicalTransactionChain(resolve("OVM_CanonicalTransactionChain")).getQueueElement(_queueIndex); |
There was a problem hiding this comment.
Same as the previous comment about caching the address of the CTC in memory.
| bytes32 transactionHash = keccak256( | ||
| abi.encode( | ||
| address(this), | ||
| resolve("OVM_L2CrossDomainMessenger"), |
There was a problem hiding this comment.
Likewise this operation is duplicated in _sendXDomainMessage on line 440.
| public | ||
| { | ||
| // Use the CTC queue length as nonce | ||
| uint40 queueLength = iOVM_CanonicalTransactionChain(resolve("OVM_CanonicalTransactionChain")).getQueueLength(); |
There was a problem hiding this comment.
Nit: What about actually calling this variable nonce? The comment above here clarifies, but I think it's a bit clearer when you see it in other contexts, ie.
bytes memory xDomainCalldata = Lib_CrossDomainUtils.encodeXDomainCalldata(
_target,
_sender,
_message,
_queueIndex
);
Just a thought, I can go either way.
There was a problem hiding this comment.
I was on the fence about it too. Ended up renaming it.
Co-authored-by: ben-chain <ben@pseudonym.party>
…ib_CrossDomainUtils
6600785 to
a46b067
Compare
* Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger Fix typo * Remove sentMessages mapping from L1CrossDomainMessenger storage and use the nonce to check for existence of replayed transaction * Refactor out common library function for getting cross domain calldata * Post rebase fixes * Use the queueIndex to check the transaction was enqueued * Fix tests for L1CrossDomainMessenger.replayMessage Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock * Lint fixes * Optimise the resolve calls into the AddressManager lib * Rename the nonce parameter to be clear * Update test name Co-authored-by: ben-chain <ben@pseudonym.party> * Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils Co-authored-by: ben-chain <ben@pseudonym.party>
* Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger Fix typo * Remove sentMessages mapping from L1CrossDomainMessenger storage and use the nonce to check for existence of replayed transaction * Refactor out common library function for getting cross domain calldata * Post rebase fixes * Use the queueIndex to check the transaction was enqueued * Fix tests for L1CrossDomainMessenger.replayMessage Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock * Lint fixes * Optimise the resolve calls into the AddressManager lib * Rename the nonce parameter to be clear * Update test name Co-authored-by: ben-chain <ben@pseudonym.party> * Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils Co-authored-by: ben-chain <ben@pseudonym.party>
* Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger Fix typo * Remove sentMessages mapping from L1CrossDomainMessenger storage and use the nonce to check for existence of replayed transaction * Refactor out common library function for getting cross domain calldata * Post rebase fixes * Use the queueIndex to check the transaction was enqueued * Fix tests for L1CrossDomainMessenger.replayMessage Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock * Lint fixes * Optimise the resolve calls into the AddressManager lib * Rename the nonce parameter to be clear * Update test name Co-authored-by: ben-chain <ben@pseudonym.party> * Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils Co-authored-by: ben-chain <ben@pseudonym.party>
* Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger Fix typo * Remove sentMessages mapping from L1CrossDomainMessenger storage and use the nonce to check for existence of replayed transaction * Refactor out common library function for getting cross domain calldata * Post rebase fixes * Use the queueIndex to check the transaction was enqueued * Fix tests for L1CrossDomainMessenger.replayMessage Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock * Lint fixes * Optimise the resolve calls into the AddressManager lib * Rename the nonce parameter to be clear * Update test name Co-authored-by: ben-chain <ben@pseudonym.party> * Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils Co-authored-by: ben-chain <ben@pseudonym.party>
* chore: reduce hardhat timeout to 20 seconds (ethereum-optimism#968) * fix: force LF line endings for scripts to avoid docker problems on Windows (ethereum-optimism#974) * fix: use correct line endings for windows * chore: add changeset * refactor[contracts]: Turn ExecutionManagerWrapper into a predeployed contract (ethereum-optimism#808) * wip: Started working on L2 contract testing revamp * test: clean tests for ProxyEOA * style: clean imports for ProxyEOA tests * test: port tests for ECDSAContractAccount * fix tests and add wrapper to dump * fix: add em wrapper to l2 deploy * ffix: add comments to wrapper contract * fix: add more comments * fix: add smock comment for unbind * Update packages/smock/src/smockit/binding.ts * maintenance[contracts]: use dashes in chain container names (ethereum-optimism#819) * maintenance: use dashes in chain container names * chore: add changeset * feat[contracts]: temporarily disable EOA upgrades (ethereum-optimism#857) * feat[contracts]: disable eoa upgrades temporarily * chore: add changeset * Update OVM_ProxyEOA.sol * fix: turn upgrade into a noop * lint: fix * feat[contracts]: Update Lib_AddressManager.AddressSet event to speed up data transport layer (ethereum-optimism#820) * feat: update and improve AddressSet event * chore: add changeset * Update Lib_AddressManager.sol * Reduce gas costs of deposits (ethereum-optimism#667) * Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger Fix typo * Remove sentMessages mapping from L1CrossDomainMessenger storage and use the nonce to check for existence of replayed transaction * Refactor out common library function for getting cross domain calldata * Post rebase fixes * Use the queueIndex to check the transaction was enqueued * Fix tests for L1CrossDomainMessenger.replayMessage Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock * Lint fixes * Optimise the resolve calls into the AddressManager lib * Rename the nonce parameter to be clear * Update test name Co-authored-by: ben-chain <ben@pseudonym.party> * Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils Co-authored-by: ben-chain <ben@pseudonym.party> * optimism: bump gaslimit to 10 million ethereum-optimism#870 (ethereum-optimism#871) * optimism: bump gaslimit to 10million * chore: add changeset * optimism: bump max gaslimit to 10 mil * chore: add changeset * chore: remove unnecessary changeset * chore: remove unnecessary changeset Co-authored-by: Georgios Konstantopoulos <me@gakonst.com> * fix: use correct contract name in tests (ethereum-optimism#921) * fix: disable upgradability from ECDSA Account (ethereum-optimism#885) * l2geth: remove `SignatureHashType` (ethereum-optimism#752) * l2geth: remove tx type * l2geth: no longer parse type in rollup client * chore: add changeset * chore: remove extra sighash params * fix: do not check txtype in integration tests Co-authored-by: Georgios Konstantopoulos <me@gakonst.com> * feat[contracts]: introduce OVM_GasPriceOracle (ethereum-optimism#912) * feat[contracts]: congestion price oracle * chore: add changeset * contracts: gas price oracle (ethereum-optimism#917) * contracts: gas price oracle * tests: update * fees: fix tests * contracts: simplify gas price oracle * lint: fix * test: execution price is at the 1st storage slot * chore: rename predeploy to GasPriceOracle * chore: rename gas price oracle test name Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com> Co-authored-by: Georgios Konstantopoulos <me@gakonst.com> * fix: configure max gas limit to 11m (ethereum-optimism#928) Uniswap V3 contracts require that, otherwise they throw call exceptions at deployment * Consolidate Predeploy Addresses (ethereum-optimism#931) * added library for predeploy addresses * refactor tests and other packages to use exported predeploys * revert library usage in OVM_ECDSAContractAccount * lint * added newline * fixed address typos Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local> Co-authored-by: smartcontracts <kelvinfichter@gmail.com> * chore: remove yarn-error.log and gitignore it (ethereum-optimism#956) * feat[contracts]: Replace Lib_RingBuffer with a much simpler Lib_Buffer (ethereum-optimism#821) * feat[contracts]: replace Lib_RingBuffer with a simpler Lib_Buffer * chore: changeset * test: add tests for Lib_Buffer * lint: fix * test: add extra coverage for Lib_Buffer * Update packages/contracts/contracts/optimistic-ethereum/libraries/utils/Lib_Buffer.sol Co-authored-by: ben-chain <ben@pseudonym.party> * add some extra comments Co-authored-by: ben-chain <ben@pseudonym.party> * fix(contracts): import predeploys (ethereum-optimism#982) * fix(contracts): import predeploys * fix: lint * feat: add hardhat deploy instructions to readme (ethereum-optimism#965) * feat: add deployment instructions to readme * Add changeset * fix style * Update README.md * feat: fees v2 (ethereum-optimism#976) * l2 geth: new fee logic * l2 geth: migrate to fees package * core-utils: new fee scheme * chore: add changeset * l2geth: delete dead code * integration-tests: fix typo * integration-tests: fixes * fees: use fee scalar * lint: fix * rollup: correct gas payment comparison * fix(integration-tests): do not hardcode gas price * core-utils: update with new scheme * l2geth: refactor rollup oracle * l2geth: clean up DoEstimateGas * l2geth: implement latest scheme * tests: fix up * lint: fix * l2geth: better sycn service test * optimism: rename to TxGasLimit * fee: fix docstring * tests: fix * variables: rename * l2geth: prevent users from sending txs with too high of a fee * integration-tests: fix import * integration-tests: fix type * integration-tests: fix gas limits * lint: fix * l2geth: log error Co-authored-by: Georgios Konstantopoulos <me@gakonst.com> * Add static analysis action (ethereum-optimism#848) * Add static analysis github action setup python and install slither * Add nvmrc file for setting node to v14.17 * Update slither command run to link missing contract packages from monorepo root * Add steps for installing dependencies * Add yarn build step to github action * Enable colour in github action for static analysis * Disable certain detectors * Ensure slither does not fail build * Add instructions on running static analysis to monorepo readme * build(deps): bump ws from 7.4.4 to 7.4.6 in /ops/docker/hardhat (ethereum-optimism#987) Bumps [ws](https://github.com/websockets/ws) from 7.4.4 to 7.4.6. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](websockets/ws@7.4.4...7.4.6) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix[l2geth]: fix accidental merge conflict (ethereum-optimism#994) * feat[message-relayer]: relay tx generator (ethereum-optimism#952) * feat[message-relayer]: relay tx generator * whoops, I burned our infura key * fix minor bug * add comments * add more comments and clean stuff up * add empty test descriptions * add tests * move smock to dev deps * chore: add changeset * minor cleanup to merkle tree proof function * use bignumber math to avoid nested await * use a better interface * minor fixes and simplifications * backwards compatible dtl syncing (ethereum-optimism#986) * kovan: fix attempt * kovan: db fix * kovan: types are strings from db * l2geth: parse things as strings * chore: add changeset * dtl: also stringify the range query * geth: dereference * geth: assign err * dtl: handle null * dtl: fix unit tests * fix[smock]: fix broken call assertions for overloaded functions (ethereum-optimism#996) * fix[smock]: fix broken call assertions for overloaded functions * chore: add changeset * minor correction and add a test * add a test for non-overloaded functions * fix[message-relayer]: fix failing test because of merge with develop (ethereum-optimism#1000) * fix[message-relayer]: remove spreadsheet mode (ethereum-optimism#998) * fix[message-relayer]: remove spreadsheet mode * chore: add changeset * Lower local rollup timestamp refresh (ethereum-optimism#985) * update rollup timestamp refresh * increase refresh time to 5s * feat: fees v3 (ethereum-optimism#999) * core-utils: fee impl v3 * l2geth: fees v3 impl * integration-tests: update for fees v3 * chore: add changeset * fix: typo * integration-tests: fix and generalize * fees: update fee scalar * l2geth: check gas in the mempool behind usingovm * tests: fix up * l2geth: remove dead var * truffle: fix config * fix: remove dead coders (ethereum-optimism#1001) * chore: delete dead coders * chore: add changeset * dtl: remove dead imports * core-utils: delete dead tests * batch-submitter: remove txtype * chore: add changeset * docs[message-relayer]: add a README and improve the interface for generating proofs (ethereum-optimism#1002) * docs[message-relayer]: add basic docs and clean up an interface * chore: add changeset * dtl: log error stack for failed http request (ethereum-optimism#995) * dtl: log error stack for failed http request * chore: add changeset * Add rpc-proxy service for whitelisting JSON RPC methods to the sequencer. (ethereum-optimism#945) * Add healthcheck endpoint for rpc-proxy Added ethereum-nginx-proxy source updated README and docker image build * Check ETH_CALLS_ALLOWED is set, clean up comments, remove old Dockerfile * Pass additional information across domains via token gateways (ethereum-optimism#824) * feat(contracts): add from and data args to L1ERC20Gateway fix(integration): add gasLimit to fundUser refactor(contracts): add data to gateway events add changeset fix(integration): provide data in outboundTransfer refactor(contracts): reset Abs_L2TokenGateway to Abs_L2DepositedToken refactor(contracts): fix mismatched names * feat[contracts]: add custom gas arg to gateway fix(contracts): take max of user vs. default gas * fix(integrations): update ovm-eth function call * fix(integration): remove unecessary explicit gasLimit * test(contracts): 32kb transfer, 9MM gas * fix(contracts): fixup comment, bytes arg last * fix(integration): args order in integrations * fix(contracts): remove unused L2 gas arg * fix(contracts): limit data that can be passed to L2 * fix(integration): better tests for data length * test: check for error on too large data * Experimental: specify gaslimit in before hook * fix(integration): add l2 gas argument * fix: increase gas on fundUser * fix(contracts): remove duplicate max size limit * fix(integration): fine tune gas amounts * lint * fix: large data test * fix(integration): set gas closer to real cost * fix(contracts): remove unused bridge variables These variables were the default gas amounts for cross domain messages * fix(contracts): Reorder args Place dynamic length args last * fix(integration): update estimateGas values * fix(integration): reset eth withdraw estimate to 21000 * fix(integration): update expected gas amount * fix(integration): reduce gas amount for ETH withdraw * More consistent style for Constant values (ethereum-optimism#991) * chore(contracts): make container addresses be constants chore(contracts): consistent style for constant vars * chore(contracts): add internal on predeploy constants * feat: deployment config for fee oracle contract (ethereum-optimism#936) * feat[contracts]: add GasPriceOracle w/o predeploy Based on ethereum-optimism#912 * feat[contracts]: congestion price oracle * chore: add changeset * contracts: gas price oracle (ethereum-optimism#917) * contracts: gas price oracle * tests: update * fees: fix tests * contracts: simplify gas price oracle * lint: fix * test: execution price is at the 1st storage slot * chore: rename predeploy to GasPriceOracle * chore: rename gas price oracle test name Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com> Co-authored-by: Georgios Konstantopoulos <me@gakonst.com> * Add an L2 deploy script for gas oracle contract * Add a kovan deployment artifact * Add deployment to readme * Add extra validation & initial execution price * Update README.md * Fix execution price logic * Perform new deployment with final contract * contracts: better require in ovm gas price oracle * Deploy L2GasPriceOracle * Update contract to use new fee logic & rename to gas * Deploy updated contract * Fix lint * gas price oracle: do not restrict gas price * gas price oracle: new deployment * tests: delete dead test Co-authored-by: smartcontracts <kelvinfichter@gmail.com> Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com> Co-authored-by: Georgios Konstantopoulos <me@gakonst.com> * ops: expose debug namespace (ethereum-optimism#1007) * develop merge fixes * refactor[l2geth]: queue origin type (ethereum-optimism#975) * refactor: queueOrigin type * Convert queueOrigin to uint8 in encode * Add changeset * Regenerate json marshall * style: combine lines * Add Stringer for QueueOrigin * Turn QueueOrigin into uint8 * l2geth: gen tx meta fix * l2geth: gen tx meta fix * lint Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com> * fix(sync-service): prevent underflows (ethereum-optimism#1015) * fix(sync-service): prevent underflows * chore: add changeset * chore: remove dead confirmation depth * chore: remove eth1conf depth from rollup config * test: remove duplicate value in array (ethereum-optimism#1014) * ci: tag docker image for canary with abbreviated GITHUB_SHA (ethereum-optimism#1006) * ci: tag docker image for canary with abbreviated GITHUB_SHA * ci: update from 6 bytes to 8 bytes of abbreviation * refactor: improve logging for transactions being submitted to chain with gasPrice (ethereum-optimism#1016) * refactor: improve logging for transactions being submitted to chain with gasPrice * lint: apply lint autofixes * dtl: remove stringify from db logic + more overflow protection (ethereum-optimism#1010) * dtl: remove stringify from db logic * l2geth: overflow protection * dtl: overflow protection * chore: add changeset * ci: upload logs for failed integration tests (ethereum-optimism#1020) * fix(dtl): improve slow blocking JSON parsing that occurs during l2 sync (ethereum-optimism#1019) The use of eth_getBlockRange returns a large response which is very slow to parse in ethersjs, and can block the event loop for upwards of multiple seconds. When this happens, incoming http requests will likely timeout and fail. Instead, we will parse the incoming http stream directly with the bfj package, which yields the event loop periodically so that we don't fail to serve requests. * fix: lint errors in dtl (ethereum-optimism#1025) * fix[dtl]: fix dtl bug breaking verifiers (ethereum-optimism#1011) * fix[dtl]: fix dtl bug breaking verifiers * tweaks so tests pass * chore: add changeset * fix: deterministic blockhashes (ethereum-optimism#1032) * config: set etherbase * l2geth: add deterministic clique key * l2geth: default value * chore: add changeset * test: add sync test for deterministic blockhash Co-authored-by: Kevin Ho <kevinjho1996@gmail.com> * Version Packages (ethereum-optimism#978) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * ci: add sync test's own workflow (ethereum-optimism#1031) * fix(dtl): incorrect parsing of eth_getBlockRange result (ethereum-optimism#1037) * Version Packages (ethereum-optimism#1045) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * fix: no gas refund (ethereum-optimism#1043) * l2geth: remove the gas refund * chore: add changeset * refactor[contracts]: remove one-off GasPriceOracle deployment file (ethereum-optimism#1046) * refactor[contracts]: remove one-off gpo deployment * chore: add changeset * feat[contracts]: introduce new L1ChugSplashProxy contract (ethereum-optimism#1009) * feat[contracts]: add L1ChugSplashProxy * improve comments slightly * start adding tests * add more tests * make the system pausable * added another test * add some extra comments * Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts Co-authored-by: Maurelian <maurelian@protonmail.ch> * Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts Co-authored-by: Maurelian <maurelian@protonmail.ch> * chore: add changeset * address review feedback Co-authored-by: Maurelian <maurelian@protonmail.ch> * feat[contracts]: add sequencer fee wallet (ethereum-optimism#1029) * wip: first draft of the fee wallet * add fee wallet to dump * rename to sequencer vault * add L1 fee wallet to geth config * add unit tests * fix geth linting error * add a basic integration test * fix broken integration test * add test for correct storage slot * add integration test for fee withdrawal * fix typo in integration tests * fix a bug bin integration tests * Update OVM_SequencerFeeVault.sol * fix bug in contract tests * chore: add changeset * fix bug in contract tests * build(deps): bump glob-parent from 5.1.1 to 5.1.2 (ethereum-optimism#1036) Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2. - [Release notes](https://github.com/gulpjs/glob-parent/releases) - [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md) - [Commits](gulpjs/glob-parent@v5.1.1...v5.1.2) --- updated-dependencies: - dependency-name: glob-parent dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: smartcontracts <kelvinfichter@gmail.com> Co-authored-by: Liam Horne <liam@lihorne.com> * fix: predeploy gasprice oracle (ethereum-optimism#1039) * l2geth: delete extra config options * l2geth: stop using extra config options * l2geth: more stop using extra config options * chore: add changeset * l2geth: add new config for gpo owner * chore: add changeset * l2geth: fix tests * tests: fix build * l2geth: optimize loops (ethereum-optimism#1027) * l2geth: optimize loops * l2geth: stop ticker when done * l2geth: don't wait for first tick * chore: add changeset * Enable custom tagging of release docker image (ethereum-optimism#1048) * ci: enable custom tagging of release docker image * ci: refactor to add prerelease prefix for secuirty * doc: typo * ci: fix indentation issue of canary workflow * ci: fix typo with GITHUB_SHA * fix: typo in USE_HARDHAT config (ethereum-optimism#1023) * fix: abi encoded tx (ethereum-optimism#1049) * contracts: don't double rlp decode * chore: add changeset * lint: fix * deps: update * linting: cleanup * feat: contracts: use selector * fix: contracts: use typescript * contracts: use interface * l2geth: bump to go 1.15 (ethereum-optimism#1058) * l2geth: bump to go 1.15 * chore: add changeset * Change monotonicity band-aid code to log warnings not errors (ethereum-optimism#1060) * refactor: change monotonicity band-aid code to log warnings not errors * build: add changeset * feat(contracts, l2geth): native ETH value support for ovmCALL (ethereum-optimism#1038) * feat(contracts): add ovmCALL-types with native value * add ovmCALLVALUE context * add ovmBALANCE * test success and revert cases * test empty contract case * chore: lint * test(integration-tests): ovmCALL-types with value (compiler and wrapper) * fix ovmDELEGATECALL type, update tests * add ovmSELFBALANCE * fix ovmDELEGATECALL jumping to CALL * chore: lint * fix(contracts): account for intrinsic gas of OVM_ETH sends * fix(contracts): merge conflict bug * fix(contracts): update gas benchmark * feat(contracts, integration-tests): use new value-compatible compiler * feat(contracts,l2geth): support value calls in OVM_ECDSAContractAccount * fix(contracts): ovmDELEGATECALL does not change message context * feat(contracts): sending value between EOAs * test(integration-tests): ovmDELEGATECALL preserves ovmCALLVALUE * test(integration-tests): assert ovmSELFBALANCEs correct * test(integration-tests): intrinsic gas for eth value calls * test(integration-tests): update gas values * chore(contracts): lint * feat(contracts, l2geth): eth_calls with nonzero value * chore: minor fixups and comments based on PR feedback * test(integration-tests): add requested tests from PR reviews * test(integration-tests): ovmSELFBALANCE is preserved in ovmDELEGATECALLs * fix(contracts): fix bug where ovmDELEGATECALL could fail if balance was lower than the ovmCALLVALUE * chore: add changeset * fix(contracts): update intrinsic gas for worst-case value sends * chore: address final PR nits/improvements Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com> * Add erc1271 support to contract account (ethereum-optimism#1052) * add ERC1271 support, failing unit tests * add integration test for isValidSignature * remove .only * lint * add changeset * clean up 1271 tests and lint * switch back to using waffle wallet * lint * fix import * feat[contracts]: slightly better account funding for hardhat accounts (rebased) (ethereum-optimism#1065) * feat[contracts]: better account funding for hardhat accounts * add a sleep to avoid any potential problems * chore: add changeset * fix: bug with gas estimation in funding step * fix: limit to 20 accounts max Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com> * Ensure Sentry is correctly set up for DTL and MR (ethereum-optimism#1054) * refactor: add logger and metrics to options for BaseService * refactor: thread sentryOptions through from message-relayer into BaseService * refactor: ensure DTL Logger is using Sentry for errors * style: lint base-service.ts * refactor: init Sentry on batch-submitter too * refactor: init Sentry on message-relayer too * refactor: pass in basic logger to MessageRelayerService * build: provide changeset * fix: correct usage of use-sentry boolean config * refactor: appropriately type loggingOptions * build: add @sentry/node * build: add @sentry/node to message-relayer and fix linting issue * Add more logging information to monotonicity violation logs (ethereum-optimism#1066) * refactor: log idx of monotonicity violation from batch * build: add changeset * temporarily disable hardhat example tests (ethereum-optimism#1071) * fix: monotonicity auto healer (ethereum-optimism#1070) * fix: monotonicity auto healer * add: changeset * Version Packages (ethereum-optimism#1053) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Standard token bridge (ethereum-optimism#988) * Remove abstract token gateway and deposited token implementations * Further simplification of bridge contracts * Standart token bridge and L2 token implementation * Fix spacing * Implement case when a bad deposit happens to a nonexistent L1<>L2 token pair * Use SafeMath in common token bridge accounting * test(contracts): fix finalizeWithdrawal test * fix(contracts): use SafeERC20 on token deposits * Rename OVM_L1ERC20Gateway to OVM_L1ERC20Bridge contract * Rename iOVM_L1ERC20Gateway to iOVM_L1ERC20Bridge contract * Cleanup gateway to bridge rename * Better name for the mapping holding l1->l2 deposit amounts * Use OZ SafeMath * Rename local variables in OVM_L2DepositedERC20 from gateway to bridge * Merge ETH and ERC20 bridge contracts * Rename OVM_L1ERC20Bridge to OVM_L1StandardBridge and fix tests from merging the ETH and ERC20 bridges * Better name for iAbs_BaseCrossDomainMessenger -> iOVM_CrossDomainMessenger * Correct the bounce back of deposit sender and recipient properties * Remove obsoleted event from OVM_L2DepositedERC20 * chore(contracts): change references from ETHGateway to Bridge * Fix a linting error * fix(contracts): add bridge to deployer * Split off ERC20Bridge interface for the purposes of being reused in custom ERC20 bridges * Split off interface natspec definitions * Draft version of OVM_L2DepositedERC20 splitted into a standard L2 erc20: L2StandardERC20 and a common L2 bridge: OVM_L2StandardBridge * style(contracts): define L1_ETH_ADDRESS as constant * test(integration): update interface to use depositETH * test(contracts): fix OVM_L1StandardBridge tests * test(contracts): fix L2 Standard Bridge tests * test(contracts): lint and remove an obsolete test case * Fix modifier check to comply with the L2 bridge distinction from L2 token * Simplify address <> interface casting in bridges * Ensure natspec comments are correct also add l1 and l2 token params to WithdrawalInitiated event for consistency * Fix issues in L1 and L2 bridges to ensure cross domain messages are sent only between the two bridges also adjusted withdrawals to send to either finalizeETHWithdrawal or finalizeERC20Withdrawal depending on which asset is being withdrawn * Remove AddressManager from the L1 standard bridge * REVERT ME: instruments cross domain enabled * fix(contracts): remove Address Manager from L1 Bridge * feat(contracts): make L2 Standard Bridge a predeploy * WIP: update deployments for standard bridges * WIP: update deployments for standard bridges * l2geth: TEMP log contract calls * chore(l2geth): replace eth gateway with standard bridge * fix(contracts): make contract-deployment/config work * WIP fix(integration): update integration tests for bridge * Remove ovmEth from L1 Standard bridge as obsoleted * Separate ERC20 standard implementation from L2 bridge * Formatting fixes * chore(l2geth): replace eth gateway with standard bridge * Revert "REVERT ME: instruments cross domain enabled" This reverts commit d5bb8f8. * fix: lint ts * Implement EIP-165 in the Standard L2 ERC20 token Also switch that to be based off the OpenZeppelin default implementation plus mint and burn Additionally remove the obsoleted iOVM_ERC20 * fix(contracts): add deployment check on bridge proxy fix(contracts): whitespace fix(contracts): init bridge implementation with non-zero address * Remove dependency on Ownable contract for the StandardERC20 token on L2 * fix(contracts): update deployment scripts * fix: lint * remove debugging code * fix: correct rpc get balance slot * restore l2 cross domain messenger * fix: lint * Add a test for a non compliant token deposit * Only allow EOAs to deposit ETH and ERC20 * Add comments and tests for ERC165 implementation * Decide against using explicit ETH MOCK address as we're not using it for checks * Fix linting issues * Add onlyEOAContract restriction to standard bridge withdrawals * Update codehashes in L2 Standard bridge * fix(ops): remove unintentionally added file * feat(contracts): add expectApproxGasCost function * fix(integration): proper arrayify input on fundUser * fix(integration): proper gas value checks * Revert "Add onlyEOAContract restriction to standard bridge withdrawals" This reverts commit 2713c06ceb2609e4f13718e1034a4d76210d9758. * fix(contracts): removed unused expectApproxGasCost for now * fix(contracts): update OVM_SequencerFeeVault for bridge changes * lint * Update deployment for L1 Bridge w/ ChugSplash * Revert "l2geth: TEMP log contract calls" This reverts commit 21d42259278449f221bf34605162229b3d9d4fa9. * Apply suggestions from code review * Apply suggestions from code review * fix(contracts): deploy with chugsplash proxy * fix(contracts): add working bridge and chugsplash proxy deployment * fix(contracts,integration): 500k gas for depositETH * comment(contracts): describe failed deposit handling on l2 * Apply suggestions from code review Co-authored-by: ben-chain <ben@pseudonym.party> * docs: add changeset * fix(integration): set working l2 gas amount on funduser * test(integration): add receive() test * fix(contracts): reset receive to 1.2MM l2 gas * test(examples): skip l1-l2 example test for now * fix(contracts): drop hardcoded gas to 500k in receive() * fix(contracts): use abi.encodeWithSignature * fix(contracts): resolve merge conflicts * feat(integration): add expectApprox for flexible gas testing * fix(integration): fix failing gas tests * fix: incorrect l2 gas for deposit * Update utils.ts * fix(workflow): disable l1-l2 example until npm imports are fixed * chore: final round of PR review nits and tests Co-authored-by: Maurelian <maurelian@protonmail.ch> Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com> Co-authored-by: ben-chain <ben@pseudonym.party> Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com> * fix: comment out codeowners (ethereum-optimism#1073) * fix: use predeploy constant lib for em wrapper (ethereum-optimism#1075) * fix: use predeploy constant lib for em wrapper * chore: add changeset * fix[l2geth]: off-by-one sometimes breaking replica sync (ethereum-optimism#1082) * fix[l2geth]: off-by-one sometimes breaking replica sync * chore: add changeset * fix(l2geth): Log 'end of OVM execution' correctly (ethereum-optimism#1080) * refactor[contracts]: move account contracts to predeploy folder (ethereum-optimism#1085) * refactor[contracts]: move account contracts to predeploy folder * chore: add changeset * maintenance[contracts]: rename precompiles test folder to predeploys (ethereum-optimism#1086) * fix[bs]: disambiguate generic submission errors (ethereum-optimism#1051) * fix[bs]: disambiguate generic submission errors * add cases for errors * separate out errors from transaction reverts with reasons * remove extraneous errors * WETH deposit and withdraw on OVM_ETH (ethereum-optimism#1083) * feat(contracts): add no-op WETH9 functionality to OVM_ETH * working WETH deposit and withdraw + tests * add changeset * address PR feedback * update WETH9 contract implementation * add fallback to WETH9 * add fallback and revert withdraw test * update nit comment Co-authored-by: ben <ben@pseudonym.party> * Also move the accounts interface to iOVM/predeploys (ethereum-optimism#1087) * refactor[contracts]: move account interface to predeploy folder * chore: add changeset * Version Packages (ethereum-optimism#1089) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * fix: use -z flag for var unset in canary * Use Eslint instead of Tslint (ethereum-optimism#1005) * removed tslint * forgot to commit files * made .eslintrc.js consistent for all subdirs and other cleanup * [removed] includes and files keys from tsconfig.json * removed file level linting exceptions and added details to line level * added changeset * fixed newly introduced linting errors from rebase * enable json import for batch submitter * removed ecdsa-coder * maybe a tsconfig issue? * Update deploy.ts Co-authored-by: smartcontracts <kelvinfichter@gmail.com> Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com> * metrics[batch-submitter]: add new batch submitter metrics (ethereum-optimism#1074) * metrics[batch-submitter]: add new batch submitter metrics * chore: changeset * account for failed submissions * Fix canary publishing (ethereum-optimism#1093) * ci: fix custom docker tag * ci: use new env file * ci: use outputs from previous job * ci: fix headers of jobs * ci: inherit canary tag from builder * feat[ci]: upload logs for sync tests if failure (ethereum-optimism#1098) * deploy: goerli 0.4.0 (ethereum-optimism#1099) * deployments: goerli 0.4.0 rc * readme: update * chore: add changeset * fix[dtl]: defend against RPC provider missing events (ethereum-optimism#1084) * fix[dtl]: defend against RPC provider missing events * chore: add changeset * respond to review comments * better error handling for missing handlers * deploy: kovan v.4.0 rc (ethereum-optimism#1101) * deploy: kovan v0.4.0 rc * chore: add changeset * readme: update * maintenance[monorepo]: first pass update to README (ethereum-optimism#1106) * maintenance[monorepo]: first pass update to README Doing some relatively minor updates to the README just to clean things up a bit. * replying to review comments * Move the metric prefix string to a label (ethereum-optimism#1047) Added changeset and fixes Changeset to patch * fix[smock]: add support for hardhat 2.4.0 (ethereum-optimism#1112) * fix[smock]: add support for hardhat 2.4.0 * chore: add changeset * lint: fix * build(deps): bump hosted-git-info from 2.8.8 to 2.8.9 (ethereum-optimism#1064) Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](npm/hosted-git-info@v2.8.8...v2.8.9) --- updated-dependencies: - dependency-name: hosted-git-info dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: smartcontracts <kelvinfichter@gmail.com> * Misc. small improvements to README (ethereum-optimism#1115) * Update README.md * Update README.md * fix[dtl]: use the same L2 chain ID everywhere (ethereum-optimism#1122) * fix[dtl]: use the same L2 chain ID everywhere * chore: add changeset * fix: make sync tests only on workflow dispatch (ethereum-optimism#1123) * fix[dtl]: remove old stringification function (ethereum-optimism#1134) * fix[dtl]: remove old stringification function * chore: add changeset * fix[dtl]: log server errors as ERROR instead of INFO (ethereum-optimism#1133) * fix[dtl]: log server errors as ERROR instead of INFO * chore: add changeset * Contracts: connectL1Contracts & connectL2Contracts (ethereum-optimism#713) * Contracts: connect-contracts * Trying to resolve build problems * connect-contracts build working * Adds artifacts-ovm back to gitignore * Removes incorrect changes * Adds copy-artifacts script * Adds test file (not working yet) * fix: incorrect contract instantiation * Improves tests and removes old deployment versions * Single source of truth for predeploy addresses * Reverts deployments/README.md * Makes connect-contracts more DRY * Adds missing @ethersproject/abstract-signer dependency * Adds argument evaluation * Adds L1Contracts and L2Contracts types * Attempts removing artifacts-ovm again * Adds webpack config (not working yet) * build: add artifacts to dist (ethereum-optimism#776) * Updates lint rule * Adds l2 imports * Fixes dependency tree bug * Removes webpack stuff * Fixing package.json issues and adds .DS_Store to gitignore * Removes test-contracts script * Reverting script change * Adds comments * Adds comment * Renames deployments folders * Fixes linting errors * Generates markdown * build: add deployments directory to Dockerfiles * Removes unneeded contracts, improves error handling and tests * Adds changeset * yarn.lock * Removes console.log * Changes from minor to patch version * Fixes lint errors Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com> Co-authored-by: Liam Horne <liam@lihorne.com> Co-authored-by: Georgios Konstantopoulos <me@gakonst.com> * fix: prevent overflow in abi encoding (ethereum-optimism#1135) * l2geth: prevent overflow in abi encoding to ovm codec tx * chore: add changeset * tests: replica syncing (ethereum-optimism#981) * [wip] add l2_dtl and replica images * passing basic dummy tx test * add erc20 test * add sync test to ci Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com> * fix[relayer]: update exported files list in package.json (ethereum-optimism#1138) * fix[relayer]: update exported files * chore: add changeset * fix: import path (ethereum-optimism#1141) * fix: correct import path for altered contract path * chore: add changeset * refactor: improve logging for batch submission timeout scenarios (ethereum-optimism#1120) * Add highest L1 and L2 block number Gauge metrics to DTL (ethereum-optimism#1125) * build: add prom-client to data-transport-layer * refactor: thread metrics more carefully through data-transport-layer; add two new metrics * style: fix some style issues * refactor: make metrics mandatory * refactor: move metrics register code to top of file * style: apply linting * refactor: move promethesus initialization after express * refactor: move promBundle call up, provide registry * build: add changeset * Improve Watcher ability to find transactions (ethereum-optimism#1107) * remove listeners and use loop to find tx receipt * add yarn ready * moved filters inside loop * [added] changeset * Add minimal vscode settings and extensions (ethereum-optimism#1109) * chore: add minimal vscode settings and extensions * chore: Add "files.trimTrailingWhitespace" to vscode native config * chore: replace vscode prettier plugin with eslint plugin * fix[contracts]: remove part of MultiMessageRelayer deployment (ethereum-optimism#1144) * fix[contracts]: remove part of MultiMessageRelayer deployment * chore: add changeset * Define L1 Starting block via OwnershipTransferred rather than AddressSet (ethereum-optimism#1129) * Update service.ts * Create thirty-years-look.md Co-authored-by: smartcontracts <kelvinfichter@gmail.com> * Easy fix for broken watchers (ethereum-optimism#1121) * Easy fix for broken watchers * Ran yarn changeset Co-authored-by: Liam Horne <liam@lihorne.com> * feat: go packages (ethereum-optimism#1111) * go: add utils module * readme: update * Version Packages (ethereum-optimism#1094) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * build: add husky pre-commit hook to lint (ethereum-optimism#1146) * feat[contracts]: add mainnet deploy script (ethereum-optimism#1147) * Add mainnet deploy script * Update mainnet.sh * Address PR review feedback * feat: mainnet contract deployment 0.4.0 (ethereum-optimism#1148) * feat: mainnet contract deployment 0.4.0 * feat: deployments readme * chore: add changeset * contracts: remove dead contract * contracts: remove dead config * tests: fix to not test for old contracts * feat: `rollup gasPrices` RPC endpoint (ethereum-optimism#1136) * feature: l2geth endpoint * chore: add changeset Co-authored-by: Liam Horne <liam@lihorne.com> * Adds l2 standard bridge to contracts markdown file (ethereum-optimism#1151) * Version Packages (ethereum-optimism#1150) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Add more info about our branching strategy to the README (ethereum-optimism#1114) * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Remove references to OVM_L1ETHGateway in deployments and readme (ethereum-optimism#1119) Co-authored-by: Maurelian <maurelian@protonmail.ch> Co-authored-by: smartcontracts <kelvinfichter@gmail.com> Co-authored-by: Elena Gesheva <elena@arenabg.com> Co-authored-by: ben-chain <ben@pseudonym.party> Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com> Co-authored-by: Georgios Konstantopoulos <me@gakonst.com> Co-authored-by: Karl Floersch <karl@karlfloersch.com> Co-authored-by: Rajiv Patel-O'Connor <rajiv.patel.oconnor@gmail.com> Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Kevin Ho <kevinjho1996@gmail.com> Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com> Co-authored-by: Liam Horne <liam@lihorne.com> Co-authored-by: Tim Myers <timmyers09@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Annie Ke <annieke8@gmail.com> Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com> Co-authored-by: Matt Masurka <m.masurka@gmail.com> Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com> Co-authored-by: Alejandro Santander <Palebluedot@gmail.com>
* Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger Fix typo * Remove sentMessages mapping from L1CrossDomainMessenger storage and use the nonce to check for existence of replayed transaction * Refactor out common library function for getting cross domain calldata * Post rebase fixes * Use the queueIndex to check the transaction was enqueued * Fix tests for L1CrossDomainMessenger.replayMessage Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock * Lint fixes * Optimise the resolve calls into the AddressManager lib * Rename the nonce parameter to be clear * Update test name Co-authored-by: ben-chain <ben@pseudonym.party> * Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils Co-authored-by: ben-chain <ben@pseudonym.party>
* Fixed wallet integration test (#95)
* Update watcher-utils.ts
* Fixed contracts
* remove GH actions that break due to missing permissions
* naming consistency, added comments to code snippets that will need to be changed when the message-relayer-fast autodeploys
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* tests: replica syncing (#981)
* [wip] add l2_dtl and replica images
* passing basic dummy tx test
* add erc20 test
* add sync test to ci
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix[relayer]: update exported files list in package.json (#1138)
* fix[relayer]: update exported files
* chore: add changeset
* fix: import path (#1141)
* fix: correct import path for altered contract path
* chore: add changeset
* refactor: improve logging for batch submission timeout scenarios (#1120)
* Fixed CrossDomainMessenger name (#96)
* Add highest L1 and L2 block number Gauge metrics to DTL (#1125)
* build: add prom-client to data-transport-layer
* refactor: thread metrics more carefully through data-transport-layer; add two new metrics
* style: fix some style issues
* refactor: make metrics mandatory
* refactor: move metrics register code to top of file
* style: apply linting
* refactor: move promethesus initialization after express
* refactor: move promBundle call up, provide registry
* build: add changeset
* Improve Watcher ability to find transactions (#1107)
* remove listeners and use loop to find tx receipt
* add yarn ready
* moved filters inside loop
* [added] changeset
* Add minimal vscode settings and extensions (#1109)
* chore: add minimal vscode settings and extensions
* chore: Add "files.trimTrailingWhitespace" to vscode native config
* chore: replace vscode prettier plugin with eslint plugin
* fix[contracts]: remove part of MultiMessageRelayer deployment (#1144)
* fix[contracts]: remove part of MultiMessageRelayer deployment
* chore: add changeset
* Define L1 Starting block via OwnershipTransferred rather than AddressSet (#1129)
* Update service.ts
* Create thirty-years-look.md
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Easy fix for broken watchers (#1121)
* Easy fix for broken watchers
* Ran yarn changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* feat: go packages (#1111)
* go: add utils module
* readme: update
* Version Packages (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* build: add husky pre-commit hook to lint (#1146)
* feat[contracts]: add mainnet deploy script (#1147)
* Add mainnet deploy script
* Update mainnet.sh
* Address PR review feedback
* feat: mainnet contract deployment 0.4.0 (#1148)
* feat: mainnet contract deployment 0.4.0
* feat: deployments readme
* chore: add changeset
* contracts: remove dead contract
* contracts: remove dead config
* tests: fix to not test for old contracts
* feat: `rollup gasPrices` RPC endpoint (#1136)
* feature: l2geth endpoint
* chore: add changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* Adds l2 standard bridge to contracts markdown file (#1151)
* Version Packages (#1150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add more info about our branching strategy to the README (#1114)
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Remove references to OVM_L1ETHGateway in deployments and readme (#1119)
* Keep the user logged in after changing chain (#99)
* Keep the user logged in after changing chain
* Update Nft.js
* Detect if user is in the wrong chain
Co-authored-by: cby3149 <cby3149@outlook.com>
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Merge conflics resolve (#110)
* wip
* gethl2
* wip
* batch submitter
* core utils
* DTL
* message relayer
* contracts
* wip
* Update service.ts
* DTL
* messaage-relayer
* Update yarn.lock
* final 5 files
* [pull] develop from ethereum-optimism:develop (#91)
* chore: reduce hardhat timeout to 20 seconds (#968)
* fix: force LF line endings for scripts to avoid docker problems on Windows (#974)
* fix: use correct line endings for windows
* chore: add changeset
* refactor[contracts]: Turn ExecutionManagerWrapper into a predeployed contract (#808)
* wip: Started working on L2 contract testing revamp
* test: clean tests for ProxyEOA
* style: clean imports for ProxyEOA tests
* test: port tests for ECDSAContractAccount
* fix tests and add wrapper to dump
* fix: add em wrapper to l2 deploy
* ffix: add comments to wrapper contract
* fix: add more comments
* fix: add smock comment for unbind
* Update packages/smock/src/smockit/binding.ts
* maintenance[contracts]: use dashes in chain container names (#819)
* maintenance: use dashes in chain container names
* chore: add changeset
* feat[contracts]: temporarily disable EOA upgrades (#857)
* feat[contracts]: disable eoa upgrades temporarily
* chore: add changeset
* Update OVM_ProxyEOA.sol
* fix: turn upgrade into a noop
* lint: fix
* feat[contracts]: Update Lib_AddressManager.AddressSet event to speed up data transport layer (#820)
* feat: update and improve AddressSet event
* chore: add changeset
* Update Lib_AddressManager.sol
* Reduce gas costs of deposits (#667)
* Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead
Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger
Fix typo
* Remove sentMessages mapping from L1CrossDomainMessenger storage
and use the nonce to check for existence of replayed transaction
* Refactor out common library function for getting cross domain calldata
* Post rebase fixes
* Use the queueIndex to check the transaction was enqueued
* Fix tests for L1CrossDomainMessenger.replayMessage
Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock
* Lint fixes
* Optimise the resolve calls into the AddressManager lib
* Rename the nonce parameter to be clear
* Update test name
Co-authored-by: ben-chain <ben@pseudonym.party>
* Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils
Co-authored-by: ben-chain <ben@pseudonym.party>
* optimism: bump gaslimit to 10 million #870 (#871)
* optimism: bump gaslimit to 10million
* chore: add changeset
* optimism: bump max gaslimit to 10 mil
* chore: add changeset
* chore: remove unnecessary changeset
* chore: remove unnecessary changeset
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: use correct contract name in tests (#921)
* fix: disable upgradability from ECDSA Account (#885)
* l2geth: remove `SignatureHashType` (#752)
* l2geth: remove tx type
* l2geth: no longer parse type in rollup client
* chore: add changeset
* chore: remove extra sighash params
* fix: do not check txtype in integration tests
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* feat[contracts]: introduce OVM_GasPriceOracle (#912)
* feat[contracts]: congestion price oracle
* chore: add changeset
* contracts: gas price oracle (#917)
* contracts: gas price oracle
* tests: update
* fees: fix tests
* contracts: simplify gas price oracle
* lint: fix
* test: execution price is at the 1st storage slot
* chore: rename predeploy to GasPriceOracle
* chore: rename gas price oracle test name
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: configure max gas limit to 11m (#928)
Uniswap V3 contracts require that, otherwise they throw call exceptions at deployment
* Consolidate Predeploy Addresses (#931)
* added library for predeploy addresses
* refactor tests and other packages to use exported predeploys
* revert library usage in OVM_ECDSAContractAccount
* lint
* added newline
* fixed address typos
Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* chore: remove yarn-error.log and gitignore it (#956)
* feat[contracts]: Replace Lib_RingBuffer with a much simpler Lib_Buffer (#821)
* feat[contracts]: replace Lib_RingBuffer with a simpler Lib_Buffer
* chore: changeset
* test: add tests for Lib_Buffer
* lint: fix
* test: add extra coverage for Lib_Buffer
* Update packages/contracts/contracts/optimistic-ethereum/libraries/utils/Lib_Buffer.sol
Co-authored-by: ben-chain <ben@pseudonym.party>
* add some extra comments
Co-authored-by: ben-chain <ben@pseudonym.party>
* fix(contracts): import predeploys (#982)
* fix(contracts): import predeploys
* fix: lint
* feat: add hardhat deploy instructions to readme (#965)
* feat: add deployment instructions to readme
* Add changeset
* fix style
* Update README.md
* feat: fees v2 (#976)
* l2 geth: new fee logic
* l2 geth: migrate to fees package
* core-utils: new fee scheme
* chore: add changeset
* l2geth: delete dead code
* integration-tests: fix typo
* integration-tests: fixes
* fees: use fee scalar
* lint: fix
* rollup: correct gas payment comparison
* fix(integration-tests): do not hardcode gas price
* core-utils: update with new scheme
* l2geth: refactor rollup oracle
* l2geth: clean up DoEstimateGas
* l2geth: implement latest scheme
* tests: fix up
* lint: fix
* l2geth: better sycn service test
* optimism: rename to TxGasLimit
* fee: fix docstring
* tests: fix
* variables: rename
* l2geth: prevent users from sending txs with too high of a fee
* integration-tests: fix import
* integration-tests: fix type
* integration-tests: fix gas limits
* lint: fix
* l2geth: log error
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* Add static analysis action (#848)
* Add static analysis github action
setup python and install slither
* Add nvmrc file for setting node to v14.17
* Update slither command run to link missing contract packages from monorepo root
* Add steps for installing dependencies
* Add yarn build step to github action
* Enable colour in github action for static analysis
* Disable certain detectors
* Ensure slither does not fail build
* Add instructions on running static analysis to monorepo readme
* build(deps): bump ws from 7.4.4 to 7.4.6 in /ops/docker/hardhat (#987)
Bumps [ws](https://github.com/websockets/ws) from 7.4.4 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.4.4...7.4.6)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix[l2geth]: fix accidental merge conflict (#994)
* feat[message-relayer]: relay tx generator (#952)
* feat[message-relayer]: relay tx generator
* whoops, I burned our infura key
* fix minor bug
* add comments
* add more comments and clean stuff up
* add empty test descriptions
* add tests
* move smock to dev deps
* chore: add changeset
* minor cleanup to merkle tree proof function
* use bignumber math to avoid nested await
* use a better interface
* minor fixes and simplifications
* backwards compatible dtl syncing (#986)
* kovan: fix attempt
* kovan: db fix
* kovan: types are strings from db
* l2geth: parse things as strings
* chore: add changeset
* dtl: also stringify the range query
* geth: dereference
* geth: assign err
* dtl: handle null
* dtl: fix unit tests
* fix[smock]: fix broken call assertions for overloaded functions (#996)
* fix[smock]: fix broken call assertions for overloaded functions
* chore: add changeset
* minor correction and add a test
* add a test for non-overloaded functions
* fix[message-relayer]: fix failing test because of merge with develop (#1000)
* fix[message-relayer]: remove spreadsheet mode (#998)
* fix[message-relayer]: remove spreadsheet mode
* chore: add changeset
* Lower local rollup timestamp refresh (#985)
* update rollup timestamp refresh
* increase refresh time to 5s
* feat: fees v3 (#999)
* core-utils: fee impl v3
* l2geth: fees v3 impl
* integration-tests: update for fees v3
* chore: add changeset
* fix: typo
* integration-tests: fix and generalize
* fees: update fee scalar
* l2geth: check gas in the mempool behind usingovm
* tests: fix up
* l2geth: remove dead var
* truffle: fix config
* fix: remove dead coders (#1001)
* chore: delete dead coders
* chore: add changeset
* dtl: remove dead imports
* core-utils: delete dead tests
* batch-submitter: remove txtype
* chore: add changeset
* docs[message-relayer]: add a README and improve the interface for generating proofs (#1002)
* docs[message-relayer]: add basic docs and clean up an interface
* chore: add changeset
* dtl: log error stack for failed http request (#995)
* dtl: log error stack for failed http request
* chore: add changeset
* Add rpc-proxy service for whitelisting JSON RPC methods to the sequencer. (#945)
* Add healthcheck endpoint for rpc-proxy
Added ethereum-nginx-proxy source
updated README and docker image build
* Check ETH_CALLS_ALLOWED is set, clean up comments, remove old Dockerfile
* Pass additional information across domains via token gateways (#824)
* feat(contracts): add from and data args to L1ERC20Gateway
fix(integration): add gasLimit to fundUser
refactor(contracts): add data to gateway events
add changeset
fix(integration): provide data in outboundTransfer
refactor(contracts): reset Abs_L2TokenGateway to Abs_L2DepositedToken
refactor(contracts): fix mismatched names
* feat[contracts]: add custom gas arg to gateway
fix(contracts): take max of user vs. default gas
* fix(integrations): update ovm-eth function call
* fix(integration): remove unecessary explicit gasLimit
* test(contracts): 32kb transfer, 9MM gas
* fix(contracts): fixup comment, bytes arg last
* fix(integration): args order in integrations
* fix(contracts): remove unused L2 gas arg
* fix(contracts): limit data that can be passed to L2
* fix(integration): better tests for data length
* test: check for error on too large data
* Experimental: specify gaslimit in before hook
* fix(integration): add l2 gas argument
* fix: increase gas on fundUser
* fix(contracts): remove duplicate max size limit
* fix(integration): fine tune gas amounts
* lint
* fix: large data test
* fix(integration): set gas closer to real cost
* fix(contracts): remove unused bridge variables
These variables were the default gas amounts for cross domain messages
* fix(contracts): Reorder args
Place dynamic length args last
* fix(integration): update estimateGas values
* fix(integration): reset eth withdraw estimate to 21000
* fix(integration): update expected gas amount
* fix(integration): reduce gas amount for ETH withdraw
* More consistent style for Constant values (#991)
* chore(contracts): make container addresses be constants
chore(contracts): consistent style for constant vars
* chore(contracts): add internal on predeploy constants
* feat: deployment config for fee oracle contract (#936)
* feat[contracts]: add GasPriceOracle w/o predeploy
Based on #912
* feat[contracts]: congestion price oracle
* chore: add changeset
* contracts: gas price oracle (#917)
* contracts: gas price oracle
* tests: update
* fees: fix tests
* contracts: simplify gas price oracle
* lint: fix
* test: execution price is at the 1st storage slot
* chore: rename predeploy to GasPriceOracle
* chore: rename gas price oracle test name
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* Add an L2 deploy script for gas oracle contract
* Add a kovan deployment artifact
* Add deployment to readme
* Add extra validation & initial execution price
* Update README.md
* Fix execution price logic
* Perform new deployment with final contract
* contracts: better require in ovm gas price oracle
* Deploy L2GasPriceOracle
* Update contract to use new fee logic & rename to gas
* Deploy updated contract
* Fix lint
* gas price oracle: do not restrict gas price
* gas price oracle: new deployment
* tests: delete dead test
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* ops: expose debug namespace (#1007)
* develop merge fixes
* refactor[l2geth]: queue origin type (#975)
* refactor: queueOrigin type
* Convert queueOrigin to uint8 in encode
* Add changeset
* Regenerate json marshall
* style: combine lines
* Add Stringer for QueueOrigin
* Turn QueueOrigin into uint8
* l2geth: gen tx meta fix
* l2geth: gen tx meta fix
* lint
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix(sync-service): prevent underflows (#1015)
* fix(sync-service): prevent underflows
* chore: add changeset
* chore: remove dead confirmation depth
* chore: remove eth1conf depth from rollup config
* test: remove duplicate value in array (#1014)
* ci: tag docker image for canary with abbreviated GITHUB_SHA (#1006)
* ci: tag docker image for canary with abbreviated GITHUB_SHA
* ci: update from 6 bytes to 8 bytes of abbreviation
* refactor: improve logging for transactions being submitted to chain with gasPrice (#1016)
* refactor: improve logging for transactions being submitted to chain with gasPrice
* lint: apply lint autofixes
* dtl: remove stringify from db logic + more overflow protection (#1010)
* dtl: remove stringify from db logic
* l2geth: overflow protection
* dtl: overflow protection
* chore: add changeset
* ci: upload logs for failed integration tests (#1020)
* fix(dtl): improve slow blocking JSON parsing that occurs during l2 sync (#1019)
The use of eth_getBlockRange returns a large response which is very
slow to parse in ethersjs, and can block the event loop for upwards
of multiple seconds.
When this happens, incoming http requests will likely timeout and fail.
Instead, we will parse the incoming http stream directly with the bfj
package, which yields the event loop periodically so that we don't
fail to serve requests.
* fix: lint errors in dtl (#1025)
* fix[dtl]: fix dtl bug breaking verifiers (#1011)
* fix[dtl]: fix dtl bug breaking verifiers
* tweaks so tests pass
* chore: add changeset
* fix: deterministic blockhashes (#1032)
* config: set etherbase
* l2geth: add deterministic clique key
* l2geth: default value
* chore: add changeset
* test: add sync test for deterministic blockhash
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* Version Packages (#978)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* ci: add sync test's own workflow (#1031)
* fix(dtl): incorrect parsing of eth_getBlockRange result (#1037)
* Version Packages (#1045)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: no gas refund (#1043)
* l2geth: remove the gas refund
* chore: add changeset
* refactor[contracts]: remove one-off GasPriceOracle deployment file (#1046)
* refactor[contracts]: remove one-off gpo deployment
* chore: add changeset
* feat[contracts]: introduce new L1ChugSplashProxy contract (#1009)
* feat[contracts]: add L1ChugSplashProxy
* improve comments slightly
* start adding tests
* add more tests
* make the system pausable
* added another test
* add some extra comments
* Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* chore: add changeset
* address review feedback
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* feat[contracts]: add sequencer fee wallet (#1029)
* wip: first draft of the fee wallet
* add fee wallet to dump
* rename to sequencer vault
* add L1 fee wallet to geth config
* add unit tests
* fix geth linting error
* add a basic integration test
* fix broken integration test
* add test for correct storage slot
* add integration test for fee withdrawal
* fix typo in integration tests
* fix a bug bin integration tests
* Update OVM_SequencerFeeVault.sol
* fix bug in contract tests
* chore: add changeset
* fix bug in contract tests
* build(deps): bump glob-parent from 5.1.1 to 5.1.2 (#1036)
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)
---
updated-dependencies:
- dependency-name: glob-parent
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
* fix: predeploy gasprice oracle (#1039)
* l2geth: delete extra config options
* l2geth: stop using extra config options
* l2geth: more stop using extra config options
* chore: add changeset
* l2geth: add new config for gpo owner
* chore: add changeset
* l2geth: fix tests
* tests: fix build
* l2geth: optimize loops (#1027)
* l2geth: optimize loops
* l2geth: stop ticker when done
* l2geth: don't wait for first tick
* chore: add changeset
* Enable custom tagging of release docker image (#1048)
* ci: enable custom tagging of release docker image
* ci: refactor to add prerelease prefix for secuirty
* doc: typo
* ci: fix indentation issue of canary workflow
* ci: fix typo with GITHUB_SHA
* fix: typo in USE_HARDHAT config (#1023)
* fix: abi encoded tx (#1049)
* contracts: don't double rlp decode
* chore: add changeset
* lint: fix
* deps: update
* linting: cleanup
* feat: contracts: use selector
* fix: contracts: use typescript
* contracts: use interface
* l2geth: bump to go 1.15 (#1058)
* l2geth: bump to go 1.15
* chore: add changeset
* Change monotonicity band-aid code to log warnings not errors (#1060)
* refactor: change monotonicity band-aid code to log warnings not errors
* build: add changeset
* feat(contracts, l2geth): native ETH value support for ovmCALL (#1038)
* feat(contracts): add ovmCALL-types with native value
* add ovmCALLVALUE context
* add ovmBALANCE
* test success and revert cases
* test empty contract case
* chore: lint
* test(integration-tests): ovmCALL-types with value (compiler and wrapper)
* fix ovmDELEGATECALL type, update tests
* add ovmSELFBALANCE
* fix ovmDELEGATECALL jumping to CALL
* chore: lint
* fix(contracts): account for intrinsic gas of OVM_ETH sends
* fix(contracts): merge conflict bug
* fix(contracts): update gas benchmark
* feat(contracts, integration-tests): use new value-compatible compiler
* feat(contracts,l2geth): support value calls in OVM_ECDSAContractAccount
* fix(contracts): ovmDELEGATECALL does not change message context
* feat(contracts): sending value between EOAs
* test(integration-tests): ovmDELEGATECALL preserves ovmCALLVALUE
* test(integration-tests): assert ovmSELFBALANCEs correct
* test(integration-tests): intrinsic gas for eth value calls
* test(integration-tests): update gas values
* chore(contracts): lint
* feat(contracts, l2geth): eth_calls with nonzero value
* chore: minor fixups and comments based on PR feedback
* test(integration-tests): add requested tests from PR reviews
* test(integration-tests): ovmSELFBALANCE is preserved in ovmDELEGATECALLs
* fix(contracts): fix bug where ovmDELEGATECALL could fail if balance was lower than the ovmCALLVALUE
* chore: add changeset
* fix(contracts): update intrinsic gas for worst-case value sends
* chore: address final PR nits/improvements
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* Add erc1271 support to contract account (#1052)
* add ERC1271 support, failing unit tests
* add integration test for isValidSignature
* remove .only
* lint
* add changeset
* clean up 1271 tests and lint
* switch back to using waffle wallet
* lint
* fix import
* feat[contracts]: slightly better account funding for hardhat accounts (rebased) (#1065)
* feat[contracts]: better account funding for hardhat accounts
* add a sleep to avoid any potential problems
* chore: add changeset
* fix: bug with gas estimation in funding step
* fix: limit to 20 accounts max
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* Ensure Sentry is correctly set up for DTL and MR (#1054)
* refactor: add logger and metrics to options for BaseService
* refactor: thread sentryOptions through from message-relayer into BaseService
* refactor: ensure DTL Logger is using Sentry for errors
* style: lint base-service.ts
* refactor: init Sentry on batch-submitter too
* refactor: init Sentry on message-relayer too
* refactor: pass in basic logger to MessageRelayerService
* build: provide changeset
* fix: correct usage of use-sentry boolean config
* refactor: appropriately type loggingOptions
* build: add @sentry/node
* build: add @sentry/node to message-relayer and fix linting issue
* Add more logging information to monotonicity violation logs (#1066)
* refactor: log idx of monotonicity violation from batch
* build: add changeset
* temporarily disable hardhat example tests (#1071)
* fix: monotonicity auto healer (#1070)
* fix: monotonicity auto healer
* add: changeset
* Version Packages (#1053)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Standard token bridge (#988)
* Remove abstract token gateway and deposited token implementations
* Further simplification of bridge contracts
* Standart token bridge and L2 token implementation
* Fix spacing
* Implement case when a bad deposit happens to a nonexistent L1<>L2 token pair
* Use SafeMath in common token bridge accounting
* test(contracts): fix finalizeWithdrawal test
* fix(contracts): use SafeERC20 on token deposits
* Rename OVM_L1ERC20Gateway to OVM_L1ERC20Bridge contract
* Rename iOVM_L1ERC20Gateway to iOVM_L1ERC20Bridge contract
* Cleanup gateway to bridge rename
* Better name for the mapping holding l1->l2 deposit amounts
* Use OZ SafeMath
* Rename local variables in OVM_L2DepositedERC20 from gateway to bridge
* Merge ETH and ERC20 bridge contracts
* Rename OVM_L1ERC20Bridge to OVM_L1StandardBridge and fix tests from merging the ETH and ERC20 bridges
* Better name for iAbs_BaseCrossDomainMessenger -> iOVM_CrossDomainMessenger
* Correct the bounce back of deposit sender and recipient properties
* Remove obsoleted event from OVM_L2DepositedERC20
* chore(contracts): change references from ETHGateway to Bridge
* Fix a linting error
* fix(contracts): add bridge to deployer
* Split off ERC20Bridge interface for the purposes
of being reused in custom ERC20 bridges
* Split off interface natspec definitions
* Draft version of OVM_L2DepositedERC20 splitted into a standard L2 erc20: L2StandardERC20 and
a common L2 bridge: OVM_L2StandardBridge
* style(contracts): define L1_ETH_ADDRESS as constant
* test(integration): update interface to use depositETH
* test(contracts): fix OVM_L1StandardBridge tests
* test(contracts): fix L2 Standard Bridge tests
* test(contracts): lint and remove an obsolete test case
* Fix modifier check to comply with the L2 bridge distinction from L2 token
* Simplify address <> interface casting in bridges
* Ensure natspec comments are correct
also add l1 and l2 token params to WithdrawalInitiated event for consistency
* Fix issues in L1 and L2 bridges to ensure
cross domain messages are sent only between the two bridges
also adjusted withdrawals to send to either finalizeETHWithdrawal or finalizeERC20Withdrawal
depending on which asset is being withdrawn
* Remove AddressManager from the L1 standard bridge
* REVERT ME: instruments cross domain enabled
* fix(contracts): remove Address Manager from L1 Bridge
* feat(contracts): make L2 Standard Bridge a predeploy
* WIP: update deployments for standard bridges
* WIP: update deployments for standard bridges
* l2geth: TEMP log contract calls
* chore(l2geth): replace eth gateway with standard bridge
* fix(contracts): make contract-deployment/config work
* WIP fix(integration): update integration tests for bridge
* Remove ovmEth from L1 Standard bridge as obsoleted
* Separate ERC20 standard implementation from L2 bridge
* Formatting fixes
* chore(l2geth): replace eth gateway with standard bridge
* Revert "REVERT ME: instruments cross domain enabled"
This reverts commit d5bb8f8f67974d0a3e65fc000f08858328a4bbbc.
* fix: lint ts
* Implement EIP-165 in the Standard L2 ERC20 token
Also switch that to be based off the OpenZeppelin default implementation plus mint and burn
Additionally remove the obsoleted iOVM_ERC20
* fix(contracts): add deployment check on bridge proxy
fix(contracts): whitespace
fix(contracts): init bridge implementation with non-zero address
* Remove dependency on Ownable contract for the StandardERC20 token on L2
* fix(contracts): update deployment scripts
* fix: lint
* remove debugging code
* fix: correct rpc get balance slot
* restore l2 cross domain messenger
* fix: lint
* Add a test for a non compliant token deposit
* Only allow EOAs to deposit ETH and ERC20
* Add comments and tests for ERC165 implementation
* Decide against using explicit ETH MOCK address as we're not using it for checks
* Fix linting issues
* Add onlyEOAContract restriction to standard bridge withdrawals
* Update codehashes in L2 Standard bridge
* fix(ops): remove unintentionally added file
* feat(contracts): add expectApproxGasCost function
* fix(integration): proper arrayify input on fundUser
* fix(integration): proper gas value checks
* Revert "Add onlyEOAContract restriction to standard bridge withdrawals"
This reverts commit 2713c06ceb2609e4f13718e1034a4d76210d9758.
* fix(contracts): removed unused expectApproxGasCost for now
* fix(contracts): update OVM_SequencerFeeVault for bridge changes
* lint
* Update deployment for L1 Bridge w/ ChugSplash
* Revert "l2geth: TEMP log contract calls"
This reverts commit 21d42259278449f221bf34605162229b3d9d4fa9.
* Apply suggestions from code review
* Apply suggestions from code review
* fix(contracts): deploy with chugsplash proxy
* fix(contracts): add working bridge and chugsplash proxy deployment
* fix(contracts,integration): 500k gas for depositETH
* comment(contracts): describe failed deposit handling on l2
* Apply suggestions from code review
Co-authored-by: ben-chain <ben@pseudonym.party>
* docs: add changeset
* fix(integration): set working l2 gas amount on funduser
* test(integration): add receive() test
* fix(contracts): reset receive to 1.2MM l2 gas
* test(examples): skip l1-l2 example test for now
* fix(contracts): drop hardcoded gas to 500k in receive()
* fix(contracts): use abi.encodeWithSignature
* fix(contracts): resolve merge conflicts
* feat(integration): add expectApprox for flexible gas testing
* fix(integration): fix failing gas tests
* fix: incorrect l2 gas for deposit
* Update utils.ts
* fix(workflow): disable l1-l2 example until npm imports are fixed
* chore: final round of PR review nits and tests
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* fix: comment out codeowners (#1073)
* fix: use predeploy constant lib for em wrapper (#1075)
* fix: use predeploy constant lib for em wrapper
* chore: add changeset
* fix[l2geth]: off-by-one sometimes breaking replica sync (#1082)
* fix[l2geth]: off-by-one sometimes breaking replica sync
* chore: add changeset
* fix(l2geth): Log 'end of OVM execution' correctly (#1080)
* refactor[contracts]: move account contracts to predeploy folder (#1085)
* refactor[contracts]: move account contracts to predeploy folder
* chore: add changeset
* maintenance[contracts]: rename precompiles test folder to predeploys (#1086)
* fix[bs]: disambiguate generic submission errors (#1051)
* fix[bs]: disambiguate generic submission errors
* add cases for errors
* separate out errors from transaction reverts with reasons
* remove extraneous errors
* WETH deposit and withdraw on OVM_ETH (#1083)
* feat(contracts): add no-op WETH9 functionality to OVM_ETH
* working WETH deposit and withdraw + tests
* add changeset
* address PR feedback
* update WETH9 contract implementation
* add fallback to WETH9
* add fallback and revert withdraw test
* update nit comment
Co-authored-by: ben <ben@pseudonym.party>
* Also move the accounts interface to iOVM/predeploys (#1087)
* refactor[contracts]: move account interface to predeploy folder
* chore: add changeset
* Version Packages (#1089)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: use -z flag for var unset in canary
* Use Eslint instead of Tslint (#1005)
* removed tslint
* forgot to commit files
* made .eslintrc.js consistent for all subdirs and other cleanup
* [removed] includes and files keys from tsconfig.json
* removed file level linting exceptions and added details to line level
* added changeset
* fixed newly introduced linting errors from rebase
* enable json import for batch submitter
* removed ecdsa-coder
* maybe a tsconfig issue?
* Update deploy.ts
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com>
* metrics[batch-submitter]: add new batch submitter metrics (#1074)
* metrics[batch-submitter]: add new batch submitter metrics
* chore: changeset
* account for failed submissions
* Fix canary publishing (#1093)
* ci: fix custom docker tag
* ci: use new env file
* ci: use outputs from previous job
* ci: fix headers of jobs
* ci: inherit canary tag from builder
* feat[ci]: upload logs for sync tests if failure (#1098)
* deploy: goerli 0.4.0 (#1099)
* deployments: goerli 0.4.0 rc
* readme: update
* chore: add changeset
* fix[dtl]: defend against RPC provider missing events (#1084)
* fix[dtl]: defend against RPC provider missing events
* chore: add changeset
* respond to review comments
* better error handling for missing handlers
* deploy: kovan v.4.0 rc (#1101)
* deploy: kovan v0.4.0 rc
* chore: add changeset
* readme: update
* maintenance[monorepo]: first pass update to README (#1106)
* maintenance[monorepo]: first pass update to README
Doing some relatively minor updates to the README just to clean things up a bit.
* replying to review comments
* Move the metric prefix string to a label (#1047)
Added changeset and fixes
Changeset to patch
* fix[smock]: add support for hardhat 2.4.0 (#1112)
* fix[smock]: add support for hardhat 2.4.0
* chore: add changeset
* lint: fix
* build(deps): bump hosted-git-info from 2.8.8 to 2.8.9 (#1064)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)
---
updated-dependencies:
- dependency-name: hosted-git-info
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Misc. small improvements to README (#1115)
* Update README.md
* Update README.md
* fix[dtl]: use the same L2 chain ID everywhere (#1122)
* fix[dtl]: use the same L2 chain ID everywhere
* chore: add changeset
* fix: make sync tests only on workflow dispatch (#1123)
* fix[dtl]: remove old stringification function (#1134)
* fix[dtl]: remove old stringification function
* chore: add changeset
* fix[dtl]: log server errors as ERROR instead of INFO (#1133)
* fix[dtl]: log server errors as ERROR instead of INFO
* chore: add changeset
* Contracts: connectL1Contracts & connectL2Contracts (#713)
* Contracts: connect-contracts
* Trying to resolve build problems
* connect-contracts build working
* Adds artifacts-ovm back to gitignore
* Removes incorrect changes
* Adds copy-artifacts script
* Adds test file (not working yet)
* fix: incorrect contract instantiation
* Improves tests and removes old deployment versions
* Single source of truth for predeploy addresses
* Reverts deployments/README.md
* Makes connect-contracts more DRY
* Adds missing @ethersproject/abstract-signer dependency
* Adds argument evaluation
* Adds L1Contracts and L2Contracts types
* Attempts removing artifacts-ovm again
* Adds webpack config (not working yet)
* build: add artifacts to dist (#776)
* Updates lint rule
* Adds l2 imports
* Fixes dependency tree bug
* Removes webpack stuff
* Fixing package.json issues and adds .DS_Store to gitignore
* Removes test-contracts script
* Reverting script change
* Adds comments
* Adds comment
* Renames deployments folders
* Fixes linting errors
* Generates markdown
* build: add deployments directory to Dockerfiles
* Removes unneeded contracts, improves error handling and tests
* Adds changeset
* yarn.lock
* Removes console.log
* Changes from minor to patch version
* Fixes lint errors
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: prevent overflow in abi encoding (#1135)
* l2geth: prevent overflow in abi encoding to ovm codec tx
* chore: add changeset
* tests: replica syncing (#981)
* [wip] add l2_dtl and replica images
* passing basic dummy tx test
* add erc20 test
* add sync test to ci
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix[relayer]: update exported files list in package.json (#1138)
* fix[relayer]: update exported files
* chore: add changeset
* fix: import path (#1141)
* fix: correct import path for altered contract path
* chore: add changeset
* refactor: improve logging for batch submission timeout scenarios (#1120)
* Add highest L1 and L2 block number Gauge metrics to DTL (#1125)
* build: add prom-client to data-transport-layer
* refactor: thread metrics more carefully through data-transport-layer; add two new metrics
* style: fix some style issues
* refactor: make metrics mandatory
* refactor: move metrics register code to top of file
* style: apply linting
* refactor: move promethesus initialization after express
* refactor: move promBundle call up, provide registry
* build: add changeset
* Improve Watcher ability to find transactions (#1107)
* remove listeners and use loop to find tx receipt
* add yarn ready
* moved filters inside loop
* [added] changeset
* Add minimal vscode settings and extensions (#1109)
* chore: add minimal vscode settings and extensions
* chore: Add "files.trimTrailingWhitespace" to vscode native config
* chore: replace vscode prettier plugin with eslint plugin
* fix[contracts]: remove part of MultiMessageRelayer deployment (#1144)
* fix[contracts]: remove part of MultiMessageRelayer deployment
* chore: add changeset
* Define L1 Starting block via OwnershipTransferred rather than AddressSet (#1129)
* Update service.ts
* Create thirty-years-look.md
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Easy fix for broken watchers (#1121)
* Easy fix for broken watchers
* Ran yarn changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* feat: go packages (#1111)
* go: add utils module
* readme: update
* Version Packages (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* build: add husky pre-commit hook to lint (#1146)
* feat[contracts]: add mainnet deploy script (#1147)
* Add mainnet deploy script
* Update mainnet.sh
* Address PR review feedback
* feat: mainnet contract deployment 0.4.0 (#1148)
* feat: mainnet contract deployment 0.4.0
* feat: deployments readme
* chore: add changeset
* contracts: remove dead contract
* contracts: remove dead config
* tests: fix to not test for old contracts
* feat: `rollup gasPrices` RPC endpoint (#1136)
* feature: l2geth endpoint
* chore: add changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* Adds l2 standard bridge to contracts markdown file (#1151)
* Version Packages (#1150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add more info about our branching strategy to the README (#1114)
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Remove references to OVM_L1ETHGateway in deployments and readme (#1119)
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Elena Gesheva <elena@arenabg.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
Co-authored-by: Rajiv Patel-O'Connor <rajiv.patel.oconnor@gmail.com>
Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Tim Myers <timmyers09@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Annie Ke <annieke8@gmail.com>
Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com>
Co-authored-by: Matt Masurka <m.masurka@gmail.com>
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
Co-authored-by: Alejandro Santander <Palebluedot@gmail.com>
* Re-apply key changes on top of optimism most current develop
* Add docker-compose-replica.yml (#109)
* Create docker-compose-replica.yml
* Add replica service
* Update docker-compose-omgx-replica.yml
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* fix linter; patch gethl2
* configure the deployer correctly
* fix proposer / batch submitter
* update chainIDs
* update rpc test
* Create README_OMGX.md
* upstream - needs more work
* Adds delay to watcher (#1159)
* Adds delay to watcher
* Simplifies delay
* Adds changeset
* Fix wallet test
* Fix deployment test
* Add Python
* Update Dockerfile.omgx_monorepo
* Remove package-lock
* fix: bind dtl functions for missing event codepath (#1161)
* dtl: bind this in L1 missing element error handlers
* dtl: add additional logline
* chore: add changeset
* dtl: add more metrics
* dtl: use counter instead of gauge
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* fix: remove 'editor.formatOnSave' from global settings' (#1163)
* merge conflicts
* Update pre-commit
* Version Packages (#1167)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* minor
* Update pre-commit
* Fix wallet test (#119)
* Fix wallet test
* Fix deployment test
* Add Python
* Update Dockerfile.omgx_monorepo
* Remove package-lock
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Reapply standard changes on top of current develop
* Update package.json
* doc: add notes for releasing new versions with changesets (#1166)
* Bind correct object to method handler in DTL (#1168)
* fix: bind correct object to method handler
* build: add changeset
* Version Packages (#1169)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Fix web wallet
* Fix integration test (#124)
* Fix integration test (#125)
* Fix integration test
* Fix integration test
* Fix wallet_react
* Fix lint test
* Remove package-lock
* Update integration.yml
* Fix wallet deployer
* Collect docker log
* Fix l1-l2-deposit-withdrawal test
* Fix sync test
* Add chainID to deployer config
* make sync tests dispatch only
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Add short contribution section to primary README (#1157)
* Add short contribution section to primary README
* Update README.md
* fix: prevent batch submitter from submitting batches if low on ETH
* build: add changeset
* Eslint ignore the hardhat folder
* Update README.md
* Beginning to add working examples
* hardhart and waffle example tests
* document/check waffle
* test l1-l2 example
* add patch-package
* Update package.json
* build: ensure lint only staged files on commit
* refactor: do not run --fix on lint-staged
* refactor: *.{ts,js} for eslint regex
* l2geth: rollup client explicitly checks for >= 400 errors
* l2geth: sync service retries connection to remote server
* l2geth: test errors returning from remote
* chore: add changeset
* syncservice: nit
* feat[message-relayer]: add easy relay tool
* chore: add changeset
* upkeep[monorepo]: add changeset info to README
* merge conflict squash
* Daily sync up (#137)
* build: ensure lint only staged files on commit
* refactor: do not run --fix on lint-staged
* refactor: *.{ts,js} for eslint regex
* l2geth: rollup client explicitly checks for >= 400 errors
* l2geth: sync service retries connection to remote server
* l2geth: test errors returning from remote
* chore: add changeset
* syncservice: nit
* feat[message-relayer]: add easy relay tool
* chore: add changeset
* upkeep[monorepo]: add changeset info to README
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Kelvin Fichter <kelvin@optimism.io>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* github actions: bump geth CI golang version
* fix(contracts): prevent L2->L1 calls to system contracts
* Update message relayer fast contracts (#139)
* prepare for wallet reorg
* Create yarn.lock
* fix hardhat bug
* merge conflict resolve
* daily sync up (#141)
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* fix(contracts): prevent L2->L1 calls to system contracts
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: ben <ben@pseudonym.party>
* Add Factory contract for creating standard ERC20 tokens
compliant with the standard bridge
* Disallow 0 address for l1 token when creating l2 standard token
* Fix linting issue
* Add deployment script for the L2 token factory
* Fix deploy script OVM_L2StandardTokenFactory constructor params
* Add changeset
* Cleanup deployment script for OVM_L2StandardTokenFactory
and fix a solidity linting error
* refactor(integration): Add clarity to the expectApprox function signature
* fix: skip codechecks for PRs from external repos
* DRAFT move react wallet and the contracts to more clear folders (#138)
* DRAFT move react wallet and the contracts to more clear folders
* merging the axios integration chagnes
* updated the message-relayer-fast contracts
* integrate message-relayer-fast into standard dockers
* Dockerize the message-relayer-fast
* update Readme.md
* remove duplicated contracts - just keep everything in /contracts
* add deploy for fast messenger
* message-relayer-fast testing
* Update serve.sh
* Delete yarn.lock
* Update constants.ts
* Create yarn.lock
* Update constants.ts
* Update function-manipulation.spec.ts
* increase the retries and other minor fixes
* Improved documentation
* fix omgx integration tests
* Update omgx-integration.yml
* integration test remove duplicated tests
* Fix units test configuration
* Update docker-compose-omgx-services.yml
* integration test setup fixes
* fix wallet integration test
* fix for crash on return
* integration tests for `message-relayer-fast`
* Update env.ts
* Autodeploy Token Bridges
* Update wallet contracts
* Update utils.ts
* improve omgx integration tests
* Add address manager address to GH actions for now
Co-authored-by: sahil kashetwar <>
Co-authored-by: Sahil k <sahil@enya.ai>
Co-authored-by: cby3149 <cby3149@outlook.com>
* merge conflicts
* GH actions regular changes
* husky
* Daily sync up (#144)
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* github actions: bump geth CI golang version
* fix(contracts): prevent L2->L1 calls to system contracts
* Add Factory contract for creating standard ERC20 tokens
compliant with the standard bridge
* Disallow 0 address for l1 token when creating l2 standard token
* Fix linting issue
* Add deployment script for the L2 token factory
* Fix deploy script OVM_L2StandardTokenFactory constructor params
* Add changeset
* Cleanup deployment script for OVM_L2StandardTokenFactory
and fix a solidity linting error
* refactor(integration): Add clarity to the expectApprox function signature
* fix: skip codechecks for PRs from external repos
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: ben <ben@pseudonym.party>
Co-authored-by: elenadimitrova <elena@arenabg.com>
Co-authored-by: Reggie Gomez <reggieag@gmail.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* docker: pin to alpine 3.13 for l2geth
A bug has appeared when older versions of Docker are used to build
alpine based images in alpine version 3.14. To prevent this problem
from happening to the users, this PR pins the version to 3.13.
The observed problem is that `make` cannot run any command and
the error message states `Operation not permitted.` Removing
`make` was one way to solve the problem but that would increase
the diff from upstream geth.
See these links for details:
https://github.com/alpinelinux/docker-alpine/issues/182
https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0
* fix: update statement for skipping codechecks
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://kovan.optimism.io npx hardhat set-l2-gasprice \
--l2-gas-price 1
```
This hardcodes the predeploy address of the `OVM_GasPriceOracle` smart
contract and the Owner must be used to do the updating, otherwise the
transaction will revert.
* removed unused functions from core utils
* [added] changeset
* next gen integration tests for the OMGX stack (#149)
* next gen integration tests for the OMGX stack
* finish first pass integration test outline
* move LP tests to the `message-relayer-fast`
* Update omgx-integration.yml
* add more tests to message-relayer-fast
* connect up the .env variables
* hard code URIs
* Update utils.ts
* Update omgx-integration.yml
* fix - should have been 8080
* Update omgx-integration.yml
* which address to use?
* Update omgx-integration.yml
* removing not needed code
* remove superfluous logging code
* Update utils.ts
* Update utils.ts
* additional comments and formatting improvements
* fix: use older changes on tests (#152)
* fix: use older structure
* correct messenger
* LP fees on the correct side
* correct messenger
* rearrange depl order
Co-authored-by: Souradeep Das <dsouradeep2@gmail.com>
* Update README_OMGX.md (#150)
Refactored some changes and added some comments I thought might be helpful for people.
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* tests: re-enable all tests (#155)
* re-enable all tests
* re-enable all tests
* Add solhint to contracts package
* Turn off compiler-version rule in solhint
* Add suggestions by @maurelian
https://github.com/ethereum-optimism/optimism/pull/1033#issuecomment-866146467
* Change solhint output formatting to table
* Disable contract-name-camelcase rule in solhint
* Fix max-line-length linting issues in contracts
* Fix quotes linting issues in contracts
* Remove private-vars-leading-underscore rule in solhint
* Add contracts linting to github action
* Fix for hardhat account balance parsing
* Disable generating the bytecodeHash in hardhat contract artifacts
* Review fixes
* Fix review notes
* Fix smockit for a change in hardhat ^2.4.0
which changes the way it parses errors from returndata
Fix provided by @smartcontracts
* dtl: configurable gas price backend
Adds a new config option `--l1-gas-price-backend` or
`DATA_TRANSPORT_LAYER_L1_GAS_PRICE_BACKEND` that can be set to `l1` or
`l2`. This impacts the behavior of the HTTP endpoint `GET /eth/gasprice`
by changing what is queried to return the L1 gas price. The L1 gas price
is required to compute the L2 fee since the L2 fee consists of
`L1 gas price * L1 gas used + L1 gas price * L2 gas limit`. If the L1
gas price differs too much between different L2 providers, then users
using `eth_estimateGas` may submit transactions with too low of a fee
and be unable to submit transactions to the sequencer.
By configuring the DTL to use L2 as the L1 gas price backend, it will
call the Sequencer's RPC endpoint `rollup_gasPrices` which returns the
L1 and L2 gas prices from the point of view of the sequencer. The L2 gas
price exists in the state, so that will always be the same between the
sequencer and any replicas. The L1 gas price does not live on chain, so
querying for it from the sequencer directly will ensure that users send
transactions with a fee that is large enough.
Also adds eth/gasprice info to README.
* Remove bl wl service (#154)
* replace `bl-wl` with direct calls the `omgx_deployer`
* Update docker-compose-omgx-services.yml
* Update up_local.sh
* Add CORS headers to http servers
* updated frontend to use the two new HTTP servers for the addresses
* update webwallet to work with both local and rinkeby
* Add missing .env variables to GH actions
* re-enable docker tages
* re-enable wallet transaction history
* Update up_local.sh
* Update up_local.sh
* Add flag to omgx_deployer to only serve addresses w/o deploying new contracts
* Update docker-compose-omgx-services.yml
* Add back tagging system and improved reliability of GH actions
* removed commented out service
* add rinkeby token addresses (#161)
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* fix: lint deploy-l2 folder in contracts
* Add AWS integration (#159)
* Add AWS integration
* Remove artifacts
* updated ops_omgx/README.md and added .github/workflows/deploy2aws-integration.yml and .github/workflows/push2aws.yml
* add automated provision and deletion of an ec2 instance for running the integration tests
Co-authored-by: Petar Denev <pdenev@gmail.com>
* fix: update CI to avoid running out of memory
* Version Packages
* ci: release latest image tags on release
* feat: update README to include info about rebasing
* Add op_exporter for sequencer metrics and health endoint
Added metric for sequencer health
Added Dockerfile for op_exporter;
Fixed Dockerfile path
* merge conflicts
* re-comment out the usual GH actions
* feat[integration-tests]: make tests work for prod networks
* chore: add changeset
* Increase client_body_buffer_size for rpc-proxy
Added client_max_body_size to rpc-proxy config
* l2geth: use `hexutil.Big` to prevent overflows
The `RollupClient` decodes the JSON from the DTL as a uint64,
this updates it to be a `big.Int`
Includes a test for the value field that ensures it does not overflow
* ci(contracts): only run codecov if contracts package is modified
In order to skip running the CodeCov job when it isn't relevant, a new job was added to the ts-packges workflow. For a PR, this job identifies all the files modified between the base branch and the tip of the PR branch, and writes to a variable which can be used to decide if subsequent jobs should run.
Github Actions provides an easy method for achieving this at the level of a workflow, but not for specific jobs within a workflow.
* Version Packages
* chore(ci): Skip codecov on push events
* feat: add workflow for running SNX test suite
* go: implement gasprices package
The `gasprices` package implements the logic that updates
L2 gasprices on the Optimistic Ethereum Network.
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* gas-oracle: implement and test
This commit adds the `gas-oracle` which is an offchain entity
that sends transactions to L2 to update the gas price. It must
be configured with a private key as the `OVM_GasPriceOracle`
is owned.
The `gas-oracle` is added to the changesets setup.
Tests are included as well as CI. Dockerizing will happen
in a follow up PR.
* gas-oracle: ci + docker build/publish
Adds a dockerfile for the `gas-oracle` as well as adding it as
a service in the `docker-compose.yaml`. It is not enabled by
default due to memory issues in CI already happening occasionally
where the integration tests are oom killed.
The `gas-oracle` is configured with a key that owns the
`OVM_GasPriceOracle`.
This PR adds the `gas-oracle` to the Github Actions
workflow that is responsible for publishing the docker images.
* Add replica (#169)
* fix: update erc20 deposits (#166)
* fix: update erc20 deposits
* fix: auto default token
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* resolve merge conflicts
* Update docker-compose.yml
* Update docker-compose.yml
* [pull] develop from ethereum-optimism:develop (#164)
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://kovan.optimism.io npx hardhat set-l2-gasprice \
--l2-gas-price 1
```
This hardcodes the predeploy address of the `OVM_GasPriceOracle` smart
contract and the Owner must be used to do the updating, otherwise the
transaction will revert.
* Add op_exporter for sequencer metrics and health endoint
Added metric for sequencer health
Added Dockerfile for op_exporter;
Fixed Dockerfile path
* feat[integration-tests]: make tests work for prod networks
* chore: add changeset
* Increase client_body_buffer_size for rpc-proxy
Added client_max_body_size to rpc-proxy config
* l2geth: use `hexutil.Big` to prevent overflows
The `RollupClient` decodes the JSON from the DTL as a uint64,
this updates it to be a `big.Int`
Includes a test for the value field that ensures it does not overflow
* ci(contracts): only run codecov if contracts package is modified
In order to skip running the CodeCov job when it isn't relevant, a new job was added to the ts-packges workflow. For a PR, this job identifies all the files modified between the base branch and the tip of the PR branch, and writes to a variable which can be used to decide if subsequent jobs should run.
Github Actions provides an easy method for achieving this at the level of a workflow, but not for specific jobs within a workflow.
* Version Packages
* chore(ci): Skip codecov on push events
* feat: add workflow for running SNX test suite
* go: implement gasprices package
The `gasprices` package implements the logic that updates
L2 gasprices on the Optimistic Ethereum Network.
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* gas-oracle: implement and test
This commit adds the `gas-oracle` which is an offchain entity
that sends transactions to L2 to update the gas price. It must
be configured with a private key as the `OVM_GasPriceOracle`
is owned.
The `gas-oracle` is added to the changesets setup.
Tests are included as well as CI. Dockerizing will happen
in a follow up PR.
* gas-oracle: ci + docker build/publish
Adds a dockerfile for the `gas-oracle` as well as adding it as
a service in the `docker-compose.yaml`. It is not enabled by
default due to memory issues in CI already happening occasionally
where the integration tests are oom killed.
The `gas-oracle` is configured with a key that owns the
`OVM_GasPriceOracle`.
This PR adds the `gas-oracle` to the Github Actions
workflow that is responsible for publishing the docker images.
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Ben Wilson <bwilson@optimism.io>
Co-authored-by: Kelvin Fichter <kelvin@optimism.io>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Liam Horne <li…
* tests: replica syncing (#981)
* [wip] add l2_dtl and replica images
* passing basic dummy tx test
* add erc20 test
* add sync test to ci
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix[relayer]: update exported files list in package.json (#1138)
* fix[relayer]: update exported files
* chore: add changeset
* fix: import path (#1141)
* fix: correct import path for altered contract path
* chore: add changeset
* refactor: improve logging for batch submission timeout scenarios (#1120)
* Fixed CrossDomainMessenger name (#96)
* Add highest L1 and L2 block number Gauge metrics to DTL (#1125)
* build: add prom-client to data-transport-layer
* refactor: thread metrics more carefully through data-transport-layer; add two new metrics
* style: fix some style issues
* refactor: make metrics mandatory
* refactor: move metrics register code to top of file
* style: apply linting
* refactor: move promethesus initialization after express
* refactor: move promBundle call up, provide registry
* build: add changeset
* Improve Watcher ability to find transactions (#1107)
* remove listeners and use loop to find tx receipt
* add yarn ready
* moved filters inside loop
* [added] changeset
* Add minimal vscode settings and extensions (#1109)
* chore: add minimal vscode settings and extensions
* chore: Add "files.trimTrailingWhitespace" to vscode native config
* chore: replace vscode prettier plugin with eslint plugin
* fix[contracts]: remove part of MultiMessageRelayer deployment (#1144)
* fix[contracts]: remove part of MultiMessageRelayer deployment
* chore: add changeset
* Define L1 Starting block via OwnershipTransferred rather than AddressSet (#1129)
* Update service.ts
* Create thirty-years-look.md
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Easy fix for broken watchers (#1121)
* Easy fix for broken watchers
* Ran yarn changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* feat: go packages (#1111)
* go: add utils module
* readme: update
* Version Packages (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* build: add husky pre-commit hook to lint (#1146)
* feat[contracts]: add mainnet deploy script (#1147)
* Add mainnet deploy script
* Update mainnet.sh
* Address PR review feedback
* feat: mainnet contract deployment 0.4.0 (#1148)
* feat: mainnet contract deployment 0.4.0
* feat: deployments readme
* chore: add changeset
* contracts: remove dead contract
* contracts: remove dead config
* tests: fix to not test for old contracts
* feat: `rollup gasPrices` RPC endpoint (#1136)
* feature: l2geth endpoint
* chore: add changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* Adds l2 standard bridge to contracts markdown file (#1151)
* Version Packages (#1150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add more info about our branching strategy to the README (#1114)
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Remove references to OVM_L1ETHGateway in deployments and readme (#1119)
* Keep the user logged in after changing chain (#99)
* Keep the user logged in after changing chain
* Update Nft.js
* Detect if user is in the wrong chain
Co-authored-by: cby3149 <cby3149@outlook.com>
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Merge conflics resolve (#110)
* wip
* gethl2
* wip
* batch submitter
* core utils
* DTL
* message relayer
* contracts
* wip
* Update service.ts
* DTL
* messaage-relayer
* Update yarn.lock
* final 5 files
* [pull] develop from ethereum-optimism:develop (#91)
* chore: reduce hardhat timeout to 20 seconds (#968)
* fix: force LF line endings for scripts to avoid docker problems on Windows (#974)
* fix: use correct line endings for windows
* chore: add changeset
* refactor[contracts]: Turn ExecutionManagerWrapper into a predeployed contract (#808)
* wip: Started working on L2 contract testing revamp
* test: clean tests for ProxyEOA
* style: clean imports for ProxyEOA tests
* test: port tests for ECDSAContractAccount
* fix tests and add wrapper to dump
* fix: add em wrapper to l2 deploy
* ffix: add comments to wrapper contract
* fix: add more comments
* fix: add smock comment for unbind
* Update packages/smock/src/smockit/binding.ts
* maintenance[contracts]: use dashes in chain container names (#819)
* maintenance: use dashes in chain container names
* chore: add changeset
* feat[contracts]: temporarily disable EOA upgrades (#857)
* feat[contracts]: disable eoa upgrades temporarily
* chore: add changeset
* Update OVM_ProxyEOA.sol
* fix: turn upgrade into a noop
* lint: fix
* feat[contracts]: Update Lib_AddressManager.AddressSet event to speed up data transport layer (#820)
* feat: update and improve AddressSet event
* chore: add changeset
* Update Lib_AddressManager.sol
* Reduce gas costs of deposits (#667)
* Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead
Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger
Fix typo
* Remove sentMessages mapping from L1CrossDomainMessenger storage
and use the nonce to check for existence of replayed transaction
* Refactor out common library function for getting cross domain calldata
* Post rebase fixes
* Use the queueIndex to check the transaction was enqueued
* Fix tests for L1CrossDomainMessenger.replayMessage
Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock
* Lint fixes
* Optimise the resolve calls into the AddressManager lib
* Rename the nonce parameter to be clear
* Update test name
Co-authored-by: ben-chain <ben@pseudonym.party>
* Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils
Co-authored-by: ben-chain <ben@pseudonym.party>
* optimism: bump gaslimit to 10 million #870 (#871)
* optimism: bump gaslimit to 10million
* chore: add changeset
* optimism: bump max gaslimit to 10 mil
* chore: add changeset
* chore: remove unnecessary changeset
* chore: remove unnecessary changeset
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: use correct contract name in tests (#921)
* fix: disable upgradability from ECDSA Account (#885)
* l2geth: remove `SignatureHashType` (#752)
* l2geth: remove tx type
* l2geth: no longer parse type in rollup client
* chore: add changeset
* chore: remove extra sighash params
* fix: do not check txtype in integration tests
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* feat[contracts]: introduce OVM_GasPriceOracle (#912)
* feat[contracts]: congestion price oracle
* chore: add changeset
* contracts: gas price oracle (#917)
* contracts: gas price oracle
* tests: update
* fees: fix tests
* contracts: simplify gas price oracle
* lint: fix
* test: execution price is at the 1st storage slot
* chore: rename predeploy to GasPriceOracle
* chore: rename gas price oracle test name
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: configure max gas limit to 11m (#928)
Uniswap V3 contracts require that, otherwise they throw call exceptions at deployment
* Consolidate Predeploy Addresses (#931)
* added library for predeploy addresses
* refactor tests and other packages to use exported predeploys
* revert library usage in OVM_ECDSAContractAccount
* lint
* added newline
* fixed address typos
Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* chore: remove yarn-error.log and gitignore it (#956)
* feat[contracts]: Replace Lib_RingBuffer with a much simpler Lib_Buffer (#821)
* feat[contracts]: replace Lib_RingBuffer with a simpler Lib_Buffer
* chore: changeset
* test: add tests for Lib_Buffer
* lint: fix
* test: add extra coverage for Lib_Buffer
* Update packages/contracts/contracts/optimistic-ethereum/libraries/utils/Lib_Buffer.sol
Co-authored-by: ben-chain <ben@pseudonym.party>
* add some extra comments
Co-authored-by: ben-chain <ben@pseudonym.party>
* fix(contracts): import predeploys (#982)
* fix(contracts): import predeploys
* fix: lint
* feat: add hardhat deploy instructions to readme (#965)
* feat: add deployment instructions to readme
* Add changeset
* fix style
* Update README.md
* feat: fees v2 (#976)
* l2 geth: new fee logic
* l2 geth: migrate to fees package
* core-utils: new fee scheme
* chore: add changeset
* l2geth: delete dead code
* integration-tests: fix typo
* integration-tests: fixes
* fees: use fee scalar
* lint: fix
* rollup: correct gas payment comparison
* fix(integration-tests): do not hardcode gas price
* core-utils: update with new scheme
* l2geth: refactor rollup oracle
* l2geth: clean up DoEstimateGas
* l2geth: implement latest scheme
* tests: fix up
* lint: fix
* l2geth: better sycn service test
* optimism: rename to TxGasLimit
* fee: fix docstring
* tests: fix
* variables: rename
* l2geth: prevent users from sending txs with too high of a fee
* integration-tests: fix import
* integration-tests: fix type
* integration-tests: fix gas limits
* lint: fix
* l2geth: log error
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* Add static analysis action (#848)
* Add static analysis github action
setup python and install slither
* Add nvmrc file for setting node to v14.17
* Update slither command run to link missing contract packages from monorepo root
* Add steps for installing dependencies
* Add yarn build step to github action
* Enable colour in github action for static analysis
* Disable certain detectors
* Ensure slither does not fail build
* Add instructions on running static analysis to monorepo readme
* build(deps): bump ws from 7.4.4 to 7.4.6 in /ops/docker/hardhat (#987)
Bumps [ws](https://github.com/websockets/ws) from 7.4.4 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.4.4...7.4.6)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix[l2geth]: fix accidental merge conflict (#994)
* feat[message-relayer]: relay tx generator (#952)
* feat[message-relayer]: relay tx generator
* whoops, I burned our infura key
* fix minor bug
* add comments
* add more comments and clean stuff up
* add empty test descriptions
* add tests
* move smock to dev deps
* chore: add changeset
* minor cleanup to merkle tree proof function
* use bignumber math to avoid nested await
* use a better interface
* minor fixes and simplifications
* backwards compatible dtl syncing (#986)
* kovan: fix attempt
* kovan: db fix
* kovan: types are strings from db
* l2geth: parse things as strings
* chore: add changeset
* dtl: also stringify the range query
* geth: dereference
* geth: assign err
* dtl: handle null
* dtl: fix unit tests
* fix[smock]: fix broken call assertions for overloaded functions (#996)
* fix[smock]: fix broken call assertions for overloaded functions
* chore: add changeset
* minor correction and add a test
* add a test for non-overloaded functions
* fix[message-relayer]: fix failing test because of merge with develop (#1000)
* fix[message-relayer]: remove spreadsheet mode (#998)
* fix[message-relayer]: remove spreadsheet mode
* chore: add changeset
* Lower local rollup timestamp refresh (#985)
* update rollup timestamp refresh
* increase refresh time to 5s
* feat: fees v3 (#999)
* core-utils: fee impl v3
* l2geth: fees v3 impl
* integration-tests: update for fees v3
* chore: add changeset
* fix: typo
* integration-tests: fix and generalize
* fees: update fee scalar
* l2geth: check gas in the mempool behind usingovm
* tests: fix up
* l2geth: remove dead var
* truffle: fix config
* fix: remove dead coders (#1001)
* chore: delete dead coders
* chore: add changeset
* dtl: remove dead imports
* core-utils: delete dead tests
* batch-submitter: remove txtype
* chore: add changeset
* docs[message-relayer]: add a README and improve the interface for generating proofs (#1002)
* docs[message-relayer]: add basic docs and clean up an interface
* chore: add changeset
* dtl: log error stack for failed http request (#995)
* dtl: log error stack for failed http request
* chore: add changeset
* Add rpc-proxy service for whitelisting JSON RPC methods to the sequencer. (#945)
* Add healthcheck endpoint for rpc-proxy
Added ethereum-nginx-proxy source
updated README and docker image build
* Check ETH_CALLS_ALLOWED is set, clean up comments, remove old Dockerfile
* Pass additional information across domains via token gateways (#824)
* feat(contracts): add from and data args to L1ERC20Gateway
fix(integration): add gasLimit to fundUser
refactor(contracts): add data to gateway events
add changeset
fix(integration): provide data in outboundTransfer
refactor(contracts): reset Abs_L2TokenGateway to Abs_L2DepositedToken
refactor(contracts): fix mismatched names
* feat[contracts]: add custom gas arg to gateway
fix(contracts): take max of user vs. default gas
* fix(integrations): update ovm-eth function call
* fix(integration): remove unecessary explicit gasLimit
* test(contracts): 32kb transfer, 9MM gas
* fix(contracts): fixup comment, bytes arg last
* fix(integration): args order in integrations
* fix(contracts): remove unused L2 gas arg
* fix(contracts): limit data that can be passed to L2
* fix(integration): better tests for data length
* test: check for error on too large data
* Experimental: specify gaslimit in before hook
* fix(integration): add l2 gas argument
* fix: increase gas on fundUser
* fix(contracts): remove duplicate max size limit
* fix(integration): fine tune gas amounts
* lint
* fix: large data test
* fix(integration): set gas closer to real cost
* fix(contracts): remove unused bridge variables
These variables were the default gas amounts for cross domain messages
* fix(contracts): Reorder args
Place dynamic length args last
* fix(integration): update estimateGas values
* fix(integration): reset eth withdraw estimate to 21000
* fix(integration): update expected gas amount
* fix(integration): reduce gas amount for ETH withdraw
* More consistent style for Constant values (#991)
* chore(contracts): make container addresses be constants
chore(contracts): consistent style for constant vars
* chore(contracts): add internal on predeploy constants
* feat: deployment config for fee oracle contract (#936)
* feat[contracts]: add GasPriceOracle w/o predeploy
Based on #912
* feat[contracts]: congestion price oracle
* chore: add changeset
* contracts: gas price oracle (#917)
* contracts: gas price oracle
* tests: update
* fees: fix tests
* contracts: simplify gas price oracle
* lint: fix
* test: execution price is at the 1st storage slot
* chore: rename predeploy to GasPriceOracle
* chore: rename gas price oracle test name
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* Add an L2 deploy script for gas oracle contract
* Add a kovan deployment artifact
* Add deployment to readme
* Add extra validation & initial execution price
* Update README.md
* Fix execution price logic
* Perform new deployment with final contract
* contracts: better require in ovm gas price oracle
* Deploy L2GasPriceOracle
* Update contract to use new fee logic & rename to gas
* Deploy updated contract
* Fix lint
* gas price oracle: do not restrict gas price
* gas price oracle: new deployment
* tests: delete dead test
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* ops: expose debug namespace (#1007)
* develop merge fixes
* refactor[l2geth]: queue origin type (#975)
* refactor: queueOrigin type
* Convert queueOrigin to uint8 in encode
* Add changeset
* Regenerate json marshall
* style: combine lines
* Add Stringer for QueueOrigin
* Turn QueueOrigin into uint8
* l2geth: gen tx meta fix
* l2geth: gen tx meta fix
* lint
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix(sync-service): prevent underflows (#1015)
* fix(sync-service): prevent underflows
* chore: add changeset
* chore: remove dead confirmation depth
* chore: remove eth1conf depth from rollup config
* test: remove duplicate value in array (#1014)
* ci: tag docker image for canary with abbreviated GITHUB_SHA (#1006)
* ci: tag docker image for canary with abbreviated GITHUB_SHA
* ci: update from 6 bytes to 8 bytes of abbreviation
* refactor: improve logging for transactions being submitted to chain with gasPrice (#1016)
* refactor: improve logging for transactions being submitted to chain with gasPrice
* lint: apply lint autofixes
* dtl: remove stringify from db logic + more overflow protection (#1010)
* dtl: remove stringify from db logic
* l2geth: overflow protection
* dtl: overflow protection
* chore: add changeset
* ci: upload logs for failed integration tests (#1020)
* fix(dtl): improve slow blocking JSON parsing that occurs during l2 sync (#1019)
The use of eth_getBlockRange returns a large response which is very
slow to parse in ethersjs, and can block the event loop for upwards
of multiple seconds.
When this happens, incoming http requests will likely timeout and fail.
Instead, we will parse the incoming http stream directly with the bfj
package, which yields the event loop periodically so that we don't
fail to serve requests.
* fix: lint errors in dtl (#1025)
* fix[dtl]: fix dtl bug breaking verifiers (#1011)
* fix[dtl]: fix dtl bug breaking verifiers
* tweaks so tests pass
* chore: add changeset
* fix: deterministic blockhashes (#1032)
* config: set etherbase
* l2geth: add deterministic clique key
* l2geth: default value
* chore: add changeset
* test: add sync test for deterministic blockhash
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* Version Packages (#978)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* ci: add sync test's own workflow (#1031)
* fix(dtl): incorrect parsing of eth_getBlockRange result (#1037)
* Version Packages (#1045)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: no gas refund (#1043)
* l2geth: remove the gas refund
* chore: add changeset
* refactor[contracts]: remove one-off GasPriceOracle deployment file (#1046)
* refactor[contracts]: remove one-off gpo deployment
* chore: add changeset
* feat[contracts]: introduce new L1ChugSplashProxy contract (#1009)
* feat[contracts]: add L1ChugSplashProxy
* improve comments slightly
* start adding tests
* add more tests
* make the system pausable
* added another test
* add some extra comments
* Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* chore: add changeset
* address review feedback
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* feat[contracts]: add sequencer fee wallet (#1029)
* wip: first draft of the fee wallet
* add fee wallet to dump
* rename to sequencer vault
* add L1 fee wallet to geth config
* add unit tests
* fix geth linting error
* add a basic integration test
* fix broken integration test
* add test for correct storage slot
* add integration test for fee withdrawal
* fix typo in integration tests
* fix a bug bin integration tests
* Update OVM_SequencerFeeVault.sol
* fix bug in contract tests
* chore: add changeset
* fix bug in contract tests
* build(deps): bump glob-parent from 5.1.1 to 5.1.2 (#1036)
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)
---
updated-dependencies:
- dependency-name: glob-parent
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
* fix: predeploy gasprice oracle (#1039)
* l2geth: delete extra config options
* l2geth: stop using extra config options
* l2geth: more stop using extra config options
* chore: add changeset
* l2geth: add new config for gpo owner
* chore: add changeset
* l2geth: fix tests
* tests: fix build
* l2geth: optimize loops (#1027)
* l2geth: optimize loops
* l2geth: stop ticker when done
* l2geth: don't wait for first tick
* chore: add changeset
* Enable custom tagging of release docker image (#1048)
* ci: enable custom tagging of release docker image
* ci: refactor to add prerelease prefix for secuirty
* doc: typo
* ci: fix indentation issue of canary workflow
* ci: fix typo with GITHUB_SHA
* fix: typo in USE_HARDHAT config (#1023)
* fix: abi encoded tx (#1049)
* contracts: don't double rlp decode
* chore: add changeset
* lint: fix
* deps: update
* linting: cleanup
* feat: contracts: use selector
* fix: contracts: use typescript
* contracts: use interface
* l2geth: bump to go 1.15 (#1058)
* l2geth: bump to go 1.15
* chore: add changeset
* Change monotonicity band-aid code to log warnings not errors (#1060)
* refactor: change monotonicity band-aid code to log warnings not errors
* build: add changeset
* feat(contracts, l2geth): native ETH value support for ovmCALL (#1038)
* feat(contracts): add ovmCALL-types with native value
* add ovmCALLVALUE context
* add ovmBALANCE
* test success and revert cases
* test empty contract case
* chore: lint
* test(integration-tests): ovmCALL-types with value (compiler and wrapper)
* fix ovmDELEGATECALL type, update tests
* add ovmSELFBALANCE
* fix ovmDELEGATECALL jumping to CALL
* chore: lint
* fix(contracts): account for intrinsic gas of OVM_ETH sends
* fix(contracts): merge conflict bug
* fix(contracts): update gas benchmark
* feat(contracts, integration-tests): use new value-compatible compiler
* feat(contracts,l2geth): support value calls in OVM_ECDSAContractAccount
* fix(contracts): ovmDELEGATECALL does not change message context
* feat(contracts): sending value between EOAs
* test(integration-tests): ovmDELEGATECALL preserves ovmCALLVALUE
* test(integration-tests): assert ovmSELFBALANCEs correct
* test(integration-tests): intrinsic gas for eth value calls
* test(integration-tests): update gas values
* chore(contracts): lint
* feat(contracts, l2geth): eth_calls with nonzero value
* chore: minor fixups and comments based on PR feedback
* test(integration-tests): add requested tests from PR reviews
* test(integration-tests): ovmSELFBALANCE is preserved in ovmDELEGATECALLs
* fix(contracts): fix bug where ovmDELEGATECALL could fail if balance was lower than the ovmCALLVALUE
* chore: add changeset
* fix(contracts): update intrinsic gas for worst-case value sends
* chore: address final PR nits/improvements
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* Add erc1271 support to contract account (#1052)
* add ERC1271 support, failing unit tests
* add integration test for isValidSignature
* remove .only
* lint
* add changeset
* clean up 1271 tests and lint
* switch back to using waffle wallet
* lint
* fix import
* feat[contracts]: slightly better account funding for hardhat accounts (rebased) (#1065)
* feat[contracts]: better account funding for hardhat accounts
* add a sleep to avoid any potential problems
* chore: add changeset
* fix: bug with gas estimation in funding step
* fix: limit to 20 accounts max
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* Ensure Sentry is correctly set up for DTL and MR (#1054)
* refactor: add logger and metrics to options for BaseService
* refactor: thread sentryOptions through from message-relayer into BaseService
* refactor: ensure DTL Logger is using Sentry for errors
* style: lint base-service.ts
* refactor: init Sentry on batch-submitter too
* refactor: init Sentry on message-relayer too
* refactor: pass in basic logger to MessageRelayerService
* build: provide changeset
* fix: correct usage of use-sentry boolean config
* refactor: appropriately type loggingOptions
* build: add @sentry/node
* build: add @sentry/node to message-relayer and fix linting issue
* Add more logging information to monotonicity violation logs (#1066)
* refactor: log idx of monotonicity violation from batch
* build: add changeset
* temporarily disable hardhat example tests (#1071)
* fix: monotonicity auto healer (#1070)
* fix: monotonicity auto healer
* add: changeset
* Version Packages (#1053)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Standard token bridge (#988)
* Remove abstract token gateway and deposited token implementations
* Further simplification of bridge contracts
* Standart token bridge and L2 token implementation
* Fix spacing
* Implement case when a bad deposit happens to a nonexistent L1<>L2 token pair
* Use SafeMath in common token bridge accounting
* test(contracts): fix finalizeWithdrawal test
* fix(contracts): use SafeERC20 on token deposits
* Rename OVM_L1ERC20Gateway to OVM_L1ERC20Bridge contract
* Rename iOVM_L1ERC20Gateway to iOVM_L1ERC20Bridge contract
* Cleanup gateway to bridge rename
* Better name for the mapping holding l1->l2 deposit amounts
* Use OZ SafeMath
* Rename local variables in OVM_L2DepositedERC20 from gateway to bridge
* Merge ETH and ERC20 bridge contracts
* Rename OVM_L1ERC20Bridge to OVM_L1StandardBridge and fix tests from merging the ETH and ERC20 bridges
* Better name for iAbs_BaseCrossDomainMessenger -> iOVM_CrossDomainMessenger
* Correct the bounce back of deposit sender and recipient properties
* Remove obsoleted event from OVM_L2DepositedERC20
* chore(contracts): change references from ETHGateway to Bridge
* Fix a linting error
* fix(contracts): add bridge to deployer
* Split off ERC20Bridge interface for the purposes
of being reused in custom ERC20 bridges
* Split off interface natspec definitions
* Draft version of OVM_L2DepositedERC20 splitted into a standard L2 erc20: L2StandardERC20 and
a common L2 bridge: OVM_L2StandardBridge
* style(contracts): define L1_ETH_ADDRESS as constant
* test(integration): update interface to use depositETH
* test(contracts): fix OVM_L1StandardBridge tests
* test(contracts): fix L2 Standard Bridge tests
* test(contracts): lint and remove an obsolete test case
* Fix modifier check to comply with the L2 bridge distinction from L2 token
* Simplify address <> interface casting in bridges
* Ensure natspec comments are correct
also add l1 and l2 token params to WithdrawalInitiated event for consistency
* Fix issues in L1 and L2 bridges to ensure
cross domain messages are sent only between the two bridges
also adjusted withdrawals to send to either finalizeETHWithdrawal or finalizeERC20Withdrawal
depending on which asset is being withdrawn
* Remove AddressManager from the L1 standard bridge
* REVERT ME: instruments cross domain enabled
* fix(contracts): remove Address Manager from L1 Bridge
* feat(contracts): make L2 Standard Bridge a predeploy
* WIP: update deployments for standard bridges
* WIP: update deployments for standard bridges
* l2geth: TEMP log contract calls
* chore(l2geth): replace eth gateway with standard bridge
* fix(contracts): make contract-deployment/config work
* WIP fix(integration): update integration tests for bridge
* Remove ovmEth from L1 Standard bridge as obsoleted
* Separate ERC20 standard implementation from L2 bridge
* Formatting fixes
* chore(l2geth): replace eth gateway with standard bridge
* Revert "REVERT ME: instruments cross domain enabled"
This reverts commit d5bb8f8f67974d0a3e65fc000f08858328a4bbbc.
* fix: lint ts
* Implement EIP-165 in the Standard L2 ERC20 token
Also switch that to be based off the OpenZeppelin default implementation plus mint and burn
Additionally remove the obsoleted iOVM_ERC20
* fix(contracts): add deployment check on bridge proxy
fix(contracts): whitespace
fix(contracts): init bridge implementation with non-zero address
* Remove dependency on Ownable contract for the StandardERC20 token on L2
* fix(contracts): update deployment scripts
* fix: lint
* remove debugging code
* fix: correct rpc get balance slot
* restore l2 cross domain messenger
* fix: lint
* Add a test for a non compliant token deposit
* Only allow EOAs to deposit ETH and ERC20
* Add comments and tests for ERC165 implementation
* Decide against using explicit ETH MOCK address as we're not using it for checks
* Fix linting issues
* Add onlyEOAContract restriction to standard bridge withdrawals
* Update codehashes in L2 Standard bridge
* fix(ops): remove unintentionally added file
* feat(contracts): add expectApproxGasCost function
* fix(integration): proper arrayify input on fundUser
* fix(integration): proper gas value checks
* Revert "Add onlyEOAContract restriction to standard bridge withdrawals"
This reverts commit 2713c06ceb2609e4f13718e1034a4d76210d9758.
* fix(contracts): removed unused expectApproxGasCost for now
* fix(contracts): update OVM_SequencerFeeVault for bridge changes
* lint
* Update deployment for L1 Bridge w/ ChugSplash
* Revert "l2geth: TEMP log contract calls"
This reverts commit 21d42259278449f221bf34605162229b3d9d4fa9.
* Apply suggestions from code review
* Apply suggestions from code review
* fix(contracts): deploy with chugsplash proxy
* fix(contracts): add working bridge and chugsplash proxy deployment
* fix(contracts,integration): 500k gas for depositETH
* comment(contracts): describe failed deposit handling on l2
* Apply suggestions from code review
Co-authored-by: ben-chain <ben@pseudonym.party>
* docs: add changeset
* fix(integration): set working l2 gas amount on funduser
* test(integration): add receive() test
* fix(contracts): reset receive to 1.2MM l2 gas
* test(examples): skip l1-l2 example test for now
* fix(contracts): drop hardcoded gas to 500k in receive()
* fix(contracts): use abi.encodeWithSignature
* fix(contracts): resolve merge conflicts
* feat(integration): add expectApprox for flexible gas testing
* fix(integration): fix failing gas tests
* fix: incorrect l2 gas for deposit
* Update utils.ts
* fix(workflow): disable l1-l2 example until npm imports are fixed
* chore: final round of PR review nits and tests
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* fix: comment out codeowners (#1073)
* fix: use predeploy constant lib for em wrapper (#1075)
* fix: use predeploy constant lib for em wrapper
* chore: add changeset
* fix[l2geth]: off-by-one sometimes breaking replica sync (#1082)
* fix[l2geth]: off-by-one sometimes breaking replica sync
* chore: add changeset
* fix(l2geth): Log 'end of OVM execution' correctly (#1080)
* refactor[contracts]: move account contracts to predeploy folder (#1085)
* refactor[contracts]: move account contracts to predeploy folder
* chore: add changeset
* maintenance[contracts]: rename precompiles test folder to predeploys (#1086)
* fix[bs]: disambiguate generic submission errors (#1051)
* fix[bs]: disambiguate generic submission errors
* add cases for errors
* separate out errors from transaction reverts with reasons
* remove extraneous errors
* WETH deposit and withdraw on OVM_ETH (#1083)
* feat(contracts): add no-op WETH9 functionality to OVM_ETH
* working WETH deposit and withdraw + tests
* add changeset
* address PR feedback
* update WETH9 contract implementation
* add fallback to WETH9
* add fallback and revert withdraw test
* update nit comment
Co-authored-by: ben <ben@pseudonym.party>
* Also move the accounts interface to iOVM/predeploys (#1087)
* refactor[contracts]: move account interface to predeploy folder
* chore: add changeset
* Version Packages (#1089)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: use -z flag for var unset in canary
* Use Eslint instead of Tslint (#1005)
* removed tslint
* forgot to commit files
* made .eslintrc.js consistent for all subdirs and other cleanup
* [removed] includes and files keys from tsconfig.json
* removed file level linting exceptions and added details to line level
* added changeset
* fixed newly introduced linting errors from rebase
* enable json import for batch submitter
* removed ecdsa-coder
* maybe a tsconfig issue?
* Update deploy.ts
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com>
* metrics[batch-submitter]: add new batch submitter metrics (#1074)
* metrics[batch-submitter]: add new batch submitter metrics
* chore: changeset
* account for failed submissions
* Fix canary publishing (#1093)
* ci: fix custom docker tag
* ci: use new env file
* ci: use outputs from previous job
* ci: fix headers of jobs
* ci: inherit canary tag from builder
* feat[ci]: upload logs for sync tests if failure (#1098)
* deploy: goerli 0.4.0 (#1099)
* deployments: goerli 0.4.0 rc
* readme: update
* chore: add changeset
* fix[dtl]: defend against RPC provider missing events (#1084)
* fix[dtl]: defend against RPC provider missing events
* chore: add changeset
* respond to review comments
* better error handling for missing handlers
* deploy: kovan v.4.0 rc (#1101)
* deploy: kovan v0.4.0 rc
* chore: add changeset
* readme: update
* maintenance[monorepo]: first pass update to README (#1106)
* maintenance[monorepo]: first pass update to README
Doing some relatively minor updates to the README just to clean things up a bit.
* replying to review comments
* Move the metric prefix string to a label (#1047)
Added changeset and fixes
Changeset to patch
* fix[smock]: add support for hardhat 2.4.0 (#1112)
* fix[smock]: add support for hardhat 2.4.0
* chore: add changeset
* lint: fix
* build(deps): bump hosted-git-info from 2.8.8 to 2.8.9 (#1064)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)
---
updated-dependencies:
- dependency-name: hosted-git-info
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Misc. small improvements to README (#1115)
* Update README.md
* Update README.md
* fix[dtl]: use the same L2 chain ID everywhere (#1122)
* fix[dtl]: use the same L2 chain ID everywhere
* chore: add changeset
* fix: make sync tests only on workflow dispatch (#1123)
* fix[dtl]: remove old stringification function (#1134)
* fix[dtl]: remove old stringification function
* chore: add changeset
* fix[dtl]: log server errors as ERROR instead of INFO (#1133)
* fix[dtl]: log server errors as ERROR instead of INFO
* chore: add changeset
* Contracts: connectL1Contracts & connectL2Contracts (#713)
* Contracts: connect-contracts
* Trying to resolve build problems
* connect-contracts build working
* Adds artifacts-ovm back to gitignore
* Removes incorrect changes
* Adds copy-artifacts script
* Adds test file (not working yet)
* fix: incorrect contract instantiation
* Improves tests and removes old deployment versions
* Single source of truth for predeploy addresses
* Reverts deployments/README.md
* Makes connect-contracts more DRY
* Adds missing @ethersproject/abstract-signer dependency
* Adds argument evaluation
* Adds L1Contracts and L2Contracts types
* Attempts removing artifacts-ovm again
* Adds webpack config (not working yet)
* build: add artifacts to dist (#776)
* Updates lint rule
* Adds l2 imports
* Fixes dependency tree bug
* Removes webpack stuff
* Fixing package.json issues and adds .DS_Store to gitignore
* Removes test-contracts script
* Reverting script change
* Adds comments
* Adds comment
* Renames deployments folders
* Fixes linting errors
* Generates markdown
* build: add deployments directory to Dockerfiles
* Removes unneeded contracts, improves error handling and tests
* Adds changeset
* yarn.lock
* Removes console.log
* Changes from minor to patch version
* Fixes lint errors
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: prevent overflow in abi encoding (#1135)
* l2geth: prevent overflow in abi encoding to ovm codec tx
* chore: add changeset
* tests: replica syncing (#981)
* [wip] add l2_dtl and replica images
* passing basic dummy tx test
* add erc20 test
* add sync test to ci
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix[relayer]: update exported files list in package.json (#1138)
* fix[relayer]: update exported files
* chore: add changeset
* fix: import path (#1141)
* fix: correct import path for altered contract path
* chore: add changeset
* refactor: improve logging for batch submission timeout scenarios (#1120)
* Add highest L1 and L2 block number Gauge metrics to DTL (#1125)
* build: add prom-client to data-transport-layer
* refactor: thread metrics more carefully through data-transport-layer; add two new metrics
* style: fix some style issues
* refactor: make metrics mandatory
* refactor: move metrics register code to top of file
* style: apply linting
* refactor: move promethesus initialization after express
* refactor: move promBundle call up, provide registry
* build: add changeset
* Improve Watcher ability to find transactions (#1107)
* remove listeners and use loop to find tx receipt
* add yarn ready
* moved filters inside loop
* [added] changeset
* Add minimal vscode settings and extensions (#1109)
* chore: add minimal vscode settings and extensions
* chore: Add "files.trimTrailingWhitespace" to vscode native config
* chore: replace vscode prettier plugin with eslint plugin
* fix[contracts]: remove part of MultiMessageRelayer deployment (#1144)
* fix[contracts]: remove part of MultiMessageRelayer deployment
* chore: add changeset
* Define L1 Starting block via OwnershipTransferred rather than AddressSet (#1129)
* Update service.ts
* Create thirty-years-look.md
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Easy fix for broken watchers (#1121)
* Easy fix for broken watchers
* Ran yarn changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* feat: go packages (#1111)
* go: add utils module
* readme: update
* Version Packages (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* build: add husky pre-commit hook to lint (#1146)
* feat[contracts]: add mainnet deploy script (#1147)
* Add mainnet deploy script
* Update mainnet.sh
* Address PR review feedback
* feat: mainnet contract deployment 0.4.0 (#1148)
* feat: mainnet contract deployment 0.4.0
* feat: deployments readme
* chore: add changeset
* contracts: remove dead contract
* contracts: remove dead config
* tests: fix to not test for old contracts
* feat: `rollup gasPrices` RPC endpoint (#1136)
* feature: l2geth endpoint
* chore: add changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* Adds l2 standard bridge to contracts markdown file (#1151)
* Version Packages (#1150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add more info about our branching strategy to the README (#1114)
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Remove references to OVM_L1ETHGateway in deployments and readme (#1119)
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Elena Gesheva <elena@arenabg.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
Co-authored-by: Rajiv Patel-O'Connor <rajiv.patel.oconnor@gmail.com>
Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Tim Myers <timmyers09@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Annie Ke <annieke8@gmail.com>
Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com>
Co-authored-by: Matt Masurka <m.masurka@gmail.com>
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
Co-authored-by: Alejandro Santander <Palebluedot@gmail.com>
* Re-apply key changes on top of optimism most current develop
* Add docker-compose-replica.yml (#109)
* Create docker-compose-replica.yml
* Add replica service
* Update docker-compose-omgx-replica.yml
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* fix linter; patch gethl2
* configure the deployer correctly
* fix proposer / batch submitter
* update chainIDs
* update rpc test
* Create README_OMGX.md
* upstream - needs more work
* Adds delay to watcher (#1159)
* Adds delay to watcher
* Simplifies delay
* Adds changeset
* Fix wallet test
* Fix deployment test
* Add Python
* Update Dockerfile.omgx_monorepo
* Remove package-lock
* fix: bind dtl functions for missing event codepath (#1161)
* dtl: bind this in L1 missing element error handlers
* dtl: add additional logline
* chore: add changeset
* dtl: add more metrics
* dtl: use counter instead of gauge
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* fix: remove 'editor.formatOnSave' from global settings' (#1163)
* merge conflicts
* Update pre-commit
* Version Packages (#1167)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* minor
* Update pre-commit
* Fix wallet test (#119)
* Fix wallet test
* Fix deployment test
* Add Python
* Update Dockerfile.omgx_monorepo
* Remove package-lock
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Reapply standard changes on top of current develop
* Update package.json
* doc: add notes for releasing new versions with changesets (#1166)
* Bind correct object to method handler in DTL (#1168)
* fix: bind correct object to method handler
* build: add changeset
* Version Packages (#1169)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Fix web wallet
* Fix integration test (#124)
* Fix integration test (#125)
* Fix integration test
* Fix integration test
* Fix wallet_react
* Fix lint test
* Remove package-lock
* Update integration.yml
* Fix wallet deployer
* Collect docker log
* Fix l1-l2-deposit-withdrawal test
* Fix sync test
* Add chainID to deployer config
* make sync tests dispatch only
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Add short contribution section to primary README (#1157)
* Add short contribution section to primary README
* Update README.md
* fix: prevent batch submitter from submitting batches if low on ETH
* build: add changeset
* Eslint ignore the hardhat folder
* Update README.md
* Beginning to add working examples
* hardhart and waffle example tests
* document/check waffle
* test l1-l2 example
* add patch-package
* Update package.json
* build: ensure lint only staged files on commit
* refactor: do not run --fix on lint-staged
* refactor: *.{ts,js} for eslint regex
* l2geth: rollup client explicitly checks for >= 400 errors
* l2geth: sync service retries connection to remote server
* l2geth: test errors returning from remote
* chore: add changeset
* syncservice: nit
* feat[message-relayer]: add easy relay tool
* chore: add changeset
* upkeep[monorepo]: add changeset info to README
* merge conflict squash
* Daily sync up (#137)
* build: ensure lint only staged files on commit
* refactor: do not run --fix on lint-staged
* refactor: *.{ts,js} for eslint regex
* l2geth: rollup client explicitly checks for >= 400 errors
* l2geth: sync service retries connection to remote server
* l2geth: test errors returning from remote
* chore: add changeset
* syncservice: nit
* feat[message-relayer]: add easy relay tool
* chore: add changeset
* upkeep[monorepo]: add changeset info to README
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Kelvin Fichter <kelvin@optimism.io>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* github actions: bump geth CI golang version
* fix(contracts): prevent L2->L1 calls to system contracts
* Update message relayer fast contracts (#139)
* prepare for wallet reorg
* Create yarn.lock
* fix hardhat bug
* merge conflict resolve
* daily sync up (#141)
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* fix(contracts): prevent L2->L1 calls to system contracts
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: ben <ben@pseudonym.party>
* Add Factory contract for creating standard ERC20 tokens
compliant with the standard bridge
* Disallow 0 address for l1 token when creating l2 standard token
* Fix linting issue
* Add deployment script for the L2 token factory
* Fix deploy script OVM_L2StandardTokenFactory constructor params
* Add changeset
* Cleanup deployment script for OVM_L2StandardTokenFactory
and fix a solidity linting error
* refactor(integration): Add clarity to the expectApprox function signature
* fix: skip codechecks for PRs from external repos
* DRAFT move react wallet and the contracts to more clear folders (#138)
* DRAFT move react wallet and the contracts to more clear folders
* merging the axios integration chagnes
* updated the message-relayer-fast contracts
* integrate message-relayer-fast into standard dockers
* Dockerize the message-relayer-fast
* update Readme.md
* remove duplicated contracts - just keep everything in /contracts
* add deploy for fast messenger
* message-relayer-fast testing
* Update serve.sh
* Delete yarn.lock
* Update constants.ts
* Create yarn.lock
* Update constants.ts
* Update function-manipulation.spec.ts
* increase the retries and other minor fixes
* Improved documentation
* fix omgx integration tests
* Update omgx-integration.yml
* integration test remove duplicated tests
* Fix units test configuration
* Update docker-compose-omgx-services.yml
* integration test setup fixes
* fix wallet integration test
* fix for crash on return
* integration tests for `message-relayer-fast`
* Update env.ts
* Autodeploy Token Bridges
* Update wallet contracts
* Update utils.ts
* improve omgx integration tests
* Add address manager address to GH actions for now
Co-authored-by: sahil kashetwar <>
Co-authored-by: Sahil k <sahil@enya.ai>
Co-authored-by: cby3149 <cby3149@outlook.com>
* merge conflicts
* GH actions regular changes
* husky
* Daily sync up (#144)
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* github actions: bump geth CI golang version
* fix(contracts): prevent L2->L1 calls to system contracts
* Add Factory contract for creating standard ERC20 tokens
compliant with the standard bridge
* Disallow 0 address for l1 token when creating l2 standard token
* Fix linting issue
* Add deployment script for the L2 token factory
* Fix deploy script OVM_L2StandardTokenFactory constructor params
* Add changeset
* Cleanup deployment script for OVM_L2StandardTokenFactory
and fix a solidity linting error
* refactor(integration): Add clarity to the expectApprox function signature
* fix: skip codechecks for PRs from external repos
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: ben <ben@pseudonym.party>
Co-authored-by: elenadimitrova <elena@arenabg.com>
Co-authored-by: Reggie Gomez <reggieag@gmail.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* docker: pin to alpine 3.13 for l2geth
A bug has appeared when older versions of Docker are used to build
alpine based images in alpine version 3.14. To prevent this problem
from happening to the users, this PR pins the version to 3.13.
The observed problem is that `make` cannot run any command and
the error message states `Operation not permitted.` Removing
`make` was one way to solve the problem but that would increase
the diff from upstream geth.
See these links for details:
https://github.com/alpinelinux/docker-alpine/issues/182
https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0
* fix: update statement for skipping codechecks
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://kovan.optimism.io npx hardhat set-l2-gasprice \
--l2-gas-price 1
```
This hardcodes the predeploy address of the `OVM_GasPriceOracle` smart
contract and the Owner must be used to do the updating, otherwise the
transaction will revert.
* removed unused functions from core utils
* [added] changeset
* next gen integration tests for the OMGX stack (#149)
* next gen integration tests for the OMGX stack
* finish first pass integration test outline
* move LP tests to the `message-relayer-fast`
* Update omgx-integration.yml
* add more tests to message-relayer-fast
* connect up the .env variables
* hard code URIs
* Update utils.ts
* Update omgx-integration.yml
* fix - should have been 8080
* Update omgx-integration.yml
* which address to use?
* Update omgx-integration.yml
* removing not needed code
* remove superfluous logging code
* Update utils.ts
* Update utils.ts
* additional comments and formatting improvements
* fix: use older changes on tests (#152)
* fix: use older structure
* correct messenger
* LP fees on the correct side
* correct messenger
* rearrange depl order
Co-authored-by: Souradeep Das <dsouradeep2@gmail.com>
* Update README_OMGX.md (#150)
Refactored some changes and added some comments I thought might be helpful for people.
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* tests: re-enable all tests (#155)
* re-enable all tests
* re-enable all tests
* Add solhint to contracts package
* Turn off compiler-version rule in solhint
* Add suggestions by @maurelian
https://github.com/ethereum-optimism/optimism/pull/1033#issuecomment-866146467
* Change solhint output formatting to table
* Disable contract-name-camelcase rule in solhint
* Fix max-line-length linting issues in contracts
* Fix quotes linting issues in contracts
* Remove private-vars-leading-underscore rule in solhint
* Add contracts linting to github action
* Fix for hardhat account balance parsing
* Disable generating the bytecodeHash in hardhat contract artifacts
* Review fixes
* Fix review notes
* Fix smockit for a change in hardhat ^2.4.0
which changes the way it parses errors from returndata
Fix provided by @smartcontracts
* dtl: configurable gas price backend
Adds a new config option `--l1-gas-price-backend` or
`DATA_TRANSPORT_LAYER_L1_GAS_PRICE_BACKEND` that can be set to `l1` or
`l2`. This impacts the behavior of the HTTP endpoint `GET /eth/gasprice`
by changing what is queried to return the L1 gas price. The L1 gas price
is required to compute the L2 fee since the L2 fee consists of
`L1 gas price * L1 gas used + L1 gas price * L2 gas limit`. If the L1
gas price differs too much between different L2 providers, then users
using `eth_estimateGas` may submit transactions with too low of a fee
and be unable to submit transactions to the sequencer.
By configuring the DTL to use L2 as the L1 gas price backend, it will
call the Sequencer's RPC endpoint `rollup_gasPrices` which returns the
L1 and L2 gas prices from the point of view of the sequencer. The L2 gas
price exists in the state, so that will always be the same between the
sequencer and any replicas. The L1 gas price does not live on chain, so
querying for it from the sequencer directly will ensure that users send
transactions with a fee that is large enough.
Also adds eth/gasprice info to README.
* Remove bl wl service (#154)
* replace `bl-wl` with direct calls the `omgx_deployer`
* Update docker-compose-omgx-services.yml
* Update up_local.sh
* Add CORS headers to http servers
* updated frontend to use the two new HTTP servers for the addresses
* update webwallet to work with both local and rinkeby
* Add missing .env variables to GH actions
* re-enable docker tages
* re-enable wallet transaction history
* Update up_local.sh
* Update up_local.sh
* Add flag to omgx_deployer to only serve addresses w/o deploying new contracts
* Update docker-compose-omgx-services.yml
* Add back tagging system and improved reliability of GH actions
* removed commented out service
* add rinkeby token addresses (#161)
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* fix: lint deploy-l2 folder in contracts
* Add AWS integration (#159)
* Add AWS integration
* Remove artifacts
* updated ops_omgx/README.md and added .github/workflows/deploy2aws-integration.yml and .github/workflows/push2aws.yml
* add automated provision and deletion of an ec2 instance for running the integration tests
Co-authored-by: Petar Denev <pdenev@gmail.com>
* fix: update CI to avoid running out of memory
* Version Packages
* ci: release latest image tags on release
* feat: update README to include info about rebasing
* Add op_exporter for sequencer metrics and health endoint
Added metric for sequencer health
Added Dockerfile for op_exporter;
Fixed Dockerfile path
* merge conflicts
* re-comment out the usual GH actions
* feat[integration-tests]: make tests work for prod networks
* chore: add changeset
* Increase client_body_buffer_size for rpc-proxy
Added client_max_body_size to rpc-proxy config
* l2geth: use `hexutil.Big` to prevent overflows
The `RollupClient` decodes the JSON from the DTL as a uint64,
this updates it to be a `big.Int`
Includes a test for the value field that ensures it does not overflow
* ci(contracts): only run codecov if contracts package is modified
In order to skip running the CodeCov job when it isn't relevant, a new job was added to the ts-packges workflow. For a PR, this job identifies all the files modified between the base branch and the tip of the PR branch, and writes to a variable which can be used to decide if subsequent jobs should run.
Github Actions provides an easy method for achieving this at the level of a workflow, but not for specific jobs within a workflow.
* Version Packages
* chore(ci): Skip codecov on push events
* feat: add workflow for running SNX test suite
* go: implement gasprices package
The `gasprices` package implements the logic that updates
L2 gasprices on the Optimistic Ethereum Network.
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* gas-oracle: implement and test
This commit adds the `gas-oracle` which is an offchain entity
that sends transactions to L2 to update the gas price. It must
be configured with a private key as the `OVM_GasPriceOracle`
is owned.
The `gas-oracle` is added to the changesets setup.
Tests are included as well as CI. Dockerizing will happen
in a follow up PR.
* gas-oracle: ci + docker build/publish
Adds a dockerfile for the `gas-oracle` as well as adding it as
a service in the `docker-compose.yaml`. It is not enabled by
default due to memory issues in CI already happening occasionally
where the integration tests are oom killed.
The `gas-oracle` is configured with a key that owns the
`OVM_GasPriceOracle`.
This PR adds the `gas-oracle` to the Github Actions
workflow that is responsible for publishing the docker images.
* Add replica (#169)
* fix: update erc20 deposits (#166)
* fix: update erc20 deposits
* fix: auto default token
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* resolve merge conflicts
* Update docker-compose.yml
* Update docker-compose.yml
* [pull] develop from ethereum-optimism:develop (#164)
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://kovan.optimism.io npx hardhat set-l2-gasprice \
--l2-gas-price 1
```
This hardcodes the predeploy address of the `OVM_GasPriceOracle` smart
contract and the Owner must be used to do the updating, otherwise the
transaction will revert.
* Add op_exporter for sequencer metrics and health endoint
Added metric for sequencer health
Added Dockerfile for op_exporter;
Fixed Dockerfile path
* feat[integration-tests]: make tests work for prod networks
* chore: add changeset
* Increase client_body_buffer_size for rpc-proxy
Added client_max_body_size to rpc-proxy config
* l2geth: use `hexutil.Big` to prevent overflows
The `RollupClient` decodes the JSON from the DTL as a uint64,
this updates it to be a `big.Int`
Includes a test for the value field that ensures it does not overflow
* ci(contracts): only run codecov if contracts package is modified
In order to skip running the CodeCov job when it isn't relevant, a new job was added to the ts-packges workflow. For a PR, this job identifies all the files modified between the base branch and the tip of the PR branch, and writes to a variable which can be used to decide if subsequent jobs should run.
Github Actions provides an easy method for achieving this at the level of a workflow, but not for specific jobs within a workflow.
* Version Packages
* chore(ci): Skip codecov on push events
* feat: add workflow for running SNX test suite
* go: implement gasprices package
The `gasprices` package implements the logic that updates
L2 gasprices on the Optimistic Ethereum Network.
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* gas-oracle: implement and test
This commit adds the `gas-oracle` which is an offchain entity
that sends transactions to L2 to update the gas price. It must
be configured with a private key as the `OVM_GasPriceOracle`
is owned.
The `gas-oracle` is added to the changesets setup.
Tests are included as well as CI. Dockerizing will happen
in a follow up PR.
* gas-oracle: ci + docker build/publish
Adds a dockerfile for the `gas-oracle` as well as adding it as
a service in the `docker-compose.yaml`. It is not enabled by
default due to memory issues in CI already happening occasionally
where the integration tests are oom killed.
The `gas-oracle` is configured with a key that owns the
`OVM_GasPriceOracle`.
This PR adds the `gas-oracle` to the Github Actions
workflow that is responsible for publishing the docker images.
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Ben Wilson <bwilson@optimism.io>
Co-authored-by: Kelvin Fichter <kelvin@optimism.io>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* Update docker-compose.yml
* adding l1-l2 test ecs scheduled task that does verify communication between L1 and L2 and L2 to L1 (#167)
Co-…
* fix[relayer]: update exported files list in package.json (#1138)
* fix[relayer]: update exported files
* chore: add changeset
* fix: import path (#1141)
* fix: correct import path for altered contract path
* chore: add changeset
* refactor: improve logging for batch submission timeout scenarios (#1120)
* Fixed CrossDomainMessenger name (#96)
* Add highest L1 and L2 block number Gauge metrics to DTL (#1125)
* build: add prom-client to data-transport-layer
* refactor: thread metrics more carefully through data-transport-layer; add two new metrics
* style: fix some style issues
* refactor: make metrics mandatory
* refactor: move metrics register code to top of file
* style: apply linting
* refactor: move promethesus initialization after express
* refactor: move promBundle call up, provide registry
* build: add changeset
* Improve Watcher ability to find transactions (#1107)
* remove listeners and use loop to find tx receipt
* add yarn ready
* moved filters inside loop
* [added] changeset
* Add minimal vscode settings and extensions (#1109)
* chore: add minimal vscode settings and extensions
* chore: Add "files.trimTrailingWhitespace" to vscode native config
* chore: replace vscode prettier plugin with eslint plugin
* fix[contracts]: remove part of MultiMessageRelayer deployment (#1144)
* fix[contracts]: remove part of MultiMessageRelayer deployment
* chore: add changeset
* Define L1 Starting block via OwnershipTransferred rather than AddressSet (#1129)
* Update service.ts
* Create thirty-years-look.md
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Easy fix for broken watchers (#1121)
* Easy fix for broken watchers
* Ran yarn changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* feat: go packages (#1111)
* go: add utils module
* readme: update
* Version Packages (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* build: add husky pre-commit hook to lint (#1146)
* feat[contracts]: add mainnet deploy script (#1147)
* Add mainnet deploy script
* Update mainnet.sh
* Address PR review feedback
* feat: mainnet contract deployment 0.4.0 (#1148)
* feat: mainnet contract deployment 0.4.0
* feat: deployments readme
* chore: add changeset
* contracts: remove dead contract
* contracts: remove dead config
* tests: fix to not test for old contracts
* feat: `rollup gasPrices` RPC endpoint (#1136)
* feature: l2geth endpoint
* chore: add changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* Adds l2 standard bridge to contracts markdown file (#1151)
* Version Packages (#1150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add more info about our branching strategy to the README (#1114)
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Remove references to OVM_L1ETHGateway in deployments and readme (#1119)
* Keep the user logged in after changing chain (#99)
* Keep the user logged in after changing chain
* Update Nft.js
* Detect if user is in the wrong chain
Co-authored-by: cby3149 <cby3149@outlook.com>
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Merge conflics resolve (#110)
* wip
* gethl2
* wip
* batch submitter
* core utils
* DTL
* message relayer
* contracts
* wip
* Update service.ts
* DTL
* messaage-relayer
* Update yarn.lock
* final 5 files
* [pull] develop from ethereum-optimism:develop (#91)
* chore: reduce hardhat timeout to 20 seconds (#968)
* fix: force LF line endings for scripts to avoid docker problems on Windows (#974)
* fix: use correct line endings for windows
* chore: add changeset
* refactor[contracts]: Turn ExecutionManagerWrapper into a predeployed contract (#808)
* wip: Started working on L2 contract testing revamp
* test: clean tests for ProxyEOA
* style: clean imports for ProxyEOA tests
* test: port tests for ECDSAContractAccount
* fix tests and add wrapper to dump
* fix: add em wrapper to l2 deploy
* ffix: add comments to wrapper contract
* fix: add more comments
* fix: add smock comment for unbind
* Update packages/smock/src/smockit/binding.ts
* maintenance[contracts]: use dashes in chain container names (#819)
* maintenance: use dashes in chain container names
* chore: add changeset
* feat[contracts]: temporarily disable EOA upgrades (#857)
* feat[contracts]: disable eoa upgrades temporarily
* chore: add changeset
* Update OVM_ProxyEOA.sol
* fix: turn upgrade into a noop
* lint: fix
* feat[contracts]: Update Lib_AddressManager.AddressSet event to speed up data transport layer (#820)
* feat: update and improve AddressSet event
* chore: add changeset
* Update Lib_AddressManager.sol
* Reduce gas costs of deposits (#667)
* Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead
Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger
Fix typo
* Remove sentMessages mapping from L1CrossDomainMessenger storage
and use the nonce to check for existence of replayed transaction
* Refactor out common library function for getting cross domain calldata
* Post rebase fixes
* Use the queueIndex to check the transaction was enqueued
* Fix tests for L1CrossDomainMessenger.replayMessage
Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock
* Lint fixes
* Optimise the resolve calls into the AddressManager lib
* Rename the nonce parameter to be clear
* Update test name
Co-authored-by: ben-chain <ben@pseudonym.party>
* Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils
Co-authored-by: ben-chain <ben@pseudonym.party>
* optimism: bump gaslimit to 10 million #870 (#871)
* optimism: bump gaslimit to 10million
* chore: add changeset
* optimism: bump max gaslimit to 10 mil
* chore: add changeset
* chore: remove unnecessary changeset
* chore: remove unnecessary changeset
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: use correct contract name in tests (#921)
* fix: disable upgradability from ECDSA Account (#885)
* l2geth: remove `SignatureHashType` (#752)
* l2geth: remove tx type
* l2geth: no longer parse type in rollup client
* chore: add changeset
* chore: remove extra sighash params
* fix: do not check txtype in integration tests
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* feat[contracts]: introduce OVM_GasPriceOracle (#912)
* feat[contracts]: congestion price oracle
* chore: add changeset
* contracts: gas price oracle (#917)
* contracts: gas price oracle
* tests: update
* fees: fix tests
* contracts: simplify gas price oracle
* lint: fix
* test: execution price is at the 1st storage slot
* chore: rename predeploy to GasPriceOracle
* chore: rename gas price oracle test name
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: configure max gas limit to 11m (#928)
Uniswap V3 contracts require that, otherwise they throw call exceptions at deployment
* Consolidate Predeploy Addresses (#931)
* added library for predeploy addresses
* refactor tests and other packages to use exported predeploys
* revert library usage in OVM_ECDSAContractAccount
* lint
* added newline
* fixed address typos
Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* chore: remove yarn-error.log and gitignore it (#956)
* feat[contracts]: Replace Lib_RingBuffer with a much simpler Lib_Buffer (#821)
* feat[contracts]: replace Lib_RingBuffer with a simpler Lib_Buffer
* chore: changeset
* test: add tests for Lib_Buffer
* lint: fix
* test: add extra coverage for Lib_Buffer
* Update packages/contracts/contracts/optimistic-ethereum/libraries/utils/Lib_Buffer.sol
Co-authored-by: ben-chain <ben@pseudonym.party>
* add some extra comments
Co-authored-by: ben-chain <ben@pseudonym.party>
* fix(contracts): import predeploys (#982)
* fix(contracts): import predeploys
* fix: lint
* feat: add hardhat deploy instructions to readme (#965)
* feat: add deployment instructions to readme
* Add changeset
* fix style
* Update README.md
* feat: fees v2 (#976)
* l2 geth: new fee logic
* l2 geth: migrate to fees package
* core-utils: new fee scheme
* chore: add changeset
* l2geth: delete dead code
* integration-tests: fix typo
* integration-tests: fixes
* fees: use fee scalar
* lint: fix
* rollup: correct gas payment comparison
* fix(integration-tests): do not hardcode gas price
* core-utils: update with new scheme
* l2geth: refactor rollup oracle
* l2geth: clean up DoEstimateGas
* l2geth: implement latest scheme
* tests: fix up
* lint: fix
* l2geth: better sycn service test
* optimism: rename to TxGasLimit
* fee: fix docstring
* tests: fix
* variables: rename
* l2geth: prevent users from sending txs with too high of a fee
* integration-tests: fix import
* integration-tests: fix type
* integration-tests: fix gas limits
* lint: fix
* l2geth: log error
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* Add static analysis action (#848)
* Add static analysis github action
setup python and install slither
* Add nvmrc file for setting node to v14.17
* Update slither command run to link missing contract packages from monorepo root
* Add steps for installing dependencies
* Add yarn build step to github action
* Enable colour in github action for static analysis
* Disable certain detectors
* Ensure slither does not fail build
* Add instructions on running static analysis to monorepo readme
* build(deps): bump ws from 7.4.4 to 7.4.6 in /ops/docker/hardhat (#987)
Bumps [ws](https://github.com/websockets/ws) from 7.4.4 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.4.4...7.4.6)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix[l2geth]: fix accidental merge conflict (#994)
* feat[message-relayer]: relay tx generator (#952)
* feat[message-relayer]: relay tx generator
* whoops, I burned our infura key
* fix minor bug
* add comments
* add more comments and clean stuff up
* add empty test descriptions
* add tests
* move smock to dev deps
* chore: add changeset
* minor cleanup to merkle tree proof function
* use bignumber math to avoid nested await
* use a better interface
* minor fixes and simplifications
* backwards compatible dtl syncing (#986)
* kovan: fix attempt
* kovan: db fix
* kovan: types are strings from db
* l2geth: parse things as strings
* chore: add changeset
* dtl: also stringify the range query
* geth: dereference
* geth: assign err
* dtl: handle null
* dtl: fix unit tests
* fix[smock]: fix broken call assertions for overloaded functions (#996)
* fix[smock]: fix broken call assertions for overloaded functions
* chore: add changeset
* minor correction and add a test
* add a test for non-overloaded functions
* fix[message-relayer]: fix failing test because of merge with develop (#1000)
* fix[message-relayer]: remove spreadsheet mode (#998)
* fix[message-relayer]: remove spreadsheet mode
* chore: add changeset
* Lower local rollup timestamp refresh (#985)
* update rollup timestamp refresh
* increase refresh time to 5s
* feat: fees v3 (#999)
* core-utils: fee impl v3
* l2geth: fees v3 impl
* integration-tests: update for fees v3
* chore: add changeset
* fix: typo
* integration-tests: fix and generalize
* fees: update fee scalar
* l2geth: check gas in the mempool behind usingovm
* tests: fix up
* l2geth: remove dead var
* truffle: fix config
* fix: remove dead coders (#1001)
* chore: delete dead coders
* chore: add changeset
* dtl: remove dead imports
* core-utils: delete dead tests
* batch-submitter: remove txtype
* chore: add changeset
* docs[message-relayer]: add a README and improve the interface for generating proofs (#1002)
* docs[message-relayer]: add basic docs and clean up an interface
* chore: add changeset
* dtl: log error stack for failed http request (#995)
* dtl: log error stack for failed http request
* chore: add changeset
* Add rpc-proxy service for whitelisting JSON RPC methods to the sequencer. (#945)
* Add healthcheck endpoint for rpc-proxy
Added ethereum-nginx-proxy source
updated README and docker image build
* Check ETH_CALLS_ALLOWED is set, clean up comments, remove old Dockerfile
* Pass additional information across domains via token gateways (#824)
* feat(contracts): add from and data args to L1ERC20Gateway
fix(integration): add gasLimit to fundUser
refactor(contracts): add data to gateway events
add changeset
fix(integration): provide data in outboundTransfer
refactor(contracts): reset Abs_L2TokenGateway to Abs_L2DepositedToken
refactor(contracts): fix mismatched names
* feat[contracts]: add custom gas arg to gateway
fix(contracts): take max of user vs. default gas
* fix(integrations): update ovm-eth function call
* fix(integration): remove unecessary explicit gasLimit
* test(contracts): 32kb transfer, 9MM gas
* fix(contracts): fixup comment, bytes arg last
* fix(integration): args order in integrations
* fix(contracts): remove unused L2 gas arg
* fix(contracts): limit data that can be passed to L2
* fix(integration): better tests for data length
* test: check for error on too large data
* Experimental: specify gaslimit in before hook
* fix(integration): add l2 gas argument
* fix: increase gas on fundUser
* fix(contracts): remove duplicate max size limit
* fix(integration): fine tune gas amounts
* lint
* fix: large data test
* fix(integration): set gas closer to real cost
* fix(contracts): remove unused bridge variables
These variables were the default gas amounts for cross domain messages
* fix(contracts): Reorder args
Place dynamic length args last
* fix(integration): update estimateGas values
* fix(integration): reset eth withdraw estimate to 21000
* fix(integration): update expected gas amount
* fix(integration): reduce gas amount for ETH withdraw
* More consistent style for Constant values (#991)
* chore(contracts): make container addresses be constants
chore(contracts): consistent style for constant vars
* chore(contracts): add internal on predeploy constants
* feat: deployment config for fee oracle contract (#936)
* feat[contracts]: add GasPriceOracle w/o predeploy
Based on #912
* feat[contracts]: congestion price oracle
* chore: add changeset
* contracts: gas price oracle (#917)
* contracts: gas price oracle
* tests: update
* fees: fix tests
* contracts: simplify gas price oracle
* lint: fix
* test: execution price is at the 1st storage slot
* chore: rename predeploy to GasPriceOracle
* chore: rename gas price oracle test name
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* Add an L2 deploy script for gas oracle contract
* Add a kovan deployment artifact
* Add deployment to readme
* Add extra validation & initial execution price
* Update README.md
* Fix execution price logic
* Perform new deployment with final contract
* contracts: better require in ovm gas price oracle
* Deploy L2GasPriceOracle
* Update contract to use new fee logic & rename to gas
* Deploy updated contract
* Fix lint
* gas price oracle: do not restrict gas price
* gas price oracle: new deployment
* tests: delete dead test
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* ops: expose debug namespace (#1007)
* develop merge fixes
* refactor[l2geth]: queue origin type (#975)
* refactor: queueOrigin type
* Convert queueOrigin to uint8 in encode
* Add changeset
* Regenerate json marshall
* style: combine lines
* Add Stringer for QueueOrigin
* Turn QueueOrigin into uint8
* l2geth: gen tx meta fix
* l2geth: gen tx meta fix
* lint
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix(sync-service): prevent underflows (#1015)
* fix(sync-service): prevent underflows
* chore: add changeset
* chore: remove dead confirmation depth
* chore: remove eth1conf depth from rollup config
* test: remove duplicate value in array (#1014)
* ci: tag docker image for canary with abbreviated GITHUB_SHA (#1006)
* ci: tag docker image for canary with abbreviated GITHUB_SHA
* ci: update from 6 bytes to 8 bytes of abbreviation
* refactor: improve logging for transactions being submitted to chain with gasPrice (#1016)
* refactor: improve logging for transactions being submitted to chain with gasPrice
* lint: apply lint autofixes
* dtl: remove stringify from db logic + more overflow protection (#1010)
* dtl: remove stringify from db logic
* l2geth: overflow protection
* dtl: overflow protection
* chore: add changeset
* ci: upload logs for failed integration tests (#1020)
* fix(dtl): improve slow blocking JSON parsing that occurs during l2 sync (#1019)
The use of eth_getBlockRange returns a large response which is very
slow to parse in ethersjs, and can block the event loop for upwards
of multiple seconds.
When this happens, incoming http requests will likely timeout and fail.
Instead, we will parse the incoming http stream directly with the bfj
package, which yields the event loop periodically so that we don't
fail to serve requests.
* fix: lint errors in dtl (#1025)
* fix[dtl]: fix dtl bug breaking verifiers (#1011)
* fix[dtl]: fix dtl bug breaking verifiers
* tweaks so tests pass
* chore: add changeset
* fix: deterministic blockhashes (#1032)
* config: set etherbase
* l2geth: add deterministic clique key
* l2geth: default value
* chore: add changeset
* test: add sync test for deterministic blockhash
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* Version Packages (#978)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* ci: add sync test's own workflow (#1031)
* fix(dtl): incorrect parsing of eth_getBlockRange result (#1037)
* Version Packages (#1045)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: no gas refund (#1043)
* l2geth: remove the gas refund
* chore: add changeset
* refactor[contracts]: remove one-off GasPriceOracle deployment file (#1046)
* refactor[contracts]: remove one-off gpo deployment
* chore: add changeset
* feat[contracts]: introduce new L1ChugSplashProxy contract (#1009)
* feat[contracts]: add L1ChugSplashProxy
* improve comments slightly
* start adding tests
* add more tests
* make the system pausable
* added another test
* add some extra comments
* Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* chore: add changeset
* address review feedback
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* feat[contracts]: add sequencer fee wallet (#1029)
* wip: first draft of the fee wallet
* add fee wallet to dump
* rename to sequencer vault
* add L1 fee wallet to geth config
* add unit tests
* fix geth linting error
* add a basic integration test
* fix broken integration test
* add test for correct storage slot
* add integration test for fee withdrawal
* fix typo in integration tests
* fix a bug bin integration tests
* Update OVM_SequencerFeeVault.sol
* fix bug in contract tests
* chore: add changeset
* fix bug in contract tests
* build(deps): bump glob-parent from 5.1.1 to 5.1.2 (#1036)
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)
---
updated-dependencies:
- dependency-name: glob-parent
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
* fix: predeploy gasprice oracle (#1039)
* l2geth: delete extra config options
* l2geth: stop using extra config options
* l2geth: more stop using extra config options
* chore: add changeset
* l2geth: add new config for gpo owner
* chore: add changeset
* l2geth: fix tests
* tests: fix build
* l2geth: optimize loops (#1027)
* l2geth: optimize loops
* l2geth: stop ticker when done
* l2geth: don't wait for first tick
* chore: add changeset
* Enable custom tagging of release docker image (#1048)
* ci: enable custom tagging of release docker image
* ci: refactor to add prerelease prefix for secuirty
* doc: typo
* ci: fix indentation issue of canary workflow
* ci: fix typo with GITHUB_SHA
* fix: typo in USE_HARDHAT config (#1023)
* fix: abi encoded tx (#1049)
* contracts: don't double rlp decode
* chore: add changeset
* lint: fix
* deps: update
* linting: cleanup
* feat: contracts: use selector
* fix: contracts: use typescript
* contracts: use interface
* l2geth: bump to go 1.15 (#1058)
* l2geth: bump to go 1.15
* chore: add changeset
* Change monotonicity band-aid code to log warnings not errors (#1060)
* refactor: change monotonicity band-aid code to log warnings not errors
* build: add changeset
* feat(contracts, l2geth): native ETH value support for ovmCALL (#1038)
* feat(contracts): add ovmCALL-types with native value
* add ovmCALLVALUE context
* add ovmBALANCE
* test success and revert cases
* test empty contract case
* chore: lint
* test(integration-tests): ovmCALL-types with value (compiler and wrapper)
* fix ovmDELEGATECALL type, update tests
* add ovmSELFBALANCE
* fix ovmDELEGATECALL jumping to CALL
* chore: lint
* fix(contracts): account for intrinsic gas of OVM_ETH sends
* fix(contracts): merge conflict bug
* fix(contracts): update gas benchmark
* feat(contracts, integration-tests): use new value-compatible compiler
* feat(contracts,l2geth): support value calls in OVM_ECDSAContractAccount
* fix(contracts): ovmDELEGATECALL does not change message context
* feat(contracts): sending value between EOAs
* test(integration-tests): ovmDELEGATECALL preserves ovmCALLVALUE
* test(integration-tests): assert ovmSELFBALANCEs correct
* test(integration-tests): intrinsic gas for eth value calls
* test(integration-tests): update gas values
* chore(contracts): lint
* feat(contracts, l2geth): eth_calls with nonzero value
* chore: minor fixups and comments based on PR feedback
* test(integration-tests): add requested tests from PR reviews
* test(integration-tests): ovmSELFBALANCE is preserved in ovmDELEGATECALLs
* fix(contracts): fix bug where ovmDELEGATECALL could fail if balance was lower than the ovmCALLVALUE
* chore: add changeset
* fix(contracts): update intrinsic gas for worst-case value sends
* chore: address final PR nits/improvements
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* Add erc1271 support to contract account (#1052)
* add ERC1271 support, failing unit tests
* add integration test for isValidSignature
* remove .only
* lint
* add changeset
* clean up 1271 tests and lint
* switch back to using waffle wallet
* lint
* fix import
* feat[contracts]: slightly better account funding for hardhat accounts (rebased) (#1065)
* feat[contracts]: better account funding for hardhat accounts
* add a sleep to avoid any potential problems
* chore: add changeset
* fix: bug with gas estimation in funding step
* fix: limit to 20 accounts max
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* Ensure Sentry is correctly set up for DTL and MR (#1054)
* refactor: add logger and metrics to options for BaseService
* refactor: thread sentryOptions through from message-relayer into BaseService
* refactor: ensure DTL Logger is using Sentry for errors
* style: lint base-service.ts
* refactor: init Sentry on batch-submitter too
* refactor: init Sentry on message-relayer too
* refactor: pass in basic logger to MessageRelayerService
* build: provide changeset
* fix: correct usage of use-sentry boolean config
* refactor: appropriately type loggingOptions
* build: add @sentry/node
* build: add @sentry/node to message-relayer and fix linting issue
* Add more logging information to monotonicity violation logs (#1066)
* refactor: log idx of monotonicity violation from batch
* build: add changeset
* temporarily disable hardhat example tests (#1071)
* fix: monotonicity auto healer (#1070)
* fix: monotonicity auto healer
* add: changeset
* Version Packages (#1053)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Standard token bridge (#988)
* Remove abstract token gateway and deposited token implementations
* Further simplification of bridge contracts
* Standart token bridge and L2 token implementation
* Fix spacing
* Implement case when a bad deposit happens to a nonexistent L1<>L2 token pair
* Use SafeMath in common token bridge accounting
* test(contracts): fix finalizeWithdrawal test
* fix(contracts): use SafeERC20 on token deposits
* Rename OVM_L1ERC20Gateway to OVM_L1ERC20Bridge contract
* Rename iOVM_L1ERC20Gateway to iOVM_L1ERC20Bridge contract
* Cleanup gateway to bridge rename
* Better name for the mapping holding l1->l2 deposit amounts
* Use OZ SafeMath
* Rename local variables in OVM_L2DepositedERC20 from gateway to bridge
* Merge ETH and ERC20 bridge contracts
* Rename OVM_L1ERC20Bridge to OVM_L1StandardBridge and fix tests from merging the ETH and ERC20 bridges
* Better name for iAbs_BaseCrossDomainMessenger -> iOVM_CrossDomainMessenger
* Correct the bounce back of deposit sender and recipient properties
* Remove obsoleted event from OVM_L2DepositedERC20
* chore(contracts): change references from ETHGateway to Bridge
* Fix a linting error
* fix(contracts): add bridge to deployer
* Split off ERC20Bridge interface for the purposes
of being reused in custom ERC20 bridges
* Split off interface natspec definitions
* Draft version of OVM_L2DepositedERC20 splitted into a standard L2 erc20: L2StandardERC20 and
a common L2 bridge: OVM_L2StandardBridge
* style(contracts): define L1_ETH_ADDRESS as constant
* test(integration): update interface to use depositETH
* test(contracts): fix OVM_L1StandardBridge tests
* test(contracts): fix L2 Standard Bridge tests
* test(contracts): lint and remove an obsolete test case
* Fix modifier check to comply with the L2 bridge distinction from L2 token
* Simplify address <> interface casting in bridges
* Ensure natspec comments are correct
also add l1 and l2 token params to WithdrawalInitiated event for consistency
* Fix issues in L1 and L2 bridges to ensure
cross domain messages are sent only between the two bridges
also adjusted withdrawals to send to either finalizeETHWithdrawal or finalizeERC20Withdrawal
depending on which asset is being withdrawn
* Remove AddressManager from the L1 standard bridge
* REVERT ME: instruments cross domain enabled
* fix(contracts): remove Address Manager from L1 Bridge
* feat(contracts): make L2 Standard Bridge a predeploy
* WIP: update deployments for standard bridges
* WIP: update deployments for standard bridges
* l2geth: TEMP log contract calls
* chore(l2geth): replace eth gateway with standard bridge
* fix(contracts): make contract-deployment/config work
* WIP fix(integration): update integration tests for bridge
* Remove ovmEth from L1 Standard bridge as obsoleted
* Separate ERC20 standard implementation from L2 bridge
* Formatting fixes
* chore(l2geth): replace eth gateway with standard bridge
* Revert "REVERT ME: instruments cross domain enabled"
This reverts commit d5bb8f8f67974d0a3e65fc000f08858328a4bbbc.
* fix: lint ts
* Implement EIP-165 in the Standard L2 ERC20 token
Also switch that to be based off the OpenZeppelin default implementation plus mint and burn
Additionally remove the obsoleted iOVM_ERC20
* fix(contracts): add deployment check on bridge proxy
fix(contracts): whitespace
fix(contracts): init bridge implementation with non-zero address
* Remove dependency on Ownable contract for the StandardERC20 token on L2
* fix(contracts): update deployment scripts
* fix: lint
* remove debugging code
* fix: correct rpc get balance slot
* restore l2 cross domain messenger
* fix: lint
* Add a test for a non compliant token deposit
* Only allow EOAs to deposit ETH and ERC20
* Add comments and tests for ERC165 implementation
* Decide against using explicit ETH MOCK address as we're not using it for checks
* Fix linting issues
* Add onlyEOAContract restriction to standard bridge withdrawals
* Update codehashes in L2 Standard bridge
* fix(ops): remove unintentionally added file
* feat(contracts): add expectApproxGasCost function
* fix(integration): proper arrayify input on fundUser
* fix(integration): proper gas value checks
* Revert "Add onlyEOAContract restriction to standard bridge withdrawals"
This reverts commit 2713c06ceb2609e4f13718e1034a4d76210d9758.
* fix(contracts): removed unused expectApproxGasCost for now
* fix(contracts): update OVM_SequencerFeeVault for bridge changes
* lint
* Update deployment for L1 Bridge w/ ChugSplash
* Revert "l2geth: TEMP log contract calls"
This reverts commit 21d42259278449f221bf34605162229b3d9d4fa9.
* Apply suggestions from code review
* Apply suggestions from code review
* fix(contracts): deploy with chugsplash proxy
* fix(contracts): add working bridge and chugsplash proxy deployment
* fix(contracts,integration): 500k gas for depositETH
* comment(contracts): describe failed deposit handling on l2
* Apply suggestions from code review
Co-authored-by: ben-chain <ben@pseudonym.party>
* docs: add changeset
* fix(integration): set working l2 gas amount on funduser
* test(integration): add receive() test
* fix(contracts): reset receive to 1.2MM l2 gas
* test(examples): skip l1-l2 example test for now
* fix(contracts): drop hardcoded gas to 500k in receive()
* fix(contracts): use abi.encodeWithSignature
* fix(contracts): resolve merge conflicts
* feat(integration): add expectApprox for flexible gas testing
* fix(integration): fix failing gas tests
* fix: incorrect l2 gas for deposit
* Update utils.ts
* fix(workflow): disable l1-l2 example until npm imports are fixed
* chore: final round of PR review nits and tests
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* fix: comment out codeowners (#1073)
* fix: use predeploy constant lib for em wrapper (#1075)
* fix: use predeploy constant lib for em wrapper
* chore: add changeset
* fix[l2geth]: off-by-one sometimes breaking replica sync (#1082)
* fix[l2geth]: off-by-one sometimes breaking replica sync
* chore: add changeset
* fix(l2geth): Log 'end of OVM execution' correctly (#1080)
* refactor[contracts]: move account contracts to predeploy folder (#1085)
* refactor[contracts]: move account contracts to predeploy folder
* chore: add changeset
* maintenance[contracts]: rename precompiles test folder to predeploys (#1086)
* fix[bs]: disambiguate generic submission errors (#1051)
* fix[bs]: disambiguate generic submission errors
* add cases for errors
* separate out errors from transaction reverts with reasons
* remove extraneous errors
* WETH deposit and withdraw on OVM_ETH (#1083)
* feat(contracts): add no-op WETH9 functionality to OVM_ETH
* working WETH deposit and withdraw + tests
* add changeset
* address PR feedback
* update WETH9 contract implementation
* add fallback to WETH9
* add fallback and revert withdraw test
* update nit comment
Co-authored-by: ben <ben@pseudonym.party>
* Also move the accounts interface to iOVM/predeploys (#1087)
* refactor[contracts]: move account interface to predeploy folder
* chore: add changeset
* Version Packages (#1089)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: use -z flag for var unset in canary
* Use Eslint instead of Tslint (#1005)
* removed tslint
* forgot to commit files
* made .eslintrc.js consistent for all subdirs and other cleanup
* [removed] includes and files keys from tsconfig.json
* removed file level linting exceptions and added details to line level
* added changeset
* fixed newly introduced linting errors from rebase
* enable json import for batch submitter
* removed ecdsa-coder
* maybe a tsconfig issue?
* Update deploy.ts
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com>
* metrics[batch-submitter]: add new batch submitter metrics (#1074)
* metrics[batch-submitter]: add new batch submitter metrics
* chore: changeset
* account for failed submissions
* Fix canary publishing (#1093)
* ci: fix custom docker tag
* ci: use new env file
* ci: use outputs from previous job
* ci: fix headers of jobs
* ci: inherit canary tag from builder
* feat[ci]: upload logs for sync tests if failure (#1098)
* deploy: goerli 0.4.0 (#1099)
* deployments: goerli 0.4.0 rc
* readme: update
* chore: add changeset
* fix[dtl]: defend against RPC provider missing events (#1084)
* fix[dtl]: defend against RPC provider missing events
* chore: add changeset
* respond to review comments
* better error handling for missing handlers
* deploy: kovan v.4.0 rc (#1101)
* deploy: kovan v0.4.0 rc
* chore: add changeset
* readme: update
* maintenance[monorepo]: first pass update to README (#1106)
* maintenance[monorepo]: first pass update to README
Doing some relatively minor updates to the README just to clean things up a bit.
* replying to review comments
* Move the metric prefix string to a label (#1047)
Added changeset and fixes
Changeset to patch
* fix[smock]: add support for hardhat 2.4.0 (#1112)
* fix[smock]: add support for hardhat 2.4.0
* chore: add changeset
* lint: fix
* build(deps): bump hosted-git-info from 2.8.8 to 2.8.9 (#1064)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)
---
updated-dependencies:
- dependency-name: hosted-git-info
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Misc. small improvements to README (#1115)
* Update README.md
* Update README.md
* fix[dtl]: use the same L2 chain ID everywhere (#1122)
* fix[dtl]: use the same L2 chain ID everywhere
* chore: add changeset
* fix: make sync tests only on workflow dispatch (#1123)
* fix[dtl]: remove old stringification function (#1134)
* fix[dtl]: remove old stringification function
* chore: add changeset
* fix[dtl]: log server errors as ERROR instead of INFO (#1133)
* fix[dtl]: log server errors as ERROR instead of INFO
* chore: add changeset
* Contracts: connectL1Contracts & connectL2Contracts (#713)
* Contracts: connect-contracts
* Trying to resolve build problems
* connect-contracts build working
* Adds artifacts-ovm back to gitignore
* Removes incorrect changes
* Adds copy-artifacts script
* Adds test file (not working yet)
* fix: incorrect contract instantiation
* Improves tests and removes old deployment versions
* Single source of truth for predeploy addresses
* Reverts deployments/README.md
* Makes connect-contracts more DRY
* Adds missing @ethersproject/abstract-signer dependency
* Adds argument evaluation
* Adds L1Contracts and L2Contracts types
* Attempts removing artifacts-ovm again
* Adds webpack config (not working yet)
* build: add artifacts to dist (#776)
* Updates lint rule
* Adds l2 imports
* Fixes dependency tree bug
* Removes webpack stuff
* Fixing package.json issues and adds .DS_Store to gitignore
* Removes test-contracts script
* Reverting script change
* Adds comments
* Adds comment
* Renames deployments folders
* Fixes linting errors
* Generates markdown
* build: add deployments directory to Dockerfiles
* Removes unneeded contracts, improves error handling and tests
* Adds changeset
* yarn.lock
* Removes console.log
* Changes from minor to patch version
* Fixes lint errors
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: prevent overflow in abi encoding (#1135)
* l2geth: prevent overflow in abi encoding to ovm codec tx
* chore: add changeset
* tests: replica syncing (#981)
* [wip] add l2_dtl and replica images
* passing basic dummy tx test
* add erc20 test
* add sync test to ci
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix[relayer]: update exported files list in package.json (#1138)
* fix[relayer]: update exported files
* chore: add changeset
* fix: import path (#1141)
* fix: correct import path for altered contract path
* chore: add changeset
* refactor: improve logging for batch submission timeout scenarios (#1120)
* Add highest L1 and L2 block number Gauge metrics to DTL (#1125)
* build: add prom-client to data-transport-layer
* refactor: thread metrics more carefully through data-transport-layer; add two new metrics
* style: fix some style issues
* refactor: make metrics mandatory
* refactor: move metrics register code to top of file
* style: apply linting
* refactor: move promethesus initialization after express
* refactor: move promBundle call up, provide registry
* build: add changeset
* Improve Watcher ability to find transactions (#1107)
* remove listeners and use loop to find tx receipt
* add yarn ready
* moved filters inside loop
* [added] changeset
* Add minimal vscode settings and extensions (#1109)
* chore: add minimal vscode settings and extensions
* chore: Add "files.trimTrailingWhitespace" to vscode native config
* chore: replace vscode prettier plugin with eslint plugin
* fix[contracts]: remove part of MultiMessageRelayer deployment (#1144)
* fix[contracts]: remove part of MultiMessageRelayer deployment
* chore: add changeset
* Define L1 Starting block via OwnershipTransferred rather than AddressSet (#1129)
* Update service.ts
* Create thirty-years-look.md
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Easy fix for broken watchers (#1121)
* Easy fix for broken watchers
* Ran yarn changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* feat: go packages (#1111)
* go: add utils module
* readme: update
* Version Packages (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* build: add husky pre-commit hook to lint (#1146)
* feat[contracts]: add mainnet deploy script (#1147)
* Add mainnet deploy script
* Update mainnet.sh
* Address PR review feedback
* feat: mainnet contract deployment 0.4.0 (#1148)
* feat: mainnet contract deployment 0.4.0
* feat: deployments readme
* chore: add changeset
* contracts: remove dead contract
* contracts: remove dead config
* tests: fix to not test for old contracts
* feat: `rollup gasPrices` RPC endpoint (#1136)
* feature: l2geth endpoint
* chore: add changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* Adds l2 standard bridge to contracts markdown file (#1151)
* Version Packages (#1150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add more info about our branching strategy to the README (#1114)
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Remove references to OVM_L1ETHGateway in deployments and readme (#1119)
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Elena Gesheva <elena@arenabg.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
Co-authored-by: Rajiv Patel-O'Connor <rajiv.patel.oconnor@gmail.com>
Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Tim Myers <timmyers09@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Annie Ke <annieke8@gmail.com>
Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com>
Co-authored-by: Matt Masurka <m.masurka@gmail.com>
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
Co-authored-by: Alejandro Santander <Palebluedot@gmail.com>
* Re-apply key changes on top of optimism most current develop
* Add docker-compose-replica.yml (#109)
* Create docker-compose-replica.yml
* Add replica service
* Update docker-compose-omgx-replica.yml
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* fix linter; patch gethl2
* configure the deployer correctly
* fix proposer / batch submitter
* update chainIDs
* update rpc test
* Create README_OMGX.md
* upstream - needs more work
* Adds delay to watcher (#1159)
* Adds delay to watcher
* Simplifies delay
* Adds changeset
* Fix wallet test
* Fix deployment test
* Add Python
* Update Dockerfile.omgx_monorepo
* Remove package-lock
* fix: bind dtl functions for missing event codepath (#1161)
* dtl: bind this in L1 missing element error handlers
* dtl: add additional logline
* chore: add changeset
* dtl: add more metrics
* dtl: use counter instead of gauge
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* fix: remove 'editor.formatOnSave' from global settings' (#1163)
* merge conflicts
* Update pre-commit
* Version Packages (#1167)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* minor
* Update pre-commit
* Fix wallet test (#119)
* Fix wallet test
* Fix deployment test
* Add Python
* Update Dockerfile.omgx_monorepo
* Remove package-lock
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Reapply standard changes on top of current develop
* Update package.json
* doc: add notes for releasing new versions with changesets (#1166)
* Bind correct object to method handler in DTL (#1168)
* fix: bind correct object to method handler
* build: add changeset
* Version Packages (#1169)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Fix web wallet
* Fix integration test (#124)
* Fix integration test (#125)
* Fix integration test
* Fix integration test
* Fix wallet_react
* Fix lint test
* Remove package-lock
* Update integration.yml
* Fix wallet deployer
* Collect docker log
* Fix l1-l2-deposit-withdrawal test
* Fix sync test
* Add chainID to deployer config
* make sync tests dispatch only
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Add short contribution section to primary README (#1157)
* Add short contribution section to primary README
* Update README.md
* fix: prevent batch submitter from submitting batches if low on ETH
* build: add changeset
* Eslint ignore the hardhat folder
* Update README.md
* Beginning to add working examples
* hardhart and waffle example tests
* document/check waffle
* test l1-l2 example
* add patch-package
* Update package.json
* build: ensure lint only staged files on commit
* refactor: do not run --fix on lint-staged
* refactor: *.{ts,js} for eslint regex
* l2geth: rollup client explicitly checks for >= 400 errors
* l2geth: sync service retries connection to remote server
* l2geth: test errors returning from remote
* chore: add changeset
* syncservice: nit
* feat[message-relayer]: add easy relay tool
* chore: add changeset
* upkeep[monorepo]: add changeset info to README
* merge conflict squash
* Daily sync up (#137)
* build: ensure lint only staged files on commit
* refactor: do not run --fix on lint-staged
* refactor: *.{ts,js} for eslint regex
* l2geth: rollup client explicitly checks for >= 400 errors
* l2geth: sync service retries connection to remote server
* l2geth: test errors returning from remote
* chore: add changeset
* syncservice: nit
* feat[message-relayer]: add easy relay tool
* chore: add changeset
* upkeep[monorepo]: add changeset info to README
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Kelvin Fichter <kelvin@optimism.io>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* github actions: bump geth CI golang version
* fix(contracts): prevent L2->L1 calls to system contracts
* Update message relayer fast contracts (#139)
* prepare for wallet reorg
* Create yarn.lock
* fix hardhat bug
* merge conflict resolve
* daily sync up (#141)
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* fix(contracts): prevent L2->L1 calls to system contracts
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: ben <ben@pseudonym.party>
* Add Factory contract for creating standard ERC20 tokens
compliant with the standard bridge
* Disallow 0 address for l1 token when creating l2 standard token
* Fix linting issue
* Add deployment script for the L2 token factory
* Fix deploy script OVM_L2StandardTokenFactory constructor params
* Add changeset
* Cleanup deployment script for OVM_L2StandardTokenFactory
and fix a solidity linting error
* refactor(integration): Add clarity to the expectApprox function signature
* fix: skip codechecks for PRs from external repos
* DRAFT move react wallet and the contracts to more clear folders (#138)
* DRAFT move react wallet and the contracts to more clear folders
* merging the axios integration chagnes
* updated the message-relayer-fast contracts
* integrate message-relayer-fast into standard dockers
* Dockerize the message-relayer-fast
* update Readme.md
* remove duplicated contracts - just keep everything in /contracts
* add deploy for fast messenger
* message-relayer-fast testing
* Update serve.sh
* Delete yarn.lock
* Update constants.ts
* Create yarn.lock
* Update constants.ts
* Update function-manipulation.spec.ts
* increase the retries and other minor fixes
* Improved documentation
* fix omgx integration tests
* Update omgx-integration.yml
* integration test remove duplicated tests
* Fix units test configuration
* Update docker-compose-omgx-services.yml
* integration test setup fixes
* fix wallet integration test
* fix for crash on return
* integration tests for `message-relayer-fast`
* Update env.ts
* Autodeploy Token Bridges
* Update wallet contracts
* Update utils.ts
* improve omgx integration tests
* Add address manager address to GH actions for now
Co-authored-by: sahil kashetwar <>
Co-authored-by: Sahil k <sahil@enya.ai>
Co-authored-by: cby3149 <cby3149@outlook.com>
* merge conflicts
* GH actions regular changes
* husky
* Daily sync up (#144)
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* github actions: bump geth CI golang version
* fix(contracts): prevent L2->L1 calls to system contracts
* Add Factory contract for creating standard ERC20 tokens
compliant with the standard bridge
* Disallow 0 address for l1 token when creating l2 standard token
* Fix linting issue
* Add deployment script for the L2 token factory
* Fix deploy script OVM_L2StandardTokenFactory constructor params
* Add changeset
* Cleanup deployment script for OVM_L2StandardTokenFactory
and fix a solidity linting error
* refactor(integration): Add clarity to the expectApprox function signature
* fix: skip codechecks for PRs from external repos
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: ben <ben@pseudonym.party>
Co-authored-by: elenadimitrova <elena@arenabg.com>
Co-authored-by: Reggie Gomez <reggieag@gmail.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* docker: pin to alpine 3.13 for l2geth
A bug has appeared when older versions of Docker are used to build
alpine based images in alpine version 3.14. To prevent this problem
from happening to the users, this PR pins the version to 3.13.
The observed problem is that `make` cannot run any command and
the error message states `Operation not permitted.` Removing
`make` was one way to solve the problem but that would increase
the diff from upstream geth.
See these links for details:
https://github.com/alpinelinux/docker-alpine/issues/182
https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0
* fix: update statement for skipping codechecks
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://kovan.optimism.io npx hardhat set-l2-gasprice \
--l2-gas-price 1
```
This hardcodes the predeploy address of the `OVM_GasPriceOracle` smart
contract and the Owner must be used to do the updating, otherwise the
transaction will revert.
* removed unused functions from core utils
* [added] changeset
* next gen integration tests for the OMGX stack (#149)
* next gen integration tests for the OMGX stack
* finish first pass integration test outline
* move LP tests to the `message-relayer-fast`
* Update omgx-integration.yml
* add more tests to message-relayer-fast
* connect up the .env variables
* hard code URIs
* Update utils.ts
* Update omgx-integration.yml
* fix - should have been 8080
* Update omgx-integration.yml
* which address to use?
* Update omgx-integration.yml
* removing not needed code
* remove superfluous logging code
* Update utils.ts
* Update utils.ts
* additional comments and formatting improvements
* fix: use older changes on tests (#152)
* fix: use older structure
* correct messenger
* LP fees on the correct side
* correct messenger
* rearrange depl order
Co-authored-by: Souradeep Das <dsouradeep2@gmail.com>
* Update README_OMGX.md (#150)
Refactored some changes and added some comments I thought might be helpful for people.
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* tests: re-enable all tests (#155)
* re-enable all tests
* re-enable all tests
* Add solhint to contracts package
* Turn off compiler-version rule in solhint
* Add suggestions by @maurelian
https://github.com/ethereum-optimism/optimism/pull/1033#issuecomment-866146467
* Change solhint output formatting to table
* Disable contract-name-camelcase rule in solhint
* Fix max-line-length linting issues in contracts
* Fix quotes linting issues in contracts
* Remove private-vars-leading-underscore rule in solhint
* Add contracts linting to github action
* Fix for hardhat account balance parsing
* Disable generating the bytecodeHash in hardhat contract artifacts
* Review fixes
* Fix review notes
* Fix smockit for a change in hardhat ^2.4.0
which changes the way it parses errors from returndata
Fix provided by @smartcontracts
* dtl: configurable gas price backend
Adds a new config option `--l1-gas-price-backend` or
`DATA_TRANSPORT_LAYER_L1_GAS_PRICE_BACKEND` that can be set to `l1` or
`l2`. This impacts the behavior of the HTTP endpoint `GET /eth/gasprice`
by changing what is queried to return the L1 gas price. The L1 gas price
is required to compute the L2 fee since the L2 fee consists of
`L1 gas price * L1 gas used + L1 gas price * L2 gas limit`. If the L1
gas price differs too much between different L2 providers, then users
using `eth_estimateGas` may submit transactions with too low of a fee
and be unable to submit transactions to the sequencer.
By configuring the DTL to use L2 as the L1 gas price backend, it will
call the Sequencer's RPC endpoint `rollup_gasPrices` which returns the
L1 and L2 gas prices from the point of view of the sequencer. The L2 gas
price exists in the state, so that will always be the same between the
sequencer and any replicas. The L1 gas price does not live on chain, so
querying for it from the sequencer directly will ensure that users send
transactions with a fee that is large enough.
Also adds eth/gasprice info to README.
* Remove bl wl service (#154)
* replace `bl-wl` with direct calls the `omgx_deployer`
* Update docker-compose-omgx-services.yml
* Update up_local.sh
* Add CORS headers to http servers
* updated frontend to use the two new HTTP servers for the addresses
* update webwallet to work with both local and rinkeby
* Add missing .env variables to GH actions
* re-enable docker tages
* re-enable wallet transaction history
* Update up_local.sh
* Update up_local.sh
* Add flag to omgx_deployer to only serve addresses w/o deploying new contracts
* Update docker-compose-omgx-services.yml
* Add back tagging system and improved reliability of GH actions
* removed commented out service
* add rinkeby token addresses (#161)
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* fix: lint deploy-l2 folder in contracts
* Add AWS integration (#159)
* Add AWS integration
* Remove artifacts
* updated ops_omgx/README.md and added .github/workflows/deploy2aws-integration.yml and .github/workflows/push2aws.yml
* add automated provision and deletion of an ec2 instance for running the integration tests
Co-authored-by: Petar Denev <pdenev@gmail.com>
* fix: update CI to avoid running out of memory
* Version Packages
* ci: release latest image tags on release
* feat: update README to include info about rebasing
* Add op_exporter for sequencer metrics and health endoint
Added metric for sequencer health
Added Dockerfile for op_exporter;
Fixed Dockerfile path
* merge conflicts
* re-comment out the usual GH actions
* feat[integration-tests]: make tests work for prod networks
* chore: add changeset
* Increase client_body_buffer_size for rpc-proxy
Added client_max_body_size to rpc-proxy config
* l2geth: use `hexutil.Big` to prevent overflows
The `RollupClient` decodes the JSON from the DTL as a uint64,
this updates it to be a `big.Int`
Includes a test for the value field that ensures it does not overflow
* ci(contracts): only run codecov if contracts package is modified
In order to skip running the CodeCov job when it isn't relevant, a new job was added to the ts-packges workflow. For a PR, this job identifies all the files modified between the base branch and the tip of the PR branch, and writes to a variable which can be used to decide if subsequent jobs should run.
Github Actions provides an easy method for achieving this at the level of a workflow, but not for specific jobs within a workflow.
* Version Packages
* chore(ci): Skip codecov on push events
* feat: add workflow for running SNX test suite
* go: implement gasprices package
The `gasprices` package implements the logic that updates
L2 gasprices on the Optimistic Ethereum Network.
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* gas-oracle: implement and test
This commit adds the `gas-oracle` which is an offchain entity
that sends transactions to L2 to update the gas price. It must
be configured with a private key as the `OVM_GasPriceOracle`
is owned.
The `gas-oracle` is added to the changesets setup.
Tests are included as well as CI. Dockerizing will happen
in a follow up PR.
* gas-oracle: ci + docker build/publish
Adds a dockerfile for the `gas-oracle` as well as adding it as
a service in the `docker-compose.yaml`. It is not enabled by
default due to memory issues in CI already happening occasionally
where the integration tests are oom killed.
The `gas-oracle` is configured with a key that owns the
`OVM_GasPriceOracle`.
This PR adds the `gas-oracle` to the Github Actions
workflow that is responsible for publishing the docker images.
* Add replica (#169)
* fix: update erc20 deposits (#166)
* fix: update erc20 deposits
* fix: auto default token
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* resolve merge conflicts
* Update docker-compose.yml
* Update docker-compose.yml
* [pull] develop from ethereum-optimism:develop (#164)
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://kovan.optimism.io npx hardhat set-l2-gasprice \
--l2-gas-price 1
```
This hardcodes the predeploy address of the `OVM_GasPriceOracle` smart
contract and the Owner must be used to do the updating, otherwise the
transaction will revert.
* Add op_exporter for sequencer metrics and health endoint
Added metric for sequencer health
Added Dockerfile for op_exporter;
Fixed Dockerfile path
* feat[integration-tests]: make tests work for prod networks
* chore: add changeset
* Increase client_body_buffer_size for rpc-proxy
Added client_max_body_size to rpc-proxy config
* l2geth: use `hexutil.Big` to prevent overflows
The `RollupClient` decodes the JSON from the DTL as a uint64,
this updates it to be a `big.Int`
Includes a test for the value field that ensures it does not overflow
* ci(contracts): only run codecov if contracts package is modified
In order to skip running the CodeCov job when it isn't relevant, a new job was added to the ts-packges workflow. For a PR, this job identifies all the files modified between the base branch and the tip of the PR branch, and writes to a variable which can be used to decide if subsequent jobs should run.
Github Actions provides an easy method for achieving this at the level of a workflow, but not for specific jobs within a workflow.
* Version Packages
* chore(ci): Skip codecov on push events
* feat: add workflow for running SNX test suite
* go: implement gasprices package
The `gasprices` package implements the logic that updates
L2 gasprices on the Optimistic Ethereum Network.
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* gas-oracle: implement and test
This commit adds the `gas-oracle` which is an offchain entity
that sends transactions to L2 to update the gas price. It must
be configured with a private key as the `OVM_GasPriceOracle`
is owned.
The `gas-oracle` is added to the changesets setup.
Tests are included as well as CI. Dockerizing will happen
in a follow up PR.
* gas-oracle: ci + docker build/publish
Adds a dockerfile for the `gas-oracle` as well as adding it as
a service in the `docker-compose.yaml`. It is not enabled by
default due to memory issues in CI already happening occasionally
where the integration tests are oom killed.
The `gas-oracle` is configured with a key that owns the
`OVM_GasPriceOracle`.
This PR adds the `gas-oracle` to the Github Actions
workflow that is responsible for publishing the docker images.
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Ben Wilson <bwilson@optimism.io>
Co-authored-by: Kelvin Fichter <kelvin@optimism.io>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* Update docker-compose.yml
* adding l1-l2 test ecs scheduled task that does verify communication between L1 and L2 and L2 to L1 (#167)
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Update docker-compose.yml
* daily update (#170)
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 …
* fix: import path (#1141)
* fix: correct import path for altered contract path
* chore: add changeset
* refactor: improve logging for batch submission timeout scenarios (#1120)
* Fixed CrossDomainMessenger name (#96)
* Add highest L1 and L2 block number Gauge metrics to DTL (#1125)
* build: add prom-client to data-transport-layer
* refactor: thread metrics more carefully through data-transport-layer; add two new metrics
* style: fix some style issues
* refactor: make metrics mandatory
* refactor: move metrics register code to top of file
* style: apply linting
* refactor: move promethesus initialization after express
* refactor: move promBundle call up, provide registry
* build: add changeset
* Improve Watcher ability to find transactions (#1107)
* remove listeners and use loop to find tx receipt
* add yarn ready
* moved filters inside loop
* [added] changeset
* Add minimal vscode settings and extensions (#1109)
* chore: add minimal vscode settings and extensions
* chore: Add "files.trimTrailingWhitespace" to vscode native config
* chore: replace vscode prettier plugin with eslint plugin
* fix[contracts]: remove part of MultiMessageRelayer deployment (#1144)
* fix[contracts]: remove part of MultiMessageRelayer deployment
* chore: add changeset
* Define L1 Starting block via OwnershipTransferred rather than AddressSet (#1129)
* Update service.ts
* Create thirty-years-look.md
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Easy fix for broken watchers (#1121)
* Easy fix for broken watchers
* Ran yarn changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* feat: go packages (#1111)
* go: add utils module
* readme: update
* Version Packages (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* build: add husky pre-commit hook to lint (#1146)
* feat[contracts]: add mainnet deploy script (#1147)
* Add mainnet deploy script
* Update mainnet.sh
* Address PR review feedback
* feat: mainnet contract deployment 0.4.0 (#1148)
* feat: mainnet contract deployment 0.4.0
* feat: deployments readme
* chore: add changeset
* contracts: remove dead contract
* contracts: remove dead config
* tests: fix to not test for old contracts
* feat: `rollup gasPrices` RPC endpoint (#1136)
* feature: l2geth endpoint
* chore: add changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* Adds l2 standard bridge to contracts markdown file (#1151)
* Version Packages (#1150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add more info about our branching strategy to the README (#1114)
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Remove references to OVM_L1ETHGateway in deployments and readme (#1119)
* Keep the user logged in after changing chain (#99)
* Keep the user logged in after changing chain
* Update Nft.js
* Detect if user is in the wrong chain
Co-authored-by: cby3149 <cby3149@outlook.com>
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Merge conflics resolve (#110)
* wip
* gethl2
* wip
* batch submitter
* core utils
* DTL
* message relayer
* contracts
* wip
* Update service.ts
* DTL
* messaage-relayer
* Update yarn.lock
* final 5 files
* [pull] develop from ethereum-optimism:develop (#91)
* chore: reduce hardhat timeout to 20 seconds (#968)
* fix: force LF line endings for scripts to avoid docker problems on Windows (#974)
* fix: use correct line endings for windows
* chore: add changeset
* refactor[contracts]: Turn ExecutionManagerWrapper into a predeployed contract (#808)
* wip: Started working on L2 contract testing revamp
* test: clean tests for ProxyEOA
* style: clean imports for ProxyEOA tests
* test: port tests for ECDSAContractAccount
* fix tests and add wrapper to dump
* fix: add em wrapper to l2 deploy
* ffix: add comments to wrapper contract
* fix: add more comments
* fix: add smock comment for unbind
* Update packages/smock/src/smockit/binding.ts
* maintenance[contracts]: use dashes in chain container names (#819)
* maintenance: use dashes in chain container names
* chore: add changeset
* feat[contracts]: temporarily disable EOA upgrades (#857)
* feat[contracts]: disable eoa upgrades temporarily
* chore: add changeset
* Update OVM_ProxyEOA.sol
* fix: turn upgrade into a noop
* lint: fix
* feat[contracts]: Update Lib_AddressManager.AddressSet event to speed up data transport layer (#820)
* feat: update and improve AddressSet event
* chore: add changeset
* Update Lib_AddressManager.sol
* Reduce gas costs of deposits (#667)
* Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead
Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger
Fix typo
* Remove sentMessages mapping from L1CrossDomainMessenger storage
and use the nonce to check for existence of replayed transaction
* Refactor out common library function for getting cross domain calldata
* Post rebase fixes
* Use the queueIndex to check the transaction was enqueued
* Fix tests for L1CrossDomainMessenger.replayMessage
Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock
* Lint fixes
* Optimise the resolve calls into the AddressManager lib
* Rename the nonce parameter to be clear
* Update test name
Co-authored-by: ben-chain <ben@pseudonym.party>
* Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils
Co-authored-by: ben-chain <ben@pseudonym.party>
* optimism: bump gaslimit to 10 million #870 (#871)
* optimism: bump gaslimit to 10million
* chore: add changeset
* optimism: bump max gaslimit to 10 mil
* chore: add changeset
* chore: remove unnecessary changeset
* chore: remove unnecessary changeset
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: use correct contract name in tests (#921)
* fix: disable upgradability from ECDSA Account (#885)
* l2geth: remove `SignatureHashType` (#752)
* l2geth: remove tx type
* l2geth: no longer parse type in rollup client
* chore: add changeset
* chore: remove extra sighash params
* fix: do not check txtype in integration tests
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* feat[contracts]: introduce OVM_GasPriceOracle (#912)
* feat[contracts]: congestion price oracle
* chore: add changeset
* contracts: gas price oracle (#917)
* contracts: gas price oracle
* tests: update
* fees: fix tests
* contracts: simplify gas price oracle
* lint: fix
* test: execution price is at the 1st storage slot
* chore: rename predeploy to GasPriceOracle
* chore: rename gas price oracle test name
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: configure max gas limit to 11m (#928)
Uniswap V3 contracts require that, otherwise they throw call exceptions at deployment
* Consolidate Predeploy Addresses (#931)
* added library for predeploy addresses
* refactor tests and other packages to use exported predeploys
* revert library usage in OVM_ECDSAContractAccount
* lint
* added newline
* fixed address typos
Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* chore: remove yarn-error.log and gitignore it (#956)
* feat[contracts]: Replace Lib_RingBuffer with a much simpler Lib_Buffer (#821)
* feat[contracts]: replace Lib_RingBuffer with a simpler Lib_Buffer
* chore: changeset
* test: add tests for Lib_Buffer
* lint: fix
* test: add extra coverage for Lib_Buffer
* Update packages/contracts/contracts/optimistic-ethereum/libraries/utils/Lib_Buffer.sol
Co-authored-by: ben-chain <ben@pseudonym.party>
* add some extra comments
Co-authored-by: ben-chain <ben@pseudonym.party>
* fix(contracts): import predeploys (#982)
* fix(contracts): import predeploys
* fix: lint
* feat: add hardhat deploy instructions to readme (#965)
* feat: add deployment instructions to readme
* Add changeset
* fix style
* Update README.md
* feat: fees v2 (#976)
* l2 geth: new fee logic
* l2 geth: migrate to fees package
* core-utils: new fee scheme
* chore: add changeset
* l2geth: delete dead code
* integration-tests: fix typo
* integration-tests: fixes
* fees: use fee scalar
* lint: fix
* rollup: correct gas payment comparison
* fix(integration-tests): do not hardcode gas price
* core-utils: update with new scheme
* l2geth: refactor rollup oracle
* l2geth: clean up DoEstimateGas
* l2geth: implement latest scheme
* tests: fix up
* lint: fix
* l2geth: better sycn service test
* optimism: rename to TxGasLimit
* fee: fix docstring
* tests: fix
* variables: rename
* l2geth: prevent users from sending txs with too high of a fee
* integration-tests: fix import
* integration-tests: fix type
* integration-tests: fix gas limits
* lint: fix
* l2geth: log error
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* Add static analysis action (#848)
* Add static analysis github action
setup python and install slither
* Add nvmrc file for setting node to v14.17
* Update slither command run to link missing contract packages from monorepo root
* Add steps for installing dependencies
* Add yarn build step to github action
* Enable colour in github action for static analysis
* Disable certain detectors
* Ensure slither does not fail build
* Add instructions on running static analysis to monorepo readme
* build(deps): bump ws from 7.4.4 to 7.4.6 in /ops/docker/hardhat (#987)
Bumps [ws](https://github.com/websockets/ws) from 7.4.4 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.4.4...7.4.6)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix[l2geth]: fix accidental merge conflict (#994)
* feat[message-relayer]: relay tx generator (#952)
* feat[message-relayer]: relay tx generator
* whoops, I burned our infura key
* fix minor bug
* add comments
* add more comments and clean stuff up
* add empty test descriptions
* add tests
* move smock to dev deps
* chore: add changeset
* minor cleanup to merkle tree proof function
* use bignumber math to avoid nested await
* use a better interface
* minor fixes and simplifications
* backwards compatible dtl syncing (#986)
* kovan: fix attempt
* kovan: db fix
* kovan: types are strings from db
* l2geth: parse things as strings
* chore: add changeset
* dtl: also stringify the range query
* geth: dereference
* geth: assign err
* dtl: handle null
* dtl: fix unit tests
* fix[smock]: fix broken call assertions for overloaded functions (#996)
* fix[smock]: fix broken call assertions for overloaded functions
* chore: add changeset
* minor correction and add a test
* add a test for non-overloaded functions
* fix[message-relayer]: fix failing test because of merge with develop (#1000)
* fix[message-relayer]: remove spreadsheet mode (#998)
* fix[message-relayer]: remove spreadsheet mode
* chore: add changeset
* Lower local rollup timestamp refresh (#985)
* update rollup timestamp refresh
* increase refresh time to 5s
* feat: fees v3 (#999)
* core-utils: fee impl v3
* l2geth: fees v3 impl
* integration-tests: update for fees v3
* chore: add changeset
* fix: typo
* integration-tests: fix and generalize
* fees: update fee scalar
* l2geth: check gas in the mempool behind usingovm
* tests: fix up
* l2geth: remove dead var
* truffle: fix config
* fix: remove dead coders (#1001)
* chore: delete dead coders
* chore: add changeset
* dtl: remove dead imports
* core-utils: delete dead tests
* batch-submitter: remove txtype
* chore: add changeset
* docs[message-relayer]: add a README and improve the interface for generating proofs (#1002)
* docs[message-relayer]: add basic docs and clean up an interface
* chore: add changeset
* dtl: log error stack for failed http request (#995)
* dtl: log error stack for failed http request
* chore: add changeset
* Add rpc-proxy service for whitelisting JSON RPC methods to the sequencer. (#945)
* Add healthcheck endpoint for rpc-proxy
Added ethereum-nginx-proxy source
updated README and docker image build
* Check ETH_CALLS_ALLOWED is set, clean up comments, remove old Dockerfile
* Pass additional information across domains via token gateways (#824)
* feat(contracts): add from and data args to L1ERC20Gateway
fix(integration): add gasLimit to fundUser
refactor(contracts): add data to gateway events
add changeset
fix(integration): provide data in outboundTransfer
refactor(contracts): reset Abs_L2TokenGateway to Abs_L2DepositedToken
refactor(contracts): fix mismatched names
* feat[contracts]: add custom gas arg to gateway
fix(contracts): take max of user vs. default gas
* fix(integrations): update ovm-eth function call
* fix(integration): remove unecessary explicit gasLimit
* test(contracts): 32kb transfer, 9MM gas
* fix(contracts): fixup comment, bytes arg last
* fix(integration): args order in integrations
* fix(contracts): remove unused L2 gas arg
* fix(contracts): limit data that can be passed to L2
* fix(integration): better tests for data length
* test: check for error on too large data
* Experimental: specify gaslimit in before hook
* fix(integration): add l2 gas argument
* fix: increase gas on fundUser
* fix(contracts): remove duplicate max size limit
* fix(integration): fine tune gas amounts
* lint
* fix: large data test
* fix(integration): set gas closer to real cost
* fix(contracts): remove unused bridge variables
These variables were the default gas amounts for cross domain messages
* fix(contracts): Reorder args
Place dynamic length args last
* fix(integration): update estimateGas values
* fix(integration): reset eth withdraw estimate to 21000
* fix(integration): update expected gas amount
* fix(integration): reduce gas amount for ETH withdraw
* More consistent style for Constant values (#991)
* chore(contracts): make container addresses be constants
chore(contracts): consistent style for constant vars
* chore(contracts): add internal on predeploy constants
* feat: deployment config for fee oracle contract (#936)
* feat[contracts]: add GasPriceOracle w/o predeploy
Based on #912
* feat[contracts]: congestion price oracle
* chore: add changeset
* contracts: gas price oracle (#917)
* contracts: gas price oracle
* tests: update
* fees: fix tests
* contracts: simplify gas price oracle
* lint: fix
* test: execution price is at the 1st storage slot
* chore: rename predeploy to GasPriceOracle
* chore: rename gas price oracle test name
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* Add an L2 deploy script for gas oracle contract
* Add a kovan deployment artifact
* Add deployment to readme
* Add extra validation & initial execution price
* Update README.md
* Fix execution price logic
* Perform new deployment with final contract
* contracts: better require in ovm gas price oracle
* Deploy L2GasPriceOracle
* Update contract to use new fee logic & rename to gas
* Deploy updated contract
* Fix lint
* gas price oracle: do not restrict gas price
* gas price oracle: new deployment
* tests: delete dead test
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* ops: expose debug namespace (#1007)
* develop merge fixes
* refactor[l2geth]: queue origin type (#975)
* refactor: queueOrigin type
* Convert queueOrigin to uint8 in encode
* Add changeset
* Regenerate json marshall
* style: combine lines
* Add Stringer for QueueOrigin
* Turn QueueOrigin into uint8
* l2geth: gen tx meta fix
* l2geth: gen tx meta fix
* lint
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix(sync-service): prevent underflows (#1015)
* fix(sync-service): prevent underflows
* chore: add changeset
* chore: remove dead confirmation depth
* chore: remove eth1conf depth from rollup config
* test: remove duplicate value in array (#1014)
* ci: tag docker image for canary with abbreviated GITHUB_SHA (#1006)
* ci: tag docker image for canary with abbreviated GITHUB_SHA
* ci: update from 6 bytes to 8 bytes of abbreviation
* refactor: improve logging for transactions being submitted to chain with gasPrice (#1016)
* refactor: improve logging for transactions being submitted to chain with gasPrice
* lint: apply lint autofixes
* dtl: remove stringify from db logic + more overflow protection (#1010)
* dtl: remove stringify from db logic
* l2geth: overflow protection
* dtl: overflow protection
* chore: add changeset
* ci: upload logs for failed integration tests (#1020)
* fix(dtl): improve slow blocking JSON parsing that occurs during l2 sync (#1019)
The use of eth_getBlockRange returns a large response which is very
slow to parse in ethersjs, and can block the event loop for upwards
of multiple seconds.
When this happens, incoming http requests will likely timeout and fail.
Instead, we will parse the incoming http stream directly with the bfj
package, which yields the event loop periodically so that we don't
fail to serve requests.
* fix: lint errors in dtl (#1025)
* fix[dtl]: fix dtl bug breaking verifiers (#1011)
* fix[dtl]: fix dtl bug breaking verifiers
* tweaks so tests pass
* chore: add changeset
* fix: deterministic blockhashes (#1032)
* config: set etherbase
* l2geth: add deterministic clique key
* l2geth: default value
* chore: add changeset
* test: add sync test for deterministic blockhash
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* Version Packages (#978)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* ci: add sync test's own workflow (#1031)
* fix(dtl): incorrect parsing of eth_getBlockRange result (#1037)
* Version Packages (#1045)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: no gas refund (#1043)
* l2geth: remove the gas refund
* chore: add changeset
* refactor[contracts]: remove one-off GasPriceOracle deployment file (#1046)
* refactor[contracts]: remove one-off gpo deployment
* chore: add changeset
* feat[contracts]: introduce new L1ChugSplashProxy contract (#1009)
* feat[contracts]: add L1ChugSplashProxy
* improve comments slightly
* start adding tests
* add more tests
* make the system pausable
* added another test
* add some extra comments
* Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* chore: add changeset
* address review feedback
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* feat[contracts]: add sequencer fee wallet (#1029)
* wip: first draft of the fee wallet
* add fee wallet to dump
* rename to sequencer vault
* add L1 fee wallet to geth config
* add unit tests
* fix geth linting error
* add a basic integration test
* fix broken integration test
* add test for correct storage slot
* add integration test for fee withdrawal
* fix typo in integration tests
* fix a bug bin integration tests
* Update OVM_SequencerFeeVault.sol
* fix bug in contract tests
* chore: add changeset
* fix bug in contract tests
* build(deps): bump glob-parent from 5.1.1 to 5.1.2 (#1036)
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)
---
updated-dependencies:
- dependency-name: glob-parent
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
* fix: predeploy gasprice oracle (#1039)
* l2geth: delete extra config options
* l2geth: stop using extra config options
* l2geth: more stop using extra config options
* chore: add changeset
* l2geth: add new config for gpo owner
* chore: add changeset
* l2geth: fix tests
* tests: fix build
* l2geth: optimize loops (#1027)
* l2geth: optimize loops
* l2geth: stop ticker when done
* l2geth: don't wait for first tick
* chore: add changeset
* Enable custom tagging of release docker image (#1048)
* ci: enable custom tagging of release docker image
* ci: refactor to add prerelease prefix for secuirty
* doc: typo
* ci: fix indentation issue of canary workflow
* ci: fix typo with GITHUB_SHA
* fix: typo in USE_HARDHAT config (#1023)
* fix: abi encoded tx (#1049)
* contracts: don't double rlp decode
* chore: add changeset
* lint: fix
* deps: update
* linting: cleanup
* feat: contracts: use selector
* fix: contracts: use typescript
* contracts: use interface
* l2geth: bump to go 1.15 (#1058)
* l2geth: bump to go 1.15
* chore: add changeset
* Change monotonicity band-aid code to log warnings not errors (#1060)
* refactor: change monotonicity band-aid code to log warnings not errors
* build: add changeset
* feat(contracts, l2geth): native ETH value support for ovmCALL (#1038)
* feat(contracts): add ovmCALL-types with native value
* add ovmCALLVALUE context
* add ovmBALANCE
* test success and revert cases
* test empty contract case
* chore: lint
* test(integration-tests): ovmCALL-types with value (compiler and wrapper)
* fix ovmDELEGATECALL type, update tests
* add ovmSELFBALANCE
* fix ovmDELEGATECALL jumping to CALL
* chore: lint
* fix(contracts): account for intrinsic gas of OVM_ETH sends
* fix(contracts): merge conflict bug
* fix(contracts): update gas benchmark
* feat(contracts, integration-tests): use new value-compatible compiler
* feat(contracts,l2geth): support value calls in OVM_ECDSAContractAccount
* fix(contracts): ovmDELEGATECALL does not change message context
* feat(contracts): sending value between EOAs
* test(integration-tests): ovmDELEGATECALL preserves ovmCALLVALUE
* test(integration-tests): assert ovmSELFBALANCEs correct
* test(integration-tests): intrinsic gas for eth value calls
* test(integration-tests): update gas values
* chore(contracts): lint
* feat(contracts, l2geth): eth_calls with nonzero value
* chore: minor fixups and comments based on PR feedback
* test(integration-tests): add requested tests from PR reviews
* test(integration-tests): ovmSELFBALANCE is preserved in ovmDELEGATECALLs
* fix(contracts): fix bug where ovmDELEGATECALL could fail if balance was lower than the ovmCALLVALUE
* chore: add changeset
* fix(contracts): update intrinsic gas for worst-case value sends
* chore: address final PR nits/improvements
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* Add erc1271 support to contract account (#1052)
* add ERC1271 support, failing unit tests
* add integration test for isValidSignature
* remove .only
* lint
* add changeset
* clean up 1271 tests and lint
* switch back to using waffle wallet
* lint
* fix import
* feat[contracts]: slightly better account funding for hardhat accounts (rebased) (#1065)
* feat[contracts]: better account funding for hardhat accounts
* add a sleep to avoid any potential problems
* chore: add changeset
* fix: bug with gas estimation in funding step
* fix: limit to 20 accounts max
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* Ensure Sentry is correctly set up for DTL and MR (#1054)
* refactor: add logger and metrics to options for BaseService
* refactor: thread sentryOptions through from message-relayer into BaseService
* refactor: ensure DTL Logger is using Sentry for errors
* style: lint base-service.ts
* refactor: init Sentry on batch-submitter too
* refactor: init Sentry on message-relayer too
* refactor: pass in basic logger to MessageRelayerService
* build: provide changeset
* fix: correct usage of use-sentry boolean config
* refactor: appropriately type loggingOptions
* build: add @sentry/node
* build: add @sentry/node to message-relayer and fix linting issue
* Add more logging information to monotonicity violation logs (#1066)
* refactor: log idx of monotonicity violation from batch
* build: add changeset
* temporarily disable hardhat example tests (#1071)
* fix: monotonicity auto healer (#1070)
* fix: monotonicity auto healer
* add: changeset
* Version Packages (#1053)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Standard token bridge (#988)
* Remove abstract token gateway and deposited token implementations
* Further simplification of bridge contracts
* Standart token bridge and L2 token implementation
* Fix spacing
* Implement case when a bad deposit happens to a nonexistent L1<>L2 token pair
* Use SafeMath in common token bridge accounting
* test(contracts): fix finalizeWithdrawal test
* fix(contracts): use SafeERC20 on token deposits
* Rename OVM_L1ERC20Gateway to OVM_L1ERC20Bridge contract
* Rename iOVM_L1ERC20Gateway to iOVM_L1ERC20Bridge contract
* Cleanup gateway to bridge rename
* Better name for the mapping holding l1->l2 deposit amounts
* Use OZ SafeMath
* Rename local variables in OVM_L2DepositedERC20 from gateway to bridge
* Merge ETH and ERC20 bridge contracts
* Rename OVM_L1ERC20Bridge to OVM_L1StandardBridge and fix tests from merging the ETH and ERC20 bridges
* Better name for iAbs_BaseCrossDomainMessenger -> iOVM_CrossDomainMessenger
* Correct the bounce back of deposit sender and recipient properties
* Remove obsoleted event from OVM_L2DepositedERC20
* chore(contracts): change references from ETHGateway to Bridge
* Fix a linting error
* fix(contracts): add bridge to deployer
* Split off ERC20Bridge interface for the purposes
of being reused in custom ERC20 bridges
* Split off interface natspec definitions
* Draft version of OVM_L2DepositedERC20 splitted into a standard L2 erc20: L2StandardERC20 and
a common L2 bridge: OVM_L2StandardBridge
* style(contracts): define L1_ETH_ADDRESS as constant
* test(integration): update interface to use depositETH
* test(contracts): fix OVM_L1StandardBridge tests
* test(contracts): fix L2 Standard Bridge tests
* test(contracts): lint and remove an obsolete test case
* Fix modifier check to comply with the L2 bridge distinction from L2 token
* Simplify address <> interface casting in bridges
* Ensure natspec comments are correct
also add l1 and l2 token params to WithdrawalInitiated event for consistency
* Fix issues in L1 and L2 bridges to ensure
cross domain messages are sent only between the two bridges
also adjusted withdrawals to send to either finalizeETHWithdrawal or finalizeERC20Withdrawal
depending on which asset is being withdrawn
* Remove AddressManager from the L1 standard bridge
* REVERT ME: instruments cross domain enabled
* fix(contracts): remove Address Manager from L1 Bridge
* feat(contracts): make L2 Standard Bridge a predeploy
* WIP: update deployments for standard bridges
* WIP: update deployments for standard bridges
* l2geth: TEMP log contract calls
* chore(l2geth): replace eth gateway with standard bridge
* fix(contracts): make contract-deployment/config work
* WIP fix(integration): update integration tests for bridge
* Remove ovmEth from L1 Standard bridge as obsoleted
* Separate ERC20 standard implementation from L2 bridge
* Formatting fixes
* chore(l2geth): replace eth gateway with standard bridge
* Revert "REVERT ME: instruments cross domain enabled"
This reverts commit d5bb8f8f67974d0a3e65fc000f08858328a4bbbc.
* fix: lint ts
* Implement EIP-165 in the Standard L2 ERC20 token
Also switch that to be based off the OpenZeppelin default implementation plus mint and burn
Additionally remove the obsoleted iOVM_ERC20
* fix(contracts): add deployment check on bridge proxy
fix(contracts): whitespace
fix(contracts): init bridge implementation with non-zero address
* Remove dependency on Ownable contract for the StandardERC20 token on L2
* fix(contracts): update deployment scripts
* fix: lint
* remove debugging code
* fix: correct rpc get balance slot
* restore l2 cross domain messenger
* fix: lint
* Add a test for a non compliant token deposit
* Only allow EOAs to deposit ETH and ERC20
* Add comments and tests for ERC165 implementation
* Decide against using explicit ETH MOCK address as we're not using it for checks
* Fix linting issues
* Add onlyEOAContract restriction to standard bridge withdrawals
* Update codehashes in L2 Standard bridge
* fix(ops): remove unintentionally added file
* feat(contracts): add expectApproxGasCost function
* fix(integration): proper arrayify input on fundUser
* fix(integration): proper gas value checks
* Revert "Add onlyEOAContract restriction to standard bridge withdrawals"
This reverts commit 2713c06ceb2609e4f13718e1034a4d76210d9758.
* fix(contracts): removed unused expectApproxGasCost for now
* fix(contracts): update OVM_SequencerFeeVault for bridge changes
* lint
* Update deployment for L1 Bridge w/ ChugSplash
* Revert "l2geth: TEMP log contract calls"
This reverts commit 21d42259278449f221bf34605162229b3d9d4fa9.
* Apply suggestions from code review
* Apply suggestions from code review
* fix(contracts): deploy with chugsplash proxy
* fix(contracts): add working bridge and chugsplash proxy deployment
* fix(contracts,integration): 500k gas for depositETH
* comment(contracts): describe failed deposit handling on l2
* Apply suggestions from code review
Co-authored-by: ben-chain <ben@pseudonym.party>
* docs: add changeset
* fix(integration): set working l2 gas amount on funduser
* test(integration): add receive() test
* fix(contracts): reset receive to 1.2MM l2 gas
* test(examples): skip l1-l2 example test for now
* fix(contracts): drop hardcoded gas to 500k in receive()
* fix(contracts): use abi.encodeWithSignature
* fix(contracts): resolve merge conflicts
* feat(integration): add expectApprox for flexible gas testing
* fix(integration): fix failing gas tests
* fix: incorrect l2 gas for deposit
* Update utils.ts
* fix(workflow): disable l1-l2 example until npm imports are fixed
* chore: final round of PR review nits and tests
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* fix: comment out codeowners (#1073)
* fix: use predeploy constant lib for em wrapper (#1075)
* fix: use predeploy constant lib for em wrapper
* chore: add changeset
* fix[l2geth]: off-by-one sometimes breaking replica sync (#1082)
* fix[l2geth]: off-by-one sometimes breaking replica sync
* chore: add changeset
* fix(l2geth): Log 'end of OVM execution' correctly (#1080)
* refactor[contracts]: move account contracts to predeploy folder (#1085)
* refactor[contracts]: move account contracts to predeploy folder
* chore: add changeset
* maintenance[contracts]: rename precompiles test folder to predeploys (#1086)
* fix[bs]: disambiguate generic submission errors (#1051)
* fix[bs]: disambiguate generic submission errors
* add cases for errors
* separate out errors from transaction reverts with reasons
* remove extraneous errors
* WETH deposit and withdraw on OVM_ETH (#1083)
* feat(contracts): add no-op WETH9 functionality to OVM_ETH
* working WETH deposit and withdraw + tests
* add changeset
* address PR feedback
* update WETH9 contract implementation
* add fallback to WETH9
* add fallback and revert withdraw test
* update nit comment
Co-authored-by: ben <ben@pseudonym.party>
* Also move the accounts interface to iOVM/predeploys (#1087)
* refactor[contracts]: move account interface to predeploy folder
* chore: add changeset
* Version Packages (#1089)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: use -z flag for var unset in canary
* Use Eslint instead of Tslint (#1005)
* removed tslint
* forgot to commit files
* made .eslintrc.js consistent for all subdirs and other cleanup
* [removed] includes and files keys from tsconfig.json
* removed file level linting exceptions and added details to line level
* added changeset
* fixed newly introduced linting errors from rebase
* enable json import for batch submitter
* removed ecdsa-coder
* maybe a tsconfig issue?
* Update deploy.ts
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com>
* metrics[batch-submitter]: add new batch submitter metrics (#1074)
* metrics[batch-submitter]: add new batch submitter metrics
* chore: changeset
* account for failed submissions
* Fix canary publishing (#1093)
* ci: fix custom docker tag
* ci: use new env file
* ci: use outputs from previous job
* ci: fix headers of jobs
* ci: inherit canary tag from builder
* feat[ci]: upload logs for sync tests if failure (#1098)
* deploy: goerli 0.4.0 (#1099)
* deployments: goerli 0.4.0 rc
* readme: update
* chore: add changeset
* fix[dtl]: defend against RPC provider missing events (#1084)
* fix[dtl]: defend against RPC provider missing events
* chore: add changeset
* respond to review comments
* better error handling for missing handlers
* deploy: kovan v.4.0 rc (#1101)
* deploy: kovan v0.4.0 rc
* chore: add changeset
* readme: update
* maintenance[monorepo]: first pass update to README (#1106)
* maintenance[monorepo]: first pass update to README
Doing some relatively minor updates to the README just to clean things up a bit.
* replying to review comments
* Move the metric prefix string to a label (#1047)
Added changeset and fixes
Changeset to patch
* fix[smock]: add support for hardhat 2.4.0 (#1112)
* fix[smock]: add support for hardhat 2.4.0
* chore: add changeset
* lint: fix
* build(deps): bump hosted-git-info from 2.8.8 to 2.8.9 (#1064)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)
---
updated-dependencies:
- dependency-name: hosted-git-info
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Misc. small improvements to README (#1115)
* Update README.md
* Update README.md
* fix[dtl]: use the same L2 chain ID everywhere (#1122)
* fix[dtl]: use the same L2 chain ID everywhere
* chore: add changeset
* fix: make sync tests only on workflow dispatch (#1123)
* fix[dtl]: remove old stringification function (#1134)
* fix[dtl]: remove old stringification function
* chore: add changeset
* fix[dtl]: log server errors as ERROR instead of INFO (#1133)
* fix[dtl]: log server errors as ERROR instead of INFO
* chore: add changeset
* Contracts: connectL1Contracts & connectL2Contracts (#713)
* Contracts: connect-contracts
* Trying to resolve build problems
* connect-contracts build working
* Adds artifacts-ovm back to gitignore
* Removes incorrect changes
* Adds copy-artifacts script
* Adds test file (not working yet)
* fix: incorrect contract instantiation
* Improves tests and removes old deployment versions
* Single source of truth for predeploy addresses
* Reverts deployments/README.md
* Makes connect-contracts more DRY
* Adds missing @ethersproject/abstract-signer dependency
* Adds argument evaluation
* Adds L1Contracts and L2Contracts types
* Attempts removing artifacts-ovm again
* Adds webpack config (not working yet)
* build: add artifacts to dist (#776)
* Updates lint rule
* Adds l2 imports
* Fixes dependency tree bug
* Removes webpack stuff
* Fixing package.json issues and adds .DS_Store to gitignore
* Removes test-contracts script
* Reverting script change
* Adds comments
* Adds comment
* Renames deployments folders
* Fixes linting errors
* Generates markdown
* build: add deployments directory to Dockerfiles
* Removes unneeded contracts, improves error handling and tests
* Adds changeset
* yarn.lock
* Removes console.log
* Changes from minor to patch version
* Fixes lint errors
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: prevent overflow in abi encoding (#1135)
* l2geth: prevent overflow in abi encoding to ovm codec tx
* chore: add changeset
* tests: replica syncing (#981)
* [wip] add l2_dtl and replica images
* passing basic dummy tx test
* add erc20 test
* add sync test to ci
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix[relayer]: update exported files list in package.json (#1138)
* fix[relayer]: update exported files
* chore: add changeset
* fix: import path (#1141)
* fix: correct import path for altered contract path
* chore: add changeset
* refactor: improve logging for batch submission timeout scenarios (#1120)
* Add highest L1 and L2 block number Gauge metrics to DTL (#1125)
* build: add prom-client to data-transport-layer
* refactor: thread metrics more carefully through data-transport-layer; add two new metrics
* style: fix some style issues
* refactor: make metrics mandatory
* refactor: move metrics register code to top of file
* style: apply linting
* refactor: move promethesus initialization after express
* refactor: move promBundle call up, provide registry
* build: add changeset
* Improve Watcher ability to find transactions (#1107)
* remove listeners and use loop to find tx receipt
* add yarn ready
* moved filters inside loop
* [added] changeset
* Add minimal vscode settings and extensions (#1109)
* chore: add minimal vscode settings and extensions
* chore: Add "files.trimTrailingWhitespace" to vscode native config
* chore: replace vscode prettier plugin with eslint plugin
* fix[contracts]: remove part of MultiMessageRelayer deployment (#1144)
* fix[contracts]: remove part of MultiMessageRelayer deployment
* chore: add changeset
* Define L1 Starting block via OwnershipTransferred rather than AddressSet (#1129)
* Update service.ts
* Create thirty-years-look.md
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Easy fix for broken watchers (#1121)
* Easy fix for broken watchers
* Ran yarn changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* feat: go packages (#1111)
* go: add utils module
* readme: update
* Version Packages (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* build: add husky pre-commit hook to lint (#1146)
* feat[contracts]: add mainnet deploy script (#1147)
* Add mainnet deploy script
* Update mainnet.sh
* Address PR review feedback
* feat: mainnet contract deployment 0.4.0 (#1148)
* feat: mainnet contract deployment 0.4.0
* feat: deployments readme
* chore: add changeset
* contracts: remove dead contract
* contracts: remove dead config
* tests: fix to not test for old contracts
* feat: `rollup gasPrices` RPC endpoint (#1136)
* feature: l2geth endpoint
* chore: add changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* Adds l2 standard bridge to contracts markdown file (#1151)
* Version Packages (#1150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add more info about our branching strategy to the README (#1114)
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Remove references to OVM_L1ETHGateway in deployments and readme (#1119)
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Elena Gesheva <elena@arenabg.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
Co-authored-by: Rajiv Patel-O'Connor <rajiv.patel.oconnor@gmail.com>
Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Tim Myers <timmyers09@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Annie Ke <annieke8@gmail.com>
Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com>
Co-authored-by: Matt Masurka <m.masurka@gmail.com>
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
Co-authored-by: Alejandro Santander <Palebluedot@gmail.com>
* Re-apply key changes on top of optimism most current develop
* Add docker-compose-replica.yml (#109)
* Create docker-compose-replica.yml
* Add replica service
* Update docker-compose-omgx-replica.yml
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* fix linter; patch gethl2
* configure the deployer correctly
* fix proposer / batch submitter
* update chainIDs
* update rpc test
* Create README_OMGX.md
* upstream - needs more work
* Adds delay to watcher (#1159)
* Adds delay to watcher
* Simplifies delay
* Adds changeset
* Fix wallet test
* Fix deployment test
* Add Python
* Update Dockerfile.omgx_monorepo
* Remove package-lock
* fix: bind dtl functions for missing event codepath (#1161)
* dtl: bind this in L1 missing element error handlers
* dtl: add additional logline
* chore: add changeset
* dtl: add more metrics
* dtl: use counter instead of gauge
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* fix: remove 'editor.formatOnSave' from global settings' (#1163)
* merge conflicts
* Update pre-commit
* Version Packages (#1167)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* minor
* Update pre-commit
* Fix wallet test (#119)
* Fix wallet test
* Fix deployment test
* Add Python
* Update Dockerfile.omgx_monorepo
* Remove package-lock
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Reapply standard changes on top of current develop
* Update package.json
* doc: add notes for releasing new versions with changesets (#1166)
* Bind correct object to method handler in DTL (#1168)
* fix: bind correct object to method handler
* build: add changeset
* Version Packages (#1169)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Fix web wallet
* Fix integration test (#124)
* Fix integration test (#125)
* Fix integration test
* Fix integration test
* Fix wallet_react
* Fix lint test
* Remove package-lock
* Update integration.yml
* Fix wallet deployer
* Collect docker log
* Fix l1-l2-deposit-withdrawal test
* Fix sync test
* Add chainID to deployer config
* make sync tests dispatch only
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Add short contribution section to primary README (#1157)
* Add short contribution section to primary README
* Update README.md
* fix: prevent batch submitter from submitting batches if low on ETH
* build: add changeset
* Eslint ignore the hardhat folder
* Update README.md
* Beginning to add working examples
* hardhart and waffle example tests
* document/check waffle
* test l1-l2 example
* add patch-package
* Update package.json
* build: ensure lint only staged files on commit
* refactor: do not run --fix on lint-staged
* refactor: *.{ts,js} for eslint regex
* l2geth: rollup client explicitly checks for >= 400 errors
* l2geth: sync service retries connection to remote server
* l2geth: test errors returning from remote
* chore: add changeset
* syncservice: nit
* feat[message-relayer]: add easy relay tool
* chore: add changeset
* upkeep[monorepo]: add changeset info to README
* merge conflict squash
* Daily sync up (#137)
* build: ensure lint only staged files on commit
* refactor: do not run --fix on lint-staged
* refactor: *.{ts,js} for eslint regex
* l2geth: rollup client explicitly checks for >= 400 errors
* l2geth: sync service retries connection to remote server
* l2geth: test errors returning from remote
* chore: add changeset
* syncservice: nit
* feat[message-relayer]: add easy relay tool
* chore: add changeset
* upkeep[monorepo]: add changeset info to README
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Kelvin Fichter <kelvin@optimism.io>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* github actions: bump geth CI golang version
* fix(contracts): prevent L2->L1 calls to system contracts
* Update message relayer fast contracts (#139)
* prepare for wallet reorg
* Create yarn.lock
* fix hardhat bug
* merge conflict resolve
* daily sync up (#141)
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* fix(contracts): prevent L2->L1 calls to system contracts
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: ben <ben@pseudonym.party>
* Add Factory contract for creating standard ERC20 tokens
compliant with the standard bridge
* Disallow 0 address for l1 token when creating l2 standard token
* Fix linting issue
* Add deployment script for the L2 token factory
* Fix deploy script OVM_L2StandardTokenFactory constructor params
* Add changeset
* Cleanup deployment script for OVM_L2StandardTokenFactory
and fix a solidity linting error
* refactor(integration): Add clarity to the expectApprox function signature
* fix: skip codechecks for PRs from external repos
* DRAFT move react wallet and the contracts to more clear folders (#138)
* DRAFT move react wallet and the contracts to more clear folders
* merging the axios integration chagnes
* updated the message-relayer-fast contracts
* integrate message-relayer-fast into standard dockers
* Dockerize the message-relayer-fast
* update Readme.md
* remove duplicated contracts - just keep everything in /contracts
* add deploy for fast messenger
* message-relayer-fast testing
* Update serve.sh
* Delete yarn.lock
* Update constants.ts
* Create yarn.lock
* Update constants.ts
* Update function-manipulation.spec.ts
* increase the retries and other minor fixes
* Improved documentation
* fix omgx integration tests
* Update omgx-integration.yml
* integration test remove duplicated tests
* Fix units test configuration
* Update docker-compose-omgx-services.yml
* integration test setup fixes
* fix wallet integration test
* fix for crash on return
* integration tests for `message-relayer-fast`
* Update env.ts
* Autodeploy Token Bridges
* Update wallet contracts
* Update utils.ts
* improve omgx integration tests
* Add address manager address to GH actions for now
Co-authored-by: sahil kashetwar <>
Co-authored-by: Sahil k <sahil@enya.ai>
Co-authored-by: cby3149 <cby3149@outlook.com>
* merge conflicts
* GH actions regular changes
* husky
* Daily sync up (#144)
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* github actions: bump geth CI golang version
* fix(contracts): prevent L2->L1 calls to system contracts
* Add Factory contract for creating standard ERC20 tokens
compliant with the standard bridge
* Disallow 0 address for l1 token when creating l2 standard token
* Fix linting issue
* Add deployment script for the L2 token factory
* Fix deploy script OVM_L2StandardTokenFactory constructor params
* Add changeset
* Cleanup deployment script for OVM_L2StandardTokenFactory
and fix a solidity linting error
* refactor(integration): Add clarity to the expectApprox function signature
* fix: skip codechecks for PRs from external repos
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: ben <ben@pseudonym.party>
Co-authored-by: elenadimitrova <elena@arenabg.com>
Co-authored-by: Reggie Gomez <reggieag@gmail.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* docker: pin to alpine 3.13 for l2geth
A bug has appeared when older versions of Docker are used to build
alpine based images in alpine version 3.14. To prevent this problem
from happening to the users, this PR pins the version to 3.13.
The observed problem is that `make` cannot run any command and
the error message states `Operation not permitted.` Removing
`make` was one way to solve the problem but that would increase
the diff from upstream geth.
See these links for details:
https://github.com/alpinelinux/docker-alpine/issues/182
https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0
* fix: update statement for skipping codechecks
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://kovan.optimism.io npx hardhat set-l2-gasprice \
--l2-gas-price 1
```
This hardcodes the predeploy address of the `OVM_GasPriceOracle` smart
contract and the Owner must be used to do the updating, otherwise the
transaction will revert.
* removed unused functions from core utils
* [added] changeset
* next gen integration tests for the OMGX stack (#149)
* next gen integration tests for the OMGX stack
* finish first pass integration test outline
* move LP tests to the `message-relayer-fast`
* Update omgx-integration.yml
* add more tests to message-relayer-fast
* connect up the .env variables
* hard code URIs
* Update utils.ts
* Update omgx-integration.yml
* fix - should have been 8080
* Update omgx-integration.yml
* which address to use?
* Update omgx-integration.yml
* removing not needed code
* remove superfluous logging code
* Update utils.ts
* Update utils.ts
* additional comments and formatting improvements
* fix: use older changes on tests (#152)
* fix: use older structure
* correct messenger
* LP fees on the correct side
* correct messenger
* rearrange depl order
Co-authored-by: Souradeep Das <dsouradeep2@gmail.com>
* Update README_OMGX.md (#150)
Refactored some changes and added some comments I thought might be helpful for people.
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* tests: re-enable all tests (#155)
* re-enable all tests
* re-enable all tests
* Add solhint to contracts package
* Turn off compiler-version rule in solhint
* Add suggestions by @maurelian
https://github.com/ethereum-optimism/optimism/pull/1033#issuecomment-866146467
* Change solhint output formatting to table
* Disable contract-name-camelcase rule in solhint
* Fix max-line-length linting issues in contracts
* Fix quotes linting issues in contracts
* Remove private-vars-leading-underscore rule in solhint
* Add contracts linting to github action
* Fix for hardhat account balance parsing
* Disable generating the bytecodeHash in hardhat contract artifacts
* Review fixes
* Fix review notes
* Fix smockit for a change in hardhat ^2.4.0
which changes the way it parses errors from returndata
Fix provided by @smartcontracts
* dtl: configurable gas price backend
Adds a new config option `--l1-gas-price-backend` or
`DATA_TRANSPORT_LAYER_L1_GAS_PRICE_BACKEND` that can be set to `l1` or
`l2`. This impacts the behavior of the HTTP endpoint `GET /eth/gasprice`
by changing what is queried to return the L1 gas price. The L1 gas price
is required to compute the L2 fee since the L2 fee consists of
`L1 gas price * L1 gas used + L1 gas price * L2 gas limit`. If the L1
gas price differs too much between different L2 providers, then users
using `eth_estimateGas` may submit transactions with too low of a fee
and be unable to submit transactions to the sequencer.
By configuring the DTL to use L2 as the L1 gas price backend, it will
call the Sequencer's RPC endpoint `rollup_gasPrices` which returns the
L1 and L2 gas prices from the point of view of the sequencer. The L2 gas
price exists in the state, so that will always be the same between the
sequencer and any replicas. The L1 gas price does not live on chain, so
querying for it from the sequencer directly will ensure that users send
transactions with a fee that is large enough.
Also adds eth/gasprice info to README.
* Remove bl wl service (#154)
* replace `bl-wl` with direct calls the `omgx_deployer`
* Update docker-compose-omgx-services.yml
* Update up_local.sh
* Add CORS headers to http servers
* updated frontend to use the two new HTTP servers for the addresses
* update webwallet to work with both local and rinkeby
* Add missing .env variables to GH actions
* re-enable docker tages
* re-enable wallet transaction history
* Update up_local.sh
* Update up_local.sh
* Add flag to omgx_deployer to only serve addresses w/o deploying new contracts
* Update docker-compose-omgx-services.yml
* Add back tagging system and improved reliability of GH actions
* removed commented out service
* add rinkeby token addresses (#161)
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* fix: lint deploy-l2 folder in contracts
* Add AWS integration (#159)
* Add AWS integration
* Remove artifacts
* updated ops_omgx/README.md and added .github/workflows/deploy2aws-integration.yml and .github/workflows/push2aws.yml
* add automated provision and deletion of an ec2 instance for running the integration tests
Co-authored-by: Petar Denev <pdenev@gmail.com>
* fix: update CI to avoid running out of memory
* Version Packages
* ci: release latest image tags on release
* feat: update README to include info about rebasing
* Add op_exporter for sequencer metrics and health endoint
Added metric for sequencer health
Added Dockerfile for op_exporter;
Fixed Dockerfile path
* merge conflicts
* re-comment out the usual GH actions
* feat[integration-tests]: make tests work for prod networks
* chore: add changeset
* Increase client_body_buffer_size for rpc-proxy
Added client_max_body_size to rpc-proxy config
* l2geth: use `hexutil.Big` to prevent overflows
The `RollupClient` decodes the JSON from the DTL as a uint64,
this updates it to be a `big.Int`
Includes a test for the value field that ensures it does not overflow
* ci(contracts): only run codecov if contracts package is modified
In order to skip running the CodeCov job when it isn't relevant, a new job was added to the ts-packges workflow. For a PR, this job identifies all the files modified between the base branch and the tip of the PR branch, and writes to a variable which can be used to decide if subsequent jobs should run.
Github Actions provides an easy method for achieving this at the level of a workflow, but not for specific jobs within a workflow.
* Version Packages
* chore(ci): Skip codecov on push events
* feat: add workflow for running SNX test suite
* go: implement gasprices package
The `gasprices` package implements the logic that updates
L2 gasprices on the Optimistic Ethereum Network.
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* gas-oracle: implement and test
This commit adds the `gas-oracle` which is an offchain entity
that sends transactions to L2 to update the gas price. It must
be configured with a private key as the `OVM_GasPriceOracle`
is owned.
The `gas-oracle` is added to the changesets setup.
Tests are included as well as CI. Dockerizing will happen
in a follow up PR.
* gas-oracle: ci + docker build/publish
Adds a dockerfile for the `gas-oracle` as well as adding it as
a service in the `docker-compose.yaml`. It is not enabled by
default due to memory issues in CI already happening occasionally
where the integration tests are oom killed.
The `gas-oracle` is configured with a key that owns the
`OVM_GasPriceOracle`.
This PR adds the `gas-oracle` to the Github Actions
workflow that is responsible for publishing the docker images.
* Add replica (#169)
* fix: update erc20 deposits (#166)
* fix: update erc20 deposits
* fix: auto default token
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* resolve merge conflicts
* Update docker-compose.yml
* Update docker-compose.yml
* [pull] develop from ethereum-optimism:develop (#164)
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://kovan.optimism.io npx hardhat set-l2-gasprice \
--l2-gas-price 1
```
This hardcodes the predeploy address of the `OVM_GasPriceOracle` smart
contract and the Owner must be used to do the updating, otherwise the
transaction will revert.
* Add op_exporter for sequencer metrics and health endoint
Added metric for sequencer health
Added Dockerfile for op_exporter;
Fixed Dockerfile path
* feat[integration-tests]: make tests work for prod networks
* chore: add changeset
* Increase client_body_buffer_size for rpc-proxy
Added client_max_body_size to rpc-proxy config
* l2geth: use `hexutil.Big` to prevent overflows
The `RollupClient` decodes the JSON from the DTL as a uint64,
this updates it to be a `big.Int`
Includes a test for the value field that ensures it does not overflow
* ci(contracts): only run codecov if contracts package is modified
In order to skip running the CodeCov job when it isn't relevant, a new job was added to the ts-packges workflow. For a PR, this job identifies all the files modified between the base branch and the tip of the PR branch, and writes to a variable which can be used to decide if subsequent jobs should run.
Github Actions provides an easy method for achieving this at the level of a workflow, but not for specific jobs within a workflow.
* Version Packages
* chore(ci): Skip codecov on push events
* feat: add workflow for running SNX test suite
* go: implement gasprices package
The `gasprices` package implements the logic that updates
L2 gasprices on the Optimistic Ethereum Network.
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* gas-oracle: implement and test
This commit adds the `gas-oracle` which is an offchain entity
that sends transactions to L2 to update the gas price. It must
be configured with a private key as the `OVM_GasPriceOracle`
is owned.
The `gas-oracle` is added to the changesets setup.
Tests are included as well as CI. Dockerizing will happen
in a follow up PR.
* gas-oracle: ci + docker build/publish
Adds a dockerfile for the `gas-oracle` as well as adding it as
a service in the `docker-compose.yaml`. It is not enabled by
default due to memory issues in CI already happening occasionally
where the integration tests are oom killed.
The `gas-oracle` is configured with a key that owns the
`OVM_GasPriceOracle`.
This PR adds the `gas-oracle` to the Github Actions
workflow that is responsible for publishing the docker images.
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Ben Wilson <bwilson@optimism.io>
Co-authored-by: Kelvin Fichter <kelvin@optimism.io>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* Update docker-compose.yml
* adding l1-l2 test ecs scheduled task that does verify communication between L1 and L2 and L2 to L1 (#167)
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Update docker-compose.yml
* daily update (#170)
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://…
* fix: import path (#1141)
* fix: correct import path for altered contract path
* chore: add changeset
* refactor: improve logging for batch submission timeout scenarios (#1120)
* Fixed CrossDomainMessenger name (#96)
* Add highest L1 and L2 block number Gauge metrics to DTL (#1125)
* build: add prom-client to data-transport-layer
* refactor: thread metrics more carefully through data-transport-layer; add two new metrics
* style: fix some style issues
* refactor: make metrics mandatory
* refactor: move metrics register code to top of file
* style: apply linting
* refactor: move promethesus initialization after express
* refactor: move promBundle call up, provide registry
* build: add changeset
* Improve Watcher ability to find transactions (#1107)
* remove listeners and use loop to find tx receipt
* add yarn ready
* moved filters inside loop
* [added] changeset
* Add minimal vscode settings and extensions (#1109)
* chore: add minimal vscode settings and extensions
* chore: Add "files.trimTrailingWhitespace" to vscode native config
* chore: replace vscode prettier plugin with eslint plugin
* fix[contracts]: remove part of MultiMessageRelayer deployment (#1144)
* fix[contracts]: remove part of MultiMessageRelayer deployment
* chore: add changeset
* Define L1 Starting block via OwnershipTransferred rather than AddressSet (#1129)
* Update service.ts
* Create thirty-years-look.md
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Easy fix for broken watchers (#1121)
* Easy fix for broken watchers
* Ran yarn changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* feat: go packages (#1111)
* go: add utils module
* readme: update
* Version Packages (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* build: add husky pre-commit hook to lint (#1146)
* feat[contracts]: add mainnet deploy script (#1147)
* Add mainnet deploy script
* Update mainnet.sh
* Address PR review feedback
* feat: mainnet contract deployment 0.4.0 (#1148)
* feat: mainnet contract deployment 0.4.0
* feat: deployments readme
* chore: add changeset
* contracts: remove dead contract
* contracts: remove dead config
* tests: fix to not test for old contracts
* feat: `rollup gasPrices` RPC endpoint (#1136)
* feature: l2geth endpoint
* chore: add changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* Adds l2 standard bridge to contracts markdown file (#1151)
* Version Packages (#1150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add more info about our branching strategy to the README (#1114)
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Remove references to OVM_L1ETHGateway in deployments and readme (#1119)
* Keep the user logged in after changing chain (#99)
* Keep the user logged in after changing chain
* Update Nft.js
* Detect if user is in the wrong chain
Co-authored-by: cby3149 <cby3149@outlook.com>
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Merge conflics resolve (#110)
* wip
* gethl2
* wip
* batch submitter
* core utils
* DTL
* message relayer
* contracts
* wip
* Update service.ts
* DTL
* messaage-relayer
* Update yarn.lock
* final 5 files
* [pull] develop from ethereum-optimism:develop (#91)
* chore: reduce hardhat timeout to 20 seconds (#968)
* fix: force LF line endings for scripts to avoid docker problems on Windows (#974)
* fix: use correct line endings for windows
* chore: add changeset
* refactor[contracts]: Turn ExecutionManagerWrapper into a predeployed contract (#808)
* wip: Started working on L2 contract testing revamp
* test: clean tests for ProxyEOA
* style: clean imports for ProxyEOA tests
* test: port tests for ECDSAContractAccount
* fix tests and add wrapper to dump
* fix: add em wrapper to l2 deploy
* ffix: add comments to wrapper contract
* fix: add more comments
* fix: add smock comment for unbind
* Update packages/smock/src/smockit/binding.ts
* maintenance[contracts]: use dashes in chain container names (#819)
* maintenance: use dashes in chain container names
* chore: add changeset
* feat[contracts]: temporarily disable EOA upgrades (#857)
* feat[contracts]: disable eoa upgrades temporarily
* chore: add changeset
* Update OVM_ProxyEOA.sol
* fix: turn upgrade into a noop
* lint: fix
* feat[contracts]: Update Lib_AddressManager.AddressSet event to speed up data transport layer (#820)
* feat: update and improve AddressSet event
* chore: add changeset
* Update Lib_AddressManager.sol
* Reduce gas costs of deposits (#667)
* Remove messageNonce from BaseCrossDomainMessenger and use CTC queue lenght instead
Remove Abs_BaseCrossDomainMessenger and restore dedicated nonce generation in OVM_L2CrossDomainMessenger
Fix typo
* Remove sentMessages mapping from L1CrossDomainMessenger storage
and use the nonce to check for existence of replayed transaction
* Refactor out common library function for getting cross domain calldata
* Post rebase fixes
* Use the queueIndex to check the transaction was enqueued
* Fix tests for L1CrossDomainMessenger.replayMessage
Also make that test work with an actual CanonicalTransactionChain implementation rather than a smock
* Lint fixes
* Optimise the resolve calls into the AddressManager lib
* Rename the nonce parameter to be clear
* Update test name
Co-authored-by: ben-chain <ben@pseudonym.party>
* Rename getXDomainCalldata to encodeXDomainCalldata to match the new Lib_CrossDomainUtils
Co-authored-by: ben-chain <ben@pseudonym.party>
* optimism: bump gaslimit to 10 million #870 (#871)
* optimism: bump gaslimit to 10million
* chore: add changeset
* optimism: bump max gaslimit to 10 mil
* chore: add changeset
* chore: remove unnecessary changeset
* chore: remove unnecessary changeset
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: use correct contract name in tests (#921)
* fix: disable upgradability from ECDSA Account (#885)
* l2geth: remove `SignatureHashType` (#752)
* l2geth: remove tx type
* l2geth: no longer parse type in rollup client
* chore: add changeset
* chore: remove extra sighash params
* fix: do not check txtype in integration tests
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* feat[contracts]: introduce OVM_GasPriceOracle (#912)
* feat[contracts]: congestion price oracle
* chore: add changeset
* contracts: gas price oracle (#917)
* contracts: gas price oracle
* tests: update
* fees: fix tests
* contracts: simplify gas price oracle
* lint: fix
* test: execution price is at the 1st storage slot
* chore: rename predeploy to GasPriceOracle
* chore: rename gas price oracle test name
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: configure max gas limit to 11m (#928)
Uniswap V3 contracts require that, otherwise they throw call exceptions at deployment
* Consolidate Predeploy Addresses (#931)
* added library for predeploy addresses
* refactor tests and other packages to use exported predeploys
* revert library usage in OVM_ECDSAContractAccount
* lint
* added newline
* fixed address typos
Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* chore: remove yarn-error.log and gitignore it (#956)
* feat[contracts]: Replace Lib_RingBuffer with a much simpler Lib_Buffer (#821)
* feat[contracts]: replace Lib_RingBuffer with a simpler Lib_Buffer
* chore: changeset
* test: add tests for Lib_Buffer
* lint: fix
* test: add extra coverage for Lib_Buffer
* Update packages/contracts/contracts/optimistic-ethereum/libraries/utils/Lib_Buffer.sol
Co-authored-by: ben-chain <ben@pseudonym.party>
* add some extra comments
Co-authored-by: ben-chain <ben@pseudonym.party>
* fix(contracts): import predeploys (#982)
* fix(contracts): import predeploys
* fix: lint
* feat: add hardhat deploy instructions to readme (#965)
* feat: add deployment instructions to readme
* Add changeset
* fix style
* Update README.md
* feat: fees v2 (#976)
* l2 geth: new fee logic
* l2 geth: migrate to fees package
* core-utils: new fee scheme
* chore: add changeset
* l2geth: delete dead code
* integration-tests: fix typo
* integration-tests: fixes
* fees: use fee scalar
* lint: fix
* rollup: correct gas payment comparison
* fix(integration-tests): do not hardcode gas price
* core-utils: update with new scheme
* l2geth: refactor rollup oracle
* l2geth: clean up DoEstimateGas
* l2geth: implement latest scheme
* tests: fix up
* lint: fix
* l2geth: better sycn service test
* optimism: rename to TxGasLimit
* fee: fix docstring
* tests: fix
* variables: rename
* l2geth: prevent users from sending txs with too high of a fee
* integration-tests: fix import
* integration-tests: fix type
* integration-tests: fix gas limits
* lint: fix
* l2geth: log error
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* Add static analysis action (#848)
* Add static analysis github action
setup python and install slither
* Add nvmrc file for setting node to v14.17
* Update slither command run to link missing contract packages from monorepo root
* Add steps for installing dependencies
* Add yarn build step to github action
* Enable colour in github action for static analysis
* Disable certain detectors
* Ensure slither does not fail build
* Add instructions on running static analysis to monorepo readme
* build(deps): bump ws from 7.4.4 to 7.4.6 in /ops/docker/hardhat (#987)
Bumps [ws](https://github.com/websockets/ws) from 7.4.4 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.4.4...7.4.6)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix[l2geth]: fix accidental merge conflict (#994)
* feat[message-relayer]: relay tx generator (#952)
* feat[message-relayer]: relay tx generator
* whoops, I burned our infura key
* fix minor bug
* add comments
* add more comments and clean stuff up
* add empty test descriptions
* add tests
* move smock to dev deps
* chore: add changeset
* minor cleanup to merkle tree proof function
* use bignumber math to avoid nested await
* use a better interface
* minor fixes and simplifications
* backwards compatible dtl syncing (#986)
* kovan: fix attempt
* kovan: db fix
* kovan: types are strings from db
* l2geth: parse things as strings
* chore: add changeset
* dtl: also stringify the range query
* geth: dereference
* geth: assign err
* dtl: handle null
* dtl: fix unit tests
* fix[smock]: fix broken call assertions for overloaded functions (#996)
* fix[smock]: fix broken call assertions for overloaded functions
* chore: add changeset
* minor correction and add a test
* add a test for non-overloaded functions
* fix[message-relayer]: fix failing test because of merge with develop (#1000)
* fix[message-relayer]: remove spreadsheet mode (#998)
* fix[message-relayer]: remove spreadsheet mode
* chore: add changeset
* Lower local rollup timestamp refresh (#985)
* update rollup timestamp refresh
* increase refresh time to 5s
* feat: fees v3 (#999)
* core-utils: fee impl v3
* l2geth: fees v3 impl
* integration-tests: update for fees v3
* chore: add changeset
* fix: typo
* integration-tests: fix and generalize
* fees: update fee scalar
* l2geth: check gas in the mempool behind usingovm
* tests: fix up
* l2geth: remove dead var
* truffle: fix config
* fix: remove dead coders (#1001)
* chore: delete dead coders
* chore: add changeset
* dtl: remove dead imports
* core-utils: delete dead tests
* batch-submitter: remove txtype
* chore: add changeset
* docs[message-relayer]: add a README and improve the interface for generating proofs (#1002)
* docs[message-relayer]: add basic docs and clean up an interface
* chore: add changeset
* dtl: log error stack for failed http request (#995)
* dtl: log error stack for failed http request
* chore: add changeset
* Add rpc-proxy service for whitelisting JSON RPC methods to the sequencer. (#945)
* Add healthcheck endpoint for rpc-proxy
Added ethereum-nginx-proxy source
updated README and docker image build
* Check ETH_CALLS_ALLOWED is set, clean up comments, remove old Dockerfile
* Pass additional information across domains via token gateways (#824)
* feat(contracts): add from and data args to L1ERC20Gateway
fix(integration): add gasLimit to fundUser
refactor(contracts): add data to gateway events
add changeset
fix(integration): provide data in outboundTransfer
refactor(contracts): reset Abs_L2TokenGateway to Abs_L2DepositedToken
refactor(contracts): fix mismatched names
* feat[contracts]: add custom gas arg to gateway
fix(contracts): take max of user vs. default gas
* fix(integrations): update ovm-eth function call
* fix(integration): remove unecessary explicit gasLimit
* test(contracts): 32kb transfer, 9MM gas
* fix(contracts): fixup comment, bytes arg last
* fix(integration): args order in integrations
* fix(contracts): remove unused L2 gas arg
* fix(contracts): limit data that can be passed to L2
* fix(integration): better tests for data length
* test: check for error on too large data
* Experimental: specify gaslimit in before hook
* fix(integration): add l2 gas argument
* fix: increase gas on fundUser
* fix(contracts): remove duplicate max size limit
* fix(integration): fine tune gas amounts
* lint
* fix: large data test
* fix(integration): set gas closer to real cost
* fix(contracts): remove unused bridge variables
These variables were the default gas amounts for cross domain messages
* fix(contracts): Reorder args
Place dynamic length args last
* fix(integration): update estimateGas values
* fix(integration): reset eth withdraw estimate to 21000
* fix(integration): update expected gas amount
* fix(integration): reduce gas amount for ETH withdraw
* More consistent style for Constant values (#991)
* chore(contracts): make container addresses be constants
chore(contracts): consistent style for constant vars
* chore(contracts): add internal on predeploy constants
* feat: deployment config for fee oracle contract (#936)
* feat[contracts]: add GasPriceOracle w/o predeploy
Based on #912
* feat[contracts]: congestion price oracle
* chore: add changeset
* contracts: gas price oracle (#917)
* contracts: gas price oracle
* tests: update
* fees: fix tests
* contracts: simplify gas price oracle
* lint: fix
* test: execution price is at the 1st storage slot
* chore: rename predeploy to GasPriceOracle
* chore: rename gas price oracle test name
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* Add an L2 deploy script for gas oracle contract
* Add a kovan deployment artifact
* Add deployment to readme
* Add extra validation & initial execution price
* Update README.md
* Fix execution price logic
* Perform new deployment with final contract
* contracts: better require in ovm gas price oracle
* Deploy L2GasPriceOracle
* Update contract to use new fee logic & rename to gas
* Deploy updated contract
* Fix lint
* gas price oracle: do not restrict gas price
* gas price oracle: new deployment
* tests: delete dead test
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* ops: expose debug namespace (#1007)
* develop merge fixes
* refactor[l2geth]: queue origin type (#975)
* refactor: queueOrigin type
* Convert queueOrigin to uint8 in encode
* Add changeset
* Regenerate json marshall
* style: combine lines
* Add Stringer for QueueOrigin
* Turn QueueOrigin into uint8
* l2geth: gen tx meta fix
* l2geth: gen tx meta fix
* lint
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix(sync-service): prevent underflows (#1015)
* fix(sync-service): prevent underflows
* chore: add changeset
* chore: remove dead confirmation depth
* chore: remove eth1conf depth from rollup config
* test: remove duplicate value in array (#1014)
* ci: tag docker image for canary with abbreviated GITHUB_SHA (#1006)
* ci: tag docker image for canary with abbreviated GITHUB_SHA
* ci: update from 6 bytes to 8 bytes of abbreviation
* refactor: improve logging for transactions being submitted to chain with gasPrice (#1016)
* refactor: improve logging for transactions being submitted to chain with gasPrice
* lint: apply lint autofixes
* dtl: remove stringify from db logic + more overflow protection (#1010)
* dtl: remove stringify from db logic
* l2geth: overflow protection
* dtl: overflow protection
* chore: add changeset
* ci: upload logs for failed integration tests (#1020)
* fix(dtl): improve slow blocking JSON parsing that occurs during l2 sync (#1019)
The use of eth_getBlockRange returns a large response which is very
slow to parse in ethersjs, and can block the event loop for upwards
of multiple seconds.
When this happens, incoming http requests will likely timeout and fail.
Instead, we will parse the incoming http stream directly with the bfj
package, which yields the event loop periodically so that we don't
fail to serve requests.
* fix: lint errors in dtl (#1025)
* fix[dtl]: fix dtl bug breaking verifiers (#1011)
* fix[dtl]: fix dtl bug breaking verifiers
* tweaks so tests pass
* chore: add changeset
* fix: deterministic blockhashes (#1032)
* config: set etherbase
* l2geth: add deterministic clique key
* l2geth: default value
* chore: add changeset
* test: add sync test for deterministic blockhash
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* Version Packages (#978)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* ci: add sync test's own workflow (#1031)
* fix(dtl): incorrect parsing of eth_getBlockRange result (#1037)
* Version Packages (#1045)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: no gas refund (#1043)
* l2geth: remove the gas refund
* chore: add changeset
* refactor[contracts]: remove one-off GasPriceOracle deployment file (#1046)
* refactor[contracts]: remove one-off gpo deployment
* chore: add changeset
* feat[contracts]: introduce new L1ChugSplashProxy contract (#1009)
* feat[contracts]: add L1ChugSplashProxy
* improve comments slightly
* start adding tests
* add more tests
* make the system pausable
* added another test
* add some extra comments
* Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* Update packages/contracts/test/contracts/chugsplash/L1ChugSplashProxy.spec.ts
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* chore: add changeset
* address review feedback
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* feat[contracts]: add sequencer fee wallet (#1029)
* wip: first draft of the fee wallet
* add fee wallet to dump
* rename to sequencer vault
* add L1 fee wallet to geth config
* add unit tests
* fix geth linting error
* add a basic integration test
* fix broken integration test
* add test for correct storage slot
* add integration test for fee withdrawal
* fix typo in integration tests
* fix a bug bin integration tests
* Update OVM_SequencerFeeVault.sol
* fix bug in contract tests
* chore: add changeset
* fix bug in contract tests
* build(deps): bump glob-parent from 5.1.1 to 5.1.2 (#1036)
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)
---
updated-dependencies:
- dependency-name: glob-parent
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
* fix: predeploy gasprice oracle (#1039)
* l2geth: delete extra config options
* l2geth: stop using extra config options
* l2geth: more stop using extra config options
* chore: add changeset
* l2geth: add new config for gpo owner
* chore: add changeset
* l2geth: fix tests
* tests: fix build
* l2geth: optimize loops (#1027)
* l2geth: optimize loops
* l2geth: stop ticker when done
* l2geth: don't wait for first tick
* chore: add changeset
* Enable custom tagging of release docker image (#1048)
* ci: enable custom tagging of release docker image
* ci: refactor to add prerelease prefix for secuirty
* doc: typo
* ci: fix indentation issue of canary workflow
* ci: fix typo with GITHUB_SHA
* fix: typo in USE_HARDHAT config (#1023)
* fix: abi encoded tx (#1049)
* contracts: don't double rlp decode
* chore: add changeset
* lint: fix
* deps: update
* linting: cleanup
* feat: contracts: use selector
* fix: contracts: use typescript
* contracts: use interface
* l2geth: bump to go 1.15 (#1058)
* l2geth: bump to go 1.15
* chore: add changeset
* Change monotonicity band-aid code to log warnings not errors (#1060)
* refactor: change monotonicity band-aid code to log warnings not errors
* build: add changeset
* feat(contracts, l2geth): native ETH value support for ovmCALL (#1038)
* feat(contracts): add ovmCALL-types with native value
* add ovmCALLVALUE context
* add ovmBALANCE
* test success and revert cases
* test empty contract case
* chore: lint
* test(integration-tests): ovmCALL-types with value (compiler and wrapper)
* fix ovmDELEGATECALL type, update tests
* add ovmSELFBALANCE
* fix ovmDELEGATECALL jumping to CALL
* chore: lint
* fix(contracts): account for intrinsic gas of OVM_ETH sends
* fix(contracts): merge conflict bug
* fix(contracts): update gas benchmark
* feat(contracts, integration-tests): use new value-compatible compiler
* feat(contracts,l2geth): support value calls in OVM_ECDSAContractAccount
* fix(contracts): ovmDELEGATECALL does not change message context
* feat(contracts): sending value between EOAs
* test(integration-tests): ovmDELEGATECALL preserves ovmCALLVALUE
* test(integration-tests): assert ovmSELFBALANCEs correct
* test(integration-tests): intrinsic gas for eth value calls
* test(integration-tests): update gas values
* chore(contracts): lint
* feat(contracts, l2geth): eth_calls with nonzero value
* chore: minor fixups and comments based on PR feedback
* test(integration-tests): add requested tests from PR reviews
* test(integration-tests): ovmSELFBALANCE is preserved in ovmDELEGATECALLs
* fix(contracts): fix bug where ovmDELEGATECALL could fail if balance was lower than the ovmCALLVALUE
* chore: add changeset
* fix(contracts): update intrinsic gas for worst-case value sends
* chore: address final PR nits/improvements
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* Add erc1271 support to contract account (#1052)
* add ERC1271 support, failing unit tests
* add integration test for isValidSignature
* remove .only
* lint
* add changeset
* clean up 1271 tests and lint
* switch back to using waffle wallet
* lint
* fix import
* feat[contracts]: slightly better account funding for hardhat accounts (rebased) (#1065)
* feat[contracts]: better account funding for hardhat accounts
* add a sleep to avoid any potential problems
* chore: add changeset
* fix: bug with gas estimation in funding step
* fix: limit to 20 accounts max
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* Ensure Sentry is correctly set up for DTL and MR (#1054)
* refactor: add logger and metrics to options for BaseService
* refactor: thread sentryOptions through from message-relayer into BaseService
* refactor: ensure DTL Logger is using Sentry for errors
* style: lint base-service.ts
* refactor: init Sentry on batch-submitter too
* refactor: init Sentry on message-relayer too
* refactor: pass in basic logger to MessageRelayerService
* build: provide changeset
* fix: correct usage of use-sentry boolean config
* refactor: appropriately type loggingOptions
* build: add @sentry/node
* build: add @sentry/node to message-relayer and fix linting issue
* Add more logging information to monotonicity violation logs (#1066)
* refactor: log idx of monotonicity violation from batch
* build: add changeset
* temporarily disable hardhat example tests (#1071)
* fix: monotonicity auto healer (#1070)
* fix: monotonicity auto healer
* add: changeset
* Version Packages (#1053)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Standard token bridge (#988)
* Remove abstract token gateway and deposited token implementations
* Further simplification of bridge contracts
* Standart token bridge and L2 token implementation
* Fix spacing
* Implement case when a bad deposit happens to a nonexistent L1<>L2 token pair
* Use SafeMath in common token bridge accounting
* test(contracts): fix finalizeWithdrawal test
* fix(contracts): use SafeERC20 on token deposits
* Rename OVM_L1ERC20Gateway to OVM_L1ERC20Bridge contract
* Rename iOVM_L1ERC20Gateway to iOVM_L1ERC20Bridge contract
* Cleanup gateway to bridge rename
* Better name for the mapping holding l1->l2 deposit amounts
* Use OZ SafeMath
* Rename local variables in OVM_L2DepositedERC20 from gateway to bridge
* Merge ETH and ERC20 bridge contracts
* Rename OVM_L1ERC20Bridge to OVM_L1StandardBridge and fix tests from merging the ETH and ERC20 bridges
* Better name for iAbs_BaseCrossDomainMessenger -> iOVM_CrossDomainMessenger
* Correct the bounce back of deposit sender and recipient properties
* Remove obsoleted event from OVM_L2DepositedERC20
* chore(contracts): change references from ETHGateway to Bridge
* Fix a linting error
* fix(contracts): add bridge to deployer
* Split off ERC20Bridge interface for the purposes
of being reused in custom ERC20 bridges
* Split off interface natspec definitions
* Draft version of OVM_L2DepositedERC20 splitted into a standard L2 erc20: L2StandardERC20 and
a common L2 bridge: OVM_L2StandardBridge
* style(contracts): define L1_ETH_ADDRESS as constant
* test(integration): update interface to use depositETH
* test(contracts): fix OVM_L1StandardBridge tests
* test(contracts): fix L2 Standard Bridge tests
* test(contracts): lint and remove an obsolete test case
* Fix modifier check to comply with the L2 bridge distinction from L2 token
* Simplify address <> interface casting in bridges
* Ensure natspec comments are correct
also add l1 and l2 token params to WithdrawalInitiated event for consistency
* Fix issues in L1 and L2 bridges to ensure
cross domain messages are sent only between the two bridges
also adjusted withdrawals to send to either finalizeETHWithdrawal or finalizeERC20Withdrawal
depending on which asset is being withdrawn
* Remove AddressManager from the L1 standard bridge
* REVERT ME: instruments cross domain enabled
* fix(contracts): remove Address Manager from L1 Bridge
* feat(contracts): make L2 Standard Bridge a predeploy
* WIP: update deployments for standard bridges
* WIP: update deployments for standard bridges
* l2geth: TEMP log contract calls
* chore(l2geth): replace eth gateway with standard bridge
* fix(contracts): make contract-deployment/config work
* WIP fix(integration): update integration tests for bridge
* Remove ovmEth from L1 Standard bridge as obsoleted
* Separate ERC20 standard implementation from L2 bridge
* Formatting fixes
* chore(l2geth): replace eth gateway with standard bridge
* Revert "REVERT ME: instruments cross domain enabled"
This reverts commit d5bb8f8f67974d0a3e65fc000f08858328a4bbbc.
* fix: lint ts
* Implement EIP-165 in the Standard L2 ERC20 token
Also switch that to be based off the OpenZeppelin default implementation plus mint and burn
Additionally remove the obsoleted iOVM_ERC20
* fix(contracts): add deployment check on bridge proxy
fix(contracts): whitespace
fix(contracts): init bridge implementation with non-zero address
* Remove dependency on Ownable contract for the StandardERC20 token on L2
* fix(contracts): update deployment scripts
* fix: lint
* remove debugging code
* fix: correct rpc get balance slot
* restore l2 cross domain messenger
* fix: lint
* Add a test for a non compliant token deposit
* Only allow EOAs to deposit ETH and ERC20
* Add comments and tests for ERC165 implementation
* Decide against using explicit ETH MOCK address as we're not using it for checks
* Fix linting issues
* Add onlyEOAContract restriction to standard bridge withdrawals
* Update codehashes in L2 Standard bridge
* fix(ops): remove unintentionally added file
* feat(contracts): add expectApproxGasCost function
* fix(integration): proper arrayify input on fundUser
* fix(integration): proper gas value checks
* Revert "Add onlyEOAContract restriction to standard bridge withdrawals"
This reverts commit 2713c06ceb2609e4f13718e1034a4d76210d9758.
* fix(contracts): removed unused expectApproxGasCost for now
* fix(contracts): update OVM_SequencerFeeVault for bridge changes
* lint
* Update deployment for L1 Bridge w/ ChugSplash
* Revert "l2geth: TEMP log contract calls"
This reverts commit 21d42259278449f221bf34605162229b3d9d4fa9.
* Apply suggestions from code review
* Apply suggestions from code review
* fix(contracts): deploy with chugsplash proxy
* fix(contracts): add working bridge and chugsplash proxy deployment
* fix(contracts,integration): 500k gas for depositETH
* comment(contracts): describe failed deposit handling on l2
* Apply suggestions from code review
Co-authored-by: ben-chain <ben@pseudonym.party>
* docs: add changeset
* fix(integration): set working l2 gas amount on funduser
* test(integration): add receive() test
* fix(contracts): reset receive to 1.2MM l2 gas
* test(examples): skip l1-l2 example test for now
* fix(contracts): drop hardcoded gas to 500k in receive()
* fix(contracts): use abi.encodeWithSignature
* fix(contracts): resolve merge conflicts
* feat(integration): add expectApprox for flexible gas testing
* fix(integration): fix failing gas tests
* fix: incorrect l2 gas for deposit
* Update utils.ts
* fix(workflow): disable l1-l2 example until npm imports are fixed
* chore: final round of PR review nits and tests
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* fix: comment out codeowners (#1073)
* fix: use predeploy constant lib for em wrapper (#1075)
* fix: use predeploy constant lib for em wrapper
* chore: add changeset
* fix[l2geth]: off-by-one sometimes breaking replica sync (#1082)
* fix[l2geth]: off-by-one sometimes breaking replica sync
* chore: add changeset
* fix(l2geth): Log 'end of OVM execution' correctly (#1080)
* refactor[contracts]: move account contracts to predeploy folder (#1085)
* refactor[contracts]: move account contracts to predeploy folder
* chore: add changeset
* maintenance[contracts]: rename precompiles test folder to predeploys (#1086)
* fix[bs]: disambiguate generic submission errors (#1051)
* fix[bs]: disambiguate generic submission errors
* add cases for errors
* separate out errors from transaction reverts with reasons
* remove extraneous errors
* WETH deposit and withdraw on OVM_ETH (#1083)
* feat(contracts): add no-op WETH9 functionality to OVM_ETH
* working WETH deposit and withdraw + tests
* add changeset
* address PR feedback
* update WETH9 contract implementation
* add fallback to WETH9
* add fallback and revert withdraw test
* update nit comment
Co-authored-by: ben <ben@pseudonym.party>
* Also move the accounts interface to iOVM/predeploys (#1087)
* refactor[contracts]: move account interface to predeploy folder
* chore: add changeset
* Version Packages (#1089)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: use -z flag for var unset in canary
* Use Eslint instead of Tslint (#1005)
* removed tslint
* forgot to commit files
* made .eslintrc.js consistent for all subdirs and other cleanup
* [removed] includes and files keys from tsconfig.json
* removed file level linting exceptions and added details to line level
* added changeset
* fixed newly introduced linting errors from rebase
* enable json import for batch submitter
* removed ecdsa-coder
* maybe a tsconfig issue?
* Update deploy.ts
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com>
* metrics[batch-submitter]: add new batch submitter metrics (#1074)
* metrics[batch-submitter]: add new batch submitter metrics
* chore: changeset
* account for failed submissions
* Fix canary publishing (#1093)
* ci: fix custom docker tag
* ci: use new env file
* ci: use outputs from previous job
* ci: fix headers of jobs
* ci: inherit canary tag from builder
* feat[ci]: upload logs for sync tests if failure (#1098)
* deploy: goerli 0.4.0 (#1099)
* deployments: goerli 0.4.0 rc
* readme: update
* chore: add changeset
* fix[dtl]: defend against RPC provider missing events (#1084)
* fix[dtl]: defend against RPC provider missing events
* chore: add changeset
* respond to review comments
* better error handling for missing handlers
* deploy: kovan v.4.0 rc (#1101)
* deploy: kovan v0.4.0 rc
* chore: add changeset
* readme: update
* maintenance[monorepo]: first pass update to README (#1106)
* maintenance[monorepo]: first pass update to README
Doing some relatively minor updates to the README just to clean things up a bit.
* replying to review comments
* Move the metric prefix string to a label (#1047)
Added changeset and fixes
Changeset to patch
* fix[smock]: add support for hardhat 2.4.0 (#1112)
* fix[smock]: add support for hardhat 2.4.0
* chore: add changeset
* lint: fix
* build(deps): bump hosted-git-info from 2.8.8 to 2.8.9 (#1064)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)
---
updated-dependencies:
- dependency-name: hosted-git-info
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Misc. small improvements to README (#1115)
* Update README.md
* Update README.md
* fix[dtl]: use the same L2 chain ID everywhere (#1122)
* fix[dtl]: use the same L2 chain ID everywhere
* chore: add changeset
* fix: make sync tests only on workflow dispatch (#1123)
* fix[dtl]: remove old stringification function (#1134)
* fix[dtl]: remove old stringification function
* chore: add changeset
* fix[dtl]: log server errors as ERROR instead of INFO (#1133)
* fix[dtl]: log server errors as ERROR instead of INFO
* chore: add changeset
* Contracts: connectL1Contracts & connectL2Contracts (#713)
* Contracts: connect-contracts
* Trying to resolve build problems
* connect-contracts build working
* Adds artifacts-ovm back to gitignore
* Removes incorrect changes
* Adds copy-artifacts script
* Adds test file (not working yet)
* fix: incorrect contract instantiation
* Improves tests and removes old deployment versions
* Single source of truth for predeploy addresses
* Reverts deployments/README.md
* Makes connect-contracts more DRY
* Adds missing @ethersproject/abstract-signer dependency
* Adds argument evaluation
* Adds L1Contracts and L2Contracts types
* Attempts removing artifacts-ovm again
* Adds webpack config (not working yet)
* build: add artifacts to dist (#776)
* Updates lint rule
* Adds l2 imports
* Fixes dependency tree bug
* Removes webpack stuff
* Fixing package.json issues and adds .DS_Store to gitignore
* Removes test-contracts script
* Reverting script change
* Adds comments
* Adds comment
* Renames deployments folders
* Fixes linting errors
* Generates markdown
* build: add deployments directory to Dockerfiles
* Removes unneeded contracts, improves error handling and tests
* Adds changeset
* yarn.lock
* Removes console.log
* Changes from minor to patch version
* Fixes lint errors
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix: prevent overflow in abi encoding (#1135)
* l2geth: prevent overflow in abi encoding to ovm codec tx
* chore: add changeset
* tests: replica syncing (#981)
* [wip] add l2_dtl and replica images
* passing basic dummy tx test
* add erc20 test
* add sync test to ci
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
* fix[relayer]: update exported files list in package.json (#1138)
* fix[relayer]: update exported files
* chore: add changeset
* fix: import path (#1141)
* fix: correct import path for altered contract path
* chore: add changeset
* refactor: improve logging for batch submission timeout scenarios (#1120)
* Add highest L1 and L2 block number Gauge metrics to DTL (#1125)
* build: add prom-client to data-transport-layer
* refactor: thread metrics more carefully through data-transport-layer; add two new metrics
* style: fix some style issues
* refactor: make metrics mandatory
* refactor: move metrics register code to top of file
* style: apply linting
* refactor: move promethesus initialization after express
* refactor: move promBundle call up, provide registry
* build: add changeset
* Improve Watcher ability to find transactions (#1107)
* remove listeners and use loop to find tx receipt
* add yarn ready
* moved filters inside loop
* [added] changeset
* Add minimal vscode settings and extensions (#1109)
* chore: add minimal vscode settings and extensions
* chore: Add "files.trimTrailingWhitespace" to vscode native config
* chore: replace vscode prettier plugin with eslint plugin
* fix[contracts]: remove part of MultiMessageRelayer deployment (#1144)
* fix[contracts]: remove part of MultiMessageRelayer deployment
* chore: add changeset
* Define L1 Starting block via OwnershipTransferred rather than AddressSet (#1129)
* Update service.ts
* Create thirty-years-look.md
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* Easy fix for broken watchers (#1121)
* Easy fix for broken watchers
* Ran yarn changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* feat: go packages (#1111)
* go: add utils module
* readme: update
* Version Packages (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* build: add husky pre-commit hook to lint (#1146)
* feat[contracts]: add mainnet deploy script (#1147)
* Add mainnet deploy script
* Update mainnet.sh
* Address PR review feedback
* feat: mainnet contract deployment 0.4.0 (#1148)
* feat: mainnet contract deployment 0.4.0
* feat: deployments readme
* chore: add changeset
* contracts: remove dead contract
* contracts: remove dead config
* tests: fix to not test for old contracts
* feat: `rollup gasPrices` RPC endpoint (#1136)
* feature: l2geth endpoint
* chore: add changeset
Co-authored-by: Liam Horne <liam@lihorne.com>
* Adds l2 standard bridge to contracts markdown file (#1151)
* Version Packages (#1150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add more info about our branching strategy to the README (#1114)
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Remove references to OVM_L1ETHGateway in deployments and readme (#1119)
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Elena Gesheva <elena@arenabg.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
Co-authored-by: Rajiv Patel-O'Connor <rajiv.patel.oconnor@gmail.com>
Co-authored-by: rajivpo <rajivpatel-oconnor@Rajivs-MacBook-Pro-2.local>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Tim Myers <timmyers09@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Annie Ke <annieke8@gmail.com>
Co-authored-by: platocrat <37757724+platocrat@users.noreply.github.com>
Co-authored-by: Matt Masurka <m.masurka@gmail.com>
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
Co-authored-by: Alejandro Santander <Palebluedot@gmail.com>
* Re-apply key changes on top of optimism most current develop
* Add docker-compose-replica.yml (#109)
* Create docker-compose-replica.yml
* Add replica service
* Update docker-compose-omgx-replica.yml
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* fix linter; patch gethl2
* configure the deployer correctly
* fix proposer / batch submitter
* update chainIDs
* update rpc test
* Create README_OMGX.md
* upstream - needs more work
* Adds delay to watcher (#1159)
* Adds delay to watcher
* Simplifies delay
* Adds changeset
* Fix wallet test
* Fix deployment test
* Add Python
* Update Dockerfile.omgx_monorepo
* Remove package-lock
* fix: bind dtl functions for missing event codepath (#1161)
* dtl: bind this in L1 missing element error handlers
* dtl: add additional logline
* chore: add changeset
* dtl: add more metrics
* dtl: use counter instead of gauge
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* fix: remove 'editor.formatOnSave' from global settings' (#1163)
* merge conflicts
* Update pre-commit
* Version Packages (#1167)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* minor
* Update pre-commit
* Fix wallet test (#119)
* Fix wallet test
* Fix deployment test
* Add Python
* Update Dockerfile.omgx_monorepo
* Remove package-lock
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Reapply standard changes on top of current develop
* Update package.json
* doc: add notes for releasing new versions with changesets (#1166)
* Bind correct object to method handler in DTL (#1168)
* fix: bind correct object to method handler
* build: add changeset
* Version Packages (#1169)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Fix web wallet
* Fix integration test (#124)
* Fix integration test (#125)
* Fix integration test
* Fix integration test
* Fix wallet_react
* Fix lint test
* Remove package-lock
* Update integration.yml
* Fix wallet deployer
* Collect docker log
* Fix l1-l2-deposit-withdrawal test
* Fix sync test
* Add chainID to deployer config
* make sync tests dispatch only
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Add short contribution section to primary README (#1157)
* Add short contribution section to primary README
* Update README.md
* fix: prevent batch submitter from submitting batches if low on ETH
* build: add changeset
* Eslint ignore the hardhat folder
* Update README.md
* Beginning to add working examples
* hardhart and waffle example tests
* document/check waffle
* test l1-l2 example
* add patch-package
* Update package.json
* build: ensure lint only staged files on commit
* refactor: do not run --fix on lint-staged
* refactor: *.{ts,js} for eslint regex
* l2geth: rollup client explicitly checks for >= 400 errors
* l2geth: sync service retries connection to remote server
* l2geth: test errors returning from remote
* chore: add changeset
* syncservice: nit
* feat[message-relayer]: add easy relay tool
* chore: add changeset
* upkeep[monorepo]: add changeset info to README
* merge conflict squash
* Daily sync up (#137)
* build: ensure lint only staged files on commit
* refactor: do not run --fix on lint-staged
* refactor: *.{ts,js} for eslint regex
* l2geth: rollup client explicitly checks for >= 400 errors
* l2geth: sync service retries connection to remote server
* l2geth: test errors returning from remote
* chore: add changeset
* syncservice: nit
* feat[message-relayer]: add easy relay tool
* chore: add changeset
* upkeep[monorepo]: add changeset info to README
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Kelvin Fichter <kelvin@optimism.io>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* github actions: bump geth CI golang version
* fix(contracts): prevent L2->L1 calls to system contracts
* Update message relayer fast contracts (#139)
* prepare for wallet reorg
* Create yarn.lock
* fix hardhat bug
* merge conflict resolve
* daily sync up (#141)
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* fix(contracts): prevent L2->L1 calls to system contracts
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: ben <ben@pseudonym.party>
* Add Factory contract for creating standard ERC20 tokens
compliant with the standard bridge
* Disallow 0 address for l1 token when creating l2 standard token
* Fix linting issue
* Add deployment script for the L2 token factory
* Fix deploy script OVM_L2StandardTokenFactory constructor params
* Add changeset
* Cleanup deployment script for OVM_L2StandardTokenFactory
and fix a solidity linting error
* refactor(integration): Add clarity to the expectApprox function signature
* fix: skip codechecks for PRs from external repos
* DRAFT move react wallet and the contracts to more clear folders (#138)
* DRAFT move react wallet and the contracts to more clear folders
* merging the axios integration chagnes
* updated the message-relayer-fast contracts
* integrate message-relayer-fast into standard dockers
* Dockerize the message-relayer-fast
* update Readme.md
* remove duplicated contracts - just keep everything in /contracts
* add deploy for fast messenger
* message-relayer-fast testing
* Update serve.sh
* Delete yarn.lock
* Update constants.ts
* Create yarn.lock
* Update constants.ts
* Update function-manipulation.spec.ts
* increase the retries and other minor fixes
* Improved documentation
* fix omgx integration tests
* Update omgx-integration.yml
* integration test remove duplicated tests
* Fix units test configuration
* Update docker-compose-omgx-services.yml
* integration test setup fixes
* fix wallet integration test
* fix for crash on return
* integration tests for `message-relayer-fast`
* Update env.ts
* Autodeploy Token Bridges
* Update wallet contracts
* Update utils.ts
* improve omgx integration tests
* Add address manager address to GH actions for now
Co-authored-by: sahil kashetwar <>
Co-authored-by: Sahil k <sahil@enya.ai>
Co-authored-by: cby3149 <cby3149@outlook.com>
* merge conflicts
* GH actions regular changes
* husky
* Daily sync up (#144)
* build: set up eslint prettier correctly
* style: run yarn lint --fix at root
* build: add necessary packages to workspace root
* build: remove --format stylish
* build: set semvery ranges to match across packages
* build: set up prettierrc.js for monorepo
* refactor: rename Range to BlockRange
* build: set up correct working directories
* build: set up lint:fix to use eslint not prettier
* style: run lint:fix on all code
* build: remove prettier extension recommendation
* style: update configuration to include babel-eslint for .js linting
* build: set concurrency to 1 to prevent git add errors on lerna lint
* github actions: bump geth CI golang version
* fix(contracts): prevent L2->L1 calls to system contracts
* Add Factory contract for creating standard ERC20 tokens
compliant with the standard bridge
* Disallow 0 address for l1 token when creating l2 standard token
* Fix linting issue
* Add deployment script for the L2 token factory
* Fix deploy script OVM_L2StandardTokenFactory constructor params
* Add changeset
* Cleanup deployment script for OVM_L2StandardTokenFactory
and fix a solidity linting error
* refactor(integration): Add clarity to the expectApprox function signature
* fix: skip codechecks for PRs from external repos
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: ben <ben@pseudonym.party>
Co-authored-by: elenadimitrova <elena@arenabg.com>
Co-authored-by: Reggie Gomez <reggieag@gmail.com>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
* docker: pin to alpine 3.13 for l2geth
A bug has appeared when older versions of Docker are used to build
alpine based images in alpine version 3.14. To prevent this problem
from happening to the users, this PR pins the version to 3.13.
The observed problem is that `make` cannot run any command and
the error message states `Operation not permitted.` Removing
`make` was one way to solve the problem but that would increase
the diff from upstream geth.
See these links for details:
https://github.com/alpinelinux/docker-alpine/issues/182
https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0
* fix: update statement for skipping codechecks
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://kovan.optimism.io npx hardhat set-l2-gasprice \
--l2-gas-price 1
```
This hardcodes the predeploy address of the `OVM_GasPriceOracle` smart
contract and the Owner must be used to do the updating, otherwise the
transaction will revert.
* removed unused functions from core utils
* [added] changeset
* next gen integration tests for the OMGX stack (#149)
* next gen integration tests for the OMGX stack
* finish first pass integration test outline
* move LP tests to the `message-relayer-fast`
* Update omgx-integration.yml
* add more tests to message-relayer-fast
* connect up the .env variables
* hard code URIs
* Update utils.ts
* Update omgx-integration.yml
* fix - should have been 8080
* Update omgx-integration.yml
* which address to use?
* Update omgx-integration.yml
* removing not needed code
* remove superfluous logging code
* Update utils.ts
* Update utils.ts
* additional comments and formatting improvements
* fix: use older changes on tests (#152)
* fix: use older structure
* correct messenger
* LP fees on the correct side
* correct messenger
* rearrange depl order
Co-authored-by: Souradeep Das <dsouradeep2@gmail.com>
* Update README_OMGX.md (#150)
Refactored some changes and added some comments I thought might be helpful for people.
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* tests: re-enable all tests (#155)
* re-enable all tests
* re-enable all tests
* Add solhint to contracts package
* Turn off compiler-version rule in solhint
* Add suggestions by @maurelian
https://github.com/ethereum-optimism/optimism/pull/1033#issuecomment-866146467
* Change solhint output formatting to table
* Disable contract-name-camelcase rule in solhint
* Fix max-line-length linting issues in contracts
* Fix quotes linting issues in contracts
* Remove private-vars-leading-underscore rule in solhint
* Add contracts linting to github action
* Fix for hardhat account balance parsing
* Disable generating the bytecodeHash in hardhat contract artifacts
* Review fixes
* Fix review notes
* Fix smockit for a change in hardhat ^2.4.0
which changes the way it parses errors from returndata
Fix provided by @smartcontracts
* dtl: configurable gas price backend
Adds a new config option `--l1-gas-price-backend` or
`DATA_TRANSPORT_LAYER_L1_GAS_PRICE_BACKEND` that can be set to `l1` or
`l2`. This impacts the behavior of the HTTP endpoint `GET /eth/gasprice`
by changing what is queried to return the L1 gas price. The L1 gas price
is required to compute the L2 fee since the L2 fee consists of
`L1 gas price * L1 gas used + L1 gas price * L2 gas limit`. If the L1
gas price differs too much between different L2 providers, then users
using `eth_estimateGas` may submit transactions with too low of a fee
and be unable to submit transactions to the sequencer.
By configuring the DTL to use L2 as the L1 gas price backend, it will
call the Sequencer's RPC endpoint `rollup_gasPrices` which returns the
L1 and L2 gas prices from the point of view of the sequencer. The L2 gas
price exists in the state, so that will always be the same between the
sequencer and any replicas. The L1 gas price does not live on chain, so
querying for it from the sequencer directly will ensure that users send
transactions with a fee that is large enough.
Also adds eth/gasprice info to README.
* Remove bl wl service (#154)
* replace `bl-wl` with direct calls the `omgx_deployer`
* Update docker-compose-omgx-services.yml
* Update up_local.sh
* Add CORS headers to http servers
* updated frontend to use the two new HTTP servers for the addresses
* update webwallet to work with both local and rinkeby
* Add missing .env variables to GH actions
* re-enable docker tages
* re-enable wallet transaction history
* Update up_local.sh
* Update up_local.sh
* Add flag to omgx_deployer to only serve addresses w/o deploying new contracts
* Update docker-compose-omgx-services.yml
* Add back tagging system and improved reliability of GH actions
* removed commented out service
* add rinkeby token addresses (#161)
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* fix: lint deploy-l2 folder in contracts
* Add AWS integration (#159)
* Add AWS integration
* Remove artifacts
* updated ops_omgx/README.md and added .github/workflows/deploy2aws-integration.yml and .github/workflows/push2aws.yml
* add automated provision and deletion of an ec2 instance for running the integration tests
Co-authored-by: Petar Denev <pdenev@gmail.com>
* fix: update CI to avoid running out of memory
* Version Packages
* ci: release latest image tags on release
* feat: update README to include info about rebasing
* Add op_exporter for sequencer metrics and health endoint
Added metric for sequencer health
Added Dockerfile for op_exporter;
Fixed Dockerfile path
* merge conflicts
* re-comment out the usual GH actions
* feat[integration-tests]: make tests work for prod networks
* chore: add changeset
* Increase client_body_buffer_size for rpc-proxy
Added client_max_body_size to rpc-proxy config
* l2geth: use `hexutil.Big` to prevent overflows
The `RollupClient` decodes the JSON from the DTL as a uint64,
this updates it to be a `big.Int`
Includes a test for the value field that ensures it does not overflow
* ci(contracts): only run codecov if contracts package is modified
In order to skip running the CodeCov job when it isn't relevant, a new job was added to the ts-packges workflow. For a PR, this job identifies all the files modified between the base branch and the tip of the PR branch, and writes to a variable which can be used to decide if subsequent jobs should run.
Github Actions provides an easy method for achieving this at the level of a workflow, but not for specific jobs within a workflow.
* Version Packages
* chore(ci): Skip codecov on push events
* feat: add workflow for running SNX test suite
* go: implement gasprices package
The `gasprices` package implements the logic that updates
L2 gasprices on the Optimistic Ethereum Network.
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* gas-oracle: implement and test
This commit adds the `gas-oracle` which is an offchain entity
that sends transactions to L2 to update the gas price. It must
be configured with a private key as the `OVM_GasPriceOracle`
is owned.
The `gas-oracle` is added to the changesets setup.
Tests are included as well as CI. Dockerizing will happen
in a follow up PR.
* gas-oracle: ci + docker build/publish
Adds a dockerfile for the `gas-oracle` as well as adding it as
a service in the `docker-compose.yaml`. It is not enabled by
default due to memory issues in CI already happening occasionally
where the integration tests are oom killed.
The `gas-oracle` is configured with a key that owns the
`OVM_GasPriceOracle`.
This PR adds the `gas-oracle` to the Github Actions
workflow that is responsible for publishing the docker images.
* Add replica (#169)
* fix: update erc20 deposits (#166)
* fix: update erc20 deposits
* fix: auto default token
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* resolve merge conflicts
* Update docker-compose.yml
* Update docker-compose.yml
* [pull] develop from ethereum-optimism:develop (#164)
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://kovan.optimism.io npx hardhat set-l2-gasprice \
--l2-gas-price 1
```
This hardcodes the predeploy address of the `OVM_GasPriceOracle` smart
contract and the Owner must be used to do the updating, otherwise the
transaction will revert.
* Add op_exporter for sequencer metrics and health endoint
Added metric for sequencer health
Added Dockerfile for op_exporter;
Fixed Dockerfile path
* feat[integration-tests]: make tests work for prod networks
* chore: add changeset
* Increase client_body_buffer_size for rpc-proxy
Added client_max_body_size to rpc-proxy config
* l2geth: use `hexutil.Big` to prevent overflows
The `RollupClient` decodes the JSON from the DTL as a uint64,
this updates it to be a `big.Int`
Includes a test for the value field that ensures it does not overflow
* ci(contracts): only run codecov if contracts package is modified
In order to skip running the CodeCov job when it isn't relevant, a new job was added to the ts-packges workflow. For a PR, this job identifies all the files modified between the base branch and the tip of the PR branch, and writes to a variable which can be used to decide if subsequent jobs should run.
Github Actions provides an easy method for achieving this at the level of a workflow, but not for specific jobs within a workflow.
* Version Packages
* chore(ci): Skip codecov on push events
* feat: add workflow for running SNX test suite
* go: implement gasprices package
The `gasprices` package implements the logic that updates
L2 gasprices on the Optimistic Ethereum Network.
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* gas-oracle: implement and test
This commit adds the `gas-oracle` which is an offchain entity
that sends transactions to L2 to update the gas price. It must
be configured with a private key as the `OVM_GasPriceOracle`
is owned.
The `gas-oracle` is added to the changesets setup.
Tests are included as well as CI. Dockerizing will happen
in a follow up PR.
* gas-oracle: ci + docker build/publish
Adds a dockerfile for the `gas-oracle` as well as adding it as
a service in the `docker-compose.yaml`. It is not enabled by
default due to memory issues in CI already happening occasionally
where the integration tests are oom killed.
The `gas-oracle` is configured with a key that owns the
`OVM_GasPriceOracle`.
This PR adds the `gas-oracle` to the Github Actions
workflow that is responsible for publishing the docker images.
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Ben Wilson <bwilson@optimism.io>
Co-authored-by: Kelvin Fichter <kelvin@optimism.io>
Co-authored-by: smartcontracts <kelvinfichter@gmail.com>
Co-authored-by: Ben Wilson <82120899+optimisticben@users.noreply.github.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Maurelian <maurelian@protonmail.ch>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
* Update docker-compose.yml
* adding l1-l2 test ecs scheduled task that does verify communication between L1 and L2 and L2 to L1 (#167)
Co-authored-by: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com>
* Update docker-compose.yml
* daily update (#170)
* contracts: add set-l2-gasprice task
This task allows a user to update the L2 gas price using hardhat.
An example of doing so would be:
```bash
$ export CONTRACTS_DEPLOYER_KEY=0x..
$ CONTRACTS_RPC_URL=https://…
* feat: fee splitter system (#469) ---- Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com> Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com> Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com> * fix: failing tests (#553) * refactor: revenue sharing config (#538) * fix: pre pr and semgrep (#565) * fix: warnings (#571) * fix: tests failing on fork environment (#575) * fix: use encode call on constructors (#578) * feat: add integration splitter test (#581) * fix: integration test nits (#583) * test: more coverage on splitter tests (#594) --------- Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com> * fix: add missing operator fee vault field (#616) * feat: invariants and tests (#595) * fix: ir informationals (#609) * fix: pre pr (#622) * refactor: use cdm (#624) * fix: update withdrawal gas limit value on check (#627) * fix: remove rev share field from deploy op chain input struct (#628) * refactor: remove initializer and vaults getter changes (#631) * fix: remove immutable check over vaults (#634) Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com> Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com> Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com> * fix: audit findings (#658) * fix: pre pr * feat: add user guide docs for rev sharing on op deployer (#666) * docs: add create2 comment (#667) --------- Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com> Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com> Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com> Co-authored-by: Simon Something /DrGoNoGo <83670532+simon-something@users.noreply.github.com> Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com> Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com>
* feat: fee splitter system (#469) ---- Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com> Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com> Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com> * fix: failing tests (#553) * refactor: revenue sharing config (#538) * fix: pre pr and semgrep (#565) * fix: warnings (#571) * fix: tests failing on fork environment (#575) * fix: use encode call on constructors (#578) * feat: add integration splitter test (#581) * fix: integration test nits (#583) * test: more coverage on splitter tests (#594) --------- Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com> * fix: add missing operator fee vault field (#616) * feat: invariants and tests (#595) * fix: ir informationals (#609) * fix: pre pr (#622) * refactor: use cdm (#624) * fix: update withdrawal gas limit value on check (#627) * fix: remove rev share field from deploy op chain input struct (#628) * refactor: remove initializer and vaults getter changes (#631) * fix: remove immutable check over vaults (#634) Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com> Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com> Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com> * fix: audit findings (#658) * fix: pre pr * feat: add user guide docs for rev sharing on op deployer (#666) * docs: add create2 comment (#667) --------- Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com> Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com> Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com> Co-authored-by: Simon Something /DrGoNoGo <83670532+simon-something@users.noreply.github.com> Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com> Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com>
* feat: introduce fee splitter for revenue share (#17536) * feat: fee splitter system (#469) ---- Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com> Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com> Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com> * fix: failing tests (#553) * refactor: revenue sharing config (#538) * fix: pre pr and semgrep (#565) * fix: warnings (#571) * fix: tests failing on fork environment (#575) * fix: use encode call on constructors (#578) * feat: add integration splitter test (#581) * fix: integration test nits (#583) * test: more coverage on splitter tests (#594) --------- Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com> * fix: add missing operator fee vault field (#616) * feat: invariants and tests (#595) * fix: ir informationals (#609) * fix: pre pr (#622) * refactor: use cdm (#624) * fix: update withdrawal gas limit value on check (#627) * fix: remove rev share field from deploy op chain input struct (#628) * refactor: remove initializer and vaults getter changes (#631) * fix: remove immutable check over vaults (#634) Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com> Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com> Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com> * fix: audit findings (#658) * fix: pre pr * feat: add user guide docs for rev sharing on op deployer (#666) * docs: add create2 comment (#667) --------- Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com> Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com> Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com> Co-authored-by: Simon Something /DrGoNoGo <83670532+simon-something@users.noreply.github.com> Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com> Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com> * Add DeployFeesDepositor script (#18223) * Add DeployFeesDepositor script * Refactor deploy script to remove Output struct * forge fmt * Make logResults() pure * fix return value names * remove unused import * Apply suggestions from code review Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com> * Add missing natspec * Add natspec to tests --------- Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com> * feat: add superchain ops upgrader audit report * chore: rename upgrader audit report * fix: proper report naming * feat: add audit report * chore: update report with audit fixes commit hash * fix: rename audit report on readme * chore: add l2 splitter contracts on version name --------- Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com> Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com> Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com> Co-authored-by: Simon Something /DrGoNoGo <83670532+simon-something@users.noreply.github.com> Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com> Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com> Co-authored-by: Maurelian <john@oplabs.co>
* sysext: correctly populate address configuration (#17771)
sysext was previously using the L1Address field from the devnet-env.json,
which netchef does not use. We remove this field to prevent future
confusion and switch to the correct `Address` field.
* op-devstack: give more time for l2 to include bridge tx (#17772)
in persistent devnets with longer block times, it can take longer
than the previously-configured 60 seconds, leading to timeouts and flakes.
* op-acceptance-tests: fix test due to geth breakage (#17757)
* op-acceptance-tests: fix test due to geth breakage
geth changed the value of params.HistoryServeWindow and it broke the test.
https://github.com/ethereum/go-ethereum/pull/32127
* op-acceptance-tests: avoid failing when we can wait
* feat: fix test eth amounts to be smaller (#18044)
* ctb: Skip blueprint DG impl verification (#18054)
* ctb: Skip blueprint DG impl verification
When the deploy dipuste game v2 feature flag is enabled, we should skip
verification of the old v1 implementation blueprints
* assert zero-valued blueprint address
* fix typo
* cannon: Default to cannon VM version 8 (#18062)
* Bump 'current' cannon vm to version 8
* Update docker diff check
* Always build "next" version of cannon
* tests: Non-zero prestate when running DeployDisputeGame (#18057)
* devstack: Enable individual dev features instead of replacing the whole bitmap (#17994)
Allows things to be combined easily and avoids the risk of features being left disabled because they were later overwritten.
* op-acceptance-tests: fix two papercuts (#18067)
- spammer schedules emit warning logs too often.
- DA footprint test does not retry while looking for an L1 origin often enough.
The root problem (arbitrary timeouts everywhere) can be addressed later.
* cannon: Include state version in witness output (#18068)
* chore: Go cache for several uncached builds (#18056)
* chore: Go cache for several uncached builds
* chore: Comment
* chore: Fix modules for cache
* fix: Don't cache fuzz tests
* chore: Restore cache for make-fuzz
* chore: Better parallel output
* chore: Restore cache namespace
* fix: Typo
* refactor: remove redundant error checks in deriver (#18069)
* cannon: Rework cannon "next" vm handling in e2e tests (#18064)
* Revert "Always build "next" version of cannon"
This reverts commit 71ea70199d2227ea1d0c7f83298bb9abd3acadb3.
* Only use 'next' cannon prestate if it differs from the current prestate
* op-service/apis: remove redundant interface (#18049)
* forklive: Use v2 DG ABI accordingly (#18065)
* feat: cleanup contracts CI and properly run dev feature tests (#18051)
* feat: run dev features thru normal tests
* fix: test suite names
* fix: skip test for v2 dispute game feature
* fix: build go ffi
* fix: build source before coverage tests
* op-devstack: fix TestSubProcess flake (#17815)
The caller of cmd.StdoutPipe() must finish reading from the returned
io.ReadCloser before calling cmd.Wait(), otherwise not all of the
logs will be read. This is a race condition that resulted in
occasional test flakes.
This commit fixes the buggy test and removes a lot of unnecessary code
in the process.
* Enable monitoring in sysgo (#18017)
* WIP
- Passing metrics env vars through in l2_cl_kona
- Added L2MetricsDashboard sysgo lifecycle component
* Documenting and wiring up L2MetricsDashboard
Also adds some util unit tests
* Adding op-reth metrics support
Also:
- Updates README with more useful metrics info
- Fixes error log in l2_cl_kona.go
- Changes default docker exec path to `docker`
- Makes available port util threadsafe
* Updating GetAvailableLocalPort signature
* Adding logging context in kona-node, op-reth, l2 metrics dashboard
* GetEnvVarOrDefault: os.GetEnv => os.LookupEnv to allow for setting ""
* Single env var to enable/disable metrics for all configured components
* Encapsulate vars and functions within sysgo package
* Inline metrics endpoint parsing from logs
* Adding issues to kona and op-reth and referencing in metrics port setting
* Making metrics' subprocesses start/stop in parallel
* Moving PrometheusMetricsEndpoint into l2_metrics_dashboard.go
* Using new L2MetricsRegistrar interface instead of callbacks
Also uses stack.IDWithChain instead of service name
* Simplifying PrometheusMetricsTarget
Still conveys how to interpret the host & port without
storing that on the struct
* Using logger's key-value format where possible
* Handling file close errors when writing metrics configs
* Fixing broken test
* Making metrics url parsing more resilient
* Start/Stop updates
- Removing goroutines from Start
- Blocking on waitgroup in Stop instead of waitgroup or context done
* Removing failure when registering the same endpoint twice
* Removing redundant if
* Unexporting util functions
* Pinning specific versions of prometheus and grafana
Overrides are possible via env vars
* Updating Subprocess.Stop calls after rebase
* op-acceptance-tests: bump spammer budget (#18080)
was seeing lots of insufficient funds errors on Jovian alphanet
* chore(op-acceptance-tests): ci; kurtosis defaults to cci runner (#18083)
* opcm-standard-validator: Add validation for CANNON_KONA games (#18050)
* Add validation input for cannon-kona prestate
* Pass errorPrefix as a parameter to assertValidPermissionlessDisputeGame
* Inject gameType into assertValidPermissionlessDisputeGame
* Add checks for cannon-kona game type
* Cleanup - rename game variables for clarity
* Cleanup: guard logic that is only necessary for v1 games
* Deploy cannon-kona game for standard validator tests
* Update existing test error expectations
* Add CannonKona tests
* Bump contract versions
* Run pre-pr
* Preserve current validation methods and structs
* Run pre-pr
* fix(op-batcher): exempt generic da from max input size (#18074)
* fix(op-batcher): exempt generic da from max input size
* Apply suggestion from @sebastianst
---------
Co-authored-by: Javed Khan <tuxcanfly@gmail.com>
Co-authored-by: Sebastian Stammler <seb@oplabs.co>
* add `Test_ProgramAction_OperatorFeeFixTransition` (#17925)
* add Test_ProgramAction_OperatorFeeFixTransition
* fix
* undo changes to submodule
* respond to review
* remove proxyAdmin inputs from opcm and sv, derive it from the sysCfg, fix tests (#17744)
* remove proxyAdmin inputs from opcm and sv, derive it from the sysCfg, fix tests
* run semver lock for sv
* remove unused imports
* adapt go code, fix go tests
* fix UpgradeOPChain test
* fix addGameType go test
* use semverComp to make interface usage checks flexible
* fix failing ci
* use better naming for old opcm interfaces and related contracts
* fix go tests
* try fix op-acceptance tests
* finally fix op-acceptance tests?
* update block number in justfile and not do u16a upgrade on tests
* add upgradeSuperchainConfig pkg and add e2e bootstrap test for it upgrade in v5_0_0 pkg
* fix failing upgrade go test, add more upgradeOPChain solidity test
* rm old validate fn from sv interface
* rm unused import
* add unexpectedEncoding revert test and improved assertion to upgradOPChainInput
* fix semgrep
* fix upgradeSuperchainConfig script
* make upgrade test fork a specific block
* update addGameType to support the new opcm addGameType interface
* fix go lint
* fixes
* fixes
* fixes
* fix semver and go lint
* fix go test
* fix go test
* fix go test
* fixes
* fixes for add game type go test
* fixes
* remove outdated test
* pull and fix
* chore: Bump kona version in docker build (#18094)
* ctb: Fix OPCM std validator test setup for v2 DG (#18066)
* ctb: Fix OPCM std validator test setup for v2 DG
* fix typo
* op-deployer: Add flags for new v2 dispute game implementations options (#18027)
* op-deployer: Fix error handling in add_game_type CLI parsing.
Previously it exited with an error message when there was no error.
* op-deployer: Add flags for new implementations options
Also provides standard values as defaults.
* chore(op-acceptance-tests): op-acceptor v3.6.1 (#18086)
* opcm: Add CANNON_KONA support for opcm.upgrade (#18059)
* opcm: Add CANNON_KONA support for opcm.upgrade
* fix sepolia upgrade integration test
* run cannon-kona upgrade in integration test
* remove debugme
* fix stdvalidator.test_init
* fix outdated opcm bindings
* update semver; snapshots
* cleanup setNewGameImplV2
* fix semver; fix natspec
* fix op-deployer Migrate input encoding
* fix nits
* fix semantic merge conflict
* fix fmt
* update semver
* only expect cannon-kona reverts if feature flag set
* op-acceptance-tests: Improve DA footprint test stability (#18098)
* test(contracts): enhance L2ToL1MessagePasser test coverage and organization (#18028)
* fix(test): add missing event expectation in burn test
* refactor(test): remove redundant initiateWithdrawal tests and add nonce assertion
* test(contracts): add coverage for version, receive, messageNonce, and burn edge case
* refactor(test): reorganize test contracts to match source function order
* fix(test): restore removed initiateWithdrawal tests with scenario-specific assertions
* refactor(test): remove redundant zero-balance burn test per review
* refactor(test): remove unnecessary contract code length assertion per review
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* test: enhance OperatorFeeVault test coverage and organization (#18087)
* refactor(test): remove redundant contract name from constructor test
Simplified test_constructor_operatorFeeVault_succeeds to test_constructor_succeeds
to match naming convention used in other FeeVault tests (BaseFeeVault, etc.)
* test(contracts): add version format validation for OperatorFeeVault
Added OperatorFeeVault_Version_Test contract to validate that the version
constant returns a valid semver string using SemverComp.parse()
* refactor(test): reorganize test contracts to match source declaration order
Moved Version_Test before Constructor_Test to match the order in which
version (line 21) and constructor (line 25) are declared in OperatorFeeVault.sol
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* op-deployer: Support working with V2 fault dispute game contracts (#18024)
* op-deployer: Support working with V2 fault dispute game contracts
* Deploying implementations supports the fault dispute game configuration options previously used by deploy dispute game
* DeployDisputeGame has been updated to work with v1 and v2 contracts
* SetDisputeGameImpl works with and without game args
* ReadImplementationAddresses loads the V2 dispute game addresses
* op-deployer: Don't validate inputs set as game args when v2 is enabled.
* op-deployer: Restore absolute prestate check for V1 contracts.
* opcm: Read super dispute game implementation addresses.
* opcm: Allow clock extension to be zero again
* Store permissionedDisputeGame when V2 enabled
* opcm: Restore the clockExtension > 0 check
* op-acceptance-tests: fix operator fee test (#18104)
fails against isthmus networks. Discovered when running against
jovian betanet.
* opcm: Set cannon_kona init bond during upgrade (#18100)
* opcm: Set cannon_kona init bond during upgrade
* address review comments
* op-dispute-mon: node endpoint error metrics (#17622)
* dispute-mon: Add metric to track node endpoint errors
* dispute-mon: Add node endpoint error count metric
* dispute-mon: Add metric for mixed availability of nodes
* dispute-mon: Add metric to track mixed safety
* dispute-mon: Add metric for disagreeing output roots
* Increase log level for mixed availability
* Use better check for RollupEndpointErrors
* Fix test after merge
* Remove useless logging
* Remove unnecessary fields from Service struct
* Remove unused function and lint fix
* mise: Define fake install sources for disabled tools (#18109)
The latest mise (installed by brew) errors if tools don't have a known install source even if they're disabled. While we control the version of mise used in CI, local development depends on an existing mise to bootstrap and there isn't a good way to ensure it is using a specific version.
* remove DeployProxy (#18122)
* remove DeployProxy
* fixes
* all: Move fork names into new op-core/forks package (#18121)
* fix: use default mips version and use local op-deployer (#18129)
* fix: bump mips version from 7 to 8
* fix: don't require building binary to use justfile with correct op-deployer version
* fix: remove mips version arg
* feat: Use build-no-tests in op-deployers just build command (#18130)
* fix(prompt): add guidance to skip unrelated CI failures (#18127)
* feat(ci): run upgrade tests with dev flags (#18133)
* feat(ci): run upgrade tests with dev flags
Updates CI to run upgrade tests with dev flags enabled. Only OP
will run with dev flags enabled for now, this should be sufficient
and will avoid dramatically increasing CI impact.
* fix: correct cannon kona prestate in validator tests
* opcm: Update OPCM.migrate to support Cannon-Kona games (#18078)
* Update opcm.migrate to set super-cannonKona
* Validate cannonKona prestates during migrate
* Update OCPM migrate tests
* Cleanup: add helper to construct gameType expectations
* Fix game validation test logic
* Fix shadowed var warning
* Rework op-deployer migrate CLI args for absolute prestate
* Read cannonKona prestate in GenerateOPCMMigrateCalldata
* Don't create SuperCannonKona game if prestate is zero
* Update migration gameType helper
* Clean up test logic, perform stricter checks on empty games
* Add error messages
* Clear game args when game impl removed
* Add test with empty cannonKona prestate
* Enforce non-empty cannon prestate
* Bump contract version
* Run just pre-pr
* Cleanup and add another test
* Fix test documentation
* Add new prestate flags to the migrate CLI command
* Update script comment with updated sample input
* Add check for consistent permissionless weth contracts post-migrate
* Bump opcm version again
* Run semver-lock
* fix(op-deployer): update justfile to use current CLI flags (#18143)
* all: update op-geth to pull in fusaka and jovian timestamps (#18131)
* all: update op-geth to pull in fusaka timestamps
* update for scr changes
* point go.mod at op-geth rc
* address comment
* op-service/flags: Modularize fork override flags (#18135)
* chore(op-acceptance-tests): op-acceptor v3.6.2 (#18120)
* op-devstack: debug info when L2CL peers connection fails (#18149)
* feat(ctb): Add the nonce and txHash into the ScheduledTransactions struct (#18097)
* feat(ctb): Add the nonce and txHash into the ScheduledTransactions struct
* chore(ctb): bump the semver on SaferSafes
* feat(ctb): txHash at start of struct
* semver-lock
* fix ITimelockGuard to match
---------
Co-authored-by: Alberto Cuesta Cañada <alberto@oplabs.co>
* feat(l3s): Add support for the default finality lookback (#18071)
* chore(op-acceptance-tests): switch to docker executor (#18084)
* all: Move package predeploys from op-service to op-core (#18145)
* all: Move package predeploys from op-service to op-core
* gofmt
---------
Co-authored-by: Adrian Sutton <adrian@oplabs.co>
* Safer Safes audit fixes (no bytecode changes) (#18147)
* Typo
* Fix natspec notice
* `_blockingThreshold` natspec
* Bump the safe nonce when cancelling
* Accepted trade-off
* We allow cancelling transactions from disabled guards.
* Fixed `changeOwnershipToFallback` natspec.
* Updated version and semver-lock
* Typo
* op-acceptance: Add acceptance test for playing out dispute games (#18085)
* op-acceptance: Add acceptance test for playing out dispute games.
* op-acceptance: Wait for step to be called by honest challenger.
* dsl: Make asChallengerClaim private
* dsl: Support posting the root claim of the bottom game.
* Don't need to use permissioned proposals.
* Cache honest trace accessors.
* Review feedback
* fix(op-acceptance-tests): ci; slack token (#18156)
* op-batcher: refactor (#18174)
* op-batcher: embed ChannelBuilder and remove redundant code
* op-batcher: remove dead code
* op-acceptance-tests: Replace fast games with regular FDGs in withdrawal test (#18152)
* fix(op-deployer): increase cliRunner test timeouts (#18179)
* fix(op-deployer): increase cliRunner test timeouts
* add cliRunner logs for debugging help
* contracts: Load CANNON game implementation from DisputeGameFactory instead of via artifacts (#18155)
* contracts: Load CANNON game implementation from DisputeGameFactory instead of via artifacts
* contracts: Load permissionless WETH implementation dynamically
* contracts: Don't attempt to load game args - the updated DisputeGameFactory that supports them isn't available yet.
* challenger: Stop kona-host using color in logs (#18182)
* SaferSafes audit fixes 2 (#18172)
* Missing `indexed` in an event
* Don't allow configuring a non-enabled safe
* Version and semver-lock
* Disallow the safe address as a fallback owner
* Document why we prefer not to revert
* Disallow a timelock delay of zero, use `setGuard(0)` instead.
* lint and semver-lock
* Simpler natspec
* Update test description
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
---------
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
* chore(op-acceptance-tests): flake-shake; test promotions (#18198)
* feat: introduce fee splitter for revenue share (#17536)
* feat: fee splitter system (#469)
----
Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com>
Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com>
Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com>
* fix: failing tests (#553)
* refactor: revenue sharing config (#538)
* fix: pre pr and semgrep (#565)
* fix: warnings (#571)
* fix: tests failing on fork environment (#575)
* fix: use encode call on constructors (#578)
* feat: add integration splitter test (#581)
* fix: integration test nits (#583)
* test: more coverage on splitter tests (#594)
---------
Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com>
* fix: add missing operator fee vault field (#616)
* feat: invariants and tests (#595)
* fix: ir informationals (#609)
* fix: pre pr (#622)
* refactor: use cdm (#624)
* fix: update withdrawal gas limit value on check (#627)
* fix: remove rev share field from deploy op chain input struct (#628)
* refactor: remove initializer and vaults getter changes (#631)
* fix: remove immutable check over vaults (#634)
Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com>
Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com>
Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com>
* fix: audit findings (#658)
* fix: pre pr
* feat: add user guide docs for rev sharing on op deployer (#666)
* docs: add create2 comment (#667)
---------
Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com>
Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com>
Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com>
Co-authored-by: Simon Something /DrGoNoGo <83670532+simon-something@users.noreply.github.com>
Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com>
Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com>
* ci: Use cached solidity compilers (#18140)
Should reduce the likelihood of text file busy errors.
* op-challenger: Support super-kona games (#18184)
* op-node: remove dead code (#18183)
* op-supernode: Runnable and RPC Activities with Heartbeat Example (#18141)
* op-supernode: Runnable and RPC Activities with Heartbeat Example
* Address Changwan's Comments
* fix Makefile Typo
* dispute-mon: new metric to track out-of-sync node endpoints (#18105)
* batch_decoder: Fix & allow config loading via L2 chain ID (#18209)
* op-devstack: remove fetching for cluster depset (#18211)
* refactor(scripts): remove GenerateOPCMMigrateCalldata script (#18212)
* ci: Prepare for kona prestate verification (#18175)
* ci: Prepare for kona prestate verification
* review comments
* add accursed hack
* apply review suggestions
* pipe mise use logs to file
* cannon-kona: Add support for building kona prestate and kona-host (#18144)
* kona: Add a justfile to build a specific version of kona
* Try building on a machine
* Cache properly
* Remove REPO_ROOT
* Build pre-interop and interop kona prestates
* Set the cannon-kona prestate in interop tests.
* ci: Build kona-host
* Test kona-host can execute
* Fix rust image version
* Use two separate machines
* No remote docker for machine executor
* Update rust
* Install clang
* Fix machine config
* Use default docker image since mise is installing rust
* Set kona-host and prestate URL in challenger config
* Remove test-kona step
* Try not installing clang
* Change justfile
* Really force a change
* Back to installing clang
* Restore cannon prestate for kurtosis tests
* Remove forced change var
* Ensure tests that don't use kona can run even if kona components haven't been built.
Add skipped test to actually run cannon-kona game. Doesn't pass yet because kona-host doesn't support ws:// URLs which are used by sysgo.
* Add cannon-kona config for interop challenger.
* Only add cannon-kona games when feature toggle is enabled.
* Use kona v1.2.2
* Fix kona prestate URL
* Only set cannon-kona config for tests that opt-in.
Removes the need for run-kona-host.sh
* op-acceptance-tests: give contract deployer enough eth (#18230)
* op-devstack: refactor how L2 forks are required (#18228)
* remove DeployPreimageOracle scripts (#18151)
* remove DeployPreimageOracle scripts
* try fix go test
* try fix go test
* try fix go test
* fixes
* fixes
* fixes
* fixes
* fix(op-faucet): explicitly define timeouts (#18235)
* fix(op-faucet): explicitly define timeouts
* fix(op-faucet): reduced timeout
* op-e2e: Remove support for L2OO withdrawals (#18201)
op-e2e hasn't had a configuration that used L2OO for a long time so remove the code paths to perform withdrawals pre-fault proofs.
* cannon: Fix shutdown process to ensure preimage server channels are closed (#18229)
* cannon: Fix shutdown process to ensure preimage server channels are closed
kona-host wasn't exiting when the client program completed leaving cannon hung forever.
Closing the file channels sends a signal it actually listens to so it exits.
Also strengthen the fallbacks to ultimately terminate the subprocess forcefully if it ignores even the KILL signal.
* cannon: Remove Signal(Kill) since the Kill method just does that.
* fix(op-acceptance-tests): flake-shake; guard against empty tests. (#18238)
* op-acceptance-tests: run Jovian tests against Pectra and BPO2 (#18005)
* op-acceptance-tests: run Jovian tests against Pectra and BPO2
* fix bug?
logs
* fix it for real this time
* op-devstack: err on malformed multiaddr (#18240)
* Debounce FCU Update (#18234)
* chore: General-purpose Github release binary downloader (#18245)
* chore: Github release binary provider
* fi: Untar
* chore: Comments
* refactor(prompt): remove unnecessary test reordering by source function order (#18248)
* Recommended a Safe fallback owner (#18239)
* chore: Get rid of latitude-1 boxes (#18251)
* chore: Blobless checkouts for some jobs (#18249)
* Enhance Hashing library test coverage and quality (#18195)
* test(contracts): enhance Hashing library test coverage and quality
- Convert hashDepositSource test to fuzz test for broader coverage
- Add harness function for hashCrossDomainMessage to enable proper revert testing
- Add test for hashCrossDomainMessage unknown version revert case
- Add comprehensive test for hashL2toL2CrossDomainMessage function
- Ensure all public functions have test coverage
- Maintain test contract organization matching source function order
* test(contracts): restore original hashDepositSource test as known vector
- Add test_hashDepositSource_knownVector_succeeds alongside fuzz test
- Preserves original test case (0xd25df7858efc1778118fb133ac561b138845361626dfb976699c5287ed0f4959, 0x1)
- Addresses reviewer concern about maintaining historical test coverage
- Both fuzz test and known vector test now pass (11 total tests)
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* contracts: ReadImplementations output include AnchorStateRegistry + Opcm components (#18241)
* fix(ci): publish-contract-artifacts disable parallel composite upload (#18236)
* fix(ci): publish-contract-artifacts disable parallel composite upload
* add explanatory comment
* ci: move publish-contract-artifacts from latitude to circleci runner
* op-node: Capture driver start log (#18254)
* fix(ci): bump machine size for publish-contract-artifacts (#18257)
* doc: add contract release checklist requirement (#18242)
* doc: add contract release checklist requirement
* Link to finalizing section
---------
Co-authored-by: Maurelian <maurelian@protonmail.ch>
* chore: Drop code persistence from the CI workflows (#18259)
* chore: Drop code persistence
* chore: Install contract dependencies & attach workspace
* chore: Acceptance tests
* chore: Last two latitude boxes gone (#18260)
* chore: Last two latitude boxes gone
* chore: Bump the resources
* fix(contracts-script): adds support for zstd scripts (#18237)
* fix(contracts-script): adds support for zstd scripts
* fix(contracts-script): missing extract support
* fix(op-service): tar transversal attack protection
* fix(op-service): zstd installation as a command
* fix(op-service): pin zstd
* test(contracts): enhance RLPWriter test coverage and organization (#18119)
* test(contracts): enhance RLPWriter test coverage and organization
- Add fuzz test for writeUint to test broader range of values
- Add comprehensive test coverage for writeAddress function
- Add comprehensive test coverage for writeBool function
- Reorganize test contracts to match source function declaration order
(writeList, writeString, writeAddress, writeUint, writeBool)
All 31 tests passing with improved coverage for previously untested functions.
* refactor(tests): undo RLPWriter test file reordering per reviewer feedback
Restore original test contract order (writeString → writeUint → writeList)
to reduce diff size as requested by reviewer. New test contracts for
writeAddress and writeBool are appended at end of file. No functional
changes to existing tests - only reordering.
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* op-e2e: Only deploy the fast game in AllocTypeFastGame (#18263)
* op-e2e: Only deploy the fast game in AllocTypeFastGame
Use the fast game alloc in withdrawal tests and not in alphabet tests.
Actually make the fast game fast.
* op-e2e: Use fast games for another withdrawal test
Setup proposer to create permissioned games if fast games aren't enabled.
* op-supernode: Enable P2P for Virtual Nodes (#18213)
* op-supernode: Enable P2P for Virtual Nodes
* remove unit test for disabled p2p
* op-acceptance: Remove work around that creates a "fresh" L2 user (#18265)
* chore(op-acceptance-tests): op-acceptor v3.6.6 (#18266)
Updates op-acceptor to [v3.6.6](https://github.com/ethereum-optimism/infra/releases/tag/op-acceptor%2Fv3.6.6).
* op-node: update OnUnsafeL2Payload to perform ELSync gap filling (#17751)
* op-node: update OnUnsafeL2Payload to handle ELSync
* op-node: add SyncModeReqResp flag
* op-devstack, op-e2e: add SyncModeReqResp=true to keep current behavior
* op-acceptance-tests: matrix for SyncModeReqRespSync and ReqRespSyncDisabled
* fixup
* op-node: change default value for --syncmode.req-resp to true
* Apply suggestion from @pcw109550
Co-authored-by: Changwan Park <pcw109550@gmail.com>
* updated debug logs
* add checks for EL sync alongside CL sync checks
* Update op-devstack/sysgo/l2_cl.go
Co-authored-by: Sebastian Stammler <seb@oplabs.co>
* Update op-node/rollup/driver/sync_deriver.go
Co-authored-by: Sebastian Stammler <seb@oplabs.co>
* Update op-acceptance-tests/tests/sync/clsync/gap_clp2p/sync_test.go
Co-authored-by: Sebastian Stammler <seb@oplabs.co>
* address review comments from seb
---------
Co-authored-by: Changwan Park <pcw109550@gmail.com>
Co-authored-by: Sebastian Stammler <seb@oplabs.co>
* test(contracts): improve RLPReader test coverage and organization (#18232)
* test(contracts): add comprehensive test coverage for RLPReader library
- Add RLPReader_ToRLPItem_Test contract with tests for empty bytes revert and valid conversions
- Add RLPReader_ReadRawBytes_Test contract with tests for various RLP item types
- Reorganize test contracts to match source function declaration order (toRLPItem, readList, readBytes, readRawBytes)
- Rename test contracts to PascalCase for consistency (ReadList_Test, ReadBytes_Test, ReadRawBytes_Test)
- All 45 tests passing with improved coverage for previously untested functions
* refactor(test): restore original test contract order and naming
- Restore original order: readBytes_Test, readList_Test (then new tests)
- Restore original lowercase naming: readBytes_Test, readList_Test
- Keep new test coverage: ToRLPItem_Test, ReadRawBytes_Test
- All 45 tests still passing
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* op-node: Fix PeekUnsafePayload Test name (#18268)
* chore: Ensure go 1.25.4 compatibility (#18247)
* chore: Update go
* debug: Disable go deps
* chore: reenable abigen
* chore: reenable geth
* chore: reenable mockery
* chore: Replace go deps with binaries
* chore: Replace golangci-lint
* chore: Revert mockery version
* chore: Revert mockery version
* chore: Mockery updates
* chore: Mockery updates
* chore: Revert go version
* debug: Why
* chore: Use default golangci-lint
* debug: Back
* docs(graphite): add vm.expectRevert low-level call pattern rule (#18272)
* docs(graphite): add vm.expectRevert low-level call pattern rule
* docs(graphite): flag missing assertions on vm.expectRevert low-level calls
* ci(contracts): increase heavy-fuzz job resources to 2xlarge (#18276)
* feat: contracts changes required for OPCMv2 (#18244)
* feat: contracts changes required for OPCMv2
* fix: upgrade asr in OPCM
* fix: add ASR tests
* fix: test names
* all: upgrade op-geth (#18280)
* op-dispute-mon: Rename L2BlockNumber to L2SequenceNumber (#18278)
The field is used for both block numbers with output root games and timestamp for super root games.
* temp(ci): reinstate the initialize job for the release workflow (#18284)
* temp: reinstate the initialize job for the release workflow
It just echoes a message and is configured with the correct tag and
branch filters.
* fix echo
* add requires --initialize to subsequent jobs in release workflow (#18285)
* op-devstack: DSL: Configurable attempts for EL NotAdvanced (#18286)
* fix: update expected SuperchainConfigProxy impl and conditionally update it (#18293)
* fix: updated expected SuperchainConfigProxy impl after U17 sepolia upgrade
* fix: conditionally update superchainConfig
* op-challenger: Update version of kona-host in docker image to 1.2.2 (#18231)
* op-challenger: Update version of kona-host in docker image to 1.2.2
* ci: Attempt to create a single source of truth for the kona version
* sysgo: Fix typos
* kona: Update to 1.2.4 (#18302)
* kona: Update to 1.2.4
* kona: Enable challenger acceptance test
* kona: Delete bin dir when cleaning
* kona: Fix key for kona-host cache
* ctb: Fix DisputeGameFactory fuzz tests (#18296)
* cannon: Add go 1.25 tests (#18279)
* cannon: Add go 1.25 tests
* cannon: Use go 1.25.4 for tests.
Simplify and actually run the keccak tests.
* op-e2e: Deflake TestMissingBatchE2E: Retry inclusion check when indexing (#18304)
* op-e2e: Deflake TestMissingBatchE2E: Retry inclusion check when indexing
* use ticker
* handle timeout err
* test(contracts): add version validation test for WETH contract (#18303)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* build(contracts): enforce compiler warnings and fix test return value checks (#18264)
* build(contracts): enforce compiler warnings as errors
- Add deny_warnings to foundry.toml default profile
- Add set -e to pre-pr command in justfile
* test(contracts-bedrock): fix unchecked low-level call return values in FeeSplitter tests
- add proper return value checks for low-level .call() operations
- fix Warning 9302 in FeeSplitter.t.sol (3 occurrences)
- fix Warning 9302 in FeeSplitterVaults.t.sol (1 occurrence)
* build(contracts): ignore too-many-warnings error in foundry config
* fix(test): fix assertion logic in FeeSplitter expectRevert tests
- remove assert(!success) after vm.expectRevert() calls
- add success variable reference to suppress unused variable warning
* ci(contracts): add latest artifact fallback to reduce PR build times (#18291)
* ci(contracts): add latest artifact fallback to reduce PR build times
- upload artifacts with "latest" name in addition to checksum-based name in publish-artifacts.sh
- add --fallback-to-latest flag to pull-artifacts.sh
- enable fallback logic to try artifacts-v1-latest.tar.{gz,zst} when exact checksum not found
- update contracts-bedrock-tests job to use --fallback-to-latest flag
- update contracts-bedrock-coverage job to use --fallback-to-latest flag
- update contracts-bedrock-tests-upgrade job to use --fallback-to-latest flag
* refactor(script): extract download_and_extract helper in pull-artifacts
* fix(scripts): prevent path traversal in artifact extraction
* revert: remove pull-artifacts.sh and CI config changes for phased rollout
* Add logfmtms to Log Format Usage (#18297)
* cannon: Fix support for state version 7 in latest docker builds (#18311)
Latest cannon now only supports state version 8, so ensure we use an older cannon for state version 7 when building multicannon.
* cannon: Ensure cannon temp files are removed before exiting. (#18312)
os.Exit doesn't run defer statements before exiting. So return cli.Exit error instead - still lets us set the error code and triggers an exit, but handled by urfave after the function has returned and defer statements have run.
* op-node: Light CL: Frontend Flags (#18270)
* op-node: Light CL: Frontend Flags
* better go
* op-node: Move unsafeOnly related logs to init
* Removed default values for optional flags
* Use IsSequencer instead of isVerifier on syncCfg check
* Early fail by checking invalid flag combinations
* Better logs for unsafe and safe status
* feat: setBatcherHash address overload (#18298)
* feat: setBatcherHash address overload
* chore: semver
* fix: Artifact publishing script (#18275)
* op-sync-tester: Verifier Engine APIs for Jovian (#18307)
* op-acceptance-tests: Include Jovian for Sync Tester HF tests
* op-sync-tester: Support Jovian
* Fix sync tester extra data validation
* Check safe only advancement
* fix comment
* Disable discovery because we cut the CLP2P manually
* ci(contracts): enable latest artifact fallback logic (#18310)
* ci(contracts): enable latest artifact fallback logic
- add --fallback-to-latest flag to pull-artifacts.sh
- enable fallback forcontracts tests, coverage, and upgrade jobs in ci config
- extract download_and_extract helper function in pull-artifacts.sh
- add path traversal protection with --exclude='*../*' flag to tar commands
* test: trigger artifact fallback by modifying test file
* fix(scripts): address bots security concerns in pull-artifacts.sh
- add secure curl flags (--fail, --location, --connect-timeout, --max-time, --tlsv1.2) to prevent hangs and enforce TLS
- update path traversal exclusion pattern from '*../*' to '*..*' to block all paths containing '..' anywhere
- revert test comment change used for CI testing
* op-deployer: record opDeployerVersion in intent and state (#18333)
* docs: add cgt audit report (#18328)
* docs: add cgt audit report
* Update docs/security-reviews/README.md
Co-authored-by: Matt Solomon <matt@mattsolomon.dev>
---------
Co-authored-by: Matt Solomon <matt@mattsolomon.dev>
* all: upgrade op-geth (#18214)
* lsp fixes
* update go versions, delete cannon go1.23 modules
* remove dead code that was panicking
* go mod tidy in cannon modules
* op-program: Update baseline cannon report
* update geth to synctest tag
---------
Co-authored-by: inphi <mlaw2501@gmail.com>
* circleci: Slack context for scheduled-sync-test-op-node (#18341)
* op-chain-ops: add check-jovian cmd (#18269)
* op-chain-ops: add check-jovian cmd
* op-chain-ops: add extra data format validation to check-jovian command
* op-chain-ops: enhance block header validation in check-jovian command to differentiate between zero and non-zero BlobGasUsed
* refactor using op-geth library fns
* Rename checkBlockHeader to checkBlock and improve Jovian activation
checks
* Add secret-key flag to send tx-to-self
When a hex secret key is supplied, send a signed tx-to-self on L2, wait
up to 2 minutes for it to be mined, and use its block for the
BlobGasUsed check. Normalize 0x prefix and surface errors on failure.
* lint
* Require non-zero BlobGasUsed for Jovian
* Use txmgr to send and wait for tx in check-jovian
Replace manual key parsing, signing, and bind.WaitMined with a
SimpleTxManager (txmgr). Add l2endpoint to env and wire txmgr config,
using txmgr.Send to submit and await the self-transfer receipt.
* Validate BlobGasUsed against DA footprint
* Use provided context for transaction send
* Update op-chain-ops/cmd/check-jovian/main.go
Co-authored-by: Sebastian Stammler <seb@oplabs.co>
* Remove comment about BlobGasUsed
* Document secret key option for check-jovian
Add usage examples for CHECK_JOVIAN_SECRET env var and the --secret flag
* Return error on zero DA scalar; harden blobGasUsed
Treat a DA footprint gas scalar of 0 in L1Block as an error (Jovian
should not allow it). Delay calling t.From() until after creating the tx
manager and check the BlobGasUsed pointer before dereferencing to avoid
nil derefs.
* Annotate txmgr logger with component field
* Return error for blocks with no transactions
Treat blocks with zero transactions as an error instead of proceeding.
Retain the inconclusive warning for single-transaction blocks. Compute
DA footprint only for blocks with multiple transactions.
---------
Co-authored-by: Sebastian Stammler <seb@oplabs.co>
* test(contracts): add comprehensive test coverage for Constants library (#18267)
- Split EIP1967 constants test into separate tests for better clarity
- Add tests for ESTIMATION_ADDRESS, DEFAULT_L2_SENDER, GUARD_STORAGE_SLOT, ETHER, and DEPOSITOR_ACCOUNT constants
- Add test for DEFAULT_RESOURCE_CONFIG() function covering all 6 struct fields
- Import IResourceMetering interface for ResourceConfig struct testing
All 8 tests pass successfully.
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* test(contracts): enhance LegacyMessagePasser test coverage with fuzz tests (#18340)
* test(contracts): convert passMessageToL1 test to fuzz test
- Convert test_passMessageToL1_succeeds to testFuzz_passMessageToL1_succeeds
- Fuzz both message content and sender address for broader coverage
- Fix assertion to use assertTrue() instead of assert()
* refactor(test): improve test naming and validation
- Rename testFuzz_passMessageToL1_succeeds to testFuzz_passMessageToL1_arbitraryInput_succeeds
- Add message length bound (4096 bytes) to prevent out-of-gas in heavy-fuzz CI
- Add negative assertion to verify per-sender separation
- Rename test_version_succeeds to test_version_validFormat_succeeds
- Replace hardcoded version check with format validation (non-empty + 2 dots)
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* feat(op-validator): add v5.0.0 contracts support (#18299)
* feat(op-validator): add v5.0.0 contracts support
* fix(op-validator): lint
* fix(op-validator): disable 5.0.0 in tests
* fix(op-validator): detect validatoraddress
* fix(op-validator): add comments
* fix(op-validator): use semver to compare
* feat: expose starting root in ASR (#18343)
* feat: expose starting root in ASR
* fix: have function expose struct
* fix: bump circleci image size
* fix: bad test for upgrades
* Enforce deterministic shell script formatting with shfmt (#18329)
* Add shfmt
Fix .editorconfig
* apply formatting with shfmt
* feat: add op-succint contracts (#18277)
* feat: add op-succint contracts
* feat: add types and errors for op-succinct contracts
* fix: some types and OutputRoot -> Proposal
* fix: import errors
* fix: l2Blocknumber to l2SequenceNumber
* fix: remove unused import
* fix: interface compiler version, naming, and semgrep fixes for ci
* Update packages/contracts-bedrock/src/dispute/lib/Types.sol
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
* fix: build error for types file
* chore: bump semver lock
* chore: bump semver after conflict
* fix: bump semver lock
* fix: ignore new contract in initializer tests
* docs: add attribution
* fix: bump semver lock
* fix: bump semver
* fix: bump semver
* fix: bump semver lock
* chore: semver lock got hands
* fix: semver lock
* fix: semver lock
* fix: semver lock
* fix: semver lock
---------
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
* fix(ci): add branch restriction and label override for artifact fallback (#18330)
* fix(ci): restrict artifact latest fallback to PRs only
- add branch check to only use --fallback-to-latest on non-develop branches
- ensure develop merges build with fresh artifacts
* feat(ci): add force-use-fresh-artifacts label override for artifact fallback
* fix(ci): replace gh cli with curl for label check
* refactor(ci): extract artifact fallback logic to bash script
- move conditional logic from circleci config to use-latest-fallback.sh
* fix(ci): add security flags to curl in use-latest-fallback.sh
* fix(ci): use jq instead of grep for json parsing
* fix(ci): add error handling for github API failures
- wrap curl and jq calls in conditional to catch failures
- default to fallback behavior if API call fails (safe default)
- log warning message when API is unreachable
* SystemConfig: Parse L1 Receipts Atomically Before Application (#18292)
* SystemConfig: Parse L1 Receipts Atomically Before Application
* Change Apply rules to all Valid ; PR Comments
* Add indicies back to error
* fix(op-acceptance-tests): reduce per-package timeout (#18349)
* op-node/rollup/derive: Fix too old batch epoch handling (#18283)
* fix(ci): add dependency installation to heavy fuzz nightly job (#18351)
- add install-contracts-dependencies step in contracts-bedrock-heavy-fuzz-nightly job
* feat(op-deployer): forge verify (#18096)
* feat(op-deployer): forge verify
* fix(op-deployer): state.json verification
* fix(op-deployer): test and lint
* fix(op-deployer): add apply step with validation (disabled)
* fix(op-deployer): add detection for partial verification
* fix(op-deployer): update address
* fix(op-deployer): comments
* fix(op-deployer): test
* fix(op-deployer): make logging debug
* fix(op-deployer): comments
* fix(op-validator): add todo
* chore(ci): op-e2e-cannon-tests; xlarge machine (#18359)
Job kept being killed, probably due to hitting resource limits.
* feat: cgt (#18076)
* feat(cgt): custom gas token
Signed-off-by: Hex <165055168+hexshire@users.noreply.github.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Ashitaka <96790496+ashitakah@users.noreply.github.com>
Co-authored-by: AgusDuha <81362284+agusduha@users.noreply.github.com>
* feat: add gasPayingTokenName and gasPayingTokenSymbol on json config files
* fix: contracts semver
* fix: remove system config bool
* test: add OptimismPortal2CGT tests
* chore(cgt): set cgt flag l1block & fixes
* fix(linter): resolve goimports formatting issue
* feat: add separate l2 contracts for cgt (#530)
* feat: add L1BlockCGT
* feat: add L2ToL1MessagePasserCGT
* chore: remove test exclution in test validation
* test(cgt): fix failing tests (#529)
* test(cgt): fix failing tests
* test(cgt): fix portal version
* test(cgt): skip tests on forked mode
* fix: predeploys test cgt mismatch
* test(cgt): minor fixes
---------
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
* fix(cgt): revert weth
* cgt: feature flag integration
Updates the implementation to use the new feature flagging system
* config: make backwards compatible
Use the legacy config name so that less needs to change for legacy CGT
chains
* fix: build issue
Remove leftover merge conflict
* fix: better backwards compatibility
* build: fix
* lint: fix
* snapshots: update
* op-deployer: apply test with CGT
Add a specific test for CGT in the intent
* contracts-bedrock: fix versioning
* lint: fix
* deployer: remove standard values
* contracts: semver lock
* contracts-bedrock: fix semver + abis
* cgt: solidity test cleanup
* solidity: fmt
* tests: remove dead imports
* tests: fixup
* cgt: configurable liquidity amount
* feat: configurable native asset liquidity balance
Fix the build for this feature
* cleanup: merge L1Block logic so that we inherit
Keeps it simple because development on Jovian is happening and we will
inherit any Jovian modifications automatically
* snapshots: update
* cgt: inherit logic for L2ToL1MessagePasser
Generally simplifies the code
* semver-lock: update
* lint: fix
* lint: fixup
* interfaces: fix
* fixes: smol
* deploy-config: sane default
* lint: fix
* linting: fix
* lint: fix
* semgrep: fix
* lint: fix
* tests: fix
* tests: fix fuzz
* fix: custom gas token rebase (#17484)
* fix: import in OptimismPortal2CGT test and pre-pr
* fix(cgt): add missing native asset amount (#543)
* fix: upgrade contract name
* feat: add nativeAssetLiquidityAmount to config json files
* fix: add correct nativeAssetLiquidityAmount in op-deployer
* fix: add correct nativeAssetLiquidityAmount in op-e2e and fix withCustomGasToken argument on op-devstack
* fix: restore OptimismPortal2CGT
* fix: all comments
* fix: comments
* fix: governace
* fix: remove aux
* fix: remove aux
* fix: deploy cgt
* fix: revert cgt deploy config
* fix: deploy config
* chore: run linter
* fix: remove unnecessary GetNativeAssetLiquidityAmount
---------
Co-authored-by: Ashitaka <ashitaka@defi.sucks>
Co-authored-by: agusduha <agusnduha@gmail.com>
Co-authored-by: hexshire <hex@wonderland.xyz>
* fix: l2 genesis pipeline (#554)
* fix: add nativeAssetLiquidityAmount in e2e apply test (#555)
* fix: failing test
---------
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Ashitaka <ashitaka@defi.sucks>
Co-authored-by: hexshire <hex@wonderland.xyz>
Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>
* fix: semver lock
* fix: CGT review fixes (#17534)
* fix: json default zero
* feat(cgt): add native asset liquidity amount test & omitempty on cgt struct
* test: check native asset liquidity amount is correctly configured
* feat: add omitempty to name and symbol on cgt intent struct
* fix: check value in cgt
* feat(cgt): add cgt dev feature
* feat: add cgt dev feature
* refactor: set custom gas token (#563)
* feat: add cgt devFeatures and remove useCustomGasToken from DeployOPChainInput
---------
Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>
* fix: ir informational
* fix: informational
* fix: legacy tag
* feat(cgt): add setNativeAssetLiquidityAmount & L2Genesis max amount check
* feat: add setNativeAssetLiquidityAmount & L2Genesis max amount check
* test: fix bound param in liquidity controller
* fix: remove unused import
* refactor: move max amount check inside setNativeAssetLiquidity
* refactor: make chainIntent.CustomGasToken a non-pointer (#574)
* refactor: make chainIntent.CustomGasToken a non-pointer
* test: fix custom gas token text (#576)
---------
Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>
* fix: undo tests
Co-authored-by: hexshire <hex@wonderland.xyz>
* fix: cgt portal (#577)
* fix: semver
* fix: cgt tests coverage (#582)
* fix: l2genesis expectRevert amount test
* test: improve l1block coverage
* test: improve l1blockcgt coverage
* test: add isCustomGasToken tests on SystemConfig
* test: improve L2ToL1MessagePasserCGT coverage
* test: improve L2ToL1MessagePasser coverage
* fix: naming pre-pr
* fix(cgt): change L2ToL1MessagePasser & OPContractsManager semver (#584)
* fix: change L2ToL1MessagePasser semver
* fix: change L2ToL1MessagePasser & OPContractsManager semver
* fix: cgt feature tests (#585)
* fix: cgt feature tests
* fix: deposits with amount 0 when cgt enabled
* Revert "fix: deposits with amount 0 when cgt enabled"
This reverts commit 8bee464d45cf7d4040c4dd1459ffc78de2508024.
* fix: cgt portal (#587)
* fix: ci fixes (#588)
---------
Co-authored-by: Ashitaka <96790496+ashitakah@users.noreply.github.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>
Co-authored-by: hexshire <hex@wonderland.xyz>
* fix: semver
* fix: opcm version
* fix: tests
* feat(op-acceptance-tests): add acceptance tests for native CGT across L1/L2 (#17451)
- Gate suite via L1Block.isCustomGasToken(); assert name/symbol non-empty
- L2: value transfer pays CGT token (typed amounts via op-service/eth)
- L2: XDM rejects callvalue; L2StandardBridge legacy withdraw reverts
- L1: Portal receive/deposit rejects ETH; introspect SystemConfig addr
- L1: assert SystemConfig.isCustomGasToken() is true
* fix: custom gas token rebase review comments (#17577)
* chore: use w3 library
* fix: msg error
* refactor(cgt): rename amount & add geq 0 check (#600)
* feat: add NativeAssetLiquidityAmount sign check
* refactor: rename NativeAssetLiquidityAmount to InitialLiquidity
* refactor(cgt): rename json nativeAssetLiquidityAmount to initialLiquidity (#601)
* refactor: rename json nativeAssetLiquidityAmount to initialLiquidity
* fix: only add initialLiquidity to cgt intent struct
---------
Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>
Co-authored-by: Ashitaka <96790496+ashitakah@users.noreply.github.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
* fix: cgt review (#17612)
* refactor: replace enableCustomGasToken with cgt devfeature
* feat: remove fund in NativeAssetLiquidity (#605)
* fix(cgt): remove OptimismPortal2 test from exclusions (#606)
* fix: remove OptimismPortal2 test from exclusions
* fix: remove virtual and restore constructor in portal test
* refactor: use low level call to receive test
* refactor(cgt): migrate L1Block and L2ToL1MessagePasser cgt tests (#608)
* refactor: migrate L1Block cgt tests
* refactor: migrate L2ToL1MessagePasser cgt tests
* fix: comments (#607)
* fix: comments
* fix: custom error
* fix: errors and tests
* fix: errors and tests
* fix: cgt tests (#610)
* fix: comments
* fix: custom error
* fix: errors and tests
* fix: errors and tests
* fix: tests
* fix: tests
* fix: weth
* fix: cgt tests (#611)
* fix: comments
* fix: custom error
* fix: errors and tests
* fix: errors and tests
* fix: tests
* fix: tests
* fix: weth
* fix: remove types
* fix: coverage tests (#612)
* fix: separate setUp function tests (#613)
---------
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Ashitaka <96790496+ashitakah@users.noreply.github.com>
* test: custom gas token invariants (#17489)
* test(inv): setup and total sup inv
* test(inv): accounting invariants
* chore: doc
* fix: import in OptimismPortal2CGT test and pre-pr
* fix(cgt): add missing native asset amount (#543)
* fix: upgrade contract name
* feat: add nativeAssetLiquidityAmount to config json files
* fix: add correct nativeAssetLiquidityAmount in op-deployer
* fix: add correct nativeAssetLiquidityAmount in op-e2e and fix withCustomGasToken argument on op-devstack
* fix: restore OptimismPortal2CGT
* fix: all comments
* fix: comments
* fix: governace
* fix: remove aux
* fix: remove aux
* fix: deploy cgt
* fix: revert cgt deploy config
* fix: deploy config
* chore: run linter
* fix: remove unnecessary GetNativeAssetLiquidityAmount
---------
Co-authored-by: Ashitaka <ashitaka@defi.sucks>
Co-authored-by: agusduha <agusnduha@gmail.com>
Co-authored-by: hexshire <hex@wonderland.xyz>
* fix: l2 genesis pipeline (#554)
* fix: add nativeAssetLiquidityAmount in e2e apply test (#555)
* fix: failing test
* chore: doc
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
* chore: remove unused imports
* chore: fix semgrep
* chore: change error name
---------
Co-authored-by: drgorillamd <83670532+drgorillamd@users.noreply.github.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Ashitaka <ashitaka@defi.sucks>
Co-authored-by: agusduha <agusnduha@gmail.com>
Co-authored-by: hexshire <hex@wonderland.xyz>
Co-authored-by: AgusDuha <81362284+agusduha@users.noreply.github.com>
Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
* refactor: use skipIfDevFeatureDisabled for cgt predeploys test (#614) (#17621)
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
* fix: tests
* fix: auth minter helper & bound _mint in depositTransaction tests (#17642)
* refactor: auth minter helper tests (#618)
* fix: bound _mint correctly in depositTransaction test function (#619)
* chore: run pre-pr
* chore: address ci errors
* chore: fix go tests
* chore: run checks
* test(wip): fix failing tests
* chore: run pre-pr
* fix: cgt flag tests
* test: skip fee split invriant when CGT enabled
* test: fix l2 genesis override test (#673)
* feat: add ownable liquidity (#671)
* feat: add ownable liquidity
* feat: remove enable and add default liquidity
* feat: pre pr fixed
* fix: initializer
* fix: comments
* fix: comments
* fix: pre-pr
* fix: override
* fix: tests
* fix: cursor issues
* fix: cursor bug bot
* fix: cursor bot
* fix: remove override
* fix: comment
* feat: add checks
* fix: tests
* fix: nil in cgt config
---------
Co-authored-by: agusduha <agusnduha@gmail.com>
* fix: semver
* test: fix cgt fork tests (#676)
* test: fix cgt fork tests
* fix: remove dev flag in L1 tests
* fix: go linter (#679)
* fix: go linter
* fix: with custom gas token func
* test: fix go fuzz (#680)
* fix: cgt config jsons (#681)
* fix: zero owner and sepolia address (#685)
* feat: predeploys (#684)
* fix: predeploys
* fix: predeploys
* fix: L2 genesis
* test: fix cgt with revenue sharing tests (#691)
* fix: semver
* fix: cgt liquidity controller natspec (#694)
* fix: remove dev feature flag from opcm (#695)
* fix: remove dev feature flag from opcm
* fix: lint
---------
Signed-off-by: Hex <165055168+hexshire@users.noreply.github.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Ashitaka <96790496+ashitakah@users.noreply.github.com>
Co-authored-by: AgusDuha <81362284+agusduha@users.noreply.github.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Ashitaka <ashitaka@defi.sucks>
Co-authored-by: agusduha <agusnduha@gmail.com>
Co-authored-by: Stefano Charissis <stefano@oplabs.co>
Co-authored-by: Simon Something /DrGoNoGo <83670532+simon-something@users.noreply.github.com>
Co-authored-by: drgorillamd <83670532+drgorillamd@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
* fix(scripts): skip validation for missing test artifacts (#18367)
* fix(scripts): skip validation for missing test artifacts
- add extractTestFileName() to extract test filename from artifact path
- add testFileExists() to check if test source file exists recursively in test directory
- skip validation in processFile() when test source file does not exist
- add TestExtractTestFileName test
- add TestTestFileExists test with subdirectory validation
- update TestProcessFile to create test source file and artifact structure
- add setupTestDir() helper function for test directory setup
- add createTestArtifact() helper function for artifact creation
- refactor test setup to use helper functions in 5 tests
* fix(script): skip validation for missing test contracts
- add testContractExistsInFile() to check if contract exists in test file
- skip validation in processFile() when test contract not found in source file
- add TestTestContractExistsInFile test
* feat: have heavy-fuzz tests also use dev feature matrix (#18368)
* chore: Github release binary provider: Version check & static cache pather (#18369)
* chore: Promote static cache pather
* chore: Add runtime version check
* feat: OPCM v2 (#18079)
* feat: OPCMv2
* fix: bug in deploying dispute games
* fix: no more opcmv1 changes
* fix: bad interface
* fix: further clean diff
* fix: reduce diff
* fix: undo artifacts diffs
* fix: broken go structs
* fix: opcm output struct ordering
* fix: better tests
* fix: justfile path
* fix: lcov issue
* fix: pr review comments
* fix: pr comments
* fix: rebase tweaks
* fix: contract verification failure
* fix: last few ci issues
* Add DeployFeesDepositor script (#18223)
* Add DeployFeesDepositor script
* Refactor deploy script to remove Output struct
* forge fmt
* Make logResults() pure
* fix return value names
* remove unused import
* Apply suggestions from code review
Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com>
* Add missing natspec
* Add natspec to tests
---------
Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com>
* fix(scripts): check interfaces and libraries in testContractExistsInFile (#18370)
- update testContractExistsInFile() to match interfaces and libraries in addition to contracts
- add test cases for interface and library validation in TestTestContractExistsInFile
* op-deployer: activate jovian at genesis by default (#18342) (#18348)
* op-deployer: activate jovian at genesis by default (#18342)
* op-deployer: activate jovian at genesis by default
* fix tests for jovian activation
* use inclusive instead of exclusive arg
* op-acceptance-tests: only run Ecotone fees test against compatible networks (#18225)
* feat: add support for blockscout in VerifyOPCM (#18373)
* feat: add support for blockscout in VerifyOPCM
This commit adds support for blockscout in VerifyOPCM and defaults
to blockscout. Etherscan verification can still be used but
blockscout is simpler and more reliable on all networks.
* fix: formatting
* feat: safer safes audit (#18300)
* Use vm.prank(address,bool) for delegateCall, remove DelegateCaller contract (#18331)
* Use vm.prank(address,bool) for delegateCall, remove DelegateCaller contract
Remove imports of DelegateCaller
fmt
fix: by explicitly using delegatcall
was expecting foundry to override the CALL to a delegatcall for some
reason.
remove unused returndata vars
fix updatePrestate call testing
Fixes to ForkLive
Self review clean up
fix: handle empty EOA code in delegate call tests
Adds a prankDelegateCall() helper function to eliminate repetitive code pattern for handling Foundry's requirement that addresses have at least one byte of code to prank delegatecalls. This helper combines vm.etch() and vm.prank(_, true) into a single reusable function.
Create prankDelegateCall function
Restore DelegateCaller contract
Prevents merge conflicts with other inflight work
Clean up comments on prankDelegateCall
Delete DelegateCaller contract
* Fix outdated comment and etch restore
* fix unused imports
* Fix upgradeSuperchain call
* op-devstack: add WithArchive matcher (#18227)
and use it in the pectra acceptance tests.
* feat: have OPCMv2 revert if user tries to provide address(0) as SystemConfig for upgrade (#18376)
* fix: semver updates
* fix: semver lock
* fix: semver lock again
* op-acceptance: Add acceptance tests for withdrawals using cannon and cannon_kona (#18374)
* op-acceptance: Add acceptance tests for withdrawals using cannon and cannon_kona game types
* op-acceptance: Add game types through OPCM instead of separate op-deployer script
* op-acceptance: Remove unused method
* ci: add GitHub Actions workflow to build and attest container images (#18397)
- Add bake.yaml workflow using factory reusable multi-arch workflow
- Build all 16 OP Stack images (op-node, op-batcher, op-deployer, op-faucet, op-program, op-proposer, op-challenger, op-dispute-mon, op-conductor, da-server, op-supervisor, op-supernode, op-test-sequencer, cannon, op-dripper, op-interop-mon)
- Native ARM builds on ubuntu-24.04-arm for faster compilation
- Multi-arch manifest creation with SLSA Build Level 3 attestations
- Add compute-git-versions.sh script to replicate CircleCI GIT_VERSION logic
- Read KONA_VERSION from kona/version.json (single source of truth)
- Add Makefile target for compute-git-versions
- GitHub Actions cache support for faster builds
- BuildKit provenance (mode=max) + GitHub attestations for rich metadata
Signed-off-by: falcorocks <14293929+falcorocks@users.noreply.github.com>
* test(contracts): improve DevFeatures test coverage with fuzz tests (#18396)
* refactor(test): rename test functions to use _succeeds suffix and add docs
- Rename all test functions from _works to _succeeds suffix
- Simplify test names by removing redundant 'check' and 'Against' words
- Add @notice documentation for each test function
* test(contracts): add fuzz tests for isDevFeatureEnabled function
- Add testFuzz_isDevFeatureEnabled_featureMatchesSelf_succeeds
- Add testFuzz_isDevFeatureEnabled_emptyFeatureAlwaysFalse_succeeds
- Add testFuzz_isDevFeatureEnabled_featureInSuperset_succeeds
- Add testFuzz_isDevFeatureEnabled_featureNotInDisjointBitmap_succeeds
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* op-challenger: Update list-games sub command to support optimistic zk games (#18393)
* op-challenger: Update list-games sub command to support optimistic zk games.
Starts to build out the OptimisticZK contract bindings and make challenger not require everything to look like a FaultDisputeGame.
* Fix variable name
* contracts: Replace mock contracts with vm.mock functions (#18388)
* Replace Reverter contract with vm.mockCallRevert()
* Replace Call Recorder with vm.expectCall()
* fix imports
* Fix selector data on recipient
* Rename Callers to GasBurner
It's the only contract left in the file now.
* ci: split bake workflow in protected/unprotected flows (#18443)
* ci: split bake workflow in protected/unprotected
* ci: address review feedback
Signed-off-by: falcorocks <14293929+falcorocks@users.noreply.github.com>
---------
Signed-off-by: falcorocks <14293929+falcorocks@users.noreply.github.com>
* chore(op-acceptance-tests): flake-shake; slack notifications for failures only (#18439)
* feat: add new check for strict pragma (#18390)
Adds a new check in the contracts package that confirms that all
source contracts are using a strict pragma instead of a dynamic
one.
* Add Openchain import on CI (#18447)
* start
* add upload to ci
* fix: update CI
* feat: rm update-selectors from pre-pr
* fix: rm checkout from workspace
* Add flashblocks and matrix testing support to sysgo (#18318)
* Fix CI (#18450)
* start
* add upload to ci
* fix: update CI
* feat: rm update-selectors from pre-pr
* fix: rm checkout from workspace
* fix: checkout
* fix: contract dependencies
* op-supernode: Superroot API Activity (#18180)
* op-supernode: Superroot API Activity
* Response Object Cleanup
* Update return struct for full Optimistic Outputs ; In-Proc RPC
* Use eth.NotFound Errors
* op-node: Light CL: Disabling Derivation (#18290)
* op-node: Logic for Disabling Derivation
* op-devstack: Support UnsafeOnly preset and twoVerifiers System
* op-acceptance-tests: UnsafeOnly Tests for Seq and Ver
* Do not check second verifier safe head because of EL Sync
* op-node: Fix EngineController Reset logic for sequencer init
* doc string fix
* Defensive protection for avoiding FCU to genesis
* Modularize ext sync tester config
* op-acceptance-tests: Unsafe Only with Ext Network
* Also check unsafe head advances after initial EL Sync is done
* check unsafe gap is closed
* remove temp
* Allow alt sync when unsafeOnly
* check seq restart with API
* better init EL syncing log msg
* fix comments and add warning
* Check isSequencer for unsafeOnly initial Reset at SyncDeriver
* remove non initialized check during syncDeriver step
* Refactor for readability
* feat: add OPCMv2 tests for existing behaviors (#18389)
* feat: add OPCMv2 tests for existing behaviors
* feat: more tests
* fix: lint errors
* fix: test naming
* fix: improve some tests wrt pr comments
* fix: correct …
Description
Reduces the gas cost of deposits of both ETH and ERC20 tokens in total by about 15k. Sample deposit transaction used for analysis.
sentMessagesmapping fromOVM_L1CrossDomainMessengerstorage and use the nonce to check for existence of a replayed transactionNotable gas reduction achieved:
OVM_L1CrossDomainMessenger.sendMessage89 329 -> 75,772Metadata
Fixes #500