[{"data":1,"prerenderedAt":1318},["ShallowReactive",2],{"navigation":3,"/zksync-network/zksync-connect/guides/local-setup":778,"/zksync-network/zksync-connect/guides/local-setup-surround":1313},[4,342,457],{"title":5,"_path":6,"children":7},"ZKsync Network","/zksync-network",[8,10,25,37,74,237,268,282,333],{"title":9,"_path":6},"Introduction",{"title":11,"_path":12,"children":13},"Quickstart","/zksync-network/quick-start",[14,16,19,22],{"title":15,"_path":12},"Setup",{"title":17,"_path":18},"Deploy your first contract","/zksync-network/quick-start/deploy-your-first-contract",{"title":20,"_path":21},"Interact with your contract","/zksync-network/quick-start/interact-with-your-contract",{"title":23,"_path":24},"Build a Frontend","/zksync-network/quick-start/build-a-frontend",{"title":26,"_path":27,"children":28},"Environment","/zksync-network/environment",[29,31,34],{"title":30,"_path":27},"Elastic Network Chains",{"title":32,"_path":33},"L1 contracts","/zksync-network/environment/l1-contracts",{"title":35,"_path":36},"System contracts","/zksync-network/environment/l2-contracts",{"title":38,"_path":39,"children":40},"Unique features","/zksync-network/unique-features",[41],{"title":42,"_path":43,"children":44},"ZKsync SSO","/zksync-network/unique-features/zksync-sso",[45,47,50,53,56,59,62,65,68,71],{"title":46,"_path":43},"SSO Intro",{"title":48,"_path":49},"Getting Started","/zksync-network/unique-features/zksync-sso/getting-started",{"title":51,"_path":52},"Architecture","/zksync-network/unique-features/zksync-sso/architecture",{"title":54,"_path":55},"Auth Server","/zksync-network/unique-features/zksync-sso/auth-server",{"title":57,"_path":58},"Sessions","/zksync-network/unique-features/zksync-sso/sessions",{"title":60,"_path":61},"Passkeys","/zksync-network/unique-features/zksync-sso/passkeys",{"title":63,"_path":64},"Accounts","/zksync-network/unique-features/zksync-sso/accounts",{"title":66,"_path":67},"Account Recovery","/zksync-network/unique-features/zksync-sso/account-recovery",{"title":69,"_path":70},"Transaction Flow","/zksync-network/unique-features/zksync-sso/transaction-flow",{"title":72,"_path":73},"FAQs","/zksync-network/unique-features/zksync-sso/faqs",{"title":75,"_path":76,"children":77},"Tooling","/zksync-network/tooling",[78,92,148,173,228,231,234],{"title":79,"_path":80,"children":81},"Local setup","/zksync-network/tooling/local-setup",[82,83,86,89],{"title":48,"_path":80},{"title":84,"_path":85},"anvil-zksync","/zksync-network/tooling/local-setup/anvil-zksync-node",{"title":87,"_path":88},"Docker L1 - L2 Nodes","/zksync-network/tooling/local-setup/dockerized-l1-l2-nodes",{"title":90,"_path":91},"Continuous Integration","/zksync-network/tooling/local-setup/continuous-integration",{"title":93,"_path":94,"children":95},"Hardhat","/zksync-network/tooling/hardhat",[96,98,101,114],{"title":97,"_path":94},"Overview",{"title":99,"_path":100},"Installation","/zksync-network/tooling/hardhat/installation",{"title":102,"_path":103,"children":104},"Guides","/zksync-network/tooling/hardhat/guides",[105,108,111],{"title":106,"_path":107},"Getting started","/zksync-network/tooling/hardhat/guides/getting-started",{"title":109,"_path":110},"Migrating Hardhat project to ZKsync Era","/zksync-network/tooling/hardhat/guides/migrating-to-zksync",{"title":112,"_path":113},"Compiling non-inlinable libraries","/zksync-network/tooling/hardhat/guides/compiling-libraries",{"title":115,"_path":116,"children":117},"Plugins","/zksync-network/tooling/hardhat/plugins",[118,121,124,127,130,133,136,139,142,145],{"title":119,"_path":120},"hardhat-zksync","/zksync-network/tooling/hardhat/plugins/hardhat-zksync",{"title":122,"_path":123},"hardhat-zksync-solc","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-solc",{"title":125,"_path":126},"hardhat-zksync-vyper","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-vyper",{"title":128,"_path":129},"hardhat-zksync-deploy","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-deploy",{"title":131,"_path":132},"hardhat-zksync-upgradable","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-upgradable",{"title":134,"_path":135},"hardhat-zksync-verify","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-verify",{"title":137,"_path":138},"hardhat-zksync-verify-vyper","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-verify-vyper",{"title":140,"_path":141},"hardhat-zksync-ethers","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-ethers",{"title":143,"_path":144},"hardhat-zksync-node","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-node",{"title":146,"_path":147},"Hardhat Community Plugins","/zksync-network/tooling/hardhat/plugins/other-plugins",{"title":149,"_path":150,"children":151},"Foundry","/zksync-network/tooling/foundry",[152,154,156,158],{"title":97,"_path":153},"/zksync-network/tooling/foundry/overview",{"title":99,"_path":155},"/zksync-network/tooling/foundry/installation",{"title":48,"_path":157},"/zksync-network/tooling/foundry/getting-started",{"title":159,"_path":160,"children":161},"Migration Guide","/zksync-network/tooling/foundry/migration-guide",[162,164,167,170],{"title":97,"_path":163},"/zksync-network/tooling/foundry/migration-guide/overview",{"title":165,"_path":166},"Compilation","/zksync-network/tooling/foundry/migration-guide/compilation",{"title":168,"_path":169},"Deployment","/zksync-network/tooling/foundry/migration-guide/deployment",{"title":171,"_path":172},"Testing","/zksync-network/tooling/foundry/migration-guide/testing",{"title":174,"_path":175,"children":176},"ZKsync CLI","/zksync-network/tooling/zksync-cli",[177,178,181,184,187,190,193,196,199,202],{"title":48,"_path":175},{"title":179,"_path":180},"Reading transaction data","/zksync-network/tooling/zksync-cli/reading-transaction-data",{"title":182,"_path":183},"Wallet actions","/zksync-network/tooling/zksync-cli/wallet-actions",{"title":185,"_path":186},"Bridging","/zksync-network/tooling/zksync-cli/bridging",{"title":188,"_path":189},"Interact with contracts","/zksync-network/tooling/zksync-cli/interact-with-contracts",{"title":191,"_path":192},"Creating projects","/zksync-network/tooling/zksync-cli/creating-projects",{"title":194,"_path":195},"Running a node","/zksync-network/tooling/zksync-cli/running-a-node",{"title":197,"_path":198},"Configuring chains","/zksync-network/tooling/zksync-cli/configuring-chains",{"title":200,"_path":201},"Troubleshooting","/zksync-network/tooling/zksync-cli/troubleshooting",{"title":203,"_path":204,"children":205},"CLI Reference","/zksync-network/tooling/zksync-cli/reference",[206,207,210,213,216,219,222,225],{"title":97,"_path":204},{"title":208,"_path":209},"zksync-cli bridge","/zksync-network/tooling/zksync-cli/reference/zksync-cli-bridge",{"title":211,"_path":212},"zksync-cli config chains","/zksync-network/tooling/zksync-cli/reference/zksync-cli-config-chains",{"title":214,"_path":215},"zksync-cli contract","/zksync-network/tooling/zksync-cli/reference/zksync-cli-contract",{"title":217,"_path":218},"zksync-cli create","/zksync-network/tooling/zksync-cli/reference/zksync-cli-create",{"title":220,"_path":221},"zksync-cli dev","/zksync-network/tooling/zksync-cli/reference/zksync-cli-dev",{"title":223,"_path":224},"zksync-cli transaction","/zksync-network/tooling/zksync-cli/reference/zksync-cli-transaction",{"title":226,"_path":227},"zksync-cli wallet","/zksync-network/tooling/zksync-cli/reference/zksync-cli-wallet",{"title":229,"_path":230},"Block explorers","/zksync-network/tooling/block-explorers",{"title":232,"_path":233},"ZKsync External Node","/zksync-network/tooling/external-node",{"title":235,"_path":236},"ZKsync Easy On-Ramp","/zksync-network/tooling/zksync-easy-onramp",{"title":238,"_path":239,"children":240},"ZKsync Connect","/zksync-network/zksync-connect",[241,242,257,259,262,265],{"title":97,"_path":239},{"title":102,"_path":243,"children":244},"/zksync-network/zksync-connect/guides",[245,248,251,254],{"title":246,"_path":247},"Local Setup","/zksync-network/zksync-connect/guides/local-setup",{"title":249,"_path":250},"Transaction Bundles","/zksync-network/zksync-connect/guides/transaction-bundles",{"title":252,"_path":253},"Asset Transfers","/zksync-network/zksync-connect/guides/asset-transfers",{"title":255,"_path":256},"Interop Messages","/zksync-network/zksync-connect/guides/interop-messages",{"title":249,"_path":258},"/zksync-network/zksync-connect/transaction-bundles",{"title":260,"_path":261},"Crosschain Asset Transfers","/zksync-network/zksync-connect/crosschain-asset-transfers",{"title":263,"_path":264},"Messaging","/zksync-network/zksync-connect/messaging",{"title":266,"_path":267},"Interop Fees","/zksync-network/zksync-connect/interop-fees",{"title":269,"_path":270,"children":271},"ZKsync OS Developer Preview","/zksync-network/zksync-os",[272,274,277,280],{"title":273,"_path":270},"ZKsync OS Overview",{"title":275,"_path":276},"Network Details","/zksync-network/zksync-os/network-details",{"title":278,"_path":279},"Developer Quickstart","/zksync-network/zksync-os/quickstart",{"title":72,"_path":281},"/zksync-network/zksync-os/faqs",{"title":283,"_path":284,"children":285},"ZKsync Era","/zksync-network/zksync-era",[286,288,291,294,330],{"title":287,"_path":284},"About ZKsync Era",{"title":289,"_path":290},"ZKsync Era RPC","/zksync-network/zksync-era/network-details",{"title":292,"_path":293},"Features","/zksync-network/zksync-era/unique-features",{"title":295,"_path":296,"children":297},"Ecosystem","/zksync-network/zksync-era/ecosystem",[298,300,303,306,309,312,315,318,321,324,327],{"title":299,"_path":296},"Explore the ecosystem",{"title":301,"_path":302},"Bridges","/zksync-network/zksync-era/ecosystem/bridges",{"title":304,"_path":305},"Cross chain","/zksync-network/zksync-era/ecosystem/cross-chain",{"title":307,"_path":308},"Data indexers","/zksync-network/zksync-era/ecosystem/data-indexers",{"title":310,"_path":311},"Monitoring","/zksync-network/zksync-era/ecosystem/monitoring",{"title":313,"_path":314},"Network faucets","/zksync-network/zksync-era/ecosystem/network-faucets",{"title":316,"_path":317},"Oracles","/zksync-network/zksync-era/ecosystem/oracles",{"title":319,"_path":320},"RPC providers","/zksync-network/zksync-era/ecosystem/node-providers",{"title":322,"_path":323},"Wallets","/zksync-network/zksync-era/ecosystem/wallets",{"title":325,"_path":326},"User Onboarding","/zksync-network/zksync-era/ecosystem/user-onboarding",{"title":328,"_path":329},"Paymasters","/zksync-network/zksync-era/ecosystem/paymasters",{"title":331,"_path":332},"Security and best practices","/zksync-network/zksync-era/security-best-practices",{"title":334,"_path":335,"children":336},"Contributing","/zksync-network/contributing",[337,339],{"title":338,"_path":335},"Contributing to Documentation",{"title":340,"_path":341},"Protocol Contributions","/zksync-network/contributing/protocol-contributions",{"title":343,"_path":344,"children":345},"ZK Stack","/zk-stack",[346,348,351,381,403,419,454],{"title":347,"_path":344},"ZK Stack Overview",{"title":349,"_path":350},"ZKsync Chains","/zk-stack/zk-chains",{"title":352,"_path":353,"children":354},"Components","/zk-stack/components",[355,357,360,363,372,375,378],{"title":356,"_path":353},"ZK Stack Components Overview",{"title":358,"_path":359},"ZKsync OS","/zk-stack/components/zksync-os",{"title":361,"_path":362},"ZKsync OS Server","/zk-stack/components/server",{"title":364,"_path":365,"children":366},"ZKsync Airbender","/zk-stack/components/zksync-airbender",[367,369],{"title":368,"_path":365},"Airbender Overview",{"title":370,"_path":371},"Airbender Deep Dive","/zk-stack/components/zksync-airbender/deepdive",{"title":373,"_path":374},"Block explorer","/zk-stack/components/block-explorer",{"title":376,"_path":377},"Portal","/zk-stack/components/portal",{"title":379,"_path":380},"Fee withdrawer","/zk-stack/components/fee-withdrawer",{"title":382,"_path":383,"children":384},"Run a ZKsync Chain","/zk-stack/running",[385,388,391,394,397,400],{"title":386,"_path":387},"Launch a ZKsync chain","/zk-stack/running/quickstart",{"title":389,"_path":390},"Interact with your chain","/zk-stack/running/using-a-local-zk-chain",{"title":392,"_path":393},"ZKsync Gateway","/zk-stack/running/gateway-settlement-layer",{"title":395,"_path":396},"Prover setup","/zk-stack/running/proving",{"title":398,"_path":399},"Ownership Model","/zk-stack/running/ownership-model",{"title":401,"_path":402},"Rollup as a Service","/zk-stack/running/raas",{"title":404,"_path":405,"children":406},"Customizations","/zk-stack/customizations",[407,410,413,416],{"title":408,"_path":409},"Custom base tokens","/zk-stack/customizations/custom-base-tokens",{"title":411,"_path":412},"Validium in ZK Stack","/zk-stack/customizations/validium",{"title":414,"_path":415},"Configurations","/zk-stack/customizations/configurations",{"title":417,"_path":418},"Transaction filtering","/zk-stack/customizations/transaction-filtering",{"title":420,"_path":421,"children":422},"Prividium™","/zk-stack/prividium",[423,426,428,430,433,436,439,442,445,448,451],{"title":424,"_path":425},"Prividium™ Overview","/zk-stack/prividium/overview",{"title":292,"_path":427},"/zk-stack/prividium/features",{"title":51,"_path":429},"/zk-stack/prividium/architecture",{"title":431,"_path":432},"Deployment Model","/zk-stack/prividium/deployment",{"title":434,"_path":435},"Proxy RPC API","/zk-stack/prividium/proxy",{"title":437,"_path":438},"Administration and User Management","/zk-stack/prividium/administration-user-management",{"title":440,"_path":441},"Permissions and Access Control","/zk-stack/prividium/permissions-overview",{"title":443,"_path":444},"Prividium™ SDK","/zk-stack/prividium/sdk",{"title":446,"_path":447},"Private Block Explorer","/zk-stack/prividium/explorer",{"title":449,"_path":450},"Developer Considerations","/zk-stack/prividium/developer-considerations",{"title":452,"_path":453},"Prividium™ License Model","/zk-stack/prividium/license",{"title":455,"_path":456},"Open Source License","/zk-stack/license",{"title":458,"_path":459,"children":460},"ZKsync Protocol","/zksync-protocol",[461,463,480,505,518,539,558,571,775],{"title":462,"_path":459},"Getting started with ZKsync protocol",{"title":464,"_path":465,"children":466},"ZKsync protocol overview","/zksync-protocol/rollup",[467,468,471,474,477],{"title":464,"_path":465},{"title":469,"_path":470},"Bridging assets","/zksync-protocol/rollup/bridging-assets",{"title":472,"_path":473},"Finality","/zksync-protocol/rollup/finality",{"title":475,"_path":476},"Data availability","/zksync-protocol/rollup/data-availability",{"title":478,"_path":479},"Pubdata compression","/zksync-protocol/rollup/pubdata-compression",{"title":358,"_path":481,"children":482},"/zksync-protocol/zksyncos",[483,484,487,490,493,496,499,502],{"title":273,"_path":481},{"title":485,"_path":486},"Double Resource Accounting","/zksync-protocol/zksyncos/double-accounting",{"title":488,"_path":489},"Bootloader","/zksync-protocol/zksyncos/bootloader",{"title":491,"_path":492},"Execution Environments","/zksync-protocol/zksyncos/execution-environment",{"title":494,"_path":495},"System","/zksync-protocol/zksyncos/system",{"title":497,"_path":498},"Processing of Transactions","/zksync-protocol/zksyncos/tx-processing",{"title":500,"_path":501},"System Hooks","/zksync-protocol/zksyncos/system-hooks",{"title":503,"_path":504},"Runner Flow","/zksync-protocol/zksyncos/runner-flow",{"title":392,"_path":506,"children":507},"/zksync-protocol/gateway",[508,510,512,515],{"title":509,"_path":506},"Gateway Overview",{"title":292,"_path":511},"/zksync-protocol/gateway/features",{"title":513,"_path":514},"Data Availability Considerations","/zksync-protocol/gateway/da-considerations",{"title":516,"_path":517},"Frequently Asked Questions","/zksync-protocol/gateway/gateway-faq",{"title":519,"_path":520,"children":521},"Web3 API","/zksync-protocol/api",[522,524,527,530,533,536],{"title":523,"_path":520},"API Overview",{"title":525,"_path":526},"Conventions","/zksync-protocol/api/conventions",{"title":528,"_path":529},"Ethereum JSON-RPC API","/zksync-protocol/api/ethereum-rpc",{"title":531,"_path":532},"Debug JSON-RPC API","/zksync-protocol/api/debug-rpc",{"title":534,"_path":535},"ZKsync JSON-RPC API","/zksync-protocol/api/zks-rpc",{"title":537,"_path":538},"PubSub JSON-RPC API","/zksync-protocol/api/pub-sub-rpc",{"title":540,"_path":541,"children":542},"Contracts","/zksync-protocol/contracts",[543,545],{"title":544,"_path":541},"ZKsync contracts",{"title":32,"_path":546,"children":547},"/zksync-protocol/contracts/l1-contracts",[548,549,552,555],{"title":32,"_path":546},{"title":550,"_path":551},"L1 ecosystem contracts","/zksync-protocol/contracts/l1-contracts/l1-ecosystem-contracts",{"title":553,"_path":554},"Shared bridges","/zksync-protocol/contracts/l1-contracts/shared-bridges",{"title":556,"_path":557},"ZKsync Chain addresses","/zksync-protocol/contracts/l1-contracts/zk-chain-addresses",{"title":559,"_path":560,"children":561},"Protocol security","/zksync-protocol/security",[562,565,568],{"title":563,"_path":564},"Audits","/zksync-protocol/security/audits",{"title":566,"_path":567},"Bug bounty","/zksync-protocol/security/bug-bounty",{"title":569,"_path":570},"Withdrawal delay","/zksync-protocol/security/withdrawal-delay",{"title":572,"_path":573,"children":574},"EraVM Chains","/zksync-protocol/era-vm",[575,577,604,613,630,695,707,729,756],{"title":576,"_path":573},"EraVM Overview",{"title":578,"_path":579,"children":580},"Transactions","/zksync-protocol/era-vm/transactions",[581,584,587,590],{"title":582,"_path":583},"Transaction lifecycle","/zksync-protocol/era-vm/transactions/transaction-lifecycle",{"title":585,"_path":586},"Blocks and batches","/zksync-protocol/era-vm/transactions/blocks",{"title":588,"_path":589},"L1 \u003C-> L2 communication","/zksync-protocol/era-vm/transactions/l1_l2_communication",{"title":591,"_path":592,"children":593},"Fee model","/zksync-protocol/era-vm/transactions/fee-model",[594,595,598,601],{"title":591,"_path":592},{"title":596,"_path":597},"How L2 gas price works","/zksync-protocol/era-vm/transactions/fee-model/how-l2-gas-price-works",{"title":599,"_path":600},"How ZKsync Chains charges for pubdata","/zksync-protocol/era-vm/transactions/fee-model/how-we-charge-for-pubdata",{"title":602,"_path":603},"ZKsync fee structure","/zksync-protocol/era-vm/transactions/fee-model/fee-structure",{"title":605,"_path":606,"children":607},"EraVM","/zksync-protocol/era-vm/vm",[608,610],{"title":609,"_path":606},"ZKsync Virtual Machine primer",{"title":611,"_path":612},"VM formal specification","/zksync-protocol/era-vm/vm/formal-spec",{"title":540,"_path":614,"children":615},"/zksync-protocol/era-vm/contracts",[616,617,619,621,624,627],{"title":544,"_path":614},{"title":488,"_path":618},"/zksync-protocol/era-vm/contracts/bootloader",{"title":35,"_path":620},"/zksync-protocol/era-vm/contracts/system-contracts",{"title":622,"_path":623},"Handling L1->L2 ops on ZKsync","/zksync-protocol/era-vm/contracts/handling-l1-l2-ops",{"title":625,"_path":626},"Handling pubdata","/zksync-protocol/era-vm/contracts/handling-pubdata",{"title":628,"_path":629},"Pubdata post 4844","/zksync-protocol/era-vm/contracts/pubdata-post-4844",{"title":631,"_path":632,"children":633},"Circuits","/zksync-protocol/era-vm/circuits",[634,635,638,689,692],{"title":97,"_path":632},{"title":636,"_path":637},"ZK terminology","/zksync-protocol/era-vm/circuits/zk-terminology",{"title":639,"_path":640,"children":641},"Concrete circuits","/zksync-protocol/era-vm/circuits/circuits",[642,643,646,649,652,655,658,661,664,667,670,673,676],{"title":97,"_path":640},{"title":644,"_path":645},"Circuit testing","/zksync-protocol/era-vm/circuits/circuits/circuit-testing",{"title":647,"_path":648},"CodeDecommitter","/zksync-protocol/era-vm/circuits/circuits/code-decommitter",{"title":650,"_path":651},"DemuxLogQueue","/zksync-protocol/era-vm/circuits/circuits/demux-log-queue",{"title":653,"_path":654},"ECRecover","/zksync-protocol/era-vm/circuits/circuits/ecrecover",{"title":656,"_path":657},"KeccakRoundFunction","/zksync-protocol/era-vm/circuits/circuits/keccak-round-function",{"title":659,"_path":660},"L1MessagesHasher","/zksync-protocol/era-vm/circuits/circuits/l1-messages-hasher",{"title":662,"_path":663},"LogSorter","/zksync-protocol/era-vm/circuits/circuits/log-sorter",{"title":665,"_path":666},"Main VM","/zksync-protocol/era-vm/circuits/circuits/main-vm",{"title":668,"_path":669},"RAMPermutation","/zksync-protocol/era-vm/circuits/circuits/ram-permutation",{"title":671,"_path":672},"Sha256RoundFunction","/zksync-protocol/era-vm/circuits/circuits/sha256-round-function",{"title":674,"_path":675},"StorageApplication","/zksync-protocol/era-vm/circuits/circuits/storage-application",{"title":677,"_path":678,"children":679},"Sorting and deduplicating","/zksync-protocol/era-vm/circuits/circuits/sorting",[680,681,684,687],{"title":97,"_path":678},{"title":682,"_path":683},"SortDecommitments","/zksync-protocol/era-vm/circuits/circuits/sorting/sort-decommitments",{"title":685,"_path":686},"StorageSorter","/zksync-protocol/era-vm/circuits/circuits/sorting/storage-sorter",{"title":662,"_path":688},"/zksync-protocol/era-vm/circuits/circuits/sorting/log-sorter",{"title":690,"_path":691},"Boojum gadgets","/zksync-protocol/era-vm/circuits/boojum-gadgets",{"title":693,"_path":694},"Boojum function - `check_if_satisfied`","/zksync-protocol/era-vm/circuits/boojum-function-check-if-satisfied",{"title":696,"_path":697,"children":698},"Compilers","/zksync-protocol/era-vm/compiler",[699],{"title":700,"_path":701,"children":702},"Compiler toolchain overview","/zksync-protocol/era-vm/compiler/toolchain",[703,704],{"title":700,"_path":701},{"title":705,"_path":706},"LLVM framework","/zksync-protocol/era-vm/compiler/toolchain/llvm",{"title":708,"_path":709,"children":710},"Differences from L1","/zksync-protocol/era-vm/differences",[711,714,717,720,723,726],{"title":712,"_path":713},"EVM instructions","/zksync-protocol/era-vm/differences/evm-instructions",{"title":715,"_path":716},"Nonces","/zksync-protocol/era-vm/differences/nonces",{"title":718,"_path":719},"Libraries","/zksync-protocol/era-vm/differences/libraries",{"title":721,"_path":722},"Precompiles","/zksync-protocol/era-vm/differences/pre-compiles",{"title":724,"_path":725},"Native AA vs EIP 4337","/zksync-protocol/era-vm/differences/native-vs-eip4337",{"title":727,"_path":728},"Contract deployment","/zksync-protocol/era-vm/differences/contract-deployment",{"title":730,"_path":731,"children":732},"EVM Bytecode Interpreter","/zksync-protocol/era-vm/evm-interpreter",[733,735,738,741,744,747,750,753],{"title":97,"_path":734},"/zksync-protocol/era-vm/evm-interpreter/overview",{"title":736,"_path":737},"EVM bytecode deployment and execution","/zksync-protocol/era-vm/evm-interpreter/deployment-execution",{"title":739,"_path":740},"EraVM ↔ EVM Contract Interactions","/zksync-protocol/era-vm/evm-interpreter/era-evm-interactions",{"title":742,"_path":743},"Differences Between the EVM Bytecode Interpreter and Ethereum","/zksync-protocol/era-vm/evm-interpreter/evm-differences",{"title":745,"_path":746},"Technical Architecture of the EVM Interpreter","/zksync-protocol/era-vm/evm-interpreter/technical-details",{"title":748,"_path":749},"EVM Gas Interpretation","/zksync-protocol/era-vm/evm-interpreter/evm-gas-interpretation",{"title":751,"_path":752},"Pre Deployed Contracts","/zksync-protocol/era-vm/evm-interpreter/pre-deployed-contracts",{"title":754,"_path":755},"EVM Bytecode Interpreter FAQ","/zksync-protocol/era-vm/evm-interpreter/faq",{"title":757,"_path":758,"children":759},"Account Abstraction","/zksync-protocol/era-vm/account-abstraction",[760,761,764,766,769,772],{"title":9,"_path":758},{"title":762,"_path":763},"Design","/zksync-protocol/era-vm/account-abstraction/design",{"title":328,"_path":765},"/zksync-protocol/era-vm/account-abstraction/paymasters",{"title":767,"_path":768},"Building smart accounts","/zksync-protocol/era-vm/account-abstraction/building-smart-accounts",{"title":770,"_path":771},"Signature validation","/zksync-protocol/era-vm/account-abstraction/signature-validation",{"title":773,"_path":774},"Extending EIP-4337","/zksync-protocol/era-vm/account-abstraction/extending-4337",{"title":776,"_path":777},"Upgrades and migrations","/zksync-protocol/upgrades-and-migrations",{"_path":247,"_dir":779,"_draft":780,"_partial":780,"_locale":781,"title":246,"description":782,"body":783,"_type":1306,"_id":1307,"_source":1308,"_file":1309,"_stem":1310,"_extension":1311,"sitemap":1312},"guides",false,"","Setup a local environment for testing interoperable ZKsync chains.",{"type":784,"children":785,"toc":1300},"root",[786,794,845,859,892,905,926,946,951,956,1012,1017,1024,1036,1049,1056,1182,1188,1294],{"type":787,"tag":788,"props":789,"children":790},"element","p",{},[791],{"type":792,"value":793},"text","To setup a local environment for testing L2 -> L2 interoperability, follow the steps below.",{"type":787,"tag":795,"props":796,"children":798},"callout",{"icon":797},"i-heroicons-light-bulb",[799],{"type":787,"tag":788,"props":800,"children":801},{},[802,804,813,815,822,824,830,832,843],{"type":792,"value":803},"Make sure you have ",{"type":787,"tag":805,"props":806,"children":810},"a",{"href":807,"rel":808},"https://rust-lang.org/tools/install/",[809],"nofollow",[811],{"type":792,"value":812},"Rust",{"type":792,"value":814}," and version\n",{"type":787,"tag":816,"props":817,"children":819},"code",{"className":818},[],[820],{"type":792,"value":821},"1.5.1",{"type":792,"value":823}," of ",{"type":787,"tag":816,"props":825,"children":827},{"className":826},[],[828],{"type":792,"value":829},"anvil",{"type":792,"value":831}," via\n",{"type":787,"tag":805,"props":833,"children":836},{"href":834,"rel":835},"https://getfoundry.sh/introduction/installation",[809],[837],{"type":787,"tag":816,"props":838,"children":840},{"className":839},[],[841],{"type":792,"value":842},"foundry",{"type":792,"value":844}," installed.",{"type":787,"tag":788,"props":846,"children":847},{},[848,850,857],{"type":792,"value":849},"To setup a local environment for testing,\nclone the ",{"type":787,"tag":805,"props":851,"children":854},{"href":852,"rel":853},"https://github.com/matter-labs/zksync-os-server",[809],[855],{"type":792,"value":856},"zksync-os-server repo",{"type":792,"value":858},":",{"type":787,"tag":860,"props":861,"children":865},"pre",{"className":862,"code":863,"language":864,"meta":781,"style":781},"language-bash shiki shiki-themes github-light github-light github-dark","git clone https://github.com/matter-labs/zksync-os-server.git\n","bash",[866],{"type":787,"tag":816,"props":867,"children":868},{"__ignoreMap":781},[869],{"type":787,"tag":870,"props":871,"children":874},"span",{"class":872,"line":873},"line",1,[875,881,887],{"type":787,"tag":870,"props":876,"children":878},{"style":877},"--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0",[879],{"type":792,"value":880},"git",{"type":787,"tag":870,"props":882,"children":884},{"style":883},"--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF",[885],{"type":792,"value":886}," clone",{"type":787,"tag":870,"props":888,"children":889},{"style":883},[890],{"type":792,"value":891}," https://github.com/matter-labs/zksync-os-server.git\n",{"type":787,"tag":788,"props":893,"children":894},{},[895,897,903],{"type":792,"value":896},"Then move into the repo and run the command below to start a local environment with two L2 chains that have ",{"type":787,"tag":816,"props":898,"children":900},{"className":899},[],[901],{"type":792,"value":902},"v31",{"type":792,"value":904}," interop enabled:",{"type":787,"tag":860,"props":906,"children":908},{"className":862,"code":907,"language":864,"meta":781,"style":781},"cd zksync-os-server\n",[909],{"type":787,"tag":816,"props":910,"children":911},{"__ignoreMap":781},[912],{"type":787,"tag":870,"props":913,"children":914},{"class":872,"line":873},[915,921],{"type":787,"tag":870,"props":916,"children":918},{"style":917},"--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[919],{"type":792,"value":920},"cd",{"type":787,"tag":870,"props":922,"children":923},{"style":883},[924],{"type":792,"value":925}," zksync-os-server\n",{"type":787,"tag":860,"props":927,"children":929},{"className":862,"code":928,"language":864,"meta":781,"style":781},"./run_local.sh ./local-chains/v31.0/multi_chain\n",[930],{"type":787,"tag":816,"props":931,"children":932},{"__ignoreMap":781},[933],{"type":787,"tag":870,"props":934,"children":935},{"class":872,"line":873},[936,941],{"type":787,"tag":870,"props":937,"children":938},{"style":877},[939],{"type":792,"value":940},"./run_local.sh",{"type":787,"tag":870,"props":942,"children":943},{"style":883},[944],{"type":792,"value":945}," ./local-chains/v31.0/multi_chain\n",{"type":787,"tag":788,"props":947,"children":948},{},[949],{"type":792,"value":950},"The first time running this can take a few minutes for the dependencies to\ncompile.",{"type":787,"tag":788,"props":952,"children":953},{},[954],{"type":792,"value":955},"You should now have three local chains running:",{"type":787,"tag":957,"props":958,"children":959},"ul",{},[960,972,993],{"type":787,"tag":961,"props":962,"children":963},"li",{},[964,966],{"type":792,"value":965},"a local L1 chain running at port ",{"type":787,"tag":816,"props":967,"children":969},{"className":968},[],[970],{"type":792,"value":971},"8545",{"type":787,"tag":961,"props":973,"children":974},{},[975,977,983,985,991],{"type":792,"value":976},"a local L2 chain running at port ",{"type":787,"tag":816,"props":978,"children":980},{"className":979},[],[981],{"type":792,"value":982},"3050",{"type":792,"value":984}," (chain ID ",{"type":787,"tag":816,"props":986,"children":988},{"className":987},[],[989],{"type":792,"value":990},"6565",{"type":792,"value":992},")",{"type":787,"tag":961,"props":994,"children":995},{},[996,998,1004,1005,1011],{"type":792,"value":997},"a second local L2 chain running at port ",{"type":787,"tag":816,"props":999,"children":1001},{"className":1000},[],[1002],{"type":792,"value":1003},"3051",{"type":792,"value":984},{"type":787,"tag":816,"props":1006,"children":1008},{"className":1007},[],[1009],{"type":792,"value":1010},"6566",{"type":792,"value":992},{"type":787,"tag":788,"props":1013,"children":1014},{},[1015],{"type":792,"value":1016},"Note that once you end this process, the history of each chain will be\ncompletely erased.\nThese are in-memory nodes, so they do not persist any\nstorage of the chains.",{"type":787,"tag":1018,"props":1019,"children":1021},"h2",{"id":1020},"funding-a-test-account",[1022],{"type":792,"value":1023},"Funding a test account",{"type":787,"tag":788,"props":1025,"children":1026},{},[1027,1029,1034],{"type":792,"value":1028},"The L1 chain has access to all of the default rich wallets configured with ",{"type":787,"tag":816,"props":1030,"children":1032},{"className":1031},[],[1033],{"type":792,"value":829},{"type":792,"value":1035},",\nhowever these addresses do not yet have funds bridged to them on the L2 chains.",{"type":787,"tag":788,"props":1037,"children":1038},{},[1039,1041,1047],{"type":792,"value":1040},"Before going through the other guides in this section,\nrun the commands below from inside the ",{"type":787,"tag":816,"props":1042,"children":1044},{"className":1043},[],[1045],{"type":792,"value":1046},"zksync-os-server",{"type":792,"value":1048}," repo to fund the test wallet used later.",{"type":787,"tag":1050,"props":1051,"children":1053},"h3",{"id":1052},"fund-wallet-on-chain-6565",[1054],{"type":792,"value":1055},"Fund wallet on chain 6565",{"type":787,"tag":860,"props":1057,"children":1059},{"className":862,"code":1058,"language":864,"meta":781,"style":781},"cargo run -p zksync_os_generate_deposit -- \\\n  --bridgehub 0x4c548076C53BA29A7DDdAc6Fe463C57CDE78a3d8 \\\n  --chain-id 6565 \\\n  --l1-rpc-url http://localhost:8545 \\\n  --private-key 0x7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 \\\n  --amount 1\n",[1060],{"type":787,"tag":816,"props":1061,"children":1062},{"__ignoreMap":781},[1063,1096,1114,1132,1150,1168],{"type":787,"tag":870,"props":1064,"children":1065},{"class":872,"line":873},[1066,1071,1076,1081,1086,1091],{"type":787,"tag":870,"props":1067,"children":1068},{"style":877},[1069],{"type":792,"value":1070},"cargo",{"type":787,"tag":870,"props":1072,"children":1073},{"style":883},[1074],{"type":792,"value":1075}," run",{"type":787,"tag":870,"props":1077,"children":1078},{"style":917},[1079],{"type":792,"value":1080}," -p",{"type":787,"tag":870,"props":1082,"children":1083},{"style":883},[1084],{"type":792,"value":1085}," zksync_os_generate_deposit",{"type":787,"tag":870,"props":1087,"children":1088},{"style":917},[1089],{"type":792,"value":1090}," --",{"type":787,"tag":870,"props":1092,"children":1093},{"style":917},[1094],{"type":792,"value":1095}," \\\n",{"type":787,"tag":870,"props":1097,"children":1099},{"class":872,"line":1098},2,[1100,1105,1110],{"type":787,"tag":870,"props":1101,"children":1102},{"style":917},[1103],{"type":792,"value":1104},"  --bridgehub",{"type":787,"tag":870,"props":1106,"children":1107},{"style":917},[1108],{"type":792,"value":1109}," 0x4c548076C53BA29A7DDdAc6Fe463C57CDE78a3d8",{"type":787,"tag":870,"props":1111,"children":1112},{"style":917},[1113],{"type":792,"value":1095},{"type":787,"tag":870,"props":1115,"children":1117},{"class":872,"line":1116},3,[1118,1123,1128],{"type":787,"tag":870,"props":1119,"children":1120},{"style":917},[1121],{"type":792,"value":1122},"  --chain-id",{"type":787,"tag":870,"props":1124,"children":1125},{"style":917},[1126],{"type":792,"value":1127}," 6565",{"type":787,"tag":870,"props":1129,"children":1130},{"style":917},[1131],{"type":792,"value":1095},{"type":787,"tag":870,"props":1133,"children":1135},{"class":872,"line":1134},4,[1136,1141,1146],{"type":787,"tag":870,"props":1137,"children":1138},{"style":917},[1139],{"type":792,"value":1140},"  --l1-rpc-url",{"type":787,"tag":870,"props":1142,"children":1143},{"style":883},[1144],{"type":792,"value":1145}," http://localhost:8545",{"type":787,"tag":870,"props":1147,"children":1148},{"style":917},[1149],{"type":792,"value":1095},{"type":787,"tag":870,"props":1151,"children":1153},{"class":872,"line":1152},5,[1154,1159,1164],{"type":787,"tag":870,"props":1155,"children":1156},{"style":917},[1157],{"type":792,"value":1158},"  --private-key",{"type":787,"tag":870,"props":1160,"children":1161},{"style":917},[1162],{"type":792,"value":1163}," 0x7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110",{"type":787,"tag":870,"props":1165,"children":1166},{"style":917},[1167],{"type":792,"value":1095},{"type":787,"tag":870,"props":1169,"children":1171},{"class":872,"line":1170},6,[1172,1177],{"type":787,"tag":870,"props":1173,"children":1174},{"style":917},[1175],{"type":792,"value":1176},"  --amount",{"type":787,"tag":870,"props":1178,"children":1179},{"style":917},[1180],{"type":792,"value":1181}," 1\n",{"type":787,"tag":1050,"props":1183,"children":1185},{"id":1184},"fund-wallet-on-chain-6566",[1186],{"type":792,"value":1187},"Fund wallet on chain 6566",{"type":787,"tag":860,"props":1189,"children":1191},{"className":862,"code":1190,"language":864,"meta":781,"style":781},"cargo run -p zksync_os_generate_deposit -- \\\n  --bridgehub 0x4c548076C53BA29A7DDdAc6Fe463C57CDE78a3d8 \\\n  --chain-id 6566 \\\n  --l1-rpc-url http://localhost:8545 \\\n  --private-key 0x7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 \\\n  --amount 1\n",[1192],{"type":787,"tag":816,"props":1193,"children":1194},{"__ignoreMap":781},[1195,1222,1237,1253,1268,1283],{"type":787,"tag":870,"props":1196,"children":1197},{"class":872,"line":873},[1198,1202,1206,1210,1214,1218],{"type":787,"tag":870,"props":1199,"children":1200},{"style":877},[1201],{"type":792,"value":1070},{"type":787,"tag":870,"props":1203,"children":1204},{"style":883},[1205],{"type":792,"value":1075},{"type":787,"tag":870,"props":1207,"children":1208},{"style":917},[1209],{"type":792,"value":1080},{"type":787,"tag":870,"props":1211,"children":1212},{"style":883},[1213],{"type":792,"value":1085},{"type":787,"tag":870,"props":1215,"children":1216},{"style":917},[1217],{"type":792,"value":1090},{"type":787,"tag":870,"props":1219,"children":1220},{"style":917},[1221],{"type":792,"value":1095},{"type":787,"tag":870,"props":1223,"children":1224},{"class":872,"line":1098},[1225,1229,1233],{"type":787,"tag":870,"props":1226,"children":1227},{"style":917},[1228],{"type":792,"value":1104},{"type":787,"tag":870,"props":1230,"children":1231},{"style":917},[1232],{"type":792,"value":1109},{"type":787,"tag":870,"props":1234,"children":1235},{"style":917},[1236],{"type":792,"value":1095},{"type":787,"tag":870,"props":1238,"children":1239},{"class":872,"line":1116},[1240,1244,1249],{"type":787,"tag":870,"props":1241,"children":1242},{"style":917},[1243],{"type":792,"value":1122},{"type":787,"tag":870,"props":1245,"children":1246},{"style":917},[1247],{"type":792,"value":1248}," 6566",{"type":787,"tag":870,"props":1250,"children":1251},{"style":917},[1252],{"type":792,"value":1095},{"type":787,"tag":870,"props":1254,"children":1255},{"class":872,"line":1134},[1256,1260,1264],{"type":787,"tag":870,"props":1257,"children":1258},{"style":917},[1259],{"type":792,"value":1140},{"type":787,"tag":870,"props":1261,"children":1262},{"style":883},[1263],{"type":792,"value":1145},{"type":787,"tag":870,"props":1265,"children":1266},{"style":917},[1267],{"type":792,"value":1095},{"type":787,"tag":870,"props":1269,"children":1270},{"class":872,"line":1152},[1271,1275,1279],{"type":787,"tag":870,"props":1272,"children":1273},{"style":917},[1274],{"type":792,"value":1158},{"type":787,"tag":870,"props":1276,"children":1277},{"style":917},[1278],{"type":792,"value":1163},{"type":787,"tag":870,"props":1280,"children":1281},{"style":917},[1282],{"type":792,"value":1095},{"type":787,"tag":870,"props":1284,"children":1285},{"class":872,"line":1170},[1286,1290],{"type":787,"tag":870,"props":1287,"children":1288},{"style":917},[1289],{"type":792,"value":1176},{"type":787,"tag":870,"props":1291,"children":1292},{"style":917},[1293],{"type":792,"value":1181},{"type":787,"tag":1295,"props":1296,"children":1297},"style",{},[1298],{"type":792,"value":1299},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":781,"searchDepth":1098,"depth":1098,"links":1301},[1302],{"id":1020,"depth":1098,"text":1023,"children":1303},[1304,1305],{"id":1052,"depth":1116,"text":1055},{"id":1184,"depth":1116,"text":1187},"markdown","content:00.zksync-network:45.zksync-connect:05.guides:05.local-setup.md","content","00.zksync-network/45.zksync-connect/05.guides/05.local-setup.md","00.zksync-network/45.zksync-connect/05.guides/05.local-setup","md",{"loc":247},[1314,1316],{"_path":239,"title":97,"description":1315},"Learn about how ZKsync Connect enables interoperable ZKsync chains.",{"_path":250,"title":249,"description":1317},"A guide for sending L2 -> L2 transaction bundles with ZKsync Connect.",1779983667632]