ston-fi / tonlib-rs

Rust SDK for The Open Network
https://github.com/ston-fi/tonlib-rs
MIT License
99 stars 25 forks source link

Shard Overflow #46

Open DimFirsov opened 4 months ago

DimFirsov commented 4 months ago

There is an integer overflow happens with shard

this code

    let client = TonClient::builder().build().await?;
    let (_, info) = client.get_masterchain_info().await?;
    println!("MasterchainInfo: {:?}", &info);
    let block_id = BlockId {
        workchain: info.last.workchain,
        shard: info.last.shard,
        seqno: info.last.seqno,
    };
    let block_id_ext = client.lookup_block(1, &block_id, 0, 0).await?;
    println!("BlockIdExt: {:?}", &block_id_ext);

outputs negative shard equals to std::i64::MIN BlockIdExt: BlockIdExt { workchain: -1, shard: -9223372036854775808, seqno: 36549398, root_hash: "5vLN0mXB4r8n0ZpAjOUp4drqskiMSylfPMPJit03Pvc=", file_hash: "iCqgL7fq8jPxsP8XToP2UYd5AsD8PXRObdMUzeTMbHs=" }

Sild commented 3 months ago

Hi @DimFirsov

As long as masterchain doesn't support sharding, it doesn't make any sense to look into Masterchain.Block.Shard field

As you can see, this method always return Block.Shard std::i64::MIN: https://getblock.io/docs/ton/json-rpc/ton_getmasterchaininfo/

I assume it's some default value hardcoded in ton