-
Elena Gesheva authored
* 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>
5fc728da