Commit 6a686e50 authored by szh's avatar szh

update addr add bug

parent 4b6f9501
...@@ -62,7 +62,7 @@ func SyncBlock() { ...@@ -62,7 +62,7 @@ func SyncBlock() {
for processHeight := startHeight + 1; processHeight <= lastHeight; processHeight += maxDownload { for processHeight := startHeight + 1; processHeight <= lastHeight; processHeight += maxDownload {
statMap := make(map[string]*models.RaspMinerStat,0) statMap := make(map[string]*models.RaspMinerStat,0)
txsMap := make(map[int64]*models.RaspMinerTxs,0) txsMap := make(map[int64]*models.RaspMinerTxs,0)
statList := make([]*models.RaspMinerStat,0) //statList := make([]*models.RaspMinerStat,0)
txsList := make([]*models.RaspMinerTxs,0) txsList := make([]*models.RaspMinerTxs,0)
checkList := make(map[int64]int64,0) checkList := make(map[int64]int64,0)
var wg sync.WaitGroup var wg sync.WaitGroup
...@@ -77,35 +77,26 @@ func SyncBlock() { ...@@ -77,35 +77,26 @@ func SyncBlock() {
panic(err) panic(err)
} }
mutx.Lock() mutx.Lock()
statList = append(statList,stat) for _, vv:= range stat {
if _,ok := statMap[vv.Addr];!ok {
statMap[vv.Addr] = vv
} else {
statMap[vv.Addr].MinedTicketCount += vv.MinedTicketCount
statMap[vv.Addr].MiningTicketCount += vv.MiningTicketCount
statMap[vv.Addr].MinedAmount += vv.MinedAmount
}
}
txsList = append(txsList,txs) txsList = append(txsList,txs)
mutx.Unlock() mutx.Unlock()
logging.Info("DealBlock",height) logging.Info("DealBlock",height)
logging.Info("DealBlock stat",*stat)
logging.Info("DealBlock txs",*txs)
checkList[height] = height checkList[height] = height
wg.Done() wg.Done()
}(height) }(height)
} }
//db.SetMainNetHeight(int(processHeight + types.MaxProcessBlocks + 1)) //db.SetMainNetHeight(int(processHeight + types.MaxProcessBlocks + 1))
wg.Wait() wg.Wait()
for _,v := range statList {
if v != nil && v.Addr != "" {
if _,ok:= statMap[v.Addr];!ok {
statMap[v.Addr] = v
} else {
temp := statMap[v.Addr]
statMap[v.Addr] = &models.RaspMinerStat{
Addr:v.Addr,
MiningTicketCount:v.MiningTicketCount+temp.MiningTicketCount,
MinedTicketCount:v.MinedTicketCount+temp.MinedTicketCount,
MinedAmount:v.MinedAmount+temp.MinedAmount,
Height:v.Height,
Time:v.Time,
}
}
}
}
for _,v := range txsList { for _,v := range txsList {
if v != nil && v.Height >0 { if v != nil && v.Height >0 {
if _, ok := txsMap[v.Height];!ok { if _, ok := txsMap[v.Height];!ok {
...@@ -113,31 +104,26 @@ func SyncBlock() { ...@@ -113,31 +104,26 @@ func SyncBlock() {
} }
} }
} }
if len(txsList) != int(maxDownload) || len(txsList) != len(statList) { if len(txsList) != int(maxDownload) || len(txsList) > len(statMap) {
logging.Error("txsList",len(txsList),"txsMap",len(txsMap),"statList",len(statList),"checkList",len(checkList)) logging.Error("txsList",len(txsList),"txsMap",len(txsMap),"statMap",len(statMap),"checkList",len(checkList))
for _,v:= range checkList { for _,v:= range checkList {
var t, s bool var t bool
for _, vv:= range txsList { for _, vv:= range txsList {
if v == vv.Height { if v == vv.Height {
t = true t = true
break break
} }
} }
for _, vv:= range statList {
if v == vv.Height { if !t {
s = true
break
}
}
if !t || !s {
logging.Error("++++++++",v) logging.Error("++++++++",v)
} }
} }
for _, vv:= range txsList { for _, vv:= range txsList {
logging.Info("txslist:",*vv) logging.Info("txslist:",*vv)
} }
for _, vv:= range statList { for _, vv:= range statMap {
logging.Info("statList:",*vv) logging.Info("statMap:",*vv)
} }
panic("exception txs not eq expect") panic("exception txs not eq expect")
} }
...@@ -174,14 +160,14 @@ func (prev *prevHeight) SetMainHeight() error { ...@@ -174,14 +160,14 @@ func (prev *prevHeight) SetMainHeight() error {
} }
func DealBlock(height int64) ( *models.RaspMinerStat, *models.RaspMinerTxs,error) { func DealBlock(height int64) ( []*models.RaspMinerStat, *models.RaspMinerTxs,error) {
blocks ,err := client.GetBlocks(&types.ReqBlocks{Start:height,End:height,IsDetail:true}) blocks ,err := client.GetBlocks(&types.ReqBlocks{Start:height,End:height,IsDetail:true})
if err != nil { if err != nil {
logging.Error("GetBlocks err",err) logging.Error("GetBlocks err",err)
return nil,nil,err return nil,nil,err
} }
block := blocks.GetItems()[0] block := blocks.GetItems()[0]
rs := &RMinerStat{} rsMap := make(map[string]*RMinerStat,0)
rt := &RMinerTxs{} rt := &RMinerTxs{}
//处理交易数据 //处理交易数据
for k,v := range block.Block.Txs { for k,v := range block.Block.Txs {
...@@ -195,16 +181,23 @@ func DealBlock(height int64) ( *models.RaspMinerStat, *models.RaspMinerTxs,erro ...@@ -195,16 +181,23 @@ func DealBlock(height int64) ( *models.RaspMinerStat, *models.RaspMinerTxs,erro
rt.Miner = rt1.Miner rt.Miner = rt1.Miner
rt.Amount = rt1.Amount rt.Amount = rt1.Amount
} }
if rs1 != nil { if rs1 != nil && rs1.Addr != "" {
rs.MinedTicketCount += rs1.MinedTicketCount rs := &RMinerStat{}
rs.MiningTicketCount += rs1.MiningTicketCount if _,ok := rsMap[rs1.Addr];!ok {
rs.MinedAmount += rs1.MinedAmount rs.Addr = rs1.Addr
rs.Addr = rs1.Addr rs.MinedTicketCount = rs1.MinedTicketCount
rs.MiningTicketCount = rs1.MiningTicketCount
rs.MinedAmount = rs1.MinedAmount
rs.Time = block.Block.BlockTime
rs.Height = block.Block.Height
rsMap[rs1.Addr] = rs
} else {
rsMap[rs1.Addr].MiningTicketCount += rs1.MiningTicketCount
}
} }
} }
} }
rs.Time = block.Block.BlockTime
rs.Height = block.Block.Height
rt.Height = block.Block.Height rt.Height = block.Block.Height
rt.Time = block.Block.BlockTime rt.Time = block.Block.BlockTime
//处理交易日志 //处理交易日志
...@@ -217,14 +210,22 @@ func DealBlock(height int64) ( *models.RaspMinerStat, *models.RaspMinerTxs,erro ...@@ -217,14 +210,22 @@ func DealBlock(height int64) ( *models.RaspMinerStat, *models.RaspMinerTxs,erro
// } // }
// //
//} //}
raspStat := NewMinerStat(rs) raspStatList := make([]*models.RaspMinerStat,0)
for _,v := range rsMap {
raspStat := NewMinerStat(v)
raspStatList = append(raspStatList,raspStat)
logging.Info("stat",*raspStat)
}
raspTxs := NewMinerTxs(rt) raspTxs := NewMinerTxs(rt)
logging.Info("txs",*raspTxs)
//err = models.UpdateBlock(raspTxs,raspStat) //err = models.UpdateBlock(raspTxs,raspStat)
//if err != nil { //if err != nil {
// logging.Error("UpdateBlock err ",err) // logging.Error("UpdateBlock err ",err)
// return err // return err
//} //}
return raspStat,raspTxs,nil return raspStatList,raspTxs,nil
} }
type RMinerTxs struct { type RMinerTxs struct {
...@@ -264,16 +265,17 @@ func dealTx(tx *types.Transaction) (*RMinerTxs,*RMinerStat,error) { ...@@ -264,16 +265,17 @@ func dealTx(tx *types.Transaction) (*RMinerTxs,*RMinerStat,error) {
rt.Amount = miner.GetMiner().Reward rt.Amount = miner.GetMiner().Reward
rt.Miner = tx.From() rt.Miner = tx.From()
rs.MinedAmount = miner.GetMiner().Reward rs.MinedAmount = miner.GetMiner().Reward
rs.MinedTicketCount = 1 rs.MinedTicketCount = int64(1)
rs.Addr = tx.From() rs.Addr = tx.From()
case ttype.TicketActionClose: case ttype.TicketActionClose:
rs.MiningTicketCount -= int64(len(miner.GetTclose().TicketId)) rs.MiningTicketCount = -int64(len(miner.GetTclose().TicketId))
rs.Addr = tx.From() rs.Addr = tx.From()
case ttype.TicketActionOpen: case ttype.TicketActionOpen:
rs.MiningTicketCount += int64(miner.GetTopen().Count) rs.MiningTicketCount = int64(miner.GetTopen().Count)
rs.Addr = tx.From() rs.Addr = tx.From()
case ttype.TicketActionGenesis: case ttype.TicketActionGenesis:
rs.MiningTicketCount += int64(miner.GetGenesis().Count) rs.MiningTicketCount = int64(miner.GetGenesis().Count)
rs.Addr = tx.From()
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment