diff --git a/tl/generate/scheme/lite_api.tl b/tl/generate/scheme/lite_api.tl index ce4d27316..2a46d77a8 100644 --- a/tl/generate/scheme/lite_api.tl +++ b/tl/generate/scheme/lite_api.tl @@ -33,7 +33,7 @@ liteServer.currentTime now:int = liteServer.CurrentTime; liteServer.version mode:# version:int capabilities:long now:int = liteServer.Version; liteServer.blockData id:tonNode.blockIdExt data:bytes = liteServer.BlockData; liteServer.blockState id:tonNode.blockIdExt root_hash:int256 file_hash:int256 data:bytes = liteServer.BlockState; -liteServer.blockHeader id:tonNode.blockIdExt mode:# header_proof:bytes = liteServer.BlockHeader; +liteServer.blockHeader id:tonNode.blockIdExt mode:# header_proof:bytes tx_cnt:mode.30?int = liteServer.BlockHeader; liteServer.sendMsgStatus status:int = liteServer.SendMsgStatus; liteServer.accountState id:tonNode.blockIdExt shardblk:tonNode.blockIdExt shard_proof:bytes proof:bytes state:bytes = liteServer.AccountState; liteServer.runMethodResult mode:# id:tonNode.blockIdExt shardblk:tonNode.blockIdExt shard_proof:mode.0?bytes proof:mode.0?bytes state_proof:mode.1?bytes init_c7:mode.3?bytes lib_extras:mode.4?bytes exit_code:int result:mode.2?bytes = liteServer.RunMethodResult; diff --git a/tl/generate/scheme/lite_api.tlo b/tl/generate/scheme/lite_api.tlo index da64ac53b..d50a62b87 100644 Binary files a/tl/generate/scheme/lite_api.tlo and b/tl/generate/scheme/lite_api.tlo differ diff --git a/validator/impl/liteserver.cpp b/validator/impl/liteserver.cpp index 9c7a04561..45ddc05fd 100644 --- a/validator/impl/liteserver.cpp +++ b/validator/impl/liteserver.cpp @@ -417,9 +417,32 @@ void LiteQuery::continue_getBlockHeader(BlockIdExt blkid, int mode, Ref value, td::ConstBitPtr key, int n) -> bool { + block::gen::CurrencyCollection::Record skip; + block::gen::csr_unpack_skip(value, skip); + block::gen::AccountBlock::Record acc_blk; + CHECK(tlb::csr_unpack(std::move(value), acc_blk)); + vm::AugmentedDictionary trans_dict{vm::DictNonEmpty(), std::move(acc_blk.transactions), 64, + block::tlb::aug_AccountTransactions}; + trans_dict.check_for_each([&](td::Ref value, td::ConstBitPtr key, int n) -> bool { + ++tx_cnt; + return true; + }); + return true; + }); + } // send answer - auto b = ton::create_serialize_tl_object(ton::create_tl_lite_block_id(blkid), - mode, proof_data.move_as_ok()); + auto b = ton::create_serialize_tl_object( + ton::create_tl_lite_block_id(blkid), mode, proof_data.move_as_ok(), tx_cnt); finish_query(std::move(b)); }