Skip to content

Instantly share code, notes, and snippets.

@thephez
Last active February 11, 2021 22:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thephez/40d6d4e18e710f5885d9700a63ad9bb4 to your computer and use it in GitHub Desktop.
Save thephez/40d6d4e18e710f5885d9700a63ad9bb4 to your computer and use it in GitHub Desktop.
Get error info about invalid tenderdash transactions from a local full node
import requests
import json
import pprint
import time
def get_contract_name(contract_id):
if contract_id == '2DAncD4YTjfhSQZYrsQ659xbM7M5dNEkyfBEAg9SsS3W':
return 'Dashpay' # ({})'.format(contract_id)
elif contract_id == '36ez8VqoDbR8NkdXwFaf9Tp8ukBdQxN8eYs8JNMnUyKz':
return 'DPNS' # ({})'.format(contract_id)
else:
return contract_id
def get_tenderdash_transaction(txs):
error_summary = { 'contracts': {}, 'errors': {} }
count = 0
valid_tx_count = 0
unparseable_count = 0
for tx_hash in txs:
time.sleep(1)
query_url = 'http://127.0.0.1:26657/tx?hash=0x{}&prove=false'.format(tx_hash)
#print(query_url)
try:
results = requests.get(query_url)
# Check for invalid response
if results.status_code != requests.codes.ok:
print('{} Error: {}'.format(results.status_code, results.json()['message']))
raise
count += 1
tx_info = results.json()
tx_result = tx_info['result']['tx_result']
#pprint.pprint(tx_result)
#pprint.pprint(tx_result['log'])
# Check if log empty string
if tx_result['log'] == "":
valid_tx_count += 1
print('No "log" object. Valid tx. Skipping ({})\t{} of {}.\n-----'.format(tx_hash, count, len(txs)))
continue
tx_log = json.loads(tx_result['log'])
print('{} ({})\t{} of {}'.format(tx_log['error']['message'], tx_hash, count, len(txs)))
errors = json.loads(tx_result['log'])['error']['data']['errors']
print('\t{} error(s) in tx'.format(len(errors)))
for error in errors:
try:
transition = error['documentTransition']
contract_name = get_contract_name(transition['$dataContractId'])
error_message = error['message']
document_type = transition['$type']
print('\tContract: {}\n\tDocument: {} ({})'.format(contract_name, document_type, transition['$action']))
print('\tIdentity: {}'.format(transition['$id']))
print('\t{}: {}\n\t-----'.format(error['name'], error_message))
if contract_name in error_summary['contracts']:
error_summary['contracts'][contract_name]['total_errors'] += 1
else:
error_summary['contracts'][contract_name] = {}
error_summary['contracts'][contract_name]['total_errors'] = 1
error_summary['contracts'][contract_name]['id'] = transition['$dataContractId']
error_summary['contracts'][contract_name]['documents'] = {}
if document_type in error_summary['contracts'][contract_name]['documents']:
error_summary['contracts'][contract_name]['documents'][document_type]['document_errors'] += 1
else:
error_summary['contracts'][contract_name]['documents'][document_type] = {}
error_summary['contracts'][contract_name]['documents'][document_type]['document_errors'] = 1
if error_message in error_summary['errors']:
error_summary['errors'][error_message]['count'] += 1
else:
error_summary['errors'][error_message] = {}
error_summary['errors'][error_message]['count'] = 1
except Exception as e:
unparseable_count += 1
print('\n\nError processing data: {}\n\nError info:\n\t{}\n\n'.format(e, error))
#print(error_summary)
except Exception as e:
unparseable_count += 1
print('\n\n!!! Error: {}\n\n'.format(e))
pprint.pprint(error_summary)
print('{} txs were unparseable'.format(unparseable_count))
print('{} valid txs skipped'.format(valid_tx_count))
def main():
# Get hashes from docker logs via:
# docker logs dash_masternode_testnet_drive_abci_1 | grep ': Deliver state transition ' | awk '{ print "\t'\''" $11 "'\'',"}' | sort | uniq
tx_hashes = [
'0031c0393079716e0295db0f68ad76164cd285afc32fa13c2d87478165a55318',
'02713ccbe9d3b42bd74e852114e4e895bae9765a55478590d361ea4dfb5711ac',
'036b94ac0abdcb6fac070baf6ded81b1d1d36793f5829df8d21ce0db64806dd9',
'085b62f1f7bf1f615112a22c6bcbb3a7c871bd71d5a06a5ee8aa06ab25da0546',
'09b8e5057f3db5946938477a164203782e9435c7640fb9818c8acca44bca8654',
'0a9a763567472da9d014fbbbc7bae4b3e0d4787c389d4422f2bf06029aeabedd',
'0b421dcbd3476e7f7ff7afe0c4a7ba8d963141170d80e6fd52a9ab83ed373ca8',
'0b6582a803746b1f4d38126c98c8ca31f1e3e4147d22d05f6805c7bd36fafb65',
'0b8944e33267d87aca79ac22030643eb86989a6cb9bf41e38c4307cd15b01ac7',
'0c052ed4342df8689f6fdd9d51616ee05c1445f155d615ffc1630d1915cc01aa',
'0cbe02ccc29d0eab5db8e7d7d17916232d6677fd7b7ce4353572b0f96ce5889d',
'0f8f37ed1723b2b2de3d833708291461b159f3e0377a1559f27784690dcd3d78',
'0feea4a8cb9e7d06d8f169192bebc53a8f2e43613d56d556e6b0066ffbeb849d',
'1017d081b012cbcc9fafbb9641c30b0905235f6b5658ddf38d95bb913e876776',
'11439f4475560bb97b022edb1b0c0c655ee046de0e5ace2180db0e59ef96d411',
'1188b664f5448814851a716b458e794189dc5089b1b836e71ea5890040d18d00',
'1190930a7c471db32d7733a666a81fd8867ffaf275d5399d7c6ad1770091d9ea',
'13c8a41282f3d7fe521f970074184d1ccb2a7bf6191cfbb041e80a7e8f178e34',
'13e7a8b9c89b8e13ad5c2e2a7484869710b6b11468ed2745b76e13bf11296a69',
'18ed3008542aa141e80c1f7af808bad1cfcc1f4a73a6b3ef882b8584b7afe9a1',
'190a39d739909f79e2deff583d4f82dc133e6b9d3bc00a88c5bc3512ce1781f9',
'1c977919f10f814f06410bc1c895fac7dbb73a8a057f450cb30e60b8dc7f870b',
'1d7fa794365ac963e56148311aeb24a67aaa7f9af4a5dfbb59a55b39069236bb',
'1d9a170516b6498d1751b25fda793546511cf4c3fb7bcd8d81ed1a30fad2b6ee',
'1dab61258e20a9c65c8f9477a174b04e18d5446ea50afedaff30205da78b3a30',
'1e5b3edc1cf3ccd45d4496e46354427a8e6d88d76475c50f5d40f4cddff711d0',
'1ecbeae04f8092c52f2dcad846d09b0ab6dc734dd2bd0f113385803278b2a73e',
'1ef245b7efba8b5287c0df96d1939b9f93b008b013398b2aa50da7a69d5b9466',
'1ffcd6eb2fa044a5613534a8448d17bf9b61122c4e559bc97f6173b99ee288ca',
'21cba2326d5c67b142d2416a0c382e662bbac7a1e101084bd7996860b54a8703',
'21fff1acc1615f038472fd3fb5a162ffe02451101904641726e4a1abf0b44710',
'2363ef9ae4a374144c19de614fa205236f81e602b490cbd618866bfe7f091d6f',
'2491c7cc4b85fbe41be6b557b740165c98235298d65d16d343d1837829c9e893',
'27155ce7bd8ee9fd391a480c1f90d7968eacadf8e6b440989cca7ea3578ca6ba',
'2ccfad351273131fb071f8a8d7b0e1704327b05b44c8b459cd2d23c9ac81ed75',
'2d7e12907addee2f5c00678745a152b82aaa9e760e754153180c8238256795d8',
'2dbd607414b0e97ae5b6771fc9976845cc9e1dabeeab000ec01bd88ce2657700',
'2de3c080402737b3f933cea9beb3310287abb6f563397d100d2f0fbfd776b5fc',
'3090218dcdf2553e4206d0cabce279ebe2f9aa41dd98a42c2d68350e617b9cd7',
'31e7b6493aa5e693a6e4dc3e7b441df7e6ca5e215a0fbff35673d3a0c52572c8',
'33db2f990d447530f8c68d29ac02f0302942212cbb5c1580aa629128bca89bf6',
'34bb5bc40a5d7831c6060158fd037b85e4d6ba47843fd1fed362e7f42d33b718',
'35fc36a5f3fceeaec665c3dd18566653bac52caac7273eea126a34d86e53bcac',
'3693abca42326cc8ff292fd465e1fccc7c20215703a5a95fcace54995279cf95',
'3719b665317941218afd95c946c98271fc42cdff3c61bac4da1e5e44694dd986',
'38651072e2bfae5d077d2eaa3ef7f9199e041f03b1f517210a2576f8b1a34ffd',
'3a515bbf50d81d6f3af034b62aab80ac2295a6464fe0dd03f4a028ca246be487',
'3bf48ce2736433b6cf7c25ac23970851e00374951c038506709a75d3a4da207c',
'3cab688179cfb4e8daaf5bb89eeb58e6a009725992293d1ebf2d9b7621f4ba27',
'3e778707f929ea5507895ee5ef470281fbcd9f73efd5c2362e0ba4b70082f00f',
'444a507496b4c9dac8254e76a9b9c31149b8f07bfbed00fcb770e12e45629f32',
'45d350d4edb50eceaf8a7437651fc7ff5351d97b6b7a177a22182911a8852991',
'4642656f4e836f05e8c7eb9fee1e8f457e0718d916cf63b31e83dd2f89cb3615',
'466771e40cc76a340c5c4c94769bd689d70f89f340eaf8c98018b57631e83588',
'46bdf7d66d141518f233f7092b8e07a9aac614778b0eda58f89f07cbaca87766',
'49aa9f2b5f4c6eb1c4dc8cc72252d6894a2e420d13f448075134976307e162d6',
'4aceca80b723b84ccf30e16d7f9358c0067600b74336017cd49f5d669787c2a7',
'4c3c0bf40421ac1772cbd8e49bbc2483ec91f34d5d50902a5d0a966aba9aa7f2',
'4ecff29a0742417e47d8ec5083ecc78812155c8f69af08e68098d679573731ed',
'4f63ee88f6f67872afe82e780cc6759c92f4e45497088d8bb19cda3c7288f511',
'507a68e1d2f60d6d184178b5d6fcebd8b7db2d8b9b8666e25a33be769a82064c',
'543cb8ba142361d271a7342edea25fa6ddd14daed3686107014bd1800137b317',
'54bfc873c5ea7193a1f81e67d3aebe091393165c0efd72a661ff6456b8e9b618',
'54e1aa6c62658556592ef054970879e7ac1c07f19ece9a79b96433c87891cf48',
'54f8a90c2e908eb7a214a72519aed0913421c0e687fd12cb0ed45df88c0144f7',
'58c6349b337466c1e69fb17cad82472cb605b62b62ac83768a96ed030cba4479',
'58da3f47ff0505e57e30befe0c6cfcb0afa016a7d37b3ceb4993abce78642e67',
'59d8e5d71500662e7e6817ce850977cfaa0584622cd131398311faad263f1de7',
'5a30888832e78da4863beaa4376b9e5d082f6958d3cfec71a1a48ed3a7fd495a',
'5c4eee85fe7783545b4b5c071c1ac223b04695e354728ed5258099281bdc05cd',
'5e707945e9edd6be576de56b5aa44a412c4858557a4e9bd8d044ae8e2ee7fe35',
'622ddbd5b7317d65c8bac8c0d6367f39f9f0348b2cfc2dc0aaeded6637d951d3',
'62e1e381e4da991a5a7fba82f2ca5af0b6f892b3bf614fb63a53db19d1997585',
'6307ef6ff9f5e5d507b0bea004580feaf0ec5114820fcd619ca32df20aed189f',
'65667bc31c947d0f3c4f77d9aa9a3e53061297618af52491d90212c34d24941f',
'662a469d53a9768f6085d2714a2349ffce368ee934cab0dbfc89713c6fa44320',
'6988fd49045d6f642d7ff319b26c86d777dd4bbfa4d824cc44a562dab293db80',
'69b0f5d729c39f1027ce9254ab9c1c37b31e11114ca8b35e9827e6427f3b0f6c',
'6a6a8b061a7ad800d0e4e4c05a9b7ada50e9a5dc3bfc0091d11c82756967370d',
'6e7e1b4fbb4fb9f6050c8e17cd8302a60b3f6b2a02d4ec61fb259b067c5283fa',
'6f21957466993a3cbf46e3e6ce7e85f96ca90cc04a335987dea5be99567e5f9f',
'706dec2c5064f89ef85cc1a0467f34708c28410a43f6b2f979da3d888850682d',
'7472754a45ed6bb42c1a45f0934b3f5fbe40a5cb160f236d85cbb04730b5c3e0',
'74b336e66d63804eb0f185868d60bc9f6ff34a81048226e1a99f6f8042de9b17',
'75d831665ff3f01d99e0d14724d4d80d09b6552f7312a822b7ff5246df007596',
'77ba3f45c47169c803d3473ad83ad2e76397f467fd8b3740846aed0d8c6278f9',
'77d3c1eed65e32a324cdee4370169e863bb4f7978690a4b68ae9de639b48d3b4',
'79bbce00acf43d9356f9c4c12de96ac1aad82224685d2ef05fc5de0c6b325dfd',
'7ba0fcb57045eb64e756fd1aad6111135d1e7cd3f4023735d7bd0a1fea4060db',
'7bf612d5c0bc2e46c0510620f1a8aa2a35e39d4da214939aecf82aaa6012263c',
'7e4885a65e15937d6c8a9bd6170e50c34609df97018a1b7037b564d7997f4d5b',
'7fb3d81fa5318f939712096b69aa2f56ff70616f8cb3ae372fda85e295ee9caf',
'81501be6cf8863af7a200ea3f66f8e05583ab9299ce7cbc9abf722538ebbd317',
'815afecb93919a9f0ad822d74cca5f03c923fb3e5637da1a4313fc7c1070988e',
'829b274175a1de132d06d2ff0f8e303c951da03830a258fb017263661144c4d3',
'82c144c8019c7aae92c9b01b15453b846c3af8d918806afd36543aee0a1a570d',
'84d5d5137aaacc247570b6ff6952b516a2da2913e0bfbd554e3abe60978d7bb4',
'855b6caa83020f0156eca610b32c707fc5108e9c375c81655c5fa2d9393384c1',
'8bdc523a837a7209a7a05d9e13aaf20d01a4b3223544db98dd312e20c5a7fa22',
'8c52bc4eaf63a96e16551afc8ed48887b1881290bcff4be28e91702a9e933f56',
'8e1c9bc52040e0496f11ea3125d94bae590505e4e548e26a6a540653c8f36a4b',
'90e33cf3d27ea2feeb8eda20a350f4ccd0590ac730b69cce692ee7d48e216dd8',
'90e7bc11681e3318e8653127d921926454903f8cd390983a17d356f762330aa0',
'91ef418ce8cf05d2c5aa314f00b44e3fe8c58c08fecbfc999ab2e0b653540d89',
'94b9f5121b3ab37a373f00c2e665825364affa9261c6aa7e95da467e44257618',
'95f5d8261f558cdd5eb57ee092d5f089e10a52b0f54b58a699408d855a9dc51c',
'97b86d26c5943b684668222b7e6bbaf72f6e405a4a652c750095d320280761f8',
'9a83a1cab82379931951ba9800c57df0b6bf1d3bfebb0da9b62ac6f352b6867f',
'9f3660155948b1c356c5d01e1b7fbbcde930b042351780b0a27a14fc11bdc4a3',
'9fe2183586dac2039cc8d53177756a8f60a296f22bde411633403361a3b8d260',
'a11f6e5727622f3e6c57a2ac398b4e5c1c5a3707c2d5fc97d541bd08cf240056',
'a616a1314360abbd4ff488d0aa6c8681b487ba31c4fd18dea2f6919953a30dfe',
'a65e143a55d8bb58de81c5f3e70b9f671ee6a339d6cc190f21c12a8540ff9b73',
'a68f6d680714567c485819c34ad9be3c135431838a70014370b396ddc4c6c35e',
'a6f9faf47deb36af7ad5540a9e29f03d98069d85153c5d52c095e029c35c451e',
'a775ff4cb5097ddc4570af343fe808bf01b7c21f0f7c129f3ca582864863ae91',
'a80a70da33a77379d09f01ebf41a5e7bfe9ada12674fb60da44f738e5fdf6bdf',
'a93f0a724250b7cbb470ff3fd3efe98de23f82dcf4fdab7ea1ba77d636d83dbb',
'a94dac7310a29d89ea0fd86a2bfac63dbab9eaf56d9c50c57a60f895b67b9626',
'aa812580473df87f963598605a0c25b0def973ed58d593227bf8cf4e138b1024',
'ac0ef27c93345794c173e0f4df38af0b6bb634590df488752bf936ec735b0f19',
'af49278eb958329b8e5bda765a37174fa111a753b2d010ecb7251c8bfa6dab0f',
'af97b9b6537ff2f7d615ba1e55569b9d61a28ba7cd00deeb3eaea1db27540c16',
'aff89adf7ae8c1ccc480f37b7feedf5118ceb0d7d66bd335d4e7ee1b2001accc',
'b04d89dbe179122b9a1d30ff29072802d244599394ee8df4dc750377d6c6bd76',
'b0aa30bd4c1c8d159d900908ce4f47511b8ab1a3a36ac881ec2725609f83c412',
'b0f4f3eefd2d1b9f2325ed493c957a51922bc5ee7cfdd947b1f243aae174adef',
'b10be0ab9444a794ba5d3113124c8b470294e1de84e51b9b814481fe43e7e355',
'b1224274cd1e20764ea36701edd6aef2468582f1b58c1798e3306652491c097d',
'b6ad553ebf2e9c756d21e53b1eb51d86b0c5176b4c133cf582a452ab996abc40',
'b996d4f84b58e015200dfc69b0cb568523925b52bbc22b0c0298e5a7702d1f9e',
'bca43577bc11382aa2abface80a34d0444ec3224f9d9b635d7dd80c688f89cce',
'bd4801e7dba71d2776e66fb9d3a192f0e4d2e1d7022e691fee90015b8a3d19a6',
'bdc44676f9e5aa7af40eb9c7cb448581248f3d89728622e814d6a4f1c91dcb0b',
'c13ee8af17e8e0336e1bd133f08f34d336b76a10f497eaa752f3c7971bfd1cd7',
'c18db8d346007a3a304ee29ff9db6c2d1e58e1bcba4aeb4203de9e83aebe05d3',
'c3a3b61f6661c06f387d119dc023e905847ced08708fb14bc51890b176e4f82a',
'c3e0c455efbcfd241e70b7119e13e6aecde75ccbb846aa81afba8377da55599f',
'c4dffe5e24dc8e4218307568f5df8a47c9f050c2f570561fcbb0090375be60df',
'c7e1fe683371bb813402c1cf3d6d5c7192f80d137eff98331b708864788be46e',
'c9fb7fec8c49bcd1a8470c5e4c49b42fd7bcb9c92d58c067f0ade9b79cc04350',
'ca5b2e78b9208f8f11679bf88deb00a3f9f177e7e25aeb7ed9a9bf9b50efcef8',
'cb792b9f0a04c99cca6842150db483b286c5d4f7d4af7af737769ab5d307c854',
'cc06accb63d6574d6687d50c28b26b459194bb4ef5449b087662a56084cf1092',
'cc805674bcc49e21001fac7007b78e6a18d24cf891783829a4f16aaefbff3480',
'ceef648992030e9b15ad4b1c6cf5ccf7eb3ae4b00ee533d1eced4b56729ecf15',
'd367c3a9dbfc4b5d9dacb11c48f629a643187de41eb5c4cfbdbdc54292615c7f',
'd69b16adc15e1d6f8d3764f14c032f5778c5e9db0f8103b9065292903ec7850c',
'd844187ddbeac6dc6b7fc04d113bffd83a19595fe3915b3c64b14cc4560e98cb',
'd8c609ab6e4d74a5fd42391b2744e92d9a449fb109fe4f3b69a97d1f011fa1cd',
'da86e7ab66700ba5ac1865aa663c2ddf87c4ca03513db452b84eab8eb38c01c2',
'db9557c48ab7af59d17ae7b6eb53a3b9f89e4db0c8da3d0310d514f846ff6d3d',
'dcf5478bc4696f17e3007c67416837e0c5a3e575b5d9513b9c06d312f01c5375',
'debbb164fd09e2f9c0601bd18277a89e783a19aaaca44e017aaf5581b96918ce',
'df638058a705c735d721d2c7cb3bb99d1856d4a7a60885e20e868149243df275',
'df671d912f0664781ab4ebf22af9962eb3f5a32413f251033a9e7e3ef04f0f7b',
'dff365850c5612c18c6834d06d80680ebb2dda60b0df4abc21ae04610e9f476e',
'e02891477909cad48b5da92fd8694c7ec3362bdd8a7a8611a21b34f7a9c5b89a',
'e0e89aed9cdfd923e4ef84b74f2c33b393fa64b427816f52442a21e9e054ae2a',
'e3ebf1e5a53b3a780b942310689e07ccebf6fa4ac6bb4e33a15138f768fc10c3',
'e4a122d775e35f90fbe0169af99dc3f0e04a75230264a959c40e6e97a6276227',
'e95a2f10113fa05504b56fe52ccf1f00a6c95109f9268afbf44f9ebb7d0e24d6',
'e961a5f6479599ff9f8a73cb096ca9084ee574c29e05f529e792f1800c2f0989',
'e9e8a3b18f64e3860173dcf53e4bb59c268cfd697cbc2b5e95eb20dbb5a0fa4a',
'ea77167095e347416c18f63d84ff3ecc9833aa4bec37ac86a35d9928580a29e7',
'ee7a43fe9fcc5574e69c2ec505942f8ecb798e79656e530ab04dde3c840349cd',
'f03bccd5cade17989e1a8d94d0fdbafa6cadc7372daeb92d2f28054e6834c2c7',
'f4c39e5c3c435ccf7acc9e8cc5f14426494aae82c9d9b09e075de4087ad0521a',
'f65fae71c82627ce6bee960f3910171f52f735cf5acae6ccac75c2473bb2ad8d',
'fa0bbbe0bfe643bc55cd25b300f608fc8a58d72b69e2041abdc50231e82a40b1',
'faeb9ec2baaddf1bcd7a29140b94e49dbac5f833a98c558af7460aac1df64a36',
'feef1e75712eb61ddd5804443c2311c11a4b17d5d3d2d7f82baa9937ed33668d',
'ff3b944d96d76eb40dc02c4a3a14d4d2f68a120abc228671be8966dcd1fed35c',
]
get_tenderdash_transaction(tx_hashes)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment