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?