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

C# SDK for TON #204

Closed
pyAndr3w opened this issue Apr 6, 2023 · 12 comments
Closed

C# SDK for TON #204

pyAndr3w opened this issue Apr 6, 2023 · 12 comments
Assignees
Labels
Approved This proposal is approved by the committee footstep This is a TON Footstep issue

Comments

@pyAndr3w
Copy link

pyAndr3w commented Apr 6, 2023

Summary

The C# language, widely used in the .NET and Unity ecosystems, can greatly benefit from a dedicated SDK to work with TON Blockchain. Developing this SDK will attract more developers to the TON ecosystem, expanding its reach and utility. This proposal outlines a development plan to create a comprehensive C# SDK for TON Blockchain.

Context

At the moment there are many popular libraries to work with the TON blockchain, but there is not yet a single current library that could cover the C#, .NET and Unity developers community. Here is a development plan that I would like to implement as part of this footstep:

  • Implement native Cell, Slice, Builder and BOC (de)serialization
  • Implement an RPC client to work with the TON network
  • Implement support for popular structures from block.tlb
  • Implement support of TON base64 addresses
  • Implement support of HashmapE
  • Implement support of TON & BIP39 Mnemonics
  • Implement support of wallets (v3, v3r2, v4r2)
  • Implement Ed25519 signing of transactions
  • Implement for workings with Jettons and NFTs

Goals

Develop the С# SDK to work with the TON blockchain

Deliverables

GitHub with TonSdk.NET library and examples

Definition of Done

GitHub repository with the source code

Reward

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

Total: $5000

@pyAndr3w pyAndr3w added the footstep This is a TON Footstep issue label Apr 6, 2023
@delovoyhomie delovoyhomie added the Approved This proposal is approved by the committee label Apr 7, 2023
@Gusarich
Copy link
Contributor

Gusarich commented Apr 7, 2023

@pyAndr3w will you work on this?

@pyAndr3w
Copy link
Author

pyAndr3w commented Apr 7, 2023

@pyAndr3w will you work on this?

@Gusarich yes, i'm

@Gusarich
Copy link
Contributor

Gusarich commented Apr 7, 2023

Good luck then! Don't forget to write here sometimes about your current progress. @pyAndr3w

@delovoyhomie
Copy link
Collaborator

@pyAndr3w, any updates?

@pyAndr3w
Copy link
Author

@delovoyhomie, wip, will be completed soon

@pyAndr3w
Copy link
Author

pyAndr3w commented Jul 8, 2023

Done! @purpleguy99 and I have released v0.1.0 of the SDK.

Repository: https://github.com/continuation-team/TonSdk.NET

Please split the reward between the two of us and send the NFTs to each.

My wallet: EQB9DjoKb6di-LGbXVWf5wq_jH5SE-lCx09fMcVmHQNtDqke

@purpleguy99, please send your wallet address.

@purpleguy99
Copy link
Contributor

Done! @purpleguy99 and I have released v0.1.0 of the SDK.

Repository: https://github.com/continuation-team/TonSdk.NET

Please split the reward between the two of us and send the NFTs to each.

My wallet: EQB9DjoKb6di-LGbXVWf5wq_jH5SE-lCx09fMcVmHQNtDqke

@purpleguy99, please send your wallet address.

EQAiqHfH96zGIC38oNRs1AWHRyn3rsjT1zOiAYfjQ4NKN64s

@justdmitry
Copy link

May I nominate https://github.com/justdmitry/TonLib.NET instead - it works with liteservers and does not require TonCenter API or other 3rdparty services.

@pyAndr3w
Copy link
Author

pyAndr3w commented Jul 9, 2023

May I nominate https://github.com/justdmitry/TonLib.NET instead - it works with liteservers and does not require TonCenter API or other 3rdparty services.

Thank you for your suggestion and the link to the TonLib.NET project. It is undoubtedly a valuable tool for the TON community. However, our Footstep was created and accepted with the specific aim of developing a new SDK, which we have successfully implemented.

We have considered all the necessary aspects described in our initial proposal and incorporated them into our library. Moreover, the use of TonCenter API or other third-party services was part of our design to ensure certain functionalities and ease of use.

Despite the presence of other approaches, our Footstep focused on achieving specific goals and meeting particular needs. We believe we have successfully completed this task.

However, we take note of your remarks about the potential to work directly with liteservers via ADNL and plan to implement this in the future. This will allow us to expand the capabilities of our SDK and make it an even more versatile tool for working with the TON blockchain.

We are always open to discussions and suggestions for further improvements to our SDK. Together, we can enhance and expand the TON ecosystem.

@delovoyhomie
Copy link
Collaborator

May I nominate https://github.com/justdmitry/TonLib.NET instead - it works with liteservers and does not require TonCenter API or other 3rdparty services.

@justdmitry, what are the advantages of your library? If it's not compatible with C# SDK, what use cases does it provide?

@justdmitry
Copy link

If it's not compatible with C# SDK...

TonLib.NET is a C# SDK itself (too).

If you mean "with TonSdk.net" then... both can work with keys and mnemonics, parse/build Cells/BOCs (including HashmapE), read/send transactions with TON and custom bodies (for jettons, domains etc). So in general, I believe any of them can be used to interact with TON Blockchain, while particular missed "transaction templates" (like update DNS entry in TonSdk.NET or mint jettons in TonLib.NET) may be added in minutes when required.

The principal difference is that TonLib.NET is "tonlib-based" (like pythonlib), while TonSdk.NET uses TonCenter now and may be upgraded for direct ADNL connections in the future (like tonutils-go or ton-kotlin).

Other differences (like "System.Text.Json" vs "Newtonsoft.Json" used packages, CRC builtin vs external package, Logging and Options packages) are not important IMHO.

@delovoyhomie
Copy link
Collaborator

Rewards sent! 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