github.com/status-im/status-go@v1.1.0/waku/common/bloomfilter.go (about)

     1  package common
     2  
     3  func IsFullNode(bloom []byte) bool {
     4  	if bloom == nil {
     5  		return true
     6  	}
     7  	for _, b := range bloom {
     8  		if b != 255 {
     9  			return false
    10  		}
    11  	}
    12  	return true
    13  }
    14  
    15  func BloomFilterMatch(filter, sample []byte) bool {
    16  	if filter == nil {
    17  		return true
    18  	}
    19  
    20  	for i := 0; i < BloomFilterSize; i++ {
    21  		f := filter[i]
    22  		s := sample[i]
    23  		if (f | s) != f {
    24  			return false
    25  		}
    26  	}
    27  
    28  	return true
    29  }
    30  
    31  func MakeFullNodeBloom() []byte {
    32  	bloom := make([]byte, BloomFilterSize)
    33  	for i := 0; i < BloomFilterSize; i++ {
    34  		bloom[i] = 0xFF
    35  	}
    36  	return bloom
    37  }