diff --git a/server/jccommon/constant.go b/server/jccommon/constant.go index 9b869296..73c37d05 100644 --- a/server/jccommon/constant.go +++ b/server/jccommon/constant.go @@ -40,6 +40,7 @@ const ( CONTRACT_NAME_GameItemMall = "GameItemMall" CONTRACT_NAME_StakedEsCecRouter = "stakedEsCecRouter" CONTRACT_NAME_EsCec = "esCEC" + CONTRACT_NAME_Vester = "vester" ) const ( diff --git a/server/light_backtask/task/vester.go b/server/light_backtask/task/vester.go new file mode 100644 index 00000000..396e37b7 --- /dev/null +++ b/server/light_backtask/task/vester.go @@ -0,0 +1,70 @@ +package task + +import ( + "q5" + "f5" + "main/mt" + "main/constant" + "jccommon" + "fmt" +) + +/* +Deposit amount his_amount 衰减,最后的存覆盖之前的 +Withdraw 所有 + +按时间排序处理事件的先后顺序 + +通过Vester.sol的remainingEsToken方法获取, 如果要本地计算的话, 那就取每次Deposit事件的时间和amount, 加上先前的转换的余额, 再按total * (now - deposit_time) / (365 * 24 * 2600) +*/ +type vesterDeposit struct { + +} + +func (this *vesterDeposit) init() { + mt.Table.Contract.Traverse(func (ele *mt.Contract) bool { + if ele.GetName() == jccommon.CONTRACT_NAME_Vester { + go this.process(ele.GetNetId(), ele.GetAddress()) + } + return true + }) +} + +func (this *vesterDeposit) unInit() { +} + +func (this *vesterDeposit) process(netId int32, contractAddress string) { + key := fmt.Sprintf("vesterDeposit.lastIdx.%d.%s", netId, contractAddress) + if dbLastIdxStr, err := jccommon.GetDbParam(constant.BCEVENT_DB, key); err == nil { + f5.GetGoStyleDb().IncrementLoad( + constant.BCEVENT_DB, + "vesterDeposit." + q5.ToString(netId) + "." + contractAddress, + "t_blockchain_event", + q5.ToInt64(dbLastIdxStr), + func (lastIdx int64, maxIdx int64) (string, []string) { + sql := fmt.Sprintf(` +SELECT * FROM t_blockchain_event +WHERE idx > %d AND idx <= %d AND net_id = %d AND contract_address = ? AND event_name IN (?, ?) +ORDER BY idx LIMIT 1000 +`, + lastIdx, + maxIdx, + netId) + params := []string{ + contractAddress, + "Deposit", + } + return sql, params + }, + func (newLastIdx int64) { + jccommon.SaveDbParam(constant.BCEVENT_DB, key, q5.ToString(newLastIdx)) + }, + this.saveToDb) + } else { + panic(fmt.Sprintf("vesterDeposit getDBParam error %s", err)) + } +} + +func (this* vesterDeposit) saveToDb(ds *f5.DataSet) bool { + return true +} diff --git a/server/light_backtask/task/vester_claim.go b/server/light_backtask/task/vester_claim.go deleted file mode 100644 index da016410..00000000 --- a/server/light_backtask/task/vester_claim.go +++ /dev/null @@ -1,22 +0,0 @@ -package task - -import ( - "main/mt" -) - -type vesterClaim struct { - -} - -func (this *vesterClaim) init() { - mt.Table.Contract.Traverse(func (ele *mt.Contract) bool { - /* - if ele.GetName() == jccommon.CONTRACT_NAME_StakedEsCecRouter { - go this.process(ele.GetNetId(), ele.GetAddress()) - }*/ - return true - }) -} - -func (this *vesterClaim) unInit() { -} diff --git a/server/light_backtask/task/vester_deposit.go b/server/light_backtask/task/vester_deposit.go deleted file mode 100644 index a9f49ec3..00000000 --- a/server/light_backtask/task/vester_deposit.go +++ /dev/null @@ -1,22 +0,0 @@ -package task - -import ( - "main/mt" -) - -type vesterDeposit struct { - -} - -func (this *vesterDeposit) init() { - mt.Table.Contract.Traverse(func (ele *mt.Contract) bool { - /* - if ele.GetName() == jccommon.CONTRACT_NAME_StakedEsCecRouter { - go this.process(ele.GetNetId(), ele.GetAddress()) - }*/ - return true - }) -} - -func (this *vesterDeposit) unInit() { -} diff --git a/server/light_backtask/task/vester_withdraw.go b/server/light_backtask/task/vester_withdraw.go deleted file mode 100644 index 81587a25..00000000 --- a/server/light_backtask/task/vester_withdraw.go +++ /dev/null @@ -1,22 +0,0 @@ -package task - -import ( - "main/mt" -) - -type vesterWithdraw struct { - -} - -func (this *vesterWithdraw) init() { - mt.Table.Contract.Traverse(func (ele *mt.Contract) bool { - /* - if ele.GetName() == jccommon.CONTRACT_NAME_StakedEsCecRouter { - go this.process(ele.GetNetId(), ele.GetAddress()) - }*/ - return true - }) -} - -func (this *vesterWithdraw) unInit() { -}