Fix for internal triggers not having txid
This commit is contained in:
parent
743df4d18f
commit
22bca78569
@ -63,7 +63,7 @@ def check_database_existence(type, parameters):
|
|||||||
return os.path.isfile(path)
|
return os.path.isfile(path)
|
||||||
|
|
||||||
|
|
||||||
def create_database_connection(type, parameters):
|
def create_database_connection(type, parameters=None):
|
||||||
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")
|
||||||
engine = create_engine(f"sqlite:///{path}", echo=True)
|
engine = create_engine(f"sqlite:///{path}", echo=True)
|
||||||
@ -130,10 +130,10 @@ def processBlock(blockindex=None, blockhash=None):
|
|||||||
|
|
||||||
blockinfo = newMultiRequest(f"block/{blockhash}")
|
blockinfo = newMultiRequest(f"block/{blockhash}")
|
||||||
|
|
||||||
pause_index = 2324050
|
pause_index = [2211699, 2211700, 2211701]
|
||||||
if blockindex == pause_index:
|
if blockindex in pause_index:
|
||||||
print(f'Paused at {blockindex}')
|
print(f'Paused at {blockindex}')
|
||||||
pdb.set_trace()
|
#pdb.set_trace()
|
||||||
# Check smartContracts which will be triggered locally, and not by the contract committee
|
# Check smartContracts which will be triggered locally, and not by the contract committee
|
||||||
#checkLocaltriggerContracts(blockinfo)
|
#checkLocaltriggerContracts(blockinfo)
|
||||||
# Check if any deposits have to be returned
|
# Check if any deposits have to be returned
|
||||||
@ -153,7 +153,7 @@ def processBlock(blockindex=None, blockhash=None):
|
|||||||
current_index = -1
|
current_index = -1
|
||||||
|
|
||||||
if transaction in ['a9dedd024ee40239caf30c782abd4561c291c95fef3229e640ca8ec0dc7081d6', '2bcdd259f642cf5a901a814b5dafddec62dcdd0848732e7384ba087939c915ac', 'e9a305b20eaa3a4e6e778ec51c4137061ed8e630bdec271944760bd0b9fcc6a8', '606fcad4e73311cc441a494c7e35ad5f8c900f9107bcba3da5076ffa8e243913']:
|
if transaction in ['a9dedd024ee40239caf30c782abd4561c291c95fef3229e640ca8ec0dc7081d6', '2bcdd259f642cf5a901a814b5dafddec62dcdd0848732e7384ba087939c915ac', 'e9a305b20eaa3a4e6e778ec51c4137061ed8e630bdec271944760bd0b9fcc6a8', '606fcad4e73311cc441a494c7e35ad5f8c900f9107bcba3da5076ffa8e243913']:
|
||||||
pdb.set_trace()
|
pass
|
||||||
|
|
||||||
# TODO CLEANUP - REMOVE THIS WHILE SECTION, WHY IS IT HERE?
|
# TODO CLEANUP - REMOVE THIS WHILE SECTION, WHY IS IT HERE?
|
||||||
while(current_index == -1):
|
while(current_index == -1):
|
||||||
@ -424,7 +424,11 @@ def trigger_internal_contract(tokenAmount_sum, contractStructure, transaction_da
|
|||||||
transferAmount=transferAmount,
|
transferAmount=transferAmount,
|
||||||
blockNumber=blockinfo['height'],
|
blockNumber=blockinfo['height'],
|
||||||
blockHash=blockinfo['hash'],
|
blockHash=blockinfo['hash'],
|
||||||
time=blockinfo['time']))
|
time=blockinfo['time'],
|
||||||
|
transactionHash=transaction_data['txid'],
|
||||||
|
jsonData=json.dumps(transaction_data),
|
||||||
|
parsedFloData=json.dumps(parsed_data)
|
||||||
|
))
|
||||||
session.commit()
|
session.commit()
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
@ -479,7 +483,8 @@ def check_contract_status(connection, session, 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
|
||||||
contract_status = connection.execute('SELECT status FROM time_actions WHERE id=(SELECT MAX(id) FROM time_actions WHERE contractName="" AND contractAddress="")').fetchall()
|
connection = create_database_connection('system_dbs')
|
||||||
|
contract_status = connection.execute(f'SELECT status FROM time_actions WHERE id=(SELECT MAX(id) FROM time_actions WHERE contractName="{contractName}" AND contractAddress="{contractAddress}")').fetchall()
|
||||||
return contract_status[0][0]
|
return contract_status[0][0]
|
||||||
|
|
||||||
|
|
||||||
@ -634,10 +639,20 @@ def checkLocal_expiry_trigger_deposit(blockinfo):
|
|||||||
|
|
||||||
elif 'payeeAddress' in contractStructure: # Internal trigger contract type
|
elif 'payeeAddress' in contractStructure: # Internal trigger contract type
|
||||||
# TODO - FIGURE A BETTER SOLUTION FOR THIS
|
# 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 = {}
|
||||||
transaction_data['txid'] = 'internalTrigger'
|
transaction_data['txid'] = txid
|
||||||
parsed_data = {}
|
parsed_data = {}
|
||||||
parsed_data['type'] = 'internalTrigger'
|
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
|
||||||
@ -678,7 +693,7 @@ def checkLocal_expiry_trigger_deposit(blockinfo):
|
|||||||
connection.execute('INSERT INTO time_actions VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (None,query.time, query.activity, 'expired', 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, 'expired', query.contractName, query.contractAddress, query.contractType, query.tokens_db, query.parsed_data, query.transactionHash, blockinfo['height']))
|
||||||
connection.close()'''
|
connection.close()'''
|
||||||
|
|
||||||
close_expire_contract(contractStructure, 'expired', query.transactionHash, query.blockNumber, 'query.blockHash', 'query.incorporationDate', blockinfo['time'], blockinfo['time'], query.time, query.activity, query.contractName, query.contractAddress, query.contractType, query.tokens_db, query.parsed_data, blockinfo['height'])
|
close_expire_contract(contractStructure, 'closed', query.transactionHash, query.blockNumber, blockinfo['hash'], 'query.incorporationDate', blockinfo['time'], blockinfo['time'], query.time, query.activity, query.contractName, query.contractAddress, query.contractType, query.tokens_db, query.parsed_data, blockinfo['height'])
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
@ -914,7 +929,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(connection, contract_session, parsed_data['contractName'], outputlist[0])
|
||||||
contractList = []
|
contractList = []
|
||||||
|
|
||||||
if contractStatus == 'closed':
|
if contractStatus == 'closed':
|
||||||
@ -1800,7 +1815,6 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
elif parsed_data['type'] == 'smartContractDeposit':
|
elif parsed_data['type'] == 'smartContractDeposit':
|
||||||
pdb.set_trace()
|
|
||||||
if check_database_existence('smart_contract', {'contract_name':f"{parsed_data['contractName']}", 'contract_address':f"{outputlist[0]}"}):
|
if check_database_existence('smart_contract', {'contract_name':f"{parsed_data['contractName']}", 'contract_address':f"{outputlist[0]}"}):
|
||||||
# Check if the transaction hash already exists in the contract db (Safety check)
|
# Check if the transaction hash already exists in the contract db (Safety check)
|
||||||
connection = create_database_connection('smart_contract', {'contract_name':f"{parsed_data['contractName']}", 'contract_address':f"{outputlist[0]}"})
|
connection = create_database_connection('smart_contract', {'contract_name':f"{parsed_data['contractName']}", 'contract_address':f"{outputlist[0]}"})
|
||||||
@ -1837,7 +1851,6 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
|
|||||||
session = create_database_session_orm('smart_contract', {'contract_name': f"{parsed_data['contractName']}", 'contract_address': f"{outputlist[0]}"}, ContractBase)
|
session = create_database_session_orm('smart_contract', {'contract_name': f"{parsed_data['contractName']}", 'contract_address': f"{outputlist[0]}"}, ContractBase)
|
||||||
blockchainReference = neturl + 'tx/' + transaction_data['txid']
|
blockchainReference = neturl + 'tx/' + transaction_data['txid']
|
||||||
old_depositBalance = session.query(ContractDeposits.depositBalance).order_by(ContractDeposits.id.desc()).first()
|
old_depositBalance = session.query(ContractDeposits.depositBalance).order_by(ContractDeposits.id.desc()).first()
|
||||||
pdb.set_trace()
|
|
||||||
if old_depositBalance is None:
|
if old_depositBalance is None:
|
||||||
old_depositBalance = 0
|
old_depositBalance = 0
|
||||||
else:
|
else:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user