libp2p.peer package

Submodules

libp2p.peer.addrbook_interface module

class libp2p.peer.addrbook_interface.IAddrBook

Bases: abc.ABC

abstract add_addr(peer_id: libp2p.peer.id.ID, addr: multiaddr.multiaddr.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: libp2p.peer.id.ID, addrs: Sequence[multiaddr.multiaddr.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: libp2p.peer.id.ID) → List[multiaddr.multiaddr.Multiaddr]
Parameters

peer_id – peer to get addresses of

Returns

all known (and valid) addresses for the given peer

abstract clear_addrs(peer_id: libp2p.peer.id.ID) → None

Removes all previously stored addresses.

Parameters

peer_id – peer to remove addresses of

abstract peers_with_addrs() → List[libp2p.peer.id.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) → libp2p.peer.id.ID
classmethod from_pubkey(key: libp2p.crypto.keys.PublicKey) → libp2p.peer.id.ID
pretty() → str
to_base58() → str
to_bytes() → bytes
to_string() → str
property xor_id
class libp2p.peer.id.IdentityHash

Bases: object

digest() → bytes
update(input: bytes) → None
libp2p.peer.id.sha256_digest(data: Union[str, bytes]) → bytes

libp2p.peer.peerdata module

class libp2p.peer.peerdata.PeerData

Bases: libp2p.peer.peerdata_interface.IPeerData

add_addrs(addrs: Sequence[multiaddr.multiaddr.Multiaddr]) → None
Parameters

addrs – multiaddresses to add

add_privkey(privkey: libp2p.crypto.keys.PrivateKey) → None
Parameters

privkey

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

protocols – protocols to add

add_pubkey(pubkey: libp2p.crypto.keys.PublicKey) → None
Parameters

pubkey

addrs: List[Multiaddr] = None
clear_addrs() → None

Clear all addresses.

get_addrs() → List[multiaddr.multiaddr.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() → libp2p.crypto.keys.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() → libp2p.crypto.keys.PublicKey
Returns

public key of the peer

Raises

PeerDataError – if public key not found

metadata: Dict[Any, Any] = None
privkey: PrivateKey = None
protocols: List[str] = None
pubkey: PublicKey = None
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.ABC

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

addrs – multiaddresses to add

abstract add_privkey(privkey: libp2p.crypto.keys.PrivateKey) → None
Parameters

privkey

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

protocols – protocols to add

abstract add_pubkey(pubkey: libp2p.crypto.keys.PublicKey) → None
Parameters

pubkey

abstract clear_addrs() → None

Clear all addresses.

abstract get_addrs() → List[multiaddr.multiaddr.Multiaddr]
Returns

all multiaddresses

abstract get_metadata(key: str) → libp2p.peer.peermetadata_interface.IPeerMetadata
Parameters

key – key in KV pair

Returns

val for key

Raises

PeerDataError – key not found

abstract get_privkey() → libp2p.crypto.keys.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() → libp2p.crypto.keys.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: libp2p.peer.id.ID, addrs: Sequence[multiaddr.multiaddr.Multiaddr])

Bases: object

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

libp2p.peer.peermetadata_interface module

class libp2p.peer.peermetadata_interface.IPeerMetadata

Bases: abc.ABC

abstract get(peer_id: libp2p.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: libp2p.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: libp2p.peer.peerstore_interface.IPeerStore

add_addr(peer_id: libp2p.peer.id.ID, addr: multiaddr.multiaddr.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: libp2p.peer.id.ID, addrs: Sequence[multiaddr.multiaddr.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: libp2p.peer.id.ID, key_pair: libp2p.crypto.keys.KeyPair) → None
Parameters
  • peer_id – peer ID to add private key for

  • key_pair

add_privkey(peer_id: libp2p.peer.id.ID, privkey: libp2p.crypto.keys.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: libp2p.peer.id.ID, protocols: Sequence[str]) → None
Parameters
  • peer_id – peer ID to add protocols for

  • protocols – protocols to add

add_pubkey(peer_id: libp2p.peer.id.ID, pubkey: libp2p.crypto.keys.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: libp2p.peer.id.ID) → List[multiaddr.multiaddr.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: libp2p.peer.id.ID) → None
Parameters

peer_id – peer ID to clear addrs for

get(peer_id: libp2p.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: libp2p.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] = None
peer_ids() → List[libp2p.peer.id.ID]
Returns

all of the peer IDs stored in peer store

peer_info(peer_id: libp2p.peer.id.ID) → libp2p.peer.peerinfo.PeerInfo
Parameters

peer_id – peer ID to get info for

Returns

peer info object

peers_with_addrs() → List[libp2p.peer.id.ID]
Returns

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

privkey(peer_id: libp2p.peer.id.ID) → libp2p.crypto.keys.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: libp2p.peer.id.ID) → libp2p.crypto.keys.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: libp2p.peer.id.ID, key: str, val: Any) → None
Parameters
  • peer_id – peer ID to put peer data for

  • key

  • value

set_protocols(peer_id: libp2p.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: libp2p.peer.addrbook_interface.IAddrBook, libp2p.peer.peermetadata_interface.IPeerMetadata

abstract add_addr(peer_id: libp2p.peer.id.ID, addr: multiaddr.multiaddr.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: libp2p.peer.id.ID, addrs: Sequence[multiaddr.multiaddr.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: libp2p.peer.id.ID, key_pair: libp2p.crypto.keys.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: libp2p.peer.id.ID, privkey: libp2p.crypto.keys.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: libp2p.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: libp2p.peer.id.ID, pubkey: libp2p.crypto.keys.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: libp2p.peer.id.ID) → List[multiaddr.multiaddr.Multiaddr]
Parameters

peer_id – peer ID to get addrs for

Returns

list of addrs

abstract clear_addrs(peer_id: libp2p.peer.id.ID) → None
Parameters

peer_id – peer ID to clear addrs for

abstract get(peer_id: libp2p.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: libp2p.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[libp2p.peer.id.ID]
Returns

all of the peer IDs stored in peer store

abstract peer_info(peer_id: libp2p.peer.id.ID) → libp2p.peer.peerinfo.PeerInfo
Parameters

peer_id – peer ID to get info for

Returns

peer info object

abstract peers_with_addrs() → List[libp2p.peer.id.ID]
Returns

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

abstract privkey(peer_id: libp2p.peer.id.ID) → libp2p.crypto.keys.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: libp2p.peer.id.ID) → libp2p.crypto.keys.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: libp2p.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: libp2p.peer.id.ID, protocols: Sequence[str]) → None
Parameters
  • peer_id – peer ID to set protocols for

  • protocols – protocols to set

Module contents