Update DIPs regarding use of BLS12-381-reversed (#25)

* Update bls_signature_scheme.md with BLS12-381-reversed

* Update DIP3/DIP4 to use BLS operator keys

* Update DIP5 to use BLS keys for user keys

Also add the "Size" column to all serialization specs to align with other DIPs.

* Update BLS primitives serialization size in DIP6/7

* DIP3 - Correct PubKeyOperator type

* DIP4 - Correct PubKeyOperator type

* Remove trailing e from integere
This commit is contained in:
Alexander Block 2018-11-09 18:42:42 +01:00 committed by thephez
parent b1b56aaefd
commit 52aee60048
6 changed files with 60 additions and 63 deletions

View file

@ -110,23 +110,26 @@ We chose to enforce distinct messages when signing with a secret key. Dashs i
## BLS Curves used
The BLS signature scheme requires pairing-friendly curves to be used. Multiple curves with different security, performance and space characteristics have been proposed by different parties. At the time this document was written, no decision had been made as to which curve would be used.
However, the choice of the specific curve should have no influence on the scheme itself, how BLS is used or what is possible.
This document will be updated when a decision has been made on which curve to use.
The BLS signature scheme requires pairing-friendly curves to be used, of which only a few suitable exist. Dash is
using the BLS12-381 with reversed G1 and G2 groups. A specification can be found in the Chia [bls-signatures](https://github.com/Chia-Network/bls-signatures/blob/master/SPEC.md)
repository.
## Serialization format of BLS primitives
It is necessary to serialize BLS primitives into a byte representation so that they can be used inside other serialized data structures. How this is performed depends on the curves and libraries used. This has not been defined yet and this document will be updated later.
It is necessary to serialize BLS primitives into a byte representation so that they can be used inside other serialized data structures.
The serialization format is described in the Chia [bls-signatures](https://github.com/Chia-Network/bls-signatures/blob/master/SPEC.md)
repository.
Until then, all DIPs will use placeholders types for the BLS primitives and assume a fixed size. These placeholder type are:
The size of individual BLS primitives is fixed:
| Type | Size | Description |
| -- | -- | -- |
| BLSSecKey | 32 | BLS secret key
| BLSPubKey |64 | BLS public key
| BLSSig |32 | BLS signature
| BLSPubKey | 48 | BLS public key
| BLSSig | 96 | BLS signature
Please note that there is no length field before the primitives serialized data. This is different from ECDSA signatures
where a compact size integer is prepended.
## Copyright