What's Changed
getAllShardsInfo
* add new proof checking in `get_all_shards_info` since the proof system has been changed.
Get Methods
* rename `run_get_method` to `run_get_method_remote`
* `run_get_method` now returns `run_get_method_remote` result, in future may be changed to `run_get_method_local`. Please explicitly specify `run_get_method_remote` in your code if you want to execute methods remotely.
* add `run_get_method_local` which downloads contract's state and executes tvm locally via [pytvm](https://github.com/yungwine/pytvm). Now one can run get methods which require more gas amount, providing `gas_limit` param. Executing get method locally is also critically important if you don't trust LiteServer, since result of a remote method execution is unprovable.
New LiteServer methods
* add `get_out_msg_queue_sizes` method which returns sizes of outboundary queues for specified shard or for all shards.
python
sh = await client.get_out_msg_queue_sizes()
print(len(sh['shards']) - 1, 'shards')
for i in sh['shards']:
print(f"{i['id']['workchain']}:{hex(i['id']['shard']& 0xffffffffffffffff).replace('0x', '')} - {i['size']}")
output:
4 shards
-1:8000000000000000 - 0
0:2000000000000000 - 253
0:6000000000000000 - 153
0:a000000000000000 - 61
0:e000000000000000 - 119
* add _nonfinal_ LiteServer methods `nonfinal_get_validator_groups` and `nonfinal_get_candidate`.
To use these methods one need to use LiteServer which is at the same time a validator and pass flag `--nonfinal-ls` to `ExecStart` node command. Then use `nonfinal_get_validator_groups` method to get `BlockIdExt` and then pass it to other LiteServer _raw_ methods or use `nonfinal_get_candidate` method which returns block data and collated data.
python
resp = await client.nonfinal_get_validator_groups(0, -6917529027641081856)
print(resp)
blk = BlockIdExt.from_dict(resp['groups'][0]['candidates'][0]['id']['block_id'])
print(blk)
print(await client.raw_get_block_transactions_ext(blk))
print(await client.nonfinal_raw_get_candidate(resp['groups'][0]['candidates'][0]['id']))
print(await client.nonfinal_get_candidate(resp['groups'][0]['candidates'][0]['id']))
output:
{'type': 'liteServer.nonfinal.validatorGroups', 'groups': [{'next_block_id': {'workchain': 0, 'shard': -6917529027641081856, 'seqno': 19738991, 'type': 'tonNode.blockId'}, 'cc_seqno': 253643, 'prev': [{'workchain': 0, 'shard': -6917529027641081856, 'seqno': 19738990, 'root_hash': '1424b1412ee3658190ccef95483e6e694093e721bac67fca0e7afb15fde132be', 'file_hash': 'eae1435e89c768892b4ab286e58b9723bedbb6004adcba1192d82d527aca0616'}], 'candidates': [{'id': {'block_id': {'workchain': 0, 'shard': -6917529027641081856, 'seqno': 19738991, 'root_hash': 'ea860f329c4660be305ccf5e0e94630db67f6e4396509d751dace1f11915f09d', 'file_hash': '07bee68a49a69e6145ad9693d827e11800e5c346387009f83e273a8620758eca', 'type': 'tonNode.blockIdExt'}, 'creator': '6c2b768957e1501deaaf424bd2dafb6ddbe2ecc7794659f8d4c548420261a18c', 'collated_data_hash': 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'type': 'liteServer.nonfinal.candidateId'}, 'available': True, 'approved_weight': 14, 'signed_weight': 0, 'total_weight': 15}]}]}
<TL BlockIdExt [wc=0, shard=-6917529027641081856, seqno=19738991, root_hash=ea860f329c4660be305ccf5e0e94630db67f6e4396509d751dace1f11915f09d, file_hash=07bee68a49a69e6145ad9693d827e11800e5c346387009f83e273a8620758eca] >
[< Tl-B Transaction account_addr: b'\x80\xdc"\x8f\xec ....
{'type': 'liteServer.nonfinal.candidate', 'id': {'block_id': {'wor
< Tl-B Block global_id: -3 info: < Tl-B BlockInfo version: ....