8 "github.com/vapor/encoding/base32"
11 //1<seq_id ,increase by 1
14 func nextSeqID() uint32 {
16 atomic.AddUint32(&seqID, 1)
21 //IDGenerate generate signer unique id
22 func IDGenerate() string {
23 var ourEpochMS uint64 = 1496635208000
26 nowMS := uint64(time.Now().UnixNano() / 1e6)
27 seqIndex := uint64(nextSeqID())
28 seqID := uint64(seqIndex % 1024)
31 n = (nowMS - ourEpochMS) << 23
32 n = n | (shardID << 10)
35 bin := make([]byte, 8)
36 binary.BigEndian.PutUint64(bin, n)
37 encodeString := base32.HexEncoding.WithPadding(base32.NoPadding).EncodeToString(bin)