github.com/klaytn/klaytn@v1.12.1/datasync/fetcher/doc.go (about)

     1  // Copyright 2018 The klaytn Authors
     2  // Copyright 2015 The go-ethereum Authors
     3  // This file is part of the go-ethereum library.
     4  //
     5  // The go-ethereum library is free software: you can redistribute it and/or modify
     6  // it under the terms of the GNU Lesser General Public License as published by
     7  // the Free Software Foundation, either version 3 of the License, or
     8  // (at your option) any later version.
     9  //
    10  // The go-ethereum library is distributed in the hope that it will be useful,
    11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    13  // GNU Lesser General Public License for more details.
    14  //
    15  // You should have received a copy of the GNU Lesser General Public License
    16  // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
    17  //
    18  // This file is derived from eth/fetcher/fetcher.go (2018/06/04).
    19  // Modified and improved for the klaytn development.
    20  
    21  /*
    22  Package fetcher contains the block announcement based synchronisation.
    23  
    24  How fetcher works
    25  
    26  If the node receives a whole block, fetcher inserts the block into the chain and broadcast it to its peers.
    27  If a block hash is received instead of a block, node requests and reflects the header and body from the peer who sent the block hash.
    28  
    29  Source Files
    30  
    31  Functions and variables related to fetcher are defined in the files listed below.
    32    - fetcher.go      : It includes functions for fetching the received block, header, body, and a queue data structure for the fetch operation.
    33    - fetcher_test.go : Functions for testing the fetcher's functions.
    34    - metrics.go      : Metric variables for packet header, body and blocks.
    35  */
    36  package fetcher