aboutsummaryrefslogblamecommitdiffstats
path: root/les/ulc.go
blob: d9f7dc76c994e267ba93d36920c98c843a9b29a6 (plain) (tree)






































                                                                     
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
}