Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rust SDK for TON #182

Closed
Apapirovskiy opened this issue Mar 22, 2023 · 13 comments
Closed

Rust SDK for TON #182

Apapirovskiy opened this issue Mar 22, 2023 · 13 comments
Assignees
Labels
Approved This proposal is approved by the committee footstep This is a TON Footstep issue

Comments

@Apapirovskiy
Copy link

Apapirovskiy commented Mar 22, 2023

Summary

A variety of blockchain interaction tools based on different programming languages will make it easier for new developers to onboard into the TON ecosystem and provide the freedom to choose a comfortable technology stack for building new products on TON network. 
To increase the number of fundamental tools for interacting with the TON network, it is proposed to create a Rust SDK for TON.

Context

Libraries allowing to work with TON blockchain using different programming languages are popular. For developers who prefer to work with Typescript, there is a solution - TON Typescript Library (https://github.com/ton-core/ton). The Rust SDK for TON will also extend the capabilities of the developing process. The main feature of the proposed solution is the use of the programming language Rust and the use of tonlibjson as a data provider. The Rust SDK has the following features:

  • Connection pooling & retries support for better server-level interaction;
  • Using tonlibjson as data provider;
  • Support jetton functions;
  • Support dictionaries;
  • Support work with addresses;
  • Support decode/encode BOC;
  • Support parsing and generation of Cells methods for more convenient interaction with data structures;
  • Support of TON Mnemonics;
  • Support of Wallet versions (3, 3 revision 2, 4 revision 2);
  • Derive wallet address;
  • NaCL-compatible Ed25519 signing of transactions;
  • Support internal and external jetton meta data loading.

Goals

  • Develop the Rust SDK for TON with additional features.

Deliverables

  • Github repo with code of the TON Rust SDK.

Definition of Done

GitHub repository with the source code.

Reward

  • Standard NFT footstep
  • 5,000 USD in TON equivalent

Total: $5000

@Apapirovskiy Apapirovskiy added the footstep This is a TON Footstep issue label Mar 22, 2023
@ProgramCrafter
Copy link
Contributor

  1. The reward seems a bit too big;
  2. Maybe, a standalone library should be written, instead of just wrapping the same binaries over and over? I think Everscale's code could be taken for reference.

@Apapirovskiy Apapirovskiy changed the title Tonlib rust wrapper Rust SDK for TON Mar 28, 2023
@Apapirovskiy
Copy link
Author

  1. The reward seems a bit too big;
  2. Maybe, a standalone library should be written, instead of just wrapping the same binaries over and over? I think Everscale's code could be taken for reference.

Added more details to the description, so I updated the title too. Please take a look

@delovoyhomie delovoyhomie added the Approved This proposal is approved by the committee label Mar 29, 2023
@liketurbo
Copy link
Contributor

liketurbo commented Mar 31, 2023

Is anyone currently working on this footstep? @Apapirovskiy, @ProgramCrafter, are either of you? Can I take it?

@ProgramCrafter
Copy link
Contributor

@liketurbo No, I'm not working on this.
I confirm that I've seen working ADNL client in Rust somewhere, though not sure where it is and whether its license is permissive.

@liketurbo
Copy link
Contributor

liketurbo commented Apr 1, 2023

@liketurbo No, I'm not working on this. I confirm that I've seen working ADNL client in Rust somewhere, though not sure where it is and whether its license is permissive.

Maybe here: https://github.com/broxus/everscale-network/tree/master/src/adnl.
But I'm not sure how much of it is interchangeable with the TON implementation 🤔

@liketurbo
Copy link
Contributor

@liketurbo No, I'm not working on this. I confirm that I've seen working ADNL client in Rust somewhere, though not sure where it is and whether its license is permissive.

Maybe here: https://github.com/broxus/everscale-network/tree/master/src/adnl. But I'm not sure how much of it is interchangeable with the TON implementation thinking

But as you said, it's much better to have a standalone library than rely on a third party (tonlibjson).

@ProgramCrafter
Copy link
Contributor

@liketurbo I've found that library: it's https://crates.io/crates/adnl.
I think cell concepts are not altered in Everscale, so serializing BOCs probably can be taken from there.

@liketurbo
Copy link
Contributor

@liketurbo I've found that library: it's https://crates.io/crates/adnl. I think cell concepts are not altered in Everscale, so serializing BOCs probably can be taken from there.

Definitely need to check it out 👍️

@Apapirovskiy
Copy link
Author

Hello @liketurbo
Now work is in progress!

@Apapirovskiy
Copy link
Author

@ProgramCrafter Please assign issue to me

@ProgramCrafter
Copy link
Contributor

@Apapirovskiy
Just to make it clear: I'm not member of TON team, however I'm interested in the blockchain evolving and becoming great.

@Apapirovskiy
Copy link
Author

Done in:
https://github.com/ston-fi/tonlib-rs
https://github.com/ston-fi/tonlib-sys

Results achieved:
Developed Rust SDK for TON

TON wallet for reward:
EQBoTw0OzTblnzvV_nNVcSsQHlSykMg4pKrBbw-3ZiQrBb7D

@delovoyhomie
Copy link
Collaborator

@Apapirovskiy, rewards sent!

Please, next time, don't close the issue until the rewards has been received.
Thank you for the contribution!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Approved This proposal is approved by the committee footstep This is a TON Footstep issue
Projects
None yet
Development

No branches or pull requests

5 participants
@Apapirovskiy @liketurbo @ProgramCrafter @delovoyhomie and others