Skip to content
This repository has been archived by the owner on Feb 23, 2022. It is now read-only.

RFC: adopt zip 215 #144

Merged
merged 9 commits into from
Nov 5, 2020
Merged
Show file tree
Hide file tree
Changes from 2 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
41 changes: 41 additions & 0 deletions rfc/003-ed25519-verification.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# RFC 003: Ed25519 Verification

## Changelog

- August 21, 2020: initialized

## Author(s)

- Marko (@marbar3778)

## Context

Ed25519 keys are the only supported key types for Tendermint validators currently. Tendermint-Go wraps the ed25519 key implementation from the go standard library. As more clients are implemented to communicate with the canonical Tendermint implementation (Tendermint-Go) different implementations of ed25519 will be used. Due to [RFC 8032](https://www.rfc-editor.org/rfc/rfc8032.html) not guaranteeing implementation compatibility, Tendermint clients must to come to an agreement of how to guarantee implementation compatibility. [Zcash](https://z.cash/) has multiple implementations of their client and have identified this as a problem as well. The team at Zcash has made a proposal to address this issue, [Zcash improvement proposal 215](https://zips.z.cash/zip-0215).

## Proposal

- Tendermint-Go would adopt [hdevalence/ed25519consensus](https://github.com/hdevalence/ed25519consensus).
- This library is implemented as an extension of the go standard library one.
- Tendermint-rs would adopt [ed25519-zebra](https://github.com/ZcashFoundation/ed25519-zebra)
- related [issue](https://github.com/informalsystems/tendermint-rs/issues/355)

As signature verification is one of the major bottlenecks of Tendermint-go, if ZIP 215 is adopted batch verification of signatures will be safe in consensus critical areas.
tac0turtle marked this conversation as resolved.
Show resolved Hide resolved

## Status

Proposed

## Consequences

### Positive

- Batch verification
tac0turtle marked this conversation as resolved.
Show resolved Hide resolved
- Signature verification across implementations

### Negative

### Neutral

tac0turtle marked this conversation as resolved.
Show resolved Hide resolved
## References

> Are there any relevant PR comments, issues that led up to this, or articles referenced for why we made the given design choice? If so link them here!
2 changes: 2 additions & 0 deletions rfc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,5 @@ Some RFC's will be presented at a Tendermint Dev Session. If you are an outside
## Table of Contents

[001-block-retention](./001-block-retention.md)
[002-nonzero-genesis](./002-nonzero-genesis.md)
[003-ed25519-verification](./003-ed25519-verification.md)