From ca2fc83d391055e425a71ce9719e3e4415483f0d Mon Sep 17 00:00:00 2001 From: Terence Ge Date: Fri, 15 May 2020 15:30:13 +0800 Subject: [PATCH 1/4] add sr25519-donna --- applications/sr25519_donna.md | 77 +++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 applications/sr25519_donna.md diff --git a/applications/sr25519_donna.md b/applications/sr25519_donna.md new file mode 100644 index 00000000000..5d721270adb --- /dev/null +++ b/applications/sr25519_donna.md @@ -0,0 +1,77 @@ +# Open Grant Proposal + +> 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](https://github.com/w3f/Open-Grants-Program/blob/master/README_2.md) on how to submit a proposal. + +* **Project:** sr25519-donna +* **Proposer:** [terencege](https://github.com/TerenceGe) +* **Payment Address:** 3CL4h6PDZRM8yWyqFyShJJdPdYVQWF7pQL + +## Project Description :page_facing_up: + +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. + * 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 :busts_in_silhouette: + +* **Members: Terence Ge +* **LinkedIn Profiles:** https://www.linkedin.com/in/terence-ge-4a146185/ +* **Code Repos:** https://github.com/TerenceGe/sr25519-donna +* **Legal Structure:** Individual +* **Team's Experience:** Working in blockchain industry since 2013, author of BitPortal wallet (https://bitportal.io/), former BTCC exchange engineer, have rich experence of buiding crypto currency exchange and wallet. + +## Development Roadmap :nut_and_bolt: + +* **Total Estimated Duration:** 5 weeks +* **Total Costs:** 1.2 BTC + +### Milestone 1 + +* **Estimated Duration:** 2 weeks +* **Costs:** 0.4 BTC + + +| Number | Deliverable | Specification | +| ------------- | ------------- | ------------- | +| 1. | keypair creation | create keypair form seed | +| 2. | keypair derivation | support soft/hard deriving keypair | +| 3. | sign/verify message | support signing/verifing messages | +| 4. | random number generator | provide default random number generator and allow users to use their custom version | +| 5. | curve operation | take advantage of ed25518-donna's curve operations, support both 32bit and 64bit operations | + +### Milestone 2 + +* **Estimated Duration:** 2 weeks +* **Costs:** 0.4 BTC + + +| Number | Deliverable | Specification | +| ------------- | ------------- | ------------- | +| 1. | vrf sign if less | support verifiable random function signing operation | +| 2. | vrf verify | support verifiable random function verifing operation | +| 3. | unit test | provide unit test for vrf siging and verifing | + +### Milestone 2 + +* **Estimated Duration:** 1 weeks +* **Costs:** 0.4 BTC + + +| Number | Deliverable | Specification | +| ------------- | ------------- | ------------- | +| 1. | multi-signature | support the three-round MuSig for Schnorr multi-signatures | +| 3. | unit test | provide unit test for multi-signature | + +## Additional Information :heavy_plus_sign: +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. From 344a938acea47afa32939ef538ed5027636e2b1e Mon Sep 17 00:00:00 2001 From: Terence Ge Date: Fri, 15 May 2020 17:23:52 +0800 Subject: [PATCH 2/4] update --- applications/sr25519_donna.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/applications/sr25519_donna.md b/applications/sr25519_donna.md index 5d721270adb..c23acf604d9 100644 --- a/applications/sr25519_donna.md +++ b/applications/sr25519_donna.md @@ -11,6 +11,9 @@ 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](https://wiki.polkadot.network/docs/en/learn-cryptography) 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. @@ -23,6 +26,7 @@ Please provide the following: * **Code Repos:** https://github.com/TerenceGe/sr25519-donna * **Legal Structure:** Individual * **Team's Experience:** Working in blockchain industry since 2013, author of BitPortal wallet (https://bitportal.io/), former BTCC exchange engineer, have rich experence of buiding crypto currency exchange and wallet. +* **Team's previous work links:** [cryptoolkit](https://github.com/TerenceGe/cryptoolkit), [bitportal-wallet](https://github.com/TerenceGe/bitportal-wallet) ## Development Roadmap :nut_and_bolt: @@ -41,7 +45,7 @@ Please provide the following: | 2. | keypair derivation | support soft/hard deriving keypair | | 3. | sign/verify message | support signing/verifing messages | | 4. | random number generator | provide default random number generator and allow users to use their custom version | -| 5. | curve operation | take advantage of ed25518-donna's curve operations, support both 32bit and 64bit operations | +| 5. | curve operation | take advantage of ed25519-donna's curve operations, support both 32bit and 64bit operations | ### Milestone 2 From 2e55d0ec2f18347b54f9b255341583b8f6f7c38e Mon Sep 17 00:00:00 2001 From: Terence Ge Date: Mon, 18 May 2020 20:00:09 +0800 Subject: [PATCH 3/4] remove milestone 3 --- applications/sr25519_donna.md | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/applications/sr25519_donna.md b/applications/sr25519_donna.md index c23acf604d9..41a24295c41 100644 --- a/applications/sr25519_donna.md +++ b/applications/sr25519_donna.md @@ -30,13 +30,13 @@ Please provide the following: ## Development Roadmap :nut_and_bolt: -* **Total Estimated Duration:** 5 weeks -* **Total Costs:** 1.2 BTC +* **Total Estimated Duration:** 4 weeks +* **Total Costs:** 0.6 BTC ### Milestone 1 * **Estimated Duration:** 2 weeks -* **Costs:** 0.4 BTC +* **Costs:** 0.3 BTC | Number | Deliverable | Specification | @@ -50,7 +50,7 @@ Please provide the following: ### Milestone 2 * **Estimated Duration:** 2 weeks -* **Costs:** 0.4 BTC +* **Costs:** 0.3 BTC | Number | Deliverable | Specification | @@ -59,17 +59,6 @@ Please provide the following: | 2. | vrf verify | support verifiable random function verifing operation | | 3. | unit test | provide unit test for vrf siging and verifing | -### Milestone 2 - -* **Estimated Duration:** 1 weeks -* **Costs:** 0.4 BTC - - -| Number | Deliverable | Specification | -| ------------- | ------------- | ------------- | -| 1. | multi-signature | support the three-round MuSig for Schnorr multi-signatures | -| 3. | unit test | provide unit test for multi-signature | - ## Additional Information :heavy_plus_sign: Any additional information that you think is relevant to this application that hasn't already been included. From a3b0b778152ecee25e63fffb45afa71bb10c7718 Mon Sep 17 00:00:00 2001 From: Terence Ge Date: Tue, 19 May 2020 19:19:44 +0800 Subject: [PATCH 4/4] add documentation into the milestones --- applications/sr25519_donna.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/applications/sr25519_donna.md b/applications/sr25519_donna.md index 41a24295c41..d5c04976124 100644 --- a/applications/sr25519_donna.md +++ b/applications/sr25519_donna.md @@ -46,6 +46,7 @@ Please provide the following: | 3. | sign/verify message | support signing/verifing messages | | 4. | random number generator | provide default random number generator and allow users to use their custom version | | 5. | curve operation | take advantage of ed25519-donna's curve operations, support both 32bit and 64bit operations | +| 6. | add documentation | add documentation of installing or integrating these features | ### Milestone 2 @@ -58,6 +59,7 @@ Please provide the following: | 1. | vrf sign if less | support verifiable random function signing operation | | 2. | vrf verify | support verifiable random function verifing operation | | 3. | unit test | provide unit test for vrf siging and verifing | +| 4. | add documentation | add documentation of installing or integrating vrf features | ## Additional Information :heavy_plus_sign: Any additional information that you think is relevant to this application that hasn't already been included.