Subscribe to all required gossipsub topics
This commit is contained in:
parent
ce50616032
commit
d83fa67068
@ -6,9 +6,14 @@ use serde_derive::{Deserialize, Serialize};
|
|||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
/// The beacon node topic string to subscribe to.
|
/// The gossipsub topic names.
|
||||||
|
pub const TOPIC_PREFIX: &str = "eth2";
|
||||||
|
pub const TOPIC_ENCODING_POSTFIX: &str = "ssz";
|
||||||
pub const BEACON_BLOCK_TOPIC: &str = "beacon_block";
|
pub const BEACON_BLOCK_TOPIC: &str = "beacon_block";
|
||||||
pub const BEACON_ATTESTATION_TOPIC: &str = "beacon_attestation";
|
pub const BEACON_ATTESTATION_TOPIC: &str = "beacon_attestation";
|
||||||
|
pub const VOLUNTARY_EXIT_TOPIC: &str = "voluntary_exit";
|
||||||
|
pub const PROPOSER_SLASHING_TOPIC: &str = "proposer_slashing";
|
||||||
|
pub const ATTESTER_SLASHING_TOPIC: &str = "attester_slashing";
|
||||||
pub const SHARD_TOPIC_PREFIX: &str = "shard";
|
pub const SHARD_TOPIC_PREFIX: &str = "shard";
|
||||||
|
|
||||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||||
@ -63,10 +68,10 @@ impl Default for Config {
|
|||||||
discovery_address: "127.0.0.1".parse().expect("valid ip address"),
|
discovery_address: "127.0.0.1".parse().expect("valid ip address"),
|
||||||
discovery_port: 9000,
|
discovery_port: 9000,
|
||||||
max_peers: 10,
|
max_peers: 10,
|
||||||
//TODO: Set realistic values for production
|
// Note: The topics by default are sent as plain strings. Hashes are an optional
|
||||||
// Note: This defaults topics to plain strings. Not hashes
|
// parameter.
|
||||||
gs_config: GossipsubConfigBuilder::new()
|
gs_config: GossipsubConfigBuilder::new()
|
||||||
.max_transmit_size(1_000_000)
|
.max_transmit_size(1_048_576)
|
||||||
.heartbeat_interval(Duration::from_secs(20))
|
.heartbeat_interval(Duration::from_secs(20))
|
||||||
.build(),
|
.build(),
|
||||||
boot_nodes: vec![],
|
boot_nodes: vec![],
|
||||||
|
@ -10,9 +10,7 @@ pub mod rpc;
|
|||||||
mod service;
|
mod service;
|
||||||
|
|
||||||
pub use behaviour::PubsubMessage;
|
pub use behaviour::PubsubMessage;
|
||||||
pub use config::{
|
pub use config::{Config as NetworkConfig, *};
|
||||||
Config as NetworkConfig, BEACON_ATTESTATION_TOPIC, BEACON_BLOCK_TOPIC, SHARD_TOPIC_PREFIX,
|
|
||||||
};
|
|
||||||
pub use libp2p::gossipsub::{Topic, TopicHash};
|
pub use libp2p::gossipsub::{Topic, TopicHash};
|
||||||
pub use libp2p::multiaddr;
|
pub use libp2p::multiaddr;
|
||||||
pub use libp2p::Multiaddr;
|
pub use libp2p::Multiaddr;
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
use crate::behaviour::{Behaviour, BehaviourEvent, PubsubMessage};
|
use crate::behaviour::{Behaviour, BehaviourEvent, PubsubMessage};
|
||||||
|
use crate::config::*;
|
||||||
use crate::error;
|
use crate::error;
|
||||||
use crate::multiaddr::Protocol;
|
use crate::multiaddr::Protocol;
|
||||||
use crate::rpc::RPCEvent;
|
use crate::rpc::RPCEvent;
|
||||||
use crate::NetworkConfig;
|
use crate::NetworkConfig;
|
||||||
use crate::{Topic, TopicHash};
|
use crate::{Topic, TopicHash};
|
||||||
use crate::{BEACON_ATTESTATION_TOPIC, BEACON_BLOCK_TOPIC};
|
|
||||||
use futures::prelude::*;
|
use futures::prelude::*;
|
||||||
use futures::Stream;
|
use futures::Stream;
|
||||||
use libp2p::core::{
|
use libp2p::core::{
|
||||||
@ -87,10 +87,24 @@ impl Service {
|
|||||||
|
|
||||||
// subscribe to default gossipsub topics
|
// subscribe to default gossipsub topics
|
||||||
let mut topics = vec![];
|
let mut topics = vec![];
|
||||||
//TODO: Handle multiple shard attestations. For now we simply use a separate topic for
|
|
||||||
// attestations
|
/* Here we subscribe to all the required gossipsub topics required for interop.
|
||||||
topics.push(Topic::new(BEACON_ATTESTATION_TOPIC.into()));
|
* The topic builder adds the required prefix and postfix to the hardcoded topics that we
|
||||||
topics.push(Topic::new(BEACON_BLOCK_TOPIC.into()));
|
* must subscribe to.
|
||||||
|
*/
|
||||||
|
let topic_builder = |topic| {
|
||||||
|
Topic::new(format!(
|
||||||
|
"/{}/{}/{}",
|
||||||
|
TOPIC_PREFIX, topic, TOPIC_ENCODING_POSTFIX,
|
||||||
|
))
|
||||||
|
};
|
||||||
|
topics.push(topic_builder(BEACON_BLOCK_TOPIC));
|
||||||
|
topics.push(topic_builder(BEACON_ATTESTATION_TOPIC));
|
||||||
|
topics.push(topic_builder(VOLUNTARY_EXIT_TOPIC));
|
||||||
|
topics.push(topic_builder(PROPOSER_SLASHING_TOPIC));
|
||||||
|
topics.push(topic_builder(ATTESTER_SLASHING_TOPIC));
|
||||||
|
|
||||||
|
// Add any topics specified by the user
|
||||||
topics.append(
|
topics.append(
|
||||||
&mut config
|
&mut config
|
||||||
.topics
|
.topics
|
||||||
|
Loading…
Reference in New Issue
Block a user