github.com/elastos/Elastos.ELA.SideChain.ETH@v0.2.2/blocksigner/blocksigner.go (about)

     1  package blocksigner
     2  
     3  import (
     4  	"math/rand"
     5  
     6  	"github.com/elastos/Elastos.ELA.SideChain.ESC/common"
     7  )
     8  
     9  const defaultTestSignerNumber = 12
    10  
    11  var (
    12  	Signers map[common.Address]struct{}
    13  	SelfIsProducer bool
    14  )
    15  
    16  func GetBlockSignerMaps(elaHeight uint64) *map[common.Address]struct{} {
    17  	// TODO get from ELA
    18  	return &Signers
    19  }
    20  
    21  func GetBlockSignersCount() int {
    22  	// TODO get from ELA
    23  	return len(Signers)
    24  }
    25  
    26  func ValidateSigner(elaHeight uint64, addr common.Address) bool {
    27  	signers := GetBlockSignerMaps(elaHeight)
    28  	_, ok := (*signers)[addr]
    29  	return ok
    30  }
    31  
    32  func GenRandSingersFromTest() {
    33  	Signers = make(map[common.Address]struct{})
    34  	for i := 0; i < defaultTestSignerNumber; i++ {
    35  		addr := common.Address{}
    36  		rand.Read(addr[:])
    37  		Signers[addr] = struct{}{}
    38  	}
    39  }