Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add pieces verification to farmers. #725

Merged
merged 19 commits into from Aug 4, 2022
Merged
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
926372a
subspace-rpc: Introduce `records_root` endpoint.
shamil-gadelshin Jul 27, 2022
1ea616b
farmer: Introduce pieces_verification module.
shamil-gadelshin Jul 27, 2022
7743d25
farmer: Implement rpc_client method.
shamil-gadelshin Jul 27, 2022
673fb47
farmer: Add pieces verification to DSN sync.
shamil-gadelshin Jul 27, 2022
3d901b5
farmer: Fix review comments.
shamil-gadelshin Jul 27, 2022
ef4f9cf
farmer: Refactor `verify_pieces_at_blockchain` method.
shamil-gadelshin Jul 27, 2022
22011d8
subspace-rpc: Add records_roots request batching.
shamil-gadelshin Jul 28, 2022
79b59b2
Merge branch 'main' into verify-pieces
shamil-gadelshin Jul 28, 2022
8ec51dc
farmer: Fix farmer side of the `records_root` call.
shamil-gadelshin Jul 28, 2022
fb1687f
farmer: Fix review comments (tracing errors).
shamil-gadelshin Jul 28, 2022
a34268a
farmer: Fix minor review comments.
shamil-gadelshin Jul 28, 2022
7ead01d
Modify FarmerProtocolInfo structure.
shamil-gadelshin Jul 29, 2022
25982e1
Add a limit for a RPC records_roots call.
shamil-gadelshin Jul 29, 2022
e4ae0ce
farmer: Fix pieces verifcation formula.
shamil-gadelshin Jul 29, 2022
7d1cc50
farmer: Move rpc_client_* files to a new folder.
shamil-gadelshin Jul 29, 2022
c866ea7
Merge branch 'main' into verify-pieces
shamil-gadelshin Jul 29, 2022
790f371
Fix review comments.
shamil-gadelshin Aug 1, 2022
8538361
Merge branch 'main' into verify-pieces
shamil-gadelshin Aug 1, 2022
7d54abb
Merge branch 'main' into verify-pieces
shamil-gadelshin Aug 4, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
24 changes: 16 additions & 8 deletions crates/sc-consensus-subspace-rpc/src/lib.rs
Expand Up @@ -98,8 +98,8 @@ pub trait SubspaceRpcApi {
#[method(name = "subspace_acknowledgeArchivedSegment")]
async fn acknowledge_archived_segment(&self, segment_index: u64) -> RpcResult<()>;

#[method(name = "subspace_recordsRoot")]
async fn records_root(&self, segment_index: u64) -> RpcResult<Option<Sha256Hash>>;
#[method(name = "subspace_recordsRoots")]
async fn records_roots(&self, segment_indexes: Vec<u64>) -> RpcResult<Vec<Option<Sha256Hash>>>;
}

#[derive(Default)]
Expand Down Expand Up @@ -519,18 +519,26 @@ where
Ok(())
}

async fn records_root(&self, segment_index: u64) -> RpcResult<Option<Sha256Hash>> {
async fn records_roots(&self, segment_indexes: Vec<u64>) -> RpcResult<Vec<Option<Sha256Hash>>> {
let runtime_api = self.client.runtime_api();
let best_block_id = BlockId::Hash(self.client.info().best_hash);

let records_root = runtime_api.records_root(&best_block_id, segment_index);
let records_root_result: Result<Vec<_>, JsonRpseeError> = segment_indexes
.into_iter()
.map(|idx| {
runtime_api.records_root(&best_block_id, idx).map_err(|_| {
JsonRpseeError::Custom("Internal error during `records_root` call".to_string())
})
})
.collect();

records_root.map_err(|error| {
if let Err(ref err) = records_root_result {
error!(
"Failed to get data from runtime API (records_root): {}",
error
err
i1i1 marked this conversation as resolved.
Show resolved Hide resolved
);
JsonRpseeError::Custom("Internal error during `records_root` call".to_string())
})
}

records_root_result
}
}