mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-15 13:51:11 +00:00
Upgrade to libp2p 0.51.3 (#13587)
* client/network: upgrade to libp2p 0.51.0 * make discovery.rs compile * make peer_info.rs compile * changes to notifications and request-response proto * make service.rs compile * towards making request_responses.rs compile * make request_responses.rs compile * make request_responses.rs compile * fix notifications/behaviour.rs tests * fix warnings * remove old code * allow deprecated code (temporary) * upgrade to libp2p 0.51.1 * add TODO for behaviour tests * return empty vec if peer_id is absent https://github.com/paritytech/substrate/pull/13587#discussion_r1141695167 fyi: I don't really know what the old behaviour was. * update comment to reflect new defaults Closes #13338 * Revert "update comment to reflect new defaults" This reverts commit 7a981abd69308e9d522ec94905f181439a1b1dba. * remove config.rs (from wrong merge) * upgrade to libp2p 0.51.2 * fix formatting * use handle_pending_outbound_connection in networt_state RPC * update deps * use re-exports when we use other libp2p packages * Apply suggestions from code review Co-authored-by: Dmitry Markin <dmitry@markin.tech> * format code * handle potential errors in network_state RPC * only update libp2p crate * update libp2p-core * fix docs * use libp2p-identity instead of libp2p where it's possible. libp2p-identity is much smaller, hence makes sense to use it instead of larger libp2p crate. * Update client/network/src/discovery.rs Co-authored-by: Aaro Altonen <48052676+altonen@users.noreply.github.com> * update Cargo.lock * add comment for per_connection_event_buffer_size current value is somewhat arbitrary and needs to be tweaked depending on memory usage and network worker sleep stats. * fix link format * update Cargo.lock * upgrade to libp2p 0.51.3 * deprecate mplex * Revert "deprecate mplex" This reverts commit 9e25820e706e464a0e962a8604861fcb2a7641eb. * Revert "upgrade to libp2p 0.51.3" This reverts commit 6544dd4138e2f89517bd7c7281fc78a638ec7040. * use new libp2p version in `statement` crate * pin version temporarily * libp2p 0.51.3 * deprecate mplex * deprecate legacy noise handshake * fix build error * update libp2p-identity * enable libp2p-identity:ed25519 feature in sc-consensus * enable ed25519 for peerset as well --------- Co-authored-by: Dmitry Markin <dmitry@markin.tech> Co-authored-by: Aaro Altonen <48052676+altonen@users.noreply.github.com> Co-authored-by: parity-processbot <>
This commit is contained in:
@@ -56,7 +56,7 @@ pub enum Error {
|
||||
ParsingMultiaddress(#[from] libp2p::core::multiaddr::Error),
|
||||
|
||||
#[error("Failed to parse a libp2p key.")]
|
||||
ParsingLibp2pIdentity(#[from] libp2p::identity::error::DecodingError),
|
||||
ParsingLibp2pIdentity(#[from] libp2p::identity::DecodingError),
|
||||
|
||||
#[error("Failed to sign: {0}.")]
|
||||
CannotSign(String),
|
||||
|
||||
@@ -25,8 +25,9 @@ use crate::{
|
||||
};
|
||||
|
||||
use futures::{channel::mpsc::channel, executor::LocalPool, task::LocalSpawn};
|
||||
use libp2p::core::{
|
||||
multiaddr::{Multiaddr, Protocol},
|
||||
use libp2p::{
|
||||
core::multiaddr::{Multiaddr, Protocol},
|
||||
identity::ed25519,
|
||||
PeerId,
|
||||
};
|
||||
use std::{collections::HashSet, sync::Arc};
|
||||
@@ -86,18 +87,16 @@ fn get_addresses_and_authority_id() {
|
||||
fn cryptos_are_compatible() {
|
||||
use sp_core::crypto::Pair;
|
||||
|
||||
let libp2p_secret = libp2p::identity::Keypair::generate_ed25519();
|
||||
let libp2p_public = libp2p_secret.public();
|
||||
let libp2p_keypair = ed25519::Keypair::generate();
|
||||
let libp2p_public = libp2p_keypair.public();
|
||||
|
||||
let sp_core_secret = {
|
||||
let libp2p::identity::Keypair::Ed25519(libp2p_ed_secret) = libp2p_secret.clone();
|
||||
sp_core::ed25519::Pair::from_seed_slice(&libp2p_ed_secret.secret().as_ref()).unwrap()
|
||||
};
|
||||
let sp_core_secret =
|
||||
{ sp_core::ed25519::Pair::from_seed_slice(&libp2p_keypair.secret().as_ref()).unwrap() };
|
||||
let sp_core_public = sp_core_secret.public();
|
||||
|
||||
let message = b"we are more powerful than not to be better";
|
||||
|
||||
let libp2p_signature = libp2p_secret.sign(message).unwrap();
|
||||
let libp2p_signature = libp2p_keypair.sign(message);
|
||||
let sp_core_signature = sp_core_secret.sign(message); // no error expected...
|
||||
|
||||
assert!(sp_core::ed25519::Pair::verify(
|
||||
|
||||
@@ -34,11 +34,9 @@ use futures::{channel::mpsc, future, stream::Fuse, FutureExt, Stream, StreamExt}
|
||||
use addr_cache::AddrCache;
|
||||
use codec::{Decode, Encode};
|
||||
use ip_network::IpNetwork;
|
||||
use libp2p::{
|
||||
core::multiaddr,
|
||||
multihash::{Multihash, MultihashDigest},
|
||||
Multiaddr, PeerId,
|
||||
};
|
||||
use libp2p::{core::multiaddr, identity::PublicKey, multihash::Multihash, Multiaddr, PeerId};
|
||||
use multihash::{Code, MultihashDigest};
|
||||
|
||||
use log::{debug, error, log_enabled};
|
||||
use prometheus_endpoint::{register, Counter, CounterVec, Gauge, Opts, U64};
|
||||
use prost::Message;
|
||||
@@ -551,10 +549,8 @@ where
|
||||
// properly signed by the owner of the PeerId
|
||||
|
||||
if let Some(peer_signature) = peer_signature {
|
||||
let public_key = libp2p::identity::PublicKey::from_protobuf_encoding(
|
||||
&peer_signature.public_key,
|
||||
)
|
||||
.map_err(Error::ParsingLibp2pIdentity)?;
|
||||
let public_key = PublicKey::try_decode_protobuf(&peer_signature.public_key)
|
||||
.map_err(Error::ParsingLibp2pIdentity)?;
|
||||
let signature = Signature { public_key, bytes: peer_signature.signature };
|
||||
|
||||
if !signature.verify(record, &remote_peer_id) {
|
||||
@@ -625,7 +621,7 @@ pub trait NetworkProvider: NetworkDHTProvider + NetworkStateInfo + NetworkSigner
|
||||
impl<T> NetworkProvider for T where T: NetworkDHTProvider + NetworkStateInfo + NetworkSigner {}
|
||||
|
||||
fn hash_authority_id(id: &[u8]) -> KademliaKey {
|
||||
KademliaKey::new(&libp2p::multihash::Code::Sha2_256.digest(id).digest())
|
||||
KademliaKey::new(&Code::Sha2_256.digest(id).digest())
|
||||
}
|
||||
|
||||
// Makes sure all values are the same and returns it
|
||||
@@ -662,7 +658,7 @@ fn sign_record_with_peer_id(
|
||||
let signature = network
|
||||
.sign_with_local_identity(serialized_record)
|
||||
.map_err(|e| Error::CannotSign(format!("{} (network packet)", e)))?;
|
||||
let public_key = signature.public_key.to_protobuf_encoding();
|
||||
let public_key = signature.public_key.encode_protobuf();
|
||||
let signature = signature.bytes;
|
||||
Ok(schema::PeerSignature { signature, public_key })
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ mod schema_v1 {
|
||||
}
|
||||
|
||||
use super::*;
|
||||
use libp2p::{multiaddr::Multiaddr, PeerId};
|
||||
use libp2p::{identity::Keypair, multiaddr::Multiaddr, PeerId};
|
||||
use prost::Message;
|
||||
|
||||
#[test]
|
||||
@@ -55,7 +55,7 @@ fn v2_decodes_v1() {
|
||||
|
||||
#[test]
|
||||
fn v1_decodes_v2() {
|
||||
let peer_secret = libp2p::identity::Keypair::generate_ed25519();
|
||||
let peer_secret = Keypair::generate_ed25519();
|
||||
let peer_public = peer_secret.public();
|
||||
let peer_id = peer_public.to_peer_id();
|
||||
let multiaddress: Multiaddr =
|
||||
@@ -67,7 +67,7 @@ fn v1_decodes_v2() {
|
||||
let record_v2 = AuthorityRecord { addresses: vec_addresses.clone() };
|
||||
let mut vec_record_v2 = vec![];
|
||||
record_v2.encode(&mut vec_record_v2).unwrap();
|
||||
let vec_peer_public = peer_public.to_protobuf_encoding();
|
||||
let vec_peer_public = peer_public.encode_protobuf();
|
||||
let peer_signature_v2 =
|
||||
PeerSignature { public_key: vec_peer_public, signature: vec_peer_signature };
|
||||
let signed_record_v2 = SignedAuthorityRecord {
|
||||
|
||||
@@ -31,7 +31,7 @@ use futures::{
|
||||
};
|
||||
use libp2p::{
|
||||
core::multiaddr,
|
||||
identity::{error::SigningError, Keypair},
|
||||
identity::{Keypair, SigningError},
|
||||
kad::record::Key as KademliaKey,
|
||||
PeerId,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user