External trigger Committee addresses shifted to blockchain
* The committee addresses who are responsible for one-time-trigger Smart Contract's triggers have been shifted to the blockchain. * Added an APP ADMIN ID field who will be responsible for appointing committee members
This commit is contained in:
parent
901026ccdd
commit
528223fec7
@ -53,6 +53,46 @@ def pushData_SSEapi(message):
|
|||||||
print('')
|
print('')
|
||||||
|
|
||||||
|
|
||||||
|
def process_committee_flodata(flodata):
|
||||||
|
flo_address_list = []
|
||||||
|
try:
|
||||||
|
contract_committee_actions = flodata['token-tracker']['contract-committee']
|
||||||
|
except KeyError:
|
||||||
|
print('Flodata related to contract committee')
|
||||||
|
else:
|
||||||
|
for action in contract_committee_actions.keys():
|
||||||
|
if action == 'add':
|
||||||
|
for floid in contract_committee_actions[f'{action}']:
|
||||||
|
flo_address_list.append(floid)
|
||||||
|
|
||||||
|
if action == 'remove':
|
||||||
|
for floid in contract_committee_actions[f'{action}']:
|
||||||
|
flo_address_list.remove(floid)
|
||||||
|
finally:
|
||||||
|
return flo_address_list
|
||||||
|
|
||||||
|
|
||||||
|
def refresh_committee_list(admin_flo_id, api_url):
|
||||||
|
response = requests.get(f'{api_url}api/addr/{admin_flo_id}')
|
||||||
|
if response.status_code == 200:
|
||||||
|
response = response.json()
|
||||||
|
else:
|
||||||
|
print('Response from the API failed')
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
committee_list = []
|
||||||
|
for idx, transaction in enumerate(response['transactions']):
|
||||||
|
transaction_info = requests.get(f'{api_url}api/tx/{transaction}')
|
||||||
|
if transaction_info.status_code == 200:
|
||||||
|
transaction_info = transaction_info.json()
|
||||||
|
try:
|
||||||
|
tx_flodata = json.loads(transaction_info['floData'])
|
||||||
|
committee_list += process_committee_flodata(tx_flodata)
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
return committee_list
|
||||||
|
|
||||||
|
|
||||||
def check_database_existence(type, parameters):
|
def check_database_existence(type, parameters):
|
||||||
if type == 'token':
|
if type == 'token':
|
||||||
path = os.path.join(config['DEFAULT']['DATA_PATH'], 'tokens', f'{parameters["token_name"]}.db')
|
path = os.path.join(config['DEFAULT']['DATA_PATH'], 'tokens', f'{parameters["token_name"]}.db')
|
||||||
@ -320,9 +360,7 @@ def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress,
|
|||||||
if isInfiniteToken == True:
|
if isInfiniteToken == True:
|
||||||
# Make new entry
|
# Make new entry
|
||||||
session.add(ActiveTable(address=outputAddress, consumedpid='1', transferBalance=float(tokenAmount), blockNumber=blockinfo['height']))
|
session.add(ActiveTable(address=outputAddress, consumedpid='1', transferBalance=float(tokenAmount), 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=parsed_data['type'], parsedFloData=json.dumps(parsed_data))
|
||||||
|
|
||||||
session.commit()
|
session.commit()
|
||||||
session.close()
|
session.close()
|
||||||
return 1
|
return 1
|
||||||
@ -463,8 +501,7 @@ def trigger_internal_contract(tokenAmount_sum, contractStructure, transaction_da
|
|||||||
# Trigger the contract
|
# Trigger the contract
|
||||||
if tokenAmount_sum <= 0:
|
if tokenAmount_sum <= 0:
|
||||||
# Add transaction to ContractTransactionHistory
|
# Add transaction to ContractTransactionHistory
|
||||||
add_contract_transaction_history(contract_name=contract_name, contract_address=contract_address, transactionType='trigger', transactionSubType='zero-participation', sourceFloAddress='', destFloAddress='', transferAmount=0, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=None, parsedFloData=None)
|
add_contract_transaction_history(contract_name=contract_name, contract_address=contract_address, transactionType='trigger', transactionSubType='zero-participation', sourceFloAddress='', destFloAddress='', transferAmount=0, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=json.dumps(transaction_data), parsedFloData=json.dumps(parsed_data))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
payeeAddress = json.loads(contractStructure['payeeAddress'])
|
payeeAddress = json.loads(contractStructure['payeeAddress'])
|
||||||
tokenIdentification = contractStructure['tokenIdentification']
|
tokenIdentification = contractStructure['tokenIdentification']
|
||||||
@ -478,35 +515,33 @@ def trigger_internal_contract(tokenAmount_sum, contractStructure, transaction_da
|
|||||||
|
|
||||||
# Add transaction to ContractTransactionHistory
|
# Add transaction to ContractTransactionHistory
|
||||||
add_contract_transaction_history(contract_name=contract_name, contract_address=contract_address, transactionType='trigger', transactionSubType=transaction_subType, sourceFloAddress=contract_address, destFloAddress=floaddress, transferAmount=transferAmount, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=json.dumps(transaction_data), parsedFloData=json.dumps(parsed_data))
|
add_contract_transaction_history(contract_name=contract_name, contract_address=contract_address, transactionType='trigger', transactionSubType=transaction_subType, sourceFloAddress=contract_address, destFloAddress=floaddress, transferAmount=transferAmount, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=json.dumps(transaction_data), parsedFloData=json.dumps(parsed_data))
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
def process_minimum_subscriptionamount(contractStructure, connection):
|
def process_minimum_subscriptionamount(contractStructure, connection, blockinfo, transaction_data, parsed_data):
|
||||||
minimumsubscriptionamount = float(contractStructure['minimumsubscriptionamount'])
|
minimumsubscriptionamount = float(contractStructure['minimumsubscriptionamount'])
|
||||||
tokenAmount_sum = connection.execute('select IFNULL(sum(tokenAmount), 0) from contractparticipants').fetchall()[0][0]
|
tokenAmount_sum = connection.execute('SELECT IFNULL(sum(tokenAmount), 0) FROM contractparticipants').fetchall()[0][0]
|
||||||
if tokenAmount_sum < minimumsubscriptionamount:
|
if tokenAmount_sum < minimumsubscriptionamount:
|
||||||
# Initialize payback to contract participants
|
# Initialize payback to contract participants
|
||||||
contractParticipants = connection.execute('select participantAddress, tokenAmount, transactionHash from contractparticipants').fetchall()[0][0]
|
contractParticipants = connection.execute('SELECT participantAddress, tokenAmount, transactionHash FROM contractparticipants').fetchall()
|
||||||
|
|
||||||
for participant in contractParticipants:
|
for participant in contractParticipants:
|
||||||
tokenIdentification = contractStructure['tokenIdentification']
|
tokenIdentification = contractStructure['tokenIdentification']
|
||||||
contractAddress = connection.execute('select * from contractstructure where attribute="contractAddress"').fetchall()[0][0]
|
contractAddress = connection.execute('SELECT * FROM contractstructure WHERE attribute="contractAddress"').fetchall()[0][0]
|
||||||
returnval = transferToken(tokenIdentification, participant[1], contractAddress, participant[0], blockinfo = blockinfo)
|
returnval = transferToken(tokenIdentification, participant[1], contractAddress, participant[0], blockinfo = blockinfo)
|
||||||
if returnval is None:
|
if returnval is None:
|
||||||
logger.critical("Something went wrong in the token transfer method while doing local Smart Contract Trigger. THIS IS CRITICAL ERROR")
|
logger.critical("Something went wrong in the token transfer method while doing local Smart Contract Trigger. THIS IS CRITICAL ERROR")
|
||||||
return
|
return
|
||||||
connection.execute('update contractparticipants set winningAmount="{}" where participantAddress="{}" and transactionHash="{}"'.format((participant[1], participant[0], participant[2])))
|
connection.execute('UPDATE contractparticipants SET winningAmount="{}" WHERE participantAddress="{}" AND transactionHash="{}"'.format((participant[1], participant[0], participant[2])))
|
||||||
|
|
||||||
# add transaction to ContractTransactionHistory
|
# add transaction to ContractTransactionHistory
|
||||||
add_contract_transaction_history(contract_name=contractStructure['contractName'], contract_address=contractStructure['contractAddress'], transactionType='trigger', transactionSubType='minimumsubscriptionamount-payback', sourceFloAddress=None, destFloAddress=None, transferAmount=None, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=None, jsonData=None, parsedFloData=None)
|
add_contract_transaction_history(contract_name=contractStructure['contractName'], contract_address=contractStructure['contractAddress'], transactionType=parsed_data['type'], transactionSubType='minimumsubscriptionamount-payback', sourceFloAddress=None, destFloAddress=None, transferAmount=None, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=json.dumps(transaction_data), parsedFloData=json.dumps(parsed_data))
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def process_maximum_subscriptionamount(contractStructure, connection, status):
|
def process_maximum_subscriptionamount(contractStructure, connection, status, blockinfo, transaction_data, parsed_data):
|
||||||
maximumsubscriptionamount = float(contractStructure['maximumsubscriptionamount'])
|
maximumsubscriptionamount = float(contractStructure['maximumsubscriptionamount'])
|
||||||
if tokenAmount_sum >= maximumsubscriptionamount:
|
if tokenAmount_sum >= maximumsubscriptionamount:
|
||||||
# Trigger the contract
|
# Trigger the contract
|
||||||
@ -519,7 +554,7 @@ def process_maximum_subscriptionamount(contractStructure, connection, status):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def check_contract_status(connection, session, contractName, contractAddress):
|
def check_contract_status(contractName, contractAddress):
|
||||||
# Status of the contract is at 2 tables in system.db
|
# Status of the contract is at 2 tables in system.db
|
||||||
# activecontracts and time_actions
|
# activecontracts and time_actions
|
||||||
# select the last entry form the colum
|
# select the last entry form the colum
|
||||||
@ -608,7 +643,7 @@ def checkLocal_expiry_trigger_deposit(blockinfo):
|
|||||||
blockHash = blockinfo['hash']
|
blockHash = blockinfo['hash']
|
||||||
))
|
))
|
||||||
|
|
||||||
add_contract_transaction_history(contract_name=query.contractName, contract_address=query.contractAddress, transactionType='smartContractDepositReturn', transactionSubType=None, sourceFloAddress=query.contractAddress, destFloAddress=depositorAddress, transferAmount=returnAmount, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=deposit_query.transactionHash, jsonData=None, parsedFloData=None)
|
add_contract_transaction_history(contract_name=query.contractName, contract_address=query.contractAddress, transactionType='smartContractDepositReturn', transactionSubType=None, sourceFloAddress=query.contractAddress, destFloAddress=depositorAddress, transferAmount=returnAmount, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=deposit_query.transactionHash, jsonData=json.dumps(transaction_data), parsedFloData=json.dumps(parsed_data))
|
||||||
|
|
||||||
systemdb_session.add(TimeActions(
|
systemdb_session.add(TimeActions(
|
||||||
time = query.time,
|
time = query.time,
|
||||||
@ -631,8 +666,24 @@ def checkLocal_expiry_trigger_deposit(blockinfo):
|
|||||||
contractStructure = extract_contractStructure(query.contractName, query.contractAddress)
|
contractStructure = extract_contractStructure(query.contractName, query.contractAddress)
|
||||||
connection = create_database_connection('smart_contract', {'contract_name':f"{query.contractName}", 'contract_address':f"{query.contractAddress}"})
|
connection = create_database_connection('smart_contract', {'contract_name':f"{query.contractName}", 'contract_address':f"{query.contractAddress}"})
|
||||||
if contractStructure['contractType'] == 'one-time-event':
|
if contractStructure['contractType'] == 'one-time-event':
|
||||||
|
# TODO - FIGURE A BETTER SOLUTION FOR THIS
|
||||||
|
tx_type = 'trigger'
|
||||||
|
data = [blockinfo['hash'], blockinfo['height'] , blockinfo['time'], blockinfo['size'], tx_type]
|
||||||
|
|
||||||
|
response = requests.get(f'https://stdops.ranchimall.net/hash?data={data}')
|
||||||
|
if response.status_code == 200:
|
||||||
|
txid = response.json()
|
||||||
|
elif response.status_code == 404:
|
||||||
|
logger.info('Internal trigger has failed')
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
transaction_data = {}
|
||||||
|
transaction_data['txid'] = txid
|
||||||
|
parsed_data = {}
|
||||||
|
parsed_data['type'] = tx_type
|
||||||
|
|
||||||
if 'exitconditions' in contractStructure: # Committee trigger contract type
|
if 'exitconditions' in contractStructure: # Committee trigger contract type
|
||||||
tokenAmount_sum = connection.execute('select IFNULL(sum(tokenAmount), 0) from contractparticipants').fetchall()[0][0]
|
tokenAmount_sum = connection.execute('SELECT IFNULL(sum(tokenAmount), 0) FROM contractparticipants').fetchall()[0][0]
|
||||||
# maximumsubscription check, if reached then expire the contract
|
# maximumsubscription check, if reached then expire the contract
|
||||||
if 'maximumsubscriptionamount' in contractStructure:
|
if 'maximumsubscriptionamount' in contractStructure:
|
||||||
maximumsubscriptionamount = float(contractStructure['maximumsubscriptionamount'])
|
maximumsubscriptionamount = float(contractStructure['maximumsubscriptionamount'])
|
||||||
@ -647,7 +698,7 @@ def checkLocal_expiry_trigger_deposit(blockinfo):
|
|||||||
|
|
||||||
if blocktime > query_time:
|
if blocktime > query_time:
|
||||||
if 'minimumsubscriptionamount' in contractStructure:
|
if 'minimumsubscriptionamount' in contractStructure:
|
||||||
if process_minimum_subscriptionamount(contractStructure, connection):
|
if process_minimum_subscriptionamount(contractStructure, connection, blockinfo, transaction_data, parsed_data):
|
||||||
'''connection = create_database_connection('system_dbs', {'db_name':'system'})
|
'''connection = create_database_connection('system_dbs', {'db_name':'system'})
|
||||||
connection.execute('INSERT INTO activecontracts VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (None, contractStructure['contractName'], contractStructure['contractAddress'], 'closed', contractStructure['tokenIdentification'], contractStructure['contractType'], query.transactionHash, query.blockNumber, 'query.blockHash', 'query.incorporationDate', blockinfo['time'], blockinfo['time']))
|
connection.execute('INSERT INTO activecontracts VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (None, contractStructure['contractName'], contractStructure['contractAddress'], 'closed', contractStructure['tokenIdentification'], contractStructure['contractType'], query.transactionHash, query.blockNumber, 'query.blockHash', 'query.incorporationDate', blockinfo['time'], blockinfo['time']))
|
||||||
connection.execute('INSERT INTO time_actions VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (None, query.time, query.activity, 'closed', query.contractName, query.contractAddress, query.contractType, query.tokens_db, query.parsed_data, query.transactionHash, blockinfo['height']))
|
connection.execute('INSERT INTO time_actions VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (None, query.time, query.activity, 'closed', query.contractName, query.contractAddress, query.contractType, query.tokens_db, query.parsed_data, query.transactionHash, blockinfo['height']))
|
||||||
@ -665,21 +716,6 @@ def checkLocal_expiry_trigger_deposit(blockinfo):
|
|||||||
close_expire_contract(contractStructure, 'expired', query.transactionHash, query.blockNumber, 'query.blockHash', 'query.incorporationDate', blockinfo['time'], 'query.closeDate', query.time, query.activity, query.contractName, query.contractAddress, query.contractType, query.tokens_db, query.parsed_data, blockinfo['height'])
|
close_expire_contract(contractStructure, 'expired', query.transactionHash, query.blockNumber, 'query.blockHash', 'query.incorporationDate', blockinfo['time'], 'query.closeDate', query.time, query.activity, query.contractName, query.contractAddress, query.contractType, query.tokens_db, query.parsed_data, blockinfo['height'])
|
||||||
|
|
||||||
elif 'payeeAddress' in contractStructure: # Internal trigger contract type
|
elif 'payeeAddress' in contractStructure: # Internal trigger contract type
|
||||||
# TODO - FIGURE A BETTER SOLUTION FOR THIS
|
|
||||||
tx_type = 'internalTrigger'
|
|
||||||
data = [blockinfo['hash'], blockinfo['height'] , blockinfo['time'], blockinfo['size'], tx_type]
|
|
||||||
|
|
||||||
response = requests.get(f'https://stdops.ranchimall.net/hash?data={data}')
|
|
||||||
if response.status_code == 200:
|
|
||||||
txid = response.json()
|
|
||||||
elif response.status_code == 404:
|
|
||||||
logger.info('Internal trigger has failed')
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
transaction_data = {}
|
|
||||||
transaction_data['txid'] = txid
|
|
||||||
parsed_data = {}
|
|
||||||
parsed_data['type'] = tx_type
|
|
||||||
|
|
||||||
tokenAmount_sum = connection.execute('select IFNULL(sum(tokenAmount), 0) from contractparticipants').fetchall()[0][0]
|
tokenAmount_sum = connection.execute('select IFNULL(sum(tokenAmount), 0) from contractparticipants').fetchall()[0][0]
|
||||||
# maximumsubscription check, if reached then trigger the contract
|
# maximumsubscription check, if reached then trigger the contract
|
||||||
@ -701,7 +737,7 @@ def checkLocal_expiry_trigger_deposit(blockinfo):
|
|||||||
|
|
||||||
if blocktime > query_time:
|
if blocktime > query_time:
|
||||||
if 'minimumsubscriptionamount' in contractStructure:
|
if 'minimumsubscriptionamount' in contractStructure:
|
||||||
if process_minimum_subscriptionamount(contractStructure, connection):
|
if process_minimum_subscriptionamount(contractStructure, connection, blockinfo, transaction_data, parsed_data):
|
||||||
'''connection = create_database_connection('system_dbs', {'db_name':'system'})
|
'''connection = create_database_connection('system_dbs', {'db_name':'system'})
|
||||||
connection.execute('INSERT INTO activecontracts VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (None, contractStructure['contractName'], contractStructure['contractAddress'], 'closed', contractStructure['tokenIdentification'], contractStructure['contractType'], query.transactionHash, query.blockNumber, 'query.blockHash', 'query.incorporationDate', blockinfo['time'], blockinfo['time']))
|
connection.execute('INSERT INTO activecontracts VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (None, contractStructure['contractName'], contractStructure['contractAddress'], 'closed', contractStructure['tokenIdentification'], contractStructure['contractType'], query.transactionHash, query.blockNumber, 'query.blockHash', 'query.incorporationDate', blockinfo['time'], blockinfo['time']))
|
||||||
connection.execute('INSERT INTO time_actions VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (None, query.time, query.activity, 'closed', query.contractName, query.contractAddress, query.contractType, query.tokens_db, query.parsed_data, query.transactionHash, blockinfo['height']))
|
connection.execute('INSERT INTO time_actions VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (None, query.time, query.activity, 'closed', query.contractName, query.contractAddress, query.contractType, query.tokens_db, query.parsed_data, query.transactionHash, blockinfo['height']))
|
||||||
@ -917,7 +953,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
# check the status of the contract
|
# check the status of the contract
|
||||||
contractStatus = check_contract_status(connection, contract_session, parsed_data['contractName'], outputlist[0])
|
contractStatus = check_contract_status(parsed_data['contractName'], outputlist[0])
|
||||||
contractList = []
|
contractList = []
|
||||||
|
|
||||||
if contractStatus == 'closed':
|
if contractStatus == 'closed':
|
||||||
@ -1366,11 +1402,11 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
|||||||
|
|
||||||
# Store transfer as part of ContractTransactionHistory
|
# Store transfer as part of ContractTransactionHistory
|
||||||
add_contract_transaction_history(contract_name=parsed_data['contractName'], contract_address=parsed_data['contractAddress'], transactionType='incorporation', transactionSubType=None, sourceFloAddress=inputadd, destFloAddress=outputlist[0], transferAmount=None, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=json.dumps(transaction_data), parsedFloData=json.dumps(parsed_data))
|
add_contract_transaction_history(contract_name=parsed_data['contractName'], contract_address=parsed_data['contractAddress'], transactionType='incorporation', transactionSubType=None, sourceFloAddress=inputadd, destFloAddress=outputlist[0], transferAmount=None, blockNumber=blockinfo['height'], blockHash=blockinfo['hash'], blocktime=blockinfo['time'], transactionHash=transaction_data['txid'], jsonData=json.dumps(transaction_data), parsedFloData=json.dumps(parsed_data))
|
||||||
|
|
||||||
session.commit()
|
session.commit()
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
# add Smart Contract name in token contract association
|
# add Smart Contract name in token contract association
|
||||||
|
blockchainReference = neturl + 'tx/' + transaction_data['txid']
|
||||||
session = create_database_session_orm('token', {'token_name': f"{parsed_data['tokenIdentification']}"}, TokenBase)
|
session = create_database_session_orm('token', {'token_name': f"{parsed_data['tokenIdentification']}"}, TokenBase)
|
||||||
session.add(TokenContractAssociation(tokenIdentification=parsed_data['tokenIdentification'],
|
session.add(TokenContractAssociation(tokenIdentification=parsed_data['tokenIdentification'],
|
||||||
contractName=parsed_data['contractName'],
|
contractName=parsed_data['contractName'],
|
||||||
@ -1472,7 +1508,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
|||||||
transferAmount=None,
|
transferAmount=None,
|
||||||
blockNumber=transaction_data['blockheight'],
|
blockNumber=transaction_data['blockheight'],
|
||||||
blockHash=transaction_data['blockhash'],
|
blockHash=transaction_data['blockhash'],
|
||||||
time=transaction_data['blocktime'],
|
blocktime=transaction_data['blocktime'],
|
||||||
transactionHash=transaction_data['txid'],
|
transactionHash=transaction_data['txid'],
|
||||||
blockchainReference=blockchainReference,
|
blockchainReference=blockchainReference,
|
||||||
jsonData=json.dumps(transaction_data),
|
jsonData=json.dumps(transaction_data),
|
||||||
@ -1560,6 +1596,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
|||||||
|
|
||||||
elif parsed_data['type'] == 'smartContractPays':
|
elif parsed_data['type'] == 'smartContractPays':
|
||||||
logger.info(f"Transaction {transaction_data['txid']} is of the type smartContractPays")
|
logger.info(f"Transaction {transaction_data['txid']} is of the type smartContractPays")
|
||||||
|
committeeAddressList = refresh_committee_list(APP_ADMIN, neturl)
|
||||||
# Check if input address is a committee address
|
# Check if input address is a committee address
|
||||||
if inputlist[0] in committeeAddressList:
|
if inputlist[0] in committeeAddressList:
|
||||||
# check if the contract exists
|
# check if the contract exists
|
||||||
@ -1595,7 +1632,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
# check the status of the contract
|
# check the status of the contract
|
||||||
contractStatus = check_contract_status(connection, session, parsed_data['contractName'], outputlist[0])
|
contractStatus = check_contract_status(parsed_data['contractName'], outputlist[0])
|
||||||
contractList = []
|
contractList = []
|
||||||
|
|
||||||
if contractStatus == 'closed':
|
if contractStatus == 'closed':
|
||||||
@ -1672,7 +1709,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
|||||||
transferAmount=None,
|
transferAmount=None,
|
||||||
blockNumber=transaction_data['blockheight'],
|
blockNumber=transaction_data['blockheight'],
|
||||||
blockHash=transaction_data['blockhash'],
|
blockHash=transaction_data['blockhash'],
|
||||||
time=transaction_data['blocktime'],
|
blocktime=transaction_data['blocktime'],
|
||||||
transactionHash=transaction_data['txid'],
|
transactionHash=transaction_data['txid'],
|
||||||
blockchainReference=blockchainReference,
|
blockchainReference=blockchainReference,
|
||||||
jsonData=json.dumps(transaction_data),
|
jsonData=json.dumps(transaction_data),
|
||||||
@ -1717,7 +1754,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
|||||||
transferAmount=None,
|
transferAmount=None,
|
||||||
blockNumber=transaction_data['blockheight'],
|
blockNumber=transaction_data['blockheight'],
|
||||||
blockHash=transaction_data['blockhash'],
|
blockHash=transaction_data['blockhash'],
|
||||||
time=transaction_data['blocktime'],
|
blocktime=transaction_data['blocktime'],
|
||||||
transactionHash=transaction_data['txid'],
|
transactionHash=transaction_data['txid'],
|
||||||
blockchainReference=blockchainReference,
|
blockchainReference=blockchainReference,
|
||||||
jsonData=json.dumps(transaction_data),
|
jsonData=json.dumps(transaction_data),
|
||||||
@ -1800,7 +1837,7 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
|||||||
transferAmount = parsed_data['depositAmount'],
|
transferAmount = parsed_data['depositAmount'],
|
||||||
blockNumber = transaction_data['blockheight'],
|
blockNumber = transaction_data['blockheight'],
|
||||||
blockHash = transaction_data['blockhash'],
|
blockHash = transaction_data['blockhash'],
|
||||||
time = transaction_data['blocktime'],
|
blocktime = transaction_data['blocktime'],
|
||||||
transactionHash = transaction_data['txid'],
|
transactionHash = transaction_data['txid'],
|
||||||
blockchainReference = blockchainReference,
|
blockchainReference = blockchainReference,
|
||||||
jsonData = json.dumps(transaction_data),
|
jsonData = json.dumps(transaction_data),
|
||||||
@ -1949,7 +1986,6 @@ def scanBlockchain():
|
|||||||
# At this point the script has updated to the latest block
|
# At this point the script has updated to the latest block
|
||||||
# Now we connect to flosight's websocket API to get information about the latest blocks
|
# Now we connect to flosight's websocket API to get information about the latest blocks
|
||||||
|
|
||||||
|
|
||||||
def switchNeturl(currentneturl):
|
def switchNeturl(currentneturl):
|
||||||
neturlindex = serverlist.index(currentneturl)
|
neturlindex = serverlist.index(currentneturl)
|
||||||
if neturlindex+1 >= len(serverlist):
|
if neturlindex+1 >= len(serverlist):
|
||||||
@ -2027,11 +2063,14 @@ if (config['DEFAULT']['NET'] != 'mainnet') and (config['DEFAULT']['NET'] != 'tes
|
|||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# Specify mainnet and testnet server list for API calls and websocket calls
|
# Specify mainnet and testnet server list for API calls and websocket calls
|
||||||
|
# Specify ADMIN ID
|
||||||
serverlist = None
|
serverlist = None
|
||||||
if config['DEFAULT']['NET'] == 'mainnet':
|
if config['DEFAULT']['NET'] == 'mainnet':
|
||||||
serverlist = config['DEFAULT']['MAINNET_FLOSIGHT_SERVER_LIST']
|
serverlist = config['DEFAULT']['MAINNET_FLOSIGHT_SERVER_LIST']
|
||||||
|
APP_ADMIN = 'FNcvkz9PZNZM3HcxM1XTrVL4tgivmCkHp9'
|
||||||
elif config['DEFAULT']['NET'] == 'testnet':
|
elif config['DEFAULT']['NET'] == 'testnet':
|
||||||
serverlist = config['DEFAULT']['TESTNET_FLOSIGHT_SERVER_LIST']
|
serverlist = config['DEFAULT']['TESTNET_FLOSIGHT_SERVER_LIST']
|
||||||
|
APP_ADMIN = 'oWooGLbBELNnwq8Z5YmjoVjw8GhBGH3qSP'
|
||||||
serverlist = serverlist.split(',')
|
serverlist = serverlist.split(',')
|
||||||
neturl = config['DEFAULT']['FLOSIGHT_NETURL']
|
neturl = config['DEFAULT']['FLOSIGHT_NETURL']
|
||||||
tokenapi_sse_url = config['DEFAULT']['TOKENAPI_SSE_URL']
|
tokenapi_sse_url = config['DEFAULT']['TOKENAPI_SSE_URL']
|
||||||
@ -2040,6 +2079,9 @@ IGNORE_BLOCK_LIST = config['DEFAULT']['IGNORE_BLOCK_LIST'].split(',')
|
|||||||
IGNORE_BLOCK_LIST = [int(s) for s in IGNORE_BLOCK_LIST]
|
IGNORE_BLOCK_LIST = [int(s) for s in IGNORE_BLOCK_LIST]
|
||||||
IGNORE_TRANSACTION_LIST = config['DEFAULT']['IGNORE_TRANSACTION_LIST'].split(',')
|
IGNORE_TRANSACTION_LIST = config['DEFAULT']['IGNORE_TRANSACTION_LIST'].split(',')
|
||||||
|
|
||||||
|
# Setup APP ADMIN and Committee address list
|
||||||
|
committeeAddressList = refresh_committee_list(APP_ADMIN, neturl)
|
||||||
|
|
||||||
# Delete database and smartcontract directory if reset is set to 1
|
# Delete database and smartcontract directory if reset is set to 1
|
||||||
if args.reset == 1:
|
if args.reset == 1:
|
||||||
logger.info("Resetting the database. ")
|
logger.info("Resetting the database. ")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user