// ProcessConsensusChange receives consensus changes from the consensus set and // parses them for valid host announcements. func (af *announcementFinder) ProcessConsensusChange(cc modules.ConsensusChange) { for _, block := range cc.AppliedBlocks { for _, txn := range block.Transactions { for _, arb := range txn.ArbitraryData { addr, pubKey, err := modules.DecodeAnnouncement(arb) if err == nil { af.netAddresses = append(af.netAddresses, addr) af.publicKeys = append(af.publicKeys, pubKey) } } } } }
// findHostAnnouncements returns a list of the host announcements found within // a given block. No check is made to see that the ip address found in the // announcement is actually a valid ip address. func findHostAnnouncements(b types.Block) (announcements []modules.HostDBEntry) { for _, t := range b.Transactions { // the HostAnnouncement must be prefaced by the standard host // announcement string for _, arb := range t.ArbitraryData { addr, pubKey, err := modules.DecodeAnnouncement(arb) if err != nil { continue } // Add the announcement to the slice being returned. var host modules.HostDBEntry host.NetAddress = addr host.PublicKey = pubKey announcements = append(announcements, host) } } return }