Merge pull request #2115 from filecoin-project/feat/drand-config-override
allow overriding drand config
This commit is contained in:
commit
99d3571772
@ -27,18 +27,22 @@ import (
|
|||||||
|
|
||||||
var log = logging.Logger("drand")
|
var log = logging.Logger("drand")
|
||||||
|
|
||||||
var drandServers = []string{
|
type DrandConfig struct {
|
||||||
"https://pl-eu.testnet.drand.sh",
|
Servers []string
|
||||||
"https://pl-us.testnet.drand.sh",
|
ChainInfo *dchain.Info
|
||||||
"https://pl-sin.testnet.drand.sh",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var drandChain *dchain.Info
|
var defaultConfig = DrandConfig{
|
||||||
|
Servers: []string{
|
||||||
|
"https://pl-eu.testnet.drand.sh",
|
||||||
|
"https://pl-us.testnet.drand.sh",
|
||||||
|
"https://pl-sin.testnet.drand.sh",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
drandChain, err = dchain.InfoFromJSON(bytes.NewReader([]byte(build.DrandChain)))
|
defaultConfig.ChainInfo, err = dchain.InfoFromJSON(bytes.NewReader([]byte(build.DrandChain)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic("could not unmarshal chain info: " + err.Error())
|
panic("could not unmarshal chain info: " + err.Error())
|
||||||
}
|
}
|
||||||
@ -73,16 +77,21 @@ type DrandBeacon struct {
|
|||||||
localCache map[uint64]types.BeaconEntry
|
localCache map[uint64]types.BeaconEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDrandBeacon(genesisTs, interval uint64, ps *pubsub.PubSub) (*DrandBeacon, error) {
|
func NewDrandBeacon(genesisTs, interval uint64, ps *pubsub.PubSub, config *DrandConfig) (*DrandBeacon, error) {
|
||||||
if genesisTs == 0 {
|
if genesisTs == 0 {
|
||||||
panic("what are you doing this cant be zero")
|
panic("what are you doing this cant be zero")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if config == nil {
|
||||||
|
config = &defaultConfig
|
||||||
|
}
|
||||||
|
drandChain := config.ChainInfo
|
||||||
|
|
||||||
dlogger := dlog.NewKitLoggerFrom(kzap.NewZapSugarLogger(
|
dlogger := dlog.NewKitLoggerFrom(kzap.NewZapSugarLogger(
|
||||||
log.SugaredLogger.Desugar(), zapcore.InfoLevel))
|
log.SugaredLogger.Desugar(), zapcore.InfoLevel))
|
||||||
|
|
||||||
var clients []dclient.Client
|
var clients []dclient.Client
|
||||||
for _, url := range drandServers {
|
for _, url := range config.Servers {
|
||||||
hc, err := hclient.NewWithInfo(url, drandChain, nil)
|
hc, err := hclient.NewWithInfo(url, drandChain, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("could not create http drand client: %w", err)
|
return nil, xerrors.Errorf("could not create http drand client: %w", err)
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestPrintGroupInfo(t *testing.T) {
|
func TestPrintGroupInfo(t *testing.T) {
|
||||||
c, err := hclient.New(drandServers[0], nil, nil)
|
c, err := hclient.New(defaultConfig.Servers[0], nil, nil)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
cg := c.(interface {
|
cg := c.(interface {
|
||||||
FetchChainInfo(groupHash []byte) (*dchain.Info, error)
|
FetchChainInfo(groupHash []byte) (*dchain.Info, error)
|
||||||
|
@ -108,8 +108,9 @@ func RetrievalResolver(l *discovery.Local) retrievalmarket.PeerResolver {
|
|||||||
type RandomBeaconParams struct {
|
type RandomBeaconParams struct {
|
||||||
fx.In
|
fx.In
|
||||||
|
|
||||||
PubSub *pubsub.PubSub `optional:"true"`
|
DrandConfig *drand.DrandConfig `optional:"true"`
|
||||||
Cs *store.ChainStore
|
PubSub *pubsub.PubSub `optional:"true"`
|
||||||
|
Cs *store.ChainStore
|
||||||
}
|
}
|
||||||
|
|
||||||
func RandomBeacon(p RandomBeaconParams, _ dtypes.AfterGenesisSet) (beacon.RandomBeacon, error) {
|
func RandomBeacon(p RandomBeaconParams, _ dtypes.AfterGenesisSet) (beacon.RandomBeacon, error) {
|
||||||
@ -119,5 +120,5 @@ func RandomBeacon(p RandomBeaconParams, _ dtypes.AfterGenesisSet) (beacon.Random
|
|||||||
}
|
}
|
||||||
|
|
||||||
//return beacon.NewMockBeacon(build.BlockDelay * time.Second)
|
//return beacon.NewMockBeacon(build.BlockDelay * time.Second)
|
||||||
return drand.NewDrandBeacon(gen.Timestamp, build.BlockDelay, p.PubSub)
|
return drand.NewDrandBeacon(gen.Timestamp, build.BlockDelay, p.PubSub, p.DrandConfig)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user