ton-society / grants-and-bounties

TON Foundation invites talent to imagine and realize projects that have the potential to integrate with the daily lives of users.
https://ton.org/grants
298 stars 133 forks source link

Rust Lite Client Instead of tonlibjson #434

Closed liketurbo closed 7 months ago

liketurbo commented 8 months ago

Summary

Add a native lite client to tonlib-rs

Context

The lite client is a library used for interaction with the lite server. Currently, tonlib-rs utilizes tonlibjson from the main repository, incurring compilation and complexity costs.

References

Estimate suggested reward

TBD

hacker-volodya commented 8 months ago

Recently we've continued tonstack/adnl-rs and tonstack/lite-client libraries development. We plan to rewrite it to async traits and publish stable release soon.

Features list:

adnl-rs

lite-client

liketurbo commented 8 months ago

@hacker-volodya tbh, I don't think it's a good idea to have a separate crate for the lite client. Dapp developers would be forced to use both tonstack/lite-client and ston-fi/tonlib-rs and the latter already comes with the tonlibjson library, which can't be opted out, resulting your binary ending up with two lite server clients.

Besides, there already exists a great adnl client from tonlabs with good support, tonlabs/ever-adnl, upon which a lite client can be built relatively easily and integrated into ston-fi/tonlib-rs.

hacker-volodya commented 8 months ago

I don't think it's a good idea to have a separate crate for the lite client

It would be great for lite-client lib to support both tonlib-rs and everscale libs, allowing people to choose libraries which are most appropriate for their cases. So, separate crate is a good option.

Dapp developers would be forced to use both tonstack/lite-client and ston-fi/tonlib-rs and the latter already comes with the tonlibjson library, which can't be opted out, resulting your binary ending up with two lite server clients.

If I understand correctly, the goal is to replace tonlibjson. To do this, you have to adjust tonlib-rs code anyway. So, what's the difference between integrating code directly in tonlib-rs vs. making dependency on a separate crate?

Besides, there already exists a great adnl client from tonlabs with good support, tonlabs/ever-adnl

I don't think that it has "good support". Using git blame on client.rs, for example, shows that latest manual commits were in 2021. AFAIK, modern networking library is broxus/everscale-network, which doesn't support client-server ADNL.

liketurbo commented 8 months ago

If I understand correctly, the goal is to replace tonlibjson. To do this, you have to adjust tonlib-rs code anyway. So, what's the difference between integrating code directly in tonlib-rs vs. making dependency on a separate crate?

Sorry, I misunderstood you. In that case, either one will do ... although, I personally prefer the option of development within ston-fi/tonlib-rs.

Regardless, we need to open an issue and coordinate with the maintainer before we proceed with what's better 😊