TARAXA
dev::p2p::ENR Class Reference

Class representing Ethereum Node Record - see EIP-778. More...

#include <ENR.h>

Public Types

using SignFunction = std::function< bytes(bytesConstRef)>
 
using VerifyFunction = std::function< bool(std::map< std::string, bytes > const &, bytesConstRef, bytesConstRef)>
 

Public Member Functions

 ENR (RLP const &_rlp, VerifyFunction const &_verifyFunction)
 Parse from RLP with given signature verification function. More...
 
 ENR (uint64_t _seq, std::map< std::string, bytes > const &_keyValuePairs, SignFunction const &_signFunction)
 Create with given sign function. More...
 
uint64_t sequenceNumber () const
 
bytes const & signature () const
 
std::map< std::string, bytes > const & keyValuePairs () const
 
std::string id () const
 Pre-defined keys. More...
 
boost::asio::ip::address_v4 ip () const
 
boost::asio::ip::address_v6 ip6 () const
 
uint16_t tcpPort () const
 
uint16_t udpPort () const
 
void streamRLP (RLPStream &_s) const
 Serialize to given RLP stream. More...
 
ENR update (std::map< std::string, bytes > const &_keyValuePair, SignFunction const &_signFunction) const
 Create new ENR succeeding current one with updated _keyValuePairs. More...
 
std::string textEncoding () const
 

Private Member Functions

bytes content () const
 
size_t contentRlpListItemCount () const
 
void streamContent (RLPStream &_s) const
 

Private Attributes

uint64_t m_seq = 0
 
std::map< std::string, bytesm_keyValuePairs
 
bytes m_signature
 

Detailed Description

Class representing Ethereum Node Record - see EIP-778.

Member Typedef Documentation

◆ SignFunction

Sign function gets serialized ENR contents and signs it according to some Identity Scheme

◆ VerifyFunction

using dev::p2p::ENR::VerifyFunction = std::function<bool(std::map<std::string, bytes> const&, bytesConstRef, bytesConstRef)>

Verify function gets ENR key-value pairs, signature, and serialized content and validates the signature according to some Identity Scheme

Constructor & Destructor Documentation

◆ ENR() [1/2]

dev::p2p::ENR::ENR ( RLP const &  _rlp,
VerifyFunction const &  _verifyFunction 
)

Parse from RLP with given signature verification function.

◆ ENR() [2/2]

dev::p2p::ENR::ENR ( uint64_t  _seq,
std::map< std::string, bytes > const &  _keyValuePairs,
SignFunction const &  _signFunction 
)

Create with given sign function.

Member Function Documentation

◆ content()

bytes dev::p2p::ENR::content ( ) const
private

◆ contentRlpListItemCount()

size_t dev::p2p::ENR::contentRlpListItemCount ( ) const
inlineprivate

◆ id()

std::string dev::p2p::ENR::id ( ) const

Pre-defined keys.

◆ ip()

ba::ip::address_v4 dev::p2p::ENR::ip ( ) const

◆ ip6()

ba::ip::address_v6 dev::p2p::ENR::ip6 ( ) const

◆ keyValuePairs()

std::map<std::string, bytes> const& dev::p2p::ENR::keyValuePairs ( ) const
inline

◆ sequenceNumber()

uint64_t dev::p2p::ENR::sequenceNumber ( ) const
inline

◆ signature()

bytes const& dev::p2p::ENR::signature ( ) const
inline

◆ streamContent()

void dev::p2p::ENR::streamContent ( RLPStream _s) const
private

◆ streamRLP()

void dev::p2p::ENR::streamRLP ( RLPStream _s) const

Serialize to given RLP stream.

◆ tcpPort()

uint16_t dev::p2p::ENR::tcpPort ( ) const

◆ textEncoding()

std::string dev::p2p::ENR::textEncoding ( ) const

◆ udpPort()

uint16_t dev::p2p::ENR::udpPort ( ) const

◆ update()

ENR dev::p2p::ENR::update ( std::map< std::string, bytes > const &  _keyValuePair,
SignFunction const &  _signFunction 
) const

Create new ENR succeeding current one with updated _keyValuePairs.

Member Data Documentation

◆ m_keyValuePairs

std::map<std::string, bytes> dev::p2p::ENR::m_keyValuePairs
private

◆ m_seq

uint64_t dev::p2p::ENR::m_seq = 0
private

◆ m_signature

bytes dev::p2p::ENR::m_signature
private

The documentation for this class was generated from the following files: