Skip to main content

Proxy local testing

Prerequisites

  • Ubuntu/Intel

    This tutorial presents a flow using an Intel chip with Ubuntu (as of the time of writing, the Solana image does not support alternative operating systems).

  • Browser supporting a MetaMask wallet

    This tutorial uses Brave.

  • Docker compose v>2.12.1
  • 1 Terabyte or more to run the Solana standalone node

    Solana provides further details on the recommended minimum requirements.

  • nmap (or equivalent)

Step 1: Clone a local copy of the code

Clone the Neon Proxy for Solana: https://github.com/neonlabsorg/proxy-model.py and change directory (cd) into the folder.

Step 2: Configure environment variables

Set the following variables to "latest" to work with the Docker image's latest settings. Run the commands:

export NEON_EVM_COMMIT=latest; export REVISION=latest; export FAUCET_COMMIT=latest

Step 3: Run the Docker container

Working at the root folder of the proxy-model.py codebase:

3.1 Pull the Docker image:

docker-compose -f ./docker-compose/docker-compose-test.yml pull

3.2 Start the proxy with:

docker-compose -f ./docker-compose/docker-compose-test.yml up

Let's check the status of our containers with:

docker stats

Congratulations, you are now running Neon EVM deployed to a single, local node of Solana.

tip

When you are at the point where you are willing to lose your data, then free your disk space and close the instance by running:

docker-compose -f ./docker-compose/docker-compose-test.yml down

Step 4: Set up MetaMask wallet to run with the local proxy

Set up your MetaMask wallet with the proxy:

Tip:

Run nmap, or equivalent, to view the ports the services are running on:

nmap localhost

The port 9090 is our proxy and 3333 is our faucet.

From your browser's MetaMask extension, set the localhost as a network within the MetaMask wallet, click: Settings > Networks > Add a Network > Add a network manually

4.2 Fill out the following fields:

  • Network name: Neon Localhost
  • New RPC URL: http://localhost:9090/solana
  • Chain ID: 111
  • Currency symbol: NEON

And click Save.

Step 5: Use the faucet to populate your wallet with NEON tokens

5.1 Copy your account address from your MetaMask wallet and update the following script to use your address:

file: drop_neons.sh

#!/usr/bin/env bash

if [ -z "$1" ]; then
echo "Usage: drop_neons.sh <wallet-address>"
exit 1
fi

/usr/bin/curl --location --request POST 'http://localhost:3333/request_neon' \
--header 'Content-Type: application/json' \
--data-raw '{
"wallet": "'${1}'",
"amount": 1000
}'

5.2 From your terminal, at the file location run sh ./drop_neons.sh {wallet address}.

Gotchas

  • It is recommended that you have a couple of terabytes of free space! Should you want to run your node with persistent data, the space requirements will grow.

  • The MetaMask Wallet may not update automatically:

    Neon Localhost to force a refresh after using the faucet
  • It is only possible to set up the localhost network in the MetaMask wallet while the proxy service is running.

  • If you are following best practice, and adding your user to the docker group to avoid running Docker as root or sudo, then restart to apply the update.

What next?

Congratulations you can now deploy and test smart contracts on the NeonEVM. Consider:

Was this page helpful?