NeonPass: Linking Solana and Neon to Support a Low-Friction EVM-Compatibility Solution

Neon Labs
Neon Labs
Published in
7 min readFeb 17, 2022

In parallel with Neon EVM’s upcoming Alpha launch on Solana Mainnet, Neon Labs is developing infrastructure to support the platform from a technical usability and user experience standpoint. One of the most crucial pieces currently in development is NeonPass.

NeonPass links Solana and Neon EVM to provide a smoother EVM-compatibility experience for end users. NeonPass is not a bridge connecting two separate blockchain ecosystems. Rather, it acts as a two-way transfer tool for bringing assets in and out of the Neon EVM platform, which itself is a Solana smart contract directly connected to the network. Completion of the NeonPass tool will be a significant milestone towards our goal of integrating Neon with Solana as natively as possible.

Under the hood, NeonPass functions by transferring SPL tokens from standard Solana “Associated Token Accounts” to Neon EVM Token Accounts wrapped in an ERC-20 interface within Neon EVM. Neon EVM ERC-20-wrapped Token Accounts are specialized Solana accounts instantiated in the Neon ecosystem. These accounts can interact with Solidity dApps and are similar in structure to Associated Token Accounts in the broader Solana environment. They store tokens associated with a user’s Neon EVM-facing MetaMask wallet.

It’s important to recognize that NeonPass sends the original SPL asset from the source to the target address. This “transfer” feature differs greatly from the “bridging” functionality of standard blockchain bridges. Bridges lock the original assets in smart contracts and mint “synthetic” assets in the destination blockchain ecosystems. In the context of Solana-Ethereum blockchain bridges, these synthetic assets (known as SPL-wrapped assets) are SPL versions of their associated ERC20 counterparts.

NeonPass will be the revolving door of liquidity between Solana and Neon EVM. It will equip users with an easy-to-use tool for:

  1. Sending permitted SPL tokens, including NEON, into Neon EVM ERC-20-wrapped Token Accounts to use dApps and pay for Neon transactions.
    - Permitted SPL tokens, excluding NEON, have a corresponding ERC-20 wrapper deployed in Neon.
  2. Withdrawing SPL tokens from Neon EVM ERC-20-wrapped Token Accounts back to Solana
    - Once assets are on Solana, users can use Wormhole to send assets to Ethereum

Neon EVM Recap

Neon EVM is an Ethereum Virtual Machine implemented on the Solana blockchain as a smart contract. The tool serves as an EVM-compatibility solution and allows Ethereum-like transactions to be processed on Solana.

Neon EVM works by allowing Solidity smart contracts to interact with SPL tokens. The feature is implemented by storing SPL tokens within Neon EVM token accounts. These token accounts are operated upon by Solidity smart contracts and/or eth-compatible wallets (like Metamask) through an ERC-20-like interface.

Using Neon EVM, Ethereum dApp developers can leverage their knowledge of Solidity, developer tooling, and existing codebases to build on Solana. Furthermore, developers can also directly copy/paste Solidity smart contracts into the EVM and run them on Solana with no code or configuration changes. To learn more about the Neon EVM and our development roadmap, take a look at our recent article covering the Neon EVM Mainnet Alpha roadmap.

Main functionalities of NeonPass

Before diving into the main functionalities of NeonPass, it’s important to understand Solana’s unique account ownership structure. The two main considerations are:

  1. Solana accounts, and the assets they contain, can only be modified by the account owner.
  2. Solana user accounts (accessed via Solana wallets like Phantom) don’t actually contain the SPL tokens owned by the user. The SPL tokens owned by the user are contained in Associated Token Accounts owned by the “Solana Token Program”, a default program on the Solana blockchain. The authority over those tokens belongs to the user via their Solana wallet. The “Associated Token Program”, another default program on Solana, keeps track of the relationships between user accounts and various Associated Token Accounts.

The two design considerations above mean that the Neon EVM smart contract can’t modify token accounts, or the pseudo-ERC-20 assets they contain, unless the token account is owned by the Neon EVM smart contract.

To solve for the usability issues, Neon Labs created NeonPass with the following functionalities:

  • The transfer of tokens from Solana into Neon EVM to a new MetaMask account (a new MetaMask account refers to an account without any transactions.) The user’s new Neon account, tied to their MetaMask wallet, along with a Neon EVM ERC20-wrapped Token Account for the incoming token balance, is automatically created when transferring tokens.
  • This functionality is mainly for new users that have just created Neon EVM-facing MetaMask wallets.
  • The transfer of tokens from Solana into Neon EVM to an existing Neon account (MetaMask wallet address exists and has facilitated token transfers) with no balance of the incoming asset. The Neon EVM ERC20-wrapped Token Account for the incoming token balance is automatically created when transferring tokens.
  • The transfer of tokens from Solana into Neon EVM to an existing Neon account with an existing balance of the incoming asset. The incoming assets will be routed to the existing Neon EVM ERC20-wrapped Token Account related to the user’s Neon account (MetaMask wallet).
  • The withdrawal of tokens from Neon EVM to an existing Solana account (Solana wallet address) with an existing balance of the incoming SPL asset.
  • The withdrawal of tokens from Neon EVM to an existing Solana account with no balance of the incoming asset. The Associated Token Account for the incoming token balance is automatically created when transferring tokens.

Why is NeonPass important?

NeonPass is the key to unlocking the full potential of Neon EVM. The tool gives standard users an easy way to move tokens between Neon and Solana. The liquidity is necessary because:

  • NEON tokens will be SPL tokens native to Solana that need to be sent into specialized SPL accounts within the Neon EVM environment to facilitate Neon transactions.
  • Users need tokens to interact and pay for dApps. NeonPass gives users the option to use and/or consume their assets with both Solana and Ethereum-native dApps. If they want to use Solana dApps, they’ll withdraw assets from Neon. If they want to use Ethereum-like dApps, they can send their assets into Neon.

How does it work?

As mentioned before, NeonPass is a UI that simplifies the process of transferring SPL tokens between standard Solana accounts and Neon EVM’s specialized Solana accounts.

NeonPass automates the creation of transaction instructions instead of requiring users to manually structure transactions to create accounts, route assets to the correct destinations, and request transaction approval. NeonPass identifies the state of the source and destination addresses to determine:

  • Whether an existing token account for the in-bound asset is tied to the user’s Neon EVM Metamask when sending tokens into the Neon ecosystem
  • Whether an existing “Associated Token Account” for the inbound asset is tied to the user’s Solana wallet when withdrawing tokens into the broader Solana ecosystem

The variables above inform NeonPass on whether to request the creation of a new account by Neon EVM or Solana, or whether to route the assets to an existing specialized SPL account or standard Solana account.

When sending tokens into the Neon ecosystem, NeonPass will request to transfer the user’s funds from an Associated Token Account tied to their Solana Wallet into a Neon EVM-owned Token Account. The transfer authorization is then provided by the user via the Solana wallet that the assets are tied to.

When withdrawing tokens into the Solana ecosystem, NeonPass will initiate two transactions:

  1. The first transaction is a request for Neon EVM to delegate authority of the tokens in the source specialized SPL account to the user’s target Solana wallet. This action is needed because Neon EVM owns the specialized SPL account. The request is approved via the user’s MetaMask wallet in the Neon EVM. The request will contain the address of the target Solana account and the amount of tokens that the account is authorized to receive.
  2. The second transaction is a request to the user’s target Solana wallet to approve and facilitate the transfer of assets from the source Neon EVM ERC20-wrapped Token Account into the destination Associated Token Account tied to the target Solana wallet. This transaction is where the funds transfer actually occurs.

How to Get Started

The alpha version of NeonPass supports full desktop access via a Web UI. Currently, NeonPass only works with MetaMask and Phantom — two popular non-custodial browser-based wallets. Additionally, the tool only allows the transfer of NEON and Wormhole-wrapped USDT, USDC, ETH, and SOL. The reason why SOL needs to be wrapped by Wormhole is because Neon EVM Alpha only recognizes NEON and Wormhole-wrapped SPL assets. SOL is the native cryptocurrency on the Solana blockchain and technically isn’t an SPL token. In future versions of Neon EVM, additional token support will be implemented and bridges integrated.

To try out NeonPass for yourself:

For Solana to Neon

  1. Go to https://neonpass.live/
  2. Connect your Phantom wallet as the source
  3. Select a supported token and the amount you wish to transfer
  4. Connect your Neon EVM MetaMask wallet as the target
  5. Review the transfer details and click “confirm”
  6. Approve the transaction request using your Phantom wallet
  7. Click “View on Solana Explorer” to review your transaction details on Solscan

For Neon to Solana

  1. Go to https://neonpass.live/
  2. Connect your Neon EVM MetaMask wallet as the source
  3. Select a supported token and the amount you wish to transfer
  4. Connect your Phantom wallet as the target
  5. Review the transfer details and click “confirm”
  6. Approve the delegation request using your MetaMask wallet
  7. Approve the transfer request using your Phantom wallet
  8. Click “View on Solana Explorer” to review your transaction details on Solscan

Next Steps

If you have any remaining questions or are looking for more details regarding NeonPass, take a look at our developer documents linked below:

NeonPass is rapidly evolving. If this article or the docs linked above leave you with further questions, reach out to our team via Discord. We’ll be more than happy to help you understand NeonPass functionality to support our growing cross-chain ecosystem.

--

--