Commit 6a686e50 authored by szh's avatar szh

update addr add bug

parent 4b6f9501
......@@ -62,7 +62,7 @@ func SyncBlock() {
for processHeight := startHeight + 1; processHeight <= lastHeight; processHeight += maxDownload {
statMap := make(map[string]*models.RaspMinerStat,0)
txsMap := make(map[int64]*models.RaspMinerTxs,0)
statList := make([]*models.RaspMinerStat,0)
//statList := make([]*models.RaspMinerStat,0)
txsList := make([]*models.RaspMinerTxs,0)
checkList := make(map[int64]int64,0)
var wg sync.WaitGroup
......@@ -77,35 +77,26 @@ func SyncBlock() {
panic(err)
}
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)
mutx.Unlock()
logging.Info("DealBlock",height)
logging.Info("DealBlock stat",*stat)
logging.Info("DealBlock txs",*txs)
checkList[height] = height
wg.Done()
}(height)
}
//db.SetMainNetHeight(int(processHeight + types.MaxProcessBlocks + 1))
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 {
if v != nil && v.Height >0 {
if _, ok := txsMap[v.Height];!ok {
......@@ -113,31 +104,26 @@ func SyncBlock() {
}
}
}
if len(txsList) != int(maxDownload) || len(txsList) != len(statList) {
logging.Error("txsList",len(txsList),"txsMap",len(txsMap),"statList",len(statList),"checkList",len(checkList))
if len(txsList) != int(maxDownload) || len(txsList) > len(statMap) {
logging.Error("txsList",len(txsList),"txsMap",len(txsMap),"statMap",len(statMap),"checkList",len(checkList))
for _,v:= range checkList {
var t, s bool
var t bool
for _, vv:= range txsList {
if v == vv.Height {
t = true
break
}
}
for _, vv:= range statList {
if v == vv.Height {
s = true
break
}
}
if !t || !s {
if !t {
logging.Error("++++++++",v)
}
}
for _, vv:= range txsList {
logging.Info("txslist:",*vv)
}
for _, vv:= range statList {
logging.Info("statList:",*vv)
for _, vv:= range statMap {
logging.Info("statMap:",*vv)
}
panic("exception txs not eq expect")
}
......@@ -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})
if err != nil {
logging.Error("GetBlocks err",err)
return nil,nil,err
}
block := blocks.GetItems()[0]
rs := &RMinerStat{}
rsMap := make(map[string]*RMinerStat,0)
rt := &RMinerTxs{}
//处理交易数据
for k,v := range block.Block.Txs {
......@@ -195,16 +181,23 @@ func DealBlock(height int64) ( *models.RaspMinerStat, *models.RaspMinerTxs,erro
rt.Miner = rt1.Miner
rt.Amount = rt1.Amount
}
if rs1 != nil {
rs.MinedTicketCount += rs1.MinedTicketCount
rs.MiningTicketCount += rs1.MiningTicketCount
rs.MinedAmount += rs1.MinedAmount
if rs1 != nil && rs1.Addr != "" {
rs := &RMinerStat{}
if _,ok := rsMap[rs1.Addr];!ok {
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.Time = block.Block.BlockTime
//处理交易日志
......@@ -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)
logging.Info("txs",*raspTxs)
//err = models.UpdateBlock(raspTxs,raspStat)
//if err != nil {
// logging.Error("UpdateBlock err ",err)
// return err
//}
return raspStat,raspTxs,nil
return raspStatList,raspTxs,nil
}
type RMinerTxs struct {
......@@ -264,16 +265,17 @@ func dealTx(tx *types.Transaction) (*RMinerTxs,*RMinerStat,error) {
rt.Amount = miner.GetMiner().Reward
rt.Miner = tx.From()
rs.MinedAmount = miner.GetMiner().Reward
rs.MinedTicketCount = 1
rs.MinedTicketCount = int64(1)
rs.Addr = tx.From()
case ttype.TicketActionClose:
rs.MiningTicketCount -= int64(len(miner.GetTclose().TicketId))
rs.MiningTicketCount = -int64(len(miner.GetTclose().TicketId))
rs.Addr = tx.From()
case ttype.TicketActionOpen:
rs.MiningTicketCount += int64(miner.GetTopen().Count)
rs.MiningTicketCount = int64(miner.GetTopen().Count)
rs.Addr = tx.From()
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