{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/gjOV5c3S7ZypALiR9XLz/f6e13awKKKRv8v8jBbOU/LvnF1VNRg.js"],
  "sourcesContent": ["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType, Link } from \"framer\";\nimport * as React from \"react\";\nconst addImageAlt = (image, alt) => {\n  if (!image || typeof image !== \"object\") {\n    return;\n  }\n  return {\n    ...image,\n    alt\n  };\n}; /**\n   * @framerRecordIdKey id\n   * @framerSlug LXPPb0mj_\n   * @framerEnumToDisplayNameUtils 2\n   * @framerData\n   */\nconst data = [{\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/Mpc9bwmMGA7OcH76Is4QDFyyQg.png\").href\n  }, \"marginfi-solana-lending-protocol-borrow-lend-mrgnlend-solana-interest-rate-apy-lending-sol-jitosol-msol\"),\n  F206_nB9l: addImageAlt(undefined, \"\"),\n  id: \"uJwVirqp1\",\n  LXPPb0mj_: \"marginfi-lending-protocol-solana\",\n  MJoGirltk: \"2023-08-22T00:00:00.000Z\",\n  uA_wjTqpl: \"Solana Ecosystem\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"Over the last few months, the activity around Solana DeFi has significantly increased, and marginfi has been one of the major catalysts behind this surge. With risk management as its primary focus, not many know that behinds the scenes Squads is also an important factor in protecting the marginfi protocol\u2019s assets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This article dives into what marginfi is and how it implemented Squads to secure the core assets of the protocol, such as its programs, serving as a guide for other projects to follow the same security practices.  \"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"What is marginfi\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"While marginfi was initially focusing on margin trading across Solana perpetual exchanges, it launched earlier this year \u201Cmrgnlend\u201D, a new decentralized and overcollateralized lending protocol for the Solana ecosystem. It gained major traction right after the launch of its incentive program: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/marginfi/status/1675863618666270722?s=20\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"points\"\n        })\n      }), \".\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Alongside AMMs, borrowing/lending was one of the first major use cases of DeFi in the crypto space. It emerged with protocols like Compound and AAVE, which are now the biggest protocols on Ethereum and EVM chains. On Solana, a gap appeared after the collapse of FTX, leading marginfi to build its own borrow/lend protocol to fill this void.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The concept of lending protocols like marginfi is simple. Users looking to earn interest on their crypto deposit their tokens on the platform. This capital is then lent to borrowers who are willing to pay an interest because:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Lenders take a risk in giving up their capital and potentially suffering an opportunity cost;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"Borrowers pay this rate to access capital to perform various strategies such as leveraging, shorting, or hedging.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n            className: \"trailing-break\"\n          })]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"how-does-marginfi-work-solana-lending-protocol-explained-borrow-lend-sol-crypto-jitosol-msol-interest-rate-solana-lst-lsd\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,sjphUoNiCiLlwbfbHpar7mihU0.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/sjphUoNiCiLlwbfbHpar7mihU0.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"To facilitate liquidity for borrowers, the assets lent by users are pooled together. The lending and borrowing rates vary based on the demand from each side - if borrowers are aggressive, the lending rates will increase. Conversely, if the lending side is much larger than borrowing, the lending rate will be low as there is more than enough liquidity for borrowers.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Since DeFi users are not tied to a real identity, lending assets without security safeguards could be dangerous, as borrowers could leave without paying back their loans. To prevent such situations, overcollateralized borrow/lend protocols like marginfi require every borrower to deposit collateral in exchange for borrowing assets deposited on the platform. This means if a marginfi user wants to borrow BONK, they must first deposit an accepted asset as collateral, such as JitoSOL or mSOL.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In cases where the user's debt (e.g. BONK in this example) significantly increases compared to their collateral, or if the collateral's price drops too much relative to the debt, liquidators can automatically seize their collateral and sell it on the market to cover the debt and make a profit. Without liquidators, lenders' positions would be at risk, as the collateral provided by borrowers could become lower than the debt, preventing lenders from closing their loan and getting back their assets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In the past, many crypto borrow/lend protocols have encountered bad debt due to accepting collateral that couldn't be liquidated for a profit by liquidators due to low on-chain liquidity and high slippage. This situation led to bad debt for the protocol and lenders unable to withdraw their initial deposits. \"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"This is where marginfi stands out. To prevent bad dept to occurring on the protocol, marginfi core contributors implemented several risk management mechanisms, such as risk tiers and a risk engine. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.marginfi.com/concepts/mechanism-design/risk-management\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"The mrgnlend risk engine\"\n        })\n      }), \" evaluates three main factors to determine acceptable risk parameters:\"]\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Liquidator Execution Capacity:\"\n          }), \" The speed at which liquidators can execute liquidations.\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Market Depth:\"\n          }), \" The extent of liquidity available on-chain for liquidators to maintain profitability.\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Market Depth Recovery Time:\"\n          }), \" The duration required for liquidity depth imbalance to recover after large market orders.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n            className: \"trailing-break\"\n          })]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"marginfi-risk-management-mechanisms-risk-engine-parameters-mrgnlend-marginfi-lending-protocol-borrow-lend-sol-solana-jitosol-msol-liquidations\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,Xlv8rXqp5gVPCWHndq2peGIbeM.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/Xlv8rXqp5gVPCWHndq2peGIbeM.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Additionally, to prevent the main lending pool from being affected by assets with low liquidity that could potentially cause bad debt, marginfi has an isolated pool for risky SPL assets that can only be borrowed but not used as collateral. Low-liquid assets have a high chance of experiencing significant slippage if the market drops heavily, thus not covering the debt for liquidators. Simply put, the isolated pool makes sure liquidators only have to liquidate assets with good on-chain liquidity, minimizing the risks of bad debt for the protocol and users.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"marginfi has also been a pioneer among DeFi protocols with its Points program that incentivizes usage of the protocol. Users who lend, borrow, and refer earn points that will provide perks and rewards in the future. Moreover, marginfi is working on its stableswap AMM and overcollateralized stablecoin, mUSD, to create a virtuous circle for DeFi strategies within the marginfi \u201Cecosystem\u201D.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Why marginfi Implemented Squads into its Operations\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"marginfi-risk-management-squads-multisig-program-upgrades-management-best-practices-mrgnlend-programs-liquidity-incentice-rewards-solana-multisig\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,rUsMAgrBwsBOfL74W3FNcqMcc.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/rUsMAgrBwsBOfL74W3FNcqMcc.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"As one of the leading lending protocols on Solana, marginfi needs to uphold the highest security standards. This means implementing strong risk management mechanisms as we've seen, but also taking program management seriously.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Every protocol on Solana has an authority key that controls changes to its program(s). Similar to a regular SPL asset, this key can be held by a private key like a CLI wallet or a hot/cold wallet. However, managing this program authority key with just one simple wallet is highly risky and inconvenient for teams due to several reasons:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      style: {\n        \"--framer-font-size\": \"16px\",\n        \"--framer-text-alignment\": \"start\",\n        \"--framer-text-color\": \"rgb(55, 65, 81)\",\n        \"--framer-text-transform\": \"none\"\n      },\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"It gives ownership of the program to one person, thus collective decisions are not possible. If this person wants to trigger a malicious upgrade, the rest of the team has no power to prevent it;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"The security of the whole program relies solely on one key. If it gets compromised, there\u2019s no extra layer of security - it's too late. \"\n        })\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Hence, marginfi decided to use Squads to delegate the authority of their mrgnlend programs to a multisig. A Squads multisig allows them to add all the core contributors and set a threshold for the number of approvals needed to execute a program upgrade. Control over the program is distributed among the team members, preventing any malicious upgrades. Plus, even if one member's key gets compromised, it won\u2019t be enough to push an upgrade of the mrgnlend program since it requires the approval of multiple members to go through.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,zLCpuQPdRzDPqH1Czur3ezPLY.png\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/zLCpuQPdRzDPqH1Czur3ezPLY.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Beyond securing their programs, marginfi also benefits from using a multisig for managing their treasury. Liquidity incentive rewards are a major component of DeFi protocols as they help attract liquidity by rewarding users who deposit into the protocol. With Squads, marginfi core contributors can securely hold the token rewards from their partners for a short period before transferring them to the corresponding mrgnlend lending pool.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"marginfi is not the only protocol taking security seriously: other projects like Jupiter, Kamino, Drift, Zeta, Phoenix, \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/jito-mev-solana-jitosol\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Jito\"\n        })\n      }), \", Mayan, and many more are using Squads to safeguard the management of their program upgrades. It has become the leading multisig solution on Solana, with over $170 million in TVL across the programs protected by Squads. \"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"We are proud to assist teams like marginfi in building their projects with peace of mind, and we will continue to provide the best product for on-chain organization on Solana, helping them manage their on-chain assets securely.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About marginfi\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"marginfi is a decentralized lending protocol on Solana that prioritizes risk management to provide a safe and reliable solution for users looking to access leverage and maximize capital efficiency.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"App: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.marginfi.com/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://www.marginfi.com/\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Documentation: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.marginfi.com/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://docs.marginfi.com/\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Analytics: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://analytics.marginfi.com/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://analytics.marginfi.com/\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Squads\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is a crypto company operations platform that simplifies management of developer and treasury assets for teams building on Solana. Open source, formally verified, immutable, Squads enables teams to secure their on-chain assets in a multisig and jointly manage them.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"What is Squads: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-squads\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://squads.so/blog/what-is-squads\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Program management with Multisigs: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/solana-multisig-program-upgrades-management\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://squads.so/blog/solana-multisig-program-upgrades-management\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Why use Multisigs: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-are-multisig-wallets\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://squads.so/blog/what-are-multisig-wallets\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"How does Jito use Squads: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/jito-mev-solana-jitosol\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://squads.so/blog/jito-mev-solana-jitosol\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"This article dives into what marginfi is and how it implemented Squads to secure the core assets of the protocol, such as its programs, serving as a guide for other projects to follow the same security practices.  \",\n  z73Iw8W3B: \"Project Spotlight: marginfi - A New Borrow/Lend Protocol\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/L6llWmB3jCRHqkDk74lbrYhhlQ.png\").href\n  }, \"mpc-wallet-multi-party-computation-fireblocks-institutional-wallet-coinbase-copper-fordefi-mpc-technology-solana-mpc-multisig\"),\n  F206_nB9l: addImageAlt(undefined, \"\"),\n  id: \"y53D64XFu\",\n  LXPPb0mj_: \"mpc-wallets-risks-vs-multisig\",\n  MJoGirltk: \"2023-07-31T00:00:00.000Z\",\n  uA_wjTqpl: \"Research\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"Multisigs have been part of the crypto landscape for some time, but they seemed to have been overshadowed by the emergence of MPC (Multi-Party Computation) wallets in recent years. MPC wallets gained popularity and adoption largely because there were limited alternatives available when they emerged, and that Multisigs were considered less advanced and not fully developed. However, this is no longer true, as Multisigs and Smart Wallets are now quickly improving, offering the same features and user experience.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"While we've previously covered the topic of \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-are-multisig-wallets\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Multisig\"\n        })\n      }), \" extensively, this article will dive into MPC and explain why we believe that it served as a temporary solution until more secure options, like Multisigs, could be refined and optimized.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"MPC and Multisig are the two solutions most often recommended for institutional investors or high-net-worth individuals looking to trade crypto assets. Although these options seem to offer similar features at first glance, the aim of this article is also to present the hidden trade-offs of MPC wallets, which introduce additional risks for users. In contrast, Multisigs and Smart Wallets are surfacing as more secure and reliable alternatives.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"What Are MPCs Wallets and How Did They Emerge\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The term \u201CMPC\u201D stands for Multi-Party Computation. Generally, MPC allows two (or more) parties to jointly generate a result (like a transaction signature), without exposing their private information to each other.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"In the context of crypto, the concept of MPC was first implemented to enhance the security of wallets. Traditional crypto wallets have a single private key, which, if stolen, could allow unauthorized individuals to access and transfer the funds in the wallet. To mitigate this risk, the MPC technology splits the private key into multiple parts, referred to as shares/shards, which are distributed among multiple parties. No single party has the complete key, and a transaction can only be authorized if a predefined minimum number of these parties come together to recreate the key.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"how-mpc-wallets-work-vs-multisig-traditional-wallet-mpc-key-shares-fireblocks-coinbase-fordefi-mpc-technology-multi-party-computation-vs-multisig-technology\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,ywTVA404ROCJ75IUN8cUAVN3dM.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/ywTVA404ROCJ75IUN8cUAVN3dM.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The emergence of MPC wallets can be traced back to the growth of the crypto industry around 2018 and the increasing need for secure crypto wallets, particularly for institutional and high-net-worth investors. The first companies to adopt MPC technology did so with the intent to offer custody solutions that were more secure than single key wallets, while also retaining the convenience of being able to execute transactions on any blockchain like Bitcoin and Ethereum.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"One of the earliest companies to propose and implement Multi-Party Computation (MPC) in wallet technology was Curv, back in 2018 (later acquired by PayPal in 2021). At that time, Ethereum was merely beginning to emerge as a potentially \u201Cviable\u201D blockchain alongside Bitcoin, but it wasn't quite ready to accommodate Smart Wallets or developed Multisigs, and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-account-abstraction-ethereum-vs-solana\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"account abstraction\"\n        })\n      }), \" wasn't on top of everyone\u2019s mind as it is today. Safe (formerly Gnosis Safe), which is now the leading multisig on Ethereum, launched later the same year. However, it was brand new and wasn't equipped to meet the needs of institutions that required something more advanced at the time.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Curv\u2019s emergence attracted many institutional investors to crypto such as \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://decrypt.co/11930/global-fund-franklin-templeton-enlists-crypto-wallet-service-to-secure-digital-shares\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Franklin Templeton\"\n        })\n      }), \". This led to the development of other MPC providers like ZenGo and Fireblocks, who launched their solutions around the same time. Multisigs, on the other hand, were not ready for widespread adoption due to technical limitations (Smart Wallets weren't even a concept at that time) - institutions and organizations had no choice but to use MPC wallets for their operations if they wanted a secure method to trade and interact with crypto assets.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Today, the market is dominated by Fireblocks, Copper, BitGo, Coinbase Prime, and Ceffu (Binance), all of which employ MPC technology in their wallets. Each provider has built their own unique solution with specific features since there isn't a standardized framework for this technology. Most of these MPC providers use the Threshold Signature Scheme (TSS), an off-chain protocol that, when combined with MPC, determines how many key shares need to be used to sign a transaction. This allows the user/service provider to customize their configuration when setting up their MPC wallet.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"types-of-mpc-wallets-multi-party-computation-centralized-hybrid-fireblocks-coinbase-mpc-copper-fordefi-institutional-wallet-tap\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,LWsF5XmoapFQqFkCVzOxFCu4nvA.png?originalFilename=types-of-mpc-wallets-multi-party-computation-centralized-hybrid-fireblocks-coinbase-mpc-copper-fordefi-institutional-wallet-tap-solana.png&preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/LWsF5XmoapFQqFkCVzOxFCu4nvA.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Usually, MPC wallets are classified into two types:\"\n    }), /*#__PURE__*/_jsxs(\"ol\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Centralized MPC:\"\n          }), \" Here, a single organization retains control of all the key parts in a secure, isolated cloud environment. Institutions such as centralized exchanges or custodial service providers commonly use this model. Despite its operational effectiveness, it potentially exposes assets to internal breaches and single failure points.\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Hybrid MPC:\"\n          }), \" In this setup, the responsibility of the key shares is divided among the user, the service provider, and an additional third party. This dispersion of control aims to limit the necessity to fully trust a single centralized entity with all the key pieces. Even though it can offer increased security, it still requires a centralized party to safely distribute, oversee, and invalidate key fragments.\"]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"While in the early stages of crypto adoption for institutional and high-net-worth investors all viable solutions leaned towards MPC, times have definitely changed. Yes, Multisig technology was initially lacking in terms of products/features and blockchain compatibility, but that's history. Ethereum has matured beyond its initial potential as a \u201Cviable\u201D blockchain, and its community and ecosystem actors, like Safe, have worked hard on improving self-custody solutions. Multiple initiatives around account abstraction have also made contract/programmable accounts more usable and easier for Multisigs to operate. Other blockchains, such as Solana, have also gone live, featuring better compatibility for Smart Wallets and even bypassing some technical hurdles that Multisig and advanced wallets were facing on EVM.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Overall, it's worth noting that popularity does not necessarily equate to superiority. While MPC served a need in the past and functioned as a decent short-term solution, better alternatives have matured. If flexibility is what you're after, MPC is an appealing choice. However, when it comes to security, there are numerous reasons why Multisig and Smart Wallets outshines MPC and offer a superior solution, particularly for institutions where security is paramount.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Multisigs and Smart Contract Wallets Have Matured\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In contrast to MPC where a single key is divided into several parts, each managed by a different party, in a Multisig setup each participant has their own private key. For a transaction to be authorized, it requires approval from a minimum number of participants, as per the predetermined threshold.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For a long time, multisigs were not widely used due to their complexity and technical limitations. They were not fully supported by the Ethereum Virtual Machine and faced challenges when attempting to interact with the network. Multisigs could not initiate transactions themselves, and Multisig solutions had to find workarounds for them to work. But much has changed since 2018, and the implementation of new standards like ERC-4337 has allowed Multisig and innovative crypto wallets (Smart Wallets) to fully integrate with Ethereum and EVM chains. On Solana, the landscape of Multisigs and Smart Wallets was different, given its status as a completely new blockchain with a novel virtual machine (VM) and programming model. This environment required developers to take time to deeply understand how to build such solutions. As the ecosystem matured Solana multisig solutions quickly developed with Squads being the leading actor.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Smart (contract) wallets are emerging as a next generation of crypto wallets that, instead of being built on simple user accounts, are built on top of smart contracts/programs, offering better security features for users than traditional wallets. Multisig is likely the most known example of Smart Wallet. Due to being programmable accounts, they can let users do many things off-chain solutions like MPC cannot do without relying on centralized entities. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://fuse.squads.so/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Fuse\"\n        })\n      }), \", built by Squads Labs, will be the first institutional-grade smart wallet on Solana featuring those unique features.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,FnGd1Bu3ZUEWffNC8M4fui81E8.png\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/FnGd1Bu3ZUEWffNC8M4fui81E8.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Compared to the MPC architecture, the design of Smart Wallets is entirely on-chain at the protocol layer, eliminating the need to rely on any centralized entity for managing and securing assets. While there are challenges, such as cross-chain compatibility or full compatibility with dApps, we believe these are not insurmountable in the long term. It's worth being patient, rather than rushing to adopt temporary solutions like MPC. Moreover, Smart Wallets are close to reaching features and UX parity with MPC wallets, while already surpassing them in security and decentralization.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Additionally, being fully on-chain and built on a smart contract/program adds many advantages that MPC cannot match. Smart Wallets can easily perform mutable actions to change their operational setup, allowing flexibility in management. Each user or organization has control over their wallet's rules and functionalities. Conversely, MPC wallets typically come with a predefined set of functionalities and do not offer the same level of customization.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"smart-wallet-multisig-vs-mpc-wallets-which-are-better-pros-and-cons-mpc-vs-smart-contract-wallet-solana-mpc-multisig\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,mXsrBUKM8x8oTlxN5z0bNMTtmw.png?originalFilename=smart-wallet-multisig-vs-mpc-wallets-which-are-better-pros-and-cons-mpc-vs-smart-contract-wallet-solana-mpc-multisig-solana.png&preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/mXsrBUKM8x8oTlxN5z0bNMTtmw.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Overall, after several years of developing Multisig technology, we believe Smart Wallets built on top of multi-signature functionality are much safer than MPC solutions for several reasons:\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"strong\", {\n        children: \"Transparency\"\n      }), \": Everything happens on-chain, which eliminates any ambiguity during the transaction process. This is in direct contrast to MPC, where at many steps of executing a transaction the user has no way to know what's happening (since everything is done off-chain), which parts of the key signed the transaction, ultimately leading to \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://blog.bitgo.com/multi-sig-vs-mpc-which-is-more-secure-699ecefc8430#:~:text=Signature%20Accountability\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"accountability issues\"\n        })\n      }), \";\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"strong\", {\n        children: \"No dependence on a centralized party\"\n      }), \": From creation to adding members, setting a threshold, and executing a transaction, Smart Wallets do not require trust in a centralized entity for managing and securing assets. This is very different from MPC setups who inherently require a trusted centralized party to secure one or more key shares. This reliance on key shares necessitates complex and trusted cloud infrastructure, and it opens the possibility for risks such as insider threats. These vulnerabilities can potentially lead to the exposure of key shares and, worst, full control over your assets by an attacker;\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"strong\", {\n        children: \"Secure key revocation/rotation\"\n      }), \": And that's the biggest risk of MPC solutions - when setting up the threshold signature scheme (TSS), this part is immutable and cannot be changed in the future. This means that if someone within the organization needs to be removed from the setup, you either need to trust them to return their share and not use it in the future, or your organization would have to switch to a new MPC wallet to eliminate any risk. In contrast, Smart Wallets allow for true revocation of any member from the Multisig program;\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"strong\", {\n        children: \"Programmable\"\n      }), \": Since MPC is off-chain and has many non-mutable features like thresholds or key revocation, it is limited in the features it can offer compared to Smart Wallets. Smart Wallets can implement any feature that can be coded in a smart contract/program;\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"strong\", {\n        children: \"Security logic battle-tested\"\n      }), \": Multisig technology has been battle-tested for years, with Safe being the most significant example on Ethereum with $40bln+ in assets stored, and Squads, which is used by the largest teams on Solana. This is very different from MPC solutions, which involve complex algorithms with no standardized implementation. Most current MPC implementations are proprietary, with limited public scrutiny. This lack of transparency makes it hard to verify the security and effectiveness of these solutions.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"And regarding privacy, Solana is about to enable developers to anonymize parts of their code at the protocol level thanks to Zero-Knowledge (ZK) layer solutions like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://lightprotocol.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Light Protocol\"\n        })\n      }), \", or \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://elusiv.io/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Elusiv\"\n        })\n      }), \" for private transfers. This design is superior since users would be able to set up their own private Multisig/Smart Wallet and know which parts are anonymized. In contrast, with MPC solutions these aspects are obscured by default for everyone.\"]\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Moving Beyond MPC Wallets\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"vitalik-buterin-mpc-vs-multisig-smart-contract-wallet-are-the-only-option-vitalik-quote-tweet-mpc-wallet-are-bad-multisig-safe-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,MFmTTTJOmL94mhtWkm4ROJhiv8.png?originalFilename=vitalik-buterin-mpc-vs-multisig-smart-contract-wallet-are-the-only-option-vitalik-quote-tweet-mpc-wallet-are-bad-multisig-safe-squads-solana.png&preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/MFmTTTJOmL94mhtWkm4ROJhiv8.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"While Multisig protocols like Safe and Squads are completely on-chain, open-source, and formally verified, MPC solutions are the complete opposite and innately opaque. The algorithms behind MPC are mathematically complex and can be challenging to implement correctly. They often require expertise in both cryptography and software engineering. Even slight mistakes in implementation can lead to significant security vulnerabilities, like for example the private key information leakage found with GG18 and GG20, which were used by major MPC providers like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.fireblocks.com/blog/vulnerabilities-discovered-and-patched-in-legacy-mpc-algorithm-fireblocks-urges-move-to-mpc-cmp/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Fireblocks\"\n        })\n      }), \" between 2019-2021.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"More recently, the \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/MultichainOrg/status/1679768407628185600\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Multichain incident\"\n        })\n      }), \" also highlighted the operational risks of implementing MPC technology. All the MPC nodes for Multichain were actually run under the personal cloud server account of the company's CEO. When the CEO was arrested, all access keys to the operational account were revoked, meaning no one from the team could access the funds held within the platform.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Even though MPC technology offers some advantages when it comes to flexibility, and some underlying solutions such as wallet as a service providers are great for onboarding mass users at scale (where security is less at stake compared to solutions made for managing large amounts of crypto assets), as of today, MPC solutions are not fully suitable to be the definitive infrastructure for securing large amounts of capital. They hold a mix of trade-offs to allow for convenience. Moreover, unlike Multisig technology, which has been widely standardized, the implementations of MPC vary significantly between providers. This lack of standardization makes it harder to thoroughly vet and audit MPC solutions, thereby increasing the risk of undiscovered vulnerabilities.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Looking ahead, we anticipate that MPC providers will begin to incorporate elements of Multisig technology into their solutions to mitigate these risks. By combining the strengths of both technologies, it will be possible to create safer and more robust digital asset custody solutions. However, until this evolution is complete, teams and institutions must be aware of the risks involved with pure MPC solutions and carefully consider whether these risks are acceptable given their specific use case. On the other hand, Smart Wallets are rapidly improving and closing the gap with MPC offerings, all while retaining the highest security measures for holding crypto assets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This article is the first part of our introduction to Smart Wallets. Our second piece will present our vision for Smart Wallets, and how this new generation of crypto wallets will improve crypto custody across the entire industry.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Squads\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is a crypto company operations platform that simplifies management of developer, creator, and treasury assets for teams building on Solana and SVM. Open source, formally verified, immutable, Squads enables teams to secure their on-chain assets in a multisig and jointly manage them.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"What is Squads: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-squads\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://squads.so/blog/what-is-squads\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Squads Protocol: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Code: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://github.com/Squads-Protocol/squads-mpl\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Why use Multisigs: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-are-multisig-wallets\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://squads.so/blog/what-are-multisig-wallets\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"MPC and Multisig are often the two solutions recommended for institutional or high-net-worth individuals. Although at first glance they seem to share the same features, the aim of this article is to present why MPC solutions are not fully suitable to be the definitive infrastructure for securing large amounts of capital.\",\n  z73Iw8W3B: \"Multisig vs MPC\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/rVTc4yu2ZCZ4qqXFy0sVEIyptc.png\").href\n  }, \"solana-defi-ecosystem-state-overview-solana-defi-projects-list-ecosystem-defi-solana-summer\"),\n  F206_nB9l: addImageAlt(undefined, \"\"),\n  id: \"QH0DISbna\",\n  LXPPb0mj_: \"state-solana-defi-ecosystem\",\n  MJoGirltk: \"2023-07-14T00:00:00.000Z\",\n  uA_wjTqpl: \"Solana Ecosystem\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"Over the past year, the Solana DeFi ecosystem has endured many trials, ranging from hacks, network outages, the collapse of FTX, protocols sunsetting, and liquidity drying up. Still, rather than dying under these pressures, it has grown stronger, with committed teams and builders ready to tackle ongoing challenges and make DeFi thrive on Solana.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: ['If you were looking for an overview of the current Solana DeFi ecosystem, this is the article for you. We will explore the protocols building on Solana, as well as innovative and emerging projects that are creating financial products \"only possible on Solana,\" and take a look at the Solana summer season and its ', /*#__PURE__*/_jsx(\"em\", {\n        children: \"potential\"\n      }), \" upcoming airdrops.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"em\", {\n        children: \"Note that NFT protocols will also be covered in this article, as we believe that NFTs are gradually evolving into a new asset class in crypto, especially on Solana, beyond being simple \u201Cjpegs\u201D.\"\n      })\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Getting Started on Solana DeFi in 2023\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"For those with funds on another blockchain such as Ethereum/EVM, the easiest way to transfer them to Solana is through centralized exchanges like Coinbase or Kraken, or by using decentralized cross-chain solutions like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://mayan.finance/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Mayan Finance\"\n        })\n      }), \" (powered by Wormhole) or \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://debridge.finance/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"deBridge\"\n        })\n      }), \" which allow receiving native tokens (rather than wrapped assets).\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"transfer-funds-from-eth-to-sol-bridges-mayan-debridge-cex-spl-solana-wallet-phantom-backpack-solflare-glow-jupiter-swap-solana-tokens-buy-getting-started-on-solana\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,y6uP0SKUXsxRkVhdBK3KTXF4OM.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/y6uP0SKUXsxRkVhdBK3KTXF4OM.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Buying tokens on Solana\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Once your funds are on-chain, you need to swap them for SOL, USDC, or any other token you're interested in. Unlike on Ethereum, most people on Solana don't directly trade with an AMM. Instead, they use \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://jup.ag/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Jupiter\"\n        })\n      }), \", the leading DEX aggregator that sources liquidity from AMMs like Orca and Raydium, or order books such as OpenBook and Phoenix. Not only does Jupiter provide the best rates for swaps, but it also allows users to create on-chain limit orders for any token. Moreover, an on-chain DCA feature is coming soon.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Staking opportunities\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"With some SOL and SPL tokens in your wallet, you're ready to explore the various yield opportunities available on Solana. One simple option is to earn rewards from staking SOL. Fortunately, there are excellent liquid staking providers like Marinade, Jito, SolBlaze, or Lido. JitoSOL (\", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.jito.network/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Jito\"\n        })\n      }), \"), an innovative liquid staking SOL, rewards stakers not only with emissions but also with MEV rewards generated by Jito validators, offering a higher yield than traditional staking solutions. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://marinade.finance/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Marinade\"\n        })\n      }), ' is currently the largest staking solution, with over $150 million in stake. It offers an interesting feature, \"Directed Stake\", that allows users to select the validators they want to delegate their SOL to. Another newcomer is ', /*#__PURE__*/_jsx(Link, {\n        href: \"https://solblaze.org/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"SolBlaze\"\n        })\n      }), \". Like Marinade, it automatically stakes your SOL across many validators according to their delegation strategy to help further decentralize Solana. SolBlaze has also recently begun to \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/solblaze_org/status/1679590152459665408\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"publicize its upcoming $BLAZE token\"\n        })\n      }), \" airdrop.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Liquidity provisioning\"\n      })\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-liquidity-amms-nft-amms-orca-raydium-tensor-magic-eden-hadeswap-monaco-openbook-hxro-liquidity-provisioning-solana\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,lNXUmlrZhXMabxBOwTuu0J33oEw.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/lNXUmlrZhXMabxBOwTuu0J33oEw.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"In Solana, concentrated liquidity has become the norm for AMMs, with leading decentralized exchanges like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://raydium.io/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Raydium\"\n        })\n      }), \" and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.orca.so/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Orca\"\n        })\n      }), \" primarily offering concentrated liquidity market making (\", /*#__PURE__*/_jsx(Link, {\n        href: \"https://blog.hubbleprotocol.io/what-is-clmm/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"CLMM\"\n        })\n      }), \") pools. These are more capital efficient, offering greater liquidity for users and more fees for traders. For example, if you've staked your SOL into mSOL or JitoSOL, you can support users wanting to swap these tokens by providing liquidity on these exchanges for pairs like SOL or USDC. This not only allows you to earn yield from trading fees, but you may also benefit from additional rewards through liquidity mining programs, like Marinade does with MNDE for mSOL pools. \"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Major NFT protocols on Solana also incorporate an AMM for improved NFT trading. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.hadeswap.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Hadeswap\"\n        })\n      }), \" has led the way in democratizing this for major collections, followed by \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.tensor.trade/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Tensor\"\n        })\n      }), \" and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://magiceden.io/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Magic Eden\"\n        })\n      }), \". Just as you would provide liquidity for a SOL-USDC pair, you can do the same for NFT collections, earning fees on these marketplaces from people trading the liquidity you've provided.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"More advanced users can explore additional protocols on Solana to provide liquidity and earn trading fees. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/openbookdex\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"OpenBook\"\n        })\n      }), \", which was forked from Serum by the Solana community after FTX's collapse, is an on-chain order book frequently used by traders for on-chain limit orders and integrated by protocols like Raydium and perpetual exchanges. Users can also access products built on top of \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://hxro.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Hxro\"\n        })\n      }), \", a liquidity layer for derivatives trading and betting applications. In the same field, \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.monacoprotocol.xyz/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Monaco Protocol\"\n        })\n      }), \" is powering many betting applications on Solana, such as BetDex.\"]\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Expanding Your Exposure to Solana DeFi\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,jvzmQNRuS67oiPHchOwYSUqlG4.png\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/jvzmQNRuS67oiPHchOwYSUqlG4.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"One of the best ways to create strategies in DeFi is through lending/borrowing protocols. On Solana, the main lending protocols are Marginfi and Solend, both of which accept various SPL assets, including liquid staked tokens (LSTs). \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.marginfi.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Marginfi\"\n        })\n      }), \" launched their borrowing/lending product earlier this year and recently started to gain major traction. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://solend.fi/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Solend\"\n        })\n      }), \", on the other hand, recently unveiled its v2, introducing new features such as borrow weights, TWAP oracles, and outflow rate limits. \"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"In addition to these, other types of lending solutions are available on Solana. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://francium.io/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Francium\"\n        })\n      }), \" offers lending for traders to leverage their LP positions by borrowing one or both pairs of a liquidity position from Orca/Raydium. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://hubbleprotocol.io/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Hubble\"\n        })\n      }), ', a great solution for fixed rate borrowing, is a Collateralized Debt Protocol (CDP) stablecoin, with mechanisms similar to MakerDAO (DAI) to maintain the peg of its stablecoin. Users can deposit SOL and various SPL assets to mint USDH, which can then be used to leverage their exposure (e.g. by swapping USDH for SOL). For more \"exotic\" lending opportunities, ', /*#__PURE__*/_jsx(Link, {\n        href: \"https://credix.finance/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Credix\"\n        })\n      }), \" is an interesting Real-World Asset (RWA) protocol that facilitates private credit loans on-chain, offering lending rates for USDC that aren't correlated to the crypto market.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"While NFT AMMs are well implemented on Solana, NFT traders also have the option of leveraging other types of financial activities with their NFTs through protocols like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.frakt.xyz/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Frakt\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://sharky.fi/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Sharky\"\n        })\n      }), \", or \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://citrus.famousfoxes.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Citrus\"\n        })\n      }), \". Here, users can lend their SOL to others who borrow it against NFTs. If the borrower fails to repay the loan, the lender keeps the NFT. This is a very lucrative type of DeFi product on Solana, with borrowers willing to pay APYs as high as 240% for some collections.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"On-chain Futures with Solana Perpetual Exchanges\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Perpetual exchanges provide another avenue for lending or borrowing, and the Solana scene is quite active in this respect. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.drift.trade/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Drift\"\n        })\n      }), \" is currently the leading perpetual exchange by TVL and enables traders to leverage several types of cryptos such as SOL, BTC, ETH, ARB, RNDR, MATIC, to name a few. Users can lend SOL, USDC, or mSOL to provide additional liquidity for Drift traders. Recently, Drift introduced an insurance fund staking program, offering another lending opportunity for users willing to backstop for the perpetual exchange in case of an adverse event. Beyond Drift, many other perpetual exchanges are available on Solana, such as:\"]\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(Link, {\n            href: \"https://www.zeta.markets/\",\n            openInNewTab: true,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"Zeta\"\n            })\n          }), \", that recently started the Mad Wars trading competition to onboard NFT users onto Solana DeFi; \"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(Link, {\n            href: \"https://cypher.trade/\",\n            openInNewTab: true,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"Cypher\"\n            })\n          }), \", which recently launched its Liquidity Incentive Program;\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"or \", /*#__PURE__*/_jsx(Link, {\n            href: \"https://mango.markets/\",\n            openInNewTab: true,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"Mango Markets\"\n            })\n          }), \", built on top of OpenBook.\"]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"The New Generation of Solana DeFi Protocols\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"While most of the protocols mentioned above are already well-developed, there are many new teams that either recently went live or are preparing for their upcoming launch.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-summer-tvl-solana-biggest-protocols-defi-marginfi-cypher-blazestake-jito-citrus-marinade-solend-drift-frakt-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,fyLd7WqFcrDk8iPwOC1oyTKqG4.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/fyLd7WqFcrDk8iPwOC1oyTKqG4.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"We began this article speaking of liquidity provision on Solana, and two projects are emerging to solve liquidity issues or simplify them. The first one is \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://kamino.finance/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Kamino\"\n        })\n      }), \", a protocol that manages LP positions from Orca and Raydium on behalf of the user. CLMMs have become complex, even for protocols that need to provide liquidity for their native token, and Kamino alleviates these pain points by automatically setting ranges, rebalancing positions, and auto-compounding fees. \"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"The second protocol is \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://meteora.ag/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Meteroa\"\n        })\n      }), \", a project incubated by Jupiter that offers two main products working closely together: lending aggregation vaults and dynamic liquidity pools. Instead of sifting through every lending/perpetual protocol to lend their assets, traders can deposit their tokens into Meteora. It not only finds the best rates but also looks for healthy risk factors to avoid being stuck in a lending pool if a borrower poses risk on the position. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://mds.hadeswap.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Midas\"\n        })\n      }), \", incubated by Hadeswap, is also a novel stablecoin protocol similar to Hubble but for NFTs. NFT owners can collateralize their NFTs to mint $MIDAS and sell or use it across DeFi. For users who don't have time to create complex strategies, \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.hawksight.co/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Hawksight\"\n        })\n      }), \" offers one-click DeFi strategies on top of many DeFi protocols like Kamino, Orca, Raydium, and more. Additionally, \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://goosefx.io/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"GFX\"\n        })\n      }), \" is working on single-sided liquidity pools to simplify liquidity provision for anyone.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Order books are also starting to take off on Solana, mostly due to the unique nature of the Solana blockchain. While we've already seen some successful use cases like OpenBook for limit orders on SPL assets or Sharky for customized NFT loans, new teams are working to further improve this field on Solana. Phoenix (\", /*#__PURE__*/_jsx(Link, {\n        href: \"https://ellipsislabs.xyz/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Ellipsis\"\n        })\n      }), \") recently went live and is already among the top pool providers by \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://hub.jup.ag/stats\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"volume\"\n        })\n      }), \" on Jupiter. It's a new central limit order book (CLOB) that is completely decentralized and aims to bring the same experience as a centralized CLOB but on-chain. It will soon launch an interface to facilitate the use of order books for anyone, bringing the familiarity of a CEX with the benefits of a DEX. \", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-new-projects-defi-phoenix-lulo-flash-trade-clone-symmetry-solana-defi-ecosystem-primitives\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,DaQddOXyO6R2SzOICb0qndnCf8.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/DaQddOXyO6R2SzOICb0qndnCf8.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(Link, {\n        href: \"https://www.lulo.finance/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Lulo\"\n        })\n      }), \" is another order book, but instead built for lending and borrowing. Currently, most lending/borrowing protocols for fungible assets on Solana are pooled, and traders cannot set their own parameters (e.g. APY, duration). Lulo will allow anyone to create lending or borrowing orders with specific terms on their order book until it is matched with the other side. Moreover, order books can enable much more than trading crypto assets. Protocols like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.aver.exchange/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Aver\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.betdex.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"BetDex\"\n        })\n      }), \", or \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://hedgehog.markets/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Hedgehog\"\n        })\n      }), \" are building prediction markets and betting on sports events on-chain. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.rootprotocol.org/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Root\"\n        })\n      }), \" is also an interesting protocol that combines both AMM and order book mechanisms for market makers on Solana, allowing them to provide liquidity in a very custom way and without restrictions.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Perpetual exchanges are also growing on Solana, and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.flash.trade/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Flash Trade\"\n        })\n      }), \" is working on bringing more liquidity to BTC and ETH on Solana with similar mechanisms to GMX. This will also bring new yield opportunities for BTC and ETH traders. Still in the derivatives field, \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://clone.so/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Clone\"\n        })\n      }), \" is working on synthetic assets, allowing anyone to trade any kind of assets on Solana, such as currencies, gold, stocks, and more. While the NFT landscape is already growing fast, there's still a missing piece: NFT perpetuals. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://sujiko.trade/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Sujiko\"\n        })\n      }), \" is working on this, with similar mechanisms to Drift v2 and Mango Markets but tailored for NFT collections. It will work not only for Solana collections but will also allow traders to trade ETH and BTC collections with the low fees and speed of Solana. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.dual.finance/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Dual Finance\"\n        })\n      }), \", on the other hand, offers decentralized vault options. Last but not least, \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.symmetry.fi/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Symmetry\"\n        })\n      }), \" allows anyone to create a decentralized index fund (similar to an ETF) on-chain and be their own asset manager with rules for rebalancing the fund.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Finally, the Solana DeFi ecosystem is diversifying with tokenization projects like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://homebasedao.io/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Homebase\"\n        })\n      }), \", which tokenizes individual houses, and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.parcl.co/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Parcl\"\n        })\n      }), \", which expands this to entire cities. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.bridgesplit.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Bridgesplit\"\n        })\n      }), \" is bringing financial innovation by tokenizing loans on Solana. Alongside, the NFT landscape is still evolving with \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://rain.fi/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Rain\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/hyperspacexyz/status/1669372977324908544\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Hyperspace\"\n        })\n      }), \", and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://honeylabs.io/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Honey\"\n        })\n      }), \" developing novel financial uses for NFTs, while \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://texture.finance\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Texture\"\n        })\n      }), \" aggregates the best prices for NFT borrowers. Privacy is also quickly becoming a thing on Solana with \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://elusiv.io/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Elusiv\"\n        })\n      }), \" offering private SPL token transfers and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/LightProtocol/status/1659606819872948247\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Light Protocol\"\n        })\n      }), \" working on enabling DeFi protocols to anonymize parts of their applications for better use case.\"]\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Did You Say Airdrop?\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Airdrops have played a considerable role in the success of protocols on Ethereum, with even L2s using them to bootstrap their communities and bring liquidity to their ecosystems. Earlier this year, BONK demonstrated that successful airdrops on Solana were possible. Many projects on Solana haven't launched a token yet, but several have recently hinted the potential for an airdrop for their users.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-airdrop-defi-projects-solana-token-project-marginfi-points-meteora-solblaze-bsol-cypher-lip-program-cypher-token-solana\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,nRg3Puyj0FNFoN2EK6iqMgYvbI.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/nRg3Puyj0FNFoN2EK6iqMgYvbI.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Cypher led the way by launching its \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/cypher_protocol/status/1672019758173114371?s=20\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Liquidity Incentive Program\"\n        })\n      }), \", which offers a fixed yield to those providing liquidity for Cypher traders. Tokens are locked for 6 months, and depositors are compensated in $CYPHER tokens. Some forms of gamification have been observed as well, with Marginfi \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/marginfi/status/1675863618666270722?s=20\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"introducing points\"\n        })\n      }), \" to bootstrap liquidity and engage traders with the platform. These points will eventually be used for rewards or perks, like eligibility for a token airdrop. LSTs are also trending on Solana, and as said above SolBlaze publicly announced that they are working on an airdrop for bSOL holders.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Whether or not Solana projects launch a token, their products are still worth exploring. In the world of startups, many projects will emerge, and not all will succeed. However, given the energy of the builders in the Solana ecosystem and solutions like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.cubik.so/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Cubik\"\n        })\n      }), \" that facilitate funding for early projects, it's clear that this is just the beginning of the new era of Solana DeFi.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is proud to support teams building their vision on Solana. Whether for programs or treasuries, most DeFi protocols mentioned in this article rely on Squads to split control over their on-chain assets with their team members and securely manage their operations with multisig security.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Squads\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is a crypto company operations platform that simplifies management of developer, creator, and treasury assets for teams building on Solana and SVM. Open source, formally verified, immutable, Squads enables teams to secure their on-chain assets in a multisig and jointly manage them.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Squads: \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-squads\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/what-is-squads\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Squads Protocol: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Code: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"If you were looking for an overview of the current Solana DeFi ecosystem in 2023, this is the article for you.\",\n  z73Iw8W3B: \"An Overview of the Solana DeFi Ecosystem (2023)\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/39PJX7pFFgz3PUq32AoIuPYBaRA.png\").href\n  }, \"jito-labs-solana-mev-jito-token-jitosol-jito-foundation-validator-client-squads-multisig\"),\n  F206_nB9l: addImageAlt(undefined, \"\"),\n  id: \"ieaBm4q47\",\n  LXPPb0mj_: \"jito-mev-solana-jitosol\",\n  MJoGirltk: \"2023-06-19T00:00:00.000Z\",\n  uA_wjTqpl: \"Solana Ecosystem\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"Many teams on Solana are using Squads for their operations, whether it's for treasury management, programs, validators, and more. This article introduces our new Project Spotlight series, where we explore some of the projects using Squads, how they operate, and how they secure their operations and protocol with the leading multisig solution on Solana. On top of discovering new projects, these articles will be helpful for teams looking to understand how they can benefit from using a multisig for their company.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This first article covers Jito, a major player on Solana that is behind Jito Labs and Jito Foundation (JitoSOL). We\u2019ll dive into the MEV infrastructure and products they built to make the Solana network more efficient while increasing rewards for validators and stakers. The second part of this article will unpack how Jito manages its treasury and programs with Squads for better security.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"What is Jito - MEV Infrastructure on Solana\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In order to understand what Jito does and its role on Solana, with first need to unravel what MEV is and the problems it caused on the network before Jito's solution entered the picture.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"MEV, short for Maximal Extractable Value, represents the profit opportunities that can be extracted by validators and participants of a blockchain network by ordering transactions. In \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://medium.com/chorus-one/analyzing-mev-instances-on-solana-c30d06953ed8\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Solana's model\"\n        })\n      }), \", validators take turns in a set pattern to create blocks (batches of processed transactions). The validator that's in charge at the moment decides the order of transactions in that block. Knowing which validator will be the leader at a given time is public information. MEV traders can exploit this by focusing on the leader validator and either attempt to work with him or forward as many transactions as possible to make sure they are placed in a favorable order in the block, helping them make a profit.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"For example, imagine there is a large order on a decentralized exchange (DEX) that is expected to decrease the price of an asset, causing a price imbalance between two exchanges. Due to the large order's execution on DEX A, the pool price has decreased to $19.70, while on DEX B the price hasn't changed and is still at $20. MEV searchers will detect this price imbalance and race to capture this arbitrage opportunity by buying low on DEX A and then selling high on DEX B. While arbitrage is a common type of MEV, it comes in \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://ethereum.org/en/developers/docs/mev/#mev-examples\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"many other forms\"\n        })\n      }), \" such as: NFT mints, liquidations, sandwiches, JIT liquidity, and more.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"what-is-mev-jito-labs-mev-example-arbitrage-mev-search-jitosol-bundles-jito-solana-squads-mev-transaction-maximum-extractable-value\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,DcxRyEI04JI7O8wUfQQrh0s2PSc.png?originalFilename=what-is-mev-jito-labs-mev-example-arbitrage-mev-search-jitosol-bundles-jito-solana-squads-mev-transaction-maximum-extractable-value.png\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/DcxRyEI04JI7O8wUfQQrh0s2PSc.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"MEV was for a long time a significant problem on Solana. Rather than working with validators, MEV searchers would spam the network with transactions to increase their chances of having them processed first. This was because the potential profits were much larger compared to the low fees of the chain, but also because there wasn't an easy way for MEV traders to collaborate with validators. Consequently, Solana validators were burdened with processing these MEV transactions, leading to network congestion and reducing usability for users. But that was until Jito.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Jito developed a solution to those MEV issues on Solana with their \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://medium.com/@Jito-Foundation/jito-solana-is-now-open-source-e1028c53fae1\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Jito-Solana validator client\"\n        })\n      }), \", a fork of the main Solana Labs client. This software package is what allows anyone to run a validator on the Solana blockchain to process transactions. With this second client, Jito provides an efficient way to deal with spamming from MEV searchers compared to the main validator client, thanks to three main features:\"]\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Bundles\"\n          }), \": MEV searchers can send a list of transactions that are executed sequentially, atomically, and all-or-nothing. Bundles streamline the submission of transactions by grouping them together, which helps in reducing network congestion and improving transaction processing efficiency;\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Block Engine\"\n          }), \": It connects MEV searchers and validators via an off-chain blockspace auction. The Jito Block Engine simulates every transaction combination and forwards the highest paying batch of Bundles to validators;\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Relayer\"\n          }), \": Essentially, it helps in filtering and verifying transactions on a separate server, thereby offloading some of the responsibilities that would otherwise fall on the validators. It then submits verified transactions to the Block Engine and validators.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n            className: \"trailing-break\"\n          })]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"jito-mev-client-solana-jito-labs-validator-client-firedancer-jito-bundles-relayer-jito-foundation-block-engine-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,QyqxL74Lcutaap027dR5VJmEGU.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/QyqxL74Lcutaap027dR5VJmEGU.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In practice, this is what it looks like for validators and traders to use the Jito client:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"MEV traders submit bids for sequences of transactions (bundles) they believe are profitable;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Jito\u2019s Block engine runs simulations to determine the combination of transactions that offers the highest value;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"The filtered bids are then sent to Jito-Solana validators to process those bundled transactions.\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Validators thus receive higher rewards than they usually would with the Solana Labs validator client. Not only this increases profit for validators, this also reduces spamming and consequently network congestion. MEV searchers can now send transactions with tips to encourage validators to process their transactions first, which is more efficient than spamming the network and hoping their transactions get processed. In the end, it makes spam bots ineffective since transactions are prioritized by the highest payer.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"The particularly unique feature about Jito is that a part of the fees from these traders\u2019 bids is distributed to \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.jito.network/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"JitoSOL\"\n        })\n      }), \", Jito\u2019s liquid staking solution. This enables Jito stakers to earn MEV rewards in addition to SOL staking rewards. It also means that anyone who stakes SOL with the Jito \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://solana.org/stake-pools\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"stake pool\"\n        })\n      }), \" can access a portion of those MEV opportunities, without its risks.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"jitosol-solana-mev-liquid-staking-token-solana-jito-foundation-mev-rewards-staking-rewards-jito-solana-validator-client-mev-searchers\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,WOaDAsfNXSu9VvfGOL8CQflVLpI.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/WOaDAsfNXSu9VvfGOL8CQflVLpI.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: 'Liquid staking allows users to stake tokens on a Proof-of-Stake blockchain, securing the network, while retaining liquidity. Instead of locking up tokens, users receive liquid staking tokens (LSTs) in return, which represent ownership of the staked assets and rewards. These LSTs can be traded, transferred, or used in DeFi applications. In our case, users can delegate their SOL tokens to the Jito stake pool and receive a \"proof\" of their deposit in the form of JitoSOL tokens. All those SOL tokens delegated accrue in value by accumulating MEV and staking rewards and can be redeemed for JitoSOL tokens at any time. '\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The Jito stake pool delegates the SOL tokens to the top validators running the Jito-Solana validator client, in order to receive MEV rewards (in addition to staking emissions/rewards).\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"How Jito Secures its Operations with Squads\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Jito uses the Squads multisig platform for various aspects of their company. As a quick reminder, Squads allows teams to create a \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-are-multisig-wallets\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"multisig\"\n        })\n      }), \" on Solana to secure their on-chain assets. A multisig, short for multi-signature, is governed by multiple owners/private keys and requires multiple signatures for moving or accessing the assets held within it. With a solution like Squads, teams can for instance secure their treasury, as well as manage their program upgrades.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"what-is-multisig-multisignature-wallet-solana-multisig-explained\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,lmaTdhVmvrkUn4wgyvAh5E8sERo.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/lmaTdhVmvrkUn4wgyvAh5E8sERo.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Jito's first use of Squads is to secure the stake pool manager of JitoSOL. Every stake pool on Solana has an authority key that manages critical parameters, such as the fee structure of the stake pool. Since it is crucial for overall control and configuration of JitoSOL, this key needs rigorous security measures - a multisig was the most appropriate solution to fulfill these security requirements. \"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Along with holding the Jito stake pool manager key within a multisig, Jito also uses Squads to manage upgrades to their programs. This means that any change that would require to update one of their programs held within their multisig, such as the Jito MEV tip program, needs multiple signatures from the stakeholders for the transaction upgrade to through. \"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Additionally, all revenue generated from the Jito stake pool is deposited in a Squads multisig for enhanced security and transparency. Treasury management is a great use case of multisigs, since in addition to collective management they bring on-chain transparency, which is not possible with traditional custodians or centralized exchanges. A treasury covers a wide range of assets such as native tokens, grants, funds raised, liquidity mining rewards, or in the case of Jito, revenue streams.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In short, using a solution like Squads is beneficial for Jito as it enables its contributors to:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Secure the stake pool manager in a safe place - even if one of the multisig key owners is compromised, it doesn\u2019t affect the stake pool manager;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Monitor all upgrades happening on their programs and prevent unauthorized actions;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"Have transparency and collective control over the revenue generated by the Jito stake pool.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n            className: \"trailing-break\"\n          })]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"jito-labs-multisig-jitosol-stake-pool-manager-jito-foundation-treasury-programs-squads-multisig-solana-jito-mev-bundles\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,EmVRoItYgHnMsCWmgavGbKGwWg.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/EmVRoItYgHnMsCWmgavGbKGwWg.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Since the Squads multisig program is \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/SquadsProtocol/status/1628776620243963904\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"immutable\"\n        })\n      }), \"/non-upgradeable, it ensures that only the owners of a multisig can access or move their assets. Moreover, Squads is open-source, allowing anyone to check how the code works. \"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Multisig is by far the most advanced way for crypto companies to manage their on-chain assets, as traditional solutions don\u2019t offer enough customization or aren\u2019t adapted to the needs of teams. For instance, managing program upgrades with a cold wallet means relying on one person/key for the entire security of the protocol, and it completely removes the possibility of any collective management. This approach does not work for teams, who need robust safeguards against unauthorized actions on their programs. The same applies to treasury management and any on-chain assets managed by a crypto business.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"By using Squads, Jito is among the teams on Solana that implements the highest measures possible to manage their project\u2019s assets with multisig security. Not only does this protect them from malicious attacks, it also adds a layer of confidence for the JitoSOL users and the ecosystem more broadly. As more crypto projects take the right measures to protect their protocols and its on-chain assets to the greatest extent possible, it will help create a safer ecosystem and foster more trust for both current users and newcomers.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Jito\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Jito Labs is a leading MEV infrastructure company building high-performance systems to scale Solana and maximize validator rewards. Jito's software enables Solana to run more efficiently and earn MEV rewards. Jito\u2019s liquid staking token, JitoSOL, is the first MEV-boosted LST on Solana. JitoSOL delivers high rewards through MEV with a decentralized validator set.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Jito Labs: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.jito.wtf/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://www.jito.wtf/\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Jito-Solana Client: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://jito-foundation.gitbook.io/mev/jito-solana/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://jito-foundation.gitbook.io/mev/jito-solana/\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"JitoSOL: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.jito.network/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://www.jito.network/\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Documentation: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://jito-foundation.gitbook.io/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://jito-foundation.gitbook.io/\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Squads\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is a crypto company operations platform that simplifies management of developer, creator, and treasury assets for teams building on Solana and SVM. Open source, formally verified, immutable, Squads enables teams to secure their on-chain assets in a multisig and jointly manage them.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"What is Squads: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-squads\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://squads.so/blog/what-is-squads\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Why use Multisigs: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-are-multisig-wallets\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://squads.so/blog/what-are-multisig-wallets\"\n        })\n      }), /*#__PURE__*/_jsx(\"br\", {}), \"Stake SOL into the Jito stake pool on Squads: \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.squads.so/squads-v3-docs/integrations/staking/jitosol\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"https://docs.squads.so/squads-v3-docs/integrations/staking/jitosol\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"This article highlights what Jito is and how it uses Squads for securing its operations. Jito has built MEV infrastructure and products that make the Solana network more efficient while increasing rewards for validators and stakers. \",\n  z73Iw8W3B: \"Project Spotlight: Jito - Efficient MEV for Solana\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/ChctJ6Au9yTycJb3MJuwRMKpV60.png\").href\n  }, \"solana-multisig-wallet-best-solana-wallet-squads-individual-multi-signature-spl-wallet-how-to-create-a-multisig-on-solana-squads\"),\n  F206_nB9l: addImageAlt(undefined, \"\"),\n  id: \"MhtpFlT2m\",\n  LXPPb0mj_: \"multisig-guide-for-individuals\",\n  MJoGirltk: \"2023-05-29T00:00:00.000Z\",\n  uA_wjTqpl: \"Educational\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"While multisigs are well suited for teams or organizations, they also serve as a great alternative to hardware wallets (e.g. Keystone, Ledger) for individuals. Certainly more advanced, they offer enhanced security features thanks to their multi-signature functionality, making them an optimal choice for safeguarding important amounts of crypto assets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For individuals looking to hold their assets on Solana, a multisig like Squads is likely your ideal solution. In this guide, we\u2019ll go over the concept of multisig, explore the various setups adapted for individuals, and cover the solution that Squads offers to store Solana (SPL) assets such as tokens and NFTs.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Multisig: A Secure Way to Store your Assets\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: 'Multisigs are gradually gaining traction as viable alternatives to traditional hot and cold wallet solutions due to their advanced features for securing assets. Multisig, short for \"multi-signature\", implies that every transaction requires multiple signatures for execution. This contrasts with traditional self-custody solutions where assets become vulnerable the moment the seed phrase is known.'\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Conversely, a multisig doesn't have a seed phrase/private key. It is instead governed by multiple private keys, typically referred to as owners. During its creation, owners and a signature threshold are set. This threshold dictates how many owners need to sign a transaction for it to be executed.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"what-is-multisig-multisignature-wallet-solana-multisig-explained-multisig-individual-solana\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,45yPGpeaW3AOxNCFCsuQBasdLI.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/45yPGpeaW3AOxNCFCsuQBasdLI.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"If open-source and immutable (non-upgradeable), multisigs are a superior alternative to hardware wallets for securing crypto assets. Relying on a hardware wallet means entrusting the entire security of your crypto net worth to a single entity/brand. If it gets compromised, or suffers an attack with a malicious upgrade, it can result in irreversible loss. In contrast, immutable and open-source multisig solutions ensure two things:\"\n    }), /*#__PURE__*/_jsxs(\"ol\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"The upgrade authority of the multisig program has been burned, guaranteeing that it cannot be modified by anyone to move or access your funds;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"You can understand how the multisig program works and verify it operates as intended.\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"While sometimes complex, multisigs thus minimize the security risks associated with traditional hot and cold wallet solutions.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"What Setup For Your Multisig\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"We\u2019ve seen that during the creation of a multisig, several owners (private keys) are added, and a threshold is set. But what's an ideal setup for individuals? The truth is, there isn't a definitive answer as it heavily depends on your personal needs. However, there are two setups that are usually recommended and well suited for individuals.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"For a balance of security and convenience, a 2-of-3 multisig could be your best choice. In this setup, you'll only need two wallets to sign a transaction every time you move your funds. On the other hand, for those seeking ultimate security, a 3-of-5 setup would be more suitable.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"how-to-create-solana-multisig-what-setup-multisig-owners-keys-squads-multi-signature-wallet-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,ALRlC2etIoKcWTaq3fUlWiarjDs.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/ALRlC2etIoKcWTaq3fUlWiarjDs.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Keep in mind, the more keys required to transact, the harder it will be to move your funds. If your primary aim is asset protection and not frequent trading, a 3-of-5 setup is perfect. Conversely, if you plan to transact daily/weekly, a 2-of-3 setup is more convenient.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"When it comes to setting up a 2-of-3 multisig, there are several possibilities. First, you could add all the private keys with hardware wallets from several brands such as Keystone, Ledger, or OneKey. Beyond having three keys, it\u2019s also important to use different brands in case one encounters an issue. This setup, composed only of cold wallets, means that every time you need to sign a transaction, it will require two of the keys. While this might seem fine at first, it actually reduces the flexibility of a 2-of-3 setup.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Hence, it\u2019s more optimal to include a hot wallet in your multisig (like Phantom or Backpack) to simplify its management while still securely storing the assets held within your multisig. In this case, you keep two keys (from one cold and one hot wallet) for your daily or weekly operations, while the additional cold wallet is in a secure place in case one of the keys is compromised and needs to be removed. Using two hot wallets also works if they are stored on two separate devices. For example, you could use the Backpack extension on desktop and the Phantom app on mobile, while the hardware wallet (e.g. Ledger) is stored in a bank safe.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"best-multisig-for-individual-setup-how-to-create-multisig-wallet-solana-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,3gyfFj9sdI3QRSpTeMZIpssRwA.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/3gyfFj9sdI3QRSpTeMZIpssRwA.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For securing assets that you don't intend to use frequently, the 3-of-5 setup is another option you can consider. Once again, if all the keys are tied to hardware wallets, the process becomes exceedingly complex. Hence, you could store two keys as cold wallets in different locations, for example, in a bank safe and with a trusted friend. The remaining three could then be a combination of two cold and one hot wallet, where the hot one resides in your computer (e.g. Backpack extension) and the two cold ones are hardware wallets from different vendors. This setup makes it considerably harder for a malicious actor to access your funds, as he would have to get access at least three of your keys to execute any transaction.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"It's important to note that keys aren't needed to deposit assets to your multisig, they're only required to move them. This means that you can send crypto from another address, say every month, and only use the keys when you need to move your funds.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Squads: Your Solana Multisig Solution\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Squads has developed a platform for creating multisig and managing on-chain assets on Solana. The Squads multisig program is open-source and immutable (non-upgradeable), which means that no one besides you can access or move your funds. Additionally, Squads has been multiple times audited by OtterSec and Neodyme.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-multisig-wallet-squads-manage-asset-best-solana-wallet-most-secure-open-source-wallet-solana-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,VZS9nUkdkfQiVjxrcg6RH4Sok0.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/VZS9nUkdkfQiVjxrcg6RH4Sok0.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"With Squads, you can securely store and manage your Solana (SPL) tokens. Swap assets with Jupiter, add your favorite contacts/addresses to your Squad, access staking solutions such as Jito, or explore DeFi yield opportunities within our app section. It's also perfectly adapted for NFT management, as it allows batch sending, listings on Tensor, or rentals with Cardinal all without leaving the multisig.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In summary, a multisig offers a viable and more secure alternative to traditional self-custody solutions for individual users. While more advanced, this is outweighed by enhanced security measures for managing significant amounts of funds on-chain. Since multisigs operate through a set number of private keys, requiring multiple signatures for transaction execution, they significantly reduce the risk of asset compromise that comes with the loss or theft of a single private key.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Switching to a multisigs may involve a learning curve, but the benefits it provides in terms of asset security make the transition worth considering for many individuals. Whether you opt for a 2-of-3 or a 3-of-5 setup largely depends on your personal needs and how frequently you plan to transact with your assets. If you're looking for the most robust solution to secure your funds, wait no longer and spin up your multisig today.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Get Started:\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Squads platform:\\xa0\"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://v3.squads.so/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://v3.squads.so/\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Read the documentation:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.squads.so/squads-v3-docs/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://docs.squads.so/squads-v3-docs/\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Review the code:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Join the community:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://discord.com/invite/tYpY9UfRFx\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://discord.com/invite/tYpY9UfRFx\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"Everything you need to know about multisig as an individual. This guide covers the concept of multisig, explores the various possible setups, and delves into the solution that Squads offers for storing Solana (SPL) assets such as tokens and NFTs.\",\n  z73Iw8W3B: \"How to Use Multisig: A Guide for Individuals\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/U8UTf8cORN4ve0phO11BY6aGJk.png\").href\n  }, \"solana-validator-withdraw-key-stake-pool-manager-withdrawer-keypair-management-validator-multisig-vote-account-stake-account-hardware-wallets-for-validators-multisig\"),\n  F206_nB9l: addImageAlt(undefined, \"\"),\n  id: \"hXFm26dvD\",\n  LXPPb0mj_: \"solana-validator-management-multisig\",\n  MJoGirltk: \"2023-05-22T00:00:00.000Z\",\n  uA_wjTqpl: \"Educational\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"Multisig solutions have finally started to be considered not only for treasury management, as they are also becoming a standard for managing program authorities of protocols. But another significant use case of multisig is validator management. Whether for individual validators or stake pool managers, a multi-signature wallet is a great alternative to traditional self-custody solutions like hardware wallets to secure their operations.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This article aims to introduce management of Solana validators and stake pools with multisig and its benefits compared to current solutions. Although it is often more suitable for teams and organizations, we'll also cover how validators managed by a single operator can use Squads in their setup.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Multisig and Individual Validator Management\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Multisig, short for multi-signature, is a self-custody solution using a mechanism where multiple signatures are required to execute a transaction. Upon creation, several owners (private keys) are added, and a signature threshold is set. The multisig can then be used to store and manage any on-chain asset that a regular key can control, such as treasury assets or authority keys of programs, tokens, or validators. Any action involving the assets held within the multisig requires approval from the owners and must meet the set signature threshold.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-multisig-solana-wallet-validator-withdraw-key-management-solana-immutable-multisig-how-it-works\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,dMyb3W22ShkG8rvq5tQawdl3WMw.webp?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/dMyb3W22ShkG8rvq5tQawdl3WMw.webp\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This setup is perfectly suited for teams and organizations that need to distribute control over on-chain assets among multiple stakeholders. Multisig ensures that no single point of failure exists - even if one person or private key gets compromised, the assets remain secure. This is because several keys are added as owners to the multisig. Thus, it becomes more challenging for unauthorized actions to occur as each owner has visibility over every transaction and must approve them.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"On Solana, individual validators primarily manage two authority keys: the vote authority, and the withdraw authority. Authority keys grant total control over on-chain assets and can update them. Programs, tokens, validators, and more have authority keys to manage specific types of operations. While the validator vote authority is used solely for voting, the withdraw authority serves as a sort of master authority key and requires the highest security measures to prevent undesired situations. It has the power to change the validator identity as well as the authorized voter, adjust the commission rate, or withdraw rewards. The core business of a validator depends on it - if something happens to this key, it could severely damage the validator's operations.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-validator-withdraw-authority-key-vote-account-vote-authority-withdrawer-keypair-validator-management-multisig\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,Y37BimL2HvVqPPdSPFiNykUX5X8.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/Y37BimL2HvVqPPdSPFiNykUX5X8.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Using a simple hot/cold wallet solution or a CLI wallet to manage authority keys is potentially risky for teams and organizations, primarily because:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"One person holds all decision-making power;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"These wallet solutions can be easily compromised.\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In such scenarios, a multisig is likely the best option. By delegating the withdraw authority key to it, a validator can split the ownership among various owners/private keys, each having a decision-making power to execute transactions involving the validator key. This can include actions like changing the commission rate or rotating the vote account authority keys. Additionally, it eliminates a single point of failure - even if one key of the multisig is compromised, it cannot use or affect the withdraw authority.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Squads has built a platform that facilitates the creation of a multisig and management of various types of on-chain assets, including validator withdraw authorities. Operators can transfer their validator key using their CLI, and then manage the commission rate and withdraw rewards directly from the interface. Additionally, the Squads multisig program is open-source and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/SquadsProtocol/status/1628776620243963904\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"immutable\"\n        })\n      }), \" (non-upgradeable), which means that no one besides you can access or move your withdraw authority key.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-multisig-wallet-solana-validator-withdraw-authority-key-multi-signature-immutable-non-upgreadable-open-source-audited-multisig\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,YyyiXNnYSnHav1RJCAeSKG0rQ.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/YyyiXNnYSnHav1RJCAeSKG0rQ.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"On top of this, this setup streamlines the operation of validators. Since the key is held within the multisig, the validator operators can easily withdraw the rewards to their Squad and manage them collectively (e.g. to cover expenses such as salaries). Simply put, the Squads multi-signature functionality provides the same benefits for managing treasury assets, such as validator revenues, as it does for the withdraw authority. This makes it a secure and efficient management solution for all business aspects of a validator. \"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Stake Pool Management with Multisig\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Solana stake pools, another type of staking ecosystem stakeholder, can also greatly benefit from a multisig setup. These pools are a collection of one or more validator nodes that enable delegators to stake to multiple validators at once, often promoting better decentralization and mitigating the risks associated with unexpected validator node downtime. Stake pool managers on Solana, such as Jito, Marinade, Cogent, Laine, SolBlaze, or Lido, provide a liquid stake pool token in exchange for staking to their respective stake pools (e.g. for every SOL staked to the Jito stake pool, delegators receive jitoSOL). This makes staking positions of delegators liquid and allows them to use it across Solana DeFi on protocols like Kamino, Marginfi, Meteora, and more.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-stake-pools-jito-marinade-cogent-solblaze-lido-laine-sol-stake-pool-manager-solana-multisig-wallet\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,9d4AbdLnYmUEFVJGdIUZpuufdU.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/9d4AbdLnYmUEFVJGdIUZpuufdU.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Like individual validators, stake pool managers also have authority keys to control:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Staker\"\n          }), \": The Staker key has the authority to delegate or undelegate the stakes of the stake pool. In essence, the Staker is responsible for allocating the pool's resources to different validators. This is an operational role that needs to be active regularly.\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Manager\"\n          }), \": The Manager key has the authority to modify the stake pool's parameters, such as the fee structure. This key is intended for administrative use, so it isn't frequently used. However, it is crucial for overall control and configuration of the stake pool.\"]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Given that the Staker key is regularly used for routine operations and its compromise doesn't immediately jeopardize the stake pool's health, it is often managed with a simpler setup like a CLI wallet. On the other hand, the Manager key, which has the authority to make significant changes to the stake pool's parameters, demands more rigorous security measures - a multisig is more appropriate to fulfill these security requirements.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"With Squads, stake pool operators can spin up a multisig and delegate their stake pool manager key to it via custom instructions. Similar to the withdraw authority for individual validators, this setup provides all the benefits of collective management and prevention against unauthorized actions or compromised keys.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Setup for Single Operators\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Even if you are a single person managing a validator, you can enhance the security of your withdraw authority key by creating a multisig setup involving several wallets from different solutions. These could include both cold wallets (like Ledger and OneKey) and hot wallets (such as Backpack and Phantom). In an event where one wallet solution gets compromised, your validator key would remain unaffected. This is due to:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"The multisig holding the withdraw authority key;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"The requirement of approvals from multiple keys to transfer the withdraw authority, change the commission, or withdraw rewards - a compromised private key cannot initiate these changes independently;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"The ability to remove the compromised key with the other two hot/cold wallets and replace it with a new and fresh private key.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n            className: \"trailing-break\"\n          })]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"individual-validator-single-operator-hardware-wallet-multisig-setup-withdraw-authority-key-validator-solana-multisig\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,eVY1kf6a17QoqP8QIpv6N7h2XsA.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/eVY1kf6a17QoqP8QIpv6N7h2XsA.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This approach is certainly more complex, requiring the use of two keys every time the withdraw authority is used or transferred. Nevertheless, it offers the highest level of security for managing a validator\u2019s key.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Secure Validator Management for a Robust Network\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Just as secure program management is crucial for an antifragile Solana DeFi ecosystem, secure validator management is essential for the Solana network. If some validators were to have their keys compromised, impacting their operations, it could shatter users' trust and discourage them from staking. This scenario would be detrimental to both Solana and its validators.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"With most validator teams and organizations operating remotely, it makes it practically impossible to implement secure measures on their operations without splitting the control of their valuable assets, such as the withdraw authority key, among multiple stakeholders. Relying on one person/key leaves room for many unknowns and facilitates malicious attacks. Opting for a multisig solution like Squads is the best way to mitigate the risks associated with traditional self-custody solutions like hardware wallets and move towards a more decentralized approach.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"If you're part of a team or an organization running a Solana validator and seeking enhanced security measures for your operations, feel free to reach out to us \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://t.me/SquadsProtocol_bot\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"here\"\n        })\n      }), \".\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Acknowledgments: Thanks to Michael (\"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://laine.one/solana\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"Laine\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \" / \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://stakewiz.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"Stakewiz.com\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \") for feedback on earlier drafts of this post.\"\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Squads\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is a crypto company operations platform that simplifies management of developer, creator, and treasury assets for teams building on Solana and SVM. Open source, formally verified, immutable, Squads enables teams to secure their on-chain assets in a multisig and jointly manage them.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Squads: \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-squads\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/what-is-squads\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"What are multisig wallets: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-are-multisig-wallets\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/what-are-multisig-wallets\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Squads Protocol: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Code: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"Learn how to manage a Solana validator with multisig and understand its benefits compared to traditional self-custody solutions like Ledger. Squads allows for secure management of validator's withdraw authority and stake pool manager keys using multi-signature functionality.\",\n  z73Iw8W3B: \"Solana Validator Management with Multisig\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/YeQMBSozonTrL7s0M1gHdvMHtCw.png\").href\n  }, \"how-to-create-mint-solana-spl-token-burn-mint-authority-solana-multisig-squads-spl-token-management\"),\n  F206_nB9l: addImageAlt(undefined, \"\"),\n  id: \"zcQBgbBLm\",\n  LXPPb0mj_: \"create-manage-solana-spl-token\",\n  MJoGirltk: \"2023-05-16T00:00:00.000Z\",\n  uA_wjTqpl: \"Educational\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"This short article outlines how to create a Solana SPL token in just two steps and manage it with Squads - the Solana platform built for teams and organizations with multi-signature (multisig) functionality at its core.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"With an easy-to-use interface and costs as low as 0.02 SOL, Squads is the most suited solution for token management, with no developer skills required to mint an SPL token, secure the authority key, or manage its supply.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Step 1: Set up your Squad\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-multisig-wallet-squads-create-solana-multisig-best-wallet-spl-tokens-multi-signature\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,khENcoajBkclgDHScKn72neas.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/khENcoajBkclgDHScKn72neas.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"The first step is to set up a \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-are-multisig-wallets\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"multisig\"\n        })\n      }), \" on Squads that will be used to create and then manage the token.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"From \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://v3.squads.so/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"v3.squads.so\"\n        })\n      }), ' connect a Solana wallet to the platform and click \"Create Squad\". Enter the Squad details, such as name, profile picture, and description. Add owners to your Squad using their public keys (wallet addresses) and set a confirmation threshold, which is the number of approvals needed from owners for transactions to be executed. You can add an unlimited number of initial owners, but we recommend keeping it below 20 for the optimal experience. Review your Squad\\'s details and confirm.']\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The deployment cost ranges between 0.0025 - 0.0045 SOL, depending on the number of initial owners. This fee includes the Solana rent fee and a 0.001 SOL deposit into your Squad. Once deployed, you'll be directed to your Squad where you can start the process to mint your Solana token.\"\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Why Squads for Token Management\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"token-management-spl-solana-tokens-multisig-dao-mint-burn-token-authority-solana-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,bGxyZ2K3S9iZt8oppXSKpEMw.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/bGxyZ2K3S9iZt8oppXSKpEMw.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is an ideal choice for token management due to its multisig functionality, which enables collective management for teams and organizations and enhances the overall security of managing a Solana token. By utilizing multi-signature, the authority over the token is distributed among a group of trusted individuals, ensuring that no single point of failure exists, and minimizing the risk of lost or compromised keys. This decentralized approach not only provides a transparent method for managing tokens but also allows for greater confidence among the project stakeholders: every action that involves the token, such as mint and burn of the supply, requires approval from owners of the Squad rather than from a single individual as it would be the case with a hot/cold wallet.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Moreover, Squads is immutable. This means that the upgrade authority of the Squads program has been burned, ensuring that no one can modify it to move or access your funds.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Step 2: Create a New SPL Token from your Squads Multisig\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-spl-token-mint-create-solana-token-generate-solana-spl-contract-address-transfer-token-authority-multisig-wallet\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,NcmXJa2fHqBXeXFAkTOxP6FK4.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/NcmXJa2fHqBXeXFAkTOxP6FK4.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"To create a token from a Squad, follow these steps:\"\n    }), /*#__PURE__*/_jsxs(\"ol\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: 'Navigate to the \"Token Manager\" tab and click on the \"+Add Token\" button. Select the \"Create Token\" option in the pop-up.'\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Fill in the required information in the pop-up window, including token name, symbol, and description (optional).\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: 'Click \"Next,\" enter token decimals and transaction description (optional), then click the \"Create\" button to initiate the transaction.'\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: 'Once the transaction is executed, your newly created token will appear in the \"Token Manager\" tab.'\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"And that's it. From this point forward, the token authority is secured within your multisig. Any changes to the supply or description require the consent of the Squad's owners.\"\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"What are SPL tokens\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"SPL tokens are a type of digital asset on the Solana blockchain. SPL stands for Solana Program Library, which is a collection of programs designed to support the creation and management of tokens on Solana. SPL tokens are similar to ERC-20 tokens on the Ethereum blockchain, as they follow a specific standard for creating, transferring, and managing custom tokens.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Once created, these tokens can be used within dApps, traded on DEXs, or used for other purposes within the Solana ecosystem. Here are a few examples of SPL tokens: BONK, MNDE, HBB, RLB, SAMO, USDH, DUST, AURY, FISHY, ORCA.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Token Supply Management: Mint and Burn\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-spl-token-burn-management-create-mint-solana-token-multisig\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,HyZud7IJS8vl7Xt9jjwhyCEphHw.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/HyZud7IJS8vl7Xt9jjwhyCEphHw.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: 'To mint tokens from a Squad, click the \"Token Manager\" tab, find the token you want to mint, and click on the \"Mint\" button. Specify the amount of tokens you want to mint, add a description (optional), and launch the transaction. After the transaction has been executed, your token will appear in your Squad vault. '\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: 'To burn token supply from a Squad, navigate to the \"Token Manager\" tab, locate the token whose supply you want to burn, and click on the \"Burn\" button. In the pop-up, fill in the burn amount, add the transaction description (optional), and click on the \"Burn token\" button to launch a transaction. The indicated token amount will be burned after the transaction has reached the confirmation threshold and been executed.'\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"How to Transfer an Existing SPL Token Authority to Squads\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-spl-token-mint-authority-secure-no-code-transfer-spl-authority-multisig\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,TATrXNGNtyr1ZV45mrCkKEFuZ0.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/TATrXNGNtyr1ZV45mrCkKEFuZ0.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: 'Projects can transfer their token authority to a Squads multisig if they already have an existing token at any time. To transfer the authority of an existing token to your multisig, navigate to the \"Token Manager\" tab, click the \"+Add Token\" button, and select the \"Transfer token authority to your Squad\" option. Insert the current token authority address, copy and paste the code into your CLI, which should be run by the current authority, and click \"Change authority\". Your token authority is now securely stored in your Squad.'\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Squads\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is a crypto company operations platform that simplifies management of developer, creator, and treasury assets for teams building on Solana and SVM. Open source, formally verified, immutable, Squads enables teams to secure their on-chain assets in a multisig and jointly manage them.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Squads: \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-squads\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/what-is-squads\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Squads Protocol: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Code: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"Learn how to mint a Solana SPL token in just two steps using Squads' user-friendly interface, with no developer skills required and costs as low as 0.02 SOL. Manage token minting and burning with multi-signature (multisig) security.\",\n  z73Iw8W3B: \"Create and Manage Solana (SPL) Tokens with Squads\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/zTpGAX2LApvnibzmQ2P3TGhYHKk.png\").href\n  }, \"what-is-a-multisig-wallet-how-do-multi-signature-wallets-work-best-solana-wallet-multisig-solana-multi-signature-wallet-squads-create-multisig-wallet-ledger-multisig\"),\n  F206_nB9l: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/ZrBXf7CkJXUc7dbYguljvRSHo.png\").href,\n    srcSet: `${new URL(\"https://framerusercontent.com/images/ZrBXf7CkJXUc7dbYguljvRSHo.png?scale-down-to=512\").href} 512w, ${new URL(\"https://framerusercontent.com/images/ZrBXf7CkJXUc7dbYguljvRSHo.png\").href} 1000w`\n  }, \"\"),\n  id: \"gDuDGM9ew\",\n  LXPPb0mj_: \"what-are-multisig-wallets\",\n  MJoGirltk: \"2023-04-30T00:00:00.000Z\",\n  uA_wjTqpl: \"Educational\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"Self-custody is a fundamental aspect enabled by blockchain technology, allowing anyone to truly own their assets. Although traditional self-custody solutions offer numerous benefits, they often lack the advanced security features required by teams or high net worth individuals. In this regard, multisigs often serve as a well-suited solution for improved protection of on-chain assets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For those looking to learn about what a multisig wallet is and how it works, this article aims to provide a simple explanation, highlighting its use cases for various profiles, as well as introducing the leading solution available for use on Solana - Squads.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Multisig (Multi-signature) Wallet Explained\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"what-is-multisig-multisignature-wallet-solana-multisig-explained-threshold-multisig-owner\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,lmaTdhVmvrkUn4wgyvAh5E8sERo.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/lmaTdhVmvrkUn4wgyvAh5E8sERo.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Multisig, short for multi-signature, is a mechanism used to secure the execution of transactions on a blockchain by requiring multiple signatures for a transaction to be performed.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: 'Multisig solutions are often referred to as multisig \"wallets\" since most of them provide an interface to create and manage a multisig. A common analogy for a multisig is a bank safe. One can open a safe in a bank to store valuable items and designate signatories who can jointly access and manage the stored items. Similarly, owners (signatories) can be assigned to a multisig and granted authorization to access the on-chain assets held within. Each owner represents a private key, which is what traditional wallets like Phantom or Solflare allow you to create.'\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"On Solana, a multisig uses a PDA (\", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.alchemy.com/overviews/program-derived-address\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Program Derived Address\"\n        })\n      }), \") to function. A PDA is a unique address without a private key nor seed phrase. It is generated by a Solana program, and can be given authority over an account. This allows the multisig to manage anything a regular private key can manage. During the creation of the multisig, two parameters are specified:\"]\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Owners - the set of private keys that sign transactions for the multisig;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Threshold - the number of signers required to execute a transaction.\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For a long time, multisigs were only used to secure treasury assets collectively. While they are effectively great for this purpose, multisigs can, in fact, be used for any on-chain assets. This includes treasury, but also programs, NFT collections, tokens, validators.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Why Use Multisig - Best Use Cases\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"why-multisig-vs-ledger-vs-cex-vs-hot-wallet-vs-cold-wallet-multisignature-wallet-multisig-difference-comparison-multi-signature-wallet-with-traditional-wallet\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,KJnirSY8OKJ6Cha5cuCBeht8tLY.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/KJnirSY8OKJ6Cha5cuCBeht8tLY.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Whether for DeFi protocols, NFT collections, or even institutions, traditional self-custody solutions are not suited for the needs of teams and organizations:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"CEXs are unreliable, since everything happens off-chain;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"hot wallets pose risks, as they can easily be compromised;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"cold wallets lack collective management.\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Conversely, a multisig removes any single point of failure, which means it's impossible for one individual or one cold wallet to perform unauthorized actions. Every action (e.g., transfer of funds, program upgrade deployment) performed within the multisig has to be approved by all the owners. Securing all on-chain assets with multi-signature functionality enables better management with core team members, traceability of all transactions, and reduced risk of lost or compromised keys. All these factors can also strengthen user trust in a protocol.\"\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"For Protocols\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"multisig-for-protocols-defi-project-multi-signature-wallet-treasury-program-management-upgrade-authority-funds-multisig-self-custody-on-chain-assets\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,l77r8lWE8BA09bWSyq2lE2izlwo.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/l77r8lWE8BA09bWSyq2lE2izlwo.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"The fuel of a protocol is its \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"treasury,\"\n      }), \" and transparency on its status and actions is crucial to allow for the smooth operation of the project. A multisig is an excellent solution for collective management of a treasury with a team, as it ensures that only designated core members have access to it. Additionally, every transaction moving funds has to be approved by the owners and can be monitored to avoid malicious transfers. Held within a multisig, the treasury is always visible on-chain.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"strong\", {\n        children: \"Programs\"\n      }), \" are also among the most valuable assets of a protocol, as their management affects user funds and trust. Like the treasury, it's essential to ensure that all core team members agree before any changes are made. Entrusting all program control to a single individual/key is highly risky and can easily lead to unwanted situations. Moreover, compromised programs can severely damage a protocol's reputation, and trust is hard to earn in the crypto space - this could lead to users migrating to competitors.\"]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"For NFT Collections\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"multisig-nft-collections-revenue-royalties-solana-nft-multi-signature-wallet-treasury-nfts-key-authority-collection-nft-management-solana-multisig-use-cases\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,PHhRwjUhLQhKHmoIp25EOYML0.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/PHhRwjUhLQhKHmoIp25EOYML0.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Whether it's the SOL collected from a mint or royalties, NFT projects can greatly benefit from using a multisig with their team to manage their \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"revenue\"\n      }), \", funds, or high-value NFTs held as \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"treasury\"\n      }), \" assets. It can offer several benefits including better management of the revenue generated by the project to pay employees and contractors or to invest in the growth of the collection.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"In contrast to protocols where programs are the most valuable assets, NFT teams' most valuable assets is the \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"authority key of their NFT collection\"\n      }), \", since it can modify the metadata (e.g. supply, name, images). Transferring the collection authority key to a multisig enables collective management instead of relying on a cold/hot wallet, which is more susceptible to unauthorized actions.\"]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"For Emerging Projects (e.g. Grizzlython)\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"multisig-emerging-project-solana-grizzlython-grant-strategic-round-programs-token-management-launch-airdrop-multi-signature-multisig-wallet-solana\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,NF93cxDjszSPHj6L7HLGPe4uPo.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/NF93cxDjszSPHj6L7HLGPe4uPo.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Emerging projects have an advantage: they are building their foundations and can easily start managing their business securely from the start. The first thing to do is securing the \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"grant/strategic round\"\n      }), \" raised to ensure that they can safely develop their project. After that, delegating their \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"program upgrade authorities\"\n      }), \" to a multisig to prevent unauthorized changes once the project is live - which can also help in earning the trust of early adopters to use the project.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"If the project later decides to create a token, it\u2019s also worth exploring the use of a multisig to manage the mint/burn of the token supply. Just like treasury or programs, \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"token management\"\n      }), \" should be collective and secure to avoid any unwanted situation for the token\u2019s holders.\"]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"For Validators\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"multisig-validators-solana-validator-node-authorized-withdrawer-commissions-rewards-validator-revenue-liquid-staked-sol-staking-multisig-validator-multi-signature-wallet\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,5LuYtEGjkeYE4CAjxoQCaCYTz4.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/5LuYtEGjkeYE4CAjxoQCaCYTz4.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Validators should also consider using a multisig to manage their \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.solana.com/running-validator/vote-accounts\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"authorized withdrawer\"\n        })\n      }), \" keypair. Stakers place their trust in validators to manage their SOL responsibly, and any unauthorized access to the authority for managing rewards or the commission could severely damage the validator's reputation. If a malicious actor changes the commission rate or withdraws rewards without consent, it could ruin confidence in the validator and potentially kill its business. Employing a multisig for the withdraw authority adds a layer of security and helps protect the interests of both the validator and its stakers.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"For validator teams or organizations, using a multisig for the \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"withdraw authority\"\n      }), \" also allows for shared management. This can help distribute decision-making power and ensure that actions like withdrawing rewards or updating the validator identity are agreed upon by all the parties.\"]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"For Individuals or VCs\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"multisig-individual-vc-solana-multi-signature-wallet-vs-phantom-vs-traditional-wallet-best-solana-multisig-best-solana-wallet-multisig\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,TT4LOVfxUWzycTgacEBr9B8x4qg.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/TT4LOVfxUWzycTgacEBr9B8x4qg.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Lastly, although multisigs are frequently used by teams, they can also be beneficial for individuals, such as high net worth investors, or VCs who require a more advanced self-custody solution than cold wallets. The setup for individuals is somehow different, as all multisig owners are the same person. A practical setup without many UX compromises is a multisig with three keys - two Ledgers and one hot wallet (e.g., Phantom) - with a 2/3 threshold. This configuration allows for using one Ledger and the hot wallet for daily operations, while keeping the second Ledger in a secure location in case one key is lost or compromised. The third key could also belong to a trusted friend or family member.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"While achieving immutability should be the ultimate goal for most protocols, multisigs serve as an excellent interim solution. Multisigs can accommodate a variety of profiles and are often better suited than hot or cold wallet solutions for managing valuable on-chain assets with complex management requirements. On Solana, Squads leads the way with a multisig solution tailored for teams.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Squads: A Solana Multisig Platform for Teams\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-solana-multisig-platform-multi-signature-wallet-manage-treasury-programs-validators-best-crypto-wallet-solana\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,Omr259qsMURR8ccpg9kWCQ5Ik8c.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/Omr259qsMURR8ccpg9kWCQ5Ik8c.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is a platform with multisig functionality at its core for managing treasury, programs, validators, and any type of asset on Solana. Easily transfer your authority keys to Squads, deploy new program upgrades via multisig, or simply deposit any SPL tokens such as USDC or SOL to collectively manage funds with your team.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Launched 2 years ago, Squads is open-source, formally verified, and immutable. Used by the biggest teams on Solana, the platform has been built to meet every project\u2019s needs.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-treasury-developer-assets-multisig-solana-squads-protocol-squads-app\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,n4Y6TQYEeT6OkOnzwdw7kjtgX2M.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/n4Y6TQYEeT6OkOnzwdw7kjtgX2M.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Multisigs have evolved into more advanced solutions, making blockchain and decentralized finance a more secure place for building projects and managing funds. They can fit a variety of profiles and be used for many purposes. While it may not be the norm yet, at Squads we strongly believe that teams not using multisig for managing their on-chain assets will soon be a relic of the past, as multisigs offer superior security and flexibility compared to centralized exchanges or hot/cold wallets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Get Started:\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Squads platform:\\xa0\"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://v3.squads.so/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://v3.squads.so/\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Read the documentation:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.squads.so/squads-v3-docs/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://docs.squads.so/squads-v3-docs/\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Review the code:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Join the community:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://discord.com/invite/tYpY9UfRFx\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://discord.com/invite/tYpY9UfRFx\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"Learn what a multisig (multi-signature) wallet is and how it works. This article aims to provide a simple explanation, highlighting its use cases for various profiles, as well as introducing the leading solution available for use on Solana.\",\n  z73Iw8W3B: \"How Do Multisig (Multi-signature) Wallets Work\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/ctTEgbXLDin7A7Ew6CEpVy7LRd4.png\").href\n  }, \"what-is-svm-solana-svm-virtual-machine-sealevel-solana-vm-svm-vs-evm-ethereum-virtual-machine-solana-parallel-processing\"),\n  F206_nB9l: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/GTrzMUr578HQeB4wCMAAsTZzjXg.png\").href,\n    srcSet: `${new URL(\"https://framerusercontent.com/images/GTrzMUr578HQeB4wCMAAsTZzjXg.png?scale-down-to=512\").href} 512w, ${new URL(\"https://framerusercontent.com/images/GTrzMUr578HQeB4wCMAAsTZzjXg.png\").href} 1000w`\n  }, \"\"),\n  id: \"sPMqp_rIu\",\n  LXPPb0mj_: \"solana-svm-sealevel-virtual-machine\",\n  MJoGirltk: \"2023-04-18T00:00:00.000Z\",\n  uA_wjTqpl: \"Solana Ecosystem\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"Solana has gained significant attention as a next-generation, highly scalable blockchain, largely due to its exceptional performance capabilities that can handle thousands of transactions per second with almost no fees. One of the key elements of Solana's advanced technology is its execution environment, SVM, which includes the Sealevel parallelization engine.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This article covers the Solana Virtual Machine (SVM) and how this innovative infrastructure enables the Solana blockchain to deliver enhanced performances compared to traditional EVM blockchains like Ethereum. While EVM has for a long time been the dominant virtual machine standard in crypto, we'll also explore how SVM is gradually expanding through rollup solutions such as Nitro and Eclipse.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"The Solana Virtual Machine (SVM) and Sealevel Explained\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The Solana Virtual Machine, SVM in short, is the execution environment that processes transactions and smart contracts/programs on the Solana network. In order to better comprehend SVM, we first need to understand how a virtual machine works within a crypto network.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In the context of blockchains, a virtual machine (VM) is a piece of software that runs programs, more often referred to as a runtime environment to execute smart contracts for a crypto network. When a transaction is submitted, the virtual machine of the network is responsible for processing it and managing the state of the blockchain (the current status of the entire network) impacted by the execution of this transaction. The specific rules for changing the state of the network are defined by the VM.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"When processing a transaction, the VM converts the smart contract code into a format that can be carried out by the validators' hardware. On Solana, the main languages for writing smart contract are Rust, C, and C++, which are compiled into BPF bytecode by the Solana Virtual Machine (SVM), enabling transactions to be executed efficiently by the nodes of the network (validators).\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-deploy-smart-contract-program-deployment-svm-solana-virtual-machine-bpf-bytecode-solana-nodes\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,ZTxRhVDrv6FdwTdEKJhS9ja7FUA.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/ZTxRhVDrv6FdwTdEKJhS9ja7FUA.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The nodes of the Solana network, known as validators, each run their own isolated environment of the Solana Virtual Machine (SVM) to maintain consensus across the blockchain. When a smart contract is deployed (modifying the network's state), it communicates the required state changes to the runtime. The Solana runtime then forwards these state changes to the SVM instances operating within each validator's system, where all validator nodes receive a copy and translate it, updating the blockchain. This distribution of SVM instances across validators results in a decentralized network, reducing the risk of DDoS attacks or shutdowns. Moreover, this isolation ensures that potential bugs or vulnerabilities in a smart contract do not compromise the security or stability of the entire Solana network.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"In summary, these SVM instances can be viewed as \u201Cmini-computers\u201D that execute the necessary operations to update the state of the Solana network based on the provided instructions by transactions. While many blockchains today rely on the Ethereum Virtual Machine (EVM), Solana has developed its own VM, featuring unique capabilities that deliver improved performance.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-sealevel-parallel-processing-blockchain-virtual-machine-multiple-transactions-executed-evm-svm-solana-vm-sealevel\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,WQ3GqQbX2oKdsU3k8wXyeojmR0.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/WQ3GqQbX2oKdsU3k8wXyeojmR0.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"The key component of SVM is \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://medium.com/solana-labs/sealevel-parallel-processing-thousands-of-smart-contracts-d814b378192\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Sealevel\"\n        })\n      }), /*#__PURE__*/_jsx(\"strong\", {\n        children: \".\"\n      }), \" This engine enables \u201Chorizontal\u201D scaling within the Solana execution environment by allowing multiple smart contracts to run simultaneously without impacting each other's performance, a concept known as \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.neonfoundation.io/docs/faq/how-does-neon-work#how-does-the-neon-evm-enable-the-parallel-execution-of-transactions\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"parallel processing\"\n        })\n      }), \". This is possible due to Solana smart contracts describing which data (state) will be read or written while executing in the runtime. This lets transactions without conflicts to run at the same time, as well as those just reading the same information. Sealevel makes it thus possible for the SVM to handle tens of thousands of transactions simultaneously, as opposed to processing them one by one like the Ethereum Virtual Machine (EVM).\"]\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"SVM vs EVM (Ethereum Virtual Machine)\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"While both EVM and SVM perform similar functions, the Solana VM is much more efficient and faster. On EVM, when a smart contract transfers a dollar from a user\u2019s balance, this transaction is stored within the specific contract's storage. This design creates potential issues if the Ethereum Virtual Machine attempts to process multiple transactions in parallel. For example, two different smart contracts might simultaneously attempt to spend the user\u2019s balance, or another contract might read this same user\u2019s balance while it is in the process of being updated, leading to inconsistencies and conflicts.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"evm-processing-vs-svm-virtual-machine-ethereum-single-threaded-runtime-ethereum-congestion\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,wM6JMqpBEKltqoNXFc54UHdLnwY.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/wM6JMqpBEKltqoNXFc54UHdLnwY.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"In contrast, the Solana account model separates data, such as user\u2019s balance, for better organization and efficiency. Transactions on Solana also require explicit specification of the data they will read and modify before execution in the SVM. As said earlier, this allows programs that do not interact with the same data to run concurrently, which helps to alleviate congestion and reduce high fees. For example, the Solana VM can process Toly sending one dollar to Raj simultaneously with Armani sending three dollars to Chase.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-deploy-smart-contract-program-deployment-svm-solana-virtual-machine-bpf-bytecode-solana-nodes\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,ezYMkGFzDz14s8eq1vntq4qYc.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/ezYMkGFzDz14s8eq1vntq4qYc.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: ['The reason EVM struggles with processing multiple transactions simultaneously is partly due to it being a \"single-threaded\" runtime environment, which can only process one contract at a time. Due to this, the EVM design does not take advantage of multi-core hardware, which means only one core of the validator\u2019s hardware is actively processing transactions, while the other cores remain underutilized. This often results in network congestion and higher transaction fees. ', /*#__PURE__*/_jsx(\"em\", {\n        children: \"However, it is important to note that other factors than its multi-threaded runtime also contribute to EVM limitations, such as the desire to maintain low hardware requirements for running nodes.\"\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"On the other hand, Sealevel optimizes the performance of the Solana runtime by enabling efficient use of the available hardware resources. SVM is a multi-threaded runtime environment, designed to process multiple transactions in parallel by using all the cores available of the validator machine. This makes Solana able to scale more effectively as the hardware of its validators improves over time. The Solana Virtual Machine can also manage transaction fees in a better way thanks to its architecture. This has led to the development of \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/7LayerMagik/status/1615569374647287808?s=20\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"localized fee markets\"\n        })\n      }), \", which enable fees to be assigned per smart contract. In contrast, EVM chains rely on global fee markets, meaning that an NFT mint can affect a swap or DeFi transaction, even though the transactions are unrelated.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"evm-vs-svm-single-threaded-runtime-ethereum-execution-environment-multi-threaded-runtime-sealevel-solana-vm-virtual-machine-crypto\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,aad2phZyFLLFgEkZs4R32CKZTYU.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/aad2phZyFLLFgEkZs4R32CKZTYU.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For all these reasons, SVM's parallel processing capabilities allow Solana to achieve significantly higher TPS, resulting in faster transaction speeds, and with almost invisible fees compared to the EVM architecture. This positions SVM as a next-generation blockchain environment, far more efficient and performant. As more developers recognize this, we are starting to see greater adoption of the SVM as an execution environment for smart contracts, with an emerging ecosystem of SVM rollups taking shape.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"The Emerging Ecosystem of SVM Rollups\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: 'A rollup is a type of blockchain scaling solution that processes transactions outside of a Layer 1 blockchain (e.g., Solana) and later posts the data to a Layer 1 retroactively. Rollups aim to reduce network congestion and transaction fees by bundling multiple transactions together into a single \"proof\" that is then submitted to the main chain. The greatest advantage of building a rollup is the ability to fully customize the chain. This customization allows for various use cases, such as tailored orderbooks, encrypted mempools for minimizing MEV (Miner Extractable Value), or permissioned applications designed to meet specific requirements.'\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"A virtual machine can also be used to simplify the deployment process for developers on other chains that use the same VM. This network effect has greatly benefited Ethereum and its VM, since it was the first runtime environment for crypto smart contracts. As a result, EVM has been the primary execution environment used for building rollup blockchains. Among the two types of rollups, Optimistic and Zk, \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.eclipse.builders/documentation/glossary#optimistic-rollup\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Optimistic rollups\"\n        })\n      }), \" such as Arbitrum are the most widespread. Recently, SVM has seen numerous advancements aimed at bringing the rollup technology to Solana developers. The main projects building rollups for Solana are \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.nitro.technology/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Nitro\"\n        })\n      }), \" and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.eclipse.builders/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Eclipse\"\n        })\n      }), \".\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,Orj1f0PiCDrFtSYqtZkeI0f8Y.png\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/Orj1f0PiCDrFtSYqtZkeI0f8Y.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Nitro is an Optimistic rollup solution, similar to Arbitrum or Optimism, that utilizes the Solana Virtual Machine (SVM) to enable Solana developers to port their dApps to various ecosystems. Nitro plans to launch on Sei first, a sector-specific trading chain built on Cosmos, before expanding to other chains. It uses SVM to execute transactions with parallelization, which means users will be able to perform as they would on Solana, while Nitro using Sei for settlement and consensus. Furthermore, with Sei being part of the Cosmos ecosystem, Nitro\u2019s projects and its users will be able to benefit from the IBC interoperability technology, accessing Cosmos assets and liquidity.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Another SVM rollup solution in development is Eclipse, which aims to facilitate the deployment of customizable rollups. Eclipse's optimistic rollups enable projects to create their own distinct app chains while benefiting from the security of established networks (e.g., Cosmos app-chains, Polygon, Ethereum) and leveraging the Solana Virtual Machine (SVM). SVM serves as the execution environment, with Eclipse handling settlement, and consensus and data availability (DA) managed by the developer's chosen Layer 1 network. Currently, Eclipse offers Optimistic rollup solutions but is working on launching zk-rollups as well.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,XzKgY1tEkKj3MrmIIqYch6995ds.png\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/XzKgY1tEkKj3MrmIIqYch6995ds.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Eclipse has already announced two rollup solutions built on top of SVM:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Polygon SVM\"\n          }), \": With this rollup, any project built on Solana can easily deploy onto the Polygon network;\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Cascade\"\n          }), \": Introduced by Injective and Eclipse, Cascade is an SVM rollup optimized for the IBC ecosystem. It will allow Solana projects to effortlessly deploy to Cascade and access the assets and liquidity of the Cosmos app-chains. Moreover, projects on Injective can now utilize Cascade's parallelized SVM.\"]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"All those solutions are simplifying the usage of the Solana VM and expanding its reach. Users from other chains will also be able to \u201Ctaste\u201D the Solana parallelization experience without friction, which could lead to more realization of the SVM superiority and thus to more projects moving their dApps to Solana to benefit from its architecture and onboard more users.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"SVM Is A Next-Generation Blockchain Environment for Developers\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Despite being only three years old, Solana has already demonstrated impressive performance, and the development of scaling solutions like Nitro and Eclipse on top of its VM highlights the success of its innovative execution architecture. Solana has been able to learn from the challenges faced by older networks like Bitcoin and Ethereum. Bitcoin wasn't designed for smart contracts, which led to the emergence of Ethereum. Similarly, Ethereum wasn't prepared for mass adoption and high-speed transactions, paving the way for Solana and parallel processing. Moreover, access to the SVM environment is becoming easier for developers, with Neon Labs bringing in Solidity compatibility with the Solana runtime, as well as the upcoming \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/0xEdgar/status/1617347877000413184?s=20\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Runtime v2 upgrade\"\n        })\n      }), \", which should enable developers to build SVM-compatible dApps using a plethora of programming languages such as Move.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"It is evident that the Solana VM offers a more advanced environment for building next-generation applications. The parallel processing of transactions enables higher throughput, akin to what is possible in traditional finance, enabling developers to build any kind of product without worrying about speed limits or fees. Building on a chain with TPS as high as 15 will not bring crypto to mass adoption. Thanks to SVM and Sealevel, Solana can (already) handle thousands of transactions without congestion nor noticeable gas fees, making it a perfect environment for building those new applications. And as the hardware of validators improves, Solana\u2019s Sealevel runtime will be able to process even more transactions in parallel, widening the gap between SVM and EVM while onboarding more users.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Squads will support the expansion of the Solana Virtual Machine (SVM) and bring multi-signature (multisig) functionality to the whole SVM ecosystem, enabling anyone to use the best blockchain execution environment with the best self-custody experience to manage on-chain assets.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Acknowledgments: Thanks to Jarry Xiao (\"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://ellipsislabs.xyz/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"Ellipsis\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \") and Neal Somani (\"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.eclipse.builders/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"Eclipse\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \") for feedback on earlier drafts of this post.\"\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Squads\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is a crypto company operations platform that simplifies management of developer, creator, and treasury assets for teams building on Solana and SVM. Open source, formally verified, immutable, Squads enables teams to secure their on-chain assets in a multisig and jointly manage them.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Squads: \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-squads\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/what-is-squads\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Squads Protocol: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Code: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"The Solana Virtual Machine, SVM in short, is the execution environment that processes transactions and smart contracts/programs on the Solana network. This article covers how this innovative infrastructure enables the Solana blockchain to deliver enhanced performances compared to traditional EVM blockchains like Ethereum.\",\n  z73Iw8W3B: \"What Is SVM - The Solana Virtual Machine\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/O8JVEriGowPcPDjADPC3ErE7W00.png\").href\n  }, \"account-abstraction-use-cases-smart-contract-wallet-solana-ethereum-account-abstraction-eip-erc-4337-applications-use-cases-solana-pda\"),\n  F206_nB9l: addImageAlt(undefined, \"\"),\n  id: \"Ore4lMown\",\n  LXPPb0mj_: \"account-abstraction-use-cases\",\n  MJoGirltk: \"2023-04-05T00:00:00.000Z\",\n  uA_wjTqpl: \"Research\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsxs(\"p\", {\n      children: [\"In our \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-account-abstraction-ethereum-vs-solana\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"previous article\"\n        })\n      }), \", we discussed how account abstraction (AA) in crypto is a broad concept that can take on many forms. To recap, AA roughly refers to the process of abstracting away the rigidity and built-in structures of user accounts within a blockchain, making them more flexible and adaptable while still allowing them to interact with the network.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"As a broad and emerging concept, it can be challenging for developers to identify ideas or examples of what can be built with account abstraction. This article aims to highlight the promising potential applications of AA for Solana developers and projects, as well as showcase some emerging use cases. For those interested in exploring the full spectrum of ideas around account abstraction, a comprehensive list will be included at the end of the article.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Potential Opportunities for Solana Developers and Projects\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"By incorporating account abstraction, developers can create solutions that overcome the complexities and barriers often associated with traditional blockchain interactions. This can help projects attract a wider audience including those who are new to the world of crypto and more broadly DeFi. Given the extensive range of possibilities, we decided to focus on the most promising use cases that address the gaps in onboarding newcomers to Solana, making the process more accessible and user-friendly. The first application that in our view stands out in this regard is \u201CSession Keys\u201D.\"\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Session Keys\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Session Keys can significantly change the way users interact with dApps (decentralized applications). The idea is to let users create a session key that pre-approves transactions within a dApp for a specific time, up to a certain limit and with particular rules. This means users can use their favorite project without having to repeatedly confirm transactions through their wallet.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Since users predefine the allowed actions, they can interact with a protocol while ensuring their assets remain secure. Currently, most dApps require users to sign transactions repeatedly, which is inconvenient for users who perform many transactions. The Session Keys approach strikes a balance between user-friendliness and minimized risk. Session keys can be customized in various ways, such as setting a time limit, maximum gas limit, maximum transaction volume for a specific token, or allowing only certain functions on a specific program. This flexibility allows protocols to offer tailored \u201Ckeys\u201D for different purposes and users.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For instance, Session Keys could significantly enhance the user experience for derivative exchanges on Solana like Drift, Zeta, or Cypher. A trader could create a session key valid for one hour, allowing them to trade up to $50,000 without needing to confirm each transaction with their wallet. This would create an experience similar to what users enjoy on centralized exchanges like Binance, without the cons of centralization.\"\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Gasless Transactions\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: 'Another use case that could bridge the gap between DeFi and CeFi is \"Gasless Transactions,\" which is a concept also referred to as \"Sponsored Transactions.\u201D The idea is to allow users to perform transactions without having to pay gas fees. This is achieved by using a smart contract/program to cover the gas fees on behalf of the user, simplifying the user experience and allowing to perform transactions without requiring $SOL for gas fees.'\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"To put it into context, consider the following example:\"\n    }), /*#__PURE__*/_jsxs(\"ol\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"The user interacts with a dApp that supports Gasless Transactions;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"When the user initiates a transaction, the protocol calls a specific program that is designed to handle Gasless Transactions;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"The program, known as the \u201Csponsor\u201D, pays the gas fees on behalf of the user. The gas sponsor may either cover the cost as an \u201Cacquisition cost\u201D or could ask the user to pay in a different token for instance;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"The program executes the user's requested transaction, while covering the gas fees.\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"NFT marketplaces like Magic Eden or Tensor are great examples of how this implementation could work, since they are prone to attract users who may not be familiar with gas fees. With Gasless Transactions, a user could have only USDC in his wallet and still purchase NFTs and pay royalties, without having to be concerned with gas fees for the transaction execution. On the other hand, Tensor could introduce its own token and integrate it into the platform, requiring users to purchase $TENSOR to perform transactions. An entire gamification experience could be created, where users who utilize the Tensor token for transaction fees can earn points, rewards, and additional benefits.\"\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Transaction Guards\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Wallets also hold the potential to revolutionize the self-custody experience for their users by implementing an account abstraction concept known as \u201CTransaction Guards\u201D. It refers to a mechanism that allows users to define specific conditions and rules that must be met before a transaction is executed. This adds another layer of security and control, ensuring that transactions follow predefined rules set by the user account.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This use case can involve features such as withdrawal limits, daily spending limits, or whitelisted addresses. Wallets on Solana such as Backpack or Ultimate could adopt those safeguards to help users protect their funds in case their private key gets compromised. By generating a keypair with a wallet like Backpack, users could configure specific triggers to manage their funds more securely.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Protocols could also incorporate Transaction Guards that examine a user's historical behavior and automatically halt the transaction if a potential risk is detected (e.g., a user usually withdraws amounts ranging from $500 to $1000 but in this case the transaction amount is 20 times larger). In such cases, a 2FA confirmation might be required to ensure that it's the actual user initiating the action, rather than a malicious actor.\"\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"The End of Seed Phrases - Enhanced Account Authentication and Signing Methods\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Beyond enhanced security features, one of the applications that could potentially facilitate the onboarding of newcomers to DeFi is the elimination of seed phrases. Social recovery, login with email, and 2FA are all well-established features in web2 that can now be implemented in crypto with account abstraction.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For social recovery, the recovery process can involve executing a program with a predefined set of conditions, such as obtaining signatures from a majority of trusted associates. Users could designate friends, family members or third-party solutions who can help recover their account if they lose access to their private key, which will enable them to regenerate a new one.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The adaptability of smart contract wallets also allows them to work with MPC, enabling users to log in using a social account (like Google) or an email and password combination. The signing process can be enhanced as well by integrating new solutions to sign transactions like 2FA, which requires users to confirm their identity using an additional factor, such as a one-time password or a hardware token, before executing a transaction.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"While those concepts may appear promising on paper, their true value is when implemented in real projects. Fortunately, Solana is a blockchain that already has a variety of impressive applications, showcasing the potential of these ideas and offering tangible examples of how crypto and DeFi can, in fact, also be for non-crypto experts.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Examples of Account Abstraction Applications on Solana\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Squads\"\n        })\n      }), \" is a well-known example of account abstraction in action on Solana. It leverages Squads Protocol to provide multi-signature functionality, allowing teams to securely manage their treasury, developer, and creator assets. In this setup, every action taken within Squads requires the approval of all the owners before the transaction can be executed.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"More recently, Solana Grizzlython has given birth to many new projects that are implementing some forms of account abstraction:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Bunkr: It aims to introduce TOTP (Time-based OneTime Password) 2FA to Solana, allowing users to secure their assets with an authenticator app of their choice;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"RayAuth: The project wants to offer plenty of account abstraction use cases such as social logins, gasless transactions, or even session keys;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Cordelia: They plan to add a social recovery feature for their treasury management solution;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Stache (Kaizen Corps): Stache is building a smart wallet with account abstraction features like account recovery, optional seed phrases, automations.\"\n        })\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Several existing Solana protocols have also already implemented various forms of account abstraction. For example, \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://app.kamino.finance/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Kamino\"\n        })\n      }), \" batches multiple transactions into one, enabling users to simply deposit one token into a vault, with the swap and complete deposit process managed by the protocol on their behalf. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://app.drift.trade/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Drift\"\n        })\n      }), \", on the other hand, recently utilized PDAs (Program Derived Addresses) to enable users to create referral accounts, showcasing yet another application of account abstraction on Solana.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(Link, {\n        href: \"https://www.dcaf.so/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Drip\"\n        })\n      }), \" by Dcaf enables on-chain dollar-cost averaging (DCA) for SPL tokens, leveraging AA to process payments automatically according to a predetermined schedule, eliminating the need for users to manually approve each transaction. Similarly, Gum recently introduced \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/shek_dev/status/1642901317969645568\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Sparkled Sessions\"\n        })\n      }), \", which is essentially the \\\"Session Keys\\\" concept we've seen above. This establishes a secure, ephemeral session between the user's wallet and the dApp, eliminating manual approvals for every transaction.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"There are countless use cases of what is possible on Solana, and the relatively limited knowledge about account abstraction and the role of PDAs may explain why we have only recently started to see AA implementations on Solana. As awareness and adoption of these concepts expand, we can expect to see more innovative use cases emerge in the ecosystem.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"AA Use Cases Are Only Limited by Your Mind\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The examples shown here are just a brief overview of the many opportunities that account abstraction offers. By moving away from the restrictions of typical user accounts, developers can now mix the best parts of web2 and web3, while still keeping users in control of their assets. This freedom allows builders to come up with fresh and unique user experiences that were once thought impossible. Below, we\u2019ve gathered all the use cases we could think of for account abstraction:\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"account-abstraction-ethereum-solana-use-cases-applications-aa-account-abstraction-eip-4337-erc-4337-solana-pda-solana-program-derived-addresses-spl-smart-contract-wallet\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,81k95coy1X81viAHSFluizy40.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/81k95coy1X81viAHSFluizy40.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"As the concept of account abstraction expands further, we can't wait to see the innovative ideas and solutions that will come from the minds of Solana builders.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Squads\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is a crypto company operations platform that simplifies management of developer, creator, and treasury assets for teams building on Solana and SVM. Open source, formally verified, immutable, audited by Neodyme and OtterSec, Squads enables teams to secure their treasuries, programs, validators, tokens in a multisig and jointly manage them.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Squads: \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-squads\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/what-is-squads\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Squads Protocol: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Code: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"This article aims to highlight the promising potential applications of account abstraction for Solana developers and projects, as well as showcase some emerging use cases.\",\n  z73Iw8W3B: \"Exploring Account Abstraction Use Cases\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/P3OOJ94NoGqBPK1lFEHoi8GCMM.png\").href,\n    srcSet: `${new URL(\"https://framerusercontent.com/images/P3OOJ94NoGqBPK1lFEHoi8GCMM.png?scale-down-to=512\").href} 512w, ${new URL(\"https://framerusercontent.com/images/P3OOJ94NoGqBPK1lFEHoi8GCMM.png?scale-down-to=1024\").href} 1024w, ${new URL(\"https://framerusercontent.com/images/P3OOJ94NoGqBPK1lFEHoi8GCMM.png?scale-down-to=2048\").href} 2048w, ${new URL(\"https://framerusercontent.com/images/P3OOJ94NoGqBPK1lFEHoi8GCMM.png\").href} 4000w`\n  }, \"account-abstraction-ethereum-vs-solana-pda-program-derived-addresses-ethereum-aa-eip-erc-4337-smart-contract-wallets-solana\"),\n  F206_nB9l: addImageAlt(undefined, \"\"),\n  id: \"eGFR49QgI\",\n  LXPPb0mj_: \"what-is-account-abstraction-ethereum-vs-solana\",\n  MJoGirltk: \"2023-03-21T00:00:00.000Z\",\n  uA_wjTqpl: \"Research\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"For a long time, crypto wallets were reserved exclusively for advanced users, offering limited capabilities and hindering the onboarding of newcomers. Recent advancements in account abstraction are finally facilitating the creation of new self-custody solutions that could potentially attract the next generation of users into crypto. While it has been implemented natively in newer blockchain networks such as Solana, account abstraction has recently gained significant interest across the Ethereum community, primarily due to the long-awaited ERC-4337 upgrade.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This article aims to introduce the general concept of account abstraction (AA) in crypto while navigating the AA capabilities of both Ethereum and Solana networks and understanding their differences. Lastly, we will explore the smart contract wallet standard that we built at Squads to facilitate developing account abstraction on Solana.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"em\", {\n        children: \"Note: The terms \u201Caccount\u201D or \u201Cuser account\u201D will often be mentioned in this article. An account is not a wallet. In crypto, a wallet is only an interface or application that lets users interact with blockchain accounts.\"\n      })\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"What is Account Abstraction\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Account abstraction is a concept that has been around in crypto since \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://hackmd.io/@matt/r1neQ_B38\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"2015\"\n        })\n      }), \", with Vitalik being a prominent advocate for it. While AA is a broad term, it roughly refers to the process of abstracting away the rigidity and built-in structures of user accounts within a blockchain, making them more flexible and adaptable while still allowing them to interact with the network. This abstraction enables developers to create user-friendly on-chain accounts with custom logic, where they can set their own conditions for storing assets and executing transactions, instead of relying on the built-in rules of standard blockchain accounts that are not suited for everyday use.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Beyond traditional blockchains, where account structures are bound to a single owner and a specific keypair (private and public keys), AA makes it possible for developers to create smart contracts that can act as user accounts. These smart contracts can interact with multiple accounts, perform cross-program communications, and integrate a wide range of customized logic.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"what-is-account-abstraction-smart-contract-wallet-solana-multisig-smart-wallet-fuse-aa-use-cases-account-abstraction-solana\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,DkhUvs5MkkoCFKa0goUxsFgs8.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/DkhUvs5MkkoCFKa0goUxsFgs8.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Although the term \u201Caccount abstraction\u201D can be used both in Ethereum and Solana, it is important to understand that its implementation and features differ between the two blockchains. Generally speaking, account abstraction in crypto involves the customization of:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"account structures\"\n          }), \": developers can define their own account structures for specific purposes and how the data is stored;\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"validation and execution schemes\"\n          }), \": enabling implementation of custom transaction validation and execution logic;\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"interaction between accounts\"\n          }), \": facilitating composability between different user accounts/smart contracts in how they can work together.\"]\n        })\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"With AA, the idea is thus to allow and simplify the process for developers to create user accounts for any need, that are no longer blocked by a set structure, and are natively supported by the network. In the words of \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.argent.xyz/blog/wtf-is-account-abstraction/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Argent\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(\"em\", {\n        children: \"\u201Caccount abstraction moves crypto from the current approach of one-account-fits-all, where someone can lose everything with a small mistake, to a future where an account can be tailored to someone's needs. Where you can build a safety net for self-custody. And give them much slicker UX too.\u201D\"\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The ultimate goal of AA is to make the underlying technology (blockchain) of the user account imperceptible to users.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Account Abstraction on Ethereum and ERC-4337 Explained\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In Ethereum, account abstraction has always been an ongoing area of research and development due to the rigidity and structure of Ethereum accounts. Until ERC-4337, there was no standardized approach for developers to create and implement custom user accounts, which has led to a poor user experience to store and manage assets on-chain.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Due to the late implementation of a standard for account abstraction, most Ethereum wallets today such as Metamask only allow users to create and manage EOA wallets. These are a type of Ethereum account with limited customization and flexibility. Externally Owned Accounts (EOAs) are controlled by private keys and can only be used to store data (ETH, ERC-20, or ERC-721 tokens) and interact with smart contracts by signing transactions. Because they have a built-in structure, these accounts offer limited functionality and cannot have custom logic implemented, which restricts the range of actions for managing assets and interacting with smart contracts. For a long time, EOAs were the only way to sign and interact with Ethereum smart contracts.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Smart (contract) wallets emerged as a solution to address EOAs limitations by offering wallets based on \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://ethereum.org/en/developers/docs/accounts/#types-of-account\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Contract Accounts\"\n        })\n      }), \" - a type of account that brings account abstraction to Ethereum and unlocks new possibilities in the way user accounts function. A Contract Account is a smart contract that stores data, and code. Thus, its behavior is determined by the code within the smart contract and is not controlled by a private key. This design enables Ethereum Contract Accounts to have programmable logic and literally create any type of customized account for users. Smart wallets leverage the capabilities of contract accounts, which makes them a more advanced and user-friendly alternative to traditional Externally Owned Accounts (EOAs) as they can offer a plethora of use cases: social recovery, paying fees in any token (e.g. USDC), recurring payments, session keys, and more.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Contract accounts have never really been widely used to create and manage user wallets due to their complexity and cost of use. They were not fully supported by the Ethereum Virtual Machine (EVM) and posed challenges when attempting to interact with the network as they couldn\u2019t initiate transactions themselves. While solutions like Argent and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://safe.mirror.xyz/9KmZjEbFkmI79s28d9xar6JWYrE50F5AHpa5CR12YGI\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Safe\"\n        })\n      }), \" have found workarounds to implement account abstraction on Ethereum for creating smart wallets, there was no clear standard for developers to build custom user accounts in a truly decentralized and secure manner - until EIP-4337 was implemented and became the ERC-4337 standard.\"]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"The Role of ERC-4337\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(Link, {\n        href: \"https://eips.ethereum.org/EIPS/eip-4337\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"ERC-4337\"\n        })\n      }), \" is a new smart contract wallet standard that allows to have highly programmable user accounts natively on Ethereum without making changes to the protocol. Rather than altering the consensus layer to support smart contract wallets, a new system has been integrated alongside the standard transaction process of EVM. This advanced system bundles Contract Accounts actions and their associated signatures and then sends them to a specific \u201Cmempool\u201D where validators can gather them to create a \u201Cbundle transaction\u201D. They are then included in Ethereum blocks just like regular transactions.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: 'Additionally, ERC-4337 changes the way Contract Accounts function by outsourcing complex safety features to a universal wallet contract known as the \"entry point.\" This contract manages operations like fee payments and EVM code execution, enabling developers to build composable accounts without security concerns around centralization.'\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"ERC-4337 is the first step towards implementing native account abstraction and making contract accounts, particularly smart contract wallets, more efficient and flexible on EVM. It is already in the process of being supported by prominent smart wallets on Ethereum, such as \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://safe.mirror.xyz/9KmZjEbFkmI79s28d9xar6JWYrE50F5AHpa5CR12YGI\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Safe\"\n        })\n      }), \".\"]\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Account Abstraction on Solana - Always Has Been\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Compared to Ethereum, Solana has always been a blockchain that natively enables account abstraction since its architecture is fundamentally different from EVM. Accounts on Solana are by default more flexible, simplifying the development of complex interactions between them and smart contracts. In fact, everything in Solana is considered as an account. \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.alchemy.com/overviews/solana-account-model\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Solana\u2019s account model\"\n        })\n      }), \" treats all accounts as \u201Cstorage buckets\u201D, meaning they can store data, tokens, as well as any information associated with a specific program/smart contract (smart contracts on Solana are named programs).\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-account-model-account-types-executable-non-executable-account-solana-program-accounts-data-accounts-pda-ethereum-vs-solana-account-model-types\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,vDrvxgtTmYXgEi56PXdanKYiAIE.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/vDrvxgtTmYXgEi56PXdanKYiAIE.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"There are 2 main account types on Solana:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"executable\"\n          }), \" (program accounts) - these are smart contracts that store code and are more often referred to as \u201Cprograms\u201D;\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"and \", /*#__PURE__*/_jsx(\"strong\", {\n            children: \"non-executable\"\n          }), \" (data accounts) - they can receive tokens or data, but cannot execute code.\"]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Typically, traditional Solana wallets allow users to create data accounts/non-executable accounts. These are regular accounts used for storing data, tokens information and signing transactions. Data accounts on Solana share some similarities with Ethereum's External Owned Accounts (EOAs) in the sense that both types of accounts are primarily used by users to hold and manage their tokens, as well as interacting with decentralized applications (dApps) and smart contracts. Even though they offer additional features than Ethereum\u2019s EOAs, they still remain unfriendly to use for neophytes as they only offer a single method to sign transactions: the use of a private key.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"What makes Solana special is that its account model natively enables programs to create and manage specific accounts, offering developers the ability to define custom rules and logic for managing them. This feature, that further extends account abstraction capabilities on Solana, is called \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.alchemy.com/overviews/program-derived-address\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Program Derived Addresses\"\n        })\n      }), \" (PDAs). Solana programs, conversely to data accounts, are executable accounts. They contain code that can be executed. With PDAs, developers can set up a set of rules and mechanisms to sign transactions. It allows programs to authorize different on-chain operations on behalf of a controlled account (PDA) in a way that is recognized and accepted by the Solana network without needing a private key.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"PDAs are a key feature of account abstraction on Solana, since they can be used to enable actions without requiring private keys, reducing the burden on end-users to manage them. They can also allow implementation of custom rules and logic in how to access, store, and manage SPL assets. Smart wallets on Solana like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Squads\"\n        })\n      }), \" leverage PDAs functionality to enable complex customization of account management such as multi-signature (multisig) or batched transactions. Moreover, PDAs serve as the foundation for\\xa0\", /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.solana.com/developing/programming-model/calling-between-programs\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Cross-Program Invocation\"\n        })\n      }), \" (CPI), which allows Solana accounts to interact and compose with one another.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"While both Solana and Ethereum aim to provide a flexible environment for building custom account structures, we can see that their approaches to AA differ significantly. Ethereum features a more rigid account structure with distinct account types, whereas Solana employs a more flexible account model, simplifying development and enabling complex account interactions. While EVM developers must rely on workarounds or wait for protocol layer updates, SVM developers can create self-custody products leveraging native AA without any constraints.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"But even if the customization of user accounts is more advanced and decentralized on Solana since it is already enabled at the protocol level, there are still many challenges standing in the way of ubiquitous adoption of account abstraction-powered solutions like smart wallets. One of them is poor support for workflows involving smart wallets in the ecosystem, as well as protocols that are trying to artificially limit their composability by preventing other programs from calling into them and/or keeping their code private and not providing IDL (interface) for it.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Squads Protocol - The Smart Contract Wallet Standard That Unlocks Solana\u2019s AA Capabilities\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"ERC-4337 has established a standard on Ethereum for building self-custody solutions like smart contract wallets that implement AA. Until recently, Solana was lacking simplification for building self-custody and treasury management products on top of its PDA functionality, although it natively enables a high level of account abstraction.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads Multisig Program Library (or SMPL) is a set of open-source programs on Solana that anyone can leverage to build self custody products on top of - making it the ultimate smart contract wallet infrastructure for SVM. Solana\u2019s account model has supported account abstraction since inception, and Squads Protocol makes it easier for developers to work with it.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads Protocol stack allows Solana developers to create customizable self-custody solutions tailored to specific use cases and user needs. SMPL has been built to support effortless implementation of AA on Solana, and facilitates developers in how they can build smart wallets. With it, they can build advanced features like social recovery, granular controls/permissions on funds held, or even remove the need to save a 12/24 word seed phrase to access and manage SPL assets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"By unlocking the full potential of account abstraction, Squads Protocol paves the way for a more seamless and user-friendly experience for onboarding the next generation of crypto users on Solana. Ultimately, the importance of AA lies not only in its implementation by the network but also in the features that developers can create using it as a foundation. Whether users are on Ethereum or Solana, implementing account abstraction enables the creation of self-custody solutions that make them forget they are using a blockchain and bridge the gap with web2 financial products.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In our next article, we'll explore some account abstraction use cases that Solana builders can consider developing.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Squads\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is a crypto company operations platform that simplifies management of developer and treasury assets for teams building on Solana and SVM. Open source, formally verified, immutable, audited by Neodyme and OtterSec, Squads enables teams to secure their treasuries, programs, validators, tokens in a multisig and jointly manage them.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Squads: \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-squads\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/what-is-squads\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Squads Protocol: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Code: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"This article explores the concept of account abstraction (AA) in crypto while navigating the AA capabilities of both Ethereum and Solana networks and understanding their differences.\",\n  z73Iw8W3B: \"An Introduction to Account Abstraction\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/XHhURNnA2l0xC2b4i3Kp5LAFPE.png\").href,\n    srcSet: `${new URL(\"https://framerusercontent.com/images/XHhURNnA2l0xC2b4i3Kp5LAFPE.png?scale-down-to=512\").href} 512w, ${new URL(\"https://framerusercontent.com/images/XHhURNnA2l0xC2b4i3Kp5LAFPE.png?scale-down-to=1024\").href} 1024w, ${new URL(\"https://framerusercontent.com/images/XHhURNnA2l0xC2b4i3Kp5LAFPE.png?scale-down-to=2048\").href} 2048w, ${new URL(\"https://framerusercontent.com/images/XHhURNnA2l0xC2b4i3Kp5LAFPE.png\").href} 4000w`\n  }, \"Squads Protocol Solana Smart Contract Wallet Infrastructure SVM Account Abstraction Solana PDA\"),\n  F206_nB9l: addImageAlt(undefined, \"\"),\n  id: \"Wk6EcoL7T\",\n  LXPPb0mj_: \"solana-svm-smart-contract-wallet-infrastructure\",\n  MJoGirltk: \"2023-03-10T00:00:00.000Z\",\n  uA_wjTqpl: \"Product Update\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Squads Protocol is the smart contract wallet infrastructure powering \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/what-is-squads\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Squads\"\n        })\n      }), \" - the platform for teams on Solana and SVM seeking to securely manage their on-chain assets with multi-signature logic.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This article covers what Squads Protocol is, highlighting its potential applications for developers and various security measures we have implemented to offer a safe and reliable smart contract wallet layer for the Solana and SVM ecosystems.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"What is Squads Protocol\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads Protocol is a collection of programs (smart contracts) that together form the smart wallet infrastructure layer for Solana and SVM. It enables developers to deploy and program smart contract wallets - a next generation of self-custody solutions.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Smart (contract) wallets can have more complex rules and conditions for sending transactions than traditional hot and cold wallets like Ledger or Phantom. In the case of smart wallets user accounts are no longer single private keys, but instead programmable accounts managed by several keys. Traditional wallets make the account (which holds the assets) and the signer (which invokes transactions in respect of the assets) identical, whereas Squads Protocol\u2019s programs \u201Cabstract\u201D the signer from the account. The concept of such decoupling, allows for greater security and programmability, and is commonly referred to as Account Abstraction (AA).\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"strong\", {\n        children: \"Multisigs are perhaps the most well-known use case of AA,\"\n      }), \" which are smart contract wallets managed by multiple owners requiring multiple signatures to confirm transactions. However, beyond multi-signature wallets AA allows for a plethora of features including social recovery, 2FA, daily withdrawal limits and alternative signing schemes. Developers have virtually limitless possibilities when it comes to what they can build around self-custody tools on Account Abstraction rails.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"As of now, the Squads platform has already implemented several features that are enabled by Squads Protocol including multisig and batched transactions.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Built with Composability and Security in Mind\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads Protocol is designed to simplify development for projects seeking to build on top of it. It makes it easy to leverage AA capabilities of Squads Protocol while using lightning fast and low fees of the Solana blockchain. Teams looking to build on top of Squads Protocol have access to the:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"SDK,\"\n          }), \" made to simplify interaction with Squads Protocol: \", /*#__PURE__*/_jsx(Link, {\n            href: \"https://www.npmjs.com/package/@sqds/sdk\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"https://www.npmjs.com/package/@sqds/sdk\"\n            })\n          })]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Anchor\"\n          }), \" \", /*#__PURE__*/_jsx(\"strong\", {\n            children: \"IDLs\"\n          }), \": \", /*#__PURE__*/_jsx(Link, {\n            href: \"https://github.com/Squads-Protocol/squads-mpl/blob/main/idl/squads_mpl.ts\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"https://github.com/Squads-Protocol/squads-mpl/blob/main/idl/squads_mpl.ts\"\n            })\n          })]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"comprehensive documentation,\"\n          }), \" drafted to guide them through the development process: \", /*#__PURE__*/_jsx(Link, {\n            href: \"https://docs.squads.so/squads-v3-docs/*\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"https://docs.squads.so/squads-v3-docs/\"\n            })\n          })]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"open-source codebase,\"\n          }), \" available for review: \", /*#__PURE__*/_jsx(Link, {\n            href: \"https://github.com/Squads-Protocol/squads-mpl\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"https://github.com/Squads-Protocol/squads-mpl\"\n            })\n          })]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Composability of Squads Protocol is supported by a multitude of security measures undertaken by Squads Labs, to ensure that the protocol is a secure and reliable foundation for developers.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-protocol-open-source-solana-immutable-protocol-formally-verified-audited-by-neodyme-ottersec-audit-firm-solana-smart-contract-wallet-account-abtstraction-infrastructure-solana-squads-svm-pda-solana\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,HAWk5AgecBs8CJBNmjbCgMe4UU.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/HAWk5AgecBs8CJBNmjbCgMe4UU.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Measures implemented to ensure security of Squads V3 include:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Audits\"\n          }), \": Squads V3 has undergone several audits from reputable firms such as Neodyme and OtterSec;\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Anchor\"\n          }), \": the entire code has been written using \", /*#__PURE__*/_jsx(Link, {\n            href: \"https://www.anchor-lang.com/\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"Anchor\"\n            })\n          }), \", a framework for building secure Solana programs;\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Formally Verified\"\n          }), \": Squads Protocol is the first Solana protocol to be formally verified. \", /*#__PURE__*/_jsx(Link, {\n            href: \"https://osec.io/blog/2023-01-26-formally-verifying-solana-programs\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"Formal verification\"\n            })\n          }), \" (FV) is the process of using a formal specification to verify the correctness of a system. The goal of FV is to ensure that a program is free of bugs and working as intended;\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Immutability\"\n          }), \": since February 2023, the upgrade authority for v3 (SMPLecH534NA9acpos4G6x7uf3LWbCAwZQE9e8ZekMu) has been burned, making the program immutable. In essence it means that nobody controls the upgrade authority, even Squads Labs, the program lives autonomously on the Solana blockchain.\"]\n        })\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Moreover, countless key players in the ecosystem support and rely on Squads Protocol. Protocols like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.mesha.club/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Mesha\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://streamflow.finance/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Streamflow\"\n        })\n      }), \" and others have built their products leveraging the protocol and relying on its capabilities, adding multisig support to their platforms.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads Protocol enables developers to create innovative self-custody solutions on Solana, leveraging the speed, low transaction fees and account abstraction capabilities of the Solana blockchain. Its numerous use cases, coupled with robust security measures, as well as adoption by multiple protocols, establish Squads Protocol as the leading smart contract wallet infrastructure for the Solana and SVM ecosystems.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"For any teams looking for additional support on their journey of building on top of Squads Protocol or to have their questions answered, we are available to assist \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://discord.com/invite/YPXz64TrKs\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"here\"\n        })\n      }), \".\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Start Building on top of Squads Protocol\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Code:\\xa0\"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"SDK:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.npmjs.com/package/@sqds/sdk\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://www.npmjs.com/package/@sqds/sdk\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"IDLs:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl/blob/main/idl/squads_mpl.ts\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl/blob/main/idl/squads_mpl.ts\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Documentation:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.squads.so/squads-v3-docs/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://docs.squads.so/squads-v3-docs/\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"This article covers what Squads Protocol is, highlighting its potential applications for developers and various security measures we have implemented to offer a safe and reliable smart contract wallet layer for the Solana and SVM ecosystems\",\n  z73Iw8W3B: \"The Smart Contract Wallet Infrastructure for Solana and SVM\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/do2lcH5MjdrHgwwH3T0UCgFaSFk.png\").href\n  }, \"Solana Multisig to Manage Program Upgrades Management Upgrade Authority Key Solana Protocol Security Squads Multisig Platform\"),\n  F206_nB9l: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/tf5hXZ8wEddVPBalarxcjhZoY0.png\").href,\n    srcSet: `${new URL(\"https://framerusercontent.com/images/tf5hXZ8wEddVPBalarxcjhZoY0.png?scale-down-to=512\").href} 512w, ${new URL(\"https://framerusercontent.com/images/tf5hXZ8wEddVPBalarxcjhZoY0.png\").href} 1000w`\n  }, \"\"),\n  id: \"Q88qA7kYl\",\n  LXPPb0mj_: \"solana-multisig-program-upgrades-management\",\n  MJoGirltk: \"2023-03-08T00:00:00.000Z\",\n  uA_wjTqpl: \"Educational\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"Securely managing a protocol on Solana involves multiple aspects, but there are limited resources available to assist teams and developers in learning the best practices to be applied. One component that is not talked about frequently enough, and which almost severely damaged the Solana DeFi ecosystem during the FTX collapse, is the management of program upgrade authorities.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The security of Solana protocols and their user funds is directly impacted by how teams manage their programs. Most protocols on Solana are upgradeable, and program upgrade authority allows developers to effect any kind of changes to the protocol. That makes it a very valuable asset for any project, and mismanagement at this level can significantly affect both the protocol and its users.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This article will cover what to avoid when it comes to managing and keeping program upgrade authorities safe, as well as diving into the solution we built at Squads to make the process of upgrading Solana programs secure, robust and intuitive.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"The Process of Upgrading Solana Programs and Its Risks\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"On Solana, most programs (smart contracts) are upgradeable, allowing protocols to easily push updates without requiring users to transfer funds to a new program. While this comes with advantages, it also presents tradeoffs that must be considered when developing on Solana.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In order to upgrade a program, developers must redeploy it. To do so, each program account on Solana contains an upgrade key that enables modifications to be made to the program. Typically, the authority key is the Solana account/address that originally deployed the program (though it can be changed to another key). Every time a transaction is created to update a Solana program, it needs to be signed by this authority key.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"This is where a lack of education regarding program upgrade security becomes apparent: according to \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://blog.neodyme.io/posts/solana_upgrade_authority/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Neodyme\"\n        })\n      }), \", most Solana protocols use a simple cold wallet to manage their authority key, which poses significant risks if the account/address holding the authority key is stolen or compromised. Furthermore, a single wallet essentially gives \u201Cownership\u201D over the program to one entity, thus establishing a single point of failure.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Fortunately, beyond cold/hot wallets there are other solutions for managing program upgrades of a Solana protocol. One way is to move the upgrade authority to a DAO, where token holders can vote to make changes to the code. However, this approach is not considered the most optimal for projects that are not yet ready to give up control over the program to the community and transition to a DAO structure. From an operational standpoint it can also be difficult for the protocol to quickly fix bugs or issues without alerting the entire community, including potential malicious actors who could take advantage of the situation (particularly relevant at the early stages of protocol development).\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"A second solution, which is starting to take hold, is to move the upgrade authority to a multisig. A multisig (short for multi-signature) is a consensus mechanism that requires multiple parties to sign off on a transaction before it can be executed. It thus eliminates the risk of holding the upgrade authority with a single key, and enables team members to fix bugs or any issue safely and in a timely manner while maintaining a level of decentralization amongst the team.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Although many factors point to a multisig being the most secure and flexible solution, its use and adoption levels for managing upgrade authorities could be a lot higher in the Solana ecosystem. Many were alerted to that reality when the Serum case has unfolded during the FTX collapse.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"em\", {\n        children: \"Note that while burning the authority keys to make the code immutable is another option to consider, it could create additional risks if issues are identified post immutability. This approach works well for some protocols early on and should be the end goal for most, however the realities of shipping code and building in such a fast paced environment as crypto require teams to stay agile and be able to upgrade their codebase on a regular basis. For newer protocols, it is important for the codebase to stand the test of time in terms of security and resiliency before thinking of taking this step.\"\n      })\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"The Serum Upgrade Authority Case\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In November 2022, shortly after the FTX incident, the Solana DeFi ecosystem narrowly avoided a potential disaster. The panic was sparked by Serum, which was a foundational protocol for the Solana\u2019s DeFi ecosystem at the time, powering countless major projects including Jupiter, Raydium, and Mango Markets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Several days after FTX suspended withdrawals, a security breach occurred on the exchange. While this could have been an isolated event, it turned out that the Serum program upgrade key was not under the control of Serum DAO, but rather was managed by a private key held by FTX. As a result, the exchange attacker(s) could also have been in position to potentially compromise the Serum code, as nobody at that time knew where and who was holding its authority key.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Since the identity of the individual holding the Serum authority key was still unknown during this time, and could potentially have fallen into the hands of the hacker(s), the Serum code could have been upgraded without notifying anyone. This would have included the ability to lock funds from the Serum order book or transfer them to a new wallet address, resulting in significant losses for users and the ecosystem. To prevent this, a fork of Serum was made with its upgrade authority managed by a DAO of contributors from the Solana ecosystem.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Despite the successful handling of the situation by the \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/m_schneider/status/1591636068650352640\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Solana community\"\n        })\n      }), \" through the creation of OpenBook (Serum fork), it does not seem that the message has been widely spread. The ecosystem still heavily relies on using cold/hot wallets to manage authority keys, instead of splitting the ownership across several owners to decentralize the security of protocol programs amongst the team members/core developers.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In fact, many Solana projects continue to use insecure and centralized methods to manage their programs even after the Serum fork event.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Most Solana Protocols Are Still Using a Traditional Wallet to Manage their Authority Key\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Despite the significant impact of the Serum incident, it appears that the importance of using a multisig to manage program upgrades has not been fully realized by the ecosystem.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"As previously mentioned, the practice of using traditional wallets to manage program upgrades poses a significant danger to both the protocol and the users' funds, adding unnecessary risks. With over $250mln locked in various Solana protocols, this could have devastating effects on the ecosystem, endangering the benefits of composability, where one protocol being compromised can impact several others and their users.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Fortunately, there is a straightforward solution to this problem for projects - transferring the upgrade authority to a multisig, instead of relying on a cold/hot wallet. This approach offers numerous benefits for teams looking to manage their program upgrade authorities:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"it greatly reduces the likelihood of the upgrade authority being compromised and thus prevents the loss of funds, as ownership is distributed among multiple addresses with thresholds to approve an upgrade;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"all team members involved in managing program upgrades can be held accountable for their actions, ensuring that decisions are made in the best interests of the project;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"the entire team, including non-technical founders, can view all changes to the code in a single interface, such as the one offered by Squads. This includes every update, the protocol's upgrade history, and notifications when an upgrade is being pushed through;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"it prevents any single individual from exerting singular control over the protocol, as changes require approval from all team members added in the multisig.\"\n        })\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"The process is also straightforward, as solutions like Squads make it easy to change the upgrade authority through an intuitive interface. Additionally, users who prefer a safer way to perform the authority transfer can make a \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.squads.so/squads-v3-docs/navigating-your-squad/developers/programs#add-programs\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Safe Authority Transfer\"\n        })\n      }), \" (SAT).\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For a long time, Solana teams had no viable options to manage their programs with a secure and reliable multisig solution, which significantly contributed to the culture of using cold/hot wallets to manage upgrade authority instead of leveraging more robust self-custody tools. With Squads, that is no longer the case.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Squads: The Most Advanced Multisig Solution to Manage Program Upgrades on Solana\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-program-upgrades-tool-platform-programs-management-upgrade-authority-key-solana-security-protocol\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,WRGt00fvG2XAD44iMXnmi24xVwA.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/WRGt00fvG2XAD44iMXnmi24xVwA.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Enter Squads, a platform that streamlines the management of developer assets on Solana and SVM, allowing teams to easily manage program upgrades through a sleek interface. Squads is built on top of \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Squads Protocol\"\n        })\n      }), \", an \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"immutable\"\n      }), \" and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://osec.io/blog/2023-01-26-formally-verifying-solana-programs\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"strong\", {\n            children: \"formally verified\"\n          })\n        })\n      }), \" (the first on Solana) multisig infrastructure. \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Open-source\"\n      }), \" and multiple time \", /*#__PURE__*/_jsx(\"strong\", {\n        children: \"audited\"\n      }), \" by top-tier firms like OtterSec and Neodyme, every Squad is a multisig at its core, which ensures that any transaction or action taken within the platform requires the approval of multiple members of the team.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"By using Squads, teams can transfer the upgrade authority of their Solana programs to a multisig wallet, eliminating the reliance on a single key for control. The process for program upgrades then occurs through the Squads platform, requiring multi-signature approval before deployment. Adding Solana programs to Squads is a straightforward process for teams and comes with an easy-to-use UX.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Several Solana protocols such as Raydium, Marginfi, Kamino, Jupiter, Francium are using Squads to decentralize their workflows and program management amongst the team, pushing the Solana ecosystem towards a more protocol security oriented culture. Over 85 programs have been delegated to a Squads multisig to date, proving its usefulness for teams.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-trusted-by-jito-kamino-clockword-raydium-jupiter-marginfi-francium-frakt-squads-multisig-partners\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,HRCCz3egyLGWGTjBsEW5LP1fUfs.png?preferredSize=full\",\n      \"data-framer-height\": \"2104\",\n      \"data-framer-width\": \"4000\",\n      height: \"1052\",\n      src: new URL(\"https://framerusercontent.com/images/HRCCz3egyLGWGTjBsEW5LP1fUfs.png\").href,\n      style: {\n        aspectRatio: \"4000 / 2104\"\n      },\n      width: \"2000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"While many Solana protocols were unaware of better solutions to manage their programs in the past, it is now clear that change is necessary. Solana programs\u2019 upgradeability should not pose a security risk to users, as this could cause a loss of trust and potentially drive users to other immutable solutions like those offered by Ethereum protocols. Fortunately, platforms like Squads offer teams the ability to secure their most valuable assets in one place, from treasury to programs, and eliminate the risks associated with relying solely on cold/hot wallets to manage authority keys.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Get Started\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Create a Squad: \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://v3.squads.so/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://v3.squads.so\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Start Securing your Programs with a Multisig: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.squads.so/squads-v3-docs/navigating-your-squad/developers/programs\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://docs.squads.so/squads-v3-docs/navigating-your-squad/developers/programs\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Review the Code:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Get your Questions Answered: \"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://discord.com/invite/YPXz64TrKs\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://discord.com/invite/YPXz64TrKs\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"This article covers what to avoid when it comes to managing and keeping program upgrade authorities safe, as well as diving into the solution we built at Squads to make the process of upgrading Solana programs secure, robust and intuitive.\",\n  z73Iw8W3B: \"Why Manage Program Upgrades with a Multisig\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/juNDYm2T0ghBgahPZtyR8x6Tuk.png\").href\n  }, \"Squads Solana multisig platform manage developer assets treasury management multisignature wallet program upgrades best solana wallet developer team manage crypto solana\"),\n  F206_nB9l: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/mTIStAL1RQ2T8wiF3fwdbukySA8.png\").href,\n    srcSet: `${new URL(\"https://framerusercontent.com/images/mTIStAL1RQ2T8wiF3fwdbukySA8.png?scale-down-to=512\").href} 512w, ${new URL(\"https://framerusercontent.com/images/mTIStAL1RQ2T8wiF3fwdbukySA8.png\").href} 1000w`\n  }, \"\"),\n  id: \"UfgcORFFO\",\n  LXPPb0mj_: \"what-is-squads\",\n  MJoGirltk: \"2023-03-01T00:00:00.000Z\",\n  uA_wjTqpl: \"Product Update\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsxs(\"p\", {\n      children: [\"If you want to learn about Squads, Squads Protocol and Squads Labs, but only have time to read one article - this is it, this is the article.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"TL;DR\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-labs-platform-squads-protocol-smart-contract-wallet-infrastructure-solana-svm-rollups-multsig-multisignature-wallet-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,DO9fJC4DKniLsu0ebwTChl5i0.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/DO9fJC4DKniLsu0ebwTChl5i0.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Squads is a crypto company operations platform that simplifies management of developer and treasury assets for teams building on Solana and SVM. With Squads, teams can secure their treasuries, programs, validators, tokens in a multisig and jointly manage them. Think of it as a SaaS like product for teams building crypto companies, protocols and products on SVM.\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Squads is built on top of Squads Protocol - an open source, formally verified and immutable smart contract wallet infrastructure layer for Solana and SVM. Squads Protocol powers the multi-signature aspect of Squads allowing teams to manage various on-chain assets together in an intuitive, secure and decentralized way.\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"Squads Labs is a company that is developing Squads Protocol and is currently building various commercial products on top of it, including Squads (\", /*#__PURE__*/_jsx(Link, {\n            href: \"http://squads.so/\",\n            openInNewTab: true,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"squads.so\"\n            })\n          }), \") and Fuse (\", /*#__PURE__*/_jsx(Link, {\n            href: \"http://fuse.squads.so/\",\n            openInNewTab: true,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"fuse.squads.so\"\n            })\n          }), \") as well as working on the next iteration of the protocol (v4).\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n            className: \"trailing-break\"\n          })]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Introduction\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-solana-multisig-platform-treasury-and-developer-assets-management-manage-token-on-solana-programs-validators-nft-solana-multisignature-wallet-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,4YuTxJcw9SxQ6GwKfhDVtljg0.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/4YuTxJcw9SxQ6GwKfhDVtljg0.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The process of developing a protocol or product in crypto has many unique aspects and challenges that do not exist in a traditional web2 environment. Unique challenges require unique solutions. With this in mind, we have built Squads to offer a user-friendly experience for crypto developers and operators when it comes to managing their core developer and treasury assets throughout the entire process of bringing their vision to life.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"While every team\u2019s journey is unique, most teams at some point raise VC funding or get a grant, deploy a program on chain, launch a token and start their own validator. Squads solves three core problems when it comes to managing these assets:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"user experience - we have transformed a lot of the experiences that previously required developers to interact with the CLI into well-designed user flows all contained within an intuitive interface;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"security - Squads is built on top of Squads Protocol which is a smart contract wallet infrastructure layer for Solana that allows to secure ownership of these assets with multi-signature logic, requiring multiple signatories to approve actions. That allows to decentralize control over these assets amongst the team and removes single points of failure;\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"transparency - by requiring multisig approvals for management of these assets, parsing a lot of the relevant data in our interface and making it human readable, we provide teams with much greater transparency, allowing for the main stakeholders to have more visibility and a way to approve actions critical for the development of their project.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n            className: \"trailing-break\"\n          })]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Protocol\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-protocol-open-source-solana-immutable-protocol-formally-verified-audited-by-neodyme-ottersec-audit-firm-solana-smart-contract-wallet-account-abtstraction-infrastructure-solana-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,HAWk5AgecBs8CJBNmjbCgMe4UU.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/HAWk5AgecBs8CJBNmjbCgMe4UU.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads is built on top of Squads Protocol - a library of programs on Solana that together comprise the smart contract wallet layer for the ecosystem, allowing developers to leverage program level account abstraction and build a variety of products such as smart wallets and treasury management tools. Smart contract wallets is the most programmable, secure and transparent infrastructure layer for self-custody of crypto assets.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"The most widely known example of a smart contract wallet is a multisig. They have been around since the early days of Bitcoin and are widely used for the purposes of self-custody of crypto assets across blockchains with Ethereum and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://gnosis-safe.io/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Safe\"\n        })\n      }), \" leading the charge in terms of adoption and awareness. A multisig is a non-custodial solution where control over assets is not exercised by a single private key, but rather by multiple private keys acting as owners of a smart contract where the assets reside. It can be thought of as a safe that requires multiple unique keys to open it and move the assets. That means that even if one of the keys is compromised - the assets are secure (no single point of failure).\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Every Squad is a multisig at its core, which ensures that any transaction or action taken within Squads requires the approval of multiple members of the team. As a result, the risk of unauthorized or malicious activity is greatly reduced, as it becomes impossible for a single owner to access and manipulate funds or trigger harmful transactions to the protocol.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Squads Labs has been developing Squads Protocol since May 2021 and the current version (v3) has been finalized and made immutable in February 2023. Squads Labs is currently working on the next iteration of the protocol (v4) which will allow for greater programmability, permissioning and many other advanced features.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"To ensure security and reliability of the protocol we made sure that it\u2019s:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"Open source (\", /*#__PURE__*/_jsx(Link, {\n            href: \"https://github.com/Squads-Protocol/squads-mpl\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"https://github.com/Squads-Protocol/squads-mpl\"\n            })\n          }), \")\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"Immutable (\", /*#__PURE__*/_jsx(Link, {\n            href: \"https://solana.fm/address/SMPLecH534NA9acpos4G6x7uf3LWbCAwZQE9e8ZekMu?cluster=mainnet-solanafmbeta\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"https://solana.fm/address/SMPLecH534NA9acpos4G6x7uf3LWbCAwZQE9e8ZekMu?cluster=mainnet-solanafmbeta\"\n            })\n          }), \")\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"Formally verified (\", /*#__PURE__*/_jsx(Link, {\n            href: \"https://osec.io/blog/2023-01-26-formally-verifying-solana-programs\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"https://osec.io/blog/2023-01-26-formally-verifying-solana-programs\"\n            })\n          }), \")\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"3x times audited by Neodyme, OtterSec and Bramah Systems.\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"As of February 2022 close to USD 500 million in value has been secured by Squads Protocol.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-platform-value-stored-tvl-programs-delegated-how-many-projects-are-using-squads-solana\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,lqInOQ7ynmYoCLKKoWS0Xxb0Kg.png?preferredSize=full\",\n      \"data-framer-height\": \"1125\",\n      \"data-framer-width\": \"2000\",\n      height: \"562\",\n      src: new URL(\"https://framerusercontent.com/images/lqInOQ7ynmYoCLKKoWS0Xxb0Kg.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1125\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsxs(\"h2\", {\n      children: [/*#__PURE__*/_jsx(\"br\", {}), \"Platform\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"At Squads we have identified that teams coming to build on Solana acquire two main types of on-chain assets throughout the lifetime of building out their projects: (1) treasury assets (VC funding, grants, revenue); and (2) developer assets (program, token, validator). Our product offering simplifies ownership and management of both as well providing a multi-signature functionality for securing them.\"\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Treasury assets\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-treasury-management-multisig-security-staking-nfts-solana\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,NgK5xpXIm3jKpiUoRJDrOHAK5JM.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/NgK5xpXIm3jKpiUoRJDrOHAK5JM.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"When designing the treasury management aspect of Squads, we focused on fundamentals and figured out the main pain points teams run into when managing their treasury assets on-chain, which translated into a feature set allowing teams to:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Secure their treasury (fungible tokens and NFTs) in a multisig\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"Swap treasury assets (thanks to \", /*#__PURE__*/_jsx(Link, {\n            href: \"https://jup.ag/\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"Jupiter Exchange\"\n            })\n          }), \")\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Stake SOL with any Solana validator or various liquid staking providers\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Track balance of their vault and view historical data\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Add contacts and easily send transactions to them\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Send crypto to multiple addresses in a single transactions\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Interact with various dapps in protocols in the Solana ecosystem to diversify their treasury.\"\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Developer assets\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-multisig-program-upgrades-multisignature-programs-management-upgrade-authority-key-developers-assets-validators-solana-tokens-tx-builder-squads-platform\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,p4yliCVsrimer5M53LBOesdRs.png?preferredSize=full\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/p4yliCVsrimer5M53LBOesdRs.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Developer journey for teams building on Solana is full of surprises and chewing glass, so we wanted to make sure that when it comes to securing and managing core developer assets the experience is smooth and intuitive.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Program upgrades workflow and custody of the program upgrade authority are both burning questions for any team that ships to mainnet. He who controls the upgrade authority - controls the program, so the stakes are as high as they can be. With Squads, teams can transfer upgrade authority to a multisig, thus ensuring that control over the program does not reside with a single key. Once the authority is with a Squad, program upgrades happen via our user flow and require multisig approval before deployments allowing for greater security, transparency and decentralization.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Withdraw authority to a validator and token authority for your protocol token can be secured in a Squad and managed via user flows and dashboards we have built out for both.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Finally, the transaction builder allows to create custom transactions and populate them with arbitrary instructions providing an open design space for developers to craft custom workflows for interacting with their own or third party programs on Solana.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Squads is widely adopted by teams on Solana with treasury management, program management and transaction building being the most popular features to date. Our users include teams like Marginfi, Drift, Helius, Kamino, Clockwork, Pyth, Raydium, Jito and many others.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Labs\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"squads-labs-contributor-squads-platform-squads-protocol-fuse-solana-smart-wallet-squads\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,sy3RDJJPzag3gizx3qmjJ7G8Y.png\",\n      \"data-framer-height\": \"1052\",\n      \"data-framer-width\": \"2000\",\n      height: \"526\",\n      src: new URL(\"https://framerusercontent.com/images/sy3RDJJPzag3gizx3qmjJ7G8Y.png\").href,\n      style: {\n        aspectRatio: \"2000 / 1052\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(Link, {\n        href: \"http://sqds.io/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Squads Labs\"\n        })\n      }), \" is a company that is the main contributor to Squads Protocol as well an entity delivering various product experiences on top of it. More information about the team can be found \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://squads.so/about\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"here\"\n        })\n      }), \".\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Our partners and investors include Multicoin Capital, Jump Crypto, Collab + Currency, Delphi Digital, Reciprocal Ventures, Solana Ventures and others.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Get Started:\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Squads platform:\\xa0\"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://v3.squads.so/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://v3.squads.so/\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Read the documentation:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.squads.so/squads-v3-docs/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://docs.squads.so/squads-v3-docs/\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Review the code:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Join the community:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://discord.com/invite/tYpY9UfRFx\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://discord.com/invite/tYpY9UfRFx\"\n          })\n        })\n      })]\n    })]\n  }),\n  yS7KGZkDE: \"If you want to learn about Squads, Squads Protocol and Squads Labs, but only have time to read one article - this is it, this is the article.\",\n  z73Iw8W3B: \"Introducing: Squads\"\n}, {\n  aRsDZYt0I: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/L9yzejcvHZx79igT3YCxyfyI.png\").href\n  }, \"Custody Manage Assets on Solana The Best Blockchain To Store Cryptos Squads Multisig Wallet Platform Solana Custody\"),\n  F206_nB9l: addImageAlt({\n    src: new URL(\"https://framerusercontent.com/images/khN01apZ1SRlEDay6Yf9uNvIsc.png\").href,\n    srcSet: `${new URL(\"https://framerusercontent.com/images/khN01apZ1SRlEDay6Yf9uNvIsc.png?scale-down-to=512\").href} 512w, ${new URL(\"https://framerusercontent.com/images/khN01apZ1SRlEDay6Yf9uNvIsc.png\").href} 1000w`\n  }, \"\"),\n  id: \"B0zuRcLP2\",\n  LXPPb0mj_: \"why-custody-assets-on-solana\",\n  MJoGirltk: \"2023-03-01T00:00:00.000Z\",\n  uA_wjTqpl: \"Research\",\n  uKouEtnxr: \"Yes\",\n  xt1rryj9L: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"TL;DR\"\n      })\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Solana currently has the highest number of transactions per second among any blockchain, thanks to unique technology that is unseen elsewhere. Its fast network allows for near-instant trades with almost no gas fees.\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"While Solana's core engineers have focused a lot on innovation and speed over the last year, stability and robustness of the network are now the main priorities for 2023.\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Firedancer is a second Solana client validator built by Jump that will enable the network to continue to operate even if an issue arises in the main validator client.\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsx(\"p\", {\n          children: \"Solana has a Nakamoto coefficient of 30, making it one of the most decentralized and censorship-resistant Layer 1s.\"\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"The Solana ecosystem has one of the most active communities of developers and users across all blockchains, enabling innovative NFT and DeFi products.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n            className: \"trailing-break\"\n          })]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"When it comes to crypto self-custody, a main concern commonly shared is the secure storage and management of private keys. However, another crucial aspect of self-custody that is not often emphasized, yet is just as important, is the choice of a blockchain for managing crypto assets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"It is essential to carefully evaluate factors such as transaction speed, decentralization, security, liquidity, and available products before selecting a crypto network to hold assets in. Being limited on a less favorable crypto network by not having the freedom to freely transfer funds, hedge positions, or access opportunities is not the experience that users should have.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Among the various blockchains available, one is uniquely positioned as offering the best features for users seeking to hold their cryptos on a decentralized network: Solana.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"The Solana Network\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Whether it is its technology offering high transaction speeds, its diversified ecosystem of financial products, or its distinctive user-centric experience, Solana has numerous attributes making it a superior choice to custody assets on it, the first one being its lightning fast network.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"While in 2021 claiming to be the fastest Layer 1 in the world was a common thing to say, Solana has differentiated itself by actively moving towards its aim of being a \u201Cblockchain at NASDAQ speed\u201D, with currently around 4,000 consistent transactions per second.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"Solana TPS transactions per second compared to other blockchains Solana network status down issues network health\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,jf6WKT0hBdlyNOdHiEASpYH8FdY.png?preferredSize=full\",\n      \"data-framer-height\": \"978\",\n      \"data-framer-width\": \"2000\",\n      height: \"489\",\n      src: new URL(\"https://framerusercontent.com/images/jf6WKT0hBdlyNOdHiEASpYH8FdY.png\").href,\n      style: {\n        aspectRatio: \"2000 / 978\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Solana\u2019s TPS have steadily increased in 2023, nearly 4,000 to date. \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://dune.com/queries/1383050/2352024\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"Source\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \".\"\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Solana is the only blockchain in 2023 reaching these numbers. Although it is true that a majority of transactions executed concern consensus votes, Solana\u2019s non-vote TPS are still near 300-400 when no other blockchain is currently close to performing this level of speed. The closest network to Solana in terms of throughput is Polygon, with around \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://ethtps.info/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"35 transactions per second\"\n        })\n      }), \".\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Proof of History (PoH), Sealevel, and Tower BFT are some of the Solana\u2019s underlying technologies that enable the network to scale transactions and be the fastest crypto blockchain. These pillars of innovation offer various advantages to users managing their assets on the network:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      style: {\n        \"--framer-text-alignment\": \"start\",\n        \"--framer-text-color\": \"rgb(0, 0, 0)\",\n        \"--framer-text-transform\": \"none\"\n      },\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        style: {\n          \"--framer-font-size\": \"18px\",\n          \"--framer-letter-spacing\": \"0px\",\n          \"--framer-line-height\": \"1.5em\",\n          \"--framer-text-alignment\": \"start\",\n          \"--framer-text-color\": \"rgb(102, 102, 102)\",\n          \"--framer-text-decoration\": \"none\",\n          \"--framer-text-transform\": \"none\"\n        },\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"Near \", /*#__PURE__*/_jsx(\"strong\", {\n            children: \"instant transaction times\"\n          }), \", ~\", /*#__PURE__*/_jsx(Link, {\n            href: \"https://dune.com/queries/1383046/2352016\",\n            openInNewTab: false,\n            smoothScroll: false,\n            children: /*#__PURE__*/_jsx(\"a\", {\n              children: \"400 milliseconds\"\n            })\n          })]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        style: {\n          \"--framer-font-size\": \"18px\",\n          \"--framer-letter-spacing\": \"0px\",\n          \"--framer-line-height\": \"1.5em\",\n          \"--framer-text-alignment\": \"start\",\n          \"--framer-text-color\": \"rgb(102, 102, 102)\",\n          \"--framer-text-decoration\": \"none\",\n          \"--framer-text-transform\": \"none\"\n        },\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [\"Extremely \", /*#__PURE__*/_jsx(\"strong\", {\n            children: \"low transaction fees\"\n          }), \", ~$0.001 for a swap\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        style: {\n          \"--framer-font-size\": \"18px\",\n          \"--framer-letter-spacing\": \"0px\",\n          \"--framer-line-height\": \"1.5em\",\n          \"--framer-text-alignment\": \"start\",\n          \"--framer-text-color\": \"rgb(102, 102, 102)\",\n          \"--framer-text-decoration\": \"none\",\n          \"--framer-text-transform\": \"none\"\n        },\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"High scalability\"\n          }), \", as the network can handle thousands of transactions per second.\"]\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For instance, holding crypto assets on a fast blockchain like Solana can minimize the risks of trades being executed at bad prices, as transactions are executed almost instantly in milliseconds. It also allows making trades faster and more efficiently, potentially increasing profits for users.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"On the other side, speed reduce the risks of lost opportunities or financial losses that can be caused by transaction delays or failures. All these benefits related to the incredible network\u2019s speed provide a competitive edge over slower blockchains to Solana users, such as traders or institutions.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Antifragile Scalability\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In addition to being extremely fast, the Solana blockchain is built in such a way that it improves as the hardware used by its validators upgrade, allowing it to gradually scale up to higher throughput to handle more transactions per second.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"This, combined with continuous core technology improvements and updates from contributors and the community, enables the Solana network to grow and always be able to onboard more users as it scales, making it a first choice as a blockchain for custodying assets.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"Solana vs Ethereum Daily Transactions Active Users Blockchain Networks Ethereum Polygon Solana Daily Transactions Chart Per Day Fee Speed\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,xe4xHzN57WU21ZS067Rj3PqEhI.png?preferredSize=full\",\n      \"data-framer-height\": \"878\",\n      \"data-framer-width\": \"2000\",\n      height: \"439\",\n      src: new URL(\"https://framerusercontent.com/images/xe4xHzN57WU21ZS067Rj3PqEhI.png\").href,\n      style: {\n        aspectRatio: \"2000 / 878\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Solana is the only live chain capable of handling +20 million transactions per day with 4,000 TPS. \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.gokustats.xyz/dashboard\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"Source\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \".\"\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"However, when the hardware is unable to keep pace, Solana must still possess the ability to accommodate thousands of additional users and transactions, otherwise the benefits of having assets on the network would not hold. Fortunately, the network is extremely well-supported by contributors and community developers that are improving it relentlessly.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"We have seen in 2022 outages and downtimes on Solana, and while these incidents were unfortunate, direct actions have been taken to address these issues and implement measures to prevent future occurrences.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Additionally, while Solana's blockchain development has been primarily led by Solana Labs/Foundation over the past years, there are now other teams that are contributing to the development of validator clients for Solana, such as \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.jito.wtf/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Jito Labs\"\n        })\n      }), \" and Jump Crypto, pushing the network further.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Firedancer, a second Solana client validator built by \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.jumptrading.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Jump Crypto\"\n        })\n      }), \", will enable users to run their validators using one of two different software packages with independent dependencies. Moreover, Firedancer has demonstrated exceptional performance, achieving a processing capacity of 600,000 TPS (!) in a test environment. This further highlights the scalability of Solana and its ability to handle large volumes of transactions in a fast and efficient manner.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Firedancer will be highly beneficial for the Solana network. By having multiple validator clients, if an issue arises in one of them, the network can continue to operate through the other, enhancing the reliability and decentralization of Solana. It will also make Solana the only other smart contract network besides Ethereum to have more than one independent validator client.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"And speaking of decentralization, everything is showing that Solana is doing well as a distributed network.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"How Solana is Decentralized and Secure\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Any blockchain network could potentially achieve near-instant transactions execution by sacrificing decentralization. This is another factor where Solana stands out, as it is currently able to process 4,000 TPS, while having one of the highest numbers of validators among other decentralized networks, as well as a strong resistance to censorship.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"When making the decision to hold assets on a blockchain, it is important to consider the decentralization and security of the network. No one wants to be unable to withdraw, sell, or even access their assets. If validators are located too closely together, they can pose a risk to the network and its users in the event of an incident. This is why it is important for validators to be numerous and geographically distributed.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Solana currently has a healthy amount of \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://solanabeach.io/validators\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"+2,000 validators\"\n        })\n      }), \", whereas blockchains like Cosmos Hub or Polygon have \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://chainparrot.com/blockchains-by-number-of-nodes.html\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"less than 200\"\n        })\n      }), \" validators. Besides being numerous, Solana's validators are scattered across +10 countries. Although this is not ideal yet, it is actually superior to the geographic distribution of stake by country of networks like Ethereum or \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://avascan.info/stats/staking\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Avalanche\"\n        })\n      }), \".\"]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-decentralization-vs-ethereum-is-solana-decentralized-how-many-validators-ethereum-staking-nakamato-coefficient-decentralization\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,E7FX2W8E9DoOoZWTpbbOOX2ohgk.png?preferredSize=full\",\n      \"data-framer-height\": \"686\",\n      \"data-framer-width\": \"2000\",\n      height: \"343\",\n      src: new URL(\"https://framerusercontent.com/images/E7FX2W8E9DoOoZWTpbbOOX2ohgk.png\").href,\n      style: {\n        aspectRatio: \"2000 / 686\"\n      },\n      width: \"1000\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Solana and Ethereum Geographic Distribution of Stake by Country Source \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.validators.app/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"1\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \"; \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.ethernodes.org/countries\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"2\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \".\"\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The validators of a blockchain should not be located in the same country, as it could leave the network and its associated projects vulnerable to the regulations of that country. If a blockchain network is not well distributed, this can have negative consequences for users if validators have to shut down or follow restrictive laws, such as loss of access to their products or the ability to use their funds.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Regarding how are distributed the staked tokens between validators, Solana has a Nakamoto coefficient of 30, making it one of the hardest networks to collude alongside Avalanche and Polkadot. Ethereum 2.0, on the other hand, only has a coefficient of 2, due to Lido and Coinbase being the \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://decrypt.co/109901/big-firms-dominate-post-merge-ethereum-validation\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"two largest stakers of Ethereum\"\n        })\n      }), \".\"]\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Its Diversity of Financial Products and Projects\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Beyond its speed and security, the Solana\u2019s performant infrastructure makes possible the creation of unique decentralized financial products, unseen elsewhere, and close to what is possible in traditional finance. This gives another competitive advantage to Solana users, as they are able to access new forms of yield to get the most of their assets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In addition, Solana also has a well-developed ecosystem with a diverse range of projects and one of the highest active community of developers among crypto, providing more options for individuals and companies managing assets on it.\"\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"Solana Technology Enables Unique Yield Opportunities\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Apart from having access to a variety of DeFi primitives such as lending, borrowing and leverage, the Solana ecosystem has also seen the emergence of new decentralized financial products, including order book (CLOB), concentrated liquidity, high-performance trading, leveraged yield farming, or even prediction markets.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"credix-real-world-assets-solana-rwa-partnership-uxd-solana-stablecoin-rwa-yield\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,J1HZ9XP7yzKDVPBmZ1JGpSwHUs.png?preferredSize=full\",\n      \"data-framer-height\": \"532\",\n      \"data-framer-width\": \"1558\",\n      height: \"266\",\n      src: new URL(\"https://framerusercontent.com/images/J1HZ9XP7yzKDVPBmZ1JGpSwHUs.png\").href,\n      style: {\n        aspectRatio: \"1558 / 532\"\n      },\n      width: \"779\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"UXD, a decentralized solana stablecoin, has recently announced a partnership with Credix to collateralize UXD with real-world assets. \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://medium.com/credix/strengthening-the-uxd-stablecoin-with-real-world-assets-76c893b78563\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"Source\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \".\"\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Institutions and high net worth users can also access a wide range of investment opportunities on Solana that are similar to traditional finance products. One such example is \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://solana.com/news/case-study-credix\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Credix Finance\"\n        })\n      }), \", a decentralized credit marketplace that connects institutional investors with FinTechs in emerging markets by offering over-collateralized structured debt facilities on Solana. Other platforms such as Friktion, Zeta, PsyOptions, are also offering various on-chain crypto derivatives and structured products.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In terms of unique decentralized financial products, Solana has seen many emerge in the last year alone:\"\n    }), /*#__PURE__*/_jsxs(\"ul\", {\n      style: {\n        \"--framer-text-alignment\": \"start\",\n        \"--framer-text-color\": \"rgb(0, 0, 0)\",\n        \"--framer-text-transform\": \"none\"\n      },\n      children: [/*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        style: {\n          \"--framer-font-size\": \"18px\",\n          \"--framer-letter-spacing\": \"0px\",\n          \"--framer-line-height\": \"1.5em\",\n          \"--framer-text-alignment\": \"start\",\n          \"--framer-text-color\": \"rgb(102, 102, 102)\",\n          \"--framer-text-decoration\": \"none\",\n          \"--framer-text-transform\": \"none\"\n        },\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"OpenBook\"\n          }), \", \", /*#__PURE__*/_jsx(\"strong\", {\n            children: \"Ellipsis\"\n          }), \": Market makers can provide liquidity on a decentralized order book and earn fees from trades.\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        style: {\n          \"--framer-font-size\": \"18px\",\n          \"--framer-letter-spacing\": \"0px\",\n          \"--framer-line-height\": \"1.5em\",\n          \"--framer-text-alignment\": \"start\",\n          \"--framer-text-color\": \"rgb(102, 102, 102)\",\n          \"--framer-text-decoration\": \"none\",\n          \"--framer-text-transform\": \"none\"\n        },\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Kamino\"\n          }), \": Users can earn trading fees from swaps with automated concentrated liquidity management vaults.\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        style: {\n          \"--framer-font-size\": \"18px\",\n          \"--framer-letter-spacing\": \"0px\",\n          \"--framer-line-height\": \"1.5em\",\n          \"--framer-text-alignment\": \"start\",\n          \"--framer-text-color\": \"rgb(102, 102, 102)\",\n          \"--framer-text-decoration\": \"none\",\n          \"--framer-text-transform\": \"none\"\n        },\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Drift\"\n          }), \", \", /*#__PURE__*/_jsx(\"strong\", {\n            children: \"Zeta\"\n          }), \": Traders can leverage BTC, ETH, SOL on a decentralized perpetual futures exchange, instead of storing their assets on a central entity like FTX.\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        style: {\n          \"--framer-font-size\": \"18px\",\n          \"--framer-letter-spacing\": \"0px\",\n          \"--framer-line-height\": \"1.5em\",\n          \"--framer-text-alignment\": \"start\",\n          \"--framer-text-color\": \"rgb(102, 102, 102)\",\n          \"--framer-text-decoration\": \"none\",\n          \"--framer-text-transform\": \"none\"\n        },\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Tulip\"\n          }), \", \", /*#__PURE__*/_jsx(\"strong\", {\n            children: \"Francium\"\n          }), \": Yield farmers can increase their exposure with leverage, and long, short, or be delta-neutral on any coin that has liquidity on an AMM pool on Solana.\"]\n        })\n      }), /*#__PURE__*/_jsx(\"li\", {\n        \"data-preset-tag\": \"p\",\n        style: {\n          \"--framer-font-size\": \"18px\",\n          \"--framer-letter-spacing\": \"0px\",\n          \"--framer-line-height\": \"1.5em\",\n          \"--framer-text-alignment\": \"start\",\n          \"--framer-text-color\": \"rgb(102, 102, 102)\",\n          \"--framer-text-decoration\": \"none\",\n          \"--framer-text-transform\": \"none\"\n        },\n        children: /*#__PURE__*/_jsxs(\"p\", {\n          children: [/*#__PURE__*/_jsx(\"strong\", {\n            children: \"Props\"\n          }), \": Users can bet on a decentralized sports exchange powered by liquidity pools.\"]\n        })\n      })]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Composability is another strong feature of Solana, as it gives projects and users the possibility to compose on top of other products through Solana\u2019s low fees and high-speed transactions. Protocols like \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://kamino.finance/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Kamino\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.atrix.finance/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Atrix\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://tulip.garden/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Tulip\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://vaults.mercurial.finance/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Meteora\"\n        })\n      }), \" would not be able to offer their products to users from other blockchains, as those networks have non-performant underlying technologies that bring slow transactions or unsustainable transaction fees.\"]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana composability examples explained solana ecosystem products transaction fees solana network\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,D6BxIVBmfRuShJBfbo9CQhFFddE.png?preferredSize=full\",\n      \"data-framer-height\": \"1014\",\n      \"data-framer-width\": \"1720\",\n      height: \"507\",\n      src: new URL(\"https://framerusercontent.com/images/D6BxIVBmfRuShJBfbo9CQhFFddE.png\").href,\n      style: {\n        aspectRatio: \"1720 / 1014\"\n      },\n      width: \"860\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"This is what Solana makes possible, while spending less than $1 in transaction fees. \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/y2kappa/status/1577138536608071681\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"Source\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \".\"\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"As well as having unique DeFi products, Solana\u2019s composability creates unique opportunities and new strategies for users that want to maximize their yield.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Solana is also one of the largest blockchains where there are the \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://usdc.cool/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"most USDC natively minted\"\n        })\n      }), \", offering great liquidity for users who prefer not to hold long positions. Additionally, this eliminates the risks associated with bridged assets other chains can have, such as Polygon or Arbitrum, which can be vulnerable to hacking and result in the loss of value for bridged USDC.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Users that custody their assets on Solana can thus diversify their portfolio strategies, generate new revenue streams, access new markets and investments opportunities unavailable elsewhere. All of this by reducing the need for intermediaries they have in traditional finance, increasing efficiency and reducing costs.\"\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"A Growing Ecosystem with A Vibrant Community\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Solana holds a unique technology for institution-grade financial applications, whether it is derivatives, structured products, high-performance trading, that aren\u2019t possible on any other current live blockchain. But it is not just about the products themselves, the teams behind them are well experienced as well to develop them.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Solana founders often have a background in traditional finance and trading, which gives them a strong foundation to create innovative decentralized financial products and infrastructure well suited for the blockchain.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"delphi-digital-solana-best-teams-tradfi-htf-web2-crypto-teams-on-solana-serious-experienced\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,gil6nudKdc56Foj66NEFpx2cZFE.png?preferredSize=full\",\n      \"data-framer-height\": \"1536\",\n      \"data-framer-width\": \"1704\",\n      height: \"768\",\n      src: new URL(\"https://framerusercontent.com/images/gil6nudKdc56Foj66NEFpx2cZFE.png\").href,\n      style: {\n        aspectRatio: \"1704 / 1536\"\n      },\n      width: \"852\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Jos\\xe9 Macedo, Partner at Delphi Digital, talking about the talents building on Solana. \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/ZeMariaMacedo/status/1589589840500523008\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"Source\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \".\"\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"And even in this bear market that the whole crypto industry is facing, there is still a significant community of developers building on the Solana ecosystem, showing an optimistic future for its users.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Across all the blockchains, Solana has the highest number of active developers, with \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/solana/status/1615398642717687842?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed&ref_url=https%3A%2F%2Fwww.notion.so%2Fthomaslefort%2FFinal-version-Why-you-should-choose-the-Solana-blockchain-to-custody-your-assets-1-5eeb27c5a1fc4e6e853cf1b7b169cfbf\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"more than 2,000 total developers\"\n        })\n      }), \" at the end of 2022, in second position after Ethereum. The total number of developers on Solana \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/rajgokal/status/1615578669006860288?s=20&t=OYU5uCIQdBhZ3sDSwbjGTw\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"has grown more than 10x since 2018\"\n        })\n      }), \", more than any other blockchain to date.\"]\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-blockchain-most-active-developers-rust-dev-crypto-development-blockchain-engineer-solana-developers\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,RzG3Wb01uyX4BhpjJnhqtoXVAXU.png?preferredSize=full\",\n      \"data-framer-height\": \"1470\",\n      \"data-framer-width\": \"1696\",\n      height: \"735\",\n      src: new URL(\"https://framerusercontent.com/images/RzG3Wb01uyX4BhpjJnhqtoXVAXU.png\").href,\n      style: {\n        aspectRatio: \"1696 / 1470\"\n      },\n      width: \"848\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"The ecosystem is also moving towards a more \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/therealchaseeb/status/1615406724231593986\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"open-source culture\"\n        })\n      }), \", as more and more major Solana DeFi projects are making their code publicly available. By moving towards greater transparency with more protocols sharing their code, users are able to trust the code rather than the individuals behind it, which enhances security. It enables anyone to deploy more safely their funds on a Solana protocol, as they can independently verify it through its code.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"But what good is a technologically advanced and diversified ecosystem blockchain if it lacks a user-friendly experience? A positive user experience is crucial for usage of the blockchain and its products, as users may have to interact frequently with their assets on the network. The third strongest benefit of custodying asset on Solana is precisely its unmatched user-experience.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Unparalleled User Experience\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Lastly, through its cutting-edge technology, Solana is capable of providing one of the most user-friendly products in the crypto space. By offering easy-to-use crypto products, Solana users can easily manage their assets, avoiding missed opportunities or financial losses.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"With features such as localized fee markets, users do not have to wait on fees to drop to send through their transaction. As Solana handles thousands of transaction per second, congestion are less supposed to happen, and users won\u2019t have to skip a buy or sell order.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Furthermore, the availability of user-friendly wallets and mobile apps such as Phantom, Glow, Ultimate, Solflare and Backpack, makes it easy for users to manage their assets without needing to be crypto experts about Solana\u2019s technology. For example, Solflare has just implemented \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/solflare_wallet/status/1615042381736206337?s=20&t=bxOxlC_y133_IcNzvY89ow\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"automatic priority fees\"\n        })\n      }), \" on their wallet, allowing users' transactions to be processed faster during times of high network usage without any additional action required from the user.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Depositing and withdrawing funds on Solana is also straightforward. Users have various options to purchase USDC, such as using their credit card through \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/glowwallet/status/1598372852310441986\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Stripe\"\n        })\n      }), \" or \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.moonpay.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"MoonPay\"\n        })\n      }), \" directly on their wallet, or by using major exchanges like Coinbase, Kraken, and Binance to deposit or withdraw USDC directly with the Solana SPL network. Additionally, \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://wormhole.com/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Wormhole\"\n        })\n      }), \" provides a decentralized way for transferring funds between Solana and other major chains, such as Polygon, Ethereum, and Binance Smart Chain, without the need for users to do a KYC.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Solana\u2019s great technology makes users forget they are, in fact, using a blockchain. With Web2 products, users are not accustomed to paying high fees or experiencing delays for transactions. Unlike other chains, Solana provides a smooth and seamless experience, with a vast range of products and services that are not disadvantaged by slowness or expensive fees.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Users can focus on the aspects that are important to them, such as managing assets, accessing new financial opportunities, buying and selling cryptos in an easy way, similar to the experience of traditional exchanges and web2 products.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"solana-user-experience-blockchain-for-everyone-low-fees-fast-transactions-daily-active-users\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,HmIlezIJniBoSFiIScnI4I1mEw0.png?preferredSize=full\",\n      \"data-framer-height\": \"812\",\n      \"data-framer-width\": \"1922\",\n      height: \"406\",\n      src: new URL(\"https://framerusercontent.com/images/HmIlezIJniBoSFiIScnI4I1mEw0.png\").href,\n      style: {\n        aspectRatio: \"1922 / 812\"\n      },\n      width: \"961\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"The users on Solana can access the same experience, with the added benefit of a decentralized network that does not rely on a central authority, is censorship resistant to regulations, and does not require identity verification to be used.\"\n    }), /*#__PURE__*/_jsx(\"h2\", {\n      children: \"Conclusion\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Solana has reached a level of scalability unmatched on any other blockchains, giving users access to unique products and opportunities, bridging the gap between DeFi and traditional finance. Every choice comes with its own set of trade-offs, but it's important to consider the full range of options available when custodying crypto assets.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"It is no surprise that major financial institutions such as Jump Crypto are heavily investing in Solana by building infrastructure to improve it even further. They recognize the current benefits of Solana and its potential for further scalability. And with more than 2000 validators and a Nakamoto coefficient of 30, it would be difficult for any country to shut down the network, providing a level of security and protection for users' assets, compared to networks with a few hundred validators.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Despite the current market conditions causing some investors to adopt a cautious approach, the advantages of utilizing a blockchain network like Solana for custodying assets is difficult to ignore. Solana's cutting-edge technology allows for high-speed trading, akin to what is typically seen on centralized exchanges or in traditional finance, which is quite noteworthy for a decentralized network.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Users who opt to store their crypto on a different blockchain may be missing out on the potential advantages and benefits of holding their assets on Solana, whether it is investment opportunities, user experience, or security.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Note: On February 25, an issue occured after the 1.14 network upgrade, impacting the network's speed and usability. This outage has not been taken lightly, and Anatoly Yakovenko, Solana's founder, \"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://twitter.com/aeyakovenko/status/1630802684801617920?s=46&t=iFaUunsHdca8O_CN3NINJw\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"publicly shared his plans\"\n          })\n        })\n      }), /*#__PURE__*/_jsx(\"em\", {\n        children: \" to prevent this unstability to happen again in the future. As mentioned earlier, the new Solana client validator built by Firedancer will also make it unlikely for this kind of event to arise again, thus reinforcing the network's robustness.\"\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    }), /*#__PURE__*/_jsx(\"h3\", {\n      children: \"About Squads\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Squads is a crypto company operations platform that simplifies management of developer and treasury assets for teams building on Solana and SVM. Open source, formally verified, immutable, audited by Neodyme and OtterSec, Squads enables teams to secure their treasuries, programs, validators, tokens in a multisig and jointly manage them.\", /*#__PURE__*/_jsx(\"br\", {}), /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"Learn more\"\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"em\", {\n        children: \"Squads platform:\\xa0\"\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://v3.squads.so/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://v3.squads.so/\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Read the documentation:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://docs.squads.so/squads-v3-docs/\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://docs.squads.so/squads-v3-docs/\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Review the code:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://github.com/Squads-Protocol/squads-mpl\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://github.com/Squads-Protocol/squads-mpl\"\n          })\n        })\n      }), /*#__PURE__*/_jsxs(\"em\", {\n        children: [/*#__PURE__*/_jsx(\"br\", {}), \"Join the community:\\xa0\"]\n      }), /*#__PURE__*/_jsx(Link, {\n        href: \"https://discord.com/invite/tYpY9UfRFx\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: /*#__PURE__*/_jsx(\"em\", {\n            children: \"https://discord.com/invite/tYpY9UfRFx\"\n          })\n        })\n      })]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"br\", {\n        className: \"trailing-break\"\n      })\n    })]\n  }),\n  yS7KGZkDE: \"Among the various blockchains available, one is uniquely positioned as offering the best features for users seeking to hold their cryptos on a decentralized network: Solana.\",\n  z73Iw8W3B: \"Why Custody your Assets on Solana\"\n}];\nfor (const item of data) {\n  Object.freeze(item);\n}\naddPropertyControls(data, {\n  z73Iw8W3B: {\n    defaultValue: \"\",\n    title: \"Title\",\n    type: ControlType.String\n  },\n  LXPPb0mj_: {\n    title: \"Slug\",\n    type: ControlType.String\n  },\n  MJoGirltk: {\n    defaultValue: \"\",\n    title: \"Date\",\n    type: ControlType.Date\n  },\n  uA_wjTqpl: {\n    defaultValue: \"Squads Research\",\n    title: \"Category\",\n    type: ControlType.String\n  },\n  uKouEtnxr: {\n    defaultValue: \"\",\n    title: \"Visible\",\n    type: ControlType.String\n  },\n  aRsDZYt0I: {\n    __defaultAssetReference: \"data:framer/asset-reference,F25gBHugAD1bW0h70acezy6z8.png?originalFilename=Simple+Fill%402x.png&preferredSize=auto\",\n    title: \"Image\",\n    type: ControlType.ResponsiveImage\n  },\n  yS7KGZkDE: {\n    defaultValue: \"\",\n    displayTextArea: true,\n    title: \"Meta Description\",\n    type: ControlType.String\n  },\n  F206_nB9l: {\n    title: \"Preview image \",\n    type: ControlType.ResponsiveImage\n  },\n  xt1rryj9L: {\n    defaultValue: \"\",\n    title: \"Content\",\n    type: ControlType.RichText\n  }\n});\ndata[\"displayName\"] = \"Blog\";\nexport default data;\nexport const enumToDisplayNameFunctions = {};\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"enumToDisplayNameFunctions\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"default\": {\n      \"type\": \"data\",\n      \"name\": \"data\",\n      \"annotations\": {\n        \"framerData\": \"\",\n        \"framerRecordIdKey\": \"id\",\n        \"framerContractVersion\": \"1\",\n        \"framerSlug\": \"LXPPb0mj_\",\n        \"framerEnumToDisplayNameUtils\": \"2\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};"],
  "mappings": "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",
  "names": ["addImageAlt", "image", "alt", "data", "u", "x", "p", "Link", "item", "addPropertyControls", "ControlType", "LvnF1VNRg_default", "enumToDisplayNameFunctions", "__FramerMetadata__"]
}
