TASKS 1. For the TON-SDK (and TON Client), develop a binding / wrapper to use SDK functions from a project in another programming language. This binding should provide an API for all SDK Library methods. 2. Write either unit tests or example code which illustrate the usage of the interfaces you’ve implemented.
TECHNOLOGY STACK Ruby
DESCRIPTION // The developer is expected to gain a deeper understanding of the internals of the SDK and the technical concepts behind TON. // The TON-SDK library is the basis for developers to create Dapps. // You will need to delve into some instructions and explore an existing example of implementing such a binding (wrapper) in Rust. // https://github.com/tonlabs/TON-SDK // https://github.com/tonlabs/ton-client-rs - link to an example of implementation of binding (wrapper) in Rust // https://docs.ton.dev/86757ecb2/p/92b041-overview - SDK documentation (but you don't really need to dive into it, there is a lot of specifics, it's easier to implement a task based on an example with Rust).
SUBMISSION FORMAT AND REQUIREMENTS // Work should be submitted to the Company’s GitHub repository. The participant may use any GitHub account he/she wants to publish the repository // To make the evaluation process faster, include a README file with instructions to install dependencies (if any) and compile/run tests/examples // Deliverables with failing builds/tests/samples will be rejected // Deliverables should use v1.0.0 Core SDK release
EVALUATION CRITERIA Considering the following criteria set as necessary: // API coverage completeness // Test coverage completeness: // // amount of methods covered // // “negative” tests // // async request tested // // tests on method execution correctness when called from one/different client contexts // Internal SDK errors are handled using error handling approaches. Error codes and messages are consistent with SDK errors. // It is possible to solve the following routines using participants’ submission code: // // keypair derivation from TON Surf mnemonic // // contract deployment // // message/transaction sending // // fee estimation // // graphql queries execution // Asynchronous API (request with callback) binding implementation // Available via the appropriate package manager (e. g. pip for python or npm for js) Considering the following criteria set as unwanted: // Not implemented SDK methods // Binding mistakes causing SDK errors // Memleaks // Incomplete test coverage or tests inexistence // No instructions for running tests/examples // Bad code readability // Core Implementation inconsistency
NOTES Don’t implement core logic. You should use the Core SDK dynamic library (v1.0.0) to create your binding.