{"version":1,"pages":[{"id":"omPfdH6CIiUonq5smfIK","title":"Welcome to AppLayer Docs","pathname":"/testnet","siteSpaceId":"sitesp_cmmiX","description":"A modular EVM layer for cross-chain applications"},{"id":"EUnR4zpOUwaFI9ehZ2ac","title":"Introducing AppLayer","pathname":"/testnet/introducing-applayer","siteSpaceId":"sitesp_cmmiX","description":"A quick introduction to what AppLayer does"},{"id":"OcCVfYHkAiBbfqrtl6WX","title":"A Primer on Smart Contracts","pathname":"/testnet/introducing-applayer/a-primer-on-smart-contracts","siteSpaceId":"sitesp_cmmiX","description":"The building blocks of decentralized finance","breadcrumbs":[{"label":"Introducing AppLayer"}]},{"id":"u6Xyg5c5Yca1LhRAhWsw","title":"The Problem With EVMs","pathname":"/testnet/introducing-applayer/the-problem-with-evms","siteSpaceId":"sitesp_cmmiX","description":"The hydra we're trying to slay","breadcrumbs":[{"label":"Introducing AppLayer"}]},{"id":"AJMNqxmgd6Ve0hhzoGYf","title":"What is AppLayer?","pathname":"/testnet/introducing-applayer/what-is-applayer","siteSpaceId":"sitesp_cmmiX","description":"The light at the end of the tunnel","breadcrumbs":[{"label":"Introducing AppLayer"}]},{"id":"5g8oWum07g4OWAyoEDgu","title":"How AppLayer works","pathname":"/testnet/how-applayer-works","siteSpaceId":"sitesp_cmmiX","description":"Exploring the functional elements of AppLayer."},{"id":"E4rwfgn0leYRUkE60Pzs","title":"Validators","pathname":"/testnet/how-applayer-works/validators","siteSpaceId":"sitesp_cmmiX","description":"How validators work on AppLayer","breadcrumbs":[{"label":"How AppLayer works"}]},{"id":"wVEB57Ah6RyLfRiDJKKb","title":"Sentinels","pathname":"/testnet/how-applayer-works/sentinels","siteSpaceId":"sitesp_cmmiX","description":"How Sentinels work on AppLayer.","breadcrumbs":[{"label":"How AppLayer works"}]},{"id":"kthgutVAeu7wiVBc7X9t","title":"Application Chains","pathname":"/testnet/how-applayer-works/appchains","siteSpaceId":"sitesp_cmmiX","description":"How Application Chains work on AppLayer.","breadcrumbs":[{"label":"How AppLayer works"}]},{"id":"f1neuKk5upeCqCfF813n","title":"Bridging","pathname":"/testnet/how-applayer-works/bridging","siteSpaceId":"sitesp_cmmiX","description":"How bridging works on AppLayer.","breadcrumbs":[{"label":"How AppLayer works"}]},{"id":"5wGIYAyHulxJpTlUVuKw","title":"AppLayer-to-AppLayer Data Bridging","pathname":"/testnet/how-applayer-works/bridging/applayer-to-applayer-data-bridging","siteSpaceId":"sitesp_cmmiX","description":"How native chains exchange data on AppLayer.","breadcrumbs":[{"label":"How AppLayer works"},{"label":"Bridging"}]},{"id":"32fQSCVZYEs2kUV5J6m0","title":"AppLayer-to-AppLayer Token Bridging","pathname":"/testnet/how-applayer-works/bridging/applayer-to-applayer-token-bridging","siteSpaceId":"sitesp_cmmiX","description":"How native chains exchange tokens on AppLayer.","breadcrumbs":[{"label":"How AppLayer works"},{"label":"Bridging"}]},{"id":"VrIY9YC2DTA1h1zxyjIw","title":"AppLayer-to-External Bridging (Ethereum, Solana, etc.)","pathname":"/testnet/how-applayer-works/bridging/applayer-to-external-bridging","siteSpaceId":"sitesp_cmmiX","description":"How AppLayer bridges with other blockchains.","breadcrumbs":[{"label":"How AppLayer works"},{"label":"Bridging"}]},{"id":"MNn7nGaDi8etCWerSfZ1","title":"Understanding rdPoS","pathname":"/testnet/understanding-rdpos","siteSpaceId":"sitesp_cmmiX","description":"How AppLayer uses Random Deterministic Proof of Stake."},{"id":"U5G1a6hH59Kq91nljcNl","title":"Blockchains overview","pathname":"/testnet/understanding-rdpos/blockchains-overview","siteSpaceId":"sitesp_cmmiX","description":"How existing blockchains handle rollbacks.","breadcrumbs":[{"label":"Understanding rdPoS"}]},{"id":"pO7Wat8QslhqTrlnnHrP","title":"How rdPoS works","pathname":"/testnet/understanding-rdpos/how-rdpos-works","siteSpaceId":"sitesp_cmmiX","description":"The logical flux of the rdPoS algorithm.","breadcrumbs":[{"label":"Understanding rdPoS"}]},{"id":"fIapxzSkrCooZeblwj9h","title":"Validator implementations","pathname":"/testnet/understanding-rdpos/validator-implementations","siteSpaceId":"sitesp_cmmiX","description":"How to add Validators to the network.","breadcrumbs":[{"label":"Understanding rdPoS"}]},{"id":"QFdgMesyibX2839L1ALE","title":"Slashing","pathname":"/testnet/understanding-rdpos/slashing","siteSpaceId":"sitesp_cmmiX","description":"Cutting out malicious nodes, carefully.","breadcrumbs":[{"label":"Understanding rdPoS"}]},{"id":"9xLIrXqiIQ42PPgmymgK","title":"BDK implementation","pathname":"/testnet/bdk-implementation","siteSpaceId":"sitesp_cmmiX","description":"How the functional elements of AppLayer interact with each other."},{"id":"pJckxhl6OTceRVXvT1Uf","title":"The utils folder","pathname":"/testnet/bdk-implementation/the-utils-folder","siteSpaceId":"sitesp_cmmiX","description":"The building blocks of Blockchain Development Kit's (BDK) structure.","breadcrumbs":[{"label":"BDK implementation"}]},{"id":"PLTi89n0bZwJmG07xcWm","title":"The contract folder","pathname":"/testnet/bdk-implementation/the-contract-folder","siteSpaceId":"sitesp_cmmiX","description":"The base for smart contract support in Blockchain Development Kit (BDK).","breadcrumbs":[{"label":"BDK implementation"}]},{"id":"mFN5QUdVpTqM3eBZOCkr","title":"The core folder","pathname":"/testnet/bdk-implementation/the-core-folder","siteSpaceId":"sitesp_cmmiX","description":"The heart of the Blockchain Development Kit (BDK).","breadcrumbs":[{"label":"BDK implementation"}]},{"id":"aIeZOUhgxGYdrvtFQGOl","title":"Transactions and Blocks","pathname":"/testnet/bdk-implementation/transactions-and-blocks","siteSpaceId":"sitesp_cmmiX","description":"How transactions and blocks work in Blockchain Development Kit (BDK).","breadcrumbs":[{"label":"BDK implementation"}]},{"id":"FnE22UAIyI1r52uXF1yv","title":"Database","pathname":"/testnet/bdk-implementation/database","siteSpaceId":"sitesp_cmmiX","description":"How Blockchain Development Kit's (BDK) internal database is structured and how data is stored in it.","breadcrumbs":[{"label":"BDK implementation"}]},{"id":"rkWvB4I9sJB4kpRQltYh","title":"Contract call handling","pathname":"/testnet/bdk-implementation/contract-call-handling","siteSpaceId":"sitesp_cmmiX","description":"How Applayer's BDK handles chains of contract execution.","breadcrumbs":[{"label":"BDK implementation"}]},{"id":"gWtkn33UenYzIXdtWa1X","title":"RLP (Recursive-Length Prefix)","pathname":"/testnet/bdk-implementation/rlp-recursive-length-prefix","siteSpaceId":"sitesp_cmmiX","description":"How the Blockchain Development Kit (BDK) uses RLP to encode and decode transactions.","breadcrumbs":[{"label":"BDK implementation"}]},{"id":"HGylzUb1AASjkJ0sI2q0","title":"P2P Overview","pathname":"/testnet/bdk-implementation/p2p-overview","siteSpaceId":"sitesp_cmmiX","description":"A primer on how P2P messaging works in the Blockchain Development Kit (BDK).","breadcrumbs":[{"label":"BDK implementation"}]},{"id":"BRDFT0tG3t0KXSs6mB8U","title":"P2P Encoding","pathname":"/testnet/bdk-implementation/p2p-encoding","siteSpaceId":"sitesp_cmmiX","description":"How P2P messages are structured in the Blockchain Development Kit (BDK).","breadcrumbs":[{"label":"BDK implementation"}]},{"id":"1xmgt0Y2HokslnHUwvvl","title":"Understanding contracts","pathname":"/testnet/understanding-contracts","siteSpaceId":"sitesp_cmmiX","description":"How smart contracts work in the AppLayer protocol."},{"id":"Rwtaw9PEJkDitE3v4wuW","title":"Solidity ABI","pathname":"/testnet/understanding-contracts/solidity-abi","siteSpaceId":"sitesp_cmmiX","description":"Explanations and correlations of Solidity's ABI compared to AppLayer's pre-compiled approach.","breadcrumbs":[{"label":"Understanding contracts"}]},{"id":"GKqkNx41Gapz4bn80iqn","title":"Internal and external contract calls","pathname":"/testnet/understanding-contracts/internal-and-external-contract-calls","siteSpaceId":"sitesp_cmmiX","description":"Not all contract calls are equal.","breadcrumbs":[{"label":"Understanding contracts"}]},{"id":"bIDl5qbM3PBR7TxoYPBJ","title":"Setting up the development environment","pathname":"/testnet/understanding-contracts/setting-up-the-development-environment","siteSpaceId":"sitesp_cmmiX","description":"How to prep up for compiling AppLayer's BDK and running your own blockchain.","breadcrumbs":[{"label":"Understanding contracts"}]},{"id":"ylBsmTXAI3YVW5jM9PaH","title":"Contract Tester","pathname":"/testnet/understanding-contracts/contract-tester","siteSpaceId":"sitesp_cmmiX","description":"A web application for testing your contracts.","breadcrumbs":[{"label":"Understanding contracts"}]},{"id":"oyAoRTtzeW0vZ5lpMHvw","title":"Precompiled contracts","pathname":"/testnet/precompiled-contracts","siteSpaceId":"sitesp_cmmiX","description":"A primer on natively-coded smart contracts in the AppLayer ecosystem."},{"id":"XMHZhsrL11LQKehDZACU","title":"Types of pre-compiled contracts","pathname":"/testnet/precompiled-contracts/types-of-precompiled-contracts","siteSpaceId":"sitesp_cmmiX","description":"How AppLayer differentiates precompiled contracts.","breadcrumbs":[{"label":"Precompiled contracts"}]},{"id":"2d86fjZfeR7Yo4OhEagL","title":"Dynamic and Protocol Contracts","pathname":"/testnet/precompiled-contracts/dynamic-and-protocol-contracts","siteSpaceId":"sitesp_cmmiX","description":"Which kinds of pre-compiled contracts can be coded and managed with the BDK.","breadcrumbs":[{"label":"Precompiled contracts"}]},{"id":"CnQkUBs8r4m99gq1Y62P","title":"SafeVariables and commit/revert logic","pathname":"/testnet/precompiled-contracts/safevariables-and-commit-revert-logic","siteSpaceId":"sitesp_cmmiX","description":"How we simulate Solidity commit/revert logic in precompiled contracts.","breadcrumbs":[{"label":"Precompiled contracts"}]},{"id":"OFAr5C11MesnYBFC8WbR","title":"How to code a precompiled contract","pathname":"/testnet/precompiled-contracts/how-to-code-a-precompiled-contract","siteSpaceId":"sitesp_cmmiX","description":"A primer on how precompiled contracts should be coded in AppLayer's BDK.","breadcrumbs":[{"label":"Precompiled contracts"}]},{"id":"BWcuqoLmeB5ZulZf8j1o","title":"Creating a Dynamic Contract (Simple)","pathname":"/testnet/precompiled-contracts/creating-a-dynamic-contract-simple","siteSpaceId":"sitesp_cmmiX","description":"A walkthrough on the basics of a Dynamic Contract's structure.","breadcrumbs":[{"label":"Precompiled contracts"}]},{"id":"Ggs1KtM76LrdZXShXsvs","title":"Simple Contract Header","pathname":"/testnet/precompiled-contracts/creating-a-dynamic-contract-simple/simple-contract-header","siteSpaceId":"sitesp_cmmiX","description":"Coding the Simple Contract's header file","breadcrumbs":[{"label":"Precompiled contracts"},{"label":"Creating a Dynamic Contract (Simple)"}]},{"id":"8Jx09BVraqcfGAZZbfgI","title":"Simple Contract Source","pathname":"/testnet/precompiled-contracts/creating-a-dynamic-contract-simple/simple-contract-source","siteSpaceId":"sitesp_cmmiX","description":"Coding the Simple Contract's source file","breadcrumbs":[{"label":"Precompiled contracts"},{"label":"Creating a Dynamic Contract (Simple)"}]},{"id":"ToFMk7PlayA0DwPGOZxZ","title":"Deploying and testing","pathname":"/testnet/precompiled-contracts/creating-a-dynamic-contract-simple/deploying-and-testing","siteSpaceId":"sitesp_cmmiX","description":"How to deploy a contract and write tests for it.","breadcrumbs":[{"label":"Precompiled contracts"},{"label":"Creating a Dynamic Contract (Simple)"}]},{"id":"WKoS1w0JfPblu5gDLEou","title":"Creating a Dynamic Contract (Advanced)","pathname":"/testnet/precompiled-contracts/creating-a-dynamic-contract-advanced","siteSpaceId":"sitesp_cmmiX","description":"A walkthrough on a more advanced Dynamic Contract usage.","breadcrumbs":[{"label":"Precompiled contracts"}]},{"id":"wC8TfHJ7lqjvrWjCqyTF","title":"Creating a Protocol Contract (Advanced)","pathname":"/testnet/precompiled-contracts/creating-a-protocol-contract-advanced","siteSpaceId":"sitesp_cmmiX","description":"A primer on what to expect when creating Protocol Contracts.","breadcrumbs":[{"label":"Precompiled contracts"}]},{"id":"yYvAUnrKQVCKUmt7Jm2K","title":"EVM contracts","pathname":"/testnet/evm-contracts","siteSpaceId":"sitesp_cmmiX","description":"A primer on EVM smart contracts in the AppLayer ecosystem."},{"id":"tqvtM4MiIdRH2WV6lCNn","title":"State management and VM instance creation","pathname":"/testnet/evm-contracts/state-management-and-vm-instance-creation","siteSpaceId":"sitesp_cmmiX","description":"How the AppLayer ecosystem manages the blockchain state alongside an EVM.","breadcrumbs":[{"label":"EVM contracts"}]},{"id":"cst9XvpGPZOwOZp0cs2W","title":"Seamless C++/EVM integration","pathname":"/testnet/evm-contracts/seamless-cpp-evm-integration","siteSpaceId":"sitesp_cmmiX","description":"How AppLayer achieves a seamless integration between C++ and EVM contracts.","breadcrumbs":[{"label":"EVM contracts"}]},{"id":"Ahr9x2PskOpD9ubE0wUZ","title":"C++ to other contract calls","pathname":"/testnet/evm-contracts/cpp-to-other-contract-calls","siteSpaceId":"sitesp_cmmiX","description":"How contract calls happen from the C++ side in AppLayer.","breadcrumbs":[{"label":"EVM contracts"}]},{"id":"XPc5jCuAxJCcrHD1zBmJ","title":"EVM to other contract calls","pathname":"/testnet/evm-contracts/evm-to-other-contract-calls","siteSpaceId":"sitesp_cmmiX","description":"How contract calls happen from the EVM side in AppLayer.","breadcrumbs":[{"label":"EVM contracts"}]},{"id":"R0gvTqclBc83jwN4NkmT","title":"Executing contract calls via EVMC","pathname":"/testnet/evm-contracts/executing-contract-calls-via-evmc","siteSpaceId":"sitesp_cmmiX","description":"How to use AppLayer's EVM directly to call contracts.","breadcrumbs":[{"label":"EVM contracts"}]},{"id":"2uZbUgooI25HsvYbtlO2","title":"Calling EVM contracts from C++","pathname":"/testnet/evm-contracts/calling-evm-contracts-from-cpp","siteSpaceId":"sitesp_cmmiX","description":"How an EVM contract calls a C++ contract in AppLayer.","breadcrumbs":[{"label":"EVM contracts"}]},{"id":"AVKTyeJ44WZqAN7N4FHM","title":"Calling C++ contracts from EVM","pathname":"/testnet/evm-contracts/calling-cpp-contracts-from-evm","siteSpaceId":"sitesp_cmmiX","description":"How a C++ contract calls an EVM contract in AppLayer.","breadcrumbs":[{"label":"EVM contracts"}]},{"id":"zwG3ULPOY35UUWUl0EzD","title":"Getting started with AppLayer Testnet","pathname":"/testnet/getting-started-with-applayer-testnet","siteSpaceId":"sitesp_cmmiX","description":"A hands-on guide for interacting with the AppLayer Testnet"},{"id":"PDPVVqduZhVJZBC8RY4z","title":"Join our Community","pathname":"/testnet/join-our-community","siteSpaceId":"sitesp_cmmiX","description":"Where to follow AppLayer on social media."},{"id":"y7wTj0SlEm4dhQRXwdHM","title":"Get in Touch","pathname":"/testnet/get-in-touch","siteSpaceId":"sitesp_cmmiX","description":"Start building on AppLayer today"},{"id":"wf6dNhUz2UtLxiWIY4ts","title":"Glossary","pathname":"/testnet/glossary","siteSpaceId":"sitesp_cmmiX","description":"Definitions of some technical terms used throughout the documentation."}]}