فهرست منبع

add claim topic

Eric0718 2 سال پیش
والد
کامیت
5501563813
4فایلهای تغییر یافته به همراه15 افزوده شده و 4 حذف شده
  1. 5 2
      blockchain/contract.go
  2. 8 1
      blockchain/scan.go
  3. 2 1
      blockchain/types.go
  4. BIN
      ktogame

+ 5 - 2
blockchain/contract.go

@@ -115,7 +115,8 @@ func participate(engine *xorm.Engine, user, inviter, hash string, amount float64
 	return nil
 }
 
-func checkClaim(engine *xorm.Engine, addr, hash, sign string, amount float64) error {
+func checkClaim(engine *xorm.Engine, addr, hash, sign string, amount float64, height int64) error {
+	logs.Info("checkClaim :", addr, hash, sign, amount)
 	var tx models.ClaimedTxs
 	ok, err := engine.Id(hash).Get(&tx)
 	if err != nil {
@@ -123,13 +124,15 @@ func checkClaim(engine *xorm.Engine, addr, hash, sign string, amount float64) er
 	}
 	if !ok {
 		//set record
-		claimTx := models.ClaimedTxs{Addr: addr, Amount: amount, Hash: hash,
+		logs.Info("set record========")
+		claimTx := models.ClaimedTxs{Addr: addr, Amount: amount, BlockHeight: height, Hash: hash,
 			Signature: sign, State: 1, Droped: 0, CreateTime: util.NowTimeString()}
 		_, err := engine.Insert(&claimTx)
 		if err != nil {
 			return err
 		}
 	} else {
+		logs.Info("update record========")
 		tx.State = 1
 		_, err = engine.ID(hash).Cols("hash").Update(&tx)
 		if err != nil {

+ 8 - 1
blockchain/scan.go

@@ -40,6 +40,8 @@ func init() {
 
 	tm := make(map[string]string, 0)
 	tm[TOPIC_PARTICIPATE] = COLLECT_PARTICIPATE
+	tm[TOPIC_CLAIM] = COLLECT_CLAIMREWARDS
+
 	TopsMap = tm
 
 	go scanBlock()
@@ -141,7 +143,12 @@ func scanBlock() {
 						}
 						fmt.Printf("claim event data=%+v\n ", evt)
 
-						err = checkClaim(dbUtil.Engine, evt.User.String(), v.HashToString(), hex.EncodeToString(evt.Signature), float64(evt.Amount.Uint64()/controller.Decimals))
+						var bts []byte
+						for _, b := range evt.Signature {
+							bts = append(bts, b)
+						}
+
+						err = checkClaim(dbUtil.Engine, evt.User.String(), v.HashToString(), hex.EncodeToString(bts), float64(evt.Amount.Uint64()/controller.Decimals), int64(v.BlockNum))
 						if err != nil {
 							logs.Error(err)
 							ERR = err

+ 2 - 1
blockchain/types.go

@@ -8,6 +8,7 @@ import (
 
 const (
 	TOPIC_PARTICIPATE    = "0x8ed860f76da405897619eab937f09dcb4d0d9b56cf68a3d489130a2489cf151f"
+	TOPIC_CLAIM          = "0x4804104ccbc53649f5b8b29ecf858272a4a6ed6b9949f0d30237c7a147e84671"
 	COLLECT_PARTICIPATE  = "Participate"
 	COLLECT_CLAIMREWARDS = "Claim"
 	COLLECTCONTRACT      = "0xC6Ff5462e5409d11AF6B080ADC3dc0a17E94b0A6"
@@ -22,5 +23,5 @@ type EventParticipate struct {
 type EventClaim struct {
 	User      common.Address
 	Amount    *big.Int
-	Signature []byte
+	Signature [32]byte
 }

BIN
ktogame