github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/setup/league_dependence.go (about) 1 package setup 2 3 import ( 4 "time" 5 6 "github.com/ontio/ontology-eventbus/actor" 7 "github.com/sixexorg/magnetic-ring/account" 8 "github.com/sixexorg/magnetic-ring/config" 9 "github.com/sixexorg/magnetic-ring/consense/poa" 10 "github.com/sixexorg/magnetic-ring/log" 11 "github.com/sixexorg/magnetic-ring/meacount" 12 "github.com/sixexorg/magnetic-ring/miner" 13 "github.com/sixexorg/magnetic-ring/orgcontainer" 14 ) 15 16 func initContainers(p2pActor *actor.PID) { 17 orgcontainer.InitContainers(p2pActor) 18 } 19 20 func CreateContainer(account account.Account, targetHeight uint64, dbDir string, poaConf *config.CliqueConfig) error { 21 node := meacount.GetOwner() 22 cns := orgcontainer.GetContainers() 23 id, err := cns.NewContainer(dbDir, targetHeight, account, node) 24 if err != nil { 25 log.Error("create container err", "error", err) 26 return err 27 } 28 log.Info("create container success", "containerId", id) 29 for { 30 status := cns.GetContainerStatus(id) 31 log.Info("collect container status", "status", status) 32 if status == orgcontainer.Normal { 33 break 34 } 35 time.Sleep(time.Second * 60) 36 } 37 38 container, err := cns.GetContainerById(id) 39 if err != nil { 40 log.Error("get container by id err", "error", err) 41 return err 42 } 43 log.Info("container success", "leagueId", container.LeagueId().ToString()) 44 45 pingpoa := poa.New(poaConf, account, container, container.Ledger()) 46 47 poaminer := miner.New(account.Address()) 48 49 poaminer.RegisterOrg(container.LeagueId(), container.Ledger(), &config.GlobalConfig.CliqueCfg, pingpoa, container.TxPool()) //config是圈子共识的配置 50 51 poaminer.StartOrg(container.LeagueId()) 52 return nil 53 }