{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/lHV64xcfzqNWS5ik7Ljy/aN4LqbgVfo9N7RxyJdTq/c2qSVLqpU-2.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{ComponentPresetsConsumer as n,Link as a}from\"framer\";import{motion as r}from\"framer-motion\";import*as i from\"react\";import o from\"https://framerusercontent.com/modules/pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js\";import s from\"https://framerusercontent.com/modules/pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js\";export const richText=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"By the end of this guide, you'll be able to:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Understand how Ethereum nonces work\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Identify common nonce-related errors\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Implement secure nonce management using thirdweb Engine\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Improve dApp reliability with transaction sequencing best practices\"})})})]}),/*#__PURE__*/e(\"p\",{children:\"Ethereum developers often face frustrating issues like stuck, rejected, or misordered transactions\u2014the last thing any growing app needs. To build a great app that scales, you need to be aware of what threatens its success. One of the most overlooked methods of scaling is nonce management, which helps your app serve more and more users as it grows\u2014without causing failed and stuck transactions.\"}),/*#__PURE__*/e(\"p\",{children:\"But wait, what are nonces in Ethereum exactly?\"}),/*#__PURE__*/e(\"h2\",{children:\"What is an Ethereum nonce?\"}),/*#__PURE__*/t(\"p\",{children:[\"An \",/*#__PURE__*/e(a,{href:\"what-is-an-ethereum-nonce-in-blockchain\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Ethereum nonce\"})}),\" is a unique sequential number assigned to each transaction from an Ethereum address. If it's reused or skipped, Ethereum nodes reject the transaction. Poor nonce management can lead to transaction conflicts, locked funds, and disrupted smart contract flows.\"]}),/*#__PURE__*/e(\"p\",{children:\"Managing nonces isn't just a backend detail\u2014it's essential for building dependable blockchain applications. Whether you're deploying your first smart contract or running a high-volume app, you\u2019ll need to know about ethereum nonces. And in some cases, you may need to manage them to guarantee your app\u2019s operation at scale.\"}),/*#__PURE__*/e(\"h2\",{children:\"How do Ethereum nonces work?\"}),/*#__PURE__*/e(\"p\",{children:\"Every Ethereum transaction requires a nonce\u2014a sequential number used to prevent replay attacks and enforce transaction order. When nonces are mismanaged (e.g., reused, skipped, or fetched from outdated state), transactions fail or get stuck in the mempool.\"}),/*#__PURE__*/e(\"p\",{children:\"If you send three transactions with nonces 0, 1, and 2, and the one with nonce 1 fails, the one with nonce 2 won\u2019t execute until 1 is successfully mined or replaced. This causes cascading delays in many dApps.\"}),/*#__PURE__*/e(\"p\",{children:\"With Engine, nonce management is handled server-side using backend wallets. These wallets automatically track the correct nonce and ensure that all transactions are sequenced properly. This is especially useful in high-throughput environments like NFT drops, trading bots, and batch payments.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why is Managing Ethereum Nonces Important?\"}),/*#__PURE__*/e(\"p\",{children:\"Nonces represent the number of transactions an Ethereum address has sent. Each transaction must use a nonce that's exactly one higher than the last. They have 3 key reasons to exist:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"To prevent duplicate transactions\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"To ensure sequential processing\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"To guard against replay attacks\"})})]}),/*#__PURE__*/e(\"p\",{children:'Put simply, if ethereum nonces aren\u2019t managed appropriately, apps may encounter issues such as Transactions being mined out of order, stuck transactions that block subsequent ones or errors like \"nonce too low\" or \"replacement transaction underpriced\".'}),/*#__PURE__*/e(\"h2\",{children:\"How to handle Ethereum Nonce Management\"}),/*#__PURE__*/e(\"p\",{children:\"One of the most effective ways to handle ethereum nonces is via a backend wallet system that tracks and updates nonces automatically for each address. This can help avoid common pitfalls like skipped or reused nonces, race conditions, or stuck transactions and give your backend systems the power to remain consistent and reliable across concurrent processes.\"}),/*#__PURE__*/e(\"h2\",{children:\"Unlock Ethereum Nonce Management with thirdweb Engine\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/engine\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"thirdweb Engine\"})}),\" is an essential backend management service to help web3 apps operate at scale. No more stuck transactions: Engine uses nonce management and automatic retries through backend wallets to ensure transactions are processed successfully\u2014and without interrupting your users. Simply read, write and deploy smart contracts at production scale and allow easy execution for airdrops, gas sponsorship, NFT minting\u2014to scale your app seamlessly.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://thirdweb.com/engine\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Start managing Ethereum nonces with thirdweb Engine \u2192\"})})}),/*#__PURE__*/e(\"h2\",{children:\"How Engine automates Ethereum nonce management\"}),/*#__PURE__*/e(\"p\",{children:\"Engine handles nonce management for you as part of its backend wallet infrastructure. Here\u2019s how it works:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Backend wallets are created and managed by Engine.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"When you send a transaction through Engine, it calculates and applies the correct nonce automatically.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Engine uses a queuing mechanism to manage multiple concurrent transaction requests.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Engine is also versatile: it allows you to send transactions using REST APIs or SDKs available in several languages.\"}),/*#__PURE__*/e(\"h3\",{children:\"How to unlock Ethereum nonce management with thirdweb\"}),/*#__PURE__*/t(\"p\",{children:[\"Take a look at some code snippets that show how you can manage ethereum nonces with thirdweb. For the full details, check out the \",/*#__PURE__*/e(a,{href:\"https://portal.thirdweb.com/engine\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"technical docs on thirdweb Engine\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Retrieving Nonce\"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(o,{...t,code:'import { getNonce } from \"thirdweb/extensions/farcaster\";const nonce = await getNonce({  client,  address,});',language:\"Markdown\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Contract-Specific Nonce\"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(o,{...t,code:'import { nonces } from \"thirdweb/extensions/lens\";const result = await nonces({    contract,    signer: ...,});',language:\"Markdown\"})})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Advanced Nonce Handling\"})}),/*#__PURE__*/e(\"p\",{children:\"You can prevent duplicate transactions by using an idempotency key:\"}),/*#__PURE__*/e(\"p\",{children:\"This will:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Automatically fetch the correct pending nonce\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Queue transactions to prevent race conditions\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Apply retry logic for nonce-related errors\"})})]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(o,{...t,code:\"POST /wallets/{address}/send-transaction\",language:\"Shell\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://thirdweb.com/engine\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Start managing Ethereum nonces with thirdweb Engine \u2192\"})})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Ethereum apps That benefit most from nonce management\"})}),/*#__PURE__*/e(\"p\",{children:\"In any system where transaction order, concurrency, or volume matters, thirdweb Engine removes the risk of human error and ensures smooth, predictable behavior across every transaction lifecycle.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"High volume apps\"})}),/*#__PURE__*/e(\"p\",{children:\"Applications with high transaction volume or backend-managed wallets benefit significantly from thirdweb Engine\u2019s automatic nonce handling. This removes the disruption of transactions failing.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Custodial Wallet solutions\"})}),/*#__PURE__*/e(\"p\",{children:\"For custodial wallet systems, where the backend initiates transactions on behalf of users, maintaining correct nonce sequencing is critical. Without proper management, concurrent processes can easily send overlapping transactions, resulting in nonce collisions and failed operations. Engine prevents these issues by queuing transactions and applying the correct nonce behind the scenes.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Automated systems: Games, Bots & DeFi Apps\"})}),/*#__PURE__*/e(\"p\",{children:\"DeFi trading bots, staking services, NFT minting tools, and game logic that triggers smart contract actions\u2014are particularly vulnerable to nonce-related errors under load. These environments require rapid, frequent transactions that must execute in precise order. By handling nonce tracking and retry logic automatically, Engine provides the reliability and throughput needed to keep these systems stable and scalable.\"}),/*#__PURE__*/e(\"h2\",{children:\"Ethereum nonce management: easier with thirdweb\"}),/*#__PURE__*/t(\"p\",{children:[\"Incorrect nonce handling is a leading cause of Ethereum transaction failure. By using \",/*#__PURE__*/e(\"strong\",{children:\"thirdweb Engine\"}),\", you eliminate the risk of nonce-related bugs and unlock reliable, scalable backend infrastructure for web3 apps.\"]}),/*#__PURE__*/e(\"p\",{children:\"This guide provided the essential knowledge and practical insights to use Engine for secure nonce management. Whether you\u2019re building a small dApp or an enterprise platform, Engine ensures your transactions are processed accurately and in order.\"}),/*#__PURE__*/e(\"p\",{children:\"Ethereum nonce management doesn\u2019t have to be hard\u2014with thirdweb Engine, it's built-in.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://thirdweb.com/engine\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Start managing Ethereum nonces with thirdweb Engine \u2192\"})})})]});export const richText1=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"If you\u2019re building an app, you\u2019ll want to monetize it. But building your own crypto payment gateway is not always simple. Not only is it time-consuming for developers, building your own optimized flow that offers flexibility of onramping providers in every region is a challenge. And that\u2019s even without offering an effective user experience, since many methods require manual swapping and bridging.\"}),/*#__PURE__*/e(\"p\",{children:\"To stay competitive and meet the demands of a global audience, crypto payments solutions must be performant, reliable and easy to use, which is why many apps choose to use existing crypto payment gateways.\"}),/*#__PURE__*/e(\"p\",{children:\"By integrating a crypto payment solution into your application, you can provide users with faster transactions, lower fees, enhanced security, and unlock seamless web3 payments for a wider range of users. And it\u2019s much simpler than you might think.\"}),/*#__PURE__*/e(\"p\",{children:\"But before we get into the implementation, let\u2019s dive into what crypto payments solutions are and why they are important.\"}),/*#__PURE__*/e(\"h2\",{children:\"What Are Web3 Payments?\"}),/*#__PURE__*/e(\"p\",{children:\"Web3 payments refer to financial transactions powered by decentralized technologies \u2014 primarily blockchain \u2014 without reliance on traditional financial institutions. Instead of sending payments through banks or payment processors, web3 payments are settled directly between digital wallets on blockchain networks.\"}),/*#__PURE__*/e(\"p\",{children:\"These payments can involve cryptocurrencies, stablecoins, or tokenized assets and are designed to be transparent, fast, and accessible globally. Web3 payments enable new financial interactions such as NFT purchases, DAO contributions, on-chain subscriptions, and in-game item purchases \u2014 all without intermediaries.\"}),/*#__PURE__*/e(\"h2\",{children:\"What Are Web3 Payment Solutions?\"}),/*#__PURE__*/e(\"p\",{children:\"Web3 payment solutions are infrastructure tools, SDKs, and services that simplify the process of integrating crypto-based payments into applications. These solutions handle the complexities of wallet connectivity, on-chain transaction execution, cross-chain compatibility, onramps (fiat-to-crypto), swaps, and more.\"}),/*#__PURE__*/t(\"p\",{children:[\"The best web3 payment solutions, like \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/connect/universal-bridge\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"thirdweb\u2019s Universal Bridge\"})})}),\", abstract away these technical details to let users pay with any token or even fiat \u2014 while developers retain control over UX, fees, and integrations.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What is a crypto payment API?\"}),/*#__PURE__*/e(\"p\",{children:\"A crypto payments API is a specific web3 payment solution for developers; essentially a set of protocols and tools that enable applications to process transactions using cryptocurrencies. These APIs facilitate seamless interactions between your app and various blockchain networks, allowing users to make payments, deposits, or purchases with digital assets directly within your app, game or platform. By integrating a crypto payments API, you can offer a modern payment alternative that caters to the growing number of cryptocurrency users worldwide.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Benefits of Integrating Web3 Payments\"})}),/*#__PURE__*/e(\"p\",{children:\"If you\u2019re building a crypto enabled app, you\u2019ll need to activate web3 payments in some shape or form; but even for traditional apps, there are a whole host of benefits to letting your users access blockchain transactions. For example:\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Lower Transaction Fees\"})}),/*#__PURE__*/e(\"p\",{children:\"Cryptocurrency transactions often come with reduced fees compared to traditional banking systems, enabling cost savings for both businesses and users. Since transactions are processed peer-to-peer, there are less fees sent to middlemen such as processing partners or third-party financial institutions. Users simply pay a gas fee for using the network and pay their onramping providers directly.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Faster Transactions\"})}),/*#__PURE__*/e(\"p\",{children:\"Blockchain technology allows for much faster transactions than traditional banking methods which, in some cases, can take days to process.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Enhanced Security\"})}),/*#__PURE__*/e(\"p\",{children:\"Cryptographic principles underpinning blockchain ensure that transactions are secure and tamper-proof, reducing the risk of fraud.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Broader Customer Base\"})}),/*#__PURE__*/e(\"p\",{children:\"Accepting cryptocurrencies opens your business to a global audience, including unbanked populations and crypto enthusiasts.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Transparency\"})}),/*#__PURE__*/e(\"p\",{children:\"Using a blockchain's public ledger to process web3 payments provides transparency, allowing all parties to verify transactions independently through the chain\u2019s transaction history.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Challenges of Cryptocurrency Payment Integration\"})}),/*#__PURE__*/e(\"p\",{children:\"Of course, like any type of payment solution, there are also some challenges you might face before integrating\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Price Volatility\"})}),/*#__PURE__*/e(\"p\",{children:\"Cryptocurrency values can fluctuate significantly, posing potential risks in pricing and revenue. However, there are also plenty of stablecoins in the crypto ecosystem, which offer blockchain enabled tokens pegged to world currencies like the US dollar, Euro or Yuan. That\u2019s why the best and most reliable web3 payment solutions also offer stablecoin support.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Regulatory Compliance\"})}),/*#__PURE__*/e(\"p\",{children:\"Navigating the evolving legal landscape surrounding digital currencies requires diligence to ensure adherence to local and international laws. In some regions, enabling crypto payments may incur specific taxes or require you to provide user information (such as KYC checks).\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Security Considerations\"})}),/*#__PURE__*/e(\"p\",{children:\"While blockchain is secure, implementing proper security measures in your application is crucial to protect against potential vulnerabilities. That\u2019s why using existing web3 payment solutions is preferable to building your own: simply, they have more time and experience in building appropriate security measures.\"}),/*#__PURE__*/e(\"h2\",{children:\"How to choose the best web3 payments solution?\"}),/*#__PURE__*/e(\"p\",{children:\"So, you think you\u2019re ready to start with web3 payments? Here\u2019s how to choose which web3 payment solution might be the best for your app, platform or game.\"}),/*#__PURE__*/e(\"h3\",{children:\"Token & Crypto Compatibility\"}),/*#__PURE__*/e(\"p\",{children:\"Identify which digital assets are most relevant to your target audience and ensure that the web3 payment solution you choose supports them.\"}),/*#__PURE__*/e(\"h3\",{children:\"Regional Coverage\"}),/*#__PURE__*/e(\"p\",{children:\"Not every web3 payment solution is suitable for every region. If you\u2019re building a global app, you\u2019ll want to have a web3 payment solution that covers every region worldwide\u2014which is no easy feat when you need to comply with local laws and regulations. This can become even more complicated when you want to offer onramping in countries with financial instability or banking complications.\\\\\"}),/*#__PURE__*/e(\"h3\",{children:\"Fees\"}),/*#__PURE__*/e(\"p\",{children:\"Every web3 payment solution attacks fees differently: some will require more fees than others and not all will offer developers a share of those fees. If you want to monetize your app with ease, you\u2019ll want to choose a developer-friendly web3 payment solution that offers the creator something back for their hard work. And of course, you don\u2019t want to overload your users with mounting fees if you\u2019re counting on usage. As a result it\u2019s important to consider how much the developer and the user will end up paying for each transaction and optimize it accordingly.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"User Experience\"})}),/*#__PURE__*/e(\"p\",{children:\"Building the correct user experience for your audience is extremely important. For example, if your users aren\u2019t crypto native, you\u2019ll want to enable seamless transactions without manual swapping or bridging. You may even want to abstract away the complexities of crypto altogether by only enabling stablecoins and web2 payment methods such as debit cards or ApplePay.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Integration Process\"})}),/*#__PURE__*/e(\"p\",{children:\"To incorporate web3 payments in to your app will require backend development to handle transaction requests, frontend adjustments for user interfaces. Depending on the manpower your project has, and the skill level of your developers, you\u2019ll want to consider how complicated your web3 payments integration is.\"}),/*#__PURE__*/e(\"h2\",{children:\"Universal Bridge: A comprehensive web3 payments solution for every web3 app\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/connect/universal-bridge\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Universal Bridge\"})}),\" is a comprehensive web3 payment solution to help you monetize any app or game. With Universal Bridge, your users can onramp, bridge & swap on any EVM chain\u2014with any EVM token or fiat\u2014thanks to its automatic cross-chain routing.\"]}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s easy to integrate web3 payments that fit your app: choose to enable your own in-game or in-app currencies and even unlock seamless cross-chain swapping and bridging\u2014without the need to see the mechanism, never mind activate it manually. Not only that, but Universal Bridge supports over 500+ wallets, every EVM token and every EVM chain, making it truly accessible to everyone.\"}),/*#__PURE__*/e(\"p\",{children:\"Plus, Universal bridge isn\u2019t just handy for users, it\u2019s also built for developers, offering a fee-sharing mechanism so you can earn from day one, and also easy implementation for any kind of app or game. Finally, Universal Bridge is also available worldwide, with locally enabled payment providers allowing your users to onramp in every region.\"}),/*#__PURE__*/e(\"p\",{children:\"By choosing thirdweb, you benefit from a developer-friendly solution that streamlines the adoption of crypto payments.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Benefits of using Universal Bridge for Web3 Payments\"}),/*#__PURE__*/t(\"p\",{children:[\"thirdweb\u2019s \",/*#__PURE__*/e(\"strong\",{children:\"Universal Bridge\"}),\" enables users to fund transactions using \",/*#__PURE__*/e(\"em\",{children:\"any token on any chain\"}),\". Unlike traditional gateways, it handles all the complexity behind the scenes \u2014 swaps, bridges, and onramps \u2014 so your users can pay seamlessly, regardless of what assets they hold.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Global Onramp Support\"}),\" \u2013 Available in 160+ countries with providers like Stripe, Transak, Kado, and Coinbase Pay.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Fiat & Crypto Payments\"}),\" \u2013 Accept fiat with over 40 currencies and any token from any chain.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Smart Routing\"}),\" \u2013 Automatically bridges and swaps to complete the transaction.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Component & Headless Modes\"}),\" \u2013 Use React components or build your own flows with APIs.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Multi-Wallet Support\"}),\" \u2013 Users can fund from any wallet, not just the connected one.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Secure Transaction Approvals\"}),\" \u2013 One-time transaction approval prevents exploits.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Revenue Opportunities\"}),\" \u2013 Earn a percentage of transaction fees via fee-sharing.\"]}),/*#__PURE__*/e(\"h2\",{children:\"How to enable web3 payments in your app or game\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Get Started with thirdweb\"}),/*#__PURE__*/t(\"p\",{children:[\"Firstly, sign into thirdweb dashboard, generate a \",/*#__PURE__*/e(\"strong\",{children:\"Client ID (API Key) and i\"}),\"nstall the SDK\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(o,{...t,code:\"bash\\nCopyEdit\\nnpm install thirdweb\",language:\"Shell\"})})}),/*#__PURE__*/e(\"h3\",{children:\"2. Choose your integration method\"}),/*#__PURE__*/e(\"p\",{children:\"You have the choice between:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"PayEmbed Component\"}),\" \u2013 Add a plug-and-play payment UI to your app.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(o,{...t,code:'tsx\\nCopyEdit\\nimport { ThirdwebProvider, PayEmbed, createThirdwebClient } from \"thirdweb/react\";\\n\\nconst client = createThirdwebClient({ clientId: \"YOUR_CLIENT_ID\" });\\n\\nexport default function App() {\\n  return (\\n    <ThirdwebProvider>\\n      <PayEmbed client={client} />\\n    </ThirdwebProvider>\\n  );\\n}',language:\"TypeScript\"})})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"ConnectButton\"}),\" \u2013 Integrated with Universal Bridge for logged-in users.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(o,{...t,code:'tsx\\nCopyEdit\\nimport { ThirdwebProvider, ConnectButton } from \"thirdweb/react\";\\n\\nexport default function App() {\\n  return (\\n    <ThirdwebProvider clientId=\"YOUR_CLIENT_ID\">\\n      <ConnectButton />\\n    </ThirdwebProvider>\\n  );\\n}',language:\"TypeScript\"})})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Direct Contract Transactions\"}),\" \u2013 Automatically trigger Universal Bridge when a user lacks necessary tokens.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Headless API Integration\"}),\" \u2013 Fully customize your own onramp and payment UX using low-level APIs.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 3: Customize the UI as needed\"})}),/*#__PURE__*/e(\"p\",{children:\"You can tailor the Universal Bridge\u2019s user interface to create a unified, branded experience.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Themes and Styling\"}),\" \u2013 Match your brand design.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Callbacks and Hooks\"}),\" \u2013 Monitor status or run logic post-transaction.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Webhooks\"}),\" \u2013 Get backend notifications when a transaction completes.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"SDK Functions\"}),\" \u2013 Customize quotes, token selection, and swap handling.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Step 4: Test & Deploy\"}),/*#__PURE__*/e(\"p\",{children:\"Almost ready to launch? Now it\u2019s time to test and deploy. Before going live:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Test on testnets or in sandbox mode\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Review swap paths and slippage handling\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Validate KYC requirements and provider options for your target regions\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"Step 5: Launch!\"}),/*#__PURE__*/e(\"p\",{children:\"Now you\u2019ve integrated your web3 payments solution, you\u2019re ready to launch your app and start generating revenue\u2014for any app, any developer on any EVM chain.\"}),/*#__PURE__*/t(\"p\",{children:[\"Check out the full details on \",/*#__PURE__*/e(a,{href:\"https://portal.thirdweb.com/connect/pay/overview\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"how to get started with Universal Bridge in the technical documentation\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Universal Bridge: Unlocking Seamless Web3 Payments\"}),/*#__PURE__*/t(\"p\",{children:[\"Integrating cryptocurrency payments into your app not only enhances user experience but also positions your business at the forefront of financial innovation. By embracing this technology, you can offer faster, more secure, and cost-effective payment options, catering to a diverse and expanding user base. Begin your integration journey today \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/connect/universal-bridge\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"web3 payment solution Universal Bridge\"})}),\" and unlock the full potential of digital currencies within your application.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://thirdweb.com/connect/universal-bridge\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Learn more about Universal Bridge ->\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://playground.thirdweb.com/connect/pay\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Try out Universal Bridge in the playground ->\"})})})]});export const richText2=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Ethereum processes over a \",/*#__PURE__*/e(a,{href:\"https://etherscan.io/chart/tx?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"million transactions\"})})}),\" every day, serving as the backbone for hundreds of onchain protocols, blockchain games, and dapps (decentralized applications). This heavy traffic is verified and processed by a global network of nodes and \",/*#__PURE__*/e(a,{href:\"https://beaconcha.in/charts/validators?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"more than 800k active validators\"})}),\" all spread across the globe.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"While this node distribution helps secure the network and avoids centralization, it raises challenges related to efficiency and transaction order.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Ethereum's transaction nonce solves these challenges. It maintains the order and integrity of transactions, crucial for preventing replay attacks and mitigating the risk of double spending\u2014a significant issue in digital economies. In peer-to-peer systems, where there's no central body to oversee transactions, the risk of double spending is higher.\"}),/*#__PURE__*/e(\"p\",{children:\"Now, what is a transaction nonce, how does it work, and what is its role in Ethereum transactions?\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"In this blog, we will demystify the concept of transaction nonce, its working, and the problems that nonce helps solve on Ethereum.\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What is an Ethereum nonce?\"})}),/*#__PURE__*/e(\"p\",{children:'\uD83D\uDCA1Nonce stands for, \"Number used only once\".'}),/*#__PURE__*/e(\"p\",{children:\"It's essentially a scalar, single-dimensional value that increases linearly and represents the total number of transactions sent from a specific address. The incremental nature of this value\\xa0ensures that each transaction can be uniquely identified and ordered correctly within the blockchain.\"}),/*#__PURE__*/e(\"p\",{children:\"For each Ethereum account, the nonce starts at zero and increases by one with each transaction initiated. So, if an account has made three transactions, the nonce for the fourth transaction would be 3.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What is the Ethereum nonce for?\"})}),/*#__PURE__*/e(\"p\",{children:\"A nonce is a unique value that performs the following functions in Ethereum:\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Orders transactions\"})}),/*#__PURE__*/e(\"p\",{children:\"Each transaction from an account has a unique nonce, starting from 0 and incrementing by 1 with each transaction. This ensures that transactions from an account are processed in the exact order they were sent. By requiring each transaction to have a unique nonce, Ethereum ensures that each transaction can be processed only once and in the correct order.\"}),/*#__PURE__*/e(\"p\",{children:\"If transactions were processed out of order, it could lead to inconsistencies in the state (like trying to spend Ether that has already been spent, or not yet received).\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Ensures state consistency\\xa0\"})}),/*#__PURE__*/t(\"p\",{children:[\"Ethereum is a state machine i.e. transactions cause state transitions. Courtesy of nonce, all \",/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/what-is-an-ethereum-node/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"nodes\"})}),\" process transactions and perform the same state transitions in the same order. This leads to state consistency i.e. network-wide consensus on the state of each account. Additionally, nonce helps new nodes sync with the rest of the network by validating the entire network state.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Prevents double spending\"})}),/*#__PURE__*/e(\"p\",{children:\"Each nonce can only be used once for a transaction. This helps prevent double-spending as it ensures that the same transaction cannot be submitted multiple times. Nonce kills the possibility of replay attacks where a valid transaction is fraudulently repeated for illicit gains.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Since a nonce value is only valid once, a transaction with an already-used nonce will be rejected by the network.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Potential Ethereum Nonce Errors\"})}),/*#__PURE__*/e(\"p\",{children:\"Despite how crucial the nonce system is for Ethereum transactions, working with them isn\u2019t straightforward. Let\u2019s look at a few challenges that developers face with transaction nonce on Ethereum:\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Invisibility of transactions\"})}),/*#__PURE__*/e(\"p\",{children:\"The visibility of Ethereum transactions on blockchain explorers like Etherscan is crucial for tracking the transaction's status (pending, successful, or failed). But, any nonce-related issue like incorrect nonce value or stuck transactions means that the transaction might not appear in the explorer.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This leads to confusion as to the status of the transaction and how to diagnose the issue at hand.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Stuck transactions\"})}),/*#__PURE__*/e(\"p\",{children:\"Transactions can get stuck in the mempool if the nonce used is not in sequential order. A transaction with a higher nonce will remain pending if a previous transaction (with a lower nonce) hasn't been processed. This can happen if the previous transaction has a low gas fee and is taking longer to get mined. The former will remain pending, potentially causing a backlog.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Wallet provider errors\"})}),/*#__PURE__*/e(\"p\",{children:\"Most Ethereum wallets automatically manage nonces for their users. If the wallet providers aren\u2019t synced with user accounts, it might either cause nonce collisions (if the nonce is too low) or transactions being stuck in a pending state (if the nonce is too high).\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Especially when users engage in high-frequency transactions like blockchain gaming or trading, wallet providers\u2019 handling of nonce incrementation becomes critically important.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Bugs in wallet software or issues with nonce tracking algorithms can also be very detrimental for both users and the network.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Nonce issues for end users\"})}),/*#__PURE__*/e(\"p\",{children:\"Nonce-related challenges don\u2019t just cause issues for developers and builders. They also gravely impact the end-users of dapps and any Ethereum-based onchain activity.\"}),/*#__PURE__*/e(\"p\",{children:\"Here are key ways nonce issues can affect end-users:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Transaction delays:\"}),\" Nonce errors often result in transactions getting stuck, causing significant waiting times for confirmation.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Increased costs:\"}),\" Resolving nonce issues typically require resending transactions with higher gas fees, leading to additional expenses.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"dApp functionality:\"}),\" Nonce problems can interrupt the intended sequence of transactions in dApps, affecting their performance.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Disrupts automated systems: \"}),\"Users relying on automated systems or smart contracts for recurring transactions may face disruptions, requiring manual troubleshooting.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Inconsistent user experience:\"}),\" Nonce-related issues can lead to unpredictable transaction outcomes, creating an unreliable and frustrating experience for users.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://thirdweb.com/smart-contracts?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Deploy smart contracts in seconds to any EVM chain\"})})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How to avoid nonce errors on Ethereum\"})}),/*#__PURE__*/e(\"p\",{children:\"Nonce is a core component of Ethereum transactions, so developers can\u2019t bypass their management.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Here are a few best practices developers can follow to avoid nonce-related issues:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Implement systems using web3 libraries to \",/*#__PURE__*/e(\"strong\",{children:\"automatically track and update nonce values\"}),\" after each transaction, ensuring accuracy and consistency.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Develop mechanisms to \",/*#__PURE__*/e(\"strong\",{children:\"detect and replace failed transactions\"}),\", reusing nonces with adjusted gas fees to resolve stuck transactions efficiently.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Provide advanced users with an interface for \",/*#__PURE__*/e(\"strong\",{children:\"manual nonce adjustments\"}),\", accompanied by clear warnings to prevent incorrect usage and errors.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Developers can also use web3 APIs, such as those from thirdweb Engine, for backend wallet management and automatic nonce queuing. Learn more about \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/engine?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"thirdweb Engine\"})})}),\":\"]}),/*#__PURE__*/e(\"p\",{children:\"Apart from that, developers can employ rollups to reduce the number of nonce-related issues as they handle transactions outside Ethereum.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Rollups\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/optimistic-rollups-vs-zero-knowledge-zk-rollups/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Rollups\"})}),\" are layer 2 solutions that execute transactions outside the main Ethereum chain (layer 1) but post transaction data to it. They do this by \",/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/guides/how-to-batch-transactions-with-the-thirdweb-sdk/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"batching multiple transactions\"})}),\" into a single rollup block. This batching means that individual transactions within the rollup may not require individual nonce management as they would on the mainnet.\"]}),/*#__PURE__*/e(\"p\",{children:\"Furthermore, rollups offer more consistent transaction fees compared to Ethereum. This reduces the chances of transactions getting stuck due to low gas prices, which is a common cause of nonce issues.\"}),/*#__PURE__*/e(\"p\",{children:\"Outside of rollups, developers can rely on third-party servers or backend infrastructure to help them avoid the headache of nonce-related issues.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Improve throughput & eliminate nonce errors with Engine\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/engine?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"thirdweb Engine\"})}),\" is a powerful backend HTTP server designed for blockchain application development. It facilitates smart contract interaction on Ethereum and other \",/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/evm-compatible-blockchains-and-ethereum-virtual-machine/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"EVM-compatible blockchains\"})}),\" using managed backend wallets. Thirdweb Engine, essentially, is a complete web3 infra setup, including remote procedure call (RPC), storage solutions like IPFS, and account abstraction components.\"]}),/*#__PURE__*/e(\"p\",{children:\"\\xa0Here\u2019s how the thirdweb engine specifically helps with Ethereum nonce:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Wallet nonce management: \"}),\"Thirdweb Engine handles the nonce values for transactions sent from managed \",/*#__PURE__*/e(a,{href:\"https://portal.thirdweb.com/engine/backend-wallets?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"backend wallets\"})}),\". This feature is essential for ensuring that transactions are processed in the correct order on Ethereum.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"High throughput:\"}),\" The engine is capable of processing blockchain transactions in parallel while managing nonce values. This is particularly important for applications that require high transaction throughput, as it ensures that transactions are not stuck or delayed due to nonce-related issues.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Spin up your own \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/engine?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"thirdweb Engine\"})})}),\" instance and unlock simple nonce management and more!\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Nonce: the backbone of Ethereum\u2019s transaction integrity\"})}),/*#__PURE__*/e(\"p\",{children:\"In essence, nonce is not a mere technicality. It upholds integrity and security and facilitates Ethereum\u2019s smooth functioning. Appreciating the nonce's functions sheds light on the complex infrastructure that runs in the background to facilitate millions of transactions for users across the globe.\"}),/*#__PURE__*/e(\"p\",{children:\"We hope this blog post has helped you better understand what a transaction nonce is, how it works, and why it\u2019s so important for Ethereum.\"}),/*#__PURE__*/e(\"p\",{children:\"Want to start building web3 apps on Ethereum? Get started with thirdweb\u2019s web3 tools & SDKs!\"})]});export const richText3=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"EVM compatible blockchains: you've probably heard the term before if you know anything about cryptocurrencies, but do you actually know what EVM compatible blockchains are? \"})}),/*#__PURE__*/e(\"p\",{children:\"If you're a developer, you'll want to know about all of the top EVM compatible blockchains, as they are the key to the EVM ecosystem. In short, the sheer number of EVM compatible chains means there will be one that works specifically for your app \u2014and within the same ecosystem, you can still enjoy all of the benefits of Ethereum. \"}),/*#__PURE__*/e(\"p\",{children:\"But before we dive into the details, let's start with the basics:\"}),/*#__PURE__*/e(\"h2\",{children:\"What is an EVM compatible blockchain\"}),/*#__PURE__*/e(\"p\",{children:\"An EVM compatible blockchain is simply a chain that uses the Ethereum virtual machine. This means it used Ethereum-based tokens and contract standards, allowing for interoperability within the Ethereum Ecosystem. \"}),/*#__PURE__*/e(\"p\",{children:\"But there's a bit more to it than that, so let's break it down.\"}),/*#__PURE__*/e(\"h3\",{children:\"What is the (Ethereum Virtual Machine)?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The \"}),/*#__PURE__*/e(a,{href:\"https://thirdweb.com/learn/guides/what-is-the-ethereum-virtual-machine-evm\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"EVM (Ethereum Virtual Machine)\"})})}),/*#__PURE__*/e(\"strong\",{children:\" is a software environment that executes smart contracts on the Ethereum blockchain.\"}),\" It is the backbone of the Ethereum network, responsible for executing all operations and transactions on the blockchain.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"It allows for the creation and execution of smart contracts and \"}),\"manages the state of the Ethereum blockchain; including the storage of data, the processing of transactions, and the calculation of gas fees.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The EVM executes code \u2018deterministically,\u2019\"}),\" which means that any given smart contract will always produce the same output for the same input\u2014regardless of where it is executed or who is executing it. This ensures that smart contracts are executed exactly as written without interference from external sources.\"]}),/*#__PURE__*/e(\"p\",{children:\"It's also designed to provide a secure sandbox for the code to run in. This isolation prevents malicious actors from accessing the underlying system or compromising the security of the network. As a result, no single app can leave the network vulnerable.\"}),/*#__PURE__*/e(\"h2\",{children:\"What does \u2018EVM compatibility\u2019 mean?\"}),/*#__PURE__*/e(\"p\",{children:\"EVM compatibility refers to the ability for a blockchain to run the EVM and execute Ethereum smart contracts. This means that developers can write & deploy the same smart contracts across multiple EVM blockchains, without needing to make significant changes to their code. These smart contracts can then interact with other EVM-compatible blockchains through the EVM, allowing anyone to create crosschain apps.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Although they are not synonymous, one of the largest subsets of EVM-compatible blockchains are \"}),/*#__PURE__*/e(a,{href:\"https://ethereum.org/en/layer-2/?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"Layer 2 networks\"})})}),\" \u2014 typically built for scalability & efficiency, while still being able to leverage the Ethereum ecosystem\u2019s tools, technical upgrades, and user base. Layer 2 solutions, such as \",/*#__PURE__*/e(a,{href:\"https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"optimistic rollups\"})}),\" & \",/*#__PURE__*/e(a,{href:\"https://ethereum.org/en/developers/docs/scaling/zk-rollups/?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"zk-rollups\"})}),\", are built on top of the Ethereum mainnet \u2014 but they offer reduced transaction fees and increased blockchain throughput by moving computation off-chain, only committing final state changes back to the mainnet.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Benefits of EVM compatible blockchains\"}),/*#__PURE__*/e(\"p\",{children:\"The EVM comes with a number of benefits for developers writing smart contracts & building dApps on EVM-compatible blockchains:\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Portability & interoperability\"})}),/*#__PURE__*/e(\"p\",{children:\"Smart contracts and dApps developed for one EVM-compatible chain (like Ethereum) can be easily migrated to other EVM-compatible chains (like Polygon) with minimal code modifications.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Lower costs\"})}),/*#__PURE__*/e(\"p\",{children:\"The EVM provides a standardized environment to write smart contracts and develop dApps \u2014 allowing developers to write code once and deploy it on any EVM-compatible chain, without having to create separate codebases for each chain. Because everything can be written in Solidity \u2014 one of the most widely-used programming languages for Ethereum \u2014 the learning curve is also much lower across EVM-compatible blockchains.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Broader user base & developer ecosystem\"})}),/*#__PURE__*/e(\"p\",{children:\"dApps built on EVM-compatible blockchains are also built on top of the Ethereum network by nature \u2014 meaning that they have access to its much broader user base of 100M+ unique wallets, making mass adoption easier for web3 applications built on EVM-compatible networks.\"}),/*#__PURE__*/e(\"h2\",{children:\"Which blockchains are EVM compatible?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"There are many EVM-compatible blockchains that developers can deploy smart contracts on today, each with its own unique features.\"}),\" Some of the most popular examples, in order of TVL (total value locked), include:\"]}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\"Ethereum\"}),/*#__PURE__*/t(\"p\",{children:[\"Launched in 2015 by Vitalik Buterin and team, Ethereum is the original EVM chain; the base layer protocol  leveraged by other EVM chains. The \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/ethereum?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Ethereum mainnet\"})}),\" is suitable for all types of apps, from foundational infrastructure, DeFi, NFTs, DAOs, and more. \",/*#__PURE__*/e(\"br\",{}),\" Ethereum is the most secure and battle-tested chain in the ecosystem, best suited for applications that require high decentralization, network effects, and long-term stability. However, using the Ethereum mainnet might be too slow or expensive for the needs of some blockchain apps.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\"Arbitrum\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/arbitrum?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Arbitrum\"})}),/*#__PURE__*/e(\"strong\",{children:\" is a Layer 2 EVM chain that was created in \"}),\"2021 by Offchain Labs. It leverages blockchain rollups, specifically optimistic rollups, to ensure scalable transactions. For this reason, Arbitrum is favored by apps built for scale, such as those with frequent transactions and gas-optimized deployments. \"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\"Polygon\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"First launching in\"}),\" 2017 as Matic Network), \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/polygon?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Polygon\"})}),\" was one of the first EVM compatible networks. Later rebranding to Polygon in 2021, and launching several other scaling solutions, Polygon is not just a chain but a multi-faceted ecosystem including sidechains, zk-rollups, a zkEVM, aggregated layer and more. \"]}),/*#__PURE__*/t(\"p\",{children:[\"As one of the oldest EVM compatible chains, Polygon is best known for all kinds of web3 apps, including consumer apps, NFTs, gaming, and large-scale platforms. \",/*#__PURE__*/e(\"br\",{}),\"Thanks to its flexibility and wide range of scaling options,  Polygon is great for dApps that need both performance and customization. \"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\"Avalanche C-chain\"}),/*#__PURE__*/t(\"p\",{children:[\"Avalanche was created in 2020 by Ava Labs, and although not all of its ecosystem is EVM compatible, its C-chain is. Avalanche uses a subnet architecture to allow developers to launch tailored blockchains, and essentially, the \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/avalanche?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Avalanche C-chain\"})}),\" ensures compatibility with the EVM. This tech stack makes it most suitable for enterprise apps, gaming & apps with the need for tailored chains.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\"Optimism\"}),/*#__PURE__*/t(\"p\",{children:[\"Launched in 2021 by Optimism Foundation, \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/optimism\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Optimism\"})}),\" is a Layer 2 optimistic rollup on Ethereum. It's most used for cost-effective, high-frequency blockchain apps and public goods funding. As its name suggests, Optimism brings scalability to Ethereum through optimistic rollups. It's particularly strong in ecosystems promoting open-source, public goods, and experimentation with governance models.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\"Soneium\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/soneium\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Soneium Mainnet\"})}),\" is an EVM-compatible blockchain launched in 2024 by Soneium Labs, tailored for healthtech and biotech applications. Its modular architecture and hybrid Proof-of-Stake consensus allow for secure, compliant, and scalable data sharing\u2014ideal for medical research, tokenized clinical trials, and decentralized health apps.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\"Abstract\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/abstract\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Abstract Mainnet\"})}),\", launched in 2023, is built around native account abstraction and smart accounts by default. Designed by the Abstract Protocol team, it simplifies user onboarding with programmable wallets, gasless interactions, and social login. It\u2019s a great fit for developers building consumer-focused web3 apps with seamless UX.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\"B3\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/b3\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"B3 Mainnet\"})}),\" debuted in 2023 from B3 Labs as an EVM-compatible chain optimized for AI and blockchain integration. With support for real-time AI inference and on-chain data computation, it enables unique use cases like autonomous agents, AI-powered DeFi strategies, and composable machine learning tools.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\"Base\"}),/*#__PURE__*/t(\"p\",{children:[\"Base, launched by Coinbase in 2023, is a Layer 2 chain built on the Optimism OP Stack. It brings Coinbase\u2019s massive user base into the onchain world while offering low fees, fast transactions, and strong developer tooling. \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/base\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Base mainnet\"})}),\" is particularly well-suited for consumer apps and onboarding the next million users into web3.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\". ApeChain\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/apechain\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"ApeChain\"})}),\" is an EVM-compatible chain designed specifically for the ApeCoin ecosystem and its community. It\u2019s optimized for gaming, entertainment, and NFT use cases, providing low-cost transactions and native integration with ApeCoin. ApeChain is ideal for developers building in the Yuga Labs/metaverse space or targeting high-engagement social experiences.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"You can find all of these, along with resources to get started (such as RPCs, block explorers, and faucets) on thirdweb\u2019s \"}),/*#__PURE__*/e(a,{href:\"https://thirdweb.com/chains?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"Chainlist\"})})}),/*#__PURE__*/e(\"strong\",{children:\" which features 700+ EVM-compatible blockchains:\"})]}),/*#__PURE__*/e(\"h2\",{children:\"How to build a web3 app on EVM compatible blockchains\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"thirdweb is available on all EVM compatible blockchains, offering the all-in-one toolkit for building powerful web3 apps. We offer \"}),\"SDKs for React, JavaScript, Unity, Python & Go, for every kind of blockchain app and with easy plug-and-play UI componenents for frontend apps. Including tools like:\"]}),/*#__PURE__*/e(\"p\",{children:\"Wallets & Connectors: \"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Connect your app to the web3 community through our \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/learn/guides/thirdweb-connect-wallet-button-explained\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"connect wallet button\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Create branded, customized wallets for your app or ecosystem with \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/learn/guides/thirdweb-in-app-wallets-and-how-to-use-them\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"In-app wallets\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Unlock time-locked, signless & gasless transactions with \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/learn/guides/thirdweb-smart-wallets-powered-by-account-abstraction-and-how-to-use-them\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"smart wallets\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Activate social or email login & auth with our \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/learn/guides/web3-authentication-explained\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"web3 authentication solutions\"})})]})})]}),/*#__PURE__*/e(\"p\",{children:\"Smart Contract tools\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Pre-built, audited \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/explore\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Smart contract templates\"})}),\", so you can deploy an app immediately\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Comprehensive + reliable Solidity SDK for building your own custom contracts\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/contracts/modular-contracts\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Core Contracts + Modules\"})}),\": So you can build smart contracts up with the functions you need\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"A simple \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/contracts/deployment-tool\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"deployment tool for any smart contract\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"A d\",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/storage\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"ecentralized storage service\"})}),\" that uploads & pins files to IPFS for you\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Tools for Scaling\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/engine\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Engine\"})}),\", our backend solution offering backend wallets, nonce management + more.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"A \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/insight\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"powerful blockchain indexer\"})}),\", built for querying data on any EVM\u2014with lightning speed.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://portal.thirdweb.com/infrastructure/rpc-edge/overview\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"RPC Edge,\"})}),\" our performant & reliable RPC Endpoint service for all EVM chains\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"An intuitive \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/dashboard\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"dashboard\"})}),\" to manage and view your projects, team members.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"\u2026 and more\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Concluding thoughts: The future is multi-chain\"}),/*#__PURE__*/e(\"p\",{children:\"In conclusion, EVM-compatible blockchains are extremely beneficial in that they can optimize for scalability and efficiency \u2014 while also being built on top of the Ethereum network and leveraging everything it has to offer.\"}),/*#__PURE__*/t(\"p\",{children:[\"Because the EVM provides a standardized environment for blockchain apps, any application built on an EVM-compatible blockchain is \",/*#__PURE__*/e(\"strong\",{children:\"portable\"}),\" and \",/*#__PURE__*/e(\"strong\",{children:\"interoperable\"}),\" with other EVM networks \u2014 enabling access to the broader Ethereum ecosystem for all dApps built on those blockchains.\"]}),/*#__PURE__*/e(\"p\",{children:\"We hope this blog post has helped you better understand what EVM (Ethereum Virtual Machine) is, why EVM compatibility unlocks powerful functionality for blockchains, and which EVM-compatible networks you can build on top of.\"})]});export const richText4=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Want to build a blockchain app? Why not consider a Dencentralized Exchange (DEX)?\"}),/*#__PURE__*/e(\"p\",{children:\"With thirdweb, building any blockchain app is simple. To prove it,  this guide will show you everything a developer needs to know about creating a Decentralized exchange (dex) app that allows users to swap between tokens! \"}),/*#__PURE__*/e(\"p\",{children:\"Ready to build a DEX? Let\u2019s dive in!\"}),/*#__PURE__*/e(\"h2\",{children:\"What is a decentralized exchange?\"}),/*#__PURE__*/e(\"p\",{children:\"A decentralized exchange is a type of decentralized blockchain app that leverages liquidity pools and swap functionality to offer peer-to-peer crypto swaps. Essentially it allows users to buy blockchain tokens with cryptocurrencies.\"}),/*#__PURE__*/e(\"p\",{children:\"Unlike centralized exchanges, decentralized exchanges are not operated by middlemen or centralized providers; instead they support non-custodial wallets, meaning users don\u2019t lose control of their assets when using the app. It also means there is no single point of failure: no single party has access to the app\u2019s funds.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why Build a decentralized exchange?\"}),/*#__PURE__*/e(\"p\",{children:\"Decentralized exchanges are integral to the cryptocurrency trading market, allowing users to swap crypto directly with each other. Building a DEX means supporting the blockhain ecosystem and faciliating crypto to crypto transfers. It also gives you full control over the features you might offer, and removes the responsibility of building secure custodial wallets. Users simply login with their existing wallets and can interact with the platform via decentralized smart contracts.\"}),/*#__PURE__*/e(\"h2\",{children:\"Before you start building a DEX\"}),/*#__PURE__*/e(\"p\",{children:\"Before diving in, make sure you have the following:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"A\\xa0\",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/login?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"thirdweb account\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Your thirdweb API key (get it from your account settings)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Node.js installed on your machine\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Basic knowledge of React, Next.js, TypeScript\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"How to build a decentralized exchange\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Create the DEX Smart Contract\"})}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Navigate to your terminal and run:\"})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"npx thirdweb create contract\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"ol\",{start:\"2\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Name your project 'dex-contract' and choose Hardhat and TypeScript.\"})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"cd dex-contract\",language:\"Markdown\"})})}),/*#__PURE__*/t(\"ol\",{start:\"3\",children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Next, change into the new directory. Open the project in your code editor. In the\\xa0\",/*#__PURE__*/e(\"code\",{children:\"contracts/\"}),\"\\xa0folder, rename\\xa0\",/*#__PURE__*/e(\"code\",{children:\"Contract.sol\"}),\"\\xa0to\\xa0\",/*#__PURE__*/e(\"code\",{children:\"DEX.sol\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Update the contract code in\\xa0\",/*#__PURE__*/e(\"code\",{children:\"DEX.sol\"}),\"\\xa0(you can find it in the\\xa0\",/*#__PURE__*/e(a,{href:\"https://github.com/thirdweb-example/dex-contracts/blob/main/contracts/DEX.sol?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"Contracts GitHub repo\"})})}),\"):\"]})})]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:'// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport \"@thirdweb-dev/contracts/base/ERC20Base.sol\";\\n\\ncontract DEX is ERC20Base {\\n    address public token;\\n\\n    constructor (address _token, address _defaultAdmin, string memory _name, string memory _symbol)\\n        ERC20Base(_defaultAdmin, _name, _symbol)\\n    {\\n        token = _token;\\n    }\\n\\n    function getTokensInContract() public view returns (uint256) {\\n        return ERC20Base(token).balanceOf(address(this));\\n    }\\n\\n    function addLiquidity(uint256 _amount) public payable returns (uint256) {\\n        uint256 _liquidity;\\n        uint256 balanceInEth = address(this).balance;\\n        uint256 tokenReserve = getTokensInContract();\\n        ERC20Base _token = ERC20Base(token);\\n\\n        if (tokenReserve == 0) {\\n            _token.transferFrom(msg.sender, address(this), _amount);\\n            _liquidity = balanceInEth;\\n            _mint(msg.sender, _amount);\\n        }\\n        else {\\n            uint256 reservedEth = balanceInEth - msg.value;\\n            require(\\n            _amount >= (msg.value * tokenReserve) / reservedEth,\\n            \"Amount of tokens sent is less than the minimum tokens required\"\\n            );\\n            _token.transferFrom(msg.sender, address(this), _amount);\\n        unchecked {\\n            _liquidity = (totalSupply() * msg.value) / reservedEth;\\n        }\\n        _mint(msg.sender, _liquidity);\\n        }\\n        return _liquidity;\\n    }\\n\\n    function removeLiquidity(uint256 _amount) public returns (uint256, uint256) {\\n        require(\\n            _amount > 0, \"Amount should be greater than zero\"\\n        );\\n        uint256 _reservedEth = address(this).balance;\\n        uint256 _totalSupply = totalSupply();\\n\\n        uint256 _ethAmount = (_reservedEth * _amount) / totalSupply();\\n        uint256 _tokenAmount = (getTokensInContract() * _amount) / _totalSupply;\\n        _burn(msg.sender, _amount);\\n        payable(msg.sender).transfer(_ethAmount);\\n        ERC20Base(token).transfer(msg.sender ,_tokenAmount);\\n        return (_ethAmount, _tokenAmount);\\n    }\\n\\n    function getAmountOfTokens(\\n        uint256 inputAmount,\\n        uint256 inputReserve,\\n        uint256 outputReserve\\n    )\\n    public pure returns (uint256)\\n    {\\n        require(inputReserve > 0 && outputReserve > 0, \"Invalid Reserves\");\\n        // We are charging a fee of `1%`\\n        // uint256 inputAmountWithFee = inputAmount * 99;\\n        uint256 inputAmountWithFee = inputAmount;\\n        uint256 numerator = inputAmountWithFee * outputReserve;\\n        uint256 denominator = (inputReserve * 100) + inputAmountWithFee;\\n        unchecked {\\n            return numerator / denominator;\\n        }\\n    }\\n\\n    function swapEthTotoken() public payable {\\n        uint256 _reservedTokens = getTokensInContract();\\n        uint256 _tokensBought = getAmountOfTokens(\\n            msg.value,\\n            address(this).balance,\\n            _reservedTokens\\n        );\\n        ERC20Base(token).transfer(msg.sender, _tokensBought);\\n    }\\n\\n    function swapTokenToEth(uint256 _tokensSold) public {\\n        uint256 _reservedTokens = getTokensInContract();\\n        uint256 ethBought = getAmountOfTokens(\\n            _tokensSold,\\n            _reservedTokens,\\n            address(this).balance\\n        );\\n        ERC20Base(token).transferFrom(\\n            msg.sender,\\n            address(this),\\n            _tokensSold\\n        );\\n        payable(msg.sender).transfer(ethBought);\\n    }\\n\\n}',language:\"Markdown\"})})}),/*#__PURE__*/e(\"ol\",{start:\"5\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Deploy the smart contract using:\"})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"npx thirdweb deploy\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"p\",{children:\"Select the network you want to deploy to (make sure it matches where your ERC20 token is deployed).\"}),/*#__PURE__*/e(\"ol\",{start:\"5\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Finally copy the contract address. We'll need this when building the app.\"})})}),/*#__PURE__*/e(\"p\",{children:\"Now your DEX smart contract is ready to go!\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Build the DEX Application\"})}),/*#__PURE__*/e(\"p\",{children:\"The next step is building the DEX application; a web app that interacts with our DEX contract. We'll use Next.js and the thirdweb SDK.\"}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Navigate to your terminal and run:\"})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"npx thirdweb create app\",language:\"Markdown\"})})}),/*#__PURE__*/t(\"ol\",{start:\"2\",children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Name the project 'dex-app' and choose Next.js and TypeScript.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Navigate to the newly created directory:\"})})]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"cd dex-app\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"ol\",{start:\"4\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Open the project in your code editor and install the dependencies:\"})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"yarn\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"p\",{children:\"Now your web app is ready! Time to connect the pieces!\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Configure the thirdweb provider\"})}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Open\\xa0\",/*#__PURE__*/e(\"code\",{children:\"pages/_app.tsx\"}),\"\\xa0and configure the thirdweb provider with your API key and network:\"]})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"import { ThirdwebProvider } from '@thirdweb-dev/react';\\n\\nfunction MyApp({ Component, pageProps }) {\\n  const API_KEY = process.env.NEXT_PUBLIC_API_KEY || '';\\n  const activeChain = 'mumbai';\\n\\n  return (\\n    <ThirdwebProvider supportedChains={[activeChain]} apiKey={API_KEY}>\\n      <Component {...pageProps} />\\n    </ThirdwebProvider>\\n  );\\n}\\n\\nexport default MyApp;\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"ol\",{start:\"2\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Make sure to add your thirdweb API key to the\\xa0\",/*#__PURE__*/e(\"code\",{children:\".env\"}),\"\\xa0file.\"]})})}),/*#__PURE__*/e(\"p\",{children:\"Now thirdweb is configured! Let\u2019s move on to the app\u2019s functionalities.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Build the swap components\"})}),/*#__PURE__*/e(\"p\",{children:\"Your decentralized app will need to facilitate swaps. With thirdweb, you can easily implement a component that:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Allows the user to enter an amount to swap\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Displays token balances\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Handles setting max amount\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s get started!\"}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Create a new component called\\xa0\",/*#__PURE__*/e(\"code\",{children:\"SwapInput\"}),\"\\xa0to handle the input fields:\"]})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"export default function SwapInput() {\\n  // Component code here\\n}\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"ol\",{start:\"2\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Next, update\\xa0\",/*#__PURE__*/e(\"code\",{children:\"pages/index.tsx\"}),\"\\xa0with the main swap functionality:\"]})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"import { useContract } from '@thirdweb-dev/react';\\nimport SwapInput from 'components/SwapInput';\\n\\nconst TOKEN_ADDRESS = '0x123...'; // ERC20 token address\\nconst DEX_ADDRESS = '0x456...';   // DEX contract address\\n\\nexport default function Home() {\\n  const tokenContract = useContract(TOKEN_ADDRESS);\\n  const dexContract = useContract(DEX_ADDRESS);\\n\\n  const [tokenBalance, setTokenBalance] = useState('0');\\n  const [nativeBalance, setNativeBalance] = useState('0');\\n  const [tokenSymbol, setTokenSymbol] = useState('');\\n  const [amountOut, setAmountOut] = useState(0);\\n  const [isLoading, setIsLoading] = useState(false);\\n\\n  // useEffect hooks to fetch balances & allowance\\n  // ...\\n\\n  async function executeSwap() {\\n    try {\\n      setIsLoading(true);\\n\\n      // Approve DEX to spend token\\n      await tokenContract.call('approve', [DEX_ADDRESS, tokenAmount]);\\n\\n      const tx = currentType === 'native'\\n        ? await dexContract.call('swapEthToToken', {\\n            value: toWei(nativeAmount),\\n          })\\n        : await dexContract.call('swapTokenToEth', [\\n            toWei(tokenAmount),\\n          ]);\\n\\n      await tx.wait();\\n      alert(`Swap successful!`);\\n    } catch (err) {\\n      console.error(err);\\n      alert('An error occurred');\\n    } finally {\\n      setIsLoading(false);\\n    }\\n  }\\n\\n  return (\\n    <div>\\n      <SwapInput\\n        symbol='MATIC'\\n        type='native'\\n        balance={nativeBalance}\\n        amount={nativeAmount}\\n        onAmountChange={setNativeAmount}\\n      />\\n\\n      <button onClick={() => setCurrentType(t => t === 'native' ? 'token' : 'native')}>\\n        Switch\\n      </button>\\n\\n      <SwapInput\\n        symbol={tokenSymbol}\\n        type='token'\\n        balance={tokenBalance}\\n        amount={tokenAmount}\\n        onAmountChange={setTokenAmount}\\n      />\\n\\n      {amountOut > 0 && (\\n        <p>You will receive ~{formatUnits(amountOut)} tokens</p>\\n      )}\\n\\n      {address ? (\\n        <button onClick={executeSwap} disabled={isLoading}>\\n          {isLoading ? 'Swapping...' : 'Swap'}\\n        </button>\\n      ) : (\\n        <p>Connect wallet to swap</p>\\n      )}\\n    </div>\\n  )\\n}\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"p\",{children:\"This component handles:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Fetching token balances and symbol\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Calculating amount of tokens out\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Approving the DEX to spend tokens\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Executing the swap\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Test it out\"})}),/*#__PURE__*/e(\"p\",{children:\"Now you\u2019ve built each part of your decentralized exchange app, let\u2019s test it out!\"}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Start the development server:\"})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"yarn dev\",language:\"Markdown\"})})}),/*#__PURE__*/t(\"ol\",{start:\"2\",children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Open\\xa0\",/*#__PURE__*/e(a,{href:\"http://localhost:3000/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"http://localhost:3000\"})}),\"\\xa0in your browser to test out the DEX!\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Connect your wallet, enter an amount, and click Swap to exchange between the native token and your ERC20 token.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"If everything works smoothly, give yourself a pat on the back! You\u2019re ready to deploy your DEX!\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Deploy Your DEX App\"})}),/*#__PURE__*/e(\"p\",{children:\"Once you have tested your DEX locally and everything is working as expected, you can deploy it to share with others.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Deploy the Smart Contract\"})}),/*#__PURE__*/e(\"p\",{children:\"First, deploy your DEX smart contract to a live network using the thirdweb CLI. Make sure you have your wallet set up with the necessary funds for the network you are deploying to.\"}),/*#__PURE__*/t(\"p\",{children:[\"From the\\xa0\",/*#__PURE__*/e(\"code\",{children:\"dex-contract\"}),\"\\xa0directory, run:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"npx thirdweb deploy\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"p\",{children:\"Select the network you want to deploy to and confirm the transaction in your wallet. Once deployed, you will see the live contract address printed out. Copy this as you will need it to configure your web app.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"2. Configure the Web App\"})}),/*#__PURE__*/t(\"p\",{children:[\"In your web app, open the\\xa0\",/*#__PURE__*/e(\"code\",{children:\".env\"}),\"\\xa0file and add the following:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"NEXT_PUBLIC_DEX_ADDRESS=<your-dex-contract-address>\\nNEXT_PUBLIC_TOKEN_ADDRESS=<your-token-contract-address>\",language:\"Markdown\"})})}),/*#__PURE__*/t(\"p\",{children:[\"Replace\\xa0\",/*#__PURE__*/e(\"code\",{children:\"<your-dex-contract-address>\"}),\"\\xa0with the address of your deployed DEX contract, and\\xa0\",/*#__PURE__*/e(\"code\",{children:\"<your-token-contract-address>\"}),\"\\xa0with the address of your ERC20 token contract.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"3. Deploy the Web App\"})}),/*#__PURE__*/t(\"p\",{children:[\"To deploy your Next.js app, you can use a service like\\xa0\",/*#__PURE__*/e(a,{href:\"https://vercel.com/?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Vercel\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Install the Vercel CLI:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"npm i -g vercel\",language:\"Markdown\"})})}),/*#__PURE__*/t(\"p\",{children:[\"Then from your\\xa0\",/*#__PURE__*/e(\"code\",{children:\"dex-app\"}),\"\\xa0directory, run:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"vercel\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"p\",{children:\"Follow the prompts to log in and deploy your app. Once deployed, you will get a live URL where people can access your DEX.\"}),/*#__PURE__*/e(\"p\",{children:\"Congratulations, you just built your own decentralized exchange using thirdweb! Share the URL with others so they can start swapping tokens.\"}),/*#__PURE__*/e(\"h2\",{children:\"Take your newly built decentralized exchange to the next level\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, now your decentralized exchange is live, that\u2019s not the end of the journey. There are many ways you can expand on this DEX implementation, such as:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Add a liquidity pool to earn fees on swaps\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Implement limit orders\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Support multiple token pairs\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Integrate charting and price data\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Allow users to create new token pairs\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Use this guide as a starting point and continue building out your ideal decentralized exchange. Thanks for following this guide and good luck with your DEX! The complete code for this tutorial is available on\\xa0\",/*#__PURE__*/e(a,{href:\"https://github.com/thirdweb-example/dex-tutorial?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"GitHub\"})}),\"\\xa0\u2014 leave a star if you found it helpful.\"]}),/*#__PURE__*/e(\"p\",{children:\"Thanks for following this guide and good luck building!\"})]});export const richText5=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"For many, navigating the complexities of blockchain technology can be daunting, particularly when it comes to managing digital wallets. Signing in to web3 wallets is easy for a crypto-native, but nerve-wracking for anyone else. The flow simply doesn\u2019t align with the process most users are used to.\"}),/*#__PURE__*/e(\"p\",{children:\"That\u2019s the whole idea behind embedded wallets: by integrating wallet functionality directly into the app, embedded wallets eliminate the need for third-party solutions. This in-app functionality improves the UX for new and experienced users alike.\"}),/*#__PURE__*/e(\"p\",{children:\"But how exactly? In this article, we\u2019ll explore what embedded wallets are, how they work, and why they are so important for building web3 apps in 2025.\"}),/*#__PURE__*/e(\"h2\",{children:\"What are embedded wallets?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Embedded wallets\"}),\"\\xa0are \",/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/web3-wallet/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"web3 wallets\"})})}),\" that allow users to take action without leaving the app.\"]}),/*#__PURE__*/e(\"p\",{children:\"Essentially, they are\\xa0designed to onboard users effortlessly, even if they have little to no prior web3 experience. With a choice of authentication methods, like email or social media accounts, and the ability to customize the user experience, embedded wallets are a must for any scaling web3 app.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How do embedded wallets work?\"})}),/*#__PURE__*/e(\"p\",{children:\"Embedded wallets are integrated directly into decentralized applications (dApps), streamlining the user experience.\"}),/*#__PURE__*/e(\"p\",{children:\"Let us take a brief look at a step-by-step breakdown of how embedded wallets work:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Private key:\"}),\"\\xa0Upon creating an embedded wallet, a private key is generated on the user's device.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"App integration:\"}),\"\\xa0Embedded wallets are integrated into decentralized applications, removing the need for external wallet apps.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Benefits of using Embedded Wallets\"})}),/*#__PURE__*/e(\"p\",{children:\"Embedded wallets are setting the stage for a more inclusive and user-friendly decentralized web. Here\u2019s how:\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Simplified Onboarding\"})}),/*#__PURE__*/e(\"p\",{children:\"Users can log in using familiar methods, such as email and social accounts, removing the typical complexities of blockchain interactions.\"}),/*#__PURE__*/e(\"h3\",{children:\"Immersive User Experience\"}),/*#__PURE__*/e(\"p\",{children:\"Embedded wallets streamline the user experience in blockchain apps since they offer branded customizable experiences. Want to accept in-game tokens? You can. Want to create a branded, aligned aesthetic for your wallet? You can do that too!\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"thirdweb\u2019s Embedded Wallet Solutions\"})}),/*#__PURE__*/e(\"p\",{children:\"With thirdweb, it\u2019s easy to implement embedded wallets built specifically for your app. thirdweb In-app wallets offer an embedded wallet solution that is reliable and powerful for any kind of app and any kind of audience. Plus, you can also activate in-app wallets across multiple apps, meaning they are also suitable for entire gaming or app ecosystems.\"}),/*#__PURE__*/e(\"p\",{children:\"Here are some of the benefits \uD83D\uDC47\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Modular, Composable & Customizable:\"}),\"\\xa0No vendor lockin, pick and choose the tools you need and combine our tech with your own creations seamlessly.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Accessible for everyone:\"}),\" Activate web3 logins (via the most popular crypto wallets) or web2 logins such email, steam, facebook and much more.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Security:\"}),\"\\xa0Non-custodial wallets and multiple recovery options so you can build a security model that fits your users.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Seamless web3 payments: By implementing any thirdweb wallet, our web3 payment solution is automatically available. Let your users swap, bridge and transfer assets in app, with crypto or credit card\u2014 developers receive a share of fees from day one!\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Any token on any EVM: thirdweb\u2019s wallets are compatible with any EVM token on any EVM chain, plus our universal bridge facilitates transfers between them, so no user needs to bridge manually.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://thirdweb.com/connect/in-app-wallets\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Get started with thirdweb In-app wallets\"})})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How to add Embedded Wallets to your app\"})}),/*#__PURE__*/e(\"p\",{children:\"So, are you ready to add embedded wallets to your app?\"}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s how you get started:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Sign in to (or create) your thirdweb account\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Get your client ID\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Choose your framework/Language\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Install the Connect SDK in your chosen language\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Set up the client\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Create In-App wallets via your newly configured setup\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://portal.thirdweb.com/connect/wallet/get-started\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"For the full details check out our technical docs here \u2192\"})})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The future of web3 UX\"})}),/*#__PURE__*/e(\"p\",{children:\"Embedded wallets promise to make the entry of users and their activity in web3 simpler and more secure. This paves the way for improved user experience and their transactions in web3.\"}),/*#__PURE__*/e(\"p\",{children:\"As more users move from web2 to web3, the need for easy-to-use and secure wallets will increase. Embedded wallets will be essential for businesses aiming to provide a smooth and user-friendly web3 experience.\"})]});export const richText6=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Web3 adoption is accelerating with both cryptocurrency or web3-native companies and web2 brands launching products and experiences that employ web3 components like NFTs, DeFi, or metaverse. However, the onboarding experience to web3 is still daunting, and a critical reason is the complexity of crypto or \",/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/web3-wallet/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"web3 wallets\"})}),\".\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"From seed phrases to needing multiple wallets for different blockchains, the user experience could be better on multiple fronts. This friction is a direct threat to adoption.\"}),/*#__PURE__*/e(\"p\",{children:\"Wallets-as-a-service solutions aim to solve this by enabling brands to integrate user-friendly cryptocurrency wallets into their platforms easily.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"In this article, we'll learn more about these solutions and look at how they simplify web3 onboarding.\\xa0\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What is a Wallet-as-a-Service (WaaS)?\"})}),/*#__PURE__*/e(\"p\",{children:\"Wallets-as-a-Service (WaaS) refers to solutions that provide ready-made cryptocurrency wallet integration for applications and platforms. By opting for WaaS, companies bypass key management, security, and infrastructure complexities yet have a fully functional wallet for their users.\"}),/*#__PURE__*/e(\"p\",{children:\"WaaS providers also ensure enterprise-grade security and compliance with financial regulations. This way, businesses can focus on their core offerings rather than worrying about such nuances.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Overall, the integration with a Wallet-as-a-Service solution accelerates the time-to-market and provides transaction capabilities and digital asset storage to end users.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How a Wallet-as-a-Service provider works\"})}),/*#__PURE__*/e(\"p\",{children:\"Here's a breakdown of the core components of a Wallet-as-a-Service (WaaS) provider:\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"API integration\\xa0from wallet as a service platform to other services\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/web3-api/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"API\"})}),\" integration connects the Wallet as a Service platform and the business' existing systems or third-party services. APIs facilitate a wide range of functionalities:\"]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Wallet operations:\\xa0 \"}),\"Enables web3 wallet creation, transactions (payments, transfers, exchanges), and real-time balance checks via API calls.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Customization & flexibility: \"}),\"APIs allow businesses to tailor the wallet experience (UI, loyalty programs, features) to fit their specific needs.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scalability: \"}),\"APIs support growth, handling increased transaction volumes and users without major infrastructure overhauls.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Backend infrastructure\"})}),/*#__PURE__*/e(\"p\",{children:\"The backend infrastructure of Wallet as a Service (WaaS) providers is designed to ensure the seamless operation, security, and scalability of digital wallet services.\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Database management:\\xa0 \"}),\"WaaS systems utilize secure, high-performance databases to store user data, transaction records, and wallet balances. These are optimized for quick access and transaction processing.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Transaction processing engine: \"}),\"This core component handles transaction initiation, monitoring, and status updates on the blockchain. It may also offer fee estimation and security features like address whitelisting.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Security and compliance: \"}),\"WaaS platforms prioritize security with encryption and multi-factor authentication features and provide tools to comply with AML/KYC regulations.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"User interface (UI)\"})}),/*#__PURE__*/e(\"p\",{children:\"Wallet as a Service (waas) providers also often offer customizable UI templates and components, allowing businesses to tailor their web3 apps to match user expectations.\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Brand alignment: \"}),\"WaaS providers offer customizable UIs, allowing businesses to integrate their wallets with their overall brand identity (colors, logos, fonts).\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Tailored user journeys:\"}),\" WaaS platforms give the flexibility to design user experiences that match the needs of different target audiences.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Different wallet types offered by WaaS providers\"})}),/*#__PURE__*/e(\"p\",{children:\"Wallet as a Service (WaaS) platforms typically offer a variety of web3 wallets as part of their services to cater to different needs and use cases.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"These wallets can be broadly classified into:\\xa0\"}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Custodial wallets\"}),\", where a third party manages private keys, simplify the user experience. These are often used by centralized exchanges or applications (like the Starbucks Odyssey loyalty program), where accessibility is the primary goal.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Non-custodial wallets \"}),\"give users more control over their funds. These can be used to access DeFi platforms, NFT marketplaces, web3 games, and more. User autonomy, privacy, and control over assets are the priorities here. \\xa0\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"If you're building a decentralized app or web3 enabled app, your best option is to use a non-custodial wallet, as these offer the most web3 functionalities and align with the ethos of the decentralized ecosystem.\"}),/*#__PURE__*/e(\"h2\",{children:\"Types of web3 wallets used by WaaS providers\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Smart wallets\"})}),/*#__PURE__*/t(\"p\",{children:[\"A \",/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/smart-contract-wallet-erc4337/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"smart wallet\"})}),\" is a digital wallet managed by a smart contract (following the \",/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/account-abstraction-erc4337/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"ERC-4337 specification\"})}),\") instead of being controlled solely by a private key like in an Externally Owned Account or EOA.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"It offers enhanced security, recovery options, and programmable transactions for users.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Benefits:\"})}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"No Private keys or seed phrases\"}),\": Eliminates the risk of losing access due to forgotten keys or phrases.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Social & multi-sig recovery: \"}),\"Allows wallet recovery through trusted contacts or multi-signature setups, enhancing security..\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Programmability: \"}),\"Smart wallets can be customized with smart contract capabilities, allowing for automatic transactions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Gasless transactions: \"}),\"Projects and protocols can sponsor gas fees on users' behalf, creating a seamless and welcoming user experience.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://thirdweb.com/account-abstraction?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlock programmable smart wallets with thirdweb Account Abstraction\"})})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Embedded wallets\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/what-are-embedded-wallets/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Embedded wallets\"})}),\" are digital wallets built directly into applications. They allow users to manage their assets and interact with the blockchain without switching between apps or websites.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Benefits:\\xa0\"})}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simplified user experience: \"}),\"Embedded wallets allow users to log in using familiar methods from multiple devices without additional passwords.\\xa0\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Enhanced security: \"}),\"They offer advanced security features, including multi-factor authentication and improved account recovery options.\\xa0\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/e(\"p\",{children:\"Customized experiences: developers can create branded wallets that align with the project's aesthetics and functional needs\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://thirdweb.com/in-app-wallets?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Get started with thirdweb In-app wallets\"})})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Multi-sig wallets\"})}),/*#__PURE__*/t(\"p\",{children:[\"A \",/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/multisig-wallet/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"multi-sig (multi-signature) wallet\"})}),\" is a smart contract wallet that enhances security by requiring multiple approvals to execute transactions.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"These wallets ensure that no single individual has unilateral control over the wallet's assets, making it ideal for collaborative financial management and reducing the risk of unauthorized access.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Benefits:\\xa0\"})}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Enhanced security: \"}),\"Multisig wallets significantly reduce the risk of theft, unauthorized access, and single points of failure.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Flexible access control: \"}),\"Multisig wallets allow for customizable approval schemes, enabling users to set specific rules for transaction approvals based on their unique needs.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Multi-party computation wallets\"})}),/*#__PURE__*/t(\"p\",{children:[\"An \",/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/mpc-wallet/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"MPC (Multi-Party Computation) wallet\"})}),\" is a smart contract wallet that uses cryptographic techniques to split a private key into multiple shares and distribute it among various parties. It makes it harder for unauthorized users to compromise the wallet as it ensures that no single entity can access the complete key.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Benefits:\"})}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Advanced access control: \"}),\"Allows for granular permission settings and roles among participants, enhancing the wallet's security and operational efficiency.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Flexibility and control:\"}),\" Supports complex transaction requirements and can be adapted to various use cases, from organizational asset management to escrow services.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Chain-agnostic:\"}),\" Works across all EVM-compatible blockchains, offering versatility in application and integration.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Simply put, the core difference between multi-sig and MPC wallets is how the private keys are managed. Multi-sig wallets have multiple private keys for an account; a pre-defined number is needed for a transaction. In an MPC wallet, a single private key is sharded and distributed amongst different parties.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Simplify web3 onboarding with thirdweb\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://thirdweb.com/connect?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"thirdweb Connect\"})}),\" offers more than just Wallet-as-a-Service solution (WaaS); it offers a comprehensive toolkit that simplifies the onboarding process for users and makes blockchain apps accessible to everyone.\"]}),/*#__PURE__*/e(\"p\",{children:\"There are 2 main types of wallets to choose from: in-app wallets or smart wallets. \"}),/*#__PURE__*/e(\"p\",{children:\"Both let your users onboard with just an email, phone number, or social media account, which significantly lowers the entry barrier. They also monetize your web3 app with, since all thirdweb wallets automatically activate our web3 payment solutions designed to faciliate onramping and bridging in-app.\"}),/*#__PURE__*/e(\"p\",{children:\"Plus, you can also authenticate sessions with session keys, handle permissions and build management structures you're comfortable with.\"}),/*#__PURE__*/e(\"h3\",{children:\"thirdweb Smart Wallets\"}),/*#__PURE__*/e(\"p\",{children:\"thirdweb account abstraction makes it easier to deploy smart crypto wallets with next-generation features. With account abstraction, it's easy to implement seamless transactions, abstracting away blockchain logins away from users thus allowing them to interact with blockchain applications without understanding the underlying technical complexities.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://thirdweb.com/connect/account-abstraction\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Get started with smart wallets\"})})}),/*#__PURE__*/e(\"h3\",{children:\"thirdweb In-app wallets\"}),/*#__PURE__*/e(\"p\",{children:\"thirdweb in-app wallets are embedded web3 wallets with extensive customizability options and powerful hooks, offering enterprise-grade performance. With thirdweb's in-app wallets, you can your wallet experience to fit your app or game's specific needs and branding.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://thirdweb.com/connect?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Get started with In-app Wallets \"})})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The future of WaaS solutions\"})}),/*#__PURE__*/e(\"p\",{children:\"By offering intuitive user interfaces, flexibility, and robust security, WaaS solutions pave the way for the widespread adoption of decentralized applications. This positions them as a crucial component of a tech stack that ensures smooth and enjoyable experiences.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"And if you want to create a web3 wallet for your application right away, get started with thirdweb's web3 tools & SDKs!\"})})]});export const richText7=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Non-fungible tokens gained popularity in 2021, and even through tough market conditions in the years following, their core followers march on today! Since their inception, NFTs have evolved significantly, introducing complex features like minting windows, reveals & delayed reveals, allowlists and more.\"}),/*#__PURE__*/e(\"p\",{children:\"As a result, NFT minting sites must be versatile, and customized to fit specific needs. Luckily, with thirdweb, building a website that mints NFTs is easy. But before we dive into the details, let's explore why you may want to create an NFT minting site in the first place \"}),/*#__PURE__*/e(\"h2\",{children:\"Why build an NFT minting site?\"}),/*#__PURE__*/e(\"p\",{children:\"NFTs can act as a decentralized, tokenized representation of pretty much any unique asset: art, collectibles, access passes, music, software, and much much more. \"}),/*#__PURE__*/e(\"p\",{children:\"If you're thinking about minting and selling any of the above, then building an NFT minting site  has a lot of benefits over traditional minting platforms:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Keep control over the smart contract you drop, choosing specific functionalities like delayed reveals\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Create branded, immersive experiences to keep your minters entertained.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Avoid marketplace fees for you and your minters\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Avoid paying exorbitant gas, with users paying appropriate gas fees for each mint.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Today, building an NFT minting site from scratch is almost as easy as using a minting site since the ecosystem offers a plethora of tools to get started.\"}),/*#__PURE__*/e(\"h2\",{children:\"The steps of developing an NFT minting site\"}),/*#__PURE__*/e(\"p\",{children:\"So, now you know about why you should build an NFT minting site, let's get developing! In this guide, we'll take you step-by-step through the following:\"}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[\"How to deploy an \",/*#__PURE__*/e(\"strong\",{children:\"NFT Drop smart contract\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[\"How to create an app using our \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/template/erc721?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"NFT Minting Site template\"})})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[\"Customizing your \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/dashboard/wallets/connect?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"strong\",{children:\"Connect Wallet button\"})})}),\" with web3 wallets, email & social account sign-in, and more options\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/e(\"p\",{children:\"Setting up claim conditions for users to mint your NFTs\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"How to build an NFT Minting website\"}),/*#__PURE__*/e(\"h4\",{children:\"Deploy an NFT contract\"}),/*#__PURE__*/e(\"p\",{children:\"Now you're ready to start building. Let's get started!\"}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:'In your thirdweb dashboard, navigate to the Contracts page and click \"Deploy new contract\":'})})}),/*#__PURE__*/e(\"img\",{alt:\"deploy new contract\",className:\"framer-image\",height:\"326\",src:\"https://framerusercontent.com/images/rLitKiGKNtCCmW88nqu3zSYvo.png\",srcSet:\"https://framerusercontent.com/images/rLitKiGKNtCCmW88nqu3zSYvo.png?scale-down-to=512 512w,https://framerusercontent.com/images/rLitKiGKNtCCmW88nqu3zSYvo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/rLitKiGKNtCCmW88nqu3zSYvo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/rLitKiGKNtCCmW88nqu3zSYvo.png 2880w\",style:{aspectRatio:\"2880 / 652\"},width:\"1440\"}),/*#__PURE__*/t(\"p\",{children:[\"This will take you to the\\xa0\",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/explore?ref=thirdweb\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Explore\"})}),\"\\xa0page where you can browse smart contracts built by the top protocols in web3.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Note: You can also use the thirdweb\"}),\"\\xa0\",/*#__PURE__*/e(a,{href:\"https://portal.thirdweb.com/cli?ref=thirdweb\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"em\",{children:\"CLI\"})})}),\"\\xa0\",/*#__PURE__*/e(\"em\",{children:\"to set up a smart contract environment. Learn more about this in our\"}),\"\\xa0\",/*#__PURE__*/e(a,{href:\"https://blog.thirdweb.com/guides/the-ultimate-guide-to-thirdweb-cli/\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:/*#__PURE__*/e(\"em\",{children:\"CLI guide\"})})}),/*#__PURE__*/e(\"em\",{children:\".\"})]}),/*#__PURE__*/e(\"img\",{alt:\"thirdweb explore page\",className:\"framer-image\",height:\"793\",src:\"https://framerusercontent.com/images/vexxFYPvBoUKKlQajIgRUgYRFns.png\",srcSet:\"https://framerusercontent.com/images/vexxFYPvBoUKKlQajIgRUgYRFns.png?scale-down-to=512 512w,https://framerusercontent.com/images/vexxFYPvBoUKKlQajIgRUgYRFns.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/vexxFYPvBoUKKlQajIgRUgYRFns.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/vexxFYPvBoUKKlQajIgRUgYRFns.png 2880w\",style:{aspectRatio:\"2880 / 1586\"},width:\"1440\"}),/*#__PURE__*/e(\"ol\",{start:\"2\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Select your smart contract of choice. For this example, we're going to use the\\xa0\",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/thirdweb.eth/DropERC721?ref=thirdweb\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"NFT Drop (ERC721A)\"})}),\"\\xa0contract for our NFTs.\"]})})}),/*#__PURE__*/e(\"img\",{alt:\"thirdweb's NFT Drop Contract\",className:\"framer-image\",height:\"789\",src:\"https://framerusercontent.com/images/Se8bgHuLSeXXKNTZ9V5PnZ0LE.png\",srcSet:\"https://framerusercontent.com/images/Se8bgHuLSeXXKNTZ9V5PnZ0LE.png?scale-down-to=512 512w,https://framerusercontent.com/images/Se8bgHuLSeXXKNTZ9V5PnZ0LE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Se8bgHuLSeXXKNTZ9V5PnZ0LE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Se8bgHuLSeXXKNTZ9V5PnZ0LE.png 2876w\",style:{aspectRatio:\"2876 / 1578\"},width:\"1438\"}),/*#__PURE__*/e(\"ol\",{start:\"3\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Set up your smart contract with an image, name, description, and configure which wallet address will receive the funds from primary and secondary sales.\"})})}),/*#__PURE__*/e(\"img\",{alt:\"Populate metadata for the smart contract\",className:\"framer-image\",height:\"630\",src:\"https://framerusercontent.com/images/28uCubz7rmSEgW52q3mxiistuVo.png\",srcSet:\"https://framerusercontent.com/images/28uCubz7rmSEgW52q3mxiistuVo.png?scale-down-to=512 512w,https://framerusercontent.com/images/28uCubz7rmSEgW52q3mxiistuVo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/28uCubz7rmSEgW52q3mxiistuVo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/28uCubz7rmSEgW52q3mxiistuVo.png 2400w\",style:{aspectRatio:\"2400 / 1260\"},width:\"1200\"}),/*#__PURE__*/t(\"ol\",{start:\"4\",children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Choose a network to deploy the contract to. In the example we chose Mumbai, but you can select any network you like.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Deploy the contract: once it has been deployed, you'll see it in the contract dashboard.\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"ERC721A NFT Drop Dashboard \",className:\"framer-image\",height:\"791\",src:\"https://framerusercontent.com/images/U60zlQgGYeczanepjsmZC499M.png\",srcSet:\"https://framerusercontent.com/images/U60zlQgGYeczanepjsmZC499M.png?scale-down-to=512 512w,https://framerusercontent.com/images/U60zlQgGYeczanepjsmZC499M.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/U60zlQgGYeczanepjsmZC499M.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/U60zlQgGYeczanepjsmZC499M.png 2880w\",style:{aspectRatio:\"2880 / 1582\"},width:\"1440\"}),/*#__PURE__*/e(\"ol\",{start:\"6\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:'Now, upload of NFTs to the contract for people to claim using the \"Batch Upload\" button in the NFTs tab.'})})}),/*#__PURE__*/e(\"img\",{alt:\"Click on the Batch Upload button\",className:\"framer-image\",height:\"603\",src:\"https://framerusercontent.com/images/n5JA3oakgJYXGB6Ap7wDtWqTxA.png\",srcSet:\"https://framerusercontent.com/images/n5JA3oakgJYXGB6Ap7wDtWqTxA.png?scale-down-to=512 512w,https://framerusercontent.com/images/n5JA3oakgJYXGB6Ap7wDtWqTxA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/n5JA3oakgJYXGB6Ap7wDtWqTxA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/n5JA3oakgJYXGB6Ap7wDtWqTxA.png 2574w\",style:{aspectRatio:\"2574 / 1206\"},width:\"1287\"}),/*#__PURE__*/e(\"p\",{children:\"Upload your NFTs following the process when prompted\"}),/*#__PURE__*/e(\"img\",{alt:\"Upload your NFTs to the contract\",className:\"framer-image\",height:\"920\",src:\"https://framerusercontent.com/images/lslIfLL3bKeA38dUXoUjNY1PE.png\",srcSet:\"https://framerusercontent.com/images/lslIfLL3bKeA38dUXoUjNY1PE.png?scale-down-to=512 512w,https://framerusercontent.com/images/lslIfLL3bKeA38dUXoUjNY1PE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/lslIfLL3bKeA38dUXoUjNY1PE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/lslIfLL3bKeA38dUXoUjNY1PE.png 2502w\",style:{aspectRatio:\"2502 / 1840\"},width:\"1251\"}),/*#__PURE__*/e(\"ol\",{start:\"7\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Preview the NFTs. Make sure you check all of the details! If you're sure it looks fine\"})})}),/*#__PURE__*/e(\"img\",{alt:\"Preview your NFTs and upload!\",className:\"framer-image\",height:\"1305\",src:\"https://framerusercontent.com/images/4TA79uKbYVNc94nOycL6jRa0lU.png\",srcSet:\"https://framerusercontent.com/images/4TA79uKbYVNc94nOycL6jRa0lU.png?scale-down-to=1024 924w,https://framerusercontent.com/images/4TA79uKbYVNc94nOycL6jRa0lU.png?scale-down-to=2048 1848w,https://framerusercontent.com/images/4TA79uKbYVNc94nOycL6jRa0lU.png 2356w\",style:{aspectRatio:\"2356 / 2610\"},width:\"1178\"}),/*#__PURE__*/e(\"ol\",{start:\"8\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Select when you want to reveal your NFTs and click on Upload!\"})})}),/*#__PURE__*/e(\"img\",{alt:\"Select when to reveal your NFTs\",className:\"framer-image\",height:\"492\",src:\"https://framerusercontent.com/images/eyOg9IJQV29YdgXQdzJ7H9JE.png\",srcSet:\"https://framerusercontent.com/images/eyOg9IJQV29YdgXQdzJ7H9JE.png?scale-down-to=512 512w,https://framerusercontent.com/images/eyOg9IJQV29YdgXQdzJ7H9JE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/eyOg9IJQV29YdgXQdzJ7H9JE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/eyOg9IJQV29YdgXQdzJ7H9JE.png 2484w\",style:{aspectRatio:\"2484 / 984\"},width:\"1242\"}),/*#__PURE__*/e(\"ol\",{start:\"9\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Congratulations! Your NFTs should now be displayed in the NFTs tab.\"})})}),/*#__PURE__*/e(\"img\",{alt:\"NFTs successfully uploaded\",className:\"framer-image\",height:\"1303\",src:\"https://framerusercontent.com/images/XDrNDgjmCanhHMnVe5gJacuP7lI.png\",srcSet:\"https://framerusercontent.com/images/XDrNDgjmCanhHMnVe5gJacuP7lI.png?scale-down-to=1024 959w,https://framerusercontent.com/images/XDrNDgjmCanhHMnVe5gJacuP7lI.png?scale-down-to=2048 1919w,https://framerusercontent.com/images/XDrNDgjmCanhHMnVe5gJacuP7lI.png 2442w\",style:{aspectRatio:\"2442 / 2606\"},width:\"1221\"}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"Set Up Claim Conditions\"})}),/*#__PURE__*/t(\"p\",{children:[\"Claim conditions are the criteria that define\\xa0\",/*#__PURE__*/e(\"strong\",{children:\"who\"}),\",\\xa0\",/*#__PURE__*/e(\"strong\",{children:\"when\"}),\", and\\xa0\",/*#__PURE__*/e(\"strong\",{children:\"how\"}),\"\\xa0users can claim an NFT from your drop, such as release dates, allowlists, and claim limits.\"]}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Add a claim phase by heading to the\\xa0\",/*#__PURE__*/e(\"code\",{children:\"Claim Conditions\"}),\"\\xa0tab and clicking\\xa0\",/*#__PURE__*/e(\"code\",{children:\"Add Initial Claim Phase\"}),\":\"]})})}),/*#__PURE__*/e(\"img\",{alt:\"Add initial claim phase\",className:\"framer-image\",height:\"787\",src:\"https://framerusercontent.com/images/c3K4sA9qXSbxhqxdaLzhf9OXk7s.png\",srcSet:\"https://framerusercontent.com/images/c3K4sA9qXSbxhqxdaLzhf9OXk7s.png?scale-down-to=512 512w,https://framerusercontent.com/images/c3K4sA9qXSbxhqxdaLzhf9OXk7s.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/c3K4sA9qXSbxhqxdaLzhf9OXk7s.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/c3K4sA9qXSbxhqxdaLzhf9OXk7s.png 2878w\",style:{aspectRatio:\"2878 / 1574\"},width:\"1439\"}),/*#__PURE__*/e(\"ol\",{start:\"2\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Configure the price, release date, and more for your NFT drop\"})})}),/*#__PURE__*/e(\"img\",{alt:\"Add a Claim Phase for the drop\",className:\"framer-image\",height:\"791\",src:\"https://framerusercontent.com/images/8fuPbVVujkHOpXQvQ9DF5C0zjIw.png\",srcSet:\"https://framerusercontent.com/images/8fuPbVVujkHOpXQvQ9DF5C0zjIw.png?scale-down-to=512 512w,https://framerusercontent.com/images/8fuPbVVujkHOpXQvQ9DF5C0zjIw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/8fuPbVVujkHOpXQvQ9DF5C0zjIw.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/8fuPbVVujkHOpXQvQ9DF5C0zjIw.png 2868w\",style:{aspectRatio:\"2868 / 1582\"},width:\"1434\"}),/*#__PURE__*/e(\"ol\",{start:\"3\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Update the details as you want and save the claim phase!\"})})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Creating the\\xa0NFT Minting Site\"})}),/*#__PURE__*/e(\"p\",{children:\"To create an NFT minting site with ease, simply use one of our app templates. Here's how to do it:\"}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Run this command in your terminal. It will prompt you to name your project and click enter to initiate installation.\"})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"npx thirdweb create --template erc721\",language:\"Shell\"})})}),/*#__PURE__*/t(\"ol\",{start:\"2\",children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Once the modules are installed, open the project in your favourite code editor.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Create a new \",/*#__PURE__*/e(\"code\",{children:\".env\"}),\" file and add the thirdweb client ID with the name \",/*#__PURE__*/e(\"code\",{children:\"VITE_TEMPLATE_CLIENT_ID\"}),\". (If you haven't made one yet, make it for free on the\\xa0\",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/dashboard?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"dashboard\"})}),\".)\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Next, let's update some parameters in the \",/*#__PURE__*/e(\"code\",{children:\"src/consts/parameters.ts\"}),\" file:\"]})})]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[\"Change \",/*#__PURE__*/e(\"code\",{children:\"contractConst\"}),\" to the address of the contract that you just deployed\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[\"Change \",/*#__PURE__*/e(\"code\",{children:\"chainConst\"}),\" to the network on which you deployed your contract\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[\"We have already added the \",/*#__PURE__*/e(\"code\",{children:\"clientIdConst\"}),\" in the .env file, so you don't need to do anything here\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[\"You can change \",/*#__PURE__*/e(\"code\",{children:\"primaryColorConst\"}),\" to the color you want to use in your app. You can choose any color from these options:\"]})})]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:'const colors = {\\n  purple: \"#7C3AED\",\\n  blue: \"#3B82F6\",\\n  orange: \"#F59E0B\",\\n  pink: \"#EC4899\",\\n  green: \"#10B981\",\\n  red: \"#EF4444\",\\n  teal: \"#14B8A6\",\\n  cyan: \"#22D3EE\",\\n  yellow: \"#FBBF24\",\\n} as const;',language:\"TypeScript\"})})}),/*#__PURE__*/t(\"p\",{children:[\"If you want to use another color as your primary color, then open \",/*#__PURE__*/e(\"code\",{children:\"src/App.tsx\"}),\" and add a new color in the colors object and use it in the consts file.\"]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"2px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.75)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(\"code\",{children:\"themeConst\"}),\" variable decides the theme of your app. You can either choose light or dark\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-line-height\":\"1.6em\"},children:/*#__PURE__*/t(\"p\",{children:[\"Finally, you can add relayer configuration options using the \",/*#__PURE__*/e(\"code\",{children:\"relayerUrlConst\"}),\", \",/*#__PURE__*/e(\"code\",{children:\"biconomyApiKeyConst\"}),\", and \",/*#__PURE__*/e(\"code\",{children:\"biconomyApiIdConst\"}),\" variables.\"]})})]}),/*#__PURE__*/e(\"ol\",{start:\"5\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Now run your server using \",/*#__PURE__*/e(\"code\",{children:\"yarn dev\"}),\". You should see the metadata of your contract being reflected if done correctly:\"]})})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"496\",src:\"https://framerusercontent.com/images/Z1laFRMpPdgg5M3PV0XchYHW0Q.png\",srcSet:\"https://framerusercontent.com/images/Z1laFRMpPdgg5M3PV0XchYHW0Q.png?scale-down-to=512 512w,https://framerusercontent.com/images/Z1laFRMpPdgg5M3PV0XchYHW0Q.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Z1laFRMpPdgg5M3PV0XchYHW0Q.png 2000w\",style:{aspectRatio:\"2000 / 993\"},width:\"1000\"}),/*#__PURE__*/e(\"h2\",{children:\"Improving your NFT minting site\"}),/*#__PURE__*/e(\"p\",{children:\"This is just a basic structure for the NFT minting site. You can customize it as much as you want! Here are some ideas:\"}),/*#__PURE__*/e(\"h4\",{children:\"Styling\"}),/*#__PURE__*/t(\"p\",{children:[\"You can change the stylings or layout of the app you can change it in the \",/*#__PURE__*/e(\"code\",{children:\"App.tsx\"}),\" file. The template uses tailwind for styling, so you can add the respective class names to change the styles. If you are new to Tailwind, you can check out their \",/*#__PURE__*/e(a,{href:\"https://tailwindcss.com/docs/?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"documentation\"})}),\" to learn more about it!\"]}),/*#__PURE__*/e(\"h4\",{children:\"Adding more wallet connect options\"}),/*#__PURE__*/t(\"p\",{children:[\"If you want your users more ways to connect their wallets than just the conventional web3 wallet connection, check out our different wallet connect options like smart wallets, local wallets, embedded wallets \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/connect?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"via thirdweb Connect\"})}),\".\"]}),/*#__PURE__*/e(\"h4\",{children:\"Allowing users to buy NFTs using fiat\"}),/*#__PURE__*/t(\"p\",{children:[\"You can also add fiat checkouts for a more seamless experience for your users using \",/*#__PURE__*/e(a,{href:\"https://thirdweb.com/engine?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"thirdweb Engine\"})}),\"!\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"NFT Minting: Development Doesn't Need to be hard\\\\\"})}),/*#__PURE__*/t(\"p\",{children:[\"This is just a list few things that you can do with our SDK, but the sky is the limit here! You can check our \",/*#__PURE__*/e(a,{href:\"https://portal.thirdweb.com/?ref=blog.thirdweb.com\",motionChild:!0,nodeId:\"c2qSVLqpU\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"docs\"})}),\" to learn more about how to use it.\"]})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["richText", "u", "x", "p", "Link", "motion", "ComponentPresetsConsumer", "t", "CodeBlock_default", "richText1", "richText2", "richText3", "richText4", "richText5", "richText6", "richText7", "__FramerMetadata__"]
}
