40 lines
		
	
	
		
			733 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			733 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package les
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
 | 
						|
	"github.com/ethereum/go-ethereum/eth"
 | 
						|
	"github.com/ethereum/go-ethereum/p2p/enode"
 | 
						|
)
 | 
						|
 | 
						|
type ulc struct {
 | 
						|
	trustedKeys        map[string]struct{}
 | 
						|
	minTrustedFraction int
 | 
						|
}
 | 
						|
 | 
						|
func newULC(ulcConfig *eth.ULCConfig) *ulc {
 | 
						|
	if ulcConfig == nil {
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
 | 
						|
	m := make(map[string]struct{}, len(ulcConfig.TrustedServers))
 | 
						|
	for _, id := range ulcConfig.TrustedServers {
 | 
						|
		node, err := enode.ParseV4(id)
 | 
						|
		if err != nil {
 | 
						|
			fmt.Println("node:", id, " err:", err)
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		m[node.ID().String()] = struct{}{}
 | 
						|
	}
 | 
						|
 | 
						|
	return &ulc{m, ulcConfig.MinTrustedFraction}
 | 
						|
}
 | 
						|
 | 
						|
func (u *ulc) isTrusted(p enode.ID) bool {
 | 
						|
	if u.trustedKeys == nil {
 | 
						|
		return false
 | 
						|
	}
 | 
						|
	_, ok := u.trustedKeys[p.String()]
 | 
						|
	return ok
 | 
						|
}
 |