From 993bf6e1b80bb3d99feb910ad4cb1d929ea7dae4 Mon Sep 17 00:00:00 2001 From: Vivek Teega Date: Sun, 7 May 2023 22:12:48 +0000 Subject: [PATCH] Storing unix expiryTime as part of contract structure --- parsing.py | 23 +++++++++++++---------- tracktokens_smartcontracts.py | 6 +++++- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/parsing.py b/parsing.py index be4cc94..647ead5 100644 --- a/parsing.py +++ b/parsing.py @@ -137,7 +137,7 @@ def apply_rule1(*argv): return a -def extract_substing_between(test_str, sub1, sub2): +def extract_substring_between(test_str, sub1, sub2): # getting index of substrings idx1 = test_str.index(sub1) idx2 = test_str.index(sub2) @@ -152,7 +152,7 @@ def extract_substing_between(test_str, sub1, sub2): # StateF functions def isStateF(text): 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(":")) statef_list = [":".join(x) for x in zip(i,i)] statef = {} @@ -221,9 +221,10 @@ def outputreturn(*argv): 'minimumsubscriptionamount' : argv[6], 'maximumsubscriptionamount' : argv[7], '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) elif argv[0] == 'one-time-event-userchoice-smartcontract-participation': @@ -261,9 +262,10 @@ def outputreturn(*argv): 'minimumsubscriptionamount' : argv[6], 'maximumsubscriptionamount' : argv[7], '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) 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): try: - rulestext = extract_substing_between(text, 'contract-conditions', 'end-contract-conditions') + rulestext = extract_substring_between(text, 'contract-conditions', 'end-contract-conditions') except: return False 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 ') return False extractedRules['expiryTime'] = expirytime + extractedRules['unix_expiryTime'] = expirytime_object.timestamp() except: logger.info('Error parsing expiry time') return False @@ -1094,7 +1097,7 @@ def parse_flodata(text, blockinfo, net): return outputreturn('noise') 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(): contract_conditions['payeeAddress'] = find_word_index_fromstring(clean_text,contract_conditions['payeeAddress']) # check if colon exists in the payeeAddress string @@ -1123,13 +1126,13 @@ def parse_flodata(text, blockinfo, net): return outputreturn('noise') else: 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: if not check_flo_address(contract_conditions['payeeAddress'], is_testnet): return outputreturn('noise') else: 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': # either participation of one-time-event contract or diff --git a/tracktokens_smartcontracts.py b/tracktokens_smartcontracts.py index 047dfc8..76769f5 100755 --- a/tracktokens_smartcontracts.py +++ b/tracktokens_smartcontracts.py @@ -394,8 +394,10 @@ def processBlock(blockindex=None, blockhash=None): 'c58bebd583a5b24a9d342712efb9e4b2eac33fe36d8ebe9119126c02f766986c', 'ec6604d147d99ec41f05dec82f9c241815358015904fad37ace061d7580b178e', '39ef49e0e06438bda462c794955735e7ea3ae81cb576ec5c97b528c8a257614c', - 'd36b744d6b9d8a694a93476dbd1134dbdc8223cf3d1a604447acb09221aa3b49']: + 'd36b744d6b9d8a694a93476dbd1134dbdc8223cf3d1a604447acb09221aa3b49', + '64abe801d12224d10422de88070a76ad8c6d17b533ba5288fb0961b4cbf6adf4']: print(f'Paused at transaction {transaction}') + pdb.set_trace() # TODO CLEANUP - REMOVE THIS WHILE SECTION, WHY IS IT HERE? 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='flodata', index=0, value=parsed_data['flodata'])) 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(): session.add(ContractStructure(attribute='contractAmount', index=0, value=parsed_data['contractConditions']['contractAmount']))