Added logic for infinite token
This commit is contained in:
parent
c111b73c82
commit
714afa4ccd
@ -178,143 +178,160 @@ def updateLatestBlock(blockData):
|
|||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress, transaction_data=None, parsed_data=None):
|
def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress, transaction_data=None, parsed_data=None, isInfiniteToken=None):
|
||||||
session = create_database_session_orm('token', {'token_name': f"{tokenIdentification}"}, Base)
|
session = create_database_session_orm('token', {'token_name': f"{tokenIdentification}"}, Base)
|
||||||
|
|
||||||
availableTokens = session.query(func.sum(ActiveTable.transferBalance)).filter_by(address=inputAddress).all()[0][0]
|
if isInfiniteToken == True:
|
||||||
commentTransferAmount = float(tokenAmount)
|
# Make new entry
|
||||||
if availableTokens is None:
|
session.add(ActiveTable(address=outputAddress, consumedpid='1', transferBalance=float(tokenAmount)))
|
||||||
logger.info(f"The sender address {inputAddress} doesn't own any {tokenIdentification.upper()} tokens")
|
|
||||||
session.close()
|
|
||||||
return 0
|
|
||||||
|
|
||||||
elif availableTokens < commentTransferAmount:
|
|
||||||
logger.info("The transfer amount passed in the comments is more than the user owns\nThis transaction will be discarded\n")
|
|
||||||
session.close()
|
|
||||||
return 0
|
|
||||||
|
|
||||||
elif availableTokens >= commentTransferAmount:
|
|
||||||
table = session.query(ActiveTable).filter(ActiveTable.address == inputAddress).all()
|
|
||||||
block_data = newMultiRequest('block/{}'.format(transaction_data['blockhash']))
|
|
||||||
|
|
||||||
pidlst = []
|
|
||||||
checksum = 0
|
|
||||||
for row in table:
|
|
||||||
if checksum >= commentTransferAmount:
|
|
||||||
break
|
|
||||||
pidlst.append([row.id, row.transferBalance])
|
|
||||||
checksum = checksum + row.transferBalance
|
|
||||||
|
|
||||||
if checksum == commentTransferAmount:
|
|
||||||
consumedpid_string = ''
|
|
||||||
|
|
||||||
# Update all pids in pidlist's transferBalance to 0
|
|
||||||
lastid = session.query(ActiveTable)[-1].id
|
|
||||||
for piditem in pidlst:
|
|
||||||
entry = session.query(ActiveTable).filter(ActiveTable.id == piditem[0]).all()
|
|
||||||
consumedpid_string = consumedpid_string + '{},'.format(piditem[0])
|
|
||||||
session.add(TransferLogs(sourceFloAddress=inputAddress, destFloAddress=outputAddress,
|
|
||||||
transferAmount=entry[0].transferBalance, sourceId=piditem[0],
|
|
||||||
destinationId=lastid + 1,
|
|
||||||
blockNumber=block_data['height'], time=block_data['time'],
|
|
||||||
transactionHash=transaction_data['txid']))
|
|
||||||
entry[0].transferBalance = 0
|
|
||||||
|
|
||||||
if len(consumedpid_string) > 1:
|
|
||||||
consumedpid_string = consumedpid_string[:-1]
|
|
||||||
|
|
||||||
# Make new entry
|
|
||||||
session.add(ActiveTable(address=outputAddress, consumedpid=consumedpid_string,
|
|
||||||
transferBalance=commentTransferAmount))
|
|
||||||
|
|
||||||
# Migration
|
|
||||||
# shift pid of used utxos from active to consumed
|
|
||||||
for piditem in pidlst:
|
|
||||||
# move the parentids consumed to consumedpid column in both activeTable and consumedTable
|
|
||||||
entries = session.query(ActiveTable).filter(ActiveTable.parentid == piditem[0]).all()
|
|
||||||
for entry in entries:
|
|
||||||
entry.consumedpid = entry.consumedpid + ',{}'.format(piditem[0])
|
|
||||||
entry.parentid = None
|
|
||||||
|
|
||||||
entries = session.query(ConsumedTable).filter(ConsumedTable.parentid == piditem[0]).all()
|
|
||||||
for entry in entries:
|
|
||||||
entry.consumedpid = entry.consumedpid + ',{}'.format(piditem[0])
|
|
||||||
entry.parentid = None
|
|
||||||
|
|
||||||
# move the pids consumed in the transaction to consumedTable and delete them from activeTable
|
|
||||||
session.execute(
|
|
||||||
'INSERT INTO consumedTable (id, address, parentid, consumedpid, transferBalance) SELECT id, address, parentid, consumedpid, transferBalance FROM activeTable WHERE id={}'.format(
|
|
||||||
piditem[0]))
|
|
||||||
session.execute('DELETE FROM activeTable WHERE id={}'.format(piditem[0]))
|
|
||||||
session.commit()
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
elif checksum > commentTransferAmount:
|
|
||||||
consumedpid_string = ''
|
|
||||||
# Update all pids in pidlist's transferBalance
|
|
||||||
lastid = session.query(ActiveTable)[-1].id
|
|
||||||
for idx, piditem in enumerate(pidlst):
|
|
||||||
entry = session.query(ActiveTable).filter(ActiveTable.id == piditem[0]).all()
|
|
||||||
if idx != len(pidlst) - 1:
|
|
||||||
session.add(TransferLogs(sourceFloAddress=inputAddress, destFloAddress=outputAddress,
|
|
||||||
transferAmount=entry[0].transferBalance, sourceId=piditem[0],
|
|
||||||
destinationId=lastid + 1,
|
|
||||||
blockNumber=block_data['height'], time=block_data['time'],
|
|
||||||
transactionHash=transaction_data['txid']))
|
|
||||||
entry[0].transferBalance = 0
|
|
||||||
consumedpid_string = consumedpid_string + '{},'.format(piditem[0])
|
|
||||||
else:
|
|
||||||
session.add(TransferLogs(sourceFloAddress=inputAddress, destFloAddress=outputAddress,
|
|
||||||
transferAmount=piditem[1] - (checksum - commentTransferAmount),
|
|
||||||
sourceId=piditem[0],
|
|
||||||
destinationId=lastid + 1,
|
|
||||||
blockNumber=block_data['height'], time=block_data['time'],
|
|
||||||
transactionHash=transaction_data['txid']))
|
|
||||||
entry[0].transferBalance = checksum - commentTransferAmount
|
|
||||||
|
|
||||||
if len(consumedpid_string) > 1:
|
|
||||||
consumedpid_string = consumedpid_string[:-1]
|
|
||||||
|
|
||||||
# Make new entry
|
|
||||||
session.add(ActiveTable(address=outputAddress, parentid=pidlst[-1][0], consumedpid=consumedpid_string,
|
|
||||||
transferBalance=commentTransferAmount))
|
|
||||||
|
|
||||||
# Migration
|
|
||||||
# shift pid of used utxos from active to consumed
|
|
||||||
for piditem in pidlst[:-1]:
|
|
||||||
# move the parentids consumed to consumedpid column in both activeTable and consumedTable
|
|
||||||
entries = session.query(ActiveTable).filter(ActiveTable.parentid == piditem[0]).all()
|
|
||||||
for entry in entries:
|
|
||||||
entry.consumedpid = entry.consumedpid + ',{}'.format(piditem[0])
|
|
||||||
entry.parentid = None
|
|
||||||
|
|
||||||
entries = session.query(ConsumedTable).filter(ConsumedTable.parentid == piditem[0]).all()
|
|
||||||
for entry in entries:
|
|
||||||
entry.consumedpid = entry.consumedpid + ',{}'.format(piditem[0])
|
|
||||||
entry.parentid = None
|
|
||||||
|
|
||||||
# move the pids consumed in the transaction to consumedTable and delete them from activeTable
|
|
||||||
session.execute(
|
|
||||||
'INSERT INTO consumedTable (id, address, parentid, consumedpid, transferBalance) SELECT id, address, parentid, consumedpid, transferBalance FROM activeTable WHERE id={}'.format(
|
|
||||||
piditem[0]))
|
|
||||||
session.execute('DELETE FROM activeTable WHERE id={}'.format(piditem[0]))
|
|
||||||
session.commit()
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
block_data = newMultiRequest('block/{}'.format(transaction_data['blockhash']))
|
block_data = newMultiRequest('block/{}'.format(transaction_data['blockhash']))
|
||||||
|
|
||||||
blockchainReference = neturl + 'tx/' + transaction_data['txid']
|
blockchainReference = neturl + 'tx/' + transaction_data['txid']
|
||||||
session.add(TransactionHistory(sourceFloAddress=inputAddress, destFloAddress=outputAddress,
|
session.add(TransactionHistory(sourceFloAddress=inputAddress, destFloAddress=outputAddress,
|
||||||
transferAmount=tokenAmount, blockNumber=block_data['height'],
|
transferAmount=tokenAmount, blockNumber=block_data['height'],
|
||||||
blockHash=block_data['hash'], time=block_data['time'],
|
blockHash=block_data['hash'], time=block_data['time'],
|
||||||
transactionHash=transaction_data['txid'],
|
transactionHash=transaction_data['txid'],
|
||||||
blockchainReference=blockchainReference, jsonData=json.dumps(transaction_data),
|
blockchainReference=blockchainReference, jsonData=json.dumps(transaction_data),
|
||||||
transactionType=parsed_data['type'],
|
transactionType=parsed_data['type'],
|
||||||
parsedFloData=json.dumps(parsed_data)))
|
parsedFloData=json.dumps(parsed_data)))
|
||||||
session.commit()
|
session.commit()
|
||||||
session.close()
|
session.close()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
else:
|
||||||
|
availableTokens = session.query(func.sum(ActiveTable.transferBalance)).filter_by(address=inputAddress).all()[0][0]
|
||||||
|
commentTransferAmount = float(tokenAmount)
|
||||||
|
if availableTokens is None:
|
||||||
|
logger.info(f"The sender address {inputAddress} doesn't own any {tokenIdentification.upper()} tokens")
|
||||||
|
session.close()
|
||||||
|
return 0
|
||||||
|
|
||||||
|
elif availableTokens < commentTransferAmount:
|
||||||
|
logger.info("The transfer amount passed in the comments is more than the user owns\nThis transaction will be discarded\n")
|
||||||
|
session.close()
|
||||||
|
return 0
|
||||||
|
|
||||||
|
elif availableTokens >= commentTransferAmount:
|
||||||
|
table = session.query(ActiveTable).filter(ActiveTable.address == inputAddress).all()
|
||||||
|
block_data = newMultiRequest('block/{}'.format(transaction_data['blockhash']))
|
||||||
|
|
||||||
|
pidlst = []
|
||||||
|
checksum = 0
|
||||||
|
for row in table:
|
||||||
|
if checksum >= commentTransferAmount:
|
||||||
|
break
|
||||||
|
pidlst.append([row.id, row.transferBalance])
|
||||||
|
checksum = checksum + row.transferBalance
|
||||||
|
|
||||||
|
if checksum == commentTransferAmount:
|
||||||
|
consumedpid_string = ''
|
||||||
|
|
||||||
|
# Update all pids in pidlist's transferBalance to 0
|
||||||
|
lastid = session.query(ActiveTable)[-1].id
|
||||||
|
for piditem in pidlst:
|
||||||
|
entry = session.query(ActiveTable).filter(ActiveTable.id == piditem[0]).all()
|
||||||
|
consumedpid_string = consumedpid_string + '{},'.format(piditem[0])
|
||||||
|
session.add(TransferLogs(sourceFloAddress=inputAddress, destFloAddress=outputAddress,
|
||||||
|
transferAmount=entry[0].transferBalance, sourceId=piditem[0],
|
||||||
|
destinationId=lastid + 1,
|
||||||
|
blockNumber=block_data['height'], time=block_data['time'],
|
||||||
|
transactionHash=transaction_data['txid']))
|
||||||
|
entry[0].transferBalance = 0
|
||||||
|
|
||||||
|
if len(consumedpid_string) > 1:
|
||||||
|
consumedpid_string = consumedpid_string[:-1]
|
||||||
|
|
||||||
|
# Make new entry
|
||||||
|
session.add(ActiveTable(address=outputAddress, consumedpid=consumedpid_string,
|
||||||
|
transferBalance=commentTransferAmount))
|
||||||
|
|
||||||
|
# Migration
|
||||||
|
# shift pid of used utxos from active to consumed
|
||||||
|
for piditem in pidlst:
|
||||||
|
# move the parentids consumed to consumedpid column in both activeTable and consumedTable
|
||||||
|
entries = session.query(ActiveTable).filter(ActiveTable.parentid == piditem[0]).all()
|
||||||
|
for entry in entries:
|
||||||
|
entry.consumedpid = entry.consumedpid + ',{}'.format(piditem[0])
|
||||||
|
entry.parentid = None
|
||||||
|
|
||||||
|
entries = session.query(ConsumedTable).filter(ConsumedTable.parentid == piditem[0]).all()
|
||||||
|
for entry in entries:
|
||||||
|
entry.consumedpid = entry.consumedpid + ',{}'.format(piditem[0])
|
||||||
|
entry.parentid = None
|
||||||
|
|
||||||
|
# move the pids consumed in the transaction to consumedTable and delete them from activeTable
|
||||||
|
session.execute(
|
||||||
|
'INSERT INTO consumedTable (id, address, parentid, consumedpid, transferBalance) SELECT id, address, parentid, consumedpid, transferBalance FROM activeTable WHERE id={}'.format(
|
||||||
|
piditem[0]))
|
||||||
|
session.execute('DELETE FROM activeTable WHERE id={}'.format(piditem[0]))
|
||||||
|
session.commit()
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
elif checksum > commentTransferAmount:
|
||||||
|
consumedpid_string = ''
|
||||||
|
# Update all pids in pidlist's transferBalance
|
||||||
|
lastid = session.query(ActiveTable)[-1].id
|
||||||
|
for idx, piditem in enumerate(pidlst):
|
||||||
|
entry = session.query(ActiveTable).filter(ActiveTable.id == piditem[0]).all()
|
||||||
|
if idx != len(pidlst) - 1:
|
||||||
|
session.add(TransferLogs(sourceFloAddress=inputAddress, destFloAddress=outputAddress,
|
||||||
|
transferAmount=entry[0].transferBalance, sourceId=piditem[0],
|
||||||
|
destinationId=lastid + 1,
|
||||||
|
blockNumber=block_data['height'], time=block_data['time'],
|
||||||
|
transactionHash=transaction_data['txid']))
|
||||||
|
entry[0].transferBalance = 0
|
||||||
|
consumedpid_string = consumedpid_string + '{},'.format(piditem[0])
|
||||||
|
else:
|
||||||
|
session.add(TransferLogs(sourceFloAddress=inputAddress, destFloAddress=outputAddress,
|
||||||
|
transferAmount=piditem[1] - (checksum - commentTransferAmount),
|
||||||
|
sourceId=piditem[0],
|
||||||
|
destinationId=lastid + 1,
|
||||||
|
blockNumber=block_data['height'], time=block_data['time'],
|
||||||
|
transactionHash=transaction_data['txid']))
|
||||||
|
entry[0].transferBalance = checksum - commentTransferAmount
|
||||||
|
|
||||||
|
if len(consumedpid_string) > 1:
|
||||||
|
consumedpid_string = consumedpid_string[:-1]
|
||||||
|
|
||||||
|
# Make new entry
|
||||||
|
session.add(ActiveTable(address=outputAddress, parentid=pidlst[-1][0], consumedpid=consumedpid_string, transferBalance=commentTransferAmount))
|
||||||
|
|
||||||
|
# Migration
|
||||||
|
# shift pid of used utxos from active to consumed
|
||||||
|
for piditem in pidlst[:-1]:
|
||||||
|
# move the parentids consumed to consumedpid column in both activeTable and consumedTable
|
||||||
|
entries = session.query(ActiveTable).filter(ActiveTable.parentid == piditem[0]).all()
|
||||||
|
for entry in entries:
|
||||||
|
entry.consumedpid = entry.consumedpid + ',{}'.format(piditem[0])
|
||||||
|
entry.parentid = None
|
||||||
|
|
||||||
|
entries = session.query(ConsumedTable).filter(ConsumedTable.parentid == piditem[0]).all()
|
||||||
|
for entry in entries:
|
||||||
|
entry.consumedpid = entry.consumedpid + ',{}'.format(piditem[0])
|
||||||
|
entry.parentid = None
|
||||||
|
|
||||||
|
# move the pids consumed in the transaction to consumedTable and delete them from activeTable
|
||||||
|
session.execute(
|
||||||
|
'INSERT INTO consumedTable (id, address, parentid, consumedpid, transferBalance) SELECT id, address, parentid, consumedpid, transferBalance FROM activeTable WHERE id={}'.format(
|
||||||
|
piditem[0]))
|
||||||
|
session.execute('DELETE FROM activeTable WHERE id={}'.format(piditem[0]))
|
||||||
|
session.commit()
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
block_data = newMultiRequest('block/{}'.format(transaction_data['blockhash']))
|
||||||
|
|
||||||
|
blockchainReference = neturl + 'tx/' + transaction_data['txid']
|
||||||
|
session.add(TransactionHistory(sourceFloAddress=inputAddress, destFloAddress=outputAddress,
|
||||||
|
transferAmount=tokenAmount, blockNumber=block_data['height'],
|
||||||
|
blockHash=block_data['hash'], time=block_data['time'],
|
||||||
|
transactionHash=transaction_data['txid'],
|
||||||
|
blockchainReference=blockchainReference, jsonData=json.dumps(transaction_data),
|
||||||
|
transactionType=parsed_data['type'],
|
||||||
|
parsedFloData=json.dumps(parsed_data)))
|
||||||
|
session.commit()
|
||||||
|
session.close()
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
def checkLocaltriggerContracts(blockinfo):
|
def checkLocaltriggerContracts(blockinfo):
|
||||||
connection = create_database_connection('system_dbs', {'db_name':"system"})
|
connection = create_database_connection('system_dbs', {'db_name':"system"})
|
||||||
@ -652,6 +669,19 @@ def processTransaction(transaction_data, parsed_data):
|
|||||||
if parsed_data['transferType'] == 'token':
|
if parsed_data['transferType'] == 'token':
|
||||||
# check if the token exists in the database
|
# check if the token exists in the database
|
||||||
if check_database_existence('token', {'token_name':f"{parsed_data['tokenIdentification']}"}):
|
if check_database_existence('token', {'token_name':f"{parsed_data['tokenIdentification']}"}):
|
||||||
|
# Pull details of the token type from system.db database
|
||||||
|
connection = create_database_connection('system_dbs', {'db_name':'system'})
|
||||||
|
db_details = connection.execute("select db_name, db_type, keyword, object_format from databaseAddressMapping where db_name='{}'".format(parsed_data['tokenIdentification']))
|
||||||
|
db_details = list(zip(*db_details))
|
||||||
|
if db_details[1] == 'infinite-token':
|
||||||
|
db_object = json.loads(db_details[3])
|
||||||
|
if db_object['root_address'] == inputlist[0]:
|
||||||
|
isInfiniteToken = True
|
||||||
|
else:
|
||||||
|
isInfiniteToken = False
|
||||||
|
else:
|
||||||
|
isInfiniteToken = False
|
||||||
|
|
||||||
# Check if the transaction hash already exists in the token db
|
# Check if the transaction hash already exists in the token db
|
||||||
connection = create_database_connection('token', {'token_name':f"{create_database_connection}"})
|
connection = create_database_connection('token', {'token_name':f"{create_database_connection}"})
|
||||||
blockno_txhash = connection.execute('select blockNumber, transactionHash from transactionHistory').fetchall()
|
blockno_txhash = connection.execute('select blockNumber, transactionHash from transactionHistory').fetchall()
|
||||||
@ -663,7 +693,7 @@ def processTransaction(transaction_data, parsed_data):
|
|||||||
pushData_SSEapi(f"Error | Transaction {transaction_data['txid']} already exists in the token db. This is unusual, please check your code")
|
pushData_SSEapi(f"Error | Transaction {transaction_data['txid']} already exists in the token db. This is unusual, please check your code")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
returnval = transferToken(parsed_data['tokenIdentification'], parsed_data['tokenAmount'], inputlist[0],outputlist[0], transaction_data, parsed_data)
|
returnval = transferToken(parsed_data['tokenIdentification'], parsed_data['tokenAmount'], inputlist[0],outputlist[0], transaction_data, parsed_data, isInfiniteToken=isInfiniteToken)
|
||||||
if returnval is None:
|
if returnval is None:
|
||||||
logger.info("Something went wrong in the token transfer method")
|
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']}")
|
pushData_SSEapi(f"Error | Something went wrong while doing the internal db transactions for {transaction_data['txid']}")
|
||||||
@ -687,7 +717,6 @@ def processTransaction(transaction_data, parsed_data):
|
|||||||
else:
|
else:
|
||||||
logger.info(f"Token transfer at transaction {transaction_data['txid']} rejected as a token with the name {parsed_data['tokenIdentification']} doesnt not exist")
|
logger.info(f"Token transfer at transaction {transaction_data['txid']} rejected as a token with the name {parsed_data['tokenIdentification']} doesnt not exist")
|
||||||
session = create_database_session_orm('system_dbs', {'db_name': "system"}, Base)
|
session = create_database_session_orm('system_dbs', {'db_name': "system"}, Base)
|
||||||
|
|
||||||
blockchainReference = neturl + 'tx/' + transaction_data['txid']
|
blockchainReference = neturl + 'tx/' + transaction_data['txid']
|
||||||
session.add(RejectedTransactionHistory(tokenIdentification=parsed_data['tokenIdentification'],
|
session.add(RejectedTransactionHistory(tokenIdentification=parsed_data['tokenIdentification'],
|
||||||
sourceFloAddress=inputadd, destFloAddress=outputlist[0],
|
sourceFloAddress=inputadd, destFloAddress=outputlist[0],
|
||||||
@ -1466,11 +1495,10 @@ def processTransaction(transaction_data, parsed_data):
|
|||||||
# add it to token address to token mapping db table
|
# add it to token address to token mapping db table
|
||||||
connection = create_database_connection('system_dbs', {'db_name':'system'})
|
connection = create_database_connection('system_dbs', {'db_name':'system'})
|
||||||
connection.execute(f"INSERT INTO tokenAddressMapping (tokenAddress, token, transactionHash, blockNumber, blockHash) VALUES ('{inputadd}', '{parsed_data['tokenIdentification']}', '{transaction_data['txid']}', '{transaction_data['blockheight']}', '{transaction_data['blockhash']}');")
|
connection.execute(f"INSERT INTO tokenAddressMapping (tokenAddress, token, transactionHash, blockNumber, blockHash) VALUES ('{inputadd}', '{parsed_data['tokenIdentification']}', '{transaction_data['txid']}', '{transaction_data['blockheight']}', '{transaction_data['blockhash']}');")
|
||||||
connection.execute(f"INSERT INTO tokenAddressMapping (tokenAddress, token, transactionHash, blockNumber, blockHash) VALUES ('{inputadd}', '{parsed_data['tokenIdentification']}', '{transaction_data['txid']}', '{transaction_data['blockheight']}', '{transaction_data['blockhash']}');")
|
connection.execute(f"INSERT INTO databaseAddressMapping (db_name, db_type, keyword, object_format) VALUES ('{parsed_data['tokenIdentification']}', 'token', '', ''")
|
||||||
connection.close()
|
connection.close()
|
||||||
|
|
||||||
updateLatestTransaction(transaction_data, parsed_data)
|
updateLatestTransaction(transaction_data, parsed_data)
|
||||||
|
|
||||||
pushData_SSEapi(f"Token | Succesfully incorporated token {parsed_data['tokenIdentification']} at transaction {transaction_data['txid']}")
|
pushData_SSEapi(f"Token | Succesfully incorporated token {parsed_data['tokenIdentification']} at transaction {transaction_data['txid']}")
|
||||||
return 1
|
return 1
|
||||||
else:
|
else:
|
||||||
@ -1563,17 +1591,10 @@ def processTransaction(transaction_data, parsed_data):
|
|||||||
session = create_database_session_orm('smart_contract', {'contract_name': f"{parsed_data['contractName']}", 'contract_address': f"{parsed_data['contractAddress']}"}, ContractBase)
|
session = create_database_session_orm('smart_contract', {'contract_name': f"{parsed_data['contractName']}", 'contract_address': f"{parsed_data['contractAddress']}"}, ContractBase)
|
||||||
session.add(ContractStructure(attribute='contractType', index=0, value=parsed_data['contractType']))
|
session.add(ContractStructure(attribute='contractType', index=0, value=parsed_data['contractType']))
|
||||||
session.add(ContractStructure(attribute='contractName', index=0, value=parsed_data['contractName']))
|
session.add(ContractStructure(attribute='contractName', index=0, value=parsed_data['contractName']))
|
||||||
session.add(
|
session.add(ContractStructure(attribute='tokenIdentification', index=0, value=parsed_data['tokenIdentification']))
|
||||||
ContractStructure(attribute='tokenIdentification', index=0,
|
session.add(ContractStructure(attribute='contractAddress', index=0, value=parsed_data['contractAddress']))
|
||||||
value=parsed_data['tokenIdentification']))
|
session.add(ContractStructure(attribute='flodata', index=0, value=parsed_data['flodata']))
|
||||||
session.add(
|
session.add(ContractStructure(attribute='expiryTime', index=0, value=parsed_data['contractConditions']['expiryTime']))
|
||||||
ContractStructure(attribute='contractAddress', index=0, value=parsed_data['contractAddress']))
|
|
||||||
session.add(
|
|
||||||
ContractStructure(attribute='flodata', index=0,
|
|
||||||
value=parsed_data['flodata']))
|
|
||||||
session.add(
|
|
||||||
ContractStructure(attribute='expiryTime', index=0,
|
|
||||||
value=parsed_data['contractConditions']['expiryTime']))
|
|
||||||
if 'contractAmount' in parsed_data['contractConditions']:
|
if 'contractAmount' in parsed_data['contractConditions']:
|
||||||
session.add(
|
session.add(
|
||||||
ContractStructure(attribute='contractAmount', index=0,
|
ContractStructure(attribute='contractAmount', index=0,
|
||||||
@ -1610,7 +1631,6 @@ def processTransaction(transaction_data, parsed_data):
|
|||||||
transactionHash=transaction_data['txid'],
|
transactionHash=transaction_data['txid'],
|
||||||
blockchainReference=blockchainReference,
|
blockchainReference=blockchainReference,
|
||||||
jsonData=json.dumps(transaction_data),
|
jsonData=json.dumps(transaction_data),
|
||||||
|
|
||||||
parsedFloData=json.dumps(parsed_data)
|
parsedFloData=json.dumps(parsed_data)
|
||||||
))
|
))
|
||||||
session.commit()
|
session.commit()
|
||||||
@ -1651,6 +1671,10 @@ def processTransaction(transaction_data, parsed_data):
|
|||||||
transactionHash=transaction_data['txid'],
|
transactionHash=transaction_data['txid'],
|
||||||
blockNumber=transaction_data['blockheight'],
|
blockNumber=transaction_data['blockheight'],
|
||||||
blockHash=transaction_data['blockhash']))
|
blockHash=transaction_data['blockhash']))
|
||||||
|
session.add(DatabaseAddressMapping(db_name=f"{parsed_data['contractName']}-{inputadd}",
|
||||||
|
db_type='smartcontract',
|
||||||
|
keyword='',
|
||||||
|
object_format=''))
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
session.close()
|
session.close()
|
||||||
@ -1769,6 +1793,10 @@ def processTransaction(transaction_data, parsed_data):
|
|||||||
transactionHash=transaction_data['txid'],
|
transactionHash=transaction_data['txid'],
|
||||||
blockNumber=transaction_data['blockheight'],
|
blockNumber=transaction_data['blockheight'],
|
||||||
blockHash=transaction_data['blockhash']))
|
blockHash=transaction_data['blockhash']))
|
||||||
|
session.add(DatabaseAddressMapping(db_name=f"{parsed_data['contractName']}-{inputadd}",
|
||||||
|
db_type='smartcontract',
|
||||||
|
keyword='',
|
||||||
|
object_format=''))
|
||||||
session.commit()
|
session.commit()
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
@ -2446,6 +2474,60 @@ def processTransaction(transaction_data, parsed_data):
|
|||||||
pushData_SSEapi(f"Error | Token incorporation rejected at transaction {transaction_data['txid']} as token {parsed_data['tokenIdentification']} already exists")
|
pushData_SSEapi(f"Error | Token incorporation rejected at transaction {transaction_data['txid']} as token {parsed_data['tokenIdentification']} already exists")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
elif parsed_data['type'] == 'infiniteTokenIncorporation':
|
||||||
|
if not check_database_existence('token', {'token_name':f"{parsed_data['tokenIdentification']}"}):
|
||||||
|
parsed_data['tokenAmount'] = 0
|
||||||
|
session = create_database_session_orm('token', {'token_name': f"{parsed_data['tokenIdentification']}"}, Base)
|
||||||
|
session.add(ActiveTable(address=inputlist[0], parentid=0, transferBalance=parsed_data['tokenAmount']))
|
||||||
|
session.add(TransferLogs(sourceFloAddress=inputadd, destFloAddress=outputlist[0],
|
||||||
|
transferAmount=parsed_data['tokenAmount'], sourceId=0, destinationId=1,
|
||||||
|
blockNumber=transaction_data['blockheight'], time=transaction_data['blocktime'],
|
||||||
|
transactionHash=transaction_data['txid']))
|
||||||
|
blockchainReference = neturl + 'tx/' + transaction_data['txid']
|
||||||
|
session.add(TransactionHistory(sourceFloAddress=inputadd, destFloAddress=outputlist[0],
|
||||||
|
transferAmount=parsed_data['tokenAmount'],
|
||||||
|
blockNumber=transaction_data['blockheight'],
|
||||||
|
blockHash=transaction_data['blockhash'],
|
||||||
|
time=transaction_data['blocktime'],
|
||||||
|
transactionHash=transaction_data['txid'],
|
||||||
|
blockchainReference=blockchainReference,
|
||||||
|
jsonData=json.dumps(transaction_data), transactionType=parsed_data['type'],
|
||||||
|
parsedFloData=json.dumps(parsed_data)))
|
||||||
|
session.commit()
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
# add it to token address to token mapping db table
|
||||||
|
connection = create_database_connection('system_dbs', {'db_name':'system'})
|
||||||
|
connection.execute(f"INSERT INTO tokenAddressMapping (tokenAddress, token, transactionHash, blockNumber, blockHash) VALUES ('{inputadd}', '{parsed_data['tokenIdentification']}', '{transaction_data['txid']}', '{transaction_data['blockheight']}', '{transaction_data['blockhash']}');")
|
||||||
|
info_object = {'root_address': inputadd}
|
||||||
|
connection.execute(f"INSERT INTO databaseAddressMapping (db_name, db_type, keyword, object_format) VALUES ('{parsed_data['tokenIdentification']}', 'infinite-token', '', '{info_object}'")
|
||||||
|
connection.close()
|
||||||
|
|
||||||
|
updateLatestTransaction(transaction_data, parsed_data)
|
||||||
|
pushData_SSEapi(f"Token | Succesfully incorporated token {parsed_data['tokenIdentification']} at transaction {transaction_data['txid']}")
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
logger.info(f"Transaction {transaction_data['txid']} rejected as a token with the name {parsed_data['tokenIdentification']} has already been incorporated")
|
||||||
|
session = create_database_session_orm('system_dbs', {'db_name': "system"}, SystemBase)
|
||||||
|
blockchainReference = neturl + 'tx/' + transaction_data['txid']
|
||||||
|
session.add(RejectedTransactionHistory(tokenIdentification=parsed_data['tokenIdentification'],
|
||||||
|
sourceFloAddress=inputadd, destFloAddress=outputlist[0],
|
||||||
|
transferAmount=parsed_data['tokenAmount'],
|
||||||
|
blockNumber=transaction_data['blockheight'],
|
||||||
|
blockHash=transaction_data['blockhash'],
|
||||||
|
time=transaction_data['blocktime'],
|
||||||
|
transactionHash=transaction_data['txid'],
|
||||||
|
blockchainReference=blockchainReference,
|
||||||
|
jsonData=json.dumps(transaction_data),
|
||||||
|
rejectComment=f"Transaction {transaction_data['txid']} rejected as a token with the name {parsed_data['tokenIdentification']} has already been incorporated",
|
||||||
|
transactionType=parsed_data['type'],
|
||||||
|
parsedFloData=json.dumps(parsed_data)
|
||||||
|
))
|
||||||
|
session.commit()
|
||||||
|
session.close()
|
||||||
|
pushData_SSEapi(f"Error | Token incorporation rejected at transaction {transaction_data['txid']} as token {parsed_data['tokenIdentification']} already exists")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
''' {'type': 'smartContractDeposit', 'tokenIdentification': hashList[0][:-1], 'contractName': atList[0][:-1], 'flodata': string, 'depositConditions': deposit_conditions} '''
|
''' {'type': 'smartContractDeposit', 'tokenIdentification': hashList[0][:-1], 'contractName': atList[0][:-1], 'flodata': string, 'depositConditions': deposit_conditions} '''
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user