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
get rid of ETH_TOKEN_MINT and COLLATERAL_POOL_BASE variables in sourc…
…e code
  • Loading branch information
ivanl committed Nov 6, 2021
commit 851cd9c92faa2acfe1f8e31bef9bc403425cdd15
60 changes: 60 additions & 0 deletions proxy/environment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import os
import subprocess
import logging
from solana.publickey import PublicKey

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

solana_url = os.environ.get("SOLANA_URL", "http://localhost:8899")
evm_loader_id = os.environ.get("EVM_LOADER")
neon_cli_timeout = float(os.environ.get("NEON_CLI_TIMEOUT", "0.1"))

class solana_cli:
def call(self, *args):
try:
cmd = ["solana",
"--url", solana_url,
] + list(args)
print(cmd)
return subprocess.check_output(cmd, universal_newlines=True)
except subprocess.CalledProcessError as err:
import sys
logger.debug("ERR: solana error {}".format(err))
raise


class neon_cli:
def call(self, *args):
try:
cmd = ["neon-cli",
"--commitment=recent",
"--url", solana_url,
"--evm_loader={}".format(evm_loader_id),
] + list(args)
print(cmd)
return subprocess.check_output(cmd, timeout=neon_cli_timeout, universal_newlines=True)
except subprocess.CalledProcessError as err:
import sys
logger.debug("ERR: neon-cli error {}".format(err))
raise

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]

ELF_PARAMS = {}
read_elf_params(ELF_PARAMS)
COLLATERAL_POOL_BASE = ELF_PARAMS.get("NEON_POOL_BASE")
ETH_TOKEN_MINT_ID: PublicKey = PublicKey(ELF_PARAMS.get("NEON_TOKEN_MINT"))
4 changes: 1 addition & 3 deletions proxy/indexer/solana_receipts_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from multiprocessing.dummy import Pool as ThreadPool
from sqlitedict import SqliteDict
from typing import Dict, Union
from proxy.environment import solana_url, evm_loader_id


try:
Expand All @@ -16,11 +17,8 @@
from .utils import check_error, get_trx_results, get_trx_receipts, LogDB, Canceller


solana_url = os.environ.get("SOLANA_URL", "https://api.devnet.solana.com")
evm_loader_id = os.environ.get("EVM_LOADER", "eeLSJgWzzxrqKv1UxtRVVH8FX3qCQWUs9QuAjJpETGU")
PARALLEL_REQUESTS = int(os.environ.get("PARALLEL_REQUESTS", "2"))


logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

Expand Down
9 changes: 3 additions & 6 deletions proxy/indexer/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,8 @@
from spl.token.constants import TOKEN_PROGRAM_ID
from spl.token.instructions import get_associated_token_address
from web3.auto.gethdev import w3
from proxy.environment import solana_url, evm_loader_id, ETH_TOKEN_MINT_ID


solana_url = os.environ.get("SOLANA_URL", "https://api.devnet.solana.com")
evm_loader_id = os.environ.get("EVM_LOADER", "eeLSJgWzzxrqKv1UxtRVVH8FX3qCQWUs9QuAjJpETGU")
ETH_TOKEN_MINT_ID = os.environ.get("ETH_TOKEN_MINT", "89dre8rZjLNft7HoupGiyxu3MNftR577ZYu8bHe2kK7g")
sysvarclock = "SysvarC1ock11111111111111111111111111111111"
sysinstruct = "Sysvar1nstructions1111111111111111111111111"
keccakprog = "KeccakSecp256k11111111111111111111111111111"
Expand Down Expand Up @@ -303,7 +300,7 @@ def __init__(self):
self.client = Client(solana_url)

self.operator = self.signer.public_key()
self.operator_token = get_associated_token_address(PublicKey(self.operator), PublicKey(ETH_TOKEN_MINT_ID))
self.operator_token = get_associated_token_address(PublicKey(self.operator), ETH_TOKEN_MINT_ID)


def call(self, *args):
Expand All @@ -321,7 +318,7 @@ def call(self, *args):
def unlock_accounts(self, blocked_storages):
readonly_accs = [
PublicKey(evm_loader_id),
PublicKey(ETH_TOKEN_MINT_ID),
ETH_TOKEN_MINT_ID,
PublicKey(TOKEN_PROGRAM_ID),
PublicKey(sysvarclock),
PublicKey(sysinstruct),
Expand Down
5 changes: 3 additions & 2 deletions proxy/plugin/solana_rest_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
import base58
import traceback
import threading
from .solana_rest_api_tools import EthereumAddress, create_account_with_seed, evm_loader_id, getTokens, \
getAccountInfo, solana_cli, call_signed, solana_url, call_emulated, \
from .solana_rest_api_tools import EthereumAddress, create_account_with_seed, getTokens, \
getAccountInfo, call_signed, call_emulated, \
Trx, EthereumError, create_collateral_pool_address, getTokenAddr, STORAGE_SIZE, neon_config_load, MINIMAL_GAS_PRICE
from solana.rpc.commitment import Commitment, Confirmed
from web3 import Web3
Expand All @@ -35,6 +35,7 @@
import os
from ..indexer.utils import get_trx_results, LogDB
from sqlitedict import SqliteDict
from proxy.environment import evm_loader_id, solana_cli, solana_url

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
Expand Down
53 changes: 2 additions & 51 deletions proxy/plugin/solana_rest_api_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import random
import re
import struct
import subprocess
import time
from datetime import datetime
from hashlib import sha256
Expand All @@ -29,20 +28,17 @@
from spl.token.constants import ACCOUNT_LEN, ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID
from spl.token.instructions import get_associated_token_address, create_associated_token_account, transfer2, Transfer2Params
from web3.auto import w3

from proxy.environment import neon_cli, evm_loader_id, ETH_TOKEN_MINT_ID, COLLATERAL_POOL_BASE, read_elf_params
from .eth_proto import Trx

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

solana_url = os.environ.get("SOLANA_URL", "http://localhost:8899")
evm_loader_id = os.environ.get("EVM_LOADER")
COLLATERAL_POOL_BASE = os.environ.get("COLLATERAL_POOL_BASE")

NEW_USER_AIRDROP_AMOUNT = int(os.environ.get("NEW_USER_AIRDROP_AMOUNT", "0"))
#evm_loader_id = "EfyDoGDRPy7wrLfSLyXrbhiAG6NmufMk1ytap13gLy1"
location_bin = ".deploy_contract.bin"
confirmation_check_delay = float(os.environ.get("NEON_CONFIRMATION_CHECK_DELAY", "0.1"))
neon_cli_timeout = float(os.environ.get("NEON_CLI_TIMEOUT", "0.1"))
USE_COMBINED_START_CONTINUE = os.environ.get("USE_COMBINED_START_CONTINUE", "YES") == "YES"
CONTINUE_COUNT_FACTOR = int(os.environ.get("CONTINUE_COUNT_FACTOR", "3"))
TIMEOUT_TO_RELOAD_NEON_CONFIG = int(os.environ.get("TIMEOUT_TO_RELOAD_NEON_CONFIG", "3600"))
Expand All @@ -57,10 +53,6 @@
incinerator = "1nc1nerator11111111111111111111111111111111"
system = "11111111111111111111111111111111"

ETH_TOKEN_MINT_ID: PublicKey = PublicKey(
os.environ.get("ETH_TOKEN_MINT", "HPsV9Deocecw3GeZv1FkAPNCBRfuVyfw9MMwjwRe1xaU")
)

STORAGE_SIZE = 128*1024

ACCOUNT_INFO_LAYOUT = cStruct(
Expand Down Expand Up @@ -245,34 +237,7 @@ def emulator(contract, sender, data, value):
return neon_cli().call("emulate", sender, contract, data, value)


class solana_cli:
def call(self, *args):
try:
cmd = ["solana",
"--url", solana_url,
] + list(args)
print(cmd)
return subprocess.check_output(cmd, universal_newlines=True)
except subprocess.CalledProcessError as err:
import sys
logger.debug("ERR: solana error {}".format(err))
raise


class neon_cli:
def call(self, *args):
try:
cmd = ["neon-cli",
"--commitment=recent",
"--url", solana_url,
"--evm_loader={}".format(evm_loader_id),
] + list(args)
print(cmd)
return subprocess.check_output(cmd, timeout=neon_cli_timeout, universal_newlines=True)
except subprocess.CalledProcessError as err:
import sys
logger.debug("ERR: neon-cli error {}".format(err))
raise

def confirm_transaction(client, tx_sig, confirmations=0):
"""Confirm a transaction."""
Expand Down Expand Up @@ -318,20 +283,6 @@ 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 Down
2 changes: 1 addition & 1 deletion proxy/test_environment.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import unittest
import os
from web3 import Web3
from proxy.plugin.solana_rest_api_tools import read_elf_params
from proxy.environment import read_elf_params

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