Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions deliveries/dot-ring-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Milestone Delivery :mailbox:

**The delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).**

* **Application Document:**[Dot-Ring Application](https://github.com/Chainscore/posg-apply/blob/master/applications/dot-ring.md)

* **Milestone Number:** 1
* **DOT Payment Address:** `1iP4qFqt7SRtditzaDBodiwWePpQdUhWGf3bXgL5WYN96hV`

**Context**

This milestone delivers the Major Functional components of the DotRing Suite, focusing on implementing the Bandersnatch curve with optimizations, core VRF
logic (IETF, Pedersen, Ring Proof and Ring VRF), KZG Commitment scheme and the Fiat-Shamir transcript module. It also provides a comprehensive RFC 9380-compliant
hash-to-curve functionality for multiple elliptic curves, supporting both RO (Random Oracle) and NU (Non-Uniform) variants
across Weierstrass, Montgomery, and Twisted Edwards curve families.

**Deliverables**

| Number | Deliverable | Link | Notes |
|--------|----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 0a. | License | [LICENSE](https://github.com/Chainscore/dot-ring/blob/m1_delivery/LICENSE) | MIT License |
| 0b. | Documentation | [README.md](https://github.com/Chainscore/dot-ring/blob/m1_delivery/README.md) | Comprehensive documentation with inline code documentation, and usage examples for IETF VRF, Pedersen VRF, and Ring VRF. Extended documentation with Sphinx will be provided in the final delivery milestone, as covering additional curves for Ring and other VRFs may require structural changes. |
| 0c. | Testing and Testing Guide | [TESTING.md](https://github.com/Chainscore/dot-ring/blob/m1_delivery/TESTING.md), [tests/](https://github.com/Chainscore/dot-ring/tree/m1_delivery/tests) | Comprehensive unit tests with IETF test vectors for H2C (RFC 9380) and VRF implementations. Test coverage >80% for core functions |
| 0d. | Docker | [Dockerfile](https://github.com/Chainscore/dot-ring/blob/m1_delivery/Dockerfile) | Container setup with all dependencies, and test execution. |
| 1.1 | Bandersnatch Curve Implementation | [dot_ring/curve/specs/bandersnatch.py](https://github.com/Chainscore/dot-ring/blob/m1_delivery/dot_ring/curve/specs/bandersnatch.py) | Complete Bandersnatch curve arithmetic with GLV endomorphism optimization, achieving ~40% faster scalar multiplication. |
| 1.2 | Curve Families & Core Arithmetic | [dot_ring/curve/](https://github.com/Chainscore/dot-ring/tree/m1_delivery/dot_ring/curve) | Finite field operations, point addition, scalar multiplication, curve-specific optimizations and hash2curve implementation for all curve families |
| 1.3 | All Curves | [dot_ring/curve/specs/](https://github.com/Chainscore/dot-ring/tree/m1_delivery/dot_ring/curve/specs) | Specification of curves: Bandersnatch, P-256, P-384, P-521, secp256k1, Ed25519, Ed448, Curve25519, Curve448, BLS12-381 G1&G2, JubJub, BabyJubJub |
| 1.4 | Hash-to-Curve Suites | [tests/test_h2c_suites/](https://github.com/Chainscore/dot-ring/tree/m1_delivery/tests/test_h2c_suites) | All suites implemented and tested with RFC9380 vectors: RO and NU variants covering Edwards, Weierstrass and Montgomery Curves |
| 2.1 | IETF VRF Implementation | [dot_ring/vrf/ietf/ietf](https://github.com/Chainscore/dot-ring/blob/m1_delivery/dot_ring/vrf/ietf) | Full IETF ECVRF implementation (RFC 9381) with KeyGen, Prove, Verify operations |
| 2.2 | IETF VRF Tests | [test_vrfs/test_ietf](https://github.com/Chainscore/dot-ring/tree/m1_delivery/tests/test_vrfs/test_ietf) | Comprehensive tests with IETF test vectors for Bandersnatch, P-256, P-384, secp256k1 curves |
| 3.1 | Pedersen VRF Implementation | [dot_ring/vrf/ietf/pedersen](https://github.com/Chainscore/dot-ring/tree/m1_delivery/dot_ring/vrf/pedersen) | Pedersen VRF with privacy-preserving properties (public key not exposed) |
| 3.2 | Pedersen VRF Tests | [test_vrfs/test_pedersen](https://github.com/Chainscore/dot-ring/tree/m1_delivery/tests/test_vrfs/test_pedersen) | Comprehensive tests with Pedersen test vectors for Bandersnatch, P-256, P-384, secp256k1 curves |
| 4.1 | Ring Proof Implementation | [dot_ring/ring_proof](https://github.com/Chainscore/dot-ring/tree/m1_delivery/dot_ring/ring_proof) | A Complete Ring Proof Implementation with KZG, Fiat-Shamir Transcript for generating ZK-Proofs |
| 4.2 | Ring proof Tests | [test_vrfs/test_ring_proof](https://github.com/Chainscore/dot-ring/tree/m1_delivery/tests/test_vrfs/test_ring_proof) | Comprehensive tests with Ring Proof test vectors for Bandersnatch |
| 5.1 | Ring VRF Implementation | [vrf/ring/](https://github.com/Chainscore/dot-ring/tree/m1_delivery/dot_ring/vrf/ring) | Full Ring VRF Implementation (Utilizing Pedersen + Ring Proof) |
| 5.2 | Ring VRF Tests | [tests/test_h2c_suites/](https://github.com/Chainscore/dot-ring/tree/m1_delivery/tests/test_vrfs/test_ring_vrf) | Comprehensive tests with Ring VRF test vectors for Bandersnatch |

**Additional Information**

**Key Achievements**

1. **RFC 9380 Compliance**: Full implementation of hash-to-curve for all the curves with both RO and NU variants
2. **Performance Optimization**: GLV-accelerated Bandersnatch achieving ~40% faster scalar multiplication
3. **Comprehensive Testing**: 100% pass rate on RFC9380 hash-to-curve suites,and All VRF implementations
4. **Multi-Curve Support**: Unified API supporting Weierstrass, Montgomery, and Twisted Edwards curve families
5. **Security**: Constant-time implementations avoiding timing side-channels (Excluding Try-And-Increment)
6. Published a Research paper on [IEEE Xplore](https://ieeexplore.ieee.org/document/11158167)

**Architecture Highlights**

- **Modular Design**: Separation of concerns with dedicated modules
- **RFC Compliance**: Strict adherence to RFC 9380 (hash-to-curve) and RFC 9381 (VRF) specifications
- **Extensibility**: Easy to add new curves and VRF variants
- **Cross-Verification**: Compatible with Rust ark-vrf implementation for cross-checking

**Next Steps (Milestone 2)**

- Extending the VRF Implementation to support more curves
- Performance optimization and benchmarking
- PyPI package release
39 changes: 39 additions & 0 deletions deliveries/dot-ring-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Milestone Delivery :mailbox:

**The delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).**

* **Application Document:** [Dot-Ring Application](https://github.com/Chainscore/posg-apply/blob/master/applications/dot-ring.md)
* **Milestone Number:** 2
* **DOT Payment Address:** `1iP4qFqt7SRtditzaDBodiwWePpQdUhWGf3bXgL5WYN96hV`

**Context** (optional)

This milestone marks the completion of the DotRing development. It includes the final published library, developer documentation, performance optimizations, and the official PyPI package release. Additionally, this delivery includes the submission of a research paper to IEEE and articles explaining the grant's work.

**Deliverables**


| Number | Deliverable | Link | Notes |
| ------------- | ------------- | ------------- |------------- |
| 0a. | License | [LICENSE](https://github.com/Chainscore/dot-ring/blob/main/LICENSE) | MIT License |
| 0b. | Documentation | [Docs](https://dotring.chainscore.finance/) | Developer documentation including API reference and tutorials. |
| 0c. | Testing and Testing Guide | [TESTING.md](https://github.com/Chainscore/dot-ring/blob/master/TESTING.md) | Full test suite coverage including property-based tests and integration tests. |
| 0d. | Docker | [Dockerfile](https://github.com/Chainscore/dot-ring/blob/master/Dockerfile) | Updated container setup for testing and usage. |
| 0e. | Article | [Article 1](https://chainscore.finance/en/blog/from-bytes-to-points-how-try-and-increment-and-elligator-2-map-to-curves) [Article 2](https://chainscore.finance/blog/verifiable-randomness-with-context-understanding-vrf-with-additional-data-vrf-ad) [Article 3](https://chainscore.finance/en/blog/understanding-elliptic-curves-in-cryptography) | Article/Workshop explaining the grant achievements. |
| 0f. | Research Papers | [Papers/](https://ieeexplore.ieee.org/document/11158167) | Research paper submitted to IEEE. |
| 1. | Performance Optimization | [Benchmarks](https://github.com/Chainscore/dot-ring/blob/main/docs/BENCHMARK.md) | Optimized implementations by using blst for MSM and pairing which uses low level C and assembly code. |
| 2. | PyPI Release | [PyPI Link](https://pypi.org/project/dot-ring/) | The library is packaged and released on PyPI. |
| 3. | Final Source Code | [Source](https://github.com/Chainscore/dot-ring/tree/master) | Final version of the library with refined APIs and full feature set. |

**Additional Information**
> Any further comments on the milestone that you would like to share with us.

**Key Achievements**
1. **PyPI Release**: Successfully published the `dot-ring` package to the Python Package Index.
2. **Research Contribution**: Completed a research paper advancing the field of Ring VRFs and Bandersnatch crypto.
3. **Performance**: Significant performance improvements in curve arithmetic and proof generation, comparable with the ark-vrf rust implementation.
4. **Developer Docs**: Full developer documentation generated for the entire API, with examples and explainations.

**Instructions for Reviewers**
- To run tests: `uv run pytest tests/`
- To verifying PyPI package: `pip install dot-ring`