- Project: thor-devkit.rs
- Team Name: Stanislav Terliakov
- Payment Address: 0xE8646E21238fA20C50565f16F926448930B4FBfB
Currently the need in low-latency applications grows as it has never done before, and this means that "common" backend languages like Python or Node.js cannot satisfy the needs of some large-scale products. Rust is a statically typed, compiled language with both usability and speed in mind. Currently Rust has entered even Linux kernel, which attests its popularity and suitability. Unfortunately, there is no existing VeChain SDK for Rust, and I hope to resolve this problem.
The ability to choose the language and framework that fits one's needs best is crucial for development success: outdated or mismatching technology stack can lead to poorly coded and buggy applications. Rust has almost unlimited capabilities, remaining easy-to-use and having rich tools support at the same time. Rocket - one of the most popular web frameworks in Rust - provides a very comprehensive set of features for backend development.
The unique features of VeChain - especially the two-token model - make it my most beloved blockchain, and so I wish to be an active contributor to it, creating modern tools for other passionate developers.
My final aim is to create a fully functional SDK in Rust for VeChain, providing features set similar to those of other existing VeChain devkits. Here's the brief outline of such features:
- HD and mnemonic wallet generation
- Private and public keys processing, address conversion
- Helper utilities (hashing, runtime inspection, error transformation, etc.)
- Transactions signing and sending
- Signature verification
- Bloom Filter
- Fee delegation (VIP-191)
- Certificates (self-signed), as per VIP-192
- ABI handling: log parsing, decoding, contract calls
- Solidity integration (compile, deploy, verify, call the contract)
For more details on the bullets, refer to "Milestones" section.
The project, even during development (usual alpha version before the first milestone, beta - before the second), will be deployed as a publicly accessible crate (at crates.io - main Rust crate index).
I worked (also solo), developing a package in python with similar functionality (thor-devkit.py) during VeChain hackathon last year.
Currently there are no other Rust SDKs for VeChain interaction, though there are several implementations in JavaScript, Python and Dart.
- Stanislav Terliakov
I have a CS background from MIPT, and also have a few years of hands-on development experience working as a freelancer. I have a noticeable amount of open-source code contributions. Most of my contract job is related to web development (mainly with Python, as well as one commercial project in Rust which is closed-source and goes through its private beta phase currently).
https://www.linkedin.com/in/stanislav-terliakov-4a2894244/
Milestone 1 | Milestone 2 | Milestone 3 | Total | |
---|---|---|---|---|
Estimated Duration | 30 d | 30 d | 60 d | 90 d |
Full-time equivalent (FTE) | 1 | 1 | 1.5 | 3.5 |
Cost (up to $ 30,000) | $ 7,000 | $ 7,000 | $ 11,000 | $ 25,000 |
Number | Deliverable | Specification |
---|---|---|
0a. | License | GNU Lesser General Public License v3.0 (GPLv3) |
0b. | Documentation | On this stage, only inline documentation will be supported. |
0c. | Testing Guide | Unit and integrations test, distributed together with the package and in repository. The setup and commands to run the tests will be provided. |
1 | Repository and package setup, CI&CD pipelines | I will deploy common infrastructure to ensure code quality and correctness, prepare to uploading the alpha version |
2 | HD and mnemonic wallet generation | I will implement the address generation functionality |
3 | Private and public keys processing, address conversion | I will develop private and public keys support and address conversion utilities |
4 | Helper utilities (hashing, runtime inspection, error transformation, etc.) | I will add some helper utilities that might be useful at that stage |
5 | Bloom Filter | I will adopt Bloom filter implementation |
6 | First alpha version release |
Number | Deliverable | Specification |
---|---|---|
0a. | License | GNU Lesser General Public License v3.0 (GPLv3) |
0b. | Documentation | On this stage, the documentation will grow to basic autogenerated layout with direct API explanation. |
0c. | Testing Guide | Unit and integrations test, distributed together with the package and in repository. The setup and commands to run the tests will be provided. |
1 | Transactions signing and sending | I will implement all the functionality necessary to interact with public nodes and sign and send the transactions |
2 | Signature verification | I will add the tools for signatures handling |
3 | ABI handling: log parsing, decoding, contract calls | I will develop the supporting library part for ABI usage with relation to log parsing and smart contract integration |
4 | Fee delegation (VIP-191) | I will add VIP-191 support |
5 | First beta version release |
Number | Deliverable | Specification |
---|---|---|
0a. | License | GNU Lesser General Public License v3.0 (GPLv3) |
0b. | Documentation | On this stage, the autogenerated documentation will be updated and improved to include Q&A and FAQ articles on some most difficult topics. |
0c. | Testing Guide | Unit and integrations test, distributed together with the package and in repository. The setup and commands to run the tests will be provided. Integration test rely on local testnet, running with docker (and the same happens in CI) |
1 | Solidity integration | I will add the tools to compile, deploy, verify, call the contract (using external solidity compiler for some of the tasks) |
2 | Certificates (self-signed), as per VIP-192 | I will add support for VIP-192 certificates |
3 | Documentation work | Write extended usage examples, FAQ and Q&A articles on the most relevant topics to improve new developer's experience (this is the most time consuming part) |
4 | Testing finalization | At this stage I expect at least 95% unit test coverage, accompanied with several integration on-chain tests. |
5 | First release candidate and normal version release: rc1 and v1.0 |
I'll publish a Medium article after alpha stage deployment, explaining the usage of created API. I also plan to develop a simplistic demo application to showcase the framework in "learn by examples" way. I'm ready to include my email into the article and documentation pages to assist other developers whenever possible. Also I'm ready to provide direct support via github issues, as usual.
My main focus is improving the developer experience. Given how awesome VeChain is overall, I have other ideas to implement here. I want to create a fully self-contained test node (testnet) creation for local development and testing, that can be run in CI pipelines as well - this will be a docker-based solution with experience similar to ganache, eliminating the need to dive deep into node setup. My another (more wide) idea is to develop a CLI-based wallet, because usually GUI wallets are good for end users (if they are not awful like Metamask), but very inconvenient for developers: support for many chains, showing binary and JSON outputs on every stage, ability to work with custom messages - all these features are crucial during development and, unfortunately, still not implemented anywhere.
- What work has been done so far? I didn't attempt this implementation yet.
- Are there any teams who have already contributed (financially) to the project? No, I'm looking for the only funding source here.
- Have you applied for other grants so far? I plan to apply to other VeChain grants in future (see previous section), but haven't done this yet.