Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
22b10f9
307 implement withdraw instruction (#591)
ivandzen Mar 11, 2022
0ec3c9e
intro
Mar 11, 2022
9fb9fa7
upd creds
Mar 11, 2022
7ef74d6
fix
Mar 11, 2022
60124c2
wip
Mar 11, 2022
ebf8ea0
typo
Mar 11, 2022
432bac7
fix
Mar 11, 2022
dbe118d
wip
Mar 11, 2022
600d6ca
wip
Mar 11, 2022
cb18d20
wip
Mar 11, 2022
e9fd64c
wip
Mar 11, 2022
b37c3cb
wip
Mar 11, 2022
2f443c7
wip
Mar 11, 2022
885a0ad
upd SG
Mar 11, 2022
d35af72
enable tests
Mar 11, 2022
ba6750e
wip
Mar 11, 2022
332c031
wip
Mar 11, 2022
805e4ae
Merge branch '583-introduce-full-test-suite' into 583-introduce-full-…
Mar 12, 2022
9c9447b
wip
Mar 12, 2022
991cc46
wip
Mar 12, 2022
fde5590
wip
Mar 12, 2022
331a33e
#368 move sql schema to distinct file (#586)
vasiliy-zaznobin Mar 12, 2022
5cbce09
#631 extract Airdropper class (#632)
rozhkovdmitrii Mar 12, 2022
76b68aa
debug
Mar 14, 2022
db98d44
merge
Mar 14, 2022
69798e9
merge
Mar 14, 2022
ecb4831
remove unused port
Mar 14, 2022
92d207b
wip
Mar 14, 2022
38edd9a
wip
Mar 14, 2022
c677de9
wip
Mar 14, 2022
9e6af06
wip
Mar 14, 2022
509d49b
wip
Mar 14, 2022
c59129b
wip
Mar 14, 2022
b2144cc
change instance type
Mar 14, 2022
f8a6c03
Fix eth_estimageGas for Metamask transfer (#634)
anton-lisanin Mar 14, 2022
f959e82
wip
Mar 14, 2022
c11abaa
fix path
Mar 14, 2022
9b0b676
wip
Mar 14, 2022
5dd2ec9
wip
Mar 14, 2022
3dba0fd
wip
Mar 14, 2022
6a68eae
artifacts
Mar 15, 2022
6bd5b62
enable required step
Mar 15, 2022
8809fde
wip
Mar 15, 2022
cc853d1
wip
Mar 15, 2022
0045faa
proxy artefacts
Mar 15, 2022
82847a3
redirect stderr
Mar 15, 2022
77429f5
enable test step
Mar 15, 2022
3938e6a
typo
Mar 15, 2022
ea7b59f
typo
Mar 15, 2022
e8c9696
faucet
Mar 15, 2022
3d30b36
wip
Mar 15, 2022
a76732a
debug
Mar 15, 2022
d61c342
Add implementation of neon_getSolanaTransactionByNeonTransaction. #639
afalaleev Mar 15, 2022
0488307
wip
Mar 15, 2022
5f4f39e
Add SOLANA_COMMITMENT
Mar 15, 2022
9b45c08
Merge pull request #643 from neonlabsorg/639-neon-api
afalaleev Mar 15, 2022
cff0952
Enable cleaning step
Mar 16, 2022
86cecc7
wip
Mar 16, 2022
e7ddf25
wip
Mar 16, 2022
bda6d60
debug
Mar 16, 2022
cf72092
debug
Mar 16, 2022
9fa4281
testdrive
Mar 16, 2022
cf05a0f
Last changes from v0.7.x to develop (#660)
afalaleev Mar 16, 2022
ab84e08
solana tune
Mar 16, 2022
94af2b5
debug
Mar 16, 2022
6f0322c
wip
Mar 16, 2022
fd0cb99
wip
Mar 16, 2022
fa3d60d
confirmed
Mar 16, 2022
9b950fc
test
Mar 17, 2022
a15be09
Revert "test"
Mar 17, 2022
831b378
Comment extra steps
rozhkovdmitrii Mar 18, 2022
2f7f154
Comment extra steps
rozhkovdmitrii Mar 18, 2022
03ffaea
refactoring
Mar 18, 2022
20b0c54
typo
Mar 18, 2022
7d90442
Merge branch 'develop' into 583-introduce-full-test-suite-tf
Mar 18, 2022
b43719e
enable basic logic
Mar 18, 2022
f118b79
add dependences
Mar 18, 2022
d9c5aa5
playground for if
Mar 18, 2022
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
Prev Previous commit
Next Next commit
#631 extract Airdropper class (#632)
* Introduce proxy/db_scheme.py

* Debug

* Introduce run-db-creation.sh

* Use entrypoint: proxy/run-db-creation.sh

* Add dbcreation.log

* Debug

* Debug

* Add dbcreation.log

* Use from ..proxy

* Debug

* Debug

* Introduce dbcreation_mode to run proxy

* Change paths

* Will run in dbcreation mode with SOLANA_URL and EVM_LOADER

* Debug

* Debug

* Debug

* SOLANA_URL: http://solana:8899

* Add logged_groups

* Debug

* Log schema

* Use psql

* Add postgresql-client-common in the docker image

* Add postgresql-client in the docker image

* Set network_mode: container:postgres

* Remove networks

* Use network_mode: service:postgres

* Remove hostname

* Remove hostname

* ports:
      - "5432:5432"

* networks:
      - net

* Add     ports:
          - "5432"

* Add    networks:
         - net

* Try to use links: - postgres

* Use export PGPASSWORD=${POSTGRES_PASSWORD} to set the password for psql
Use psql -h ${POSTGRES_HOST} ...

* Use run_dbcreation()

* Correction after the prev merge

* Correction after the prev merge

* Lowercase in function names

* Refactor to introduce scheme.sql

* Debug

* Debug

* Debug

* Add table airdrop_scheduled
Add table constants

* Revert some changes

* Fixed: psql:proxy/db/scheme.sql:73: ERROR:  syntax error at or near "{"
       LINE 1: ...IF NOT EXISTS neon_transaction_logs_block_hash ON {table_nam...

* Use run_indexer(solana_url)

* Use run_airdropper with 7 args

* Remove creation.py

* Remove creation.py

* Remove dbcreation_mode

* check it

* check it

* Catch "Operator has NO resources!" exception

* Catch "Operator has NO resources!" exception

* Get rid of create_table in sql_dict.py

* Get rid of stuff from sql_dict

* Get rid of crating table stuff from TrxReceiptsStorage

* Roll back NEON_ERC20_MAX_AMOUNT
          NEON_ETH_MAX_AMOUNT

* Spit and polish

* AirdropperApp

* Get rid off AIRDROPPER_MODE

* Get rid off AIRDROPPER_MODE

* Get rid off AIRDROPPER_MODE

* spit and polish

* spit and polish

* spit and polish

* spit and polish

* spit and polish

Co-authored-by: Vasiliy Zaznobin <[email protected]>
  • Loading branch information
rozhkovdmitrii and vasiliy-zaznobin authored Mar 12, 2022
commit 5cbce09b1bce400f457377377b48891e7ad4a3c7
24 changes: 1 addition & 23 deletions proxy/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,40 +9,18 @@
:license: BSD, see LICENSE for more details.
"""

from solana.publickey import PublicKey
from .proxy import entry_point
import os
from .indexer.airdropper import run_airdropper
from .indexer.indexer import run_indexer

if __name__ == '__main__':
solana_url = os.environ['SOLANA_URL']
evm_loader_id = os.environ['EVM_LOADER']
print(f"Will run with SOLANA_URL={solana_url}; EVM_LOADER={evm_loader_id}")

airdropper_mode = os.environ.get('AIRDROPPER_MODE', 'False').lower() in [1, 'true', 'True']
indexer_mode = os.environ.get('INDEXER_MODE', 'False').lower() in [1, 'true', 'True']

if airdropper_mode:
print("Will run in airdropper mode")
pyth_mapping_account = PublicKey(os.environ['PYTH_MAPPING_ACCOUNT'])
faucet_url = os.environ['FAUCET_URL']
wrapper_whitelist = os.environ['INDEXER_ERC20_WRAPPER_WHITELIST']
if wrapper_whitelist != 'ANY':
wrapper_whitelist = wrapper_whitelist.split(',')
neon_decimals = int(os.environ.get('NEON_DECIMALS', '9'))

pp_solana_url = os.environ.get('PP_SOLANA_URL', None)
max_conf = float(os.environ.get('MAX_CONFIDENCE_INTERVAL', 0.02))

run_airdropper(solana_url,
pyth_mapping_account,
faucet_url,
wrapper_whitelist,
neon_decimals,
pp_solana_url,
max_conf)
elif indexer_mode:
if indexer_mode:
print("Will run in indexer mode")
run_indexer(solana_url)
else:
Expand Down
2 changes: 2 additions & 0 deletions proxy/airdropper/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .airdropper import Airdropper, AIRDROP_AMOUNT_SOL, NEON_PRICE_USD
from .airdropper_app import AirdropperApp
6 changes: 6 additions & 0 deletions proxy/airdropper/__main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from . import AirdropperApp

if __name__ == '__main__':
airdropper_app = AirdropperApp()
exit_code = airdropper_app.run()
exit(exit_code)
41 changes: 5 additions & 36 deletions proxy/indexer/airdropper.py → proxy/airdropper/airdropper.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
from solana.publickey import PublicKey
from proxy.indexer.indexer_base import IndexerBase
from proxy.indexer.pythnetwork import PythNetworkClient
from proxy.indexer.base_db import BaseDB
from proxy.indexer.utils import check_error
from proxy.indexer.sql_dict import SQLDict
import requests
import base58
import traceback
Expand All @@ -13,6 +8,11 @@

from ..environment import NEON_PRICE_USD, EVM_LOADER_ID
from ..common_neon.solana_interactor import SolanaInteractor
from ..indexer.indexer_base import IndexerBase
from ..indexer.pythnetwork import PythNetworkClient
from ..indexer.base_db import BaseDB
from ..indexer.utils import check_error
from ..indexer.sql_dict import SQLDict


ACCOUNT_CREATION_PRICE_SOL = Decimal('0.00472692')
Expand Down Expand Up @@ -271,34 +271,3 @@ def process_receipts(self):
self.process_trx_airdropper_mode(trx)
self.latest_processed_slot = max(self.latest_processed_slot, max_slot)
self._constants['latest_processed_slot'] = self.latest_processed_slot


@logged_group("neon.Airdropper")
def run_airdropper(solana_url,
pyth_mapping_account: PublicKey,
faucet_url,
wrapper_whitelist = 'ANY',
neon_decimals = 9,
pp_solana_url = None,
max_conf = 0.1, *, logger):
logger.info(f"""Running indexer with params:
solana_url: {solana_url},
evm_loader_id: {EVM_LOADER_ID},
pyth.network mapping account: {pyth_mapping_account},
faucet_url: {faucet_url},
wrapper_whitelist: {wrapper_whitelist},
NEON decimals: {neon_decimals},
Price provider solana: {pp_solana_url},
Max confidence interval: {max_conf}""")

try:
airdropper = Airdropper(solana_url,
pyth_mapping_account,
faucet_url,
wrapper_whitelist,
neon_decimals,
pp_solana_url,
max_conf)
airdropper.run()
except Exception as err:
logger.error(f'Failed to start Airdropper: {err}')
45 changes: 45 additions & 0 deletions proxy/airdropper/airdropper_app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import os
from logged_groups import logged_group
from solana.publickey import PublicKey

from ..environment import EVM_LOADER_ID

from .airdropper import Airdropper


@logged_group("neon.Airdropper")
class AirdropperApp:

def __init__(self):
self.info("Airdropper application is starting ...")
pyth_mapping_account = PublicKey(os.environ['PYTH_MAPPING_ACCOUNT'])
faucet_url = os.environ['FAUCET_URL']
wrapper_whitelist = os.environ['INDEXER_ERC20_WRAPPER_WHITELIST']
if wrapper_whitelist != 'ANY':
wrapper_whitelist = wrapper_whitelist.split(',')
neon_decimals = int(os.environ.get('NEON_DECIMALS', '9'))

pp_solana_url = os.environ.get('PP_SOLANA_URL', None)
max_conf = float(os.environ.get('MAX_CONFIDENCE_INTERVAL', 0.02))
solana_url = os.environ['SOLANA_URL']

self.info(f"""Construct Airdropper with params:
solana_url: {solana_url},
evm_loader_id: {EVM_LOADER_ID},
pyth.network mapping account: {pyth_mapping_account},
faucet_url: {faucet_url},
wrapper_whitelist: {wrapper_whitelist},
NEON decimals: {neon_decimals},
Price provider solana: {pp_solana_url},
Max confidence interval: {max_conf}""")

self._airdropper = Airdropper(solana_url, pyth_mapping_account, faucet_url, wrapper_whitelist, neon_decimals,
pp_solana_url, max_conf)

def run(self) -> int:
try:
self._airdropper.run()
except Exception as err:
self.error(f'Failed to start Airdropper: {err}')
return 1
return 0
Empty file added proxy/indexer/__init__.py
Empty file.
2 changes: 1 addition & 1 deletion proxy/testing/test_airdropper.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from solana.publickey import PublicKey
from proxy.testing.mock_server import MockServer
from proxy.indexer.airdropper import Airdropper, AIRDROP_AMOUNT_SOL, NEON_PRICE_USD
from proxy.airdropper import Airdropper, AIRDROP_AMOUNT_SOL, NEON_PRICE_USD
from proxy.indexer.sql_dict import SQLDict
from proxy.common_neon.solana_interactor import SolanaInteractor
import time
Expand Down
4 changes: 2 additions & 2 deletions run-airdropper.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ if [ -z "$EVM_LOADER" ]; then
export EVM_LOADER=$(solana address -k /spl/bin/evm_loader-keypair.json)
echo "$(date "+%F %X.%3N") I $(basename "$0"):${LINENO} $$ ${COMPONENT}:StartScript {} EVM_LOADER=$EVM_LOADER"
fi
export AIRDROPPER_MODE='true'

[[ -z "$FINALIZED" ]] && export FINALIZED="confirmed"

python3 -m proxy
python3 -m proxy.airdropper