From 5a6e90428beeac34b773ea2ef157a01e5573394f Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Mon, 30 Mar 2020 09:29:29 +1100 Subject: [PATCH] Ensure attestations are created with empty signature (#960) * Ensure attestations are created with empty sig * Update docs --- beacon_node/beacon_chain/src/beacon_chain.rs | 2 +- beacon_node/beacon_chain/tests/attestation_production.rs | 2 +- book/src/http_validator.md | 2 +- eth2/utils/bls/src/aggregate_signature.rs | 7 +++++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index 1109dd2ab..9a2a3fad5 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -756,7 +756,7 @@ impl BeaconChain { root: target_root, }, }, - signature: AggregateSignature::new(), + signature: AggregateSignature::empty_signature(), }) } diff --git a/beacon_node/beacon_chain/tests/attestation_production.rs b/beacon_node/beacon_chain/tests/attestation_production.rs index 15fece863..3b84a78ff 100644 --- a/beacon_node/beacon_chain/tests/attestation_production.rs +++ b/beacon_node/beacon_chain/tests/attestation_production.rs @@ -106,7 +106,7 @@ fn produces_attestations() { ); assert_eq!( attestation.signature, - AggregateSignature::new(), + AggregateSignature::empty_signature(), "bad signature" ); assert_eq!(data.index, index, "bad index"); diff --git a/book/src/http_validator.md b/book/src/http_validator.md index 633bbffa2..da0d4bbbd 100644 --- a/book/src/http_validator.md +++ b/book/src/http_validator.md @@ -263,7 +263,7 @@ Returns a `Attestation` object with a default signature. The `signature` field s "root": "0xaefd23b384994dc0c1a6b77836bdb2f24f209ebfe6c4819324d9685f4a43b4e1" } }, - "signature": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "signature": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } ``` diff --git a/eth2/utils/bls/src/aggregate_signature.rs b/eth2/utils/bls/src/aggregate_signature.rs index b3dc46025..8ea582a4c 100644 --- a/eth2/utils/bls/src/aggregate_signature.rs +++ b/eth2/utils/bls/src/aggregate_signature.rs @@ -32,9 +32,12 @@ impl AggregateSignature { /// Add (aggregate) a signature to the `AggregateSignature`. pub fn add(&mut self, signature: &Signature) { - if !self.is_empty { - self.aggregate_signature.add(signature.as_raw()) + if self.is_empty { + self.aggregate_signature = RawAggregateSignature::new(); + self.is_empty = false; } + + self.aggregate_signature.add(signature.as_raw()) } /// Add (aggregate) another `AggregateSignature`.