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  }