Pushing a base layer to so new branchlve merge issues during migration
This commit is contained in:
commit
9c7387795f
@ -25,7 +25,7 @@ def newMultiRequest(apicall):
|
||||
current_server = serverlist[0]
|
||||
while True:
|
||||
try:
|
||||
response = requests.get('{}api/{}'.format(current_server, apicall))
|
||||
response = requests.get('{}api/v1/{}'.format(current_server, apicall))
|
||||
except:
|
||||
current_server = switchNeturl(current_server)
|
||||
logger.info(f"newMultiRequest() switched to {current_server}")
|
||||
@ -72,7 +72,7 @@ def process_committee_flodata(flodata):
|
||||
|
||||
|
||||
def refresh_committee_list_old(admin_flo_id, api_url, blocktime):
|
||||
response = requests.get(f'{api_url}api/addr/{admin_flo_id}')
|
||||
response = requests.get(f'{api_url}api/v1/address/{admin_flo_id}')
|
||||
if response.status_code == 200:
|
||||
response = response.json()
|
||||
else:
|
||||
@ -82,10 +82,10 @@ def refresh_committee_list_old(admin_flo_id, api_url, blocktime):
|
||||
committee_list = []
|
||||
response['transactions'].reverse()
|
||||
for idx, transaction in enumerate(response['transactions']):
|
||||
transaction_info = requests.get(f'{api_url}api/tx/{transaction}')
|
||||
transaction_info = requests.get(f'{api_url}api/v1/tx/{transaction}')
|
||||
if transaction_info.status_code == 200:
|
||||
transaction_info = transaction_info.json()
|
||||
if transaction_info['vin'][0]['addr']==admin_flo_id and transaction_info['blocktime']<=blocktime:
|
||||
if transaction_info['vin'][0]['addresses'][0]==admin_flo_id and transaction_info['blocktime']<=blocktime:
|
||||
try:
|
||||
tx_flodata = json.loads(transaction_info['floData'])
|
||||
committee_list += process_committee_flodata(tx_flodata)
|
||||
@ -101,7 +101,7 @@ def refresh_committee_list(admin_flo_id, api_url, blocktime):
|
||||
init_id = None
|
||||
|
||||
def process_transaction(transaction_info):
|
||||
if 'isCoinBase' in transaction_info or transaction_info['vin'][0]['addr'] != admin_flo_id or transaction_info['blocktime'] > blocktime:
|
||||
if 'isCoinBase' in transaction_info or transaction_info['vin'][0]['addresses'][0] != admin_flo_id or transaction_info['blocktime'] > blocktime:
|
||||
return
|
||||
try:
|
||||
tx_flodata = json.loads(transaction_info['floData'])
|
||||
@ -117,13 +117,13 @@ def refresh_committee_list(admin_flo_id, api_url, blocktime):
|
||||
print('Response from the Flosight API failed')
|
||||
sys.exit(0)
|
||||
|
||||
url = f'{api_url}api/addrs/{admin_flo_id}/txs?latest=true&mempool=false'
|
||||
url = f'{api_url}api/v1/address/{admin_flo_id}?details=txs'
|
||||
response = send_api_request(url)
|
||||
for transaction_info in response.get('items', []):
|
||||
for transaction_info in response.get('txs', []):
|
||||
process_transaction(transaction_info)
|
||||
|
||||
while 'incomplete' in response:
|
||||
url = f'{api_url}api/addrs/{admin_flo_id}/txs?latest={latest_param}&mempool={mempool_param}&before={init_id}'
|
||||
url = f'{api_url}api/v1/address/{admin_flo_id}/txs?latest={latest_param}&mempool={mempool_param}&before={init_id}'
|
||||
response = send_api_request(url)
|
||||
for transaction_info in response.get('items', []):
|
||||
process_transaction(transaction_info)
|
||||
@ -143,7 +143,7 @@ def find_sender_receiver(transaction_data):
|
||||
|
||||
# todo Rule 40 - For each vin, find the feeding address and the fed value. Make an inputlist containing [inputaddress, n value]
|
||||
for vin in transaction_data["vin"]:
|
||||
vinlist.append([vin["addr"], float(vin["value"])])
|
||||
vinlist.append([vin["addresses"][0], float(vin["value"])])
|
||||
|
||||
totalinputval = float(transaction_data["valueIn"])
|
||||
|
||||
@ -341,7 +341,7 @@ def convert_datetime_to_arrowobject_regex(expiryTime):
|
||||
dt = arrow.get(datetime_str, 'ddd MMM DD YYYY HH:mm:ss').replace(tzinfo=timezone_offset)
|
||||
return dt
|
||||
else:
|
||||
return None
|
||||
return 0
|
||||
|
||||
|
||||
def is_a_contract_address(floAddress):
|
||||
@ -359,7 +359,7 @@ def fetchDynamicSwapPrice_old(contractStructure, transaction_data, blockinfo):
|
||||
# fetch transactions from the blockchain where from address : oracle-address... to address: contract address
|
||||
# find the first contract transaction which adheres to price change format
|
||||
# {"price-update":{"contract-name": "", "contract-address": "", "price": 3}}
|
||||
response = requests.get(f'{neturl}api/addr/{oracle_address}')
|
||||
response = requests.get(f'{neturl}api/v1/address/{oracle_address}')
|
||||
if response.status_code == 200:
|
||||
response = response.json()
|
||||
if 'transactions' not in response.keys(): # API doesn't return 'transactions' key, if 0 txs present on address
|
||||
@ -367,7 +367,7 @@ def fetchDynamicSwapPrice_old(contractStructure, transaction_data, blockinfo):
|
||||
else:
|
||||
transactions = response['transactions']
|
||||
for transaction_hash in transactions:
|
||||
transaction_response = requests.get(f'{neturl}api/tx/{transaction_hash}')
|
||||
transaction_response = requests.get(f'{neturl}api/v1/tx/{transaction_hash}')
|
||||
if transaction_response.status_code == 200:
|
||||
transaction = transaction_response.json()
|
||||
floData = transaction['floData']
|
||||
@ -406,13 +406,13 @@ def fetchDynamicSwapPrice(contractStructure, blockinfo):
|
||||
latest_param = 'true'
|
||||
mempool_param = 'false'
|
||||
init_id = None
|
||||
response = requests.get(f'{api_url}api/addrs/{oracle_address}/txs?latest={latest_param}&mempool={mempool_param}')
|
||||
response = requests.get(f'{api_url}api/v1/address/{oracle_address}?details=txs')
|
||||
if response.status_code == 200:
|
||||
response = response.json()
|
||||
if len(response['items']) == 0:
|
||||
if len(response['txs']) == 0:
|
||||
return float(contractStructure['price'])
|
||||
else:
|
||||
for transaction in response['items']:
|
||||
for transaction in response['txs']:
|
||||
floData = transaction['floData']
|
||||
# If the blocktime of the transaction is < than the current block time
|
||||
if transaction['time'] < blockinfo['time']:
|
||||
@ -442,10 +442,10 @@ def fetchDynamicSwapPrice(contractStructure, blockinfo):
|
||||
init_id = response['initItem']
|
||||
|
||||
while(is_incomplete_key_present == True):
|
||||
response = requests.get(f'{api_url}api/addrs/{oracle_address}/txs?latest={latest_param}&mempool={mempool_param}&before={init_id}')
|
||||
response = requests.get(f'{api_url}api/v1/address/{oracle_address}?details=txs')
|
||||
if response.status_code == 200:
|
||||
response = response.json()
|
||||
for transaction in response['items']:
|
||||
for transaction in response['txs']:
|
||||
floData = transaction['floData']
|
||||
# If the blocktime of the transaction is < than the current block time
|
||||
if transaction['time'] < blockinfo['time']:
|
||||
@ -479,7 +479,7 @@ def processBlock(blockindex=None, blockhash=None):
|
||||
blockhash = response['blockHash']
|
||||
|
||||
blockinfo = newMultiRequest(f"block/{blockhash}")
|
||||
pause_index = [2211699, 2211700, 2211701, 2170000, 2468107, 2468108, 2489267, 2449017, 2509873, 2509874, 2291729, 2467929]
|
||||
pause_index = [2211699, 2211700, 2211701, 2170000, 2468107, 2468108, 2489267, 2449017, 2509873, 2509874, 2291729, 2467929, 6202174]
|
||||
if blockindex in pause_index:
|
||||
print(f'Paused at {blockindex}')
|
||||
|
||||
@ -487,19 +487,17 @@ def processBlock(blockindex=None, blockhash=None):
|
||||
#checkLocaltriggerContracts(blockinfo)
|
||||
# Check if any deposits have to be returned
|
||||
#checkReturnDeposits(blockinfo)
|
||||
checkLocal_expiry_trigger_deposit(blockinfo)
|
||||
|
||||
#checkLocal_expiry_trigger_deposit(blockinfo)
|
||||
|
||||
# todo Rule 8 - read every transaction from every block to find and parse flodata
|
||||
counter = 0
|
||||
acceptedTxList = []
|
||||
# Scan every transaction
|
||||
logger.info("Before tx loop")
|
||||
transaction_counter = 0
|
||||
|
||||
for transaction in blockinfo["tx"]:
|
||||
transaction_counter = transaction_counter + 1
|
||||
logger.info(f"Transaction {transaction_counter} : {transaction}")
|
||||
current_index = -1
|
||||
for transaction_data in blockinfo["txs"]:
|
||||
transaction = transaction_data["txid"]
|
||||
|
||||
if transaction in ['ff355c3384e2568e1dd230d5c9073618b9033c7c8b20f9e8533b5837f76bc65d', 'dd35c592fa7ba76718c894b5b3195e1151e79c5fb91472c06f416c99c7827e6d',
|
||||
'39ef49e0e06438bda462c794955735e7ea3ae81cb576ec5c97b528c8a257614c',
|
||||
@ -509,25 +507,16 @@ def processBlock(blockindex=None, blockhash=None):
|
||||
'd36b744d6b9d8a694a93476dbd1134dbdc8223cf3d1a604447acb09221aa3b49',
|
||||
'64abe801d12224d10422de88070a76ad8c6d17b533ba5288fb0961b4cbf6adf4',
|
||||
'ec9a852aa8a27877ba79ae99cc1359c0e04f6e7f3097521279bcc68e3883d760',
|
||||
'16e836ceb973447a5fd71e969d7d4cde23330547a855731003c7fc53c86937e4']:
|
||||
'16e836ceb973447a5fd71e969d7d4cde23330547a855731003c7fc53c86937e4',
|
||||
'fe2ce0523254efc9eb2270f0efb837de3fc7844d9c64523b20c0ac48c21f64e6',
|
||||
'a74a03ec1e77fa50e0b586b1e9745225ad4f78ce96ca59d6ac025f8057dd095c']:
|
||||
print(f'Paused at transaction {transaction}')
|
||||
|
||||
|
||||
# TODO CLEANUP - REMOVE THIS WHILE SECTION, WHY IS IT HERE?
|
||||
while(current_index == -1):
|
||||
transaction_data = newMultiRequest(f"tx/{transaction}")
|
||||
try:
|
||||
text = transaction_data["floData"]
|
||||
text = text.replace("\n", " \n ")
|
||||
current_index = 2
|
||||
except:
|
||||
logger.info("The API has passed the Block height test but failed transaction_data['floData'] test")
|
||||
logger.info(f"Block Height : {blockinfo['height']}")
|
||||
logger.info(f"Transaction {transaction} data : ")
|
||||
logger.info(transaction_data)
|
||||
logger.info('Program will wait for 1 seconds and try to reconnect')
|
||||
time.sleep(1)
|
||||
|
||||
try:
|
||||
text = transaction_data["floData"]
|
||||
except:
|
||||
text = ''
|
||||
text = text.replace("\n", " \n ")
|
||||
# todo Rule 9 - Reject all noise transactions. Further rules are in parsing.py
|
||||
returnval = None
|
||||
parsed_data = parsing.parse_flodata(text, blockinfo, config['DEFAULT']['NET'])
|
||||
@ -542,11 +531,11 @@ def processBlock(blockindex=None, blockhash=None):
|
||||
logger.info("Transfer for the transaction %s is illegitimate. Moving on" % transaction)
|
||||
|
||||
if len(acceptedTxList) > 0:
|
||||
tempinfo = blockinfo['tx'].copy()
|
||||
for tx in blockinfo['tx']:
|
||||
if tx not in acceptedTxList:
|
||||
tempinfo = blockinfo['txs'].copy()
|
||||
for tx in blockinfo['txs']:
|
||||
if tx['txid'] not in acceptedTxList:
|
||||
tempinfo.remove(tx)
|
||||
blockinfo['tx'] = tempinfo
|
||||
blockinfo['txs'] = tempinfo
|
||||
updateLatestBlock(blockinfo)
|
||||
|
||||
session = create_database_session_orm('system_dbs', {'db_name': "system"}, SystemBase)
|
||||
@ -556,12 +545,12 @@ def processBlock(blockindex=None, blockhash=None):
|
||||
session.close()
|
||||
|
||||
|
||||
def updateLatestTransaction(transactionData, parsed_data, db_reference, transaction_type=None ):
|
||||
def updateLatestTransaction(transactionData, parsed_data, db_reference, transactionType=None ):
|
||||
# connect to latest transaction db
|
||||
conn = create_database_connection('latest_cache', {'db_name':"latestCache"})
|
||||
if transaction_type is None:
|
||||
transaction_type = parsed_data['type']
|
||||
conn.execute("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))
|
||||
if transactionType is None:
|
||||
transactionType = parsed_data['type']
|
||||
conn.execute("INSERT INTO latestTransactions(transactionHash, blockNumber, jsonData, transactionType, parsedFloData, db_reference) VALUES (?,?,?,?,?,?)", (transactionData['txid'], transactionData['blockheight'], json.dumps(transactionData), transactionType, json.dumps(parsed_data), db_reference))
|
||||
#conn.commit()
|
||||
conn.close()
|
||||
|
||||
@ -588,7 +577,12 @@ def process_pids(entries, session, piditem):
|
||||
return 1
|
||||
|
||||
|
||||
def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress, transaction_data=None, parsed_data=None, isInfiniteToken=None, blockinfo=None):
|
||||
def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress, transaction_data=None, parsed_data=None, isInfiniteToken=None, blockinfo=None, transactionType=None):
|
||||
|
||||
# provide default transactionType value
|
||||
if transactionType is None:
|
||||
transactionType=parsed_data['type']
|
||||
|
||||
session = create_database_session_orm('token', {'token_name': f"{tokenIdentification}"}, TokenBase)
|
||||
tokenAmount = float(tokenAmount)
|
||||
if isInfiniteToken == True:
|
||||
@ -601,7 +595,7 @@ def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress,
|
||||
receiverAddress_details.addressBalance = None
|
||||
session.add(ActiveTable(address=outputAddress, consumedpid='1', transferBalance=tokenAmount, addressBalance=addressBalance, blockNumber=blockinfo['height']))
|
||||
|
||||
add_transaction_history(token_name=tokenIdentification, sourceFloAddress=inputAddress, destFloAddress=outputAddress, transferAmount=tokenAmount, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=json.dumps(transaction_data), transactionType=parsed_data['type'], parsedFloData=json.dumps(parsed_data))
|
||||
add_transaction_history(token_name=tokenIdentification, sourceFloAddress=inputAddress, destFloAddress=outputAddress, transferAmount=tokenAmount, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=json.dumps(transaction_data), transactionType=transactionType, parsedFloData=json.dumps(parsed_data))
|
||||
session.commit()
|
||||
session.close()
|
||||
return 1
|
||||
@ -731,7 +725,7 @@ def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress,
|
||||
session.execute('DELETE FROM activeTable WHERE id={}'.format(piditem[0]))
|
||||
session.commit()
|
||||
|
||||
add_transaction_history(token_name=tokenIdentification, sourceFloAddress=inputAddress, destFloAddress=outputAddress, transferAmount=tokenAmount, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=json.dumps(transaction_data), transactionType=parsed_data['type'], parsedFloData=json.dumps(parsed_data))
|
||||
add_transaction_history(token_name=tokenIdentification, sourceFloAddress=inputAddress, destFloAddress=outputAddress, transferAmount=tokenAmount, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=json.dumps(transaction_data), transactionType=transactionType, parsedFloData=json.dumps(parsed_data))
|
||||
|
||||
session.commit()
|
||||
session.close()
|
||||
@ -770,7 +764,7 @@ def process_minimum_subscriptionamount(contractStructure, connection, blockinfo,
|
||||
tokenIdentification = contractStructure['tokenIdentification']
|
||||
contractAddress = connection.execute('SELECT * FROM contractstructure WHERE attribute="contractAddress"').fetchall()[0][0]
|
||||
returnval = transferToken(tokenIdentification, participant[1], contractAddress, participant[0], blockinfo = blockinfo)
|
||||
if returnval is None:
|
||||
if returnval == 0:
|
||||
logger.critical("Something went wrong in the token transfer method while doing local Smart Contract Trigger. THIS IS CRITICAL ERROR")
|
||||
return
|
||||
|
||||
@ -930,7 +924,7 @@ def checkLocal_expiry_trigger_deposit(blockinfo):
|
||||
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:
|
||||
if returnval == 0:
|
||||
logger.critical("Something went wrong in the token transfer method while return contract deposit. THIS IS CRITICAL ERROR")
|
||||
return
|
||||
else:
|
||||
@ -1005,7 +999,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
|
||||
# todo Rule 40 - For each vin, find the feeding address and the fed value. Make an inputlist containing [inputaddress, n value]
|
||||
for vin in transaction_data["vin"]:
|
||||
vinlist.append([vin["addr"], float(vin["value"])])
|
||||
vinlist.append([vin["addresses"][0], float(vin["value"])])
|
||||
|
||||
totalinputval = float(transaction_data["valueIn"])
|
||||
|
||||
@ -1094,12 +1088,12 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
return 0
|
||||
|
||||
returnval = transferToken(parsed_data['tokenIdentification'], parsed_data['tokenAmount'], inputlist[0],outputlist[0], transaction_data, parsed_data, isInfiniteToken=isInfiniteToken, blockinfo = blockinfo)
|
||||
if returnval is None:
|
||||
if returnval == 0:
|
||||
logger.info("Something went wrong in the token transfer method")
|
||||
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, f"{parsed_data['tokenIdentification']}", transaction_type='token-transfer')
|
||||
updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['tokenIdentification']}", transactionType='token-transfer')
|
||||
|
||||
# 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'})
|
||||
@ -1251,7 +1245,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
if partialTransferCounter == 0:
|
||||
# Check if the tokenAmount being transferred exists in the address & do the token transfer
|
||||
returnval = transferToken(parsed_data['tokenIdentification'], parsed_data['tokenAmount'], inputlist[0], outputlist[0], transaction_data, parsed_data, blockinfo = blockinfo)
|
||||
if returnval is not None:
|
||||
if returnval != 0:
|
||||
# Store participant details in the smart contract's db
|
||||
session.add(ContractParticipants(participantAddress=inputadd,
|
||||
tokenAmount=parsed_data['tokenAmount'],
|
||||
@ -1281,7 +1275,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
if len(firstInteractionCheck) == 0:
|
||||
connection.execute(f"INSERT INTO tokenAddressMapping (tokenAddress, token, transactionHash, blockNumber, blockHash) VALUES ('{outputlist[0]}', '{parsed_data['tokenIdentification']}', '{transaction_data['txid']}', '{transaction_data['blockheight']}', '{transaction_data['blockhash']}')")
|
||||
connection.close()
|
||||
updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}", transaction_type='ote-externaltrigger-participation')
|
||||
updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}", transactionType='ote-externaltrigger-participation')
|
||||
return 1
|
||||
|
||||
else:
|
||||
@ -1290,7 +1284,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
elif partialTransferCounter == 1:
|
||||
# Transfer only part of the tokens users specified, till the time it reaches maximumamount
|
||||
returnval = transferToken(parsed_data['tokenIdentification'], maximumsubscriptionamount - amountDeposited, inputlist[0], outputlist[0], transaction_data, parsed_data, blockinfo = blockinfo)
|
||||
if returnval is not None:
|
||||
if returnval != 0:
|
||||
# Store participant details in the smart contract's db
|
||||
session.add(ContractParticipants(participantAddress=inputadd,
|
||||
tokenAmount=maximumsubscriptionamount - amountDeposited,
|
||||
@ -1312,7 +1306,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
blockHash=transaction_data['blockhash']))
|
||||
session.commit()
|
||||
session.close()
|
||||
updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}", transaction_type='ote-externaltrigger-participation')
|
||||
updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}", transactionType='ote-externaltrigger-participation')
|
||||
return 1
|
||||
|
||||
else:
|
||||
@ -1335,7 +1329,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
|
||||
# Check if the tokenAmount being transferred exists in the address & do the token transfer
|
||||
returnval = transferToken(parsed_data['tokenIdentification'], transferAmount, inputlist[0], outputlist[0], transaction_data, parsed_data, blockinfo = blockinfo)
|
||||
if returnval is not None:
|
||||
if returnval != 0:
|
||||
# Store participant details in the smart contract's db
|
||||
session.add(ContractParticipants(participantAddress=inputadd, tokenAmount=transferAmount, userChoice='-', transactionHash=transaction_data['txid'], blockNumber=transaction_data['blockheight'], blockHash=transaction_data['blockhash']))
|
||||
|
||||
@ -1361,7 +1355,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
if len(firstInteractionCheck) == 0:
|
||||
connection.execute(f"INSERT INTO tokenAddressMapping (tokenAddress, token, transactionHash, blockNumber, blockHash) VALUES ('{outputlist[0]}', '{parsed_data['tokenIdentification']}', '{transaction_data['txid']}', '{transaction_data['blockheight']}', '{transaction_data['blockhash']}')")
|
||||
connection.close()
|
||||
updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}", transaction_type='ote-internaltrigger-participation')
|
||||
updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}", transactionType='ote-internaltrigger-participation')
|
||||
return 1
|
||||
|
||||
else:
|
||||
@ -1419,9 +1413,9 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
|
||||
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)
|
||||
if returnval is None:
|
||||
logger.info("CRITICAL ERROR | Something went wrong in the token transfer method while doing local Smart Contract Particiaption")
|
||||
returnval = transferToken(parsed_data['tokenIdentification'], parsed_data['tokenAmount'], inputlist[0], outputlist[0], transaction_data=transaction_data, parsed_data=parsed_data, isInfiniteToken=None, blockinfo=blockinfo, transactionType='tokenswapParticipation')
|
||||
if returnval == 0:
|
||||
logger.info("ERROR | Something went wrong in the token transfer method while doing local Smart Contract Particiaption")
|
||||
return 0
|
||||
|
||||
# If this is the first interaction of the outputlist's address with the given token name, add it to token mapping
|
||||
@ -1440,8 +1434,8 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
for a_deposit in available_deposits:
|
||||
if a_deposit.depositBalance > remaining_amount:
|
||||
# accepting token transfer from the contract to depositor's address
|
||||
returnval = transferToken(contractStructure['accepting_token'], remaining_amount * swapPrice, contractStructure['contractAddress'], a_deposit.depositorAddress, transaction_data=transaction_data, parsed_data=parsed_data, isInfiniteToken=None, blockinfo=blockinfo)
|
||||
if returnval is None:
|
||||
returnval = transferToken(contractStructure['accepting_token'], remaining_amount * swapPrice, contractStructure['contractAddress'], a_deposit.depositorAddress, transaction_data=transaction_data, parsed_data=parsed_data, isInfiniteToken=None, blockinfo=blockinfo, transactionType='tokenswapDepositSettlement')
|
||||
if returnval == 0:
|
||||
logger.info("CRITICAL ERROR | Something went wrong in the token transfer method while doing local Smart Contract Particiaption deposit swap operation")
|
||||
return 0
|
||||
|
||||
@ -1479,8 +1473,8 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
|
||||
elif a_deposit.depositBalance <= remaining_amount:
|
||||
# accepting token transfer from the contract to depositor's address
|
||||
returnval = transferToken(contractStructure['accepting_token'], a_deposit.depositBalance * swapPrice, contractStructure['contractAddress'], a_deposit.depositorAddress, transaction_data=transaction_data, parsed_data=parsed_data, isInfiniteToken=None, blockinfo=blockinfo)
|
||||
if returnval is None:
|
||||
returnval = transferToken(contractStructure['accepting_token'], a_deposit.depositBalance * swapPrice, contractStructure['contractAddress'], a_deposit.depositorAddress, transaction_data=transaction_data, parsed_data=parsed_data, isInfiniteToken=None, blockinfo=blockinfo, transactionType='tokenswapDepositSettlement')
|
||||
if returnval == 0:
|
||||
logger.info("CRITICAL ERROR | Something went wrong in the token transfer method while doing local Smart Contract Particiaption deposit swap operation")
|
||||
return 0
|
||||
|
||||
@ -1531,8 +1525,8 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
del systemdb_session
|
||||
|
||||
# token transfer from the contract to participant's address
|
||||
returnval = transferToken(contractStructure['selling_token'], swapAmount, outputlist[0], inputlist[0], transaction_data=transaction_data, parsed_data=parsed_data, isInfiniteToken=None, blockinfo=blockinfo)
|
||||
if returnval is None:
|
||||
returnval = transferToken(contractStructure['selling_token'], swapAmount, outputlist[0], inputlist[0], transaction_data=transaction_data, parsed_data=parsed_data, isInfiniteToken=None, blockinfo=blockinfo, transactionType='tokenswapParticipationSettlement')
|
||||
if returnval == 0:
|
||||
logger.info("CRITICAL ERROR | Something went wrong in the token transfer method while doing local Smart Contract Particiaption")
|
||||
return 0
|
||||
|
||||
@ -1551,7 +1545,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
systemdb_connection.execute(f"INSERT INTO tokenAddressMapping (tokenAddress, token, transactionHash, blockNumber, blockHash) VALUES ('{inputlist[0]}', '{contractStructure['selling_token']}', '{transaction_data['txid']}', '{transaction_data['blockheight']}', '{transaction_data['blockhash']}')")
|
||||
systemdb_connection.close()
|
||||
|
||||
updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}", transaction_type='tokenswap-participation')
|
||||
updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['contractName']}-{outputlist[0]}", transactionType='tokenswapParticipation')
|
||||
pushData_SSEapi(f"Token swap successfully performed at contract {parsed_data['contractName']}-{outputlist[0]} with the transaction {transaction_data['txid']}")
|
||||
|
||||
else:
|
||||
@ -1603,12 +1597,12 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
return 0
|
||||
|
||||
returnval = transferToken(parsed_data['tokenIdentification'], parsed_data['tokenAmount'], inputlist[0],outputlist[0], transaction_data, parsed_data, isInfiniteToken=isInfiniteToken, blockinfo = blockinfo)
|
||||
if returnval is None:
|
||||
if returnval == 0:
|
||||
logger.info("Something went wrong in the token transfer method")
|
||||
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, f"{parsed_data['tokenIdentification']}", transaction_type='token-transfer')
|
||||
updateLatestTransaction(transaction_data, parsed_data, f"{parsed_data['tokenIdentification']}", transactionType='token-transfer')
|
||||
|
||||
# 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'})
|
||||
@ -2042,7 +2036,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
tokenIdentification = connection.execute('SELECT * FROM contractstructure WHERE attribute="tokenIdentification"').fetchall()[0][0]
|
||||
contractAddress = connection.execute('SELECT * FROM contractstructure WHERE attribute="contractAddress"').fetchall()[0][0]
|
||||
returnval = transferToken(tokenIdentification, participant[1], contractAddress, participant[0], transaction_data, parsed_data, blockinfo = blockinfo)
|
||||
if returnval is None:
|
||||
if returnval == 0:
|
||||
logger.info("CRITICAL ERROR | Something went wrong in the token transfer method while doing local Smart Contract Trigger")
|
||||
return 0
|
||||
|
||||
@ -2084,7 +2078,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
for winner in contractWinners:
|
||||
winnerAmount = "%.8f" % ((winner[2] / winnerSum) * tokenSum)
|
||||
returnval = transferToken(tokenIdentification, winnerAmount, outputlist[0], winner[1], transaction_data, parsed_data, blockinfo = blockinfo)
|
||||
if returnval is None:
|
||||
if returnval == 0:
|
||||
logger.critical("Something went wrong in the token transfer method while doing local Smart Contract Trigger")
|
||||
return 0
|
||||
connection.execute(f"INSERT INTO contractwinners (participantAddress, winningAmount, userChoice, transactionHash, blockNumber, blockHash) VALUES('{winner[1]}', {winnerAmount}, '{parsed_data['triggerCondition']}', '{transaction_data['txid']}','{blockinfo['height']}','{blockinfo['hash']}');")
|
||||
@ -2163,7 +2157,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
||||
|
||||
# Transfer the token
|
||||
returnval = transferToken(parsed_data['tokenIdentification'], parsed_data['depositAmount'], inputlist[0], outputlist[0], transaction_data, parsed_data, blockinfo=blockinfo)
|
||||
if returnval is None:
|
||||
if returnval == 0:
|
||||
logger.info("Something went wrong in the token transfer method")
|
||||
pushData_SSEapi(f"Error | Something went wrong while doing the internal db transactions for {transaction_data['txid']}")
|
||||
return 0
|
||||
@ -2314,7 +2308,7 @@ def scanBlockchain():
|
||||
while(current_index == -1):
|
||||
response = newMultiRequest('blocks?limit=1')
|
||||
try:
|
||||
current_index = response['blocks'][0]['height']
|
||||
current_index = response['backend']['blocks']
|
||||
except:
|
||||
logger.info('Latest block count response from multiRequest() is not in the right format. Displaying the data received in the log below')
|
||||
logger.info(response)
|
||||
|
||||
@ -157,7 +157,7 @@ def find_input_output_addresses(transaction_data):
|
||||
querylist = []
|
||||
|
||||
for vin in transaction_data["vin"]:
|
||||
vinlist.append([vin["addr"], float(vin["value"])])
|
||||
vinlist.append([vin["addresses"][0], float(vin["value"])])
|
||||
|
||||
totalinputval = float(transaction_data["valueIn"])
|
||||
|
||||
@ -210,17 +210,17 @@ def rollback_database(blockNumber, dbtype, dbname):
|
||||
db_session = create_database_session_orm('token', {'token_name':dbname}, TokenBase)
|
||||
while(True):
|
||||
subqry = db_session.query(func.max(ActiveTable.id))
|
||||
activeTable_entry = db_session.query(ActiveTable).filter(ActiveTable.id == subqry).first()
|
||||
activeTable_entry = db_session.query(ActiveTable).filter(ActiveTable.id == subqry).first()
|
||||
if activeTable_entry.blockNumber <= blockNumber:
|
||||
break
|
||||
outputAddress = activeTable_entry.address
|
||||
transferAmount = activeTable_entry.transferBalance
|
||||
inputAddress = None
|
||||
inputAddress = None
|
||||
|
||||
# Find out consumedpid and partially consumed pids
|
||||
parentid = None
|
||||
orphaned_parentid = None
|
||||
consumedpid = None
|
||||
parentid = None
|
||||
orphaned_parentid = None
|
||||
consumedpid = None
|
||||
if activeTable_entry.parentid is not None:
|
||||
parentid = activeTable_entry.parentid
|
||||
if activeTable_entry.orphaned_parentid is not None:
|
||||
@ -420,16 +420,16 @@ def initiate_rollback_process():
|
||||
for db in db_names:
|
||||
if db.db_type in ['token', 'nft', 'infinite-token']:
|
||||
if db.blockNumber > rollback_block:
|
||||
delete_database(rollback_block, f"{db.db_name}")
|
||||
delete_database(rollback_block, f"{db.db_name}")
|
||||
else:
|
||||
rollback_database(rollback_block, 'token', f"{db.db_name}")
|
||||
rollback_database(rollback_block, 'token', f"{db.db_name}")
|
||||
elif db.db_type in ['smartcontract']:
|
||||
if db.blockNumber > rollback_block:
|
||||
delete_database(rollback_block, f"{db.db_name}")
|
||||
delete_database(rollback_block, f"{db.db_name}")
|
||||
else:
|
||||
db_split = db.db_name.rsplit('-',1)
|
||||
db_name = {'contract_name':db_split[0], 'contract_address':db_split[1]}
|
||||
rollback_database(rollback_block, 'smartcontract', db_name)
|
||||
rollback_database(rollback_block, 'smartcontract', db_name)
|
||||
|
||||
'''
|
||||
for token_db in tokendb_set:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user