[{"data":1,"prerenderedAt":1020},["ShallowReactive",2],{"navigation":3,"/zksync-network/contributing/protocol-contributions":761,"/zksync-network/contributing/protocol-contributions-surround":1015},[4,325,440],{"title":5,"_path":6,"children":7},"ZKsync Network","/zksync-network",[8,10,25,37,86,248,262,316],{"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,74],{"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},"ZKsync Connect","/zksync-network/unique-features/zksync-connect",[78,80,83],{"title":79,"_path":76},"Overview",{"title":81,"_path":82},"Messaging","/zksync-network/unique-features/zksync-connect/messaging",{"title":84,"_path":85},"Interop Messages Guide","/zksync-network/unique-features/zksync-connect/interop-messages",{"title":87,"_path":88,"children":89},"Tooling","/zksync-network/tooling",[90,104,159,184,239,242,245],{"title":91,"_path":92,"children":93},"Local setup","/zksync-network/tooling/local-setup",[94,95,98,101],{"title":48,"_path":92},{"title":96,"_path":97},"anvil-zksync","/zksync-network/tooling/local-setup/anvil-zksync-node",{"title":99,"_path":100},"Docker L1 - L2 Nodes","/zksync-network/tooling/local-setup/dockerized-l1-l2-nodes",{"title":102,"_path":103},"Continuous Integration","/zksync-network/tooling/local-setup/continuous-integration",{"title":105,"_path":106,"children":107},"Hardhat","/zksync-network/tooling/hardhat",[108,109,112,125],{"title":79,"_path":106},{"title":110,"_path":111},"Installation","/zksync-network/tooling/hardhat/installation",{"title":113,"_path":114,"children":115},"Guides","/zksync-network/tooling/hardhat/guides",[116,119,122],{"title":117,"_path":118},"Getting started","/zksync-network/tooling/hardhat/guides/getting-started",{"title":120,"_path":121},"Migrating Hardhat project to ZKsync Era","/zksync-network/tooling/hardhat/guides/migrating-to-zksync",{"title":123,"_path":124},"Compiling non-inlinable libraries","/zksync-network/tooling/hardhat/guides/compiling-libraries",{"title":126,"_path":127,"children":128},"Plugins","/zksync-network/tooling/hardhat/plugins",[129,132,135,138,141,144,147,150,153,156],{"title":130,"_path":131},"hardhat-zksync","/zksync-network/tooling/hardhat/plugins/hardhat-zksync",{"title":133,"_path":134},"hardhat-zksync-solc","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-solc",{"title":136,"_path":137},"hardhat-zksync-vyper","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-vyper",{"title":139,"_path":140},"hardhat-zksync-deploy","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-deploy",{"title":142,"_path":143},"hardhat-zksync-upgradable","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-upgradable",{"title":145,"_path":146},"hardhat-zksync-verify","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-verify",{"title":148,"_path":149},"hardhat-zksync-verify-vyper","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-verify-vyper",{"title":151,"_path":152},"hardhat-zksync-ethers","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-ethers",{"title":154,"_path":155},"hardhat-zksync-node","/zksync-network/tooling/hardhat/plugins/hardhat-zksync-node",{"title":157,"_path":158},"Hardhat Community Plugins","/zksync-network/tooling/hardhat/plugins/other-plugins",{"title":160,"_path":161,"children":162},"Foundry","/zksync-network/tooling/foundry",[163,165,167,169],{"title":79,"_path":164},"/zksync-network/tooling/foundry/overview",{"title":110,"_path":166},"/zksync-network/tooling/foundry/installation",{"title":48,"_path":168},"/zksync-network/tooling/foundry/getting-started",{"title":170,"_path":171,"children":172},"Migration Guide","/zksync-network/tooling/foundry/migration-guide",[173,175,178,181],{"title":79,"_path":174},"/zksync-network/tooling/foundry/migration-guide/overview",{"title":176,"_path":177},"Compilation","/zksync-network/tooling/foundry/migration-guide/compilation",{"title":179,"_path":180},"Deployment","/zksync-network/tooling/foundry/migration-guide/deployment",{"title":182,"_path":183},"Testing","/zksync-network/tooling/foundry/migration-guide/testing",{"title":185,"_path":186,"children":187},"ZKsync CLI","/zksync-network/tooling/zksync-cli",[188,189,192,195,198,201,204,207,210,213],{"title":48,"_path":186},{"title":190,"_path":191},"Reading transaction data","/zksync-network/tooling/zksync-cli/reading-transaction-data",{"title":193,"_path":194},"Wallet actions","/zksync-network/tooling/zksync-cli/wallet-actions",{"title":196,"_path":197},"Bridging","/zksync-network/tooling/zksync-cli/bridging",{"title":199,"_path":200},"Interact with contracts","/zksync-network/tooling/zksync-cli/interact-with-contracts",{"title":202,"_path":203},"Creating projects","/zksync-network/tooling/zksync-cli/creating-projects",{"title":205,"_path":206},"Running a node","/zksync-network/tooling/zksync-cli/running-a-node",{"title":208,"_path":209},"Configuring chains","/zksync-network/tooling/zksync-cli/configuring-chains",{"title":211,"_path":212},"Troubleshooting","/zksync-network/tooling/zksync-cli/troubleshooting",{"title":214,"_path":215,"children":216},"CLI Reference","/zksync-network/tooling/zksync-cli/reference",[217,218,221,224,227,230,233,236],{"title":79,"_path":215},{"title":219,"_path":220},"zksync-cli bridge","/zksync-network/tooling/zksync-cli/reference/zksync-cli-bridge",{"title":222,"_path":223},"zksync-cli config chains","/zksync-network/tooling/zksync-cli/reference/zksync-cli-config-chains",{"title":225,"_path":226},"zksync-cli contract","/zksync-network/tooling/zksync-cli/reference/zksync-cli-contract",{"title":228,"_path":229},"zksync-cli create","/zksync-network/tooling/zksync-cli/reference/zksync-cli-create",{"title":231,"_path":232},"zksync-cli dev","/zksync-network/tooling/zksync-cli/reference/zksync-cli-dev",{"title":234,"_path":235},"zksync-cli transaction","/zksync-network/tooling/zksync-cli/reference/zksync-cli-transaction",{"title":237,"_path":238},"zksync-cli wallet","/zksync-network/tooling/zksync-cli/reference/zksync-cli-wallet",{"title":240,"_path":241},"Block explorers","/zksync-network/tooling/block-explorers",{"title":243,"_path":244},"ZKsync External Node","/zksync-network/tooling/external-node",{"title":246,"_path":247},"ZKsync Easy On-Ramp","/zksync-network/tooling/zksync-easy-onramp",{"title":249,"_path":250,"children":251},"ZKsync OS Developer Preview","/zksync-network/zksync-os",[252,254,257,260],{"title":253,"_path":250},"ZKsync OS Overview",{"title":255,"_path":256},"Network Details","/zksync-network/zksync-os/network-details",{"title":258,"_path":259},"Developer Quickstart","/zksync-network/zksync-os/quickstart",{"title":72,"_path":261},"/zksync-network/zksync-os/faqs",{"title":263,"_path":264,"children":265},"ZKsync Era","/zksync-network/zksync-era",[266,268,271,274,313],{"title":267,"_path":264},"About ZKsync Era",{"title":269,"_path":270},"ZKsync Era RPC","/zksync-network/zksync-era/network-details",{"title":272,"_path":273},"Features","/zksync-network/zksync-era/unique-features",{"title":275,"_path":276,"children":277},"Ecosystem","/zksync-network/zksync-era/ecosystem",[278,280,283,286,289,292,295,298,301,304,307,310],{"title":279,"_path":276},"Explore the ecosystem",{"title":281,"_path":282},"Bridges","/zksync-network/zksync-era/ecosystem/bridges",{"title":284,"_path":285},"Cross chain","/zksync-network/zksync-era/ecosystem/cross-chain",{"title":287,"_path":288},"Data indexers","/zksync-network/zksync-era/ecosystem/data-indexers",{"title":290,"_path":291},"Monitoring","/zksync-network/zksync-era/ecosystem/monitoring",{"title":293,"_path":294},"Network faucets","/zksync-network/zksync-era/ecosystem/network-faucets",{"title":296,"_path":297},"NFT marketplaces","/zksync-network/zksync-era/ecosystem/nft-marketplaces",{"title":299,"_path":300},"Oracles","/zksync-network/zksync-era/ecosystem/oracles",{"title":302,"_path":303},"RPC providers","/zksync-network/zksync-era/ecosystem/node-providers",{"title":305,"_path":306},"Wallets","/zksync-network/zksync-era/ecosystem/wallets",{"title":308,"_path":309},"User Onboarding","/zksync-network/zksync-era/ecosystem/user-onboarding",{"title":311,"_path":312},"Paymasters","/zksync-network/zksync-era/ecosystem/paymasters",{"title":314,"_path":315},"Security and best practices","/zksync-network/zksync-era/security-best-practices",{"title":317,"_path":318,"children":319},"Contributing","/zksync-network/contributing",[320,322],{"title":321,"_path":318},"Contributing to Documentation",{"title":323,"_path":324},"Protocol Contributions","/zksync-network/contributing/protocol-contributions",{"title":326,"_path":327,"children":328},"ZK Stack","/zk-stack",[329,331,334,364,386,402,437],{"title":330,"_path":327},"ZK Stack Overview",{"title":332,"_path":333},"ZKsync Chains","/zk-stack/zk-chains",{"title":335,"_path":336,"children":337},"Components","/zk-stack/components",[338,340,343,346,355,358,361],{"title":339,"_path":336},"ZK Stack Components Overview",{"title":341,"_path":342},"ZKsync OS","/zk-stack/components/zksync-os",{"title":344,"_path":345},"ZKsync OS Server","/zk-stack/components/server",{"title":347,"_path":348,"children":349},"ZKsync Airbender","/zk-stack/components/zksync-airbender",[350,352],{"title":351,"_path":348},"Airbender Overview",{"title":353,"_path":354},"Airbender Deep Dive","/zk-stack/components/zksync-airbender/deepdive",{"title":356,"_path":357},"Block explorer","/zk-stack/components/block-explorer",{"title":359,"_path":360},"Portal","/zk-stack/components/portal",{"title":362,"_path":363},"Fee withdrawer","/zk-stack/components/fee-withdrawer",{"title":365,"_path":366,"children":367},"Run a ZKsync Chain","/zk-stack/running",[368,371,374,377,380,383],{"title":369,"_path":370},"Launch a ZKsync chain","/zk-stack/running/quickstart",{"title":372,"_path":373},"Interact with your chain","/zk-stack/running/using-a-local-zk-chain",{"title":375,"_path":376},"ZKsync Gateway","/zk-stack/running/gateway-settlement-layer",{"title":378,"_path":379},"Prover setup","/zk-stack/running/proving",{"title":381,"_path":382},"Ownership Model","/zk-stack/running/ownership-model",{"title":384,"_path":385},"Rollup as a Service","/zk-stack/running/raas",{"title":387,"_path":388,"children":389},"Customizations","/zk-stack/customizations",[390,393,396,399],{"title":391,"_path":392},"Custom base tokens","/zk-stack/customizations/custom-base-tokens",{"title":394,"_path":395},"Validium in ZK Stack","/zk-stack/customizations/validium",{"title":397,"_path":398},"Configurations","/zk-stack/customizations/configurations",{"title":400,"_path":401},"Transaction filtering","/zk-stack/customizations/transaction-filtering",{"title":403,"_path":404,"children":405},"Prividium™","/zk-stack/prividium",[406,409,411,413,416,419,422,425,428,431,434],{"title":407,"_path":408},"Prividium™ Overview","/zk-stack/prividium/overview",{"title":272,"_path":410},"/zk-stack/prividium/features",{"title":51,"_path":412},"/zk-stack/prividium/architecture",{"title":414,"_path":415},"Deployment Model","/zk-stack/prividium/deployment",{"title":417,"_path":418},"Proxy RPC API","/zk-stack/prividium/proxy",{"title":420,"_path":421},"Administration and User Management","/zk-stack/prividium/administration-user-management",{"title":423,"_path":424},"Permissions and Access Control","/zk-stack/prividium/permissions-overview",{"title":426,"_path":427},"Prividium™ SDK","/zk-stack/prividium/sdk",{"title":429,"_path":430},"Private Block Explorer","/zk-stack/prividium/explorer",{"title":432,"_path":433},"Developer Considerations","/zk-stack/prividium/developer-considerations",{"title":435,"_path":436},"Prividium™ License Model","/zk-stack/prividium/license",{"title":438,"_path":439},"Open Source License","/zk-stack/license",{"title":441,"_path":442,"children":443},"ZKsync Protocol","/zksync-protocol",[444,446,463,488,501,522,541,554,758],{"title":445,"_path":442},"Getting started with ZKsync protocol",{"title":447,"_path":448,"children":449},"ZKsync protocol overview","/zksync-protocol/rollup",[450,451,454,457,460],{"title":447,"_path":448},{"title":452,"_path":453},"Bridging assets","/zksync-protocol/rollup/bridging-assets",{"title":455,"_path":456},"Finality","/zksync-protocol/rollup/finality",{"title":458,"_path":459},"Data availability","/zksync-protocol/rollup/data-availability",{"title":461,"_path":462},"Pubdata compression","/zksync-protocol/rollup/pubdata-compression",{"title":341,"_path":464,"children":465},"/zksync-protocol/zksyncos",[466,467,470,473,476,479,482,485],{"title":253,"_path":464},{"title":468,"_path":469},"Double Resource Accounting","/zksync-protocol/zksyncos/double-accounting",{"title":471,"_path":472},"Bootloader","/zksync-protocol/zksyncos/bootloader",{"title":474,"_path":475},"Execution Environments","/zksync-protocol/zksyncos/execution-environment",{"title":477,"_path":478},"System","/zksync-protocol/zksyncos/system",{"title":480,"_path":481},"Processing of Transactions","/zksync-protocol/zksyncos/tx-processing",{"title":483,"_path":484},"System Hooks","/zksync-protocol/zksyncos/system-hooks",{"title":486,"_path":487},"Runner Flow","/zksync-protocol/zksyncos/runner-flow",{"title":375,"_path":489,"children":490},"/zksync-protocol/gateway",[491,493,495,498],{"title":492,"_path":489},"Gateway Overview",{"title":272,"_path":494},"/zksync-protocol/gateway/features",{"title":496,"_path":497},"Data Availability Considerations","/zksync-protocol/gateway/da-considerations",{"title":499,"_path":500},"Frequently Asked Questions","/zksync-protocol/gateway/gateway-faq",{"title":502,"_path":503,"children":504},"Web3 API","/zksync-protocol/api",[505,507,510,513,516,519],{"title":506,"_path":503},"API Overview",{"title":508,"_path":509},"Conventions","/zksync-protocol/api/conventions",{"title":511,"_path":512},"Ethereum JSON-RPC API","/zksync-protocol/api/ethereum-rpc",{"title":514,"_path":515},"Debug JSON-RPC API","/zksync-protocol/api/debug-rpc",{"title":517,"_path":518},"ZKsync JSON-RPC API","/zksync-protocol/api/zks-rpc",{"title":520,"_path":521},"PubSub JSON-RPC API","/zksync-protocol/api/pub-sub-rpc",{"title":523,"_path":524,"children":525},"Contracts","/zksync-protocol/contracts",[526,528],{"title":527,"_path":524},"ZKsync contracts",{"title":32,"_path":529,"children":530},"/zksync-protocol/contracts/l1-contracts",[531,532,535,538],{"title":32,"_path":529},{"title":533,"_path":534},"L1 ecosystem contracts","/zksync-protocol/contracts/l1-contracts/l1-ecosystem-contracts",{"title":536,"_path":537},"Shared bridges","/zksync-protocol/contracts/l1-contracts/shared-bridges",{"title":539,"_path":540},"ZKsync Chain addresses","/zksync-protocol/contracts/l1-contracts/zk-chain-addresses",{"title":542,"_path":543,"children":544},"Protocol security","/zksync-protocol/security",[545,548,551],{"title":546,"_path":547},"Audits","/zksync-protocol/security/audits",{"title":549,"_path":550},"Bug bounty","/zksync-protocol/security/bug-bounty",{"title":552,"_path":553},"Withdrawal delay","/zksync-protocol/security/withdrawal-delay",{"title":555,"_path":556,"children":557},"EraVM Chains","/zksync-protocol/era-vm",[558,560,587,596,613,678,690,712,739],{"title":559,"_path":556},"EraVM Overview",{"title":561,"_path":562,"children":563},"Transactions","/zksync-protocol/era-vm/transactions",[564,567,570,573],{"title":565,"_path":566},"Transaction lifecycle","/zksync-protocol/era-vm/transactions/transaction-lifecycle",{"title":568,"_path":569},"Blocks and batches","/zksync-protocol/era-vm/transactions/blocks",{"title":571,"_path":572},"L1 \u003C-> L2 communication","/zksync-protocol/era-vm/transactions/l1_l2_communication",{"title":574,"_path":575,"children":576},"Fee model","/zksync-protocol/era-vm/transactions/fee-model",[577,578,581,584],{"title":574,"_path":575},{"title":579,"_path":580},"How L2 gas price works","/zksync-protocol/era-vm/transactions/fee-model/how-l2-gas-price-works",{"title":582,"_path":583},"How ZKsync Chains charges for pubdata","/zksync-protocol/era-vm/transactions/fee-model/how-we-charge-for-pubdata",{"title":585,"_path":586},"ZKsync fee structure","/zksync-protocol/era-vm/transactions/fee-model/fee-structure",{"title":588,"_path":589,"children":590},"EraVM","/zksync-protocol/era-vm/vm",[591,593],{"title":592,"_path":589},"ZKsync Virtual Machine primer",{"title":594,"_path":595},"VM formal specification","/zksync-protocol/era-vm/vm/formal-spec",{"title":523,"_path":597,"children":598},"/zksync-protocol/era-vm/contracts",[599,600,602,604,607,610],{"title":527,"_path":597},{"title":471,"_path":601},"/zksync-protocol/era-vm/contracts/bootloader",{"title":35,"_path":603},"/zksync-protocol/era-vm/contracts/system-contracts",{"title":605,"_path":606},"Handling L1->L2 ops on ZKsync","/zksync-protocol/era-vm/contracts/handling-l1-l2-ops",{"title":608,"_path":609},"Handling pubdata","/zksync-protocol/era-vm/contracts/handling-pubdata",{"title":611,"_path":612},"Pubdata post 4844","/zksync-protocol/era-vm/contracts/pubdata-post-4844",{"title":614,"_path":615,"children":616},"Circuits","/zksync-protocol/era-vm/circuits",[617,618,621,672,675],{"title":79,"_path":615},{"title":619,"_path":620},"ZK terminology","/zksync-protocol/era-vm/circuits/zk-terminology",{"title":622,"_path":623,"children":624},"Concrete circuits","/zksync-protocol/era-vm/circuits/circuits",[625,626,629,632,635,638,641,644,647,650,653,656,659],{"title":79,"_path":623},{"title":627,"_path":628},"Circuit testing","/zksync-protocol/era-vm/circuits/circuits/circuit-testing",{"title":630,"_path":631},"CodeDecommitter","/zksync-protocol/era-vm/circuits/circuits/code-decommitter",{"title":633,"_path":634},"DemuxLogQueue","/zksync-protocol/era-vm/circuits/circuits/demux-log-queue",{"title":636,"_path":637},"ECRecover","/zksync-protocol/era-vm/circuits/circuits/ecrecover",{"title":639,"_path":640},"KeccakRoundFunction","/zksync-protocol/era-vm/circuits/circuits/keccak-round-function",{"title":642,"_path":643},"L1MessagesHasher","/zksync-protocol/era-vm/circuits/circuits/l1-messages-hasher",{"title":645,"_path":646},"LogSorter","/zksync-protocol/era-vm/circuits/circuits/log-sorter",{"title":648,"_path":649},"Main VM","/zksync-protocol/era-vm/circuits/circuits/main-vm",{"title":651,"_path":652},"RAMPermutation","/zksync-protocol/era-vm/circuits/circuits/ram-permutation",{"title":654,"_path":655},"Sha256RoundFunction","/zksync-protocol/era-vm/circuits/circuits/sha256-round-function",{"title":657,"_path":658},"StorageApplication","/zksync-protocol/era-vm/circuits/circuits/storage-application",{"title":660,"_path":661,"children":662},"Sorting and deduplicating","/zksync-protocol/era-vm/circuits/circuits/sorting",[663,664,667,670],{"title":79,"_path":661},{"title":665,"_path":666},"SortDecommitments","/zksync-protocol/era-vm/circuits/circuits/sorting/sort-decommitments",{"title":668,"_path":669},"StorageSorter","/zksync-protocol/era-vm/circuits/circuits/sorting/storage-sorter",{"title":645,"_path":671},"/zksync-protocol/era-vm/circuits/circuits/sorting/log-sorter",{"title":673,"_path":674},"Boojum gadgets","/zksync-protocol/era-vm/circuits/boojum-gadgets",{"title":676,"_path":677},"Boojum function - `check_if_satisfied`","/zksync-protocol/era-vm/circuits/boojum-function-check-if-satisfied",{"title":679,"_path":680,"children":681},"Compilers","/zksync-protocol/era-vm/compiler",[682],{"title":683,"_path":684,"children":685},"Compiler toolchain overview","/zksync-protocol/era-vm/compiler/toolchain",[686,687],{"title":683,"_path":684},{"title":688,"_path":689},"LLVM framework","/zksync-protocol/era-vm/compiler/toolchain/llvm",{"title":691,"_path":692,"children":693},"Differences from L1","/zksync-protocol/era-vm/differences",[694,697,700,703,706,709],{"title":695,"_path":696},"EVM instructions","/zksync-protocol/era-vm/differences/evm-instructions",{"title":698,"_path":699},"Nonces","/zksync-protocol/era-vm/differences/nonces",{"title":701,"_path":702},"Libraries","/zksync-protocol/era-vm/differences/libraries",{"title":704,"_path":705},"Precompiles","/zksync-protocol/era-vm/differences/pre-compiles",{"title":707,"_path":708},"Native AA vs EIP 4337","/zksync-protocol/era-vm/differences/native-vs-eip4337",{"title":710,"_path":711},"Contract deployment","/zksync-protocol/era-vm/differences/contract-deployment",{"title":713,"_path":714,"children":715},"EVM Bytecode Interpreter","/zksync-protocol/era-vm/evm-interpreter",[716,718,721,724,727,730,733,736],{"title":79,"_path":717},"/zksync-protocol/era-vm/evm-interpreter/overview",{"title":719,"_path":720},"EVM bytecode deployment and execution","/zksync-protocol/era-vm/evm-interpreter/deployment-execution",{"title":722,"_path":723},"EraVM ↔ EVM Contract Interactions","/zksync-protocol/era-vm/evm-interpreter/era-evm-interactions",{"title":725,"_path":726},"Differences Between the EVM Bytecode Interpreter and Ethereum","/zksync-protocol/era-vm/evm-interpreter/evm-differences",{"title":728,"_path":729},"Technical Architecture of the EVM Interpreter","/zksync-protocol/era-vm/evm-interpreter/technical-details",{"title":731,"_path":732},"EVM Gas Interpretation","/zksync-protocol/era-vm/evm-interpreter/evm-gas-interpretation",{"title":734,"_path":735},"Pre Deployed Contracts","/zksync-protocol/era-vm/evm-interpreter/pre-deployed-contracts",{"title":737,"_path":738},"EVM Bytecode Interpreter FAQ","/zksync-protocol/era-vm/evm-interpreter/faq",{"title":740,"_path":741,"children":742},"Account Abstraction","/zksync-protocol/era-vm/account-abstraction",[743,744,747,749,752,755],{"title":9,"_path":741},{"title":745,"_path":746},"Design","/zksync-protocol/era-vm/account-abstraction/design",{"title":311,"_path":748},"/zksync-protocol/era-vm/account-abstraction/paymasters",{"title":750,"_path":751},"Building smart accounts","/zksync-protocol/era-vm/account-abstraction/building-smart-accounts",{"title":753,"_path":754},"Signature validation","/zksync-protocol/era-vm/account-abstraction/signature-validation",{"title":756,"_path":757},"Extending EIP-4337","/zksync-protocol/era-vm/account-abstraction/extending-4337",{"title":759,"_path":760},"Upgrades and migrations","/zksync-protocol/upgrades-and-migrations",{"_path":324,"_dir":762,"_draft":763,"_partial":763,"_locale":764,"title":323,"description":765,"body":766,"_type":1008,"_id":1009,"_source":1010,"_file":1011,"_stem":1012,"_extension":1013,"sitemap":1014},"contributing",false,"",null,{"type":767,"children":768,"toc":996},"root",[769,777,784,789,795,846,852,870,876,909,915,947,953,971,976,982],{"type":770,"tag":771,"props":772,"children":773},"element","p",{},[774],{"type":775,"value":776},"text","ZKsync is an open-source project. We champion community-driven development, which means you,\nfrom any corner of the world, can contribute to shaping ZKsync's future.",{"type":770,"tag":778,"props":779,"children":781},"h2",{"id":780},"open-source-repositories",[782],{"type":775,"value":783},"Open-source repositories",{"type":770,"tag":771,"props":785,"children":786},{},[787],{"type":775,"value":788},"Here's a list of our key open-source repositories that you can contribute to:",{"type":770,"tag":790,"props":791,"children":793},"h3",{"id":792},"zksync-os",[794],{"type":775,"value":341},{"type":770,"tag":796,"props":797,"children":798},"ul",{},[799,817,831],{"type":770,"tag":800,"props":801,"children":802},"li",{},[803,815],{"type":770,"tag":804,"props":805,"children":809},"a",{"href":806,"rel":807},"https://github.com/matter-labs/zksync-os",[808],"nofollow",[810],{"type":770,"tag":811,"props":812,"children":813},"strong",{},[814],{"type":775,"value":341},{"type":775,"value":816},": Generalized RISC-V based state transition function for the ZKsync protocol.",{"type":770,"tag":800,"props":818,"children":819},{},[820,829],{"type":770,"tag":804,"props":821,"children":824},{"href":822,"rel":823},"https://github.com/matter-labs/zksync-os-server",[808],[825],{"type":770,"tag":811,"props":826,"children":827},{},[828],{"type":775,"value":344},{"type":775,"value":830},": Server implementation for ZKsync OS.",{"type":770,"tag":800,"props":832,"children":833},{},[834,844],{"type":770,"tag":804,"props":835,"children":838},{"href":836,"rel":837},"https://github.com/matter-labs/zksync-os-scripts",[808],[839],{"type":770,"tag":811,"props":840,"children":841},{},[842],{"type":775,"value":843},"ZKsync OS Scripts",{"type":775,"value":845},": Scripts for ZKsync OS protocol upgrades.",{"type":770,"tag":790,"props":847,"children":849},{"id":848},"smart-contracts",[850],{"type":775,"value":851},"Smart Contracts",{"type":770,"tag":796,"props":853,"children":854},{},[855],{"type":770,"tag":800,"props":856,"children":857},{},[858,868],{"type":770,"tag":804,"props":859,"children":862},{"href":860,"rel":861},"https://github.com/matter-labs/era-contracts",[808],[863],{"type":770,"tag":811,"props":864,"children":865},{},[866],{"type":775,"value":867},"era-contracts",{"type":775,"value":869},": Submodule containing the smart contracts for ZKsync.",{"type":770,"tag":790,"props":871,"children":873},{"id":872},"prover-protocol",[874],{"type":775,"value":875},"Prover & Protocol",{"type":770,"tag":796,"props":877,"children":878},{},[879,894],{"type":770,"tag":800,"props":880,"children":881},{},[882,892],{"type":770,"tag":804,"props":883,"children":886},{"href":884,"rel":885},"https://github.com/matter-labs/zksync-airbender",[808],[887],{"type":770,"tag":811,"props":888,"children":889},{},[890],{"type":775,"value":891},"Airbender",{"type":775,"value":893},": RISC-V prover system for ZKsync OS.",{"type":770,"tag":800,"props":895,"children":896},{},[897,907],{"type":770,"tag":804,"props":898,"children":901},{"href":899,"rel":900},"https://github.com/matter-labs/zksync-protocol",[808],[902],{"type":770,"tag":811,"props":903,"children":904},{},[905],{"type":775,"value":906},"zksync-protocol",{"type":775,"value":908},": Houses the ZKsync Era protocol implementation, including VM and circuits.",{"type":770,"tag":790,"props":910,"children":912},{"id":911},"development-tools",[913],{"type":775,"value":914},"Development tools",{"type":770,"tag":796,"props":916,"children":917},{},[918,933],{"type":770,"tag":800,"props":919,"children":920},{},[921,931],{"type":770,"tag":804,"props":922,"children":925},{"href":923,"rel":924},"https://github.com/matter-labs/airbender-platform",[808],[926],{"type":770,"tag":811,"props":927,"children":928},{},[929],{"type":775,"value":930},"Airbender Platform",{"type":775,"value":932},": Rust toolkit for writing RISC-V zk-provable programs.",{"type":770,"tag":800,"props":934,"children":935},{},[936,945],{"type":770,"tag":804,"props":937,"children":940},{"href":938,"rel":939},"https://github.com/matter-labs/anvil-zksync",[808],[941],{"type":770,"tag":811,"props":942,"children":943},{},[944],{"type":775,"value":96},{"type":775,"value":946},": An in-memory node designed for integration testing and debugging.",{"type":770,"tag":790,"props":948,"children":950},{"id":949},"explorer",[951],{"type":775,"value":952},"Explorer",{"type":770,"tag":796,"props":954,"children":955},{},[956],{"type":770,"tag":800,"props":957,"children":958},{},[959,969],{"type":770,"tag":804,"props":960,"children":963},{"href":961,"rel":962},"https://github.com/matter-labs/block-explorer",[808],[964],{"type":770,"tag":811,"props":965,"children":966},{},[967],{"type":775,"value":968},"block-explorer",{"type":775,"value":970},": The official block explorer for navigating the ZKsync network.",{"type":770,"tag":771,"props":972,"children":973},{},[974],{"type":775,"value":975},"Feel free to explore these repositories, and don't hesitate to contribute!",{"type":770,"tag":778,"props":977,"children":979},{"id":978},"participate-in-zksync-developer-discussions",[980],{"type":775,"value":981},"Participate in ZKsync Developer discussions",{"type":770,"tag":771,"props":983,"children":984},{},[985,987,994],{"type":775,"value":986},"Join the discourse on ",{"type":770,"tag":804,"props":988,"children":991},{"href":989,"rel":990},"https://github.com/ZKsync-Community-Hub/zkync-developers/discussions",[808],[992],{"type":775,"value":993},"GitHub discussions",{"type":775,"value":995},"\nor other community forums to provide answers, ask questions, or share insights.",{"title":764,"searchDepth":997,"depth":997,"links":998},2,[999,1007],{"id":780,"depth":997,"text":783,"children":1000},[1001,1003,1004,1005,1006],{"id":792,"depth":1002,"text":341},3,{"id":848,"depth":1002,"text":851},{"id":872,"depth":1002,"text":875},{"id":911,"depth":1002,"text":914},{"id":949,"depth":1002,"text":952},{"id":978,"depth":997,"text":981},"markdown","content:00.zksync-network:70.contributing:20.protocol-contributions.md","content","00.zksync-network/70.contributing/20.protocol-contributions.md","00.zksync-network/70.contributing/20.protocol-contributions","md",{"loc":324},[1016,1018],{"_path":318,"title":321,"description":1017},"Learn how to propose, write, and validate documentation changes for ZKsync Docs.",{"_path":327,"title":330,"description":1019},"This section provides an overview of the ZK Stack as a key tool to launch and operate ZKsync chains",1775831105908]