Storing unix expiryTime as part of contract structure

This commit is contained in:
Vivek Teega 2023-05-07 22:12:48 +00:00
parent fa9798d1f0
commit 993bf6e1b8
2 changed files with 18 additions and 11 deletions

View File

@ -137,7 +137,7 @@ def apply_rule1(*argv):
return a return a
def extract_substing_between(test_str, sub1, sub2): def extract_substring_between(test_str, sub1, sub2):
# getting index of substrings # getting index of substrings
idx1 = test_str.index(sub1) idx1 = test_str.index(sub1)
idx2 = test_str.index(sub2) idx2 = test_str.index(sub2)
@ -152,7 +152,7 @@ def extract_substing_between(test_str, sub1, sub2):
# StateF functions # StateF functions
def isStateF(text): def isStateF(text):
try: try:
statef_string = extract_substing_between(text, 'statef', 'end-statef').strip() statef_string = extract_substring_between(text, 'statef', 'end-statef').strip()
i=iter(statef_string.split(":")) i=iter(statef_string.split(":"))
statef_list = [":".join(x) for x in zip(i,i)] statef_list = [":".join(x) for x in zip(i,i)]
statef = {} statef = {}
@ -221,9 +221,10 @@ def outputreturn(*argv):
'minimumsubscriptionamount' : argv[6], 'minimumsubscriptionamount' : argv[6],
'maximumsubscriptionamount' : argv[7], 'maximumsubscriptionamount' : argv[7],
'userchoices' : argv[8], 'userchoices' : argv[8],
'expiryTime' : argv[9] 'expiryTime' : argv[9],
'unix_expiryTime': argv[10]
}, },
'stateF': argv[10] 'stateF': argv[11]
} }
return remove_empty_from_dict(parsed_data) return remove_empty_from_dict(parsed_data)
elif argv[0] == 'one-time-event-userchoice-smartcontract-participation': elif argv[0] == 'one-time-event-userchoice-smartcontract-participation':
@ -261,9 +262,10 @@ def outputreturn(*argv):
'minimumsubscriptionamount' : argv[6], 'minimumsubscriptionamount' : argv[6],
'maximumsubscriptionamount' : argv[7], 'maximumsubscriptionamount' : argv[7],
'payeeAddress' : argv[8], 'payeeAddress' : argv[8],
'expiryTime' : argv[9] 'expiryTime' : argv[9],
'unix_expiryTime' : argv[10]
}, },
'stateF': argv[10] 'stateF': argv[11]
} }
return remove_empty_from_dict(parsed_data) return remove_empty_from_dict(parsed_data)
elif argv[0] == 'continuos-event-token-swap-incorporation': elif argv[0] == 'continuos-event-token-swap-incorporation':
@ -350,7 +352,7 @@ def extract_specialcharacter_words(rawstring, special_characters):
def extract_contract_conditions(text, contract_type, marker=None, blocktime=None): def extract_contract_conditions(text, contract_type, marker=None, blocktime=None):
try: try:
rulestext = extract_substing_between(text, 'contract-conditions', 'end-contract-conditions') rulestext = extract_substring_between(text, 'contract-conditions', 'end-contract-conditions')
except: except:
return False return False
if rulestext.strip()[0] == ':': if rulestext.strip()[0] == ':':
@ -391,6 +393,7 @@ def extract_contract_conditions(text, contract_type, marker=None, blocktime=None
logger.info('Expirytime of the contract is earlier than the block it is incorporated in. This incorporation will be rejected ') logger.info('Expirytime of the contract is earlier than the block it is incorporated in. This incorporation will be rejected ')
return False return False
extractedRules['expiryTime'] = expirytime extractedRules['expiryTime'] = expirytime
extractedRules['unix_expiryTime'] = expirytime_object.timestamp()
except: except:
logger.info('Error parsing expiry time') logger.info('Error parsing expiry time')
return False return False
@ -1094,7 +1097,7 @@ def parse_flodata(text, blockinfo, net):
return outputreturn('noise') return outputreturn('noise')
if 'userchoices' in contract_conditions.keys(): if 'userchoices' in contract_conditions.keys():
return outputreturn('one-time-event-userchoice-smartcontract-incorporation',f"{contract_token}", f"{contract_name}", f"{contract_address}", f"{clean_text}", f"{contractAmount}", f"{minimum_subscription_amount}" , f"{maximum_subscription_amount}", f"{contract_conditions['userchoices']}", f"{contract_conditions['expiryTime']}", stateF_mapping) return outputreturn('one-time-event-userchoice-smartcontract-incorporation',f"{contract_token}", f"{contract_name}", f"{contract_address}", f"{clean_text}", f"{contractAmount}", f"{minimum_subscription_amount}" , f"{maximum_subscription_amount}", f"{contract_conditions['userchoices']}", f"{contract_conditions['expiryTime']}", f"{contract_conditions['unix_expiryTime']}", stateF_mapping)
elif 'payeeAddress' in contract_conditions.keys(): elif 'payeeAddress' in contract_conditions.keys():
contract_conditions['payeeAddress'] = find_word_index_fromstring(clean_text,contract_conditions['payeeAddress']) contract_conditions['payeeAddress'] = find_word_index_fromstring(clean_text,contract_conditions['payeeAddress'])
# check if colon exists in the payeeAddress string # check if colon exists in the payeeAddress string
@ -1123,13 +1126,13 @@ def parse_flodata(text, blockinfo, net):
return outputreturn('noise') return outputreturn('noise')
else: else:
contract_conditions['payeeAddress'] = payeeAddress_split_dictionary contract_conditions['payeeAddress'] = payeeAddress_split_dictionary
return outputreturn('one-time-event-time-smartcontract-incorporation',f"{contract_token}", f"{contract_name}", f"{contract_address}", f"{clean_text}", f"{contractAmount}", f"{minimum_subscription_amount}" , f"{maximum_subscription_amount}", contract_conditions['payeeAddress'], f"{contract_conditions['expiryTime']}", stateF_mapping) return outputreturn('one-time-event-time-smartcontract-incorporation',f"{contract_token}", f"{contract_name}", f"{contract_address}", f"{clean_text}", f"{contractAmount}", f"{minimum_subscription_amount}" , f"{maximum_subscription_amount}", contract_conditions['payeeAddress'], f"{contract_conditions['expiryTime']}", contract_conditions['unix_expiryTime'], stateF_mapping)
else: else:
if not check_flo_address(contract_conditions['payeeAddress'], is_testnet): if not check_flo_address(contract_conditions['payeeAddress'], is_testnet):
return outputreturn('noise') return outputreturn('noise')
else: else:
contract_conditions['payeeAddress'] = {f"{contract_conditions['payeeAddress']}":100} contract_conditions['payeeAddress'] = {f"{contract_conditions['payeeAddress']}":100}
return outputreturn('one-time-event-time-smartcontract-incorporation',f"{contract_token}", f"{contract_name}", f"{contract_address}", f"{clean_text}", f"{contractAmount}", f"{minimum_subscription_amount}" , f"{maximum_subscription_amount}", contract_conditions['payeeAddress'], f"{contract_conditions['expiryTime']}", stateF_mapping) return outputreturn('one-time-event-time-smartcontract-incorporation',f"{contract_token}", f"{contract_name}", f"{contract_address}", f"{clean_text}", f"{contractAmount}", f"{minimum_subscription_amount}" , f"{maximum_subscription_amount}", contract_conditions['payeeAddress'], f"{contract_conditions['expiryTime']}", contract_conditions['unix_expiryTime'], stateF_mapping)
if first_classification['categorization'] == 'smart-contract-participation-deposit-C': if first_classification['categorization'] == 'smart-contract-participation-deposit-C':
# either participation of one-time-event contract or # either participation of one-time-event contract or

View File

@ -394,8 +394,10 @@ def processBlock(blockindex=None, blockhash=None):
'c58bebd583a5b24a9d342712efb9e4b2eac33fe36d8ebe9119126c02f766986c', 'c58bebd583a5b24a9d342712efb9e4b2eac33fe36d8ebe9119126c02f766986c',
'ec6604d147d99ec41f05dec82f9c241815358015904fad37ace061d7580b178e', 'ec6604d147d99ec41f05dec82f9c241815358015904fad37ace061d7580b178e',
'39ef49e0e06438bda462c794955735e7ea3ae81cb576ec5c97b528c8a257614c', '39ef49e0e06438bda462c794955735e7ea3ae81cb576ec5c97b528c8a257614c',
'd36b744d6b9d8a694a93476dbd1134dbdc8223cf3d1a604447acb09221aa3b49']: 'd36b744d6b9d8a694a93476dbd1134dbdc8223cf3d1a604447acb09221aa3b49',
'64abe801d12224d10422de88070a76ad8c6d17b533ba5288fb0961b4cbf6adf4']:
print(f'Paused at transaction {transaction}') print(f'Paused at transaction {transaction}')
pdb.set_trace()
# 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):
@ -1555,6 +1557,8 @@ def processTransaction(transaction_data, parsed_data, blockinfo):
session.add(ContractStructure(attribute='contractAddress', index=0, value=parsed_data['contractAddress'])) session.add(ContractStructure(attribute='contractAddress', index=0, value=parsed_data['contractAddress']))
session.add(ContractStructure(attribute='flodata', index=0, value=parsed_data['flodata'])) session.add(ContractStructure(attribute='flodata', index=0, value=parsed_data['flodata']))
session.add(ContractStructure(attribute='expiryTime', index=0, value=parsed_data['contractConditions']['expiryTime'])) session.add(ContractStructure(attribute='expiryTime', index=0, value=parsed_data['contractConditions']['expiryTime']))
pdb.set_trace()
session.add(ContractStructure(attribute='unix_expiryTime', index=0, value=parsed_data['contractConditions']['unix_expiryTime']))
if 'contractAmount' in parsed_data['contractConditions'].keys(): if 'contractAmount' in parsed_data['contractConditions'].keys():
session.add(ContractStructure(attribute='contractAmount', index=0, value=parsed_data['contractConditions']['contractAmount'])) session.add(ContractStructure(attribute='contractAmount', index=0, value=parsed_data['contractConditions']['contractAmount']))