11from solana .publickey import PublicKey
2- from proxy .indexer .indexer_base import IndexerBase
3- from proxy .indexer .pythnetwork import PythNetworkClient
4- from proxy .indexer .base_db import BaseDB
5- from proxy .indexer .utils import check_error
6- from proxy .indexer .sql_dict import SQLDict
72import requests
83import base58
94import traceback
105from datetime import datetime
116from decimal import Decimal
127from logged_groups import logged_group
8+
139from ..environment import NEON_PRICE_USD , EVM_LOADER_ID
1410from ..common_neon .solana_interactor import SolanaInteractor
11+ from ..indexer .indexer_base import IndexerBase
12+ from ..indexer .pythnetwork import PythNetworkClient
13+ from ..indexer .base_db import BaseDB
14+ from ..indexer .utils import check_error
15+ from ..indexer .sql_dict import SQLDict
1516
1617
1718ACCOUNT_CREATION_PRICE_SOL = Decimal ('0.00472692' )
2021
2122class FailedAttempts (BaseDB ):
2223 def __init__ (self ) -> None :
23- BaseDB .__init__ (self )
24-
25- def _create_table_sql (self ) -> str :
26- self ._table_name = 'failed_airdrop_attempts'
27- return f'''
28- CREATE TABLE IF NOT EXISTS { self ._table_name } (
29- attempt_time BIGINT,
30- eth_address TEXT,
31- reason TEXT
32- );
33- CREATE INDEX IF NOT EXISTS failed_attempt_time_idx ON { self ._table_name } (attempt_time);
34- '''
24+ BaseDB .__init__ (self , 'failed_airdrop_attempts' )
3525
3626 def airdrop_failed (self , eth_address , reason ):
3727 with self ._conn .cursor () as cur :
@@ -43,19 +33,7 @@ def airdrop_failed(self, eth_address, reason):
4333
4434class AirdropReadySet (BaseDB ):
4535 def __init__ (self ):
46- BaseDB .__init__ (self )
47-
48- def _create_table_sql (self ) -> str :
49- self ._table_name = 'airdrop_ready'
50- return f'''
51- CREATE TABLE IF NOT EXISTS { self ._table_name } (
52- eth_address TEXT UNIQUE,
53- scheduled_ts BIGINT,
54- finished_ts BIGINT,
55- duration INTEGER,
56- amount_galans INTEGER
57- )
58- '''
36+ BaseDB .__init__ (self , 'airdrop_ready' )
5937
6038 def register_airdrop (self , eth_address : str , airdrop_info : dict ):
6139 finished = int (datetime .now ().timestamp ())
@@ -293,34 +271,3 @@ def process_receipts(self):
293271 self .process_trx_airdropper_mode (trx )
294272 self .latest_processed_slot = max (self .latest_processed_slot , max_slot )
295273 self ._constants ['latest_processed_slot' ] = self .latest_processed_slot
296-
297-
298- @logged_group ("neon.Airdropper" )
299- def run_airdropper (solana_url ,
300- pyth_mapping_account : PublicKey ,
301- faucet_url ,
302- wrapper_whitelist = 'ANY' ,
303- neon_decimals = 9 ,
304- pp_solana_url = None ,
305- max_conf = 0.1 , * , logger ):
306- logger .info (f"""Running indexer with params:
307- solana_url: { solana_url } ,
308- evm_loader_id: { EVM_LOADER_ID } ,
309- pyth.network mapping account: { pyth_mapping_account } ,
310- faucet_url: { faucet_url } ,
311- wrapper_whitelist: { wrapper_whitelist } ,
312- NEON decimals: { neon_decimals } ,
313- Price provider solana: { pp_solana_url } ,
314- Max confidence interval: { max_conf } """ )
315-
316- try :
317- airdropper = Airdropper (solana_url ,
318- pyth_mapping_account ,
319- faucet_url ,
320- wrapper_whitelist ,
321- neon_decimals ,
322- pp_solana_url ,
323- max_conf )
324- airdropper .run ()
325- except Exception as err :
326- logger .error (f'Failed to start Airdropper: { err } ' )
0 commit comments