Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
switch to new evm_loader deployment
  • Loading branch information
ivanl committed Nov 11, 2021
commit acf4176ec78202b29368f227d316229fe9014500
1 change: 1 addition & 0 deletions .buildkite/steps/deploy-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ docker-compose -f proxy/docker-compose-test.yml up -d
function cleanup_docker {
docker logs proxy >proxy.log 2>&1
docker logs solana >solana.log 2>&1
docker logs evm_loader >evm_loader.log 2>&1
grep 'get_measurements' <proxy.log >measurements.log
echo "Cleanup docker-compose..."
docker-compose -f proxy/docker-compose-test.yml down --rmi 'all'
Expand Down
8 changes: 2 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,9 @@ COPY --from=cli /opt/solana/bin/solana \
/cli/bin/

COPY --from=spl /opt/solana/bin/solana /cli/bin/
COPY --from=spl /opt/evm_loader.so /opt/evm_loader-keypair.json \
/opt/neon-cli /opt/faucet /spl/bin/
COPY --from=spl /opt/spl-token /opt/test_token_keypair /opt/test_token_owner /spl/bin/
COPY --from=spl /opt/collateral_pool_generator.py \
/opt/solana_utils.py \
COPY --from=spl /opt/neon-cli /opt/faucet /spl/bin/
COPY --from=spl /opt/solana_utils.py \
/opt/eth_tx_utils.py \
/opt/collateral-pool-keypair.json \
/spl/bin/
COPY --from=spl /opt/neon-cli /spl/bin/emulator

Expand Down
33 changes: 32 additions & 1 deletion proxy/docker-compose-test.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version: "2.1"
version: "3"

services:
solana:
Expand All @@ -17,6 +17,23 @@ services:
networks:
- net

evm_loader:
container_name: evm_loader
image: neonlabsorg/evm_loader:${EVM_LOADER_REVISION:-latest}
environment:
- SOLANA_URL=http://solana:8899
- CONFIG=ci
volumes:
- deployment_data:/var/deployment_data
networks:
- net
command: >
wait-for-solana.sh 20
&& create-test-accounts.sh 1
&& deploy-evm.sh
&& cp evm_loader_id /var/deployment_data/
&& cp evm_loader-keypair.json /var/deployment_data/

postgres:
container_name: postgres
image: postgres:14.0
Expand All @@ -38,14 +55,28 @@ services:
POSTGRES_DB: neon-db
POSTGRES_USER: neon-proxy
POSTGRES_PASSWORD: neon-proxy-pass
NEW_USER_AIRDROP_AMOUNT: 100
CONFIG: ci
hostname: proxy
depends_on:
evm_loader:
condition: service_completed_successfully
ports:
- 127.0.0.1:9090:9090
expose:
- "9090"
networks:
- net
volumes:
- deployment_data:/var/deployment_data
command: >
prepare-test.sh
&& run-proxy.sh

networks:
net:

volumes:
# provides data interchange between evm_loader and proxy
deployment_data:

24 changes: 24 additions & 0 deletions proxy/prepare-test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

if [ -z "$SOLANA_URL" ]; then
echo "SOLANA_URL is not set"
exit 1
fi

solana config set -u $SOLANA_URL

echo "Dumping evm_loader and extracting ELF parameters"
export EVM_LOADER=$(cat /var/deployment_data/evm_loader_id | sed '/Program Id: \([0-9A-Za-z]\+\)/,${s//\1/;b};s/^.*$//;$q1')
solana program dump "$EVM_LOADER" ./evm_loader.dump
export $(/spl/bin/neon-cli --evm_loader="$EVM_LOADER" neon-elf-params ./evm_loader.dump)

create-test-accounts.sh 1

if [ "$(spl-token balance "$NEON_TOKEN_MINT" || echo 0)" -eq 0 ]; then
[[ -z "$NEW_USER_AIRDROP_AMOUNT" ]] && export NEW_USER_AIRDROP_AMOUNT=100
echo "NEW_USER_AIRDROP_AMOUNT=$NEW_USER_AIRDROP_AMOUNT"
echo 'Create balance and mint token'
TOKEN_ACCOUNT=$( (spl-token create-account "$NEON_TOKEN_MINT" || true) | grep -Po 'Creating account \K[^\n]*')
echo "TOKEN_ACCOUNT=$TOKEN_ACCOUNT"
spl-token mint "$NEON_TOKEN_MINT" $(("$NEW_USER_AIRDROP_AMOUNT"*1000)) --owner /var/deployment_data/evm_loader-keypair.json -- "$TOKEN_ACCOUNT"
fi
73 changes: 2 additions & 71 deletions proxy/run-proxy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ date

if [ "$CONFIG" == "ci" ]; then
[[ -z "$SOLANA_URL" ]] && export SOLANA_URL="http://solana:8899"
[[ -z "$EVM_LOADER" ]] && export EVM_LOADER=deploy
[[ -z "$NEW_USER_AIRDROP_AMOUNT" ]] && export NEW_USER_AIRDROP_AMOUNT=100
[[ -z "$EVM_LOADER" ]] && export EVM_LOADER=$(cat /var/deployment_data/evm_loader_id | \
sed '/Program Id: \([0-9A-Za-z]\+\)/,${s//\1/;b};s/^.*$//;$q1')
[[ -z "$EXTRA_GAS" ]] && export EXTRA_GAS=100000
[[ -z "$NEON_CLI_TIMEOUT" ]] && export NEON_CLI_TIMEOUT="0.5"
[[ -z "$USE_COMBINED_START_CONTINUE" ]] && export USE_COMBINED_START_CONTINUE="YES"
Expand All @@ -17,8 +17,6 @@ if [ "$CONFIG" == "ci" ]; then
[[ -z "$CANCEL_TIMEOUT" ]] && export CANCEL_TIMEOUT=10
elif [ "$CONFIG" == "local" ]; then
[[ -z "$SOLANA_URL" ]] && export SOLANA_URL="http://localhost:8899"
[[ -z "$EVM_LOADER" ]] && export EVM_LOADER=deploy
[[ -z "$NEW_USER_AIRDROP_AMOUNT" ]] && export NEW_USER_AIRDROP_AMOUNT=10
[[ -z "$EXTRA_GAS" ]] && export EXTRA_GAS=0
[[ -z "$NEON_CLI_TIMEOUT" ]] && export NEON_CLI_TIMEOUT="0.9"
[[ -z "$MINIMAL_GAS_PRICE" ]] && export MINIMAL_GAS_PRICE=0
Expand All @@ -27,7 +25,6 @@ elif [ "$CONFIG" == "local" ]; then
elif [ "$CONFIG" == "devnet" ]; then
[[ -z "$SOLANA_URL" ]] && export SOLANA_URL="https://api.devnet.solana.com"
[[ -z "$EVM_LOADER" ]] && export EVM_LOADER=eeLSJgWzzxrqKv1UxtRVVH8FX3qCQWUs9QuAjJpETGU
[[ -z "$NEW_USER_AIRDROP_AMOUNT" ]] && export NEW_USER_AIRDROP_AMOUNT=0
[[ -z "$EXTRA_GAS" ]] && export EXTRA_GAS=90000
[[ -z "$NEON_CLI_TIMEOUT" ]] && export NEON_CLI_TIMEOUT="10"
[[ -z "$MINIMAL_GAS_PRICE" ]] && export MINIMAL_GAS_PRICE=1
Expand All @@ -36,7 +33,6 @@ elif [ "$CONFIG" == "devnet" ]; then
elif [ "$CONFIG" == "testnet" ]; then
[[ -z "$SOLANA_URL" ]] && export SOLANA_URL="https://api.testnet.solana.com"
[[ -z "$EVM_LOADER" ]] && export EVM_LOADER=eeLSJgWzzxrqKv1UxtRVVH8FX3qCQWUs9QuAjJpETGU
[[ -z "$NEW_USER_AIRDROP_AMOUNT" ]] && export NEW_USER_AIRDROP_AMOUNT=0
[[ -z "$EXTRA_GAS" ]] && export EXTRA_GAS=90000
[[ -z "$NEON_CLI_TIMEOUT" ]] && export NEON_CLI_TIMEOUT="15"
[[ -z "$MINIMAL_GAS_PRICE" ]] && export MINIMAL_GAS_PRICE="1"
Expand All @@ -49,73 +45,8 @@ fi
[[ -z "$SOLANA_URL" ]] && echo "SOLANA_URL is not set" && exit 1
[[ -z "$EVM_LOADER" ]] && echo "EVM_LOADER is not set" && exit 1

echo SOLANA_URL=$SOLANA_URL

solana config set -u $SOLANA_URL

solana config get

for i in {1..30}; do
if solana cluster-version; then break; fi
sleep 2
done


ADDRESS=$(solana address || echo "no wallet")

if [ "$ADDRESS" == "no wallet" ]; then
solana-keygen new --no-passphrase
fi

if ! solana account $(solana address); then
echo "airdropping..."
solana airdrop 1000
# check that balance >= 10 otherwise airdroping by 1 SOL up to 10
BALANCE=$(solana balance | tr '.' '\t'| tr '[:space:]' '\t' | cut -f1)
while [ "$BALANCE" -lt 10 ]; do
solana airdrop 1
sleep 1
BALANCE=$(solana balance | tr '.' '\t'| tr '[:space:]' '\t' | cut -f1)
done
fi

solana address
solana balance


if [ "$EVM_LOADER" == "deploy" ]; then
echo "EVM_LOADER is set to load. A new Neon-evm will be deployed. deploying evm_loader..."
solana program deploy --upgrade-authority /spl/bin/evm_loader-keypair.json /spl/bin/evm_loader.so > evm_loader_id
export EVM_LOADER=$(cat evm_loader_id | sed '/Program Id: \([0-9A-Za-z]\+\)/,${s//\1/;b};s/^.*$//;$q1')
solana program dump "$EVM_LOADER" ./evm_loader.dump
/spl/bin/neon-cli --evm_loader="$EVM_LOADER" neon-elf-params ./evm_loader.dump
fi

echo "EVM_LOADER=$EVM_LOADER"


echo "A new token will be created. Creating token..."
export ETH_TOKEN_MINT=$(/spl/bin/spl-token create-token --owner /spl/bin/test_token_owner -- /spl/bin/test_token_keypair | grep -Po 'Creating token \K[^\n]*')
echo "ETH_TOKEN_MINT=$ETH_TOKEN_MINT"


echo "A new collateral pool accounts will be created. Creating accounts..."
solana -k /spl/bin/collateral-pool-keypair.json airdrop 1000
python3 /spl/bin/collateral_pool_generator.py /spl/bin/collateral-pool-keypair.json
export COLLATERAL_POOL_BASE=$(solana-keygen pubkey -f /spl/bin/collateral-pool-keypair.json)
echo "COLLATERAL_POOL_BASE=$COLLATERAL_POOL_BASE"


if [ "$NEW_USER_AIRDROP_AMOUNT" -gt 0 -a "$(spl-token balance "$ETH_TOKEN_MINT" || echo 0)" -eq 0 ]; then
echo 'Create balance and mint token'
TOKEN_ACCOUNT=$( (spl-token create-account "$ETH_TOKEN_MINT" || true) | grep -Po 'Creating account \K[^\n]*')
echo "TOKEN_ACCOUNT=$TOKEN_ACCOUNT"
spl-token mint "$ETH_TOKEN_MINT" $(("$NEW_USER_AIRDROP_AMOUNT"*1000)) --owner /spl/bin/test_token_owner -- "$TOKEN_ACCOUNT"
fi

echo "NEW_USER_AIRDROP_AMOUNT=$NEW_USER_AIRDROP_AMOUNT"


isArg() { case "$1" in "$2"|"$2="*) true;; *) false;; esac }
EXTRA_ARGS_TIMEOUT=' --timeout 300'
for val in $EXTRA_ARGS; do
Expand Down