github.com/neatlab/neatio@v1.7.3-0.20220425043230-d903e92fcc75/chain/consensus/protocol.go (about) 1 package consensus 2 3 import ( 4 "math/big" 5 6 "github.com/neatlab/neatio/chain/core/types" 7 "github.com/neatlab/neatio/utilities/common" 8 ) 9 10 const ( 11 Eth62 = 62 12 Eth63 = 63 13 ) 14 15 var ( 16 EthProtocol = Protocol{ 17 Name: "eth", 18 Versions: []uint{Eth62, Eth63}, 19 Lengths: []uint64{17, 8}, 20 } 21 ) 22 23 type Protocol struct { 24 Name string 25 26 Versions []uint 27 28 Lengths []uint64 29 } 30 31 type Broadcaster interface { 32 Enqueue(id string, block *types.Block) 33 34 FindPeers(map[common.Address]bool) map[common.Address]Peer 35 36 BroadcastBlock(block *types.Block, propagate bool) 37 38 BroadcastMessage(msgcode uint64, data interface{}) 39 40 TryFixBadPreimages() 41 } 42 43 type Peer interface { 44 Send(msgcode uint64, data interface{}) error 45 46 SendNewBlock(block *types.Block, td *big.Int) error 47 48 GetPeerState() PeerState 49 50 GetKey() string 51 52 GetConsensusKey() string 53 54 SetPeerState(ps PeerState) 55 } 56 57 type PeerState interface { 58 GetHeight() uint64 59 Disconnect() 60 }