diff --git a/node/src/endpoint_gossip/handler.rs b/node/src/endpoint_gossip/handler.rs
index e7c6a6dc78a229b2b06dd61a3e50e0eccf020dfe..2491298ca85b374fd04247add61db155bf1dfe9e 100644
--- a/node/src/endpoint_gossip/handler.rs
+++ b/node/src/endpoint_gossip/handler.rs
@@ -1,5 +1,5 @@
 use crate::endpoint_gossip::{
-    types::validation_result::DuniterStreamValidationResult, DuniterEndpoint, Peer, Peering,
+    types::validation_result::DuniterStreamValidationResult, DuniterEndpoints, Peer, Peering,
     PROPAGATE_TIMEOUT,
 };
 use codec::{Decode, Encode};
@@ -22,7 +22,7 @@ pub fn build<
     network: N,
     rpc_sink: TracingUnboundedSender<DuniterPeeringEvent>,
     command_rx: Option<TracingUnboundedReceiver<DuniterPeeringCommand>>,
-    endpoints: Vec<DuniterEndpoint>,
+    endpoints: DuniterEndpoints,
 ) -> GossipsHandler<B, N> {
     let local_peer_id = network.local_peer_id();
 
diff --git a/node/src/endpoint_gossip/mod.rs b/node/src/endpoint_gossip/mod.rs
index 593ecc0e74ab8de4982b811a9a725191a02cd2e7..3e6513e59a30ecfc3394619319399d4474a06c52 100644
--- a/node/src/endpoint_gossip/mod.rs
+++ b/node/src/endpoint_gossip/mod.rs
@@ -6,6 +6,7 @@ mod types;
 
 use crate::endpoint_gossip::duniter_peering_protocol_name::NAME;
 use codec::{Decode, Encode};
+use frame_benchmarking::__private::traits::ConstU32;
 use sc_network::{
     config::{PeerStoreProvider, SetConfig},
     types::ProtocolName,
@@ -13,6 +14,7 @@ use sc_network::{
 };
 use serde::{Deserialize, Serialize};
 use sp_api::__private::BlockT;
+use sp_core::bounded_vec::BoundedVec;
 use std::{sync::Arc, time};
 
 pub mod well_known_endpoint_types {
@@ -20,14 +22,6 @@ pub mod well_known_endpoint_types {
     pub const SQUID: &str = "squid";
 }
 
-#[derive(Debug, Encode, Decode)]
-enum EndpointMsg {
-    /// RPC endpoint of Duniter
-    RpcEndpoint(String),
-    /// GraphQL endpoint of Squid
-    SquidEndpoint(String),
-}
-
 pub struct DuniterPeeringParams {
     /// Handle that is used to communicate with `sc_network::Notifications`.
     pub notification_service: Box<dyn NotificationService>,
@@ -104,7 +98,9 @@ pub struct DuniterEndpoint {
     pub address: String,
 }
 
+pub type DuniterEndpoints = BoundedVec<DuniterEndpoint, ConstU32<10>>;
+
 #[derive(Encode, Decode, Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
 pub struct Peering {
-    endpoints: Vec<DuniterEndpoint>,
+    endpoints: DuniterEndpoints,
 }
diff --git a/node/src/endpoint_gossip/rpc/state.rs b/node/src/endpoint_gossip/rpc/state.rs
index f86bf03e8be7bfcfff4e88974137031aeff4a395..75d8a2529f7ec51de59dad8df6bf09117aebb122 100644
--- a/node/src/endpoint_gossip/rpc/state.rs
+++ b/node/src/endpoint_gossip/rpc/state.rs
@@ -1,5 +1,5 @@
 use crate::endpoint_gossip::{
-    handler::DuniterPeeringEvent, rpc::data::DuniterPeeringsData, DuniterEndpoint,
+    handler::DuniterPeeringEvent, rpc::data::DuniterPeeringsData, DuniterEndpoints,
 };
 use codec::{Decode, Encode};
 use futures::StreamExt;
@@ -13,7 +13,7 @@ use std::sync::Arc;
 #[derive(Encode, Decode, Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
 pub struct PeeringWithId {
     pub peer_id: String,
-    pub endpoints: Vec<DuniterEndpoint>,
+    pub endpoints: DuniterEndpoints,
 }
 
 #[derive(Clone)]
diff --git a/node/src/endpoint_gossip/rpc/tests.rs b/node/src/endpoint_gossip/rpc/tests.rs
index 38c86f7acfeb2632224281c1d0948ac86f667bf6..258c5882f37e63c70b876f8dccbc63aac62c3f07 100644
--- a/node/src/endpoint_gossip/rpc/tests.rs
+++ b/node/src/endpoint_gossip/rpc/tests.rs
@@ -4,7 +4,7 @@ use crate::endpoint_gossip::{
         state::{DuniterPeeringsState, PeeringWithId},
     },
     well_known_endpoint_types::{RPC, SQUID},
-    DuniterEndpoint,
+    DuniterEndpoint, DuniterEndpoints,
 };
 use jsonrpsee::RpcModule;
 
@@ -23,7 +23,7 @@ async fn expose_known_peers() {
     let rpc = setup_new_rpc_with_initial_peerings(vec![
         PeeringWithId {
             peer_id: "12D3KooWRkDXunbB64VegYPCQaitcgtdtEtbsbd7f19nsS7aMjDp".into(),
-            endpoints: vec![
+            endpoints: DuniterEndpoints::truncate_from(vec![
                 DuniterEndpoint {
                     protocol: RPC.into(),
                     address: "/rpc/wss://gdev.example.com".into(),
@@ -32,14 +32,14 @@ async fn expose_known_peers() {
                     protocol: SQUID.into(),
                     address: "/squid/https://squid.gdev.gyroi.de/v1/graphql".into(),
                 },
-            ],
+            ]),
         },
         PeeringWithId {
             peer_id: "12D3KooWFiUBo3Kjiryvrpz8b3kfNVk7baezhab7SHdfafgY7nmN".into(),
-            endpoints: vec![DuniterEndpoint {
+            endpoints: DuniterEndpoints::truncate_from(vec![DuniterEndpoint {
                 protocol: RPC.into(),
                 address: "/rpc/ws://gdev.example.com:9944".into(),
-            }],
+            }]),
         },
     ]);
     let expected_response = r#"{"jsonrpc":"2.0","id":0,"result":{"peerings":[{"peer_id":"12D3KooWRkDXunbB64VegYPCQaitcgtdtEtbsbd7f19nsS7aMjDp","endpoints":[{"protocol":"rpc","address":"/rpc/wss://gdev.example.com"},{"protocol":"squid","address":"/squid/https://squid.gdev.gyroi.de/v1/graphql"}]},{"peer_id":"12D3KooWFiUBo3Kjiryvrpz8b3kfNVk7baezhab7SHdfafgY7nmN","endpoints":[{"protocol":"rpc","address":"/rpc/ws://gdev.example.com:9944"}]}]}}"#.to_string();
diff --git a/node/src/endpoint_gossip/tests.rs b/node/src/endpoint_gossip/tests.rs
index 5e437eb7ed385b03e5c648a8c35d49256646411d..454c0bc6bf1ac5629e91d92bee9a21f14a7bd396 100644
--- a/node/src/endpoint_gossip/tests.rs
+++ b/node/src/endpoint_gossip/tests.rs
@@ -4,7 +4,7 @@ use crate::{
         duniter_peering_protocol_name,
         handler::{DuniterPeeringCommand, DuniterPeeringEvent},
         well_known_endpoint_types::RPC,
-        DuniterEndpoint, Peering,
+        DuniterEndpoint, DuniterEndpoints, Peering,
     },
 };
 use async_channel::Receiver;
@@ -76,10 +76,10 @@ fn ensure_only_one_peering_is_accepted(
         .unbounded_send(DuniterPeeringCommand::SendPeering(
             peer_id_1,
             Peering {
-                endpoints: vec![DuniterEndpoint {
+                endpoints: DuniterEndpoints::truncate_from(vec![DuniterEndpoint {
                     protocol: RPC.into(),
                     address: "gdev.example.com:9944".into(),
-                }],
+                }]),
             },
         ))
         .unwrap();
@@ -188,7 +188,7 @@ fn start_network(net: &mut DuniterPeeringTestNet, peers: usize) -> impl Future<O
             net_service,
             rpc_sink,
             Some(command_rx),
-            vec![],
+            DuniterEndpoints::new(),
         );
         // To send external commands to the handler (for tests or RPC commands).
         net.peer_streams.push(stream);
diff --git a/node/src/service.rs b/node/src/service.rs
index 7290d8bdeafacc6cc320d24e51dcecb8bb207081..79867b0dd96a69a5af28ee456fada22f505ba0dd 100644
--- a/node/src/service.rs
+++ b/node/src/service.rs
@@ -743,7 +743,13 @@ where
         });
     }
 
-    task_manager.spawn_essential_handle().spawn_blocking(
+    let duniter_endpoints = match duniter_endpoints.try_into() {
+        Ok(endpoints) => endpoints,
+        Err(_) => {
+            return Err("Too much Duniter endpoints".into());
+        }
+    };
+    task_manager.spawn_handle().spawn_blocking(
         "duniter-endpoint-gossip-handler",
         Some("networking"),
         crate::endpoint_gossip::handler::build::<Block, _>(