Skip to content

Commit

Permalink
Merge branch 'protocol-defense' into zk-oz-protocol-defense-l02
Browse files Browse the repository at this point in the history
  • Loading branch information
koloz193 committed Jul 24, 2024
2 parents fb30aef + 62c65be commit f6707ad
Show file tree
Hide file tree
Showing 12 changed files with 75 additions and 59 deletions.
4 changes: 2 additions & 2 deletions l1-contracts/contracts/bridge/L1ERC20Bridge.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {IL1SharedBridge} from "./interfaces/IL1SharedBridge.sol";
import {L2ContractHelper} from "../common/libraries/L2ContractHelper.sol";
import {ReentrancyGuard} from "../common/ReentrancyGuard.sol";

import {Unauthorized, EmptyDeposit, ValueMismatch, WithdrawalAlreadyFinalized} from "../common/L1ContractErrors.sol";
import {Unauthorized, EmptyDeposit, TokensWithFeesNotSupported, WithdrawalAlreadyFinalized} from "../common/L1ContractErrors.sol";

/// @author Matter Labs
/// @custom:security-contact security@matterlabs.dev
Expand Down Expand Up @@ -159,7 +159,7 @@ contract L1ERC20Bridge is IL1ERC20Bridge, ReentrancyGuard {
uint256 amount = _depositFundsToSharedBridge(msg.sender, IERC20(_l1Token), _amount);
// The token has non-standard transfer logic
if (amount != _amount) {
revert ValueMismatch(_amount, amount);
revert TokensWithFeesNotSupported();
}

l2TxHash = SHARED_BRIDGE.depositLegacyErc20Bridge{value: msg.value}({
Expand Down
4 changes: 2 additions & 2 deletions l1-contracts/contracts/bridge/L1SharedBridge.sol
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {ETH_TOKEN_ADDRESS, TWO_BRIDGES_MAGIC_VALUE} from "../common/Config.sol";
import {IBridgehub, L2TransactionRequestTwoBridgesInner, L2TransactionRequestDirect} from "../bridgehub/IBridgehub.sol";
import {IGetters} from "../state-transition/chain-interfaces/IGetters.sol";
import {L2_BASE_TOKEN_SYSTEM_CONTRACT_ADDR} from "../common/L2ContractAddresses.sol";
import {Unauthorized, ZeroAddress, SharedBridgeValueAlreadySet, SharedBridgeKey, NoFundsTransferred, ZeroBalance, ValueMismatch, NonEmptyMsgValue, L2BridgeNotSet, TokenNotSupported, WithdrawIncorrectAmount, EmptyDeposit, DepositExists, AddressAlreadyUsed, InvalidProof, DepositDoesNotExist, InsufficientChainBalance, WithdrawalFailed, ShareadBridgeValueNotSet, WithdrawalAlreadyFinalized, WithdrawalFailed, L2WithdrawalMessageWrongLength, InvalidSelector, SharedBridgeBalanceMismatch} from "../common/L1ContractErrors.sol";
import {Unauthorized, ZeroAddress, SharedBridgeValueAlreadySet, SharedBridgeKey, NoFundsTransferred, ZeroBalance, ValueMismatch, TokensWithFeesNotSupported, NonEmptyMsgValue, L2BridgeNotSet, TokenNotSupported, WithdrawIncorrectAmount, EmptyDeposit, DepositExists, AddressAlreadyUsed, InvalidProof, DepositDoesNotExist, InsufficientChainBalance, WithdrawalFailed, ShareadBridgeValueNotSet, WithdrawalAlreadyFinalized, WithdrawalFailed, L2WithdrawalMessageWrongLength, InvalidSelector, SharedBridgeBalanceMismatch} from "../common/L1ContractErrors.sol";

/// @author Matter Labs
/// @custom:security-contact security@matterlabs.dev
Expand Down Expand Up @@ -256,7 +256,7 @@ contract L1SharedBridge is IL1SharedBridge, ReentrancyGuard, Ownable2StepUpgrade
uint256 amount = _depositFunds(_prevMsgSender, IERC20(_l1Token), _amount); // note if _prevMsgSender is this contract, this will return 0. This does not happen.
// The token has non-standard transfer logic
if (amount != _amount) {
revert ValueMismatch(_amount, amount);
revert TokensWithFeesNotSupported();
}
}

Expand Down
4 changes: 4 additions & 0 deletions l1-contracts/contracts/common/L1ContractErrors.sol
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,10 @@ error GenesisIndexStorageZero();
error GenesisBatchCommitmentZero();
// 0xa2d4b16c
error RemoveFunctionFacetAddressZero();
// 0x23830e28
error TokensWithFeesNotSupported();
// 0xa7151b9a
error DiamondNotFrozen();

enum SharedBridgeKey {
PostUpgradeFirstBatch,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {MAX_GAS_PER_TRANSACTION} from "../../../common/Config.sol";
import {FeeParams, PubdataPricingMode} from "../ZkSyncHyperchainStorage.sol";
import {ZkSyncHyperchainBase} from "./ZkSyncHyperchainBase.sol";
import {IStateTransitionManager} from "../../IStateTransitionManager.sol";
import {Unauthorized, TooMuchGas, PubdataPerBatchIsLessThanTxn, InvalidPubdataPricingMode, ProtocolIdMismatch, ChainAlreadyLive, HashMismatch, ProtocolIdNotGreater, DenominatorIsZero, DiamondAlreadyFrozen, ZeroAddress} from "../../../common/L1ContractErrors.sol";
import {Unauthorized, TooMuchGas, PubdataPerBatchIsLessThanTxn, InvalidPubdataPricingMode, ProtocolIdMismatch, ChainAlreadyLive, HashMismatch, ProtocolIdNotGreater, DenominatorIsZero, DiamondAlreadyFrozen, DiamondNotFrozen, ZeroAddress} from "../../../common/L1ContractErrors.sol";

// While formally the following import is not used, it is needed to inherit documentation from it
import {IZkSyncHyperchainBase} from "../../chain-interfaces/IZkSyncHyperchainBase.sol";
Expand Down Expand Up @@ -176,7 +176,7 @@ contract AdminFacet is ZkSyncHyperchainBase, IAdmin {

// diamond proxy is not frozen
if (!diamondStorage.isFrozen) {
revert DiamondAlreadyFrozen();
revert DiamondNotFrozen();
}
diamondStorage.isFrozen = false;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
pragma solidity 0.8.24;

import {L1Erc20BridgeTest} from "./_L1Erc20Bridge_Shared.t.sol";
import {EmptyDeposit, ValueMismatch} from "contracts/common/L1ContractErrors.sol";
import {EmptyDeposit, ValueMismatch, TokensWithFeesNotSupported} from "contracts/common/L1ContractErrors.sol";

contract DepositTest is L1Erc20BridgeTest {
event DepositInitiated(
Expand Down Expand Up @@ -85,7 +85,7 @@ contract DepositTest is L1Erc20BridgeTest {
uint256 amount = 2;
vm.prank(alice);
feeOnTransferToken.approve(address(bridge), amount);
vm.expectRevert(abi.encodeWithSelector(ValueMismatch.selector, amount, amount - 1));
vm.expectRevert(TokensWithFeesNotSupported.selector);
vm.prank(alice);
bridge.deposit({
_l2Receiver: randomSigner,
Expand All @@ -100,7 +100,7 @@ contract DepositTest is L1Erc20BridgeTest {
uint256 amount = 4;
vm.prank(alice);
feeOnTransferToken.approve(address(bridge), amount);
vm.expectRevert(abi.encodeWithSelector(ValueMismatch.selector, amount, amount - 1));
vm.expectRevert(TokensWithFeesNotSupported.selector);
vm.prank(alice);
bridge.deposit({
_l2Receiver: randomSigner,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {IMailbox} from "contracts/state-transition/chain-interfaces/IMailbox.sol
import {IL1ERC20Bridge} from "contracts/bridge/interfaces/IL1ERC20Bridge.sol";
import {L2_BASE_TOKEN_SYSTEM_CONTRACT_ADDR} from "contracts/common/L2ContractAddresses.sol";
import {IGetters} from "contracts/state-transition/chain-interfaces/IGetters.sol";
import {L2BridgeNotSet, L2WithdrawalMessageWrongLength, InsufficientChainBalance, ZeroAddress, ValueMismatch, NonEmptyMsgValue, DepositExists, ValueMismatch, NonEmptyMsgValue, TokenNotSupported, WithdrawIncorrectAmount, EmptyDeposit, L2BridgeNotDeployed, WithdrawIncorrectAmount, InvalidProof, NoFundsTransferred, InsufficientFunds, DepositDoesNotExist, WithdrawalAlreadyFinalized, InsufficientFunds, MalformedMessage, InvalidSelector} from "contracts/common/L1ContractErrors.sol";
import {L2BridgeNotSet, L2WithdrawalMessageWrongLength, InsufficientChainBalance, ZeroAddress, ValueMismatch, NonEmptyMsgValue, DepositExists, ValueMismatch, NonEmptyMsgValue, TokenNotSupported, WithdrawIncorrectAmount, EmptyDeposit, L2BridgeNotDeployed, WithdrawIncorrectAmount, InvalidProof, NoFundsTransferred, InsufficientFunds, DepositDoesNotExist, WithdrawalAlreadyFinalized, InsufficientFunds, MalformedMessage, InvalidSelector, TokensWithFeesNotSupported} from "contracts/common/L1ContractErrors.sol";

/// We are testing all the specified revert and require cases.
contract L1SharedBridgeFailTest is L1SharedBridgeTest {
Expand Down Expand Up @@ -52,7 +52,7 @@ contract L1SharedBridgeFailTest is L1SharedBridgeTest {

vm.mockCall(address(token), abi.encodeWithSelector(IERC20.balanceOf.selector), abi.encode(10));

vm.expectRevert(abi.encodeWithSelector(ValueMismatch.selector, uint256(100), uint256(0)));
vm.expectRevert(TokensWithFeesNotSupported.selector);
vm.prank(bridgehubAddress);
sharedBridge.bridgehubDepositBaseToken(chainId, alice, address(token), amount);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {Diamond} from "contracts/state-transition/libraries/Diamond.sol";
import {Utils} from "../Utils/Utils.sol";
import {InitializeData} from "contracts/state-transition/chain-deps/DiamondInit.sol";
import {DummyStateTransitionManager} from "contracts/dev-contracts/test/DummyStateTransitionManager.sol";
import {DiamondAlreadyFrozen, Unauthorized, DiamondFreezeIncorrectState} from "contracts/common/L1ContractErrors.sol";
import {DiamondAlreadyFrozen, Unauthorized, DiamondFreezeIncorrectState, DiamondNotFrozen} from "contracts/common/L1ContractErrors.sol";

contract UpgradeLogicTest is DiamondCutTest {
DiamondProxy private diamondProxy;
Expand Down Expand Up @@ -135,7 +135,7 @@ contract UpgradeLogicTest is DiamondCutTest {
function test_RevertWhen_UnfreezingWhenNotFrozen() public {
vm.startPrank(stateTransitionManager);

vm.expectRevert(DiamondAlreadyFrozen.selector);
vm.expectRevert(DiamondNotFrozen.selector);
proxyAsAdmin.unfreezeDiamond();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
pragma solidity 0.8.24;

import {AdminTest} from "./_Admin_Shared.t.sol";
import {DiamondAlreadyFrozen, Unauthorized, DiamondFreezeIncorrectState} from "contracts/common/L1ContractErrors.sol";
import {Unauthorized, DiamondFreezeIncorrectState, DiamondNotFrozen} from "contracts/common/L1ContractErrors.sol";

contract UnfreezeDiamondTest is AdminTest {
event Unfreeze();
Expand All @@ -21,7 +21,7 @@ contract UnfreezeDiamondTest is AdminTest {

utilsFacet.util_setIsFrozen(false);

vm.expectRevert(DiamondAlreadyFrozen.selector);
vm.expectRevert(DiamondNotFrozen.selector);

vm.startPrank(admin);
adminFacet.unfreezeDiamond();
Expand Down
52 changes: 26 additions & 26 deletions system-contracts/SystemContractsHashes.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,49 +3,49 @@
"contractName": "AccountCodeStorage",
"bytecodePath": "artifacts-zk/contracts-preprocessed/AccountCodeStorage.sol/AccountCodeStorage.json",
"sourceCodePath": "contracts-preprocessed/AccountCodeStorage.sol",
"bytecodeHash": "0x0100005d16064af2e0104c0b18670c50c04722ee1a78ec22f5884dee976156de",
"bytecodeHash": "0x0100005d2cc3afd08bc004204f721a98f563435007e5d613188fac684ea7315c",
"sourceCodeHash": "0x69d2533e5481ff13e65f4442e650f4b90c46a48ac643cac9798bbbf421194353"
},
{
"contractName": "BootloaderUtilities",
"bytecodePath": "artifacts-zk/contracts-preprocessed/BootloaderUtilities.sol/BootloaderUtilities.json",
"sourceCodePath": "contracts-preprocessed/BootloaderUtilities.sol",
"bytecodeHash": "0x010007c7bb9c493c6f08f414eed73e7c4f5931b10df88feb856c5d75e28c8a4c",
"bytecodeHash": "0x010007c7adb3ebb8410d8c1e9c4816213fe06f8bf192e34f7d763c0118345d5e",
"sourceCodeHash": "0x26060f33c7c63bd1f8a1a2f3b368b97ef8dd939bc53e95090f2c556248b99dce"
},
{
"contractName": "ComplexUpgrader",
"bytecodePath": "artifacts-zk/contracts-preprocessed/ComplexUpgrader.sol/ComplexUpgrader.json",
"sourceCodePath": "contracts-preprocessed/ComplexUpgrader.sol",
"bytecodeHash": "0x0100004d80defdac7c4ef3bcc8aa44161cbe3a32b3494271fc7ffb81f46a264d",
"bytecodeHash": "0x0100004d60061e8e10daa1d5e0b41d8097fb57d89979033610edff37d39df69c",
"sourceCodeHash": "0xdde7c49a94cc3cd34c3e7ced1b5ba45e4740df68d26243871edbe393e7298f7a"
},
{
"contractName": "Compressor",
"bytecodePath": "artifacts-zk/contracts-preprocessed/Compressor.sol/Compressor.json",
"sourceCodePath": "contracts-preprocessed/Compressor.sol",
"bytecodeHash": "0x010001495ad07263318ef892ad2e8a59d4749e3b4359d5259ad72f16776ff4de",
"sourceCodeHash": "0xc2ead35998e9c2e848a3f395a31b9ed47cbd687960337303d0863d217d4e5a43"
"bytecodeHash": "0x0100014f48e71cdc09d75e89bf69a5b13e70cf952e346001eff4576b06c996c5",
"sourceCodeHash": "0x5ca10312f1b6df0bfe69bf2d76d8f52dcb9415bd320faf2759a955c083155c24"
},
{
"contractName": "ContractDeployer",
"bytecodePath": "artifacts-zk/contracts-preprocessed/ContractDeployer.sol/ContractDeployer.json",
"sourceCodePath": "contracts-preprocessed/ContractDeployer.sol",
"bytecodeHash": "0x010004e595c17349fe8bfdc41d5ab0ed66191165bf5cbb9fec778f2c325c53b5",
"bytecodeHash": "0x010004e53d8d873ddf14d643a67f4a4975026d38e9a1ee81fbd1a12299c00cd5",
"sourceCodeHash": "0xdc95cb75554260ef8793c7899dbbc681165a441109458b3d058b03a0857d00e3"
},
{
"contractName": "Create2Factory",
"bytecodePath": "artifacts-zk/contracts-preprocessed/Create2Factory.sol/Create2Factory.json",
"sourceCodePath": "contracts-preprocessed/Create2Factory.sol",
"bytecodeHash": "0x01000049f9081674477a334b973b5b4f013512fc35573e17d102a8f94a8a752a",
"bytecodeHash": "0x01000049fc6bbac7a9b8293ba727b240c8511eabeb490bde506b098c9c886782",
"sourceCodeHash": "0x217e65f55c8add77982171da65e0db8cc10141ba75159af582973b332a4e098a"
},
{
"contractName": "DefaultAccount",
"bytecodePath": "artifacts-zk/contracts-preprocessed/DefaultAccount.sol/DefaultAccount.json",
"sourceCodePath": "contracts-preprocessed/DefaultAccount.sol",
"bytecodeHash": "0x0100055de855fc9a8459b6906aba4480a377a2315b488d13b60c5bdd573b8e4b",
"bytecodeHash": "0x0100055d7572e33fe0e35c8c2d65afce9a6e0afcf7e07f51dc647109a011dc91",
"sourceCodeHash": "0xeb5ac8fc83e1c8619db058a9b6973958bd6ed1b6f4938f8f4541d702f12e085d"
},
{
Expand All @@ -59,56 +59,56 @@
"contractName": "ImmutableSimulator",
"bytecodePath": "artifacts-zk/contracts-preprocessed/ImmutableSimulator.sol/ImmutableSimulator.json",
"sourceCodePath": "contracts-preprocessed/ImmutableSimulator.sol",
"bytecodeHash": "0x0100003be702c7394b8cf2a59ffcd8b25e3b3a96bb8ac649760aaba1e4aa1736",
"bytecodeHash": "0x0100003b9641a97ed6ff5fb637b8acd8f656bbc94af0c1c1acc188ce452d82dc",
"sourceCodeHash": "0x4212e99cbc1722887cfb5b4cb967f278ac8642834786f0e3c6f3b324a9316815"
},
{
"contractName": "KnownCodesStorage",
"bytecodePath": "artifacts-zk/contracts-preprocessed/KnownCodesStorage.sol/KnownCodesStorage.json",
"sourceCodePath": "contracts-preprocessed/KnownCodesStorage.sol",
"bytecodeHash": "0x0100006fb154fbd05d770f8c2cc75d3290214a151fe4922ca8f59903e8cd0dbf",
"bytecodeHash": "0x0100006f50d19c4b8d2f4d1f7fac2b5d8ee4b3a30c376e4ad6c357552be557de",
"sourceCodeHash": "0x8da495a9fc5aa0d7d20a165a4fc8bc77012bec29c472015ea5ecc0a2bd706137"
},
{
"contractName": "L1Messenger",
"bytecodePath": "artifacts-zk/contracts-preprocessed/L1Messenger.sol/L1Messenger.json",
"sourceCodePath": "contracts-preprocessed/L1Messenger.sol",
"bytecodeHash": "0x01000295dc4de8d8951fccf4aca91c38418188f5d15590e3a9bf6ed36fd5a5b5",
"bytecodeHash": "0x01000295480d36497d4269cf6e0dd227a7563eb1b18d3079ac70e75e6d61054e",
"sourceCodeHash": "0x56b52c45f8ae34153833d79903a5cce6351fa770362e51cfc4c32842f32dfdca"
},
{
"contractName": "L2BaseToken",
"bytecodePath": "artifacts-zk/contracts-preprocessed/L2BaseToken.sol/L2BaseToken.json",
"sourceCodePath": "contracts-preprocessed/L2BaseToken.sol",
"bytecodeHash": "0x01000105f8daa2e1af2f3a594d89c80dccbe4ec7c7a4d36df6d9103c9cc08286",
"bytecodeHash": "0x010001050f22e4853a88b2eb21bf268f860c7175ce2ca01af158a91bacfa0610",
"sourceCodeHash": "0x4cdafafd4cfdf410b31641e14487ea657be3af25e5ec1754fcd7ad67ec23d8be"
},
{
"contractName": "MsgValueSimulator",
"bytecodePath": "artifacts-zk/contracts-preprocessed/MsgValueSimulator.sol/MsgValueSimulator.json",
"sourceCodePath": "contracts-preprocessed/MsgValueSimulator.sol",
"bytecodeHash": "0x0100005d4ab32122db6950a743448c6225a25655747d4b4e08202922c036e0e0",
"bytecodeHash": "0x0100005dd6fa8eb38385fd1719bd60855012e1bc5674d9e1ceb598db3a717421",
"sourceCodeHash": "0x4834adf62dbaefa1a1c15d36b5ad1bf2826e7d888a17be495f7ed4e4ea381aa8"
},
{
"contractName": "NonceHolder",
"bytecodePath": "artifacts-zk/contracts-preprocessed/NonceHolder.sol/NonceHolder.json",
"sourceCodePath": "contracts-preprocessed/NonceHolder.sol",
"bytecodeHash": "0x010000db42755e574d721d2437ad27ec38ea9d4ceffb4c46604c5d451cf6bb18",
"bytecodeHash": "0x010000dbc447bcb66bb3f737394c16ccb57cfed5fb8a1a3924bcee9b8c0795ae",
"sourceCodeHash": "0xaa2ed3a26af30032c00a612ac327e0cdf5288b7c932ae903462355f863f950cb"
},
{
"contractName": "PubdataChunkPublisher",
"bytecodePath": "artifacts-zk/contracts-preprocessed/PubdataChunkPublisher.sol/PubdataChunkPublisher.json",
"sourceCodePath": "contracts-preprocessed/PubdataChunkPublisher.sol",
"bytecodeHash": "0x010000476100b24c7b8a6ef84c96fd2588e4fd0589954146e77d7f4058df563b",
"bytecodeHash": "0x01000047f34b2acb04f4b8e48f58e372ff474e14e4831e6e9dc2e464c0ef34da",
"sourceCodeHash": "0x0568a9a12bdac94c9e055ca303824a6bf4dc4aa503cfe9a2586c7d3dda8d45da"
},
{
"contractName": "SystemContext",
"bytecodePath": "artifacts-zk/contracts-preprocessed/SystemContext.sol/SystemContext.json",
"sourceCodePath": "contracts-preprocessed/SystemContext.sol",
"bytecodeHash": "0x010001a593b7e9112dd52668e5d51905d091ee35c09241434a6977a3966cdf4c",
"bytecodeHash": "0x010001a5755c7b370618a2a6db208216c75b37f5f18254ab77b0d1a8ab8d9bac",
"sourceCodeHash": "0xf23d12ad2f17ad3b26e909fabfdcfaf4e1d158923e7cb8eeb9b5965a0b464406"
},
{
Expand Down Expand Up @@ -178,35 +178,35 @@
"contractName": "bootloader_test",
"bytecodePath": "bootloader/build/artifacts/bootloader_test.yul.zbin",
"sourceCodePath": "bootloader/build/bootloader_test.yul",
"bytecodeHash": "0x010003cb536dffe7bcb819d5f5971f89035174a1df7716a5a05f4e39a821d0c8",
"sourceCodeHash": "0xe857cf39e230b30b56da7fc3cad4d67fca290aa9149cf1ea079c75545a335119"
"bytecodeHash": "0x010003cbb4a9f9791d52ae89a6643456090f4492232655c8bae4120273c28538",
"sourceCodeHash": "0x3b699af2a4c9e32dc032151537ca78e7f1318344bebb320f99aabcebf2c027e4"
},
{
"contractName": "fee_estimate",
"bytecodePath": "bootloader/build/artifacts/fee_estimate.yul.zbin",
"sourceCodePath": "bootloader/build/fee_estimate.yul",
"bytecodeHash": "0x0100094fcf4988b39adad80e75b2e9bc033737549dacc7bbda1689d4d062ea0f",
"sourceCodeHash": "0x694e6045eeeccef94a727ac704afb06d93566f62770046e03dfc65c937194342"
"bytecodeHash": "0x0100094f08568cdb73f5efd6879da3bb97df90492991468d5f6bf335f1a55315",
"sourceCodeHash": "0xc54cc11a1da6a8f064e34a61f5f3f159be4f9b4e1d763c0bae0544d4a62655a0"
},
{
"contractName": "gas_test",
"bytecodePath": "bootloader/build/artifacts/gas_test.yul.zbin",
"sourceCodePath": "bootloader/build/gas_test.yul",
"bytecodeHash": "0x010008d53e61c052b8bcebf32b8ecf6410b60b1ecedecce79e409aecf09b7f35",
"sourceCodeHash": "0x09af28fdb3b8ef36e70c9117ff677e87cff418ed3999356074a0ae6dfa07894e"
"bytecodeHash": "0x010008d5b74bca8bd91af94dae172a000fa2a61bed9407e94493ea7a4c58deab",
"sourceCodeHash": "0xe4903b095d23b24ef3ba7d49c913146c15a13107deb7e3f14acd28ef0084ea38"
},
{
"contractName": "playground_batch",
"bytecodePath": "bootloader/build/artifacts/playground_batch.yul.zbin",
"sourceCodePath": "bootloader/build/playground_batch.yul",
"bytecodeHash": "0x010009554555c755480bf61c5a6ad8a36e42cae8f684ef5e3638783f3784b69f",
"sourceCodeHash": "0xc8169c1a1e08604b37c5378d562ccbd91b5de2c0eb346e89bf509553d238158f"
"bytecodeHash": "0x01000955a57afaf48c0661195d6780dbe92d7f4527971c1e640b2a791bc88624",
"sourceCodeHash": "0x1871a225e392c447b202a824b7de884a28f60cfcadf4b582f52ca6f8cf9a56ec"
},
{
"contractName": "proved_batch",
"bytecodePath": "bootloader/build/artifacts/proved_batch.yul.zbin",
"sourceCodePath": "bootloader/build/proved_batch.yul",
"bytecodeHash": "0x010008e561c1935ffa43f541726bb76a8c4ac64e06b9a7dc8b9c3da40165abd3",
"sourceCodeHash": "0x0aeec595ca4b8a5c9e3213eadc02d9465e35196f6caf9be17d4eb74b95b6e2b3"
"bytecodeHash": "0x010008e54c17fe2eac3da99a36fdfec3ba28eb1a54b6b9e519e7705ab5fcbc2b",
"sourceCodeHash": "0x0e984fefaf725e625f630e8ba317f4130742cebf9760a2a6be158c1612a72cae"
}
]
Loading

0 comments on commit f6707ad

Please sign in to comment.