Skip to content

Commit

Permalink
Merge branch 'dev' into test/factory-integration
Browse files Browse the repository at this point in the history
  • Loading branch information
0xDiscotech committed Jun 25, 2024
2 parents 7c746f3 + 477443b commit 271f1e8
Show file tree
Hide file tree
Showing 2 changed files with 142 additions and 10 deletions.
131 changes: 131 additions & 0 deletions .gas-snapshot
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
FallbackProxyAdmin_Unit_ChangeAdmin:test_changeAdmin(address) (runs: 1002, μ: 17739, ~: 17739)
FallbackProxyAdmin_Unit_ChangeAdmin:test_revertIfNotOwner(address) (runs: 1002, μ: 14093, ~: 14093)
FallbackProxyAdmin_Unit_UpgradeTo:test_revertIfNotOwner(address) (runs: 1002, μ: 14050, ~: 14050)
FallbackProxyAdmin_Unit_UpgradeTo:test_upgradeTo(address) (runs: 1002, μ: 17149, ~: 17149)
FallbackProxyAdmin_Unit_UpgradeToAndCall:test_revertIfNotOwner(address,bytes) (runs: 1002, μ: 14981, ~: 14929)
FallbackProxyAdmin_Unit_UpgradeToAndCall:test_upgradeToAndCall(address,bytes) (runs: 1002, μ: 19215, ~: 19011)
ForTestOpUSDCBridgeAdapter_Unit_ReceiveMessage:test_doNothing() (gas: 6366)
IntegrationSetup:testSetup() (gas: 19549)
Integration_Bridging:test_bridgeFromL1() (gas: 254329)
Integration_Bridging:test_bridgeFromL1DifferentTarget() (gas: 259906)
Integration_Bridging:test_bridgeFromL1WithIncorrectSignature() (gas: 110080)
Integration_Bridging:test_bridgeFromL1WithSig() (gas: 322124)
Integration_Bridging:test_bridgeFromL2() (gas: 425118)
Integration_Bridging:test_bridgeFromL2DifferentTarget() (gas: 434536)
Integration_Bridging:test_bridgeFromL2WithIncorrectSignature() (gas: 145457)
Integration_Bridging:test_bridgeFromL2WithSig() (gas: 475591)
Integration_Integration_PermissionedFlows:test_stopAndResumeMessaging() (gas: 211488)
Integration_Migration:test_migrationToNativeUSDC() (gas: 531921)
Integration_PermissionedUsdcFlows:test_UpdateBlacklister() (gas: 40018)
Integration_PermissionedUsdcFlows:test_UpdateMasterMinter() (gas: 40030)
Integration_PermissionedUsdcFlows:test_UpdatePauser() (gas: 39989)
Integration_PermissionedUsdcFlows:test_UpdateRescuer() (gas: 57061)
Integration_PermissionedUsdcFlows:test_UpgradeTo() (gas: 39720)
Integration_PermissionedUsdcFlows:test_UpgradeToAndCall() (gas: 51683)
L1OpUSDCBridgeAdapter_Unit_BurnLockedUSDC:test_burnAmountNotSet(address) (runs: 1002, μ: 32177, ~: 32177)
L1OpUSDCBridgeAdapter_Unit_BurnLockedUSDC:test_emitEvent(uint256,address) (runs: 1002, μ: 45690, ~: 45689)
L1OpUSDCBridgeAdapter_Unit_BurnLockedUSDC:test_expectedCall(uint256,address) (runs: 1002, μ: 45317, ~: 45316)
L1OpUSDCBridgeAdapter_Unit_BurnLockedUSDC:test_onlyCircle() (gas: 13391)
L1OpUSDCBridgeAdapter_Unit_BurnLockedUSDC:test_resetStorageValues(uint256,address) (runs: 1002, μ: 47714, ~: 47713)
L1OpUSDCBridgeAdapter_Unit_Constructor:test_constructorParams() (gas: 24804)
L1OpUSDCBridgeAdapter_Unit_MigrateToNative:test_StateOfMigration(address,uint32,uint32) (runs: 1002, μ: 48911, ~: 48911)
L1OpUSDCBridgeAdapter_Unit_MigrateToNative:test_emitEventMigrating(address,uint32,uint32) (runs: 1002, μ: 47012, ~: 47012)
L1OpUSDCBridgeAdapter_Unit_MigrateToNative:test_expectCall(address,uint32,uint32) (runs: 1002, μ: 46345, ~: 46345)
L1OpUSDCBridgeAdapter_Unit_MigrateToNative:test_onlyOwner(address,address,uint32,uint32) (runs: 1002, μ: 14833, ~: 14833)
L1OpUSDCBridgeAdapter_Unit_MigrateToNative:test_recallWhenUpgrading(address,uint32,uint32) (runs: 1002, μ: 48708, ~: 48708)
L1OpUSDCBridgeAdapter_Unit_MigrateToNative:test_revertIfMessengerNotActive(address,uint32,uint32) (runs: 1002, μ: 37609, ~: 37609)
L1OpUSDCBridgeAdapter_Unit_MigrateToNative:test_revertOnAddressZero(uint32,uint32) (runs: 1002, μ: 14101, ~: 14101)
L1OpUSDCBridgeAdapter_Unit_ReceiveMessage:test_emitEvent(uint256) (runs: 1002, μ: 25745, ~: 25745)
L1OpUSDCBridgeAdapter_Unit_ReceiveMessage:test_revertIfLinkedAdapterDidntSendTheMessage(uint256,address) (runs: 1002, μ: 17737, ~: 17737)
L1OpUSDCBridgeAdapter_Unit_ReceiveMessage:test_revertIfNotMessenger(uint256) (runs: 1002, μ: 11282, ~: 11282)
L1OpUSDCBridgeAdapter_Unit_ReceiveMessage:test_sendTokens(uint256) (runs: 1002, μ: 24342, ~: 24342)
L1OpUSDCBridgeAdapter_Unit_ResumeMessaging:test_RevertIfBridgingIsNotPaused(uint32) (runs: 1002, μ: 15466, ~: 15466)
L1OpUSDCBridgeAdapter_Unit_ResumeMessaging:test_emitEvent(uint32) (runs: 1002, μ: 32747, ~: 32748)
L1OpUSDCBridgeAdapter_Unit_ResumeMessaging:test_onlyOwner(address,uint32) (runs: 1002, μ: 14364, ~: 14364)
L1OpUSDCBridgeAdapter_Unit_ResumeMessaging:test_setMessengerStatusToActive(uint32) (runs: 1002, μ: 32400, ~: 32401)
L1OpUSDCBridgeAdapter_Unit_SendMessage:test_emitEvent(address,uint256,uint32) (runs: 1002, μ: 31093, ~: 31093)
L1OpUSDCBridgeAdapter_Unit_SendMessage:test_expectedCall(address,uint256,uint32) (runs: 1002, μ: 30415, ~: 30415)
L1OpUSDCBridgeAdapter_Unit_SendMessage:test_revertOnMessengerNotActive(address,uint256,uint32) (runs: 1002, μ: 34584, ~: 34584)
L1OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_emitEvent(address,uint256,uint256,uint32) (runs: 1002, μ: 67148, ~: 67148)
L1OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_expectedCall(address,uint256,uint256,uint32) (runs: 1002, μ: 66521, ~: 66521)
L1OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_invalidSignature(address,uint256,uint256,uint32) (runs: 1002, μ: 53150, ~: 53150)
L1OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_nonceIncrement(address,uint256,uint256,uint32) (runs: 1002, μ: 66412, ~: 66412)
L1OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_revertOnExpiredMessage(address,uint256,bytes,uint256,uint256,uint32) (runs: 1001, μ: 17670, ~: 17623)
L1OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_revertOnMessengerNotActive(address,uint256,bytes,uint256,uint32) (runs: 1002, μ: 37985, ~: 37942)
L1OpUSDCBridgeAdapter_Unit_SetBurnAmount:test_emitEvent(uint256) (runs: 1002, μ: 62436, ~: 62675)
L1OpUSDCBridgeAdapter_Unit_SetBurnAmount:test_revertIfLinkedAdapterDidntSendTheMessage(uint256,address) (runs: 1002, μ: 15430, ~: 15430)
L1OpUSDCBridgeAdapter_Unit_SetBurnAmount:test_revertIfMessengerDidntSendTheMessage(uint256,address) (runs: 1002, μ: 11579, ~: 11579)
L1OpUSDCBridgeAdapter_Unit_SetBurnAmount:test_revertIfMessengerStatusIsNotUpgrading(uint256,uint256) (runs: 1001, μ: 33196, ~: 42121)
L1OpUSDCBridgeAdapter_Unit_SetBurnAmount:test_setAmount(uint256) (runs: 1002, μ: 62690, ~: 62929)
L1OpUSDCBridgeAdapter_Unit_SetBurnAmount:test_setStatus(uint256) (runs: 1002, μ: 62737, ~: 62976)
L1OpUSDCBridgeAdapter_Unit_StopMessaging:test_emitEvent(uint32) (runs: 1002, μ: 45093, ~: 45093)
L1OpUSDCBridgeAdapter_Unit_StopMessaging:test_onlyOwner(address) (runs: 1002, μ: 14342, ~: 14342)
L1OpUSDCBridgeAdapter_Unit_StopMessaging:test_revertIfMessagingIsAlreadyPaused(uint32) (runs: 1002, μ: 36597, ~: 36597)
L1OpUSDCBridgeAdapter_Unit_StopMessaging:test_setMessengerStatusToPaused(uint32) (runs: 1002, μ: 46439, ~: 46439)
L1OpUSDCFactory_Unit_Constructor:test_setImmutables() (gas: 11041)
L1OpUSDCFactory_Unit_Deploy:test_callUsdcCurrency() (gas: 1582190)
L1OpUSDCFactory_Unit_Deploy:test_callUsdcDecimals() (gas: 1582124)
L1OpUSDCFactory_Unit_Deploy:test_deployL1Adapter() (gas: 1646390)
L1OpUSDCFactory_Unit_Deploy:test_emitEvent() (gas: 1582194)
L1OpUSDCFactory_Unit_Deploy:test_incrementSalt() (gas: 1583932)
L1OpUSDCFactory_Unit_Deploy:test_returnAdapters() (gas: 1639002)
L1OpUSDCFactory_Unit_Deploy:test_revertOnInitializeTx() (gas: 84784)
L1OpUSDCFactory_Unit_Deploy:test_sendFactoryDeploymentMessage() (gas: 1743713)
L1OpUSDCFactory_Unit_PrecalculateCreate2Address:test_precalculateCreate2Address(bytes32,address) (runs: 1002, μ: 54980, ~: 54980)
L1OpUSDCFactory_Unit_PrecalculateCreateAddress:test_precalculateCreateAddress(address,uint256) (runs: 1002, μ: 59863, ~: 59591)
L2OpUSDCBridgeAdapter_Unit_CallUsdcTransaction:test_emitEvent(bytes) (runs: 1002, μ: 21180, ~: 21172)
L2OpUSDCBridgeAdapter_Unit_CallUsdcTransaction:test_expectedCall(bytes) (runs: 1002, μ: 20682, ~: 20583)
L2OpUSDCBridgeAdapter_Unit_CallUsdcTransaction:test_onlyOwner(address,bytes) (runs: 1002, μ: 14781, ~: 14779)
L2OpUSDCBridgeAdapter_Unit_CallUsdcTransaction:test_refevertoIfTxIsTransferOwnership(bytes) (runs: 1002, μ: 14686, ~: 14628)
L2OpUSDCBridgeAdapter_Unit_CallUsdcTransaction:test_revertIfTxIsChangeAdmin(bytes) (runs: 1002, μ: 14791, ~: 14733)
L2OpUSDCBridgeAdapter_Unit_CallUsdcTransaction:test_revertOnCallRevert(bytes) (runs: 1002, μ: 21237, ~: 21140)
L2OpUSDCBridgeAdapter_Unit_CallUsdcTransaction:test_upgradeTo(address) (runs: 1002, μ: 18258, ~: 18258)
L2OpUSDCBridgeAdapter_Unit_CallUsdcTransaction:test_upgradeToAndCall(address,bytes) (runs: 1002, μ: 20218, ~: 19998)
L2OpUSDCBridgeAdapter_Unit_CallUsdcTransaction:test_upgradeToAndCallRevert(address,bytes) (runs: 1002, μ: 21439, ~: 21262)
L2OpUSDCBridgeAdapter_Unit_CallUsdcTransaction:test_upgradeToRevert(address) (runs: 1002, μ: 19603, ~: 19603)
L2OpUSDCBridgeAdapter_Unit_Constructor:test_constructorParams() (gas: 24734)
L2OpUSDCBridgeAdapter_Unit_ReceiveMessage:test_emitEvent(uint256) (runs: 1002, μ: 24611, ~: 24611)
L2OpUSDCBridgeAdapter_Unit_ReceiveMessage:test_mintTokens(uint256) (runs: 1002, μ: 23273, ~: 23273)
L2OpUSDCBridgeAdapter_Unit_ReceiveMessage:test_revertIfLinkedAdapterDidntSendTheMessage(uint256,address) (runs: 1002, μ: 17718, ~: 17718)
L2OpUSDCBridgeAdapter_Unit_ReceiveMessage:test_revertIfNotMessenger(uint256) (runs: 1002, μ: 11260, ~: 11260)
L2OpUSDCBridgeAdapter_Unit_ReceiveMigrateToNative:test_emitEvent(address,uint32,uint256) (runs: 1002, μ: 56027, ~: 56027)
L2OpUSDCBridgeAdapter_Unit_ReceiveMigrateToNative:test_expectCall(address,uint32,uint256) (runs: 1002, μ: 57675, ~: 57675)
L2OpUSDCBridgeAdapter_Unit_ReceiveMigrateToNative:test_revertIfNotLinkedAdapter(address,uint32) (runs: 1002, μ: 15361, ~: 15361)
L2OpUSDCBridgeAdapter_Unit_ReceiveMigrateToNative:test_revertIfNotMessenger(address,uint32) (runs: 1002, μ: 11425, ~: 11425)
L2OpUSDCBridgeAdapter_Unit_ReceiveMigrateToNative:test_stateChange(address,uint32) (runs: 1002, μ: 59439, ~: 59439)
L2OpUSDCBridgeAdapter_Unit_ReceiveResumeMessaging:test_emitEvent() (gas: 19353)
L2OpUSDCBridgeAdapter_Unit_ReceiveResumeMessaging:test_setIsMessagingDisabledToFalse() (gas: 20249)
L2OpUSDCBridgeAdapter_Unit_ReceiveResumeMessaging:test_wrongLinkedAdapter() (gas: 15265)
L2OpUSDCBridgeAdapter_Unit_ReceiveResumeMessaging:test_wrongMessenger(address) (runs: 1002, μ: 11567, ~: 11567)
L2OpUSDCBridgeAdapter_Unit_ReceiveStopMessaging:test_emitEvent() (gas: 39228)
L2OpUSDCBridgeAdapter_Unit_ReceiveStopMessaging:test_setIsMessagingDisabledToTrue() (gas: 40190)
L2OpUSDCBridgeAdapter_Unit_ReceiveStopMessaging:test_wrongLinkedAdapter() (gas: 18989)
L2OpUSDCBridgeAdapter_Unit_ReceiveStopMessaging:test_wrongMessenger(address) (runs: 1002, μ: 15312, ~: 15312)
L2OpUSDCBridgeAdapter_Unit_SendMessage:test_emitEvent(address,uint256,uint32) (runs: 1002, μ: 30948, ~: 30948)
L2OpUSDCBridgeAdapter_Unit_SendMessage:test_expectedCall(address,uint256,uint32) (runs: 1002, μ: 32729, ~: 32729)
L2OpUSDCBridgeAdapter_Unit_SendMessage:test_revertOnMessagingDisabled(address,uint256,uint32) (runs: 1002, μ: 34256, ~: 34256)
L2OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_emitEvent(address,uint256,uint256,uint32) (runs: 1002, μ: 68698, ~: 68698)
L2OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_expectedCall(address,uint256,uint256,uint32) (runs: 1002, μ: 69016, ~: 69016)
L2OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_invalidSignature(address,uint256,uint256,uint32) (runs: 1002, μ: 53054, ~: 53054)
L2OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_nonceIncrement(address,uint256,uint256,uint32) (runs: 1002, μ: 67918, ~: 67918)
L2OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_revertOnExpiredMessage(address,uint256,bytes,uint256,uint256,uint32) (runs: 1002, μ: 17618, ~: 17571)
L2OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_revertOnMessengerNotActive(address,uint256,bytes,uint256,uint32) (runs: 1002, μ: 37675, ~: 37632)
L2OpUSDCFactory_Unit_Constructor:test_callChangeAdminWithFallbackProxy() (gas: 2617614)
L2OpUSDCFactory_Unit_Constructor:test_deployAdapter() (gas: 2626966)
L2OpUSDCFactory_Unit_Constructor:test_deployUsdcImplementation() (gas: 2617585)
L2OpUSDCFactory_Unit_Constructor:test_deployUsdcProxy() (gas: 2620287)
L2OpUSDCFactory_Unit_Constructor:test_executeUsdcImplInitTxs() (gas: 2632056)
L2OpUSDCFactory_Unit_Constructor:test_executeUsdcProxyInitTxs() (gas: 2632101)
L2OpUSDCFactory_Unit_DeployCreate:test_deployCreate() (gas: 467261)
L2OpUSDCFactory_Unit_DeployCreate:test_revertIfDeploymentFailed() (gas: 41318)
L2OpUSDCFactory_Unit_ExecuteInitTxs:test_callConfigureMinter(address) (runs: 1002, μ: 27586, ~: 27586)
L2OpUSDCFactory_Unit_ExecuteInitTxs:test_callInitialize(address) (runs: 1002, μ: 30082, ~: 30082)
L2OpUSDCFactory_Unit_ExecuteInitTxs:test_callTransferOwnership(address) (runs: 1002, μ: 27463, ~: 27463)
L2OpUSDCFactory_Unit_ExecuteInitTxs:test_callUpdateMasterMinter(address) (runs: 1002, μ: 27420, ~: 27420)
L2OpUSDCFactory_Unit_ExecuteInitTxs:test_executeInitTxsArray(address) (runs: 1002, μ: 45148, ~: 45148)
L2OpUSDCFactory_Unit_ExecuteInitTxs:test_revertIfInitTxsOnArrayFail(address) (runs: 1002, μ: 77139, ~: 77139)
OpUSDCBridgeAdapter_Unit_CheckSignature:test_invalidSignature(bytes,string) (runs: 1002, μ: 75435, ~: 75459)
OpUSDCBridgeAdapter_Unit_CheckSignature:test_validSignature(bytes) (runs: 1002, μ: 23008, ~: 22951)
OpUSDCBridgeAdapter_Unit_Constructor:test_constructorParams() (gas: 23080)
OpUSDCBridgeAdapter_Unit_SendMessage:test_doNothing() (gas: 6781)
OpUSDCBridgeAdapter_Unit_SendMessageWithSignature:test_doNothing() (gas: 8009)
21 changes: 11 additions & 10 deletions src/libraries/CrossChainDeployments.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import {ICreate2Deployer} from 'interfaces/external/ICreate2Deployer.sol';
import {ICrossDomainMessenger} from 'interfaces/external/ICrossDomainMessenger.sol';

library CrossChainDeployments {
bytes1 internal constant _LEN = bytes1(0x94);

/**
* @notice Deploys the L2 factory contract through the L1 messenger
* @param _args The initialization arguments for the L2 factory
Expand Down Expand Up @@ -64,36 +66,35 @@ library CrossChainDeployments {
uint256 _nonce
) internal pure returns (address _precalculatedAddress) {
bytes memory _data;
bytes1 _len = bytes1(0x94);

// A one-byte integer in the [0x00, 0x7f] range uses its own value as a length prefix, there is no
// additional "0x80 + length" prefix that precedes it.
// A one-byte integer in the [0x00, 0x7f] range uses its own value as a length prefix, there is no
// additional "0x80 + length" prefix that precedes it.
if (_nonce <= 0x7f) {
_data = abi.encodePacked(bytes1(0xd6), _len, _deployer, uint8(_nonce));
_data = abi.encodePacked(bytes1(0xd6), _LEN, _deployer, uint8(_nonce));
}
// In the case of `_nonce > 0x7f` and `_nonce <= type(uint8).max`, we have the following encoding scheme
// (the same calculation can be carried over for higher _nonce bytes):
// 0xda = 0xc0 (short RLP prefix) + 0x1a (= the bytes length of: 0x94 + address + 0x84 + _nonce, in hex),
// 0x94 = 0x80 + 0x14 (= the bytes length of an address, 20 bytes, in hex),
// 0x84 = 0x80 + 0x04 (= the bytes length of the _nonce, 4 bytes, in hex).
else if (_nonce <= type(uint8).max) {
_data = abi.encodePacked(bytes1(0xd7), _len, _deployer, bytes1(0x81), uint8(_nonce));
_data = abi.encodePacked(bytes1(0xd7), _LEN, _deployer, bytes1(0x81), uint8(_nonce));
} else if (_nonce <= type(uint16).max) {
_data = abi.encodePacked(bytes1(0xd8), _len, _deployer, bytes1(0x82), uint16(_nonce));
_data = abi.encodePacked(bytes1(0xd8), _LEN, _deployer, bytes1(0x82), uint16(_nonce));
} else if (_nonce <= type(uint24).max) {
_data = abi.encodePacked(bytes1(0xd9), _len, _deployer, bytes1(0x83), uint24(_nonce));
_data = abi.encodePacked(bytes1(0xd9), _LEN, _deployer, bytes1(0x83), uint24(_nonce));
} else if (_nonce <= type(uint32).max) {
_data = abi.encodePacked(bytes1(0xda), _len, _deployer, bytes1(0x84), uint32(_nonce));
_data = abi.encodePacked(bytes1(0xda), _LEN, _deployer, bytes1(0x84), uint32(_nonce));
} else if (_nonce <= type(uint40).max) {
_data = abi.encodePacked(bytes1(0xdb), _len, _deployer, bytes1(0x85), uint40(_nonce));
_data = abi.encodePacked(bytes1(0xdb), _LEN, _deployer, bytes1(0x85), uint40(_nonce));
} else if (_nonce <= type(uint48).max) {
_data = abi.encodePacked(bytes1(0xdc), _len, _deployer, bytes1(0x86), uint48(_nonce));
_data = abi.encodePacked(bytes1(0xdc), _LEN, _deployer, bytes1(0x86), uint48(_nonce));
} else if (_nonce <= type(uint56).max) {
_data = abi.encodePacked(bytes1(0xdd), _len, _deployer, bytes1(0x87), uint56(_nonce));
_data = abi.encodePacked(bytes1(0xdd), _LEN, _deployer, bytes1(0x87), uint56(_nonce));
} else {
_data = abi.encodePacked(bytes1(0xde), _len, _deployer, bytes1(0x88), uint64(_nonce));
_data = abi.encodePacked(bytes1(0xde), _LEN, _deployer, bytes1(0x88), uint64(_nonce));
}

_precalculatedAddress = address(uint160(uint256(keccak256(_data))));
Expand Down

0 comments on commit 271f1e8

Please sign in to comment.