This repository has been archived by the owner on Nov 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
grandpa-rpc: use FinalityProofProvider to check finality for rpc (#6215)
* grandpa-rpc: use FinalityProofProvider to check finality for rpc * grandpa-rpc: minor tidy * grandpa-rpc: remove dyn FinalityProofProvider * grandpa-rpc: remove unused dependencies * node: move finality_proof_provider setup * grandpa-rpc: print error reported by finality_proof_provider * grandpa-rpc: add note about unnecessary encode/decode * grandpa-rpc: dont encode/decode and use correct hash * grandpa-rpc: set_id is optional * grandpa-rpc: create test for prove_finality * grandpa-rpc: set visibility back to how it was * grandpa-rpc: remove unused dependency * grandpa-rpc: minor tidy * grandpa: doc strings * grandpa-rpc: rename to prove_finality * grandpa-rpc: use current set id if none is provided * grandpa-rpc: remove unnecessary check in test * node: group finality_proof_provider in rpc_setup * grandpa: make prove_finality concrete in FinalityProofProvider * grandpa-rpc: wrap finality output in struct and store as Bytes * grandpa-rpc: exhaustive error codes and wrap * grandpa-rpc: let prove_finality take a range instead of a starting point * grandpa-rpc: fix test for changed API * grandpa-rpc: fix line length * grandpa: fix reviewer nits * node/rpc: fix reviewer comments
- Loading branch information
Showing
10 changed files
with
263 additions
and
31 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
// This file is part of Substrate. | ||
|
||
// Copyright (C) 2020 Parity Technologies (UK) Ltd. | ||
// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 | ||
|
||
// This program is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
|
||
// This program is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
|
||
// You should have received a copy of the GNU General Public License | ||
// along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
|
||
use serde::{Serialize, Deserialize}; | ||
|
||
use sc_finality_grandpa::FinalityProofProvider; | ||
use sp_runtime::traits::{Block as BlockT, NumberFor}; | ||
|
||
#[derive(Serialize, Deserialize)] | ||
pub struct EncodedFinalityProofs(pub sp_core::Bytes); | ||
|
||
/// Local trait mainly to allow mocking in tests. | ||
pub trait RpcFinalityProofProvider<Block: BlockT> { | ||
/// Return finality proofs for the given authorities set id, if it is provided, otherwise the | ||
/// current one will be used. | ||
fn rpc_prove_finality( | ||
&self, | ||
begin: Block::Hash, | ||
end: Block::Hash, | ||
authorities_set_id: u64, | ||
) -> Result<Option<EncodedFinalityProofs>, sp_blockchain::Error>; | ||
} | ||
|
||
impl<B, Block> RpcFinalityProofProvider<Block> for FinalityProofProvider<B, Block> | ||
where | ||
Block: BlockT, | ||
NumberFor<Block>: finality_grandpa::BlockNumberOps, | ||
B: sc_client_api::backend::Backend<Block> + Send + Sync + 'static, | ||
{ | ||
fn rpc_prove_finality( | ||
&self, | ||
begin: Block::Hash, | ||
end: Block::Hash, | ||
authorities_set_id: u64, | ||
) -> Result<Option<EncodedFinalityProofs>, sp_blockchain::Error> { | ||
self.prove_finality(begin, end, authorities_set_id) | ||
.map(|x| x.map(|y| EncodedFinalityProofs(y.into()))) | ||
} | ||
} |
Oops, something went wrong.