# EVM-XCM Jungle Toolkit

## EVM-XCM Jungle Toolkit

- [Introduction](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/introduction.md)
- [What is the EVM-XCM Jungle Toolkit?](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/introduction/what-is-the-evm-xcm-jungle-toolkit.md): The EVM-XCM Jungle Toolkit is a collection of several tools, guides, libraries & code snippets allowing developers to create more easily modern cross-chain Polkadot-based dApps leveraging EVM.
- [Why use this toolkit?](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/introduction/why-use-this-toolkit.md): The Jungle Toolkit allows developers to easily connect tools that have never been connected before, pushing the boundaries of what cross-chain dApps on Polkadot are really capable of.
- [Who is this toolkit made for?](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/introduction/who-is-this-toolkit-made-for.md): This toolkit has been created while keeping in mind the importance of simplicity. An intermediate understanding of blockchain development is still required to fully master this material.
- [What tools are this toolkit made of?](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/introduction/what-tools-are-this-toolkit-made-of.md): The Jungle Toolkit is created using a large number of amazing tools and technologies. Our goal is to connect libraries, SDK & blockchains, both from the EVM & DOT worlds.
- [Build an EVM+Substrate wallet compatible architecture in your dApp](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp.md): In this section of the toolkit, we'll start with the basics. We'll explore EVM & Substrate wallets specificities by highlighting great wallets made in the ecosystem.
- [Two different standards](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/two-different-standards.md): The Ethereum Virtual Machine (EVM) and Substrate are two different blockchain development frameworks, having their own standards for addresses.
- [Addresses Format](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/two-different-standards/addresses-format.md): EVM chains and Substrate chains are using different addresses formats standards. In this section you'll learn how to recognize them.
- [Public Key vs Hash-based](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/two-different-standards/public-key-vs-hash-based.md): While EVM addresses are only derivated from the public key, Substrate addresses are hash-based.
- [Multichain compatibility](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/two-different-standards/multichain-compatibility.md): While EVM addresses are the same on every chain, Substrate addresses vary depending on the parachain.
- [Account Types](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/two-different-standards/account-types.md): While EVM have only 2 types of accounts, there are a variety of possibilities of possibilities on Substrate.
- [Recommended wallets](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/recommended-wallets.md): As we've seen, it's hard not to install a new wallet when you want to create a cross-chain dApp on Polkadot. Perhaps this will soon become a reality, thanks to MetaMask's Snap.
- [MetaMask](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/recommended-wallets/metamask.md): MetaMask is a popular cryptocurrency wallet and browser extension that enables users to interact with dApps on EVM-based chains.
- [SubWallet](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/recommended-wallets/subwallet.md): SubWallet is a popular and comprehensive Polkadot, Substrate & Ethereum wallet available both on Mobile and Browser
- [Talisman](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/recommended-wallets/talisman.md): Talisman is a stylish multi-chain wallet for web3 that handles natively both EVM and Substrate accounts.
- [The EVM address standard](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-evm-address-standard.md)
- [Get an address for a Signer](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-evm-address-standard/get-an-address-for-a-signer.md): In this section we'll explain how to get a public EVM address from a wallet using different methods
- [Check the validity of the address](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-evm-address-standard/get-an-address-for-a-signer/check-the-validity-of-the-address.md): In this section we'll check the validity of an EVM address using ethers
- [Get the native balance of a Signer](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-evm-address-standard/get-the-native-balance-of-a-signer.md): In this section we'll learn how to get the native balance for a Signer using ethers
- [Get an ERC20 token's balance](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-evm-address-standard/get-the-native-balance-of-a-signer/get-an-erc20-tokens-balance.md): In this section we'll learn how to get the ERC20 balance for an account using ethers.
- [Get the chain information for a Signer](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-evm-address-standard/get-the-chain-information-for-a-signer.md): Learn how to use ethers to query some basic EVM-network information
- [The Substrate address standard](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-substrate-address-standard.md)
- [Get an address for a Signer](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-substrate-address-standard/get-an-address-for-a-signer.md): In this section we'll explain how to get a Substrate address from a wallet connected using Talisman
- [Check the validity of the address](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-substrate-address-standard/get-an-address-for-a-signer/check-the-validity-of-the-address.md): In this section we'll check the validity of an EVM address using polkadot.js API dependencies
- [Get the native balance of a Signer](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-substrate-address-standard/get-the-native-balance-of-a-signer.md): In this section we'll learn how to get the native balance for a Signer using polkadot.js API
- [Get the chain information for a Signer](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/the-substrate-address-standard/get-the-chain-information-for-a-signer.md): In this section we'll learn how to get the some basic network information using polkadot.js API
- [Mapping of addresses](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/mapping-of-addresses.md): In this section you'll see how to create a proper Solidity mapping linking two addresses (EVM/Substrate).
- [Implement multiple wallet support on your dApp front-end](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/implement-multiple-wallet-support-on-your-dapp-front-end.md)
- [Understanding the EVM provider/signer concepts](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/implement-multiple-wallet-support-on-your-dapp-front-end/understanding-the-evm-provider-signer-concepts.md): In this section you'll learn what a provider and a signer are and how to use them.
- [Understanding the Keyring concept](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/implement-multiple-wallet-support-on-your-dapp-front-end/understanding-the-keyring-concept.md): A keyring is a mechanism for managing cryptographic key pairs.
- [Sign and send EVM transactions](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/implement-multiple-wallet-support-on-your-dapp-front-end/sign-and-send-evm-transactions.md): In this section you'll use a provider, a signer, a contract ABI and a contract Instance to send a transaction using ethers.
- [Sign and send Substrate extrinsics](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/implement-multiple-wallet-support-on-your-dapp-front-end/sign-and-send-substrate-extrinsics.md): In this section you'll use a keyring to sign an extrinsic.
- [Ressources](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/ressources.md): Some ressources to dig further into accounts differences between EVM and Substrate
- [Build a cross-chain transaction from any EVM-chain to a Substrate-based chain using IBC and XCM](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-any-evm-chain-to-a-substrate-based-chain-using-ibc-and-xcm.md)
- [Understanding the flow](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-any-evm-chain-to-a-substrate-based-chain-using-ibc-and-xcm/understanding-the-flow.md): In this section we will explain how to move any tokens from popular EVM chains to Moonbeam through Squid SDK.
- [Transfer tokens to Moonbeam Parachain using Squid SDK from any EVM chain](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-any-evm-chain-to-a-substrate-based-chain-using-ibc-and-xcm/transfer-tokens-to-moonbeam-parachain-using-squid-sdk-from-any-evm-chain.md): How to leverage Squid router to teleport easily tokens to Moonbeam parachain, the EVM gateway of the Polkadot's ecosystem
- [Create & execute a transaction on the source chain before bridging tokens (pre-hook)](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-any-evm-chain-to-a-substrate-based-chain-using-ibc-and-xcm/create-and-execute-a-transaction-on-the-source-chain-before-bridging-tokens-pre-hook.md): How to add a pre-hook on an EVM chain to a route request towards Moonbeam parachain using Squid SDK
- [Create & execute a transaction on Moonbeam after bridging tokens (post-hook)](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-any-evm-chain-to-a-substrate-based-chain-using-ibc-and-xcm/create-and-execute-a-transaction-on-moonbeam-after-bridging-tokens-post-hook.md): How to add a post-hook on Moonbeam parachainn to a route request after a cross-chain swap from an EVM chain using Squid SDK
- [Create & execute a swap using Stellaswap pools to obtain xcTokens](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-any-evm-chain-to-a-substrate-based-chain-using-ibc-and-xcm/create-and-execute-a-swap-using-stellaswap-pools-to-obtain-xctokens.md): How to add a post-hook leveraging xcTokens liquidity pools available on Moonbeam parachain to a route request after a cross-chain swap from an EVM chain using Squid SDK
- [Wrap-up](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-any-evm-chain-to-a-substrate-based-chain-using-ibc-and-xcm/wrap-up.md)
- [Ressources](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-any-evm-chain-to-a-substrate-based-chain-using-ibc-and-xcm/ressources.md)
- [Build a cross-chain transaction from a Substrate-based chain to Moonbeam chain](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-a-substrate-based-chain-to-moonbeam-chain.md)
- [Understanding the flow](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-a-substrate-based-chain-to-moonbeam-chain/understanding-the-flow.md): In this section we will explain how to move any native Substrate based token to any EVM chain by using Moonbeam as a middle-man parachain to access EVM liquidities through Squid.
- [Using LightSpell API to generate valid XCM calls](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-a-substrate-based-chain-to-moonbeam-chain/using-lightspell-api-to-generate-valid-xcm-calls.md): To move assets between a parachain to another parachain or directly to the relay chain, we need to sign an extrinsic to create a proper XCM message
- [Transfer tokens between parachains (or relay chain) using XCM and ParaSpell SDK](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-a-substrate-based-chain-to-moonbeam-chain/transfer-tokens-between-parachains-or-relay-chain-using-xcm-and-paraspell-sdk.md): In this section you'll learn how to send tokens from any Substrate chains to Moonbeam
- [Wrap up](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-a-substrate-based-chain-to-moonbeam-chain/wrap-up.md)
- [Ressources](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-cross-chain-transaction-from-a-substrate-based-chain-to-moonbeam-chain/ressources.md)
- [Build batches on source and destination chains using Squid and batch precompile](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-batches-on-source-and-destination-chains-using-squid-and-batch-precompile.md)
- [Understanding the flow](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-batches-on-source-and-destination-chains-using-squid-and-batch-precompile/understanding-the-flow.md)
- [Understanding the batch precompile](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-batches-on-source-and-destination-chains-using-squid-and-batch-precompile/understanding-the-batch-precompile.md): In this section we'll learn how to make several transactions packed into a bigger one on Moonbeam parachain.
- [Create a batch transaction compatible with Squid router](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-batches-on-source-and-destination-chains-using-squid-and-batch-precompile/create-a-batch-transaction-compatible-with-squid-router.md): How to generate a proper encoded batch call made of several encoded subcalls
- [Integrate a batch into a Hook using Squid](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-batches-on-source-and-destination-chains-using-squid-and-batch-precompile/integrate-a-batch-into-a-hook-using-squid.md): How to add multiple actions using the batch precompile into a pre-hook on Moonbeam parachain to a route request towards an EVM chain using Squid SDK
- [Wrap up](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-batches-on-source-and-destination-chains-using-squid-and-batch-precompile/wrap-up.md)
- [Ressources](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-batches-on-source-and-destination-chains-using-squid-and-batch-precompile/ressources.md)
- [Build a gas-less transaction from/to an EVM/Substrate chain using callPermit](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-gas-less-transaction-from-to-an-evm-substrate-chain-using-callpermit.md): How to implement gas-less transaction using the callPermit precompile and the EIP-712 standard
- [Understanding the flow](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-gas-less-transaction-from-to-an-evm-substrate-chain-using-callpermit/understanding-the-flow.md): The goal of this section is to build a dApp that is capable to dispatch transactions on behalf of its user. In other words, we are here implementing a gas-less flow into our cross-chain dApp.
- [Generating the data to sign](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-gas-less-transaction-from-to-an-evm-substrate-chain-using-callpermit/generating-the-data-to-sign.md): How to generate a properly formatted data using a contract interface particular function
- [Collecting the signature](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-gas-less-transaction-from-to-an-evm-substrate-chain-using-callpermit/collecting-the-signature.md): Once the data is properly generated, the user has to sign it. We'll then have to determine its r,s and v to dispatch the transaction later.
- [Relaying the signature](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-gas-less-transaction-from-to-an-evm-substrate-chain-using-callpermit/relaying-the-signature.md): Now it's time to dispatch the transaction
- [Executing the transaction](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-gas-less-transaction-from-to-an-evm-substrate-chain-using-callpermit/executing-the-transaction.md): This is pretty straightforward, we can now send the transaction using all the parameters we previously generated.
- [Wrap up](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-gas-less-transaction-from-to-an-evm-substrate-chain-using-callpermit/wrap-up.md)
- [Ressources](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-gas-less-transaction-from-to-an-evm-substrate-chain-using-callpermit/ressources.md)
- [Build a custodial solution to make your dApp wallet-less & gas-less using EIP-712](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-custodial-solution-to-make-your-dapp-wallet-less-and-gas-less-using-eip-712.md)
- [Understanding the flow](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-custodial-solution-to-make-your-dapp-wallet-less-and-gas-less-using-eip-712/understanding-the-flow.md): In this section we'll learn how to create a custodial solution (smart-contract/front-end/back-end) to be able to make a gas-less / wallet-less dApp
- [Smart contract](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-custodial-solution-to-make-your-dapp-wallet-less-and-gas-less-using-eip-712/smart-contract.md): In this section, we'll look at how to create a smart-contract using Solidity, which will enable the use of mirrors wallets.
- [Back end](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-a-custodial-solution-to-make-your-dapp-wallet-less-and-gas-less-using-eip-712/back-end.md): In order to be able to relay transaction we need a centralized back-end able to relay the transactions on behalf of users.
- [Examples of working cross-chain dApps made using the Jungle Toolkit](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/examples-of-working-cross-chain-dapps-made-using-the-jungle-toolkit.md)
- [Case Study: The Great Escape](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/examples-of-working-cross-chain-dapps-made-using-the-jungle-toolkit/case-study-the-great-escape.md)
- [The Player Structure](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/examples-of-working-cross-chain-dapps-made-using-the-jungle-toolkit/case-study-the-great-escape/the-player-structure.md): How the players are stored in our game dApp smart-contract
- [The xDeposit Function](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/examples-of-working-cross-chain-dapps-made-using-the-jungle-toolkit/case-study-the-great-escape/the-xdeposit-function.md): How we're allowing players to deposit tokens from any chain to their player accounts, without leaving their favorite EVM chain.
- [The xRegister Function](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/examples-of-working-cross-chain-dapps-made-using-the-jungle-toolkit/case-study-the-great-escape/the-xregister-function.md): How we are allowing players to register to the game without having to pay gas
