From eebc87b48bc3338a085a325dc7d7f63db084d0fd Mon Sep 17 00:00:00 2001 From: librelois <elois@ifee.fr> Date: Sun, 17 Nov 2019 22:36:55 +0100 Subject: [PATCH] [feat] gva: block: add field pow_min --- lib/dubp/block-doc/src/block.rs | 8 ++++++++ lib/dubp/block-doc/src/block/v10.rs | 3 +++ lib/modules/gva/resources/schema.gql | 1 + lib/modules/gva/src/schema/entities/block.rs | 6 ++++++ lib/modules/gva/src/schema/queries/block.rs | 4 +++- lib/modules/gva/src/schema/queries/current.rs | 4 +++- 6 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/dubp/block-doc/src/block.rs b/lib/dubp/block-doc/src/block.rs index 0364e451..7ca98b4a 100644 --- a/lib/dubp/block-doc/src/block.rs +++ b/lib/dubp/block-doc/src/block.rs @@ -77,6 +77,8 @@ pub trait BlockDocumentTrait { fn issuers_count(&self) -> usize; /// Get block number fn number(&self) -> BlockNumber; + /// Get common difficulty (PoW) + fn pow_min(&self) -> usize; /// Get previous hash fn previous_hash(&self) -> Option<Hash>; /// Get previous blockstamp @@ -171,6 +173,12 @@ impl BlockDocumentTrait for BlockDocument { } } #[inline] + fn pow_min(&self) -> usize { + match self { + BlockDocument::V10(block) => block.pow_min(), + } + } + #[inline] fn previous_blockstamp(&self) -> Blockstamp { match self { BlockDocument::V10(block) => block.previous_blockstamp(), diff --git a/lib/dubp/block-doc/src/block/v10.rs b/lib/dubp/block-doc/src/block/v10.rs index cbf00fbf..893807ce 100644 --- a/lib/dubp/block-doc/src/block/v10.rs +++ b/lib/dubp/block-doc/src/block/v10.rs @@ -276,6 +276,9 @@ Transactions:{transactions} fn number(&self) -> BlockNumber { self.number } + fn pow_min(&self) -> usize { + self.pow_min + } fn previous_blockstamp(&self) -> Blockstamp { if self.number.0 > 0 { Blockstamp { diff --git a/lib/modules/gva/resources/schema.gql b/lib/modules/gva/resources/schema.gql index f3808c35..163060c7 100644 --- a/lib/modules/gva/resources/schema.gql +++ b/lib/modules/gva/resources/schema.gql @@ -54,4 +54,5 @@ type Block { number: Int! hash: String!, commonTime: DateTimeUtc! + powMin: Int! } diff --git a/lib/modules/gva/src/schema/entities/block.rs b/lib/modules/gva/src/schema/entities/block.rs index 3a2900a3..fee7d248 100644 --- a/lib/modules/gva/src/schema/entities/block.rs +++ b/lib/modules/gva/src/schema/entities/block.rs @@ -30,6 +30,7 @@ pub struct Block { number: i32, hash: String, common_time: NaiveDateTime, + pow_min: i32, } impl super::super::BlockFields for Block { @@ -56,6 +57,10 @@ impl super::super::BlockFields for Block { fn field_common_time(&self, _executor: &Executor<'_, Context>) -> FieldResult<&NaiveDateTime> { Ok(&self.common_time) } + + fn field_pow_min(&self, _executor: &Executor<'_, Context>) -> FieldResult<&i32> { + Ok(&self.pow_min) + } } impl Block { @@ -71,6 +76,7 @@ impl Block { .unwrap_or_else(|| fatal_error!("DbBlock without hash.")) .to_string(), common_time: NaiveDateTime::from_timestamp(db_block.block.common_time() as i64, 0), + pow_min: db_block.block.pow_min() as i32, } } } diff --git a/lib/modules/gva/src/schema/queries/block.rs b/lib/modules/gva/src/schema/queries/block.rs index 73547478..4ad02dd8 100644 --- a/lib/modules/gva/src/schema/queries/block.rs +++ b/lib/modules/gva/src/schema/queries/block.rs @@ -72,6 +72,7 @@ mod tests { Hash::default(), ); block.issuers = vec![pubkey('B')]; + block.pow_min = 70; Ok(Some(DbBlock { block: BlockDocument::V10(block), expire_certs: None, @@ -96,7 +97,7 @@ mod tests { tests::test_gql_query( schema, - "{ block(number: 42) { commonTime, currency, hash, issuer, number, version } }", + "{ block(number: 42) { commonTime, currency, hash, issuer, number, powMin, version } }", json!({ "data": { "block": { @@ -105,6 +106,7 @@ mod tests { "hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "issuer": "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "number": 42, + "powMin": 70, "version": 10 } } diff --git a/lib/modules/gva/src/schema/queries/current.rs b/lib/modules/gva/src/schema/queries/current.rs index 309bc56d..771e750e 100644 --- a/lib/modules/gva/src/schema/queries/current.rs +++ b/lib/modules/gva/src/schema/queries/current.rs @@ -60,6 +60,7 @@ mod tests { Hash::default(), ); current_block.issuers = vec![pubkey('B')]; + current_block.pow_min = 70; Ok(Some(DbBlock { block: BlockDocument::V10(current_block), expire_certs: None, @@ -70,7 +71,7 @@ mod tests { tests::test_gql_query( schema, - "{ current { commonTime, currency, hash, issuer, number, version } }", + "{ current { commonTime, currency, hash, issuer, number, powMin, version } }", json!({ "data": { "current": { @@ -79,6 +80,7 @@ mod tests { "hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "issuer": "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "number": 42, + "powMin": 70, "version": 10 } } -- GitLab