libp2p.peer package

Submodules

libp2p.peer.addrbook_interface module

class libp2p.peer.addrbook_interface.IAddrBook

Bases: ABC

abstract add_addr(peer_id: ID, addr: Multiaddr, ttl: int) None

Calls add_addrs(peer_id, [addr], ttl)

Parameters:
  • peer_id – the peer to add address for

  • addr – multiaddress of the peer

  • ttl – time-to-live for the address (after this time, address is no longer valid)

abstract add_addrs(peer_id: ID, addrs: Sequence[Multiaddr], ttl: int) None

Adds addresses for a given peer all with the same time-to-live. If one of the addresses already exists for the peer and has a longer TTL, no operation should take place. If one of the addresses exists with a shorter TTL, extend the TTL to equal param ttl.

Parameters:
  • peer_id – the peer to add address for

  • addr – multiaddresses of the peer

  • ttl – time-to-live for the address (after this time, address is no longer valid

abstract addrs(peer_id: ID) List[Multiaddr]
Parameters:

peer_id – peer to get addresses of

Returns:

all known (and valid) addresses for the given peer

abstract clear_addrs(peer_id: ID) None

Removes all previously stored addresses.

Parameters:

peer_id – peer to remove addresses of

abstract peers_with_addrs() List[ID]
Returns:

all of the peer IDs stored with addresses

libp2p.peer.id module

class libp2p.peer.id.ID(peer_id_bytes: bytes)

Bases: object

classmethod from_base58(b58_encoded_peer_id_str: str) ID
classmethod from_pubkey(key: PublicKey) ID
pretty() str
to_base58() str
to_bytes() bytes
to_string() str
property xor_id: int
class libp2p.peer.id.IdentityHash

Bases: object

digest() bytes
update(input: bytes) None
libp2p.peer.id.sha256_digest(data: str | bytes) bytes

libp2p.peer.peerdata module

class libp2p.peer.peerdata.PeerData

Bases: IPeerData

add_addrs(addrs: Sequence[Multiaddr]) None
Parameters:

addrs – multiaddresses to add

add_privkey(privkey: PrivateKey) None
Parameters:

privkey

add_protocols(protocols: Sequence[str]) None
Parameters:

protocols – protocols to add

add_pubkey(pubkey: PublicKey) None
Parameters:

pubkey

addrs: List[Multiaddr]
clear_addrs() None

Clear all addresses.

get_addrs() List[Multiaddr]
Returns:

all multiaddresses

get_metadata(key: str) Any
Parameters:

key – key in KV pair

Returns:

val for key

Raises:

PeerDataError – key not found

get_privkey() PrivateKey
Returns:

private key of the peer

Raises:

PeerDataError – if private key not found

get_protocols() List[str]
Returns:

all protocols associated with given peer

get_pubkey() PublicKey
Returns:

public key of the peer

Raises:

PeerDataError – if public key not found

metadata: Dict[Any, Any]
privkey: PrivateKey
protocols: List[str]
pubkey: PublicKey
put_metadata(key: str, val: Any) None
Parameters:
  • key – key in KV pair

  • val – val to associate with key

set_protocols(protocols: Sequence[str]) None
Parameters:

protocols – protocols to set

exception libp2p.peer.peerdata.PeerDataError

Bases: KeyError

Raised when a key is not found in peer metadata.

libp2p.peer.peerdata_interface module

class libp2p.peer.peerdata_interface.IPeerData

Bases: ABC

abstract add_addrs(addrs: Sequence[Multiaddr]) None
Parameters:

addrs – multiaddresses to add

abstract add_privkey(privkey: PrivateKey) None
Parameters:

privkey

abstract add_protocols(protocols: Sequence[str]) None
Parameters:

protocols – protocols to add

abstract add_pubkey(pubkey: PublicKey) None
Parameters:

pubkey

abstract clear_addrs() None

Clear all addresses.

abstract get_addrs() List[Multiaddr]
Returns:

all multiaddresses

abstract get_metadata(key: str) IPeerMetadata
Parameters:

key – key in KV pair

Returns:

val for key

Raises:

PeerDataError – key not found

abstract get_privkey() PrivateKey
Returns:

private key of the peer

Raises:

PeerDataError – if private key not found

abstract get_protocols() List[str]
Returns:

all protocols associated with given peer

abstract get_pubkey() PublicKey
Returns:

public key of the peer

Raises:

PeerDataError – if public key not found

abstract put_metadata(key: str, val: Any) None
Parameters:
  • key – key in KV pair

  • val – val to associate with key

abstract set_protocols(protocols: Sequence[str]) None
Parameters:

protocols – protocols to set

libp2p.peer.peerinfo module

exception libp2p.peer.peerinfo.InvalidAddrError

Bases: ValueError

class libp2p.peer.peerinfo.PeerInfo(peer_id: ID, addrs: Sequence[Multiaddr])

Bases: object

addrs: List[Multiaddr]
peer_id: ID
libp2p.peer.peerinfo.info_from_p2p_addr(addr: Multiaddr) PeerInfo

libp2p.peer.peermetadata_interface module

class libp2p.peer.peermetadata_interface.IPeerMetadata

Bases: ABC

abstract get(peer_id: ID, key: str) Any
Parameters:
  • peer_id – peer ID to lookup key for

  • key – key to look up

Returns:

value at key for given peer

Raises:

Exception – peer ID not found

abstract put(peer_id: ID, key: str, val: Any) None
Parameters:
  • peer_id – peer ID to lookup key for

  • key – key to associate with peer

  • val – value to associated with key

Raises:

Exception – unsuccessful put

libp2p.peer.peerstore module

class libp2p.peer.peerstore.PeerStore

Bases: IPeerStore

add_addr(peer_id: ID, addr: Multiaddr, ttl: int) None
Parameters:
  • peer_id – peer ID to add address for

  • addr

  • ttl – time-to-live for the this record

add_addrs(peer_id: ID, addrs: Sequence[Multiaddr], ttl: int) None
Parameters:
  • peer_id – peer ID to add address for

  • addrs

  • ttl – time-to-live for the this record

add_key_pair(peer_id: ID, key_pair: KeyPair) None
Parameters:
  • peer_id – peer ID to add private key for

  • key_pair

add_privkey(peer_id: ID, privkey: PrivateKey) None
Parameters:
  • peer_id – peer ID to add private key for

  • privkey

Raises:

PeerStoreError – if peer ID or peer privkey not found

add_protocols(peer_id: ID, protocols: Sequence[str]) None
Parameters:
  • peer_id – peer ID to add protocols for

  • protocols – protocols to add

add_pubkey(peer_id: ID, pubkey: PublicKey) None
Parameters:
  • peer_id – peer ID to add public key for

  • pubkey

Raises:

PeerStoreError – if peer ID and pubkey does not match

addrs(peer_id: ID) List[Multiaddr]
Parameters:

peer_id – peer ID to get addrs for

Returns:

list of addrs

Raises:

PeerStoreError – if peer ID not found

clear_addrs(peer_id: ID) None
Parameters:

peer_id – peer ID to clear addrs for

get(peer_id: ID, key: str) Any
Parameters:
  • peer_id – peer ID to get peer data for

  • key – the key to search value for

Returns:

value corresponding to the key

Raises:

PeerStoreError – if peer ID or value not found

get_protocols(peer_id: ID) List[str]
Parameters:

peer_id – peer ID to get protocols for

Returns:

protocols (as list of strings)

Raises:

PeerStoreError – if peer ID not found

peer_data_map: Dict[ID, PeerData]
peer_ids() List[ID]
Returns:

all of the peer IDs stored in peer store

peer_info(peer_id: ID) PeerInfo
Parameters:

peer_id – peer ID to get info for

Returns:

peer info object

peers_with_addrs() List[ID]
Returns:

all of the peer IDs which has addrs stored in peer store

privkey(peer_id: ID) PrivateKey
Parameters:

peer_id – peer ID to get private key for

Returns:

private key of the peer

Raises:

PeerStoreError – if peer ID or peer privkey not found

pubkey(peer_id: ID) PublicKey
Parameters:

peer_id – peer ID to get public key for

Returns:

public key of the peer

Raises:

PeerStoreError – if peer ID or peer pubkey not found

put(peer_id: ID, key: str, val: Any) None
Parameters:
  • peer_id – peer ID to put peer data for

  • key

  • value

set_protocols(peer_id: ID, protocols: Sequence[str]) None
Parameters:
  • peer_id – peer ID to set protocols for

  • protocols – protocols to set

exception libp2p.peer.peerstore.PeerStoreError

Bases: KeyError

Raised when peer ID is not found in peer store.

libp2p.peer.peerstore_interface module

class libp2p.peer.peerstore_interface.IPeerStore

Bases: IAddrBook, IPeerMetadata

abstract add_addr(peer_id: ID, addr: Multiaddr, ttl: int) None
Parameters:
  • peer_id – peer ID to add address for

  • addr

  • ttl – time-to-live for the this record

abstract add_addrs(peer_id: ID, addrs: Sequence[Multiaddr], ttl: int) None
Parameters:
  • peer_id – peer ID to add address for

  • addrs

  • ttl – time-to-live for the this record

abstract add_key_pair(peer_id: ID, key_pair: KeyPair) None
Parameters:
  • peer_id – peer ID to add private key for

  • key_pair

Raises:

PeerStoreError – if peer ID already has pubkey or privkey set

abstract add_privkey(peer_id: ID, privkey: PrivateKey) None
Parameters:
  • peer_id – peer ID to add private key for

  • privkey

Raises:

PeerStoreError – if peer ID already has privkey set

abstract add_protocols(peer_id: ID, protocols: Sequence[str]) None
Parameters:
  • peer_id – peer ID to add protocols for

  • protocols – protocols to add

abstract add_pubkey(peer_id: ID, pubkey: PublicKey) None
Parameters:
  • peer_id – peer ID to add public key for

  • pubkey

Raises:

PeerStoreError – if peer ID already has pubkey set

abstract addrs(peer_id: ID) List[Multiaddr]
Parameters:

peer_id – peer ID to get addrs for

Returns:

list of addrs

abstract clear_addrs(peer_id: ID) None
Parameters:

peer_id – peer ID to clear addrs for

abstract get(peer_id: ID, key: str) Any
Parameters:
  • peer_id – peer ID to get peer data for

  • key – the key to search value for

Returns:

value corresponding to the key

Raises:

PeerStoreError – if peer ID or value not found

abstract get_protocols(peer_id: ID) List[str]
Parameters:

peer_id – peer ID to get protocols for

Returns:

protocols (as list of strings)

Raises:

PeerStoreError – if peer ID not found

abstract peer_ids() List[ID]
Returns:

all of the peer IDs stored in peer store

abstract peer_info(peer_id: ID) PeerInfo
Parameters:

peer_id – peer ID to get info for

Returns:

peer info object

abstract peers_with_addrs() List[ID]
Returns:

all of the peer IDs which has addrs stored in peer store

abstract privkey(peer_id: ID) PrivateKey
Parameters:

peer_id – peer ID to get private key for

Returns:

private key of the peer

Raises:

PeerStoreError – if peer ID not found

abstract pubkey(peer_id: ID) PublicKey
Parameters:

peer_id – peer ID to get public key for

Returns:

public key of the peer

Raises:

PeerStoreError – if peer ID not found

abstract put(peer_id: ID, key: str, val: Any) None
Parameters:
  • peer_id – peer ID to put peer data for

  • key

  • value

abstract set_protocols(peer_id: ID, protocols: Sequence[str]) None
Parameters:
  • peer_id – peer ID to set protocols for

  • protocols – protocols to set

Module contents