From 5c3a1f4536f38df9f27f453404f3546d62e20789 Mon Sep 17 00:00:00 2001 From: Vivek Teega Date: Thu, 24 Feb 2022 13:07:20 +0000 Subject: [PATCH] Changes to updateLatestTransaction so it can take unique transactionType as argument --- convert_db.py | 8 +++--- cronjob.sh | 3 --- tracktokens_smartcontracts.py | 46 ++++++++++++++++++----------------- 3 files changed, 28 insertions(+), 29 deletions(-) delete mode 100755 cronjob.sh diff --git a/convert_db.py b/convert_db.py index b596e97..43a0543 100644 --- a/convert_db.py +++ b/convert_db.py @@ -1,4 +1,4 @@ -from models import SystemData, ActiveTable, ConsumedTable, TransferLogs, TransactionHistory, RejectedTransactionHistory, Base, ContractStructure, ContractBase, ContractParticipants, SystemBase, ActiveContracts, ContractAddressMapping, LatestCacheBase, ContractTransactionHistory, RejectedContractTransactionHistory, TokenContractAssociation, ContinuosContractBase, ContractStructure1, ContractParticipants1, ContractDeposits1, ContractTransactionHistory1, LatestTransactions, LatestBlocks, DatabaseTypeMapping, TokenAddressMapping +from models import SystemData, ActiveTable, ConsumedTable, TransferLogs, TransactionHistory, RejectedTransactionHistory, Base, ContractStructure, ContractBase, ContractParticipants, SystemBase, ActiveContracts, ContractAddressMapping, LatestCacheBase, ContractTransactionHistory, RejectedContractTransactionHistory, TokenContractAssociation, ContinuosContractBase, ContractStructure1, ContractParticipants1, ContractDeposits1, ContractTransactionHistory1, LatestTransactions, LatestBlocks, DatabaseTypeMapping, TokenAddressMapping, LatestCacheBase1, LatestTransactions1, LatestBlocks1 import pdb from sqlalchemy import create_engine, func from sqlalchemy.orm import sessionmaker @@ -24,9 +24,9 @@ def create_database_session_orm(type, parameters, base): # connect to the database convert_db -convert_db = create_database_session_orm('system_dbs', {'db_name': 'convertdb'}, LatestCacheBase) -latest_blocks = convert_db.query(LatestBlocks).all() -latest_txs = convert_db.query(LatestTransactions).all() +convert_db = create_database_session_orm('system_dbs', {'db_name': 'convertdb'}, LatestCacheBase1) +latest_blocks = convert_db.query(LatestBlocks1).all() +latest_txs = convert_db.query(LatestTransactions1).all() # create a new database convert_db_new diff --git a/cronjob.sh b/cronjob.sh deleted file mode 100755 index 9a60b8f..0000000 --- a/cronjob.sh +++ /dev/null @@ -1,3 +0,0 @@ -cd /home/production/Desktop/flo-token-tracking/ -python3 tracktokens-smartcontracts.py - diff --git a/tracktokens_smartcontracts.py b/tracktokens_smartcontracts.py index 0a39fe6..fc53967 100755 --- a/tracktokens_smartcontracts.py +++ b/tracktokens_smartcontracts.py @@ -183,13 +183,14 @@ def processBlock(blockindex=None, blockhash=None): session.close() -def updateLatestTransaction(transactionData, parsed_data): +def updateLatestTransaction(transactionData, parsed_data, db_reference, transaction_type=None ): # connect to latest transaction db conn = sqlite3.connect('latestCache.db') + if transaction_type is None: + transaction_type = parsed_data['type'] conn.execute( - "INSERT INTO latestTransactions(transactionHash, blockNumber, jsonData, transactionType, parsedFloData) VALUES (?,?,?,?,?)", - (transactionData['txid'], transactionData['blockheight'], json.dumps(transactionData), parsed_data['type'], - json.dumps(parsed_data))) + "INSERT INTO latestTransactions(transactionHash, blockNumber, jsonData, transactionType, parsedFloData, db_reference) VALUES (?,?,?,?,?,?)", + (transactionData['txid'], transactionData['blockheight'], json.dumps(transactionData), transaction_type, json.dumps(parsed_data), db_reference)) conn.commit() conn.close() @@ -637,7 +638,8 @@ def checkReturnDeposits(blockinfo): parsed_data = {} parsed_data['type'] = 'expired_deposit' transaction_data = {} - transaction_data['txid'] = pybtc.sha256(tx_block_string).hex() + #transaction_data['txid'] = pybtc.sha256(tx_block_string).hex() + transaction_data['txid'] = query.transactionHash transaction_data['blockheight'] = blockinfo['height'] returnval = transferToken(sellingToken, returnAmount, query.contractAddress, depositorAddress, transaction_data=transaction_data, parsed_data=parsed_data, blockinfo=blockinfo) if returnval is None: @@ -693,7 +695,7 @@ def checkReturnDeposits(blockinfo): contract_db.commit() systemdb_session.commit() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{query.contractName}-{query.contractAddress}") elif query.activity == 'contract-time-trigger': # Find out the status of the contract @@ -1012,7 +1014,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): pushData_SSEapi(f"Error | Something went wrong while doing the internal db transactions for {transaction_data['txid']}") return 0 else: - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['tokenIdentification']}") # If this is the first interaction of the outputlist's address with the given token name, add it to token mapping connection = create_database_connection('system_dbs', {'db_name':'system'}) @@ -1073,7 +1075,6 @@ def processTransaction(transaction_data, parsed_data, blockinfo): # todo Rule 46 - If the transfer type is smart contract, then call the function transferToken to do sanity checks & lock the balance elif parsed_data['transferType'] == 'smartContract': - pdb.set_trace() if check_database_existence('smart_contract', {'contract_name':f"{parsed_data['contractName']}", 'contract_address':f"{outputlist[0]}"}): # Check type of contract and categorize between into ote-participation or continuous-event participation # todo - replace all connection queries with session queries @@ -1441,7 +1442,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): connection.close() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}" ) return 1 else: @@ -1474,7 +1475,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): blockHash=transaction_data['blockhash'])) session.commit() session.close() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}") return 1 else: @@ -1554,7 +1555,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): blockHash=transaction_data['blockhash'])) session.commit() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}") return 1 else: @@ -1587,7 +1588,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): blockHash=transaction_data['blockhash'])) session.commit() session.close() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}") return 1 else: @@ -1700,7 +1701,6 @@ def processTransaction(transaction_data, parsed_data, blockinfo): else: available_deposit_sum = available_deposit_sum + entry.depositBalance - pdb.set_trace() if available_deposit_sum >= swapAmount: # accepting token transfer from participant to smart contract address returnval = transferToken(parsed_data['tokenIdentification'], parsed_data['tokenAmount'], inputlist[0], outputlist[0], transaction_data=transaction_data, parsed_data=parsed_data, isInfiniteToken=None, blockinfo=blockinfo) @@ -1708,7 +1708,6 @@ def processTransaction(transaction_data, parsed_data, blockinfo): logger.info("CRITICAL ERROR | Something went wrong in the token transfer method while doing local Smart Contract Particiaption") return 0 - pdb.set_trace() # ContractDepositTable # For each unique deposit( address, expirydate, blocknumber) there will be 2 entries added to the table @@ -1801,6 +1800,9 @@ def processTransaction(transaction_data, parsed_data, blockinfo): contract_session.commit() contract_session.close() + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}", transaction_type='tokenswap-participation') + pushData_SSEapi(f"Token swap successfully performed at contract {parsed_data['contractName']}-{outputlist[0]} with the transaction {transaction_data['txid']}") + else: # Reject the participation saying not enough deposit tokens are available logger.info(f"Swap participation at transaction {transaction_data['txid']} rejected as requested swap amount is {swapAmount} but {available_deposit_sum} is available") @@ -1884,7 +1886,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): connection.execute(f"INSERT INTO databaseTypeMapping (db_name, db_type, keyword, object_format, blockNumber) VALUES ('{parsed_data['tokenIdentification']}', 'token', '', '', '{transaction_data['blockheight']}')") connection.close() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['tokenIdentification']}") pushData_SSEapi(f"Token | Successfully incorporated token {parsed_data['tokenIdentification']} at transaction {transaction_data['txid']}") return 1 else: @@ -2097,7 +2099,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): session.commit() session.close() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{parsed_data['contractAddress']}") pushData_SSEapi('Contract | Contract incorporated at transaction {} with name {}-{}'.format(transaction_data['txid'], parsed_data['contractName'], parsed_data['contractAddress'])) return 1 @@ -2217,7 +2219,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): session.commit() session.close() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{parsed_data['contractAddress']}") pushData_SSEapi('Contract | Contract incorporated at transaction {} with name {}-{}'.format(transaction_data['txid'], parsed_data['contractName'], parsed_data['contractAddress'])) return 1 @@ -2576,7 +2578,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): parsed_data['contractName'], outputlist[0])) connection.close() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}") pushData_SSEapi( 'Trigger | Minimum subscription amount not reached at contract {}-{} at transaction {}. Tokens will be refunded'.format( @@ -2633,7 +2635,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): parsed_data['contractName'], outputlist[0])) connection.close() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}") pushData_SSEapi( 'Trigger | Contract triggered of the name {}-{} is active currently at transaction {}'.format( @@ -2802,7 +2804,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): blockNumber=transaction_data['blockheight'])) session.commit() pushData_SSEapi(f"Deposit Smart Contract Transaction {transaction_data['txid']} for the Smart contract named {parsed_data['contractName']} at the address {outputlist[0]}") - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data , f"{parsed_data['contractName']}-{outputlist[0]}") return 1 else: @@ -2869,7 +2871,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): connection.execute(f"INSERT INTO databaseTypeMapping (db_name, db_type, keyword, object_format, blockNumber) VALUES ('{parsed_data['tokenIdentification']}', 'nft', '', '{nft_data}', '{transaction_data['blockheight']}'") connection.close() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['tokenIdentification']}") pushData_SSEapi(f"Token | Succesfully incorporated token {parsed_data['tokenIdentification']} at transaction {transaction_data['txid']}") return 1 else: @@ -2945,7 +2947,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo): connection.execute(f"INSERT INTO databaseTypeMapping (db_name, db_type, keyword, object_format, blockNumber) VALUES ('{parsed_data['tokenIdentification']}', 'infinite-token', '', '{info_object}', '{transaction_data['blockheight']}'") connection.close() - updateLatestTransaction(transaction_data, parsed_data) + updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['tokenIdentification']}") pushData_SSEapi(f"Token | Succesfully incorporated token {parsed_data['tokenIdentification']} at transaction {transaction_data['txid']}") return 1 else: