|
| 1 | +# Decentralized Threshold Signature Service Implementation |
| 2 | + |
| 3 | +- **Team Name:** Rui Morais |
| 4 | +- **Payment Address:** |
| 5 | + - FIAT (Sent by email to grants@web3.foundation on 09/08/2024, 16:07 UTC+1) |
| 6 | + - Polkadot: 14bBGQFAgKqdbGVDSWkm6dA8ZQzt9GxGSTALrD8SeafWW9gL |
| 7 | +- **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 2 |
| 8 | + |
| 9 | +## Project Description :page_facing_up: |
| 10 | + |
| 11 | +### General Overview |
| 12 | + |
| 13 | +This project is a continuation of [this one](https://github.com/w3f/Grants-Program/pull/2250) and aims to build a decentralized threshold signing service leveraging the Olaf protocol. The service will operate off-chain, providing a secure and cost-effective alternative to on-chain threshold signature mechanisms within the Substrate/Kusama/Polkadot ecosystem. |
| 14 | + |
| 15 | +### Technical Details |
| 16 | + |
| 17 | +Each participant in the threshold signing group will run a dedicated node application. This application will include: |
| 18 | + |
| 19 | +- Core Threshold Signing Protocol: The service will use the Olaf threshold signature protocol, which was implemented in the previous grant. |
| 20 | + |
| 21 | +- Peer-to-peer networking via [`rust-libp2p`](https://github.com/libp2p/rust-libp2p) (Milestone 1): |
| 22 | + |
| 23 | + - Peer discovery: nodes will identify and discover each other through a Distributed Hash Table (DHT) that maps their Substrate/Polkadot/Kusama public addresses to their peer IDs. |
| 24 | + |
| 25 | + - Secure communication: [`libp2p_noise`](https://docs.rs/libp2p-noise/latest/libp2p_noise/) provides secure, authenticated channels between participating nodes for exchanging protocol messages. |
| 26 | + |
| 27 | +- Integration of the Olaf protocol with the underlying network (Milestone 2), managing: |
| 28 | + - Distributed Key Generation (DKG) and signing rounds. |
| 29 | + |
| 30 | + - Local storage of key shares and protocol state. |
| 31 | + |
| 32 | +- A Command Line Interface (Milestone 3) that allow users to: |
| 33 | + |
| 34 | + - Configure node settings (network addresses and peer IDs). |
| 35 | + |
| 36 | + - Configure protocol settings (threshold and number of participants). |
| 37 | + |
| 38 | + - Execute the Olaf protocol. |
| 39 | + |
| 40 | +### Ecosystem Fit |
| 41 | + |
| 42 | +This project is useful for any Substrate/Kusama/Polkadot based project that wants to use a secure off-chain decentralized threshold signature service that is cheaper than using the theshold signing funcionality of the network directly. |
| 43 | + |
| 44 | +### Related Projects |
| 45 | + |
| 46 | +The most similar project we found is [this](https://github.com/nulltea/tss-libp2p), but it is out of date and unmantained. |
| 47 | + |
| 48 | +### Team members |
| 49 | + |
| 50 | +- Rui Morais |
| 51 | + |
| 52 | +### Contact |
| 53 | + |
| 54 | +- **Contact Name:** Rui Morais |
| 55 | +- **Contact Email:** ruipedromorais11@gmail.com |
| 56 | +- **Github:** https://github.com/fiono11 |
| 57 | +- **Linkedin:** https://www.linkedin.com/rui-morais |
| 58 | + |
| 59 | +### Team's experience |
| 60 | + |
| 61 | +- Obtained a PhD in Computer Science with the thesis *"Contributions to Permissionless Decentralized Networks for Digital Currencies Based on Delegated Proof of Stake"* (awaiting for the defense). |
| 62 | +- Published the following papers: |
| 63 | + - [Echidna: A New Consensus Algorithm for Efficient State Machine Replication](https://ieeexplore.ieee.org/document/10338927) (IEEE BCCA 2023) |
| 64 | + - [Nero: A Deterministic Leaderless Consensus Algorithm for DAG-Based Cryptocurrencies](https://www.mdpi.com/1999-4893/16/1/38) (Algorithms 2022) |
| 65 | + - [A tool for implementing privacy in Nano](https://ieeexplore.ieee.org/document/9126023) (IEEE DAPPS 2020) |
| 66 | + - [Adamastor: a New Low Latency and Scalable Decentralized Anonymous Payment System](https://arxiv.org/abs/2011.14159) (Arxiv) |
| 67 | +- Has graduated the PBA Hong Kong cohort. |
| 68 | + |
| 69 | +## Development Roadmap :nut_and_bolt: |
| 70 | + |
| 71 | +### Overview |
| 72 | + |
| 73 | +- **Total Estimated Duration:** 3 months |
| 74 | +- **Full-Time Equivalent (FTE):** 1 FTE |
| 75 | +- **Total Costs:** 30,000 USD |
| 76 | +- **DOT %:** 50% |
| 77 | + |
| 78 | +### Milestone 1 - Development of the Node |
| 79 | + |
| 80 | +- **Estimated duration:** 1 month |
| 81 | +- **FTE:** 1 |
| 82 | +- **Costs:** 10,000 USD |
| 83 | + |
| 84 | +| Number | Deliverable | Specification | |
| 85 | +| -----: | ----------- | ------------- | |
| 86 | +| **0a.** | License | GPLv3 | |
| 87 | +| **0b.** | Documentation | We will provide **inline documentation** of the code. | |
| 88 | +| **0c.** | Testing and Testing Guide | Core functions will be fully covered by comprehensive unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | |
| 89 | +| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. | |
| 90 | +| **1.a** | Development of the Node | Two peers running on different machines are able to discover each other through their Substrate/Kusama/Polkadot address, establish a connection, and exchange messages. | |
| 91 | + |
| 92 | +### Milestone 2 - Integration of Olaf into the Node |
| 93 | + |
| 94 | +- **Estimated duration:** 1 month |
| 95 | +- **FTE:** 1 |
| 96 | +- **Costs:** 10,000 USD |
| 97 | + |
| 98 | +| Number | Deliverable | Specification | |
| 99 | +| -----: | ----------- | ------------- | |
| 100 | +| **0a.** | License | GPLv3 | |
| 101 | +| **0b.** | Documentation | We will provide **inline documentation** of the code. | |
| 102 | +| **0c.** | Testing and Testing Guide | Core functions will be fully covered by comprehensive unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | |
| 103 | +| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. | |
| 104 | +| **1.a** | Integration of Olaf into the Node | Two peers on different machines exchange messages and successfully produce a threshold signature using the Olaf protocol with hardcoded protocol parameters. | |
| 105 | + |
| 106 | +### Milestone 3 - Decentralized Threshold Signature Service CLI |
| 107 | + |
| 108 | +- **Estimated duration:** 1 month |
| 109 | +- **FTE:** 1 |
| 110 | +- **Costs:** 10,000 USD |
| 111 | + |
| 112 | +| Number | Deliverable | Specification | |
| 113 | +| -----: | ----------- | ------------- | |
| 114 | +| **0a.** | License | GPLv3 | |
| 115 | +| **0b.** | Documentation | We will provide both **inline documentation** of the code and a basic **tutorial** that explains how the service can be used. | |
| 116 | +| **0c.** | Testing and Testing Guide | Core functions will be fully covered by comprehensive unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | |
| 117 | +| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. | |
| 118 | +| **0e.** | Article | We will publish an **article**/workshop that explains how the service works under the hood and how it can be used from a user perspective. | |
| 119 | +| **1.a** | Decentralized Threshold Signature Service CLI | Two peers on different machines exchange messages and produce a threshold signature using the Olaf protocol with protocol parameters defined by user input from the CLI. | |
| 120 | + |
| 121 | +## Future Plans |
| 122 | + |
| 123 | +- Develop a webwallet for the user interface or integrate it in an established webwallet of the ecosystem, if there is interest. |
0 commit comments