Enum SupportProtocols

Source
pub enum SupportProtocols {
Show 13 variants Ping, Discovery, Identify, Feeler, DisconnectMessage, Sync, RelayV2, RelayV3, Time, Alert, LightClient, Filter, HolePunching,
}
Expand description

All supported protocols

The underlying network of CKB is flexible and complex. The flexibility lies in that it can support any number of protocols. Therefore, it is also relatively complex. Now, CKB has a bunch of protocols open by default, but not all protocols have to be open. In other words, if you want to interact with ckb nodes at the p2p layer, you only need to implement a few core protocols.

Core protocol: identify/discovery/sync/relay

Variants§

§

Ping

Ping: as a health check for ping/pong

§

Discovery

Discovery: used to communicate with any node with any known node address, to build a robust network topology as much as possible.

§

Identify

Identify: the first protocol opened when the nodes are interconnected, used to obtain the features, versions, and observation addresses supported by the other node.

RFC

§

Feeler

Feeler: used to detect whether the address is valid.

RFC Eclipse Attacks on Bitcoin’s Peer-to-Peer Network

§

DisconnectMessage

Disconnect message: used to give the remote node a debug message when the node decides to disconnect. This message must be as quick as possible, otherwise the message may not be sent. So, use a separate protocol to support it.

§

Sync

Sync: ckb’s main communication protocol for synchronize all blocks.

RFC

§

RelayV2

Relay: ckb’s main communication protocol for synchronizing latest transactions and blocks.

RFC

§

RelayV3

Relay: ckb’s main communication protocol for synchronizing latest transactions and blocks. RFC

§

Time

Time: A protocol used for node pairing that warns if there is a large gap between the local time and the remote node.

§

Alert

Alert: A protocol reserved by the Nervos Foundation to publish network-wide announcements. Any information sent from the protocol is verified by multi-signature

§

LightClient

LightClient: A protocol used for light client.

§

Filter

Filter: A protocol used for client side block data filtering.

§

HolePunching

HolePunching: A protocol used to connect peers behind firewalls or NAT routers.

Implementations§

Source§

impl SupportProtocols

Source

pub fn protocol_id(&self) -> ProtocolId

Protocol id

Source

pub fn name(&self) -> String

Protocol name

Source

pub fn support_versions(&self) -> Vec<String>

Support versions

Source

pub fn max_frame_length(&self) -> usize

Protocol message max length

Source

pub fn build_meta_with_service_handle<SH: FnOnce() -> ProtocolHandle<Box<dyn ServiceProtocol + Send + Unpin + 'static>>>( self, service_handle: SH, ) -> ProtocolMeta

Builder with service handle

Trait Implementations§

Source§

impl Clone for SupportProtocols

Source§

fn clone(&self) -> SupportProtocols

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SupportProtocols

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<SupportProtocols> for MetaBuilder

Source§

fn from(p: SupportProtocols) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsAny for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Cast to trait Any
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> ErasedDestructor for T
where T: 'static,