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

Commit

Permalink
initlized rfc 003 for zip 215
Browse files Browse the repository at this point in the history
  • Loading branch information
tac0turtle committed Aug 20, 2020
1 parent 8dd2ed4 commit d7f4c17
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
44 changes: 44 additions & 0 deletions rfc/003-ed25519-verification.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# RFC 003: Ed25519 Verification

## Changelog

- {date}: initialized

## Author(s)

- Marko (@marbar3778)

## Context

Tendermint uses ed25519 in consensus critical ways. As more clients begin appearing which implement the Tendermint spec (tendermint-rs) an agreement on ed25519 signature verification is needed.

[RFC 8032](https://www.rfc-editor.org/rfc/rfc8032.html) leaves space for interpretation for signature validity. This becomes a problem when a different implementation is trying to verify a signature then the one that was used to generate it.

## Proposal

The [Zcash](https://z.cash/) team has identified this as a problem for their client and have written libraries in various languages to help address this. [Zcash improvement proposal 215](https://zips.z.cash/zip-0215) outlines the specification of the approach for signature validity. ZIP 215 explicitly defines the criteria for signature validation.

- Tendermint-go would adopt [hdevalence/ed25519consensus](https://github.com/hdevalence/ed25519consensus).
- 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.

## Status

Proposed

## Consequences

### Positive

- Batch verification
- Signature verification across implementations

### Negative

### Neutral

## 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)

0 comments on commit d7f4c17

Please sign in to comment.