func makePBFTNetwork(N int, config *viper.Viper) *pbftNetwork { if config == nil { config = loadConfig() } config.Set("general.N", N) config.Set("general.f", (N-1)/3) endpointFunc := func(id uint64, net *testnet) endpoint { tep := makeTestEndpoint(id, net) pe := &pbftEndpoint{ testEndpoint: tep, manager: events.NewManagerImpl(), } pe.sc = &simpleConsumer{ pe: pe, } pe.pbft = newPbftCore(id, config, pe.sc, events.NewTimerFactoryImpl(pe.manager)) pe.manager.SetReceiver(pe.pbft) pe.manager.Start() return pe } pn := &pbftNetwork{testnet: makeTestnet(N, endpointFunc)} pn.pbftEndpoints = make([]*pbftEndpoint, len(pn.endpoints)) for i, ep := range pn.endpoints { pn.pbftEndpoints[i] = ep.(*pbftEndpoint) pn.pbftEndpoints[i].sc.pbftNet = pn } return pn }
func NewServer(cfg *viper.Viper) (*WalkhubServer, error) { cfg.Set("root", false) b, err := ab.PetBunny(cfg, nil, prometheusMiddleware()) if err != nil { return nil, err } s := &WalkhubServer{ Server: b, cfg: cfg, } return s, nil }
func obcBatchSizeOneHelper(id uint64, config *viper.Viper, stack consensus.Stack) pbftConsumer { // It's not entirely obvious why the compiler likes the parent function, but not newObcClassic directly config.Set("general.batchsize", 1) return newObcBatch(id, config, stack) }