diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index cf8e1becf6..6ac58140a3 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -153,6 +153,7 @@ type Downloader struct { chainInsertHook func([]*fetchResult) // Method to call upon inserting a chain of blocks (possibly in multiple invocations) } +// LightChain encapsulates functions required to synchronise a light chain. type LightChain interface { // HasHeader verifies a header's presence in the local chain. HasHeader(common.Hash) bool @@ -173,6 +174,7 @@ type LightChain interface { Rollback([]common.Hash) } +// BlockChain encapsulates functions required to sync a (full or fast) blockchain. type BlockChain interface { LightChain @@ -281,7 +283,7 @@ func (d *Downloader) RegisterPeer(id string, version int, peer Peer) error { return nil } -// RegisterLightPeer injects a light client peer +// RegisterLightPeer injects a light client peer, wrapping it so it appears as a regular peer. func (d *Downloader) RegisterLightPeer(id string, version int, peer LightPeer) error { return d.RegisterPeer(id, version, &lightPeerWrapper{peer}) } diff --git a/eth/downloader/peer.go b/eth/downloader/peer.go index 96870da508..d0dc9a8aa6 100644 --- a/eth/downloader/peer.go +++ b/eth/downloader/peer.go @@ -45,7 +45,7 @@ var ( errNotRegistered = errors.New("peer is not registered") ) -// peer represents an active peer from which hashes and blocks are retrieved. +// peerConnection represents an active peer from which hashes and blocks are retrieved. type peerConnection struct { id string // Unique identifier of the peer @@ -75,12 +75,14 @@ type peerConnection struct { lock sync.RWMutex } +// LightPeer encapsulates the methods required to synchronise with a remote light peer. type LightPeer interface { Head() (common.Hash, *big.Int) RequestHeadersByHash(common.Hash, int, int, bool) error RequestHeadersByNumber(uint64, int, int, bool) error } +// Peer encapsulates the methods required to synchronise with a remote full peer. type Peer interface { LightPeer RequestBodies([]common.Hash) error @@ -110,7 +112,7 @@ func (w *lightPeerWrapper) RequestNodeData([]common.Hash) error { panic("RequestNodeData not supported in light client mode sync") } -// newPeerConnection creates a new downloader peer +// newPeerConnection creates a new downloader peer. func newPeerConnection(id string, version int, peer Peer, logger log.Logger) *peerConnection { return &peerConnection{ id: id,