tonkeeper / opentonapi

Opentonapi simplifies development of TON-based applications and provides an API centered around high-level concepts like Jettons, NFTs and so on keeping a way to access low-level details.
MIT License
120 stars 23 forks source link

Transactions details are not returned from `liteserver/list_block_transactions` #353

Open vladimir-chernykh opened 2 months ago

vladimir-chernykh commented 2 months ago

Hi!

I'm using TONAPI liteserver method to receive the transactions inside the block. But TONAPI server does not return requested information on transactions. No hash, account_id or lt is returned, even though they should according to the mode I'm passing.

As an example, I try to request transactions with following params:

block_id=(0,8000000000000000,43193281,929ae484e160776f4e76ad0e068d94eab779ea87b9f83c9972601ffbe076c2aa,bf22bc01ecd365f0fe849322e56c055cdbaa6522bd4cec4ac8c4fe31a4570269)
mode=39
count=5

I tried with many different libs, but below is the example curl request to eliminate any possible library issues:

curl -X 'GET' \
  'https://tonapi.io/v2/liteserver/list_block_transactions/%280%2C8000000000000000%2C43193281%2C929ae484e160776f4e76ad0e068d94eab779ea87b9f83c9972601ffbe076c2aa%2Cbf22bc01ecd365f0fe849322e56c055cdbaa6522bd4cec4ac8c4fe31a4570269%29?mode=39&count=5' \
  -H 'accept: application/json'

The answer is

{
  "id": {
    "workchain": 0,
    "shard": "8000000000000000",
    "seqno": 43193281,
    "root_hash": "929ae484e160776f4e76ad0e068d94eab779ea87b9f83c9972601ffbe076c2aa",
    "file_hash": "bf22bc01ecd365f0fe849322e56c055cdbaa6522bd4cec4ac8c4fe31a4570269"
  },
  "req_count": 5,
  "incomplete": true,
  "ids": [
    {
      "mode": 39
    },
    {
      "mode": 39
    },
    {
      "mode": 39
    },
    {
      "mode": 39
    },
    {
      "mode": 39
    }
  ],
  "proof": "b5ee9c7201022b0100060200094603929ae484e160776f4e76ad0e068d94eab779ea87b9f83c9972601ffbe076c2aa002601241011ef55aaffffff11020304052848010129bf2934715efb46d1d4c1c701081e4c0dfab6d5a8fdd0e54661d874155979de0001284801017f8877d71799609cd5bcc1c170a99b99fc1c6b7841d6a3b9e2887f7caed132aa000328480101dd91083e470b31f42d99ae90c0341a374c9b56a4ad9f4fc99ae397921aefc093002523894a33f6fd5bda5ab96c5d18cacfbe93f45fb580750837ab1b98de065d8b073d8e000c891f2a55b64aca0b8f0cbe801a926ef47fe1601905a6d58e9b5220a7f448d6a1705e4006070828480101f3cd7a685736b37b7a702ff8a34eae6ee488c3f36481067cafb7d1064307bb7e001a284801011e2e5b06c6514abce64d35b860e36a09c1b42fc6b15ab15f67e228e7b5265379001b2109a1e97d5c3209220910f4beae190a0b22091085e1d64d0c0d28480101fb684824dc3690afb8c1e62a362759293ab402eb899b9af1eb138b1b694e3b7800172209103d1b73cd0e0f284801015043b7c02193401fe936a3dad69b2cdda103d48ac0124d380c8ce650de017095001b22091024e4391d10112848010148d10c4393d5519caaad5a4b72e407e07f12a6edba6b90d1e6df2232bdef109300162209100d2ff455121328480101dd3b884ec91b9e53646e007ae6fc3a15824bd98e27d2e158e6e483e4d71ce43b001522091005c584c5141528480101805b87606b523f9483debcc6d274f4021a0e640ee1d0919e8d5f3161d1ee12d2000f22070ec59ab11617284801017946d05c1e25ce07515d127374b562003cb22c892326419af7d5d475ed04afb900122209535b532540181922070d584e1d252623a1bdc2cd3c4ce52d3c209b75ff7908bb185c2887d970f483edef2ea0e935ce261c194975114041669e2672969e104dbaffbc845d8c2e1443ecb87a41f6f79750749ae7130e27a000053e3df1e8183292ea241a1b1c220943322483401f20210964c8c88c901d2109f1830638201e0082722cda7f58bde0cc6dcc9c9ac00c944c7a6ad8c4677ecd916fda79d889777d8041cf3b668209e853e79db98db8b0960049aae841c0c919a2b053a377814432005c28480101da239b1e123e65db373e47b0cf5e56ac73d2c05783b741d810984b24a4152f670004284801016a5d723c593f47bd52d5b5851c5f8672e4be7d64e61e48c18d0ef1a710ef36f6000222a1bd79d327bd9dd6f5ced36514562d12880473e61bb6149f89caf34e32e2f22f5e66310845019ce993deceeb7ae769b28a2b1689440239f30ddb0a4fc4e579a719717917afa0000014f8f7c7a076998c42122122229dbd5ecaaa8382899a1acf6e1c28d174b5467ba3ce6afca53661ef2edc421e8d4a53882501af655541c144cd0d67b70e1468ba5aa33dd1e7357e529b30f7976e210f46a5a0000014f8f7c7a06194e20a232428480101b6efcbd76d790ce3ebc45188de4f82913c0b1ca1a1ff15a95f96ee72b3ee99d3000b0082723812ac3a0f157795519cf6178a1e05f2b1e5f56a985aa4aa5df2ca299490b30953731f9d3b4bd81b89f1be79322782a8c33089560372a5da410d20805efeedfe2848010127f36f68d4a5ba500c43e824a5006275093166191acaef04166b9a4c149143700003008272e6c4fd0af66fae14ea35080746ceb5061997e2a788e7a972b4300a929676957f555755d89092552353d2ef518667e85c0e8d239568ee8a148b0472a8a0643c4823a1be33b271dd51c7d6ef43cb69e15bef037543df9ab28e5e69d3e83929052343658ca54afca059d938eea8e3eb77a1e5b4f0adf781baa1efcd59472f34e9f41c948291a1b2d3c000029f1ef8f40c32952bf427282928480101f40d945933cf255c7a9d76f4ded04ce5c1e7ee874756be6754d643f5962417bf00072109b26468c9e82a28480101a4404c977e2746c4fe56d52fd9beded3a3c26962e8be2b15e58f4c779aeb5a7c0004008272a7a50828def754795f152d791653b1ff1a7108506eb0e4c9b9ae04584ffc8f4a595fce62a2476db6076aabe80d721df08aa862a9d6643db9e652b61b5fc4e6ef2848010115b372a130bc864bb3405f34c470a5d318cffd3272b95c60e8164bbe1c7e7cad0004"
}

If I make exactly the same request to public liteservers, e.g., using pytoniq

from pytoniq.liteclient import LiteClient

provider_client = LiteClient.from_mainnet_config()
await provider_client.connect()
await provider_client.reconnect()

data = {
    'id': {
        'workchain': 0,
        'shard': -9223372036854775808,  # equivalent to un-hexed "8000000000000000"
        'seqno': 43193281,
        'root_hash': '929ae484e160776f4e76ad0e068d94eab779ea87b9f83c9972601ffbe076c2aa',
        'file_hash': 'bf22bc01ecd365f0fe849322e56c055cdbaa6522bd4cec4ac8c4fe31a4570269',
    },
    'mode': 39,
    'count': 5,
}
res_public = await provider_client.liteserver_request('listBlockTransactions', data)
print(res_public)

Then I get the following output:

{'@type': 'liteServer.blockTransactions',
 'id': {'workchain': 0,
  'shard': -9223372036854775808,
  'seqno': 43193281,
  'root_hash': '929ae484e160776f4e76ad0e068d94eab779ea87b9f83c9972601ffbe076c2aa',
  'file_hash': 'bf22bc01ecd365f0fe849322e56c055cdbaa6522bd4cec4ac8c4fe31a4570269',
  '@type': 'tonNode.blockIdExt'},
 'req_count': 5,
 'incomplete': True,
 'ids': [{'mode': 39,
   'account': '01059a7899ca5a784136ebfef2117630b8510fb2e1e907dbde5d41d26b9c4c38',
   'lt': 46119083000001,
   'hash': 'da239b1e123e65db373e47b0cf5e56ac73d2c05783b741d810984b24a4152f67'},
  {'mode': 39,
   'account': '01059a7899ca5a784136ebfef2117630b8510fb2e1e907dbde5d41d26b9c4c38',
   'lt': 46119083000007,
   'hash': '6a5d723c593f47bd52d5b5851c5f8672e4be7d64e61e48c18d0ef1a710ef36f6'},
  {'mode': 39,
   'account': '019ce993deceeb7ae769b28a2b1689440239f30ddb0a4fc4e579a719717917af',
   'lt': 46119083000045,
   'hash': 'b6efcbd76d790ce3ebc45188de4f82913c0b1ca1a1ff15a95f96ee72b3ee99d3'},
  {'mode': 39,
   'account': '01af655541c144cd0d67b70e1468ba5aa33dd1e7357e529b30f7976e210f46a5',
   'lt': 46119083000003,
   'hash': '27f36f68d4a5ba500c43e824a5006275093166191acaef04166b9a4c14914370'},
  {'mode': 39,
   'account': '02cec9c775471f5bbd0f2da7856fbc0dd50f7e6aca3979a74fa0e4a4148d0d96',
   'lt': 46119083000001,
   'hash': '15b372a130bc864bb3405f34c470a5d318cffd3272b95c60e8164bbe1c7e7cad'}],
 'proof': b'\xb5\xee\x9cr\x01\x02+\x01\x00\x06\x02\x00\tF\x03\x92\x9a\xe4\x84\xe1`woNv\xad\x0e\x06\x8d\x94\xea\xb7y\xea\x87\xb9\xf8<\x99r`\x1f\xfb\xe0v\xc2\xaa\x00&\x01$\x10\x11\xefU\xaa\xff\xff\xff\x11\x02\x03\x04\x05(H\x01\x01)\xbf)4q^\xfbF\xd1\xd4\xc1\xc7\x01\x08\x1eL\r\xfa\xb6\xd5\xa8\xfd\xd0\xe5Fa\xd8t\x15Yy\xde\x00\x01(H\x01\x01\x7f\x88w\xd7\x17\x99`\x9c\xd5\xbc\xc1\xc1p\xa9\x9b\x99\xfc\x1ckxA\xd6\xa3\xb9\xe2\x88\x7f|\xae\xd12\xaa\x00\x03(H\x01\x01\xdd\x91\x08>G\x0b1\xf4-\x99\xae\x90\xc04\x1a7L\x9bV\xa4\xad\x9fO\xc9\x9a\xe3\x97\x92\x1a\xef\xc0\x93\x00%#\x89J3\xf6\xfd[\xdaZ\xb9l]\x18\xca\xcf\xbe\x93\xf4_\xb5\x80u\x087\xab\x1b\x98\xde\x06]\x8b\x07=\x8e\x00\x0c\x89\x1f*U\xb6J\xca\x0b\x8f\x0c\xbe\x80\x1a\x92n\xf4\x7f\xe1`\x19\x05\xa6\xd5\x8e\x9bR \xa7\xf4H\xd6\xa1p^@\x06\x07\x08(H\x01\x01\xf3\xcdzhW6\xb3{zp/\xf8\xa3N\xaen\xe4\x88\xc3\xf3d\x81\x06|\xaf\xb7\xd1\x06C\x07\xbb~\x00\x1a(H\x01\x01\x1e.[\x06\xc6QJ\xbc\xe6M5\xb8`\xe3j\t\xc1\xb4/\xc6\xb1Z\xb1_g\xe2(\xe7\xb5&Sy\x00\x1b!\t\xa1\xe9}\\2\t"\t\x10\xf4\xbe\xae\x19\n\x0b"\t\x10\x85\xe1\xd6M\x0c\r(H\x01\x01\xfbhH$\xdc6\x90\xaf\xb8\xc1\xe6*6\'Y):\xb4\x02\xeb\x89\x9b\x9a\xf1\xeb\x13\x8b\x1biN;x\x00\x17"\t\x10=\x1bs\xcd\x0e\x0f(H\x01\x01PC\xb7\xc0!\x93@\x1f\xe96\xa3\xda\xd6\x9b,\xdd\xa1\x03\xd4\x8a\xc0\x12M8\x0c\x8c\xe6P\xde\x01p\x95\x00\x1b"\t\x10$\xe49\x1d\x10\x11(H\x01\x01H\xd1\x0cC\x93\xd5Q\x9c\xaa\xadZKr\xe4\x07\xe0\x7f\x12\xa6\xed\xbak\x90\xd1\xe6\xdf"2\xbd\xef\x10\x93\x00\x16"\t\x10\r/\xf4U\x12\x13(H\x01\x01\xdd;\x88N\xc9\x1b\x9eSdn\x00z\xe6\xfc:\x15\x82K\xd9\x8e\'\xd2\xe1X\xe6\xe4\x83\xe4\xd7\x1c\xe4;\x00\x15"\t\x10\x05\xc5\x84\xc5\x14\x15(H\x01\x01\x80[\x87`kR?\x94\x83\xde\xbc\xc6\xd2t\xf4\x02\x1a\x0ed\x0e\xe1\xd0\x91\x9e\x8d_1a\xd1\xee\x12\xd2\x00\x0f"\x07\x0e\xc5\x9a\xb1\x16\x17(H\x01\x01yF\xd0\\\x1e%\xce\x07Q]\x12st\xb5b\x00<\xb2,\x89#&A\x9a\xf7\xd5\xd4u\xed\x04\xaf\xb9\x00\x12"\tS[S%@\x18\x19"\x07\rXN\x1d%&#\xa1\xbd\xc2\xcd<L\xe5-< \x9bu\xffy\x08\xbb\x18\\(\x87\xd9p\xf4\x83\xed\xef.\xa0\xe95\xce&\x1c\x19Iu\x11@Af\x9e&r\x96\x9e\x10M\xba\xff\xbc\x84]\x8c.\x14C\xec\xb8zA\xf6\xf7\x97Pt\x9a\xe7\x13\x0e\'\xa0\x00\x05>=\xf1\xe8\x182\x92\xea$\x1a\x1b\x1c"\tC2$\x83@\x1f !\td\xc8\xc8\x8c\x90\x1d!\t\xf1\x83\x068 \x1e\x00\x82r,\xda\x7fX\xbd\xe0\xccm\xcc\x9c\x9a\xc0\x0c\x94Lzj\xd8\xc4g~\xcd\x91o\xday\xd8\x89w}\x80A\xcf;f\x82\t\xe8S\xe7\x9d\xb9\x8d\xb8\xb0\x96\x00I\xaa\xe8A\xc0\xc9\x19\xa2\xb0S\xa3w\x81D2\x00\\(H\x01\x01\xda#\x9b\x1e\x12>e\xdb7>G\xb0\xcf^V\xacs\xd2\xc0W\x83\xb7A\xd8\x10\x98K$\xa4\x15/g\x00\x04(H\x01\x01j]r<Y?G\xbdR\xd5\xb5\x85\x1c_\x86r\xe4\xbe}d\xe6\x1eH\xc1\x8d\x0e\xf1\xa7\x10\xef6\xf6\x00\x02"\xa1\xbdy\xd3\'\xbd\x9d\xd6\xf5\xce\xd3e\x14V-\x12\x88\x04s\xe6\x1b\xb6\x14\x9f\x89\xca\xf3N2\xe2\xf2/^f1\x08E\x01\x9c\xe9\x93\xde\xce\xebz\xe7i\xb2\x8a+\x16\x89D\x029\xf3\r\xdb\nO\xc4\xe5y\xa7\x19qy\x17\xaf\xa0\x00\x00\x14\xf8\xf7\xc7\xa0v\x99\x8cB\x12!""\x9d\xbd^\xca\xaa\x83\x82\x89\x9a\x1a\xcfn\x1c(\xd1t\xb5F{\xa3\xcej\xfc\xa56a\xef.\xdcB\x1e\x8dJS\x88%\x01\xafeUA\xc1D\xcd\rg\xb7\x0e\x14h\xbaZ\xa3=\xd1\xe75~R\x9b0\xf7\x97n!\x0fF\xa5\xa0\x00\x00\x14\xf8\xf7\xc7\xa0a\x94\xe2\n#$(H\x01\x01\xb6\xef\xcb\xd7my\x0c\xe3\xeb\xc4Q\x88\xdeO\x82\x91<\x0b\x1c\xa1\xa1\xff\x15\xa9_\x96\xeer\xb3\xee\x99\xd3\x00\x0b\x00\x82r8\x12\xac:\x0f\x15w\x95Q\x9c\xf6\x17\x8a\x1e\x05\xf2\xb1\xe5\xf5j\x98Z\xa4\xaa]\xf2\xca)\x94\x90\xb3\tSs\x1f\x9d;K\xd8\x1b\x89\xf1\xbey2\'\x82\xa8\xc30\x89V\x03r\xa5\xdaA\r \x80^\xfe\xed\xfe(H\x01\x01\'\xf3oh\xd4\xa5\xbaP\x0cC\xe8$\xa5\x00bu\t1f\x19\x1a\xca\xef\x04\x16k\x9aL\x14\x91Cp\x00\x03\x00\x82r\xe6\xc4\xfd\n\xf6o\xae\x14\xea5\x08\x07F\xce\xb5\x06\x19\x97\xe2\xa7\x88\xe7\xa9r\xb40\n\x92\x96v\x95\x7fUWU\xd8\x90\x92U#S\xd2\xefQ\x86g\xe8\\\x0e\x8d#\x95h\xee\x8a\x14\x8b\x04r\xa8\xa0d<H#\xa1\xbe3\xb2q\xddQ\xc7\xd6\xefC\xcbi\xe1[\xef\x03uC\xdf\x9a\xb2\x8e^i\xd3\xe89)\x05#Ce\x8c\xa5J\xfc\xa0Y\xd98\xee\xa8\xe3\xebw\xa1\xe5\xb4\xf0\xad\xf7\x81\xba\xa1\xef\xcdYG/4\xe9\xf4\x1c\x94\x82\x91\xa1\xb2\xd3\xc0\x00\x02\x9f\x1e\xf8\xf4\x0c2\x95+\xf4\'()(H\x01\x01\xf4\r\x94Y3\xcf%\\z\x9dv\xf4\xde\xd0L\xe5\xc1\xe7\xee\x87GV\xbegT\xd6C\xf5\x96$\x17\xbf\x00\x07!\t\xb2dh\xc9\xe8*(H\x01\x01\xa4@L\x97~\'F\xc4\xfeV\xd5/\xd9\xbe\xde\xd3\xa3\xc2ib\xe8\xbe+\x15\xe5\x8fLw\x9a\xebZ|\x00\x04\x00\x82r\xa7\xa5\x08(\xde\xf7Ty_\x15-y\x16S\xb1\xff\x1aq\x08Pn\xb0\xe4\xc9\xb9\xae\x04XO\xfc\x8fJY_\xceb\xa2Gm\xb6\x07j\xab\xe8\rr\x1d\xf0\x8a\xa8b\xa9\xd6d=\xb9\xe6R\xb6\x1b_\xc4\xe6\xef(H\x01\x01\x15\xb3r\xa10\xbc\x86K\xb3@_4\xc4p\xa5\xd3\x18\xcf\xfd2r\xb9\\`\xe8\x16K\xbe\x1c~|\xad\x00\x04'}

As one can see, tx hashes, accounts and lts are present. Moreover, the proofs are exactly the same between public liteservers and TONAPI. Which means that internally the data are correct on the TONAPI side.

But for some reason TONAPI call does not return necessary tx details.

I would be very grateful if someone (@zakhar-petukhov @mr-tron @aleksej-paschenko ) can help/share the experience on this issue as this is pretty critical for my use-case.