handshake

package
v2.8.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2026 License: BSD-3-Clause Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ProtocolName is the text of the name of the handshake protocol.
	ProtocolName = "handshake"
	// ProtocolVersion is the current handshake protocol version.
	ProtocolVersion = "15.0.0"
	// StreamName is the name of the stream used for handshake purposes.
	StreamName = "handshake"
	// MaxWelcomeMessageLength is maximum number of characters allowed in the welcome message.
	MaxWelcomeMessageLength = 140
)

Variables

View Source
var (
	// ErrNetworkIDIncompatible is returned if response from the other peer does not have valid networkID.
	ErrNetworkIDIncompatible = errors.New("incompatible network ID")

	// ErrInvalidAck is returned if data in received in ack is not valid (invalid signature for example).
	ErrInvalidAck = errors.New("invalid ack")

	// ErrInvalidSyn is returned if observable address in ack is not a valid..
	ErrInvalidSyn = errors.New("invalid syn")

	// ErrWelcomeMessageLength is returned if the welcome message is longer than the maximum length
	ErrWelcomeMessageLength = fmt.Errorf("handshake welcome message longer than maximum of %d characters", MaxWelcomeMessageLength)

	// ErrPicker is returned if the picker (kademlia) rejects the peer
	ErrPicker = errors.New("picker rejection")
)

Functions

This section is empty.

Types

type Addresser added in v2.7.0

type Addresser interface {
	AdvertizableAddrs() ([]ma.Multiaddr, error)
}

type AdvertisableAddressResolver

type AdvertisableAddressResolver interface {
	Resolve(observedAddress ma.Multiaddr) (ma.Multiaddr, error)
}

AdvertisableAddressResolver can Resolve a Multiaddress.

type Info

type Info struct {
	BzzAddress *bzz.Address
	FullNode   bool
}

Info contains the information received from the handshake.

func (*Info) LightString

func (i *Info) LightString() string

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service can perform initiate or handle a handshake between peers.

func New

func New(signer crypto.Signer, advertisableAddresser AdvertisableAddressResolver, overlay swarm.Address, networkID uint64, fullNode bool, nonce []byte, hostAddresser Addresser, welcomeMessage string, addrbook addressbook.Getter, ownPeerID libp2ppeer.ID, chequebookVerifier chequebook.Verifier, logger log.Logger) (*Service, error)

New creates a new handshake Service. A nil chequebookVerifier disables the chequebook gate; otherwise handshake completion requires the peer's chequebook to pass verification.

func (*Service) GetWelcomeMessage

func (s *Service) GetWelcomeMessage() string

GetWelcomeMessage returns the current handshake welcome message.

func (*Service) Handle

func (s *Service) Handle(ctx context.Context, stream p2p.Stream, peerMultiaddrs []ma.Multiaddr) (i *Info, err error)

Handle handles an incoming handshake from a peer.

func (*Service) Handshake

func (s *Service) Handshake(ctx context.Context, stream p2p.Stream, peerMultiaddrs []ma.Multiaddr) (i *Info, err error)

Handshake initiates a handshake with a peer.

func (*Service) Metrics

func (s *Service) Metrics() []prometheus.Collector

Metrics returns set of prometheus collectors.

func (*Service) SetChequebookAddress added in v2.8.0

func (s *Service) SetChequebookAddress(addr common.Address)

SetChequebookAddress sets the local chequebook address included in subsequent signed BzzAddress payloads; the zero value clears it. The chequebook is part of the signed-address cache key, so the next handshake misses the cache and re-signs with the new chequebook.

func (*Service) SetPicker

func (s *Service) SetPicker(n p2p.Picker)

func (*Service) SetWelcomeMessage

func (s *Service) SetWelcomeMessage(msg string) (err error)

SetWelcomeMessage sets the new handshake welcome message.

Directories

Path Synopsis
Package pb holds only Protocol Buffer definitions and generated code.
Package pb holds only Protocol Buffer definitions and generated code.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL