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