Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
4 changes: 3 additions & 1 deletion proxy/deploy-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ set -xeuo pipefail

echo "Deploy test..."

solana config set -u $SOLANA_URL
solana address || solana-keygen new --no-passphrase
export $(/spl/bin/neon-cli --evm_loader JxujFZpNBPADbfw2MnPPgnnFGruzp2ELSFWPQgrjz5D neon-elf-params /spl/bin/evm_loader.so | grep NEON_REVISION | xargs)
solana program dump "$EVM_LOADER" ./evm_loader.dump
export $(/spl/bin/neon-cli --evm_loader "$EVM_LOADER" neon-elf-params ./evm_loader.dump)

curl -v --header "Content-Type: application/json" --data '{"method":"eth_blockNumber","id":1,"jsonrpc":"2.0","params":[]}' $PROXY_URL

Expand Down
9 changes: 6 additions & 3 deletions proxy/plugin/solana_rest_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
modelInstanceLock = threading.Lock()
modelInstance = None

chainId = os.environ.get("NEON_CHAIN_ID", "0x6e") # default value 110
EXTRA_GAS = int(os.environ.get("EXTRA_GAS", "0"))

class PermanentAccounts:
Expand Down Expand Up @@ -107,10 +106,14 @@ def web3_clientVersion(self):
return self.neon_config_dict['web3_clientVersion']

def eth_chainId(self):
return chainId
neon_config_load(self)
# NEON_CHAIN_ID is a string in decimal form
return hex(int(self.neon_config_dict['NEON_CHAIN_ID']))

def net_version(self):
return str(int(chainId,base=16))
neon_config_load(self)
# NEON_CHAIN_ID is a string in decimal form
return self.neon_config_dict['NEON_CHAIN_ID']

def eth_gasPrice(self):
return hex(MINIMAL_GAS_PRICE)
Expand Down
28 changes: 15 additions & 13 deletions proxy/plugin/solana_rest_api_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,20 @@ def ether2seed(ether, program_id, base):
logger.debug('ether2program: {} {} => {} (seed {})'.format(ether, 255, acc, seed))
return (acc, 255, seed)

def read_elf_params(out_dict):
logger.debug('load for solana_url={} and evm_loader_id={}'.format(solana_url, evm_loader_id))
res = solana_cli().call('program', 'dump', evm_loader_id, './evm_loader.dump')
substr = "Wrote program to "
path = ""
for line in res.splitlines():
if line.startswith(substr):
path = line[len(substr):].strip()
if path == "":
raise Exception("cannot program dump for ", evm_loader_id)
for param in neon_cli().call("neon-elf-params", path).splitlines():
if param.startswith('NEON_') and '=' in param:
v = param.split('=')
out_dict[v[0]] = v[1]

def neon_config_load(ethereum_model):
try:
Expand All @@ -331,19 +345,7 @@ def neon_config_load(ethereum_model):
if elapsed_time < TIMEOUT_TO_RELOAD_NEON_CONFIG:
return

logger.debug('load for solana_url={} and evm_loader_id={}'.format(solana_url, evm_loader_id))
res = solana_cli().call('program', 'dump', evm_loader_id, './evm_loader.dump')
substr = "Wrote program to "
path = ""
for line in res.splitlines():
if line.startswith(substr):
path = line[len(substr):].strip()
if path == "":
raise Exception("cannot program dump for ", evm_loader_id)
for param in neon_cli().call("neon-elf-params", path).splitlines():
if param.startswith('NEON_') and '=' in param:
v = param.split('=')
ethereum_model.neon_config_dict[v[0]] = v[1]
read_elf_params(ethereum_model.neon_config_dict)
ethereum_model.neon_config_dict['load_time'] = datetime.now().timestamp()
# 'Neon/v0.3.0-rc0-d1e4ff618457ea9cbc82b38d2d927e8a62168bec
ethereum_model.neon_config_dict['web3_clientVersion'] = 'Neon/v' + \
Expand Down
7 changes: 1 addition & 6 deletions proxy/run-proxy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ if [ "$CONFIG" == "ci" ]; then
[[ -z "$ETH_TOKEN_MINT" ]] && export ETH_TOKEN_MINT=deploy
[[ -z "$COLLATERAL_POOL_BASE" ]] && export COLLATERAL_POOL_BASE=deploy
[[ -z "$NEW_USER_AIRDROP_AMOUNT" ]] && export NEW_USER_AIRDROP_AMOUNT=100
[[ -z "$NEON_CHAIN_ID" ]] && export NEON_CHAIN_ID=0x6f
[[ -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 @@ -22,7 +21,6 @@ elif [ "$CONFIG" == "local" ]; then
[[ -z "$ETH_TOKEN_MINT" ]] && export ETH_TOKEN_MINT=deploy
[[ -z "$COLLATERAL_POOL_BASE" ]] && export COLLATERAL_POOL_BASE=deploy
[[ -z "$NEW_USER_AIRDROP_AMOUNT" ]] && export NEW_USER_AIRDROP_AMOUNT=10
[[ -z "$NEON_CHAIN_ID" ]] && export NEON_CHAIN_ID=0x6f
[[ -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 @@ -32,7 +30,6 @@ elif [ "$CONFIG" == "devnet" ]; then
[[ -z "$ETH_TOKEN_MINT" ]] && export ETH_TOKEN_MINT=89dre8rZjLNft7HoupGiyxu3MNftR577ZYu8bHe2kK7g
[[ -z "$COLLATERAL_POOL_BASE" ]] && export COLLATERAL_POOL_BASE=7SBdHNeF9FFYySEoszpjZXXQsAiwa5Lzpsz6nUJWusEx
[[ -z "$NEW_USER_AIRDROP_AMOUNT" ]] && export NEW_USER_AIRDROP_AMOUNT=0
[[ -z "$NEON_CHAIN_ID" ]] && export NEON_CHAIN_ID=0x6e
[[ -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 @@ -42,7 +39,6 @@ elif [ "$CONFIG" == "testnet" ]; then
[[ -z "$ETH_TOKEN_MINT" ]] && export ETH_TOKEN_MINT=89dre8rZjLNft7HoupGiyxu3MNftR577ZYu8bHe2kK7g
[[ -z "$COLLATERAL_POOL_BASE" ]] && export COLLATERAL_POOL_BASE=7SBdHNeF9FFYySEoszpjZXXQsAiwa5Lzpsz6nUJWusEx
[[ -z "$NEW_USER_AIRDROP_AMOUNT" ]] && export NEW_USER_AIRDROP_AMOUNT=0
[[ -z "$NEON_CHAIN_ID" ]] && export NEON_CHAIN_ID=0x6f
[[ -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 @@ -54,15 +50,14 @@ fi
[[ -z "$EVM_LOADER" ]] && echo "EVM_LOADER is not set" && exit 1
[[ -z "$ETH_TOKEN_MINT" ]] && echo "ETH_TOKEN_MINT is not set" && exit 1
[[ -z "$COLLATERAL_POOL_BASE" ]] && echo "COLLATERAL_POOL_BASE is not set" && exit 1
[[ -z "$NEON_CHAIN_ID" ]] && echo "NEON_CHAIN_ID is not set" && exit 1

echo SOLANA_URL=$SOLANA_URL

solana config set -u $SOLANA_URL

solana config get

for i in {1..10}; do
for i in {1..30}; do
if solana cluster-version; then break; fi
sleep 2
done
Expand Down
1 change: 0 additions & 1 deletion proxy/test_cancel_hanged.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
os.environ['EVM_LOADER'] = "53DfF883gyixYNXnM7s5xhdeyV8mVk9T4i2hGV9vG9io"
os.environ['ETH_TOKEN_MINT'] = "HPsV9Deocecw3GeZv1FkAPNCBRfuVyfw9MMwjwRe1xaU"
os.environ['COLLATERAL_POOL_BASE'] = "4sW3SZDJB7qXUyCYKA7pFL8eCTfm3REr8oSiKkww7MaT"
os.environ['NEON_CHAIN_ID'] = "0x6f"

import base64
import unittest
Expand Down
45 changes: 45 additions & 0 deletions proxy/test_environment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import unittest
import os
from web3 import Web3
from proxy.plugin.solana_rest_api_tools import read_elf_params

proxy_url = os.environ.get('PROXY_URL', 'http://127.0.0.1:9090/solana')
proxy = Web3(Web3.HTTPProvider(proxy_url))

class Test_Environment(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.elf_params = {}
read_elf_params(cls.elf_params)

def test_read_elf_params(self):
print("\n\nhttps://github.com/neonlabsorg/neon-evm/issues/347")
elf_params = {}
read_elf_params(elf_params)

neon_chain_id = elf_params.get('NEON_CHAIN_ID', None)
self.assertTrue(neon_chain_id is not None)
self.assertEqual(neon_chain_id, os.environ.get('NEON_CHAIN_ID', None))

neon_token_mint = elf_params.get('NEON_TOKEN_MINT', None)
self.assertTrue(neon_token_mint is not None)
self.assertEqual(neon_token_mint, os.environ.get('NEON_TOKEN_MINT', None))

neon_pool_base = elf_params.get('NEON_POOL_BASE', None)
self.assertTrue(neon_pool_base is not None)
self.assertEqual(neon_pool_base, os.environ.get('NEON_POOL_BASE', None))

def test_neon_chain_id(self):
print("\n\nhttps://github.com/neonlabsorg/neon-evm/issues/347")
neon_chain_id = os.environ.get('NEON_CHAIN_ID', None)
print(f"NEON_CHAIN_ID = {neon_chain_id}")
self.assertTrue(neon_chain_id is not None)

eth_chainId: int = proxy.eth.chain_id
print(f"eth_chainId = {eth_chainId}")
self.assertEqual(eth_chainId, int(neon_chain_id))

net_version: str = proxy.net.version
print(f"net_version = {net_version}")
self.assertEqual(net_version, neon_chain_id)