Skip to main content

sr25519-donna

This document is referenced in the terms and conditions and therefore needs to contain all the required information. Don't remove any of the mandatory parts presented in bold letters or as headlines! See the Open Grants Program Process on how to submit a proposal.

  • Proposer: terencege
  • Payment Address: 3CL4h6PDZRM8yWyqFyShJJdPdYVQWF7pQL

Project Description 📄​

Please provide the following:

  • A brief description of the project. This is a pure C implementation of polkadot’s key derivation and signing algorithm. The goal is to fully compatible with the original rust version.

    schnorrkel plays a key role in polkadot's ecosystem, but currently it only has rust implementation officially. Although rust is popular in blockchain industry, there are still large amount of projects (such as trezor and trust wallet) are using C/C++. Porting rust in some platform (such as ios) is not frictionless, also some embeded systems require extra effort to remove std of rust to reduce bundle size. There should be a C version that implements all the features the rust versions has, at the same time, more easier to integrat into existing (C/C++)project.

  • An indication of why this project is good for the ecosystem. For those C/C++ projects in the industry, if they want to support polkadot, it's more convenient to use this library instead of the rust version.

  • An indication of why your team is interested in creating this project. When I'm buiding an native mobile wallet which will support polkadot, for some reasons, apple's infastructre dose not support rust very well, so I start to build the C version of the schnorrkel lib.

Team 👥​

Development Roadmap 🔩​

  • Total Estimated Duration: 4 weeks
  • Total Costs: 0.6 BTC

Milestone 1​

  • Estimated Duration: 2 weeks
  • Costs: 0.3 BTC
NumberDeliverableSpecification
1.keypair creationcreate keypair form seed
2.keypair derivationsupport soft/hard deriving keypair
3.sign/verify messagesupport signing/verifing messages
4.random number generatorprovide default random number generator and allow users to use their custom version
5.curve operationtake advantage of ed25519-donna's curve operations, support both 32bit and 64bit operations
6.add documentationadd documentation of installing or integrating these features

Milestone 2​

  • Estimated Duration: 2 weeks
  • Costs: 0.3 BTC
NumberDeliverableSpecification
1.vrf sign if lesssupport verifiable random function signing operation
2.vrf verifysupport verifiable random function verifing operation
3.unit testprovide unit test for vrf siging and verifing
4.add documentationadd documentation of installing or integrating vrf features

Additional Information ➕​

Any additional information that you think is relevant to this application that hasn't already been included.

Possible additional information to include:

  • What work has been done so far? There are some features already implemented, although need some improvement, you can check the repo here https://github.com/TerenceGe/sr25519-donna
  • Are there any other projects similar to yours? If so, how is your project different? Sr25519_port Implementation by usetech-llc - which only have the sign/verify features. https://github.com/usetech-llc/sr25519 We will support all the features the rust version have, including HDKD, VRF and MulSig.