// RegisterVerification stores the verification in a map and will // call it whenever a verification needs to be done. func RegisterVerification(c *onet.Context, v VerifierID, f SkipBlockVerifier) error { scs := c.Service(ServiceName) if scs == nil { return errors.New("Didn't find our service: " + ServiceName) } return scs.(*Service).RegisterVerification(v, f) }
func newSkipchainService(c *onet.Context, path string) onet.Service { s := &Service{ ServiceProcessor: onet.NewServiceProcessor(c), path: path, SkipBlockMap: &SkipBlockMap{make(map[string]*SkipBlock)}, verifiers: map[VerifierID]SkipBlockVerifier{}, } var err error s.Propagate, err = manage.NewPropagationFunc(c, "SkipchainPropagate", s.PropagateSkipBlock) log.ErrFatal(err) c.ProtocolRegister(skipchainBFT, func(n *onet.TreeNodeInstance) (onet.ProtocolInstance, error) { return bftcosi.NewBFTCoSiProtocol(n, s.bftVerify) }) if err := s.tryLoad(); err != nil { log.Error(err) } log.ErrFatal(s.RegisterHandlers(s.ProposeSkipBlock, s.SetChildrenSkipBlock, s.GetUpdateChain)) if err := s.RegisterVerification(VerifyShard, s.VerifyShardFunc); err != nil { log.Panic(err) } if err := s.RegisterVerification(VerifyNone, s.VerifyNoneFunc); err != nil { log.Panic(err) } return s }