Commit baf4c3b1 authored by 张振华's avatar 张振华

guess

parent a8e53ba4
...@@ -5,9 +5,12 @@ ...@@ -5,9 +5,12 @@
package commands package commands
import ( import (
"fmt"
jsonrpc "github.com/33cn/chain33/rpc/jsonclient" jsonrpc "github.com/33cn/chain33/rpc/jsonclient"
"github.com/33cn/chain33/types"
pkt "github.com/33cn/plugin/plugin/dapp/guess/types" pkt "github.com/33cn/plugin/plugin/dapp/guess/types"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"strings"
) )
func GuessCmd() *cobra.Command { func GuessCmd() *cobra.Command {
...@@ -45,45 +48,38 @@ func addGuessStartFlags(cmd *cobra.Command) { ...@@ -45,45 +48,38 @@ func addGuessStartFlags(cmd *cobra.Command) {
cmd.Flags().StringP("options", "o", "", "options") cmd.Flags().StringP("options", "o", "", "options")
cmd.MarkFlagRequired("options") cmd.MarkFlagRequired("options")
cmd.Flags().StringP("maxTime", "mt", "", "max time to bet, after this bet is forbidden") cmd.Flags().StringP("maxBetTime", "b", "", "max time to bet, after this bet is forbidden")
cmd.Flags().Int64P("maxBetHeight", "c", 0, "max height to bet, after this bet is forbidden")
cmd.Flags().Uint32P("maxHeight", "h", 0, "max height to bet, after this bet is forbidden")
cmd.MarkFlagRequired("maxHeight")
cmd.Flags().StringP("symbol", "s", "bty", "token symbol") cmd.Flags().StringP("symbol", "s", "bty", "token symbol")
cmd.Flags().StringP("exec", "e", "coins", "excutor name") cmd.Flags().StringP("exec", "e", "coins", "excutor name")
cmd.Flags().Uint32P("oneBet", "b", 10, "one bet number, eg:10 bty / 10 token") cmd.Flags().Uint32P("maxBetsOneTime", "m", 10000, "max bets one time")
//cmd.MarkFlagRequired("oneBet")
cmd.Flags().Uint32P("maxBets", "m", 10000, "max bets one time")
//cmd.MarkFlagRequired("maxBets") //cmd.MarkFlagRequired("maxBets")
cmd.Flags().Uint32P("maxBetsNumber", "n", 100000, "max bets number") cmd.Flags().Uint32P("maxBetsNumber", "n", 100000, "max bets number")
//cmd.MarkFlagRequired("maxBetsNumber") //cmd.MarkFlagRequired("maxBetsNumber")
cmd.Flags().Int64P("devFeeFactor", "df", 0, "dev fee factor, unit: 1/1000") cmd.Flags().Int64P("devFeeFactor", "d", 0, "dev fee factor, unit: 1/1000")
cmd.Flags().StringP("devFeeAddr", "dfa", "", "dev address to receive share") cmd.Flags().StringP("devFeeAddr", "f", "", "dev address to receive share")
cmd.Flags().Int64P("platFeeFactor", "pf", 0, "plat fee factor, unit: 1/1000") cmd.Flags().Int64P("platFeeFactor", "p", 0, "plat fee factor, unit: 1/1000")
cmd.Flags().StringP("platFeeAddr", "pfa", "", "plat address to receive share") cmd.Flags().StringP("platFeeAddr", "q", "", "plat address to receive share")
cmd.Flags().StringP("expire", "ex", "", "expire time of the game, after this any addr can abort it") cmd.Flags().StringP("expire", "x", "", "expire time of the game, after this any addr can abort it")
cmd.Flags().Uint32P("expireHeight", "eh", 0, "expire height of the game, after this any addr can abort it") cmd.Flags().Int64P("expireHeight", "y", 0, "expire height of the game, after this any addr can abort it")
} }
func guessStart(cmd *cobra.Command, args []string) { func guessStart(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr") rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
topic, _ := cmd.Flags().GetString("topic") topic, _ := cmd.Flags().GetString("topic")
options, _ := cmd.Flags().GetString("options") options, _ := cmd.Flags().GetString("options")
maxTime, _ := cmd.Flags().GetString("maxTime") maxBetTime, _ := cmd.Flags().GetString("maxBetTime")
maxHeight, _ := cmd.Flags().GetUint32("maxHeight") maxBetHeight, _ := cmd.Flags().GetInt64("maxBetHeight")
symbol, _ := cmd.Flags().GetString("symbol") symbol, _ := cmd.Flags().GetString("symbol")
exec, _ := cmd.Flags().GetString("exec") exec, _ := cmd.Flags().GetString("exec")
oneBet, _ := cmd.Flags().GetUint32("oneBet")
maxBets, _ := cmd.Flags().GetUint32("maxBets") maxBets, _ := cmd.Flags().GetUint32("maxBets")
maxBetsNumber, _ := cmd.Flags().GetUint32("maxBetsNumber") maxBetsNumber, _ := cmd.Flags().GetUint32("maxBetsNumber")
devFeeFactor, _ := cmd.Flags().GetInt64("devFeeFactor") devFeeFactor, _ := cmd.Flags().GetInt64("devFeeFactor")
...@@ -91,17 +87,16 @@ func guessStart(cmd *cobra.Command, args []string) { ...@@ -91,17 +87,16 @@ func guessStart(cmd *cobra.Command, args []string) {
platFeeFactor, _ := cmd.Flags().GetInt64("platFeeFactor") platFeeFactor, _ := cmd.Flags().GetInt64("platFeeFactor")
platFeeAddr, _ := cmd.Flags().GetString("platFeeAddr") platFeeAddr, _ := cmd.Flags().GetString("platFeeAddr")
expire, _ := cmd.Flags().GetString("expire") expire, _ := cmd.Flags().GetString("expire")
expireHeight, _ := cmd.Flags().GetUint32("expireHeight") expireHeight, _ := cmd.Flags().GetInt64("expireHeight")
params := &pkt.GuessStartTxReq{ params := &pkt.GuessStartTxReq{
Topic: topic, Topic: topic,
Options: options, Options: options,
MaxTime: maxTime, MaxBetTime: maxBetTime,
MaxHeight: maxHeight, MaxBetHeight: maxBetHeight,
Symbol: symbol, Symbol: symbol,
Exec: exec, Exec: exec,
OneBet: oneBet, MaxBetsOneTime: maxBets,
MaxBets: maxBets,
MaxBetsNumber: maxBetsNumber, MaxBetsNumber: maxBetsNumber,
DevFeeFactor: devFeeFactor, DevFeeFactor: devFeeFactor,
DevFeeAddr: devFeeAddr, DevFeeAddr: devFeeAddr,
...@@ -217,7 +212,7 @@ func guessPublish(cmd *cobra.Command, args []string) { ...@@ -217,7 +212,7 @@ func guessPublish(cmd *cobra.Command, args []string) {
func GuessQueryRawTxCmd() *cobra.Command { func GuessQueryRawTxCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "query", Use: "query",
Short: "Query result", Short: "query info",
Run: guessQuery, Run: guessQuery,
} }
addGuessQueryFlags(cmd) addGuessQueryFlags(cmd)
...@@ -225,62 +220,130 @@ func GuessQueryRawTxCmd() *cobra.Command { ...@@ -225,62 +220,130 @@ func GuessQueryRawTxCmd() *cobra.Command {
} }
func addGuessQueryFlags(cmd *cobra.Command) { func addGuessQueryFlags(cmd *cobra.Command) {
cmd.Flags().StringP("gameID", "g", "", "game ID") cmd.Flags().Int32P("type", "t", 1, "query type, 1:QueryGamesByIds,2:QueryGameById,3:QueryGameByAddr,4:QueryGameByAddrStatus,5:QueryGameByStatus,6:QueryGameByAdminAddr,7:QueryGameByAddrStatusAddr,8:QueryGameByAdminStatusAddr,9:QueryGameByCategoryStatusAddr")
cmd.Flags().StringP("address", "a", "", "address") cmd.Flags().StringP("gameId", "g", "", "game Id")
cmd.Flags().StringP("index", "i", "", "index") cmd.Flags().StringP("addr", "a", "", "address")
cmd.Flags().StringP("status", "s", "", "status") cmd.Flags().StringP("adminAddr", "m", "", "admin address")
cmd.Flags().Int64P("index", "i", 0, "index")
cmd.Flags().Int32P("status", "s", 0, "status")
cmd.Flags().StringP("gameIDs", "d", "", "gameIDs") cmd.Flags().StringP("gameIDs", "d", "", "gameIDs")
cmd.Flags().StringP("category", "c", "default", "game category")
} }
func guessQuery(cmd *cobra.Command, args []string) { func guessQuery(cmd *cobra.Command, args []string) {
/*
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr") rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
gameID, _ := cmd.Flags().GetString("gameID") ty, _ := cmd.Flags().GetInt32("type")
address, _ := cmd.Flags().GetString("address") gameId, _ := cmd.Flags().GetString("gameId")
statusStr, _ := cmd.Flags().GetString("status") addr, _ := cmd.Flags().GetString("addr")
status, _ := strconv.ParseInt(statusStr, 10, 32) adminAddr, _ := cmd.Flags().GetString("adminAddr")
indexstr, _ := cmd.Flags().GetString("index") status, _ := cmd.Flags().GetInt32("status")
index, _ := strconv.ParseInt(indexstr, 10, 64) index, _ := cmd.Flags().GetInt64("index")
gameIDs, _ := cmd.Flags().GetString("gameIDs") gameIDs, _ := cmd.Flags().GetString("gameIDs")
category, _ := cmd.Flags().GetString("category")
fmt.Println("ooo")
var params types.Query4Cli var params types.Query4Cli
params.Execer = pkt.GuessX params.Execer = pkt.GuessX
req := &pkt.QueryGuessGameInfo{
GameId: gameID, //query type,
Addr: address, //1:QueryGamesByIds,
Status: int32(status), //2:QueryGameById,
Index: index, //3:QueryGameByAddr,
} //4:QueryGameByStatus,
params.Payload = req //5:QueryGameByAdminAddr,
if gameID != "" { //6:QueryGameByAddrStatus,
//7:QueryGameByAdminStatus,
//8:QueryGameByCategoryStatus,
switch ty{
case 1:
gameIds := strings.Split(gameIDs, ";")
req := &pkt.QueryGuessGameInfos{
GameIds: gameIds,
}
params.FuncName = pkt.FuncName_QueryGamesByIds
params.Payload = req
var res pkt.ReplyGuessGameInfos
ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run()
case 2:
req := &pkt.QueryGuessGameInfo{
GameId: gameId,
}
params.FuncName = pkt.FuncName_QueryGameById params.FuncName = pkt.FuncName_QueryGameById
params.Payload = req
var res pkt.ReplyGuessGameInfo var res pkt.ReplyGuessGameInfo
ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res) ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run() ctx.Run()
} else if address != "" {
case 3:
req := &pkt.QueryGuessGameInfo{
Addr: addr,
Index: index,
}
params.FuncName = pkt.FuncName_QueryGameByAddr params.FuncName = pkt.FuncName_QueryGameByAddr
var res pkt.PBGameRecords params.Payload = req
var res pkt.GuessGameRecords
ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res) ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run() ctx.Run()
} else if statusStr != "" {
case 4:
req := &pkt.QueryGuessGameInfo{
Status: status,
Index: index,
}
params.FuncName = pkt.FuncName_QueryGameByStatus params.FuncName = pkt.FuncName_QueryGameByStatus
var res pkt.PBGameRecords params.Payload = req
var res pkt.GuessGameRecords
ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res) ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run() ctx.Run()
} else if gameIDs != "" {
params.FuncName = pkt.FuncName_QueryGameListByIds case 5:
var gameIDsS []string req := &pkt.QueryGuessGameInfo{
gameIDsS = append(gameIDsS, gameIDs) AdminAddr: adminAddr,
gameIDsS = append(gameIDsS, gameIDs) Index: index,
req := &pkt.QueryPBGameInfos{gameIDsS} }
params.FuncName = pkt.FuncName_QueryGameByAdminAddr
params.Payload = req params.Payload = req
var res pkt.ReplyGuessGameInfos var res pkt.GuessGameRecords
ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run()
case 6:
req := &pkt.QueryGuessGameInfo{
Addr: addr,
Status: status,
Index: index,
}
params.FuncName = pkt.FuncName_QueryGameByAddrStatus
params.Payload = req
var res pkt.GuessGameRecords
ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run()
case 7:
req := &pkt.QueryGuessGameInfo{
AdminAddr: adminAddr,
Status: status,
Index: index,
}
params.FuncName = pkt.FuncName_QueryGameByAdminStatus
params.Payload = req
var res pkt.GuessGameRecords
ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run()
case 8:
req := &pkt.QueryGuessGameInfo{
Category: category,
Status: status,
Index: index,
}
params.FuncName = pkt.FuncName_QueryGameByCategoryStatus
params.Payload = req
var res pkt.GuessGameRecords
ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res) ctx := jsonrpc.NewRpcCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run() ctx.Run()
} else {
fmt.Println("Error: requeres at least one of gameID, address or status")
cmd.Help()
} }
*/
} }
...@@ -48,7 +48,7 @@ func (g *Guess) rollbackIndex(log *pkt.ReceiptGuessGame) (kvs []*types.KeyValue) ...@@ -48,7 +48,7 @@ func (g *Guess) rollbackIndex(log *pkt.ReceiptGuessGame) (kvs []*types.KeyValue)
for i := 0; i < len(game.Plays); i++ { for i := 0; i < len(game.Plays); i++ {
player := game.Plays[i] player := game.Plays[i]
kvs = append(kvs, addGuessGameAddrStatusIndexKey(log.PreStatus, player.Addr, log.GameId, player.Bet.PreIndex)) kvs = append(kvs, addGuessGameAddrStatusIndexKey(log.PreStatus, player.Addr, log.GameId, player.Bet.PreIndex))
kvs = append(kvs, delGuessGameAddrStatusIndexKey(log.Status, player.Addr, log.Index) kvs = append(kvs, delGuessGameAddrStatusIndexKey(log.Status, player.Addr, log.Index))
} }
} }
} }
......
...@@ -47,7 +47,7 @@ func (g *Guess) updateIndex(log *pkt.ReceiptGuessGame) (kvs []*types.KeyValue) { ...@@ -47,7 +47,7 @@ func (g *Guess) updateIndex(log *pkt.ReceiptGuessGame) (kvs []*types.KeyValue) {
for i := 0; i < len(game.Plays); i++ { for i := 0; i < len(game.Plays); i++ {
player := game.Plays[i] player := game.Plays[i]
kvs = append(kvs, addGuessGameAddrStatusIndexKey(log.Status, player.Addr, log.GameId, log.Index)) kvs = append(kvs, addGuessGameAddrStatusIndexKey(log.Status, player.Addr, log.GameId, log.Index))
kvs = append(kvs, delGuessGameAddrStatusIndexKey(log.PreStatus, player.Addr, player.Bet.PreIndex) kvs = append(kvs, delGuessGameAddrStatusIndexKey(log.PreStatus, player.Addr, player.Bet.PreIndex))
} }
} }
} }
......
...@@ -6,7 +6,6 @@ package executor ...@@ -6,7 +6,6 @@ package executor
import ( import (
"context" "context"
"errors"
"fmt" "fmt"
"github.com/33cn/chain33/client" "github.com/33cn/chain33/client"
"google.golang.org/grpc" "google.golang.org/grpc"
...@@ -26,17 +25,15 @@ const ( ...@@ -26,17 +25,15 @@ const (
ListASC = int32(1) ListASC = int32(1)
DefaultCount = int32(20) //默认一次取多少条记录 DefaultCount = int32(20) //默认一次取多少条记录
MaxBets = 10000 //一次最多下多少注 MaxBetsOneTime = 10000 //一次最多下多少注
MaxBetsNumber = 100000 //一局游戏最多接受多少注 MaxBetsNumber = 100000 //一局游戏最多接受多少注
MaxHeight = 10000000000 //最大区块高度 MaxBetHeight = 10000000000 //最大区块高度
MinBetBlockNum = 720 //从创建游戏开始,一局游戏最少的可下注区块数量 MinBetBlockNum = 720 //从创建游戏开始,一局游戏最少的可下注区块数量
MinBetTimeInterval = "2h" //从创建游戏开始,一局游戏最短的可下注时间 MinBetTimeInterval = "2h" //从创建游戏开始,一局游戏最短的可下注时间
MinBetTimeoutNum = 8640 //从游戏结束下注开始,一局游戏最少的超时块数 MinBetTimeoutNum = 8640 //从游戏结束下注开始,一局游戏最少的超时块数
MinBetTimeoutInterval = "24h" //从游戏结束下注开始,一局游戏最短的超时时间 MinBetTimeoutInterval = "24h" //从游戏结束下注开始,一局游戏最短的超时时间
MinOneBet = 1
grpcRecSize int = 5 * 30 * 1024 * 1024 grpcRecSize int = 5 * 30 * 1024 * 1024
retryNum = 10 retryNum = 10
...@@ -281,7 +278,7 @@ func getGameListByCategoryStatus(db dbm.Lister, category string, status int32, i ...@@ -281,7 +278,7 @@ func getGameListByCategoryStatus(db dbm.Lister, category string, status int32, i
func (action *Action) saveGame(game *pkt.GuessGame) (kvset []*types.KeyValue) { func (action *Action) saveGame(game *pkt.GuessGame) (kvset []*types.KeyValue) {
value := types.Encode(game) value := types.Encode(game)
action.db.Set(Key(game.GetGameId()), value) action.db.Set(Key(game.GetGameId()), value)
kvset = append(kvset, &types.KeyValue{Key: Key(game.GameId), value}) kvset = append(kvset, &types.KeyValue{Key: Key(game.GameId), Value: value})
return kvset return kvset
} }
...@@ -342,12 +339,11 @@ func (action *Action) newGame(gameId string, start *pkt.GuessGameStart) (*pkt.Gu ...@@ -342,12 +339,11 @@ func (action *Action) newGame(gameId string, start *pkt.GuessGameStart) (*pkt.Gu
Topic: start.Topic, Topic: start.Topic,
Category: start.Category, Category: start.Category,
Options: start.Options, Options: start.Options,
MaxTime: start.MaxTime, MaxBetTime: start.MaxBetTime,
MaxHeight: start.MaxHeight, MaxBetHeight: start.MaxBetHeight,
Symbol: start.Symbol, Symbol: start.Symbol,
Exec: start.Exec, Exec: start.Exec,
OneBet: start.OneBet, MaxBetsOneTime: start.MaxBetsOneTime,
MaxBets: start.MaxBets,
MaxBetsNumber: start.MaxBetsNumber, MaxBetsNumber: start.MaxBetsNumber,
DevFeeFactor: start.DevFeeFactor, DevFeeFactor: start.DevFeeFactor,
DevFeeAddr: start.DevFeeAddr, DevFeeAddr: start.DevFeeAddr,
...@@ -358,6 +354,7 @@ func (action *Action) newGame(gameId string, start *pkt.GuessGameStart) (*pkt.Gu ...@@ -358,6 +354,7 @@ func (action *Action) newGame(gameId string, start *pkt.GuessGameStart) (*pkt.Gu
//AdminAddr: action.fromaddr, //AdminAddr: action.fromaddr,
BetsNumber: 0, BetsNumber: 0,
//Index: action.getIndex(game), //Index: action.getIndex(game),
DrivenByAdmin: start.DrivenByAdmin,
} }
return game, nil return game, nil
...@@ -368,9 +365,9 @@ func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, erro ...@@ -368,9 +365,9 @@ func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, erro
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kv []*types.KeyValue var kv []*types.KeyValue
if start.MaxHeight >= MaxHeight { if start.MaxBetHeight >= MaxBetHeight {
logger.Error("GameStart", "addr", action.fromaddr, "execaddr", action.execaddr, logger.Error("GameStart", "addr", action.fromaddr, "execaddr", action.execaddr,
"err", fmt.Sprintf("The maximum height number is %d which is less thanstart.MaxHeight %d", MaxHeight, start.MaxHeight)) "err", fmt.Sprintf("The maximum height number is %d which is less thanstart.MaxHeight %d", MaxBetHeight, start.MaxBetHeight))
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
...@@ -393,9 +390,9 @@ func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, erro ...@@ -393,9 +390,9 @@ func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, erro
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
if !action.CheckTime() { if !action.CheckTime(start) {
logger.Error("GameStart", "addr", action.fromaddr, "execaddr", action.execaddr, logger.Error("GameStart", "addr", action.fromaddr, "execaddr", action.execaddr,
"err", fmt.Sprintf("The height and time parameters are illegal:MaxTime %s MaxHeight %d Expire %s, ExpireHeight %d", start.MaxTime, start.MaxHeight, start.Expire, start.ExpireHeight)) "err", fmt.Sprintf("The height and time parameters are illegal:MaxTime %s MaxHeight %d Expire %s, ExpireHeight %d", start.MaxBetTime, start.MaxBetHeight, start.Expire, start.ExpireHeight))
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
...@@ -407,19 +404,12 @@ func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, erro ...@@ -407,19 +404,12 @@ func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, erro
start.Exec = "coins" start.Exec = "coins"
} }
if start.OneBet < MinOneBet { if start.MaxBetsOneTime >= MaxBetsOneTime {
start.OneBet = MinOneBet start.MaxBetsOneTime = MaxBetsOneTime
}
if start.MaxBets >= MaxBets {
start.MaxBets = MaxBets
} }
gameId := common.ToHex(action.txhash) gameId := common.ToHex(action.txhash)
game, err := action.newGame(gameId, start) game, _ := action.newGame(gameId, start)
if err != nil {
return nil, err
}
game.StartTime = action.blocktime game.StartTime = action.blocktime
game.AdminAddr = action.fromaddr game.AdminAddr = action.fromaddr
game.PreIndex = 0 game.PreIndex = 0
...@@ -454,7 +444,7 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) { ...@@ -454,7 +444,7 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
if game.Status != pkt.GuessGameStatusStart && game.Status != pkt.GuessGameStatusBet && game.Status != pkt.GuessGameStatusStopBet{ if game.Status != pkt.GuessGameStatusStart && game.Status != pkt.GuessGameStatusBet && game.Status != pkt.GuessGameStatusStopBet{
logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "Status error", logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "Status error",
game.GetStatus()) game.GetStatus())
return nil, errors.New("ErrGameStatus") return nil, pkt.ErrGuessStatus
} }
canBet := action.RefreshStatusByTime(game) canBet := action.RefreshStatusByTime(game)
...@@ -490,8 +480,8 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) { ...@@ -490,8 +480,8 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
} }
//检查下注金额是否超限,如果超限,按最大值 //检查下注金额是否超限,如果超限,按最大值
if pbBet.GetBetsNum() > game.GetMaxBets() { if pbBet.GetBetsNum() > game.GetMaxBetsOneTime() {
pbBet.BetsNum = game.GetMaxBets() pbBet.BetsNum = game.GetMaxBetsOneTime()
} }
if game.BetsNumber + pbBet.GetBetsNum() > game.MaxBetsNumber { if game.BetsNumber + pbBet.GetBetsNum() > game.MaxBetsNumber {
...@@ -501,7 +491,7 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) { ...@@ -501,7 +491,7 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
} }
// 检查余额账户余额 // 检查余额账户余额
checkValue := int64(game.GetOneBet() * pbBet.BetsNum) checkValue := int64(pbBet.BetsNum)
if !action.CheckExecAccountBalance(action.fromaddr, checkValue, 0) { if !action.CheckExecAccountBalance(action.fromaddr, checkValue, 0) {
logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "id", logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "id",
pbBet.GetGameId(), "err", types.ErrNoBalance) pbBet.GetGameId(), "err", types.ErrNoBalance)
...@@ -545,11 +535,10 @@ func (action *Action) GameStopBet(pbBet *pkt.GuessGameStopBet) (*types.Receipt, ...@@ -545,11 +535,10 @@ func (action *Action) GameStopBet(pbBet *pkt.GuessGameStopBet) (*types.Receipt,
return nil, err return nil, err
} }
prevStatus := game.Status
if game.Status != pkt.GuessGameStatusStart && game.Status != pkt.GuessGameStatusBet{ if game.Status != pkt.GuessGameStatusStart && game.Status != pkt.GuessGameStatusBet{
logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "Status error", logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "Status error",
game.GetStatus()) game.GetStatus())
return nil, errors.New("ErrGameStatus") return nil, pkt.ErrGuessStatus
} }
//只有adminAddr可以发起publish //只有adminAddr可以发起publish
...@@ -562,13 +551,10 @@ func (action *Action) GameStopBet(pbBet *pkt.GuessGameStopBet) (*types.Receipt, ...@@ -562,13 +551,10 @@ func (action *Action) GameStopBet(pbBet *pkt.GuessGameStopBet) (*types.Receipt,
action.ChangeStatus(game, pkt.GuessGameStatusStopBet) action.ChangeStatus(game, pkt.GuessGameStatusStopBet)
var receiptLog *types.ReceiptLog var receiptLog *types.ReceiptLog
if prevStatus != game.Status { //状态发生变化,更新所有addr对应记录的index
//状态发生变化,更新所有addr对应记录的index action.ChangeAllAddrIndex(game)
action.ChangeAllAddrIndex(game) receiptLog = action.GetReceiptLog(game, true)
receiptLog = action.GetReceiptLog(game, true)
} else {
receiptLog = action.GetReceiptLog(game, false)
}
logs = append(logs, receiptLog) logs = append(logs, receiptLog)
kv = append(kv, action.saveGame(game)...) kv = append(kv, action.saveGame(game)...)
...@@ -614,11 +600,10 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt ...@@ -614,11 +600,10 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
prevStatus := game.Status
if game.Status != pkt.GuessGameStatusStart && game.Status != pkt.GuessGameStatusBet && game.Status != pkt.GuessGameStatusStopBet{ if game.Status != pkt.GuessGameStatusStart && game.Status != pkt.GuessGameStatusBet && game.Status != pkt.GuessGameStatusStopBet{
logger.Error("GamePublish", "addr", action.fromaddr, "execaddr", action.execaddr, "Status error", logger.Error("GamePublish", "addr", action.fromaddr, "execaddr", action.execaddr, "Status error",
game.GetStatus()) game.GetStatus())
return nil, errors.New("ErrGameStatus") return nil, pkt.ErrGuessStatus
} }
//检查竞猜选项是否合法 //检查竞猜选项是否合法
...@@ -640,7 +625,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt ...@@ -640,7 +625,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
//先遍历所有下注数据,转移资金到Admin账户合约地址; //先遍历所有下注数据,转移资金到Admin账户合约地址;
for i := 0; i < len(game.Plays); i++ { for i := 0; i < len(game.Plays); i++ {
player := game.Plays[i] player := game.Plays[i]
value := int64(player.Bet.BetsNumber * game.OneBet) value := int64(player.Bet.BetsNumber)
receipt, err := action.coinsAccount.ExecTransfer(player.Addr, game.AdminAddr, action.execaddr, value) receipt, err := action.coinsAccount.ExecTransfer(player.Addr, game.AdminAddr, action.execaddr, value)
if err != nil { if err != nil {
action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, value) // rollback action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, value) // rollback
...@@ -676,7 +661,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt ...@@ -676,7 +661,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
} }
if game.DevFeeFactor > 0 { if game.DevFeeFactor > 0 {
devFee = int64(totalBetsNumber) * game.DevFeeFactor * int64(game.OneBet)/ 1000 devFee = int64(totalBetsNumber) * game.DevFeeFactor / 1000
receipt, err := action.coinsAccount.ExecTransfer(game.AdminAddr, devAddr, action.execaddr, devFee) receipt, err := action.coinsAccount.ExecTransfer(game.AdminAddr, devAddr, action.execaddr, devFee)
if err != nil { if err != nil {
action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, devFee) // rollback action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, devFee) // rollback
...@@ -689,7 +674,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt ...@@ -689,7 +674,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
} }
if game.PlatFeeFactor > 0 { if game.PlatFeeFactor > 0 {
platFee = int64(totalBetsNumber) * game.PlatFeeFactor * int64(game.OneBet) / 1000 platFee = int64(totalBetsNumber) * game.PlatFeeFactor / 1000
receipt, err := action.coinsAccount.ExecTransfer(game.AdminAddr, platAddr, action.execaddr, platFee) receipt, err := action.coinsAccount.ExecTransfer(game.AdminAddr, platAddr, action.execaddr, platFee)
if err != nil { if err != nil {
action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, platFee) // rollback action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, platFee) // rollback
...@@ -702,7 +687,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt ...@@ -702,7 +687,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
} }
//再遍历赢家,按照投注占比分配所有筹码 //再遍历赢家,按照投注占比分配所有筹码
winValue := int64(totalBetsNumber * game.OneBet) - devFee - platFee winValue := int64(totalBetsNumber) - devFee - platFee
for j := 0; j < len(game.Plays); j++ { for j := 0; j < len(game.Plays); j++ {
player := game.Plays[j] player := game.Plays[j]
if player.Bet.Option == game.Result { if player.Bet.Option == game.Result {
...@@ -722,12 +707,9 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt ...@@ -722,12 +707,9 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
} }
var receiptLog *types.ReceiptLog var receiptLog *types.ReceiptLog
if prevStatus != game.Status { action.ChangeAllAddrIndex(game)
action.ChangeAllAddrIndex(game) receiptLog = action.GetReceiptLog(game, true)
receiptLog = action.GetReceiptLog(game, true)
} else {
receiptLog = action.GetReceiptLog(game, false)
}
logs = append(logs, receiptLog) logs = append(logs, receiptLog)
kv = append(kv, action.saveGame(game)...) kv = append(kv, action.saveGame(game)...)
...@@ -768,12 +750,13 @@ func (action *Action) GameAbort(pbend *pkt.GuessGameAbort) (*types.Receipt, erro ...@@ -768,12 +750,13 @@ func (action *Action) GameAbort(pbend *pkt.GuessGameAbort) (*types.Receipt, erro
//激活冻结账户 //激活冻结账户
for i := 0; i < len(game.Plays); i++ { for i := 0; i < len(game.Plays); i++ {
player := game.Plays[i] player := game.Plays[i]
value := int64(player.Bet.BetsNumber * game.OneBet) value := int64(player.Bet.BetsNumber)
receipt, err := action.coinsAccount.ExecActive(player.Addr, action.execaddr, value) receipt, err := action.coinsAccount.ExecActive(player.Addr, action.execaddr, value)
if err != nil { if err != nil {
logger.Error("GameAbort", "addr", player.Addr, "execaddr", action.execaddr, "amount", value, "err", err) logger.Error("GameAbort", "addr", player.Addr, "execaddr", action.execaddr, "amount", value, "err", err)
continue continue
} }
logs = append(logs, receipt.Logs...) logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
} }
...@@ -842,10 +825,15 @@ func (action *Action) ChangeAllAddrIndex(game *pkt.GuessGame) { ...@@ -842,10 +825,15 @@ func (action *Action) ChangeAllAddrIndex(game *pkt.GuessGame) {
} }
func (action *Action) RefreshStatusByTime(game *pkt.GuessGame) (canBet bool) { func (action *Action) RefreshStatusByTime(game *pkt.GuessGame) (canBet bool) {
//如果完全由管理员驱动状态变化,则不需要做如下判断保护。
if game.DrivenByAdmin {
return true
}
// 检查区块高度是否超过最大下注高度限制,看是否可以下注 // 检查区块高度是否超过最大下注高度限制,看是否可以下注
if game.GetMaxHeight() <= action.height { if game.GetMaxBetHeight() <= action.height {
logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "Height over limit", logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "Height over limit",
action.height, "MaxHeight", game.GetMaxHeight()) action.height, "MaxHeight", game.GetMaxBetHeight())
if game.GetExpireHeight() > action.height { if game.GetExpireHeight() > action.height {
action.ChangeStatus(game, pkt.GuessGameStatusStopBet) action.ChangeStatus(game, pkt.GuessGameStatusStopBet)
} else { } else {
...@@ -857,11 +845,11 @@ func (action *Action) RefreshStatusByTime(game *pkt.GuessGame) (canBet bool) { ...@@ -857,11 +845,11 @@ func (action *Action) RefreshStatusByTime(game *pkt.GuessGame) (canBet bool) {
} }
// 检查区块高度是否超过下注时间限制,看是否可以下注 // 检查区块高度是否超过下注时间限制,看是否可以下注
if len(game.GetMaxTime()) > 0 { if len(game.GetMaxBetTime()) > 0 {
tMax, err := time.Parse("2006-01-02 15:04:05", game.GetMaxTime()) tMax, err := time.Parse("2006-01-02 15:04:05", game.GetMaxBetTime())
if err != nil { if err != nil {
logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "Parse MaxTime failed", logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "Parse MaxTime failed",
game.GetMaxTime()) game.GetMaxBetTime())
canBet = true canBet = true
return canBet return canBet
} }
...@@ -877,7 +865,7 @@ func (action *Action) RefreshStatusByTime(game *pkt.GuessGame) (canBet bool) { ...@@ -877,7 +865,7 @@ func (action *Action) RefreshStatusByTime(game *pkt.GuessGame) (canBet bool) {
tNow := time.Now() tNow := time.Now()
if tNow.After(tMax) { if tNow.After(tMax) {
logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "Time over MaxTime", logger.Error("GameBet", "addr", action.fromaddr, "execaddr", action.execaddr, "Time over MaxTime",
game.GetMaxTime()) game.GetMaxBetTime())
if tNow.After(tExpire) { if tNow.After(tExpire) {
action.ChangeStatus(game, pkt.GuessGameStatusTimeOut) action.ChangeStatus(game, pkt.GuessGameStatusTimeOut)
...@@ -895,28 +883,34 @@ func (action *Action) RefreshStatusByTime(game *pkt.GuessGame) (canBet bool) { ...@@ -895,28 +883,34 @@ func (action *Action) RefreshStatusByTime(game *pkt.GuessGame) (canBet bool) {
} }
func (action *Action) CheckTime(start *pkt.GuessGameStart) bool { func (action *Action) CheckTime(start *pkt.GuessGameStart) bool {
if action.height + MinBetBlockNum > start.MaxHeight || start.MaxHeight + MinBetTimeoutNum > start.ExpireHeight { if len(start.MaxBetTime) == 0 && len(start.Expire) == 0 && start.MaxBetHeight == 0 && start.ExpireHeight == 0 {
//如果上述字段都不携带,则认为完全由admin的指令驱动。
start.DrivenByAdmin = true
return true
}
if action.height + MinBetBlockNum > start.MaxBetHeight || start.MaxBetHeight + MinBetTimeoutNum > start.ExpireHeight {
return false return false
} }
tNow := time.Now() tNow := time.Now()
d1, _ := time.ParseDuration(MinBetTimeInterval) //最短开奖时间 d1, _ := time.ParseDuration(MinBetTimeInterval) //最短开奖时间
d2, _ := time.ParseDuration(MinBetTimeoutInterval) //最短游戏过期时间 d2, _ := time.ParseDuration(MinBetTimeoutInterval) //最短游戏过期时间
if len(start.GetMaxTime()) == 0 { if len(start.GetMaxBetTime()) == 0 {
tNow.Add(d1) tNow.Add(d1)
start.MaxTime = tNow.Format("2006-01-02 15:04:05") start.MaxBetTime = tNow.Format("2006-01-02 15:04:05")
} }
if len(start.GetExpire()) == 0 { if len(start.GetExpire()) == 0 {
tMax, _ := time.Parse("2006-01-02 15:04:05", start.GetMaxTime()) tMax, _ := time.Parse("2006-01-02 15:04:05", start.GetMaxBetTime())
tMax.Add(d2) tMax.Add(d2)
start.Expire = tMax.Format("2006-01-02 15:04:05") start.Expire = tMax.Format("2006-01-02 15:04:05")
} }
tMax, err := time.Parse("2006-01-02 15:04:05", start.GetMaxTime()) tMax, err := time.Parse("2006-01-02 15:04:05", start.GetMaxBetTime())
if err != nil { if err != nil {
logger.Error("CheckTime", "addr", action.fromaddr, "execaddr", action.execaddr, "Parse MaxTime failed", logger.Error("CheckTime", "addr", action.fromaddr, "execaddr", action.execaddr, "Parse MaxTime failed",
start.GetMaxTime()) start.GetMaxBetTime())
return false return false
} }
......
...@@ -30,15 +30,6 @@ func (g *Guess) Query_QueryGameByAddr(in *pkt.QueryGuessGameInfo) (types.Message ...@@ -30,15 +30,6 @@ func (g *Guess) Query_QueryGameByAddr(in *pkt.QueryGuessGameInfo) (types.Message
return records, nil return records, nil
} }
func (g *Guess) Query_QueryGameByAddrStatus(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByAddr(g.GetLocalDB(), in.Addr, in.Index)
if err != nil {
return nil, err
}
return records, nil
}
func (g *Guess) Query_QueryGameByStatus(in *pkt.QueryGuessGameInfo) (types.Message, error) { func (g *Guess) Query_QueryGameByStatus(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByStatus(g.GetLocalDB(), in.Status, in.Index) records, err := getGameListByStatus(g.GetLocalDB(), in.Status, in.Index)
if err != nil { if err != nil {
...@@ -57,7 +48,7 @@ func (g *Guess) Query_QueryGameByAdminAddr(in *pkt.QueryGuessGameInfo) (types.Me ...@@ -57,7 +48,7 @@ func (g *Guess) Query_QueryGameByAdminAddr(in *pkt.QueryGuessGameInfo) (types.Me
return records, nil return records, nil
} }
func (g *Guess) Query_QueryGameByAddrStatusAddr(in *pkt.QueryGuessGameInfo) (types.Message, error) { func (g *Guess) Query_QueryGameByAddrStatus(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByAddrStatus(g.GetLocalDB(), in.Addr, in.Status, in.Index) records, err := getGameListByAddrStatus(g.GetLocalDB(), in.Addr, in.Status, in.Index)
if err != nil { if err != nil {
return nil, err return nil, err
...@@ -66,7 +57,7 @@ func (g *Guess) Query_QueryGameByAddrStatusAddr(in *pkt.QueryGuessGameInfo) (typ ...@@ -66,7 +57,7 @@ func (g *Guess) Query_QueryGameByAddrStatusAddr(in *pkt.QueryGuessGameInfo) (typ
return records, nil return records, nil
} }
func (g *Guess) Query_QueryGameByAdminStatusAddr(in *pkt.QueryGuessGameInfo) (types.Message, error) { func (g *Guess) Query_QueryGameByAdminStatus(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByAdminStatus(g.GetLocalDB(), in.AdminAddr, in.Status, in.Index) records, err := getGameListByAdminStatus(g.GetLocalDB(), in.AdminAddr, in.Status, in.Index)
if err != nil { if err != nil {
return nil, err return nil, err
...@@ -75,7 +66,7 @@ func (g *Guess) Query_QueryGameByAdminStatusAddr(in *pkt.QueryGuessGameInfo) (ty ...@@ -75,7 +66,7 @@ func (g *Guess) Query_QueryGameByAdminStatusAddr(in *pkt.QueryGuessGameInfo) (ty
return records, nil return records, nil
} }
func (g *Guess) Query_QueryGameByCategoryStatusAddr(in *pkt.QueryGuessGameInfo) (types.Message, error) { func (g *Guess) Query_QueryGameByCategoryStatus(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByCategoryStatus(g.GetLocalDB(), in.Category, in.Status, in.Index) records, err := getGameListByCategoryStatus(g.GetLocalDB(), in.Category, in.Status, in.Index)
if err != nil { if err != nil {
return nil, err return nil, err
......
...@@ -14,12 +14,11 @@ message GuessGame { ...@@ -14,12 +14,11 @@ message GuessGame {
string topic = 6; //主题 string topic = 6; //主题
string category = 7; //分类 string category = 7; //分类
string options = 8; //选项 string options = 8; //选项
string maxTime = 9; //截止下注时间 string maxBetTime = 9; //截止下注时间
int64 maxHeight = 10; //截止下注的块高 int64 maxBetHeight = 10; //截止下注的块高
string symbol = 11; //bty或者具体token string symbol = 11; //bty或者具体token
string exec = 12; //coins或者token string exec = 12; //coins或者token
uint32 oneBet = 13; //一注等于多少bty或者token uint32 maxBetsOneTime= 14; //单次可以下多少注,默认100
uint32 maxBets = 14; //单次可以下多少注,默认100
uint32 maxBetsNumber = 15; //最多可以下多少注 uint32 maxBetsNumber = 15; //最多可以下多少注
int64 devFeeFactor = 16; //开发者抽成比例 int64 devFeeFactor = 16; //开发者抽成比例
string devFeeAddr = 17; //开发者地址 string devFeeAddr = 17; //开发者地址
...@@ -34,6 +33,7 @@ message GuessGame { ...@@ -34,6 +33,7 @@ message GuessGame {
GuessBetStat betStat = 26; GuessBetStat betStat = 26;
int64 index = 27; int64 index = 27;
int64 preIndex = 28; int64 preIndex = 28;
bool drivenByAdmin = 29;
} }
message GuessPlayer { message GuessPlayer {
...@@ -80,12 +80,11 @@ message GuessGameStart{ ...@@ -80,12 +80,11 @@ message GuessGameStart{
string topic = 1; string topic = 1;
string options = 2; string options = 2;
string category = 3; string category = 3;
string maxTime = 4; string maxBetTime = 4;
int64 maxHeight = 5; int64 maxBetHeight = 5;
string symbol = 6; string symbol = 6;
string exec = 7; string exec = 7;
uint32 oneBet = 8; uint32 maxBetsOneTime= 9;
uint32 maxBets = 9;
uint32 maxBetsNumber = 10; uint32 maxBetsNumber = 10;
int64 devFeeFactor = 11; //开发者抽成比例 int64 devFeeFactor = 11; //开发者抽成比例
string devFeeAddr = 12; //开发者地址 string devFeeAddr = 12; //开发者地址
...@@ -93,7 +92,7 @@ message GuessGameStart{ ...@@ -93,7 +92,7 @@ message GuessGameStart{
string platFeeAddr = 14; //平台地址 string platFeeAddr = 14; //平台地址
string expire = 15; string expire = 15;
int64 expireHeight = 16; int64 expireHeight = 16;
int64 fee = 17; bool drivenByAdmin = 17;
} }
//参与游戏下注 //参与游戏下注
...@@ -101,33 +100,28 @@ message GuessGameBet{ ...@@ -101,33 +100,28 @@ message GuessGameBet{
string gameId = 1; string gameId = 1;
string option = 2; string option = 2;
uint32 betsNum = 3; uint32 betsNum = 3;
int64 fee = 4;
} }
//游戏停止下注 //游戏停止下注
message GuessGameStopBet{ message GuessGameStopBet{
string gameId = 1; string gameId = 1;
int64 fee = 2;
} }
//游戏异常终止,退还下注 //游戏异常终止,退还下注
message GuessGameAbort{ message GuessGameAbort{
string gameId = 1; string gameId = 1;
int64 fee = 2;
} }
//游戏结果揭晓 //游戏结果揭晓
message GuessGamePublish{ message GuessGamePublish{
string gameId = 1; string gameId = 1;
string result = 2; string result = 2;
int64 fee = 3;
} }
//查询游戏结果 //查询游戏结果
message GuessGameQuery{ message GuessGameQuery{
string gameId = 1; string gameId = 1;
uint32 ty = 2; uint32 ty = 2;
int64 fee = 3;
} }
...@@ -168,20 +162,19 @@ message GuessStartTxReq { ...@@ -168,20 +162,19 @@ message GuessStartTxReq {
string topic = 1; string topic = 1;
string options = 2; string options = 2;
int64 startTime = 3; int64 startTime = 3;
string maxTime = 4; string maxBetTime = 4;
uint32 maxHeight = 5; int64 maxBetHeight = 5;
string symbol = 6; string symbol = 6;
string exec = 7; string exec = 7;
uint32 oneBet = 8; uint32 maxBetsOneTime = 8;
uint32 maxBets = 9; uint32 maxBetsNumber = 9;
uint32 maxBetsNumber = 10; int64 devFeeFactor = 10;
int64 devFeeFactor = 11; string devFeeAddr = 11;
string devFeeAddr = 12; int64 platFeeFactor = 12;
int64 platFeeFactor = 13; string platFeeAddr = 13;
string platFeeAddr = 14; string feeAddr = 14;
string feeAddr = 15; string expire = 15;
string expire = 16; int64 expireHeight = 16;
uint32 expireHeight = 17;
} }
message GuessBetTxReq { message GuessBetTxReq {
......
...@@ -19,16 +19,18 @@ func (c *Jrpc) GuessStartTx(parm *pb.GuessStartTxReq, result *interface{}) error ...@@ -19,16 +19,18 @@ func (c *Jrpc) GuessStartTx(parm *pb.GuessStartTxReq, result *interface{}) error
head := &pb.GuessGameStart{ head := &pb.GuessGameStart{
Topic: parm.Topic, Topic: parm.Topic,
Options: parm.Options, Options: parm.Options,
MaxHeight: parm.MaxHeight, MaxBetTime: parm.MaxBetTime,
MaxBetHeight: parm.MaxBetHeight,
Symbol: parm.Symbol, Symbol: parm.Symbol,
Exec: parm.Exec, Exec: parm.Exec,
OneBet: parm.OneBet, MaxBetsOneTime: parm.MaxBetsOneTime,
MaxBets: parm.MaxBets,
MaxBetsNumber: parm.MaxBetsNumber, MaxBetsNumber: parm.MaxBetsNumber,
DevFeeFactor: parm.DevFeeFactor, DevFeeFactor: parm.DevFeeFactor,
DevFeeAddr: parm.DevFeeAddr, DevFeeAddr: parm.DevFeeAddr,
PlatFeeFactor: parm.PlatFeeFactor, PlatFeeFactor: parm.PlatFeeFactor,
PlatFeeAddr: parm.PlatFeeAddr, PlatFeeAddr: parm.PlatFeeAddr,
Expire: parm.Expire,
ExpireHeight: parm.ExpireHeight,
} }
reply, err := c.cli.GuessStart(context.Background(), head) reply, err := c.cli.GuessStart(context.Background(), head)
......
...@@ -46,12 +46,14 @@ var ( ...@@ -46,12 +46,14 @@ var (
const ( const (
//查询方法名 //查询方法名
FuncName_QueryGameListByIds = "QueryGameListByIds" FuncName_QueryGamesByIds = "QueryGamesByIds"
FuncName_QueryGameById = "QueryGameById" FuncName_QueryGameById = "QueryGameById"
FuncName_QueryGameByAddr = "QueryGameByAddr" FuncName_QueryGameByAddr = "QueryGameByAddr"
FuncName_QueryGameByStatus = "QueryGameByStatus" FuncName_QueryGameByStatus = "QueryGameByStatus"
//FuncName_QueryGameByAdminAddr = "QueryGameByAdminAddr" FuncName_QueryGameByAdminAddr = "QueryGameByAdminAddr"
//FuncName_QueryGameByCategory = "QueryGameByCategory" FuncName_QueryGameByAddrStatus = "QueryGameByAddrStatus"
FuncName_QueryGameByAdminStatus = "QueryGameByAdminStatus"
FuncName_QueryGameByCategoryStatus="QueryGameByCategoryStatus"
) )
const ( const (
......
// Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package types
import "errors"
// Errors for lottery
var (
ErrNoPrivilege = errors.New("ErrNoPrivilege")
ErrGuessStatus = errors.New("ErrGuessStatus")
)
...@@ -33,12 +33,11 @@ type GuessGame struct { ...@@ -33,12 +33,11 @@ type GuessGame struct {
Topic string `protobuf:"bytes,6,opt,name=topic,proto3" json:"topic,omitempty"` Topic string `protobuf:"bytes,6,opt,name=topic,proto3" json:"topic,omitempty"`
Category string `protobuf:"bytes,7,opt,name=category,proto3" json:"category,omitempty"` Category string `protobuf:"bytes,7,opt,name=category,proto3" json:"category,omitempty"`
Options string `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"` Options string `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"`
MaxTime string `protobuf:"bytes,9,opt,name=maxTime,proto3" json:"maxTime,omitempty"` MaxBetTime string `protobuf:"bytes,9,opt,name=maxBetTime,proto3" json:"maxBetTime,omitempty"`
MaxHeight int64 `protobuf:"varint,10,opt,name=maxHeight,proto3" json:"maxHeight,omitempty"` MaxBetHeight int64 `protobuf:"varint,10,opt,name=maxBetHeight,proto3" json:"maxBetHeight,omitempty"`
Symbol string `protobuf:"bytes,11,opt,name=symbol,proto3" json:"symbol,omitempty"` Symbol string `protobuf:"bytes,11,opt,name=symbol,proto3" json:"symbol,omitempty"`
Exec string `protobuf:"bytes,12,opt,name=exec,proto3" json:"exec,omitempty"` Exec string `protobuf:"bytes,12,opt,name=exec,proto3" json:"exec,omitempty"`
OneBet uint32 `protobuf:"varint,13,opt,name=oneBet,proto3" json:"oneBet,omitempty"` MaxBetsOneTime uint32 `protobuf:"varint,14,opt,name=maxBetsOneTime,proto3" json:"maxBetsOneTime,omitempty"`
MaxBets uint32 `protobuf:"varint,14,opt,name=maxBets,proto3" json:"maxBets,omitempty"`
MaxBetsNumber uint32 `protobuf:"varint,15,opt,name=maxBetsNumber,proto3" json:"maxBetsNumber,omitempty"` MaxBetsNumber uint32 `protobuf:"varint,15,opt,name=maxBetsNumber,proto3" json:"maxBetsNumber,omitempty"`
DevFeeFactor int64 `protobuf:"varint,16,opt,name=devFeeFactor,proto3" json:"devFeeFactor,omitempty"` DevFeeFactor int64 `protobuf:"varint,16,opt,name=devFeeFactor,proto3" json:"devFeeFactor,omitempty"`
DevFeeAddr string `protobuf:"bytes,17,opt,name=devFeeAddr,proto3" json:"devFeeAddr,omitempty"` DevFeeAddr string `protobuf:"bytes,17,opt,name=devFeeAddr,proto3" json:"devFeeAddr,omitempty"`
...@@ -53,6 +52,7 @@ type GuessGame struct { ...@@ -53,6 +52,7 @@ type GuessGame struct {
BetStat *GuessBetStat `protobuf:"bytes,26,opt,name=betStat,proto3" json:"betStat,omitempty"` BetStat *GuessBetStat `protobuf:"bytes,26,opt,name=betStat,proto3" json:"betStat,omitempty"`
Index int64 `protobuf:"varint,27,opt,name=index,proto3" json:"index,omitempty"` Index int64 `protobuf:"varint,27,opt,name=index,proto3" json:"index,omitempty"`
PreIndex int64 `protobuf:"varint,28,opt,name=preIndex,proto3" json:"preIndex,omitempty"` PreIndex int64 `protobuf:"varint,28,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
DrivenByAdmin bool `protobuf:"varint,29,opt,name=drivenByAdmin,proto3" json:"drivenByAdmin,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -139,16 +139,16 @@ func (m *GuessGame) GetOptions() string { ...@@ -139,16 +139,16 @@ func (m *GuessGame) GetOptions() string {
return "" return ""
} }
func (m *GuessGame) GetMaxTime() string { func (m *GuessGame) GetMaxBetTime() string {
if m != nil { if m != nil {
return m.MaxTime return m.MaxBetTime
} }
return "" return ""
} }
func (m *GuessGame) GetMaxHeight() int64 { func (m *GuessGame) GetMaxBetHeight() int64 {
if m != nil { if m != nil {
return m.MaxHeight return m.MaxBetHeight
} }
return 0 return 0
} }
...@@ -167,16 +167,9 @@ func (m *GuessGame) GetExec() string { ...@@ -167,16 +167,9 @@ func (m *GuessGame) GetExec() string {
return "" return ""
} }
func (m *GuessGame) GetOneBet() uint32 { func (m *GuessGame) GetMaxBetsOneTime() uint32 {
if m != nil { if m != nil {
return m.OneBet return m.MaxBetsOneTime
}
return 0
}
func (m *GuessGame) GetMaxBets() uint32 {
if m != nil {
return m.MaxBets
} }
return 0 return 0
} }
...@@ -279,6 +272,13 @@ func (m *GuessGame) GetPreIndex() int64 { ...@@ -279,6 +272,13 @@ func (m *GuessGame) GetPreIndex() int64 {
return 0 return 0
} }
func (m *GuessGame) GetDrivenByAdmin() bool {
if m != nil {
return m.DrivenByAdmin
}
return false
}
type GuessPlayer struct { type GuessPlayer struct {
Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"` Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
Bet *GuessBet `protobuf:"bytes,2,opt,name=bet,proto3" json:"bet,omitempty"` Bet *GuessBet `protobuf:"bytes,2,opt,name=bet,proto3" json:"bet,omitempty"`
...@@ -807,12 +807,11 @@ type GuessGameStart struct { ...@@ -807,12 +807,11 @@ type GuessGameStart struct {
Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
Options string `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` Options string `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"`
Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"`
MaxTime string `protobuf:"bytes,4,opt,name=maxTime,proto3" json:"maxTime,omitempty"` MaxBetTime string `protobuf:"bytes,4,opt,name=maxBetTime,proto3" json:"maxBetTime,omitempty"`
MaxHeight int64 `protobuf:"varint,5,opt,name=maxHeight,proto3" json:"maxHeight,omitempty"` MaxBetHeight int64 `protobuf:"varint,5,opt,name=maxBetHeight,proto3" json:"maxBetHeight,omitempty"`
Symbol string `protobuf:"bytes,6,opt,name=symbol,proto3" json:"symbol,omitempty"` Symbol string `protobuf:"bytes,6,opt,name=symbol,proto3" json:"symbol,omitempty"`
Exec string `protobuf:"bytes,7,opt,name=exec,proto3" json:"exec,omitempty"` Exec string `protobuf:"bytes,7,opt,name=exec,proto3" json:"exec,omitempty"`
OneBet uint32 `protobuf:"varint,8,opt,name=oneBet,proto3" json:"oneBet,omitempty"` MaxBetsOneTime uint32 `protobuf:"varint,9,opt,name=maxBetsOneTime,proto3" json:"maxBetsOneTime,omitempty"`
MaxBets uint32 `protobuf:"varint,9,opt,name=maxBets,proto3" json:"maxBets,omitempty"`
MaxBetsNumber uint32 `protobuf:"varint,10,opt,name=maxBetsNumber,proto3" json:"maxBetsNumber,omitempty"` MaxBetsNumber uint32 `protobuf:"varint,10,opt,name=maxBetsNumber,proto3" json:"maxBetsNumber,omitempty"`
DevFeeFactor int64 `protobuf:"varint,11,opt,name=devFeeFactor,proto3" json:"devFeeFactor,omitempty"` DevFeeFactor int64 `protobuf:"varint,11,opt,name=devFeeFactor,proto3" json:"devFeeFactor,omitempty"`
DevFeeAddr string `protobuf:"bytes,12,opt,name=devFeeAddr,proto3" json:"devFeeAddr,omitempty"` DevFeeAddr string `protobuf:"bytes,12,opt,name=devFeeAddr,proto3" json:"devFeeAddr,omitempty"`
...@@ -820,7 +819,7 @@ type GuessGameStart struct { ...@@ -820,7 +819,7 @@ type GuessGameStart struct {
PlatFeeAddr string `protobuf:"bytes,14,opt,name=platFeeAddr,proto3" json:"platFeeAddr,omitempty"` PlatFeeAddr string `protobuf:"bytes,14,opt,name=platFeeAddr,proto3" json:"platFeeAddr,omitempty"`
Expire string `protobuf:"bytes,15,opt,name=expire,proto3" json:"expire,omitempty"` Expire string `protobuf:"bytes,15,opt,name=expire,proto3" json:"expire,omitempty"`
ExpireHeight int64 `protobuf:"varint,16,opt,name=expireHeight,proto3" json:"expireHeight,omitempty"` ExpireHeight int64 `protobuf:"varint,16,opt,name=expireHeight,proto3" json:"expireHeight,omitempty"`
Fee int64 `protobuf:"varint,17,opt,name=fee,proto3" json:"fee,omitempty"` DrivenByAdmin bool `protobuf:"varint,17,opt,name=drivenByAdmin,proto3" json:"drivenByAdmin,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -872,16 +871,16 @@ func (m *GuessGameStart) GetCategory() string { ...@@ -872,16 +871,16 @@ func (m *GuessGameStart) GetCategory() string {
return "" return ""
} }
func (m *GuessGameStart) GetMaxTime() string { func (m *GuessGameStart) GetMaxBetTime() string {
if m != nil { if m != nil {
return m.MaxTime return m.MaxBetTime
} }
return "" return ""
} }
func (m *GuessGameStart) GetMaxHeight() int64 { func (m *GuessGameStart) GetMaxBetHeight() int64 {
if m != nil { if m != nil {
return m.MaxHeight return m.MaxBetHeight
} }
return 0 return 0
} }
...@@ -900,16 +899,9 @@ func (m *GuessGameStart) GetExec() string { ...@@ -900,16 +899,9 @@ func (m *GuessGameStart) GetExec() string {
return "" return ""
} }
func (m *GuessGameStart) GetOneBet() uint32 { func (m *GuessGameStart) GetMaxBetsOneTime() uint32 {
if m != nil { if m != nil {
return m.OneBet return m.MaxBetsOneTime
}
return 0
}
func (m *GuessGameStart) GetMaxBets() uint32 {
if m != nil {
return m.MaxBets
} }
return 0 return 0
} }
...@@ -963,11 +955,11 @@ func (m *GuessGameStart) GetExpireHeight() int64 { ...@@ -963,11 +955,11 @@ func (m *GuessGameStart) GetExpireHeight() int64 {
return 0 return 0
} }
func (m *GuessGameStart) GetFee() int64 { func (m *GuessGameStart) GetDrivenByAdmin() bool {
if m != nil { if m != nil {
return m.Fee return m.DrivenByAdmin
} }
return 0 return false
} }
//参与游戏下注 //参与游戏下注
...@@ -975,7 +967,6 @@ type GuessGameBet struct { ...@@ -975,7 +967,6 @@ type GuessGameBet struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"` GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Option string `protobuf:"bytes,2,opt,name=option,proto3" json:"option,omitempty"` Option string `protobuf:"bytes,2,opt,name=option,proto3" json:"option,omitempty"`
BetsNum uint32 `protobuf:"varint,3,opt,name=betsNum,proto3" json:"betsNum,omitempty"` BetsNum uint32 `protobuf:"varint,3,opt,name=betsNum,proto3" json:"betsNum,omitempty"`
Fee int64 `protobuf:"varint,4,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1027,17 +1018,9 @@ func (m *GuessGameBet) GetBetsNum() uint32 { ...@@ -1027,17 +1018,9 @@ func (m *GuessGameBet) GetBetsNum() uint32 {
return 0 return 0
} }
func (m *GuessGameBet) GetFee() int64 {
if m != nil {
return m.Fee
}
return 0
}
//游戏停止下注 //游戏停止下注
type GuessGameStopBet struct { type GuessGameStopBet struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"` GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Fee int64 `protobuf:"varint,2,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1075,17 +1058,9 @@ func (m *GuessGameStopBet) GetGameId() string { ...@@ -1075,17 +1058,9 @@ func (m *GuessGameStopBet) GetGameId() string {
return "" return ""
} }
func (m *GuessGameStopBet) GetFee() int64 {
if m != nil {
return m.Fee
}
return 0
}
//游戏异常终止,退还下注 //游戏异常终止,退还下注
type GuessGameAbort struct { type GuessGameAbort struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"` GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Fee int64 `protobuf:"varint,2,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1123,18 +1098,10 @@ func (m *GuessGameAbort) GetGameId() string { ...@@ -1123,18 +1098,10 @@ func (m *GuessGameAbort) GetGameId() string {
return "" return ""
} }
func (m *GuessGameAbort) GetFee() int64 {
if m != nil {
return m.Fee
}
return 0
}
//游戏结果揭晓 //游戏结果揭晓
type GuessGamePublish struct { type GuessGamePublish struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"` GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Result string `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` Result string `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
Fee int64 `protobuf:"varint,3,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1179,18 +1146,10 @@ func (m *GuessGamePublish) GetResult() string { ...@@ -1179,18 +1146,10 @@ func (m *GuessGamePublish) GetResult() string {
return "" return ""
} }
func (m *GuessGamePublish) GetFee() int64 {
if m != nil {
return m.Fee
}
return 0
}
//查询游戏结果 //查询游戏结果
type GuessGameQuery struct { type GuessGameQuery struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"` GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Ty uint32 `protobuf:"varint,2,opt,name=ty,proto3" json:"ty,omitempty"` Ty uint32 `protobuf:"varint,2,opt,name=ty,proto3" json:"ty,omitempty"`
Fee int64 `protobuf:"varint,3,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1235,13 +1194,6 @@ func (m *GuessGameQuery) GetTy() uint32 { ...@@ -1235,13 +1194,6 @@ func (m *GuessGameQuery) GetTy() uint32 {
return 0 return 0
} }
func (m *GuessGameQuery) GetFee() int64 {
if m != nil {
return m.Fee
}
return 0
}
type QueryGuessGameInfo struct { type QueryGuessGameInfo struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"` GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"` Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
...@@ -1545,20 +1497,19 @@ type GuessStartTxReq struct { ...@@ -1545,20 +1497,19 @@ type GuessStartTxReq struct {
Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
Options string `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` Options string `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"`
StartTime int64 `protobuf:"varint,3,opt,name=startTime,proto3" json:"startTime,omitempty"` StartTime int64 `protobuf:"varint,3,opt,name=startTime,proto3" json:"startTime,omitempty"`
MaxTime string `protobuf:"bytes,4,opt,name=maxTime,proto3" json:"maxTime,omitempty"` MaxBetTime string `protobuf:"bytes,4,opt,name=maxBetTime,proto3" json:"maxBetTime,omitempty"`
MaxHeight uint32 `protobuf:"varint,5,opt,name=maxHeight,proto3" json:"maxHeight,omitempty"` MaxBetHeight int64 `protobuf:"varint,5,opt,name=maxBetHeight,proto3" json:"maxBetHeight,omitempty"`
Symbol string `protobuf:"bytes,6,opt,name=symbol,proto3" json:"symbol,omitempty"` Symbol string `protobuf:"bytes,6,opt,name=symbol,proto3" json:"symbol,omitempty"`
Exec string `protobuf:"bytes,7,opt,name=exec,proto3" json:"exec,omitempty"` Exec string `protobuf:"bytes,7,opt,name=exec,proto3" json:"exec,omitempty"`
OneBet uint32 `protobuf:"varint,8,opt,name=oneBet,proto3" json:"oneBet,omitempty"` MaxBetsOneTime uint32 `protobuf:"varint,8,opt,name=maxBetsOneTime,proto3" json:"maxBetsOneTime,omitempty"`
MaxBets uint32 `protobuf:"varint,9,opt,name=maxBets,proto3" json:"maxBets,omitempty"` MaxBetsNumber uint32 `protobuf:"varint,9,opt,name=maxBetsNumber,proto3" json:"maxBetsNumber,omitempty"`
MaxBetsNumber uint32 `protobuf:"varint,10,opt,name=maxBetsNumber,proto3" json:"maxBetsNumber,omitempty"` DevFeeFactor int64 `protobuf:"varint,10,opt,name=devFeeFactor,proto3" json:"devFeeFactor,omitempty"`
DevFeeFactor int64 `protobuf:"varint,11,opt,name=devFeeFactor,proto3" json:"devFeeFactor,omitempty"` DevFeeAddr string `protobuf:"bytes,11,opt,name=devFeeAddr,proto3" json:"devFeeAddr,omitempty"`
DevFeeAddr string `protobuf:"bytes,12,opt,name=devFeeAddr,proto3" json:"devFeeAddr,omitempty"` PlatFeeFactor int64 `protobuf:"varint,12,opt,name=platFeeFactor,proto3" json:"platFeeFactor,omitempty"`
PlatFeeFactor int64 `protobuf:"varint,13,opt,name=platFeeFactor,proto3" json:"platFeeFactor,omitempty"` PlatFeeAddr string `protobuf:"bytes,13,opt,name=platFeeAddr,proto3" json:"platFeeAddr,omitempty"`
PlatFeeAddr string `protobuf:"bytes,14,opt,name=platFeeAddr,proto3" json:"platFeeAddr,omitempty"` FeeAddr string `protobuf:"bytes,14,opt,name=feeAddr,proto3" json:"feeAddr,omitempty"`
FeeAddr string `protobuf:"bytes,15,opt,name=feeAddr,proto3" json:"feeAddr,omitempty"` Expire string `protobuf:"bytes,15,opt,name=expire,proto3" json:"expire,omitempty"`
Expire string `protobuf:"bytes,16,opt,name=expire,proto3" json:"expire,omitempty"` ExpireHeight int64 `protobuf:"varint,16,opt,name=expireHeight,proto3" json:"expireHeight,omitempty"`
ExpireHeight uint32 `protobuf:"varint,17,opt,name=expireHeight,proto3" json:"expireHeight,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1610,16 +1561,16 @@ func (m *GuessStartTxReq) GetStartTime() int64 { ...@@ -1610,16 +1561,16 @@ func (m *GuessStartTxReq) GetStartTime() int64 {
return 0 return 0
} }
func (m *GuessStartTxReq) GetMaxTime() string { func (m *GuessStartTxReq) GetMaxBetTime() string {
if m != nil { if m != nil {
return m.MaxTime return m.MaxBetTime
} }
return "" return ""
} }
func (m *GuessStartTxReq) GetMaxHeight() uint32 { func (m *GuessStartTxReq) GetMaxBetHeight() int64 {
if m != nil { if m != nil {
return m.MaxHeight return m.MaxBetHeight
} }
return 0 return 0
} }
...@@ -1638,16 +1589,9 @@ func (m *GuessStartTxReq) GetExec() string { ...@@ -1638,16 +1589,9 @@ func (m *GuessStartTxReq) GetExec() string {
return "" return ""
} }
func (m *GuessStartTxReq) GetOneBet() uint32 { func (m *GuessStartTxReq) GetMaxBetsOneTime() uint32 {
if m != nil {
return m.OneBet
}
return 0
}
func (m *GuessStartTxReq) GetMaxBets() uint32 {
if m != nil { if m != nil {
return m.MaxBets return m.MaxBetsOneTime
} }
return 0 return 0
} }
...@@ -1701,7 +1645,7 @@ func (m *GuessStartTxReq) GetExpire() string { ...@@ -1701,7 +1645,7 @@ func (m *GuessStartTxReq) GetExpire() string {
return "" return ""
} }
func (m *GuessStartTxReq) GetExpireHeight() uint32 { func (m *GuessStartTxReq) GetExpireHeight() int64 {
if m != nil { if m != nil {
return m.ExpireHeight return m.ExpireHeight
} }
...@@ -2021,88 +1965,88 @@ func init() { ...@@ -2021,88 +1965,88 @@ func init() {
func init() { proto.RegisterFile("guess.proto", fileDescriptor_7574406c5d3430e8) } func init() { proto.RegisterFile("guess.proto", fileDescriptor_7574406c5d3430e8) }
var fileDescriptor_7574406c5d3430e8 = []byte{ var fileDescriptor_7574406c5d3430e8 = []byte{
// 1281 bytes of a gzipped FileDescriptorProto // 1284 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x4b, 0x6f, 0xdb, 0xc6, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcd, 0x8e, 0xe3, 0x44,
0x13, 0x8f, 0x48, 0x51, 0x8f, 0x91, 0x65, 0xcb, 0xeb, 0x3c, 0xf6, 0xef, 0x7f, 0x50, 0xa8, 0x44, 0x10, 0x9e, 0x38, 0x71, 0x7e, 0x2a, 0xc9, 0x4c, 0xa6, 0x67, 0x7f, 0xcc, 0x30, 0xa0, 0x60, 0xad,
0xd0, 0xaa, 0x87, 0xb8, 0x85, 0x02, 0xf4, 0x60, 0xb4, 0x07, 0x2b, 0x41, 0x62, 0xf7, 0x50, 0xa4, 0x96, 0x80, 0xb4, 0x03, 0xca, 0x4a, 0x08, 0xad, 0xc4, 0x61, 0xb2, 0xab, 0xdd, 0x99, 0x0b, 0x2c,
0xb4, 0x8b, 0x9c, 0x29, 0x69, 0x2d, 0xb3, 0x90, 0x44, 0x86, 0x5c, 0x05, 0xd2, 0xbd, 0xd7, 0x7e, 0x9e, 0x45, 0xcb, 0xd5, 0x49, 0x7a, 0x32, 0x96, 0x12, 0xdb, 0x6b, 0x77, 0x46, 0xc9, 0x9d, 0x03,
0x8f, 0x7c, 0x96, 0x7c, 0x91, 0xde, 0x7b, 0x2f, 0x50, 0xcc, 0xec, 0x52, 0x5c, 0x52, 0x94, 0x14, 0x17, 0xde, 0x83, 0x67, 0xe1, 0x45, 0xb8, 0xf3, 0x02, 0xa0, 0xaa, 0x6e, 0xc7, 0x6d, 0xc7, 0xf9,
0xf7, 0xdc, 0x1b, 0xe7, 0xb1, 0xf3, 0xd8, 0x9d, 0xf9, 0xcd, 0x48, 0xd0, 0x9a, 0x2c, 0x44, 0x92, 0x19, 0x38, 0x70, 0x4b, 0xfd, 0x74, 0x77, 0x75, 0x75, 0xd5, 0xf7, 0x95, 0x03, 0xcd, 0xc9, 0x9c,
0x9c, 0x45, 0x71, 0x28, 0x43, 0xe6, 0xc8, 0x55, 0x24, 0x92, 0xd3, 0x63, 0x19, 0xfb, 0xf3, 0xc4, 0xc7, 0xf1, 0x79, 0x18, 0x05, 0x22, 0x60, 0xa6, 0x58, 0x86, 0x3c, 0x3e, 0x3d, 0x16, 0x91, 0xeb,
0x1f, 0xc9, 0x20, 0x9c, 0x2b, 0x89, 0xfb, 0xa9, 0x06, 0xcd, 0x37, 0xa8, 0xf9, 0xc6, 0x9f, 0x09, 0xc7, 0xee, 0x48, 0x78, 0x81, 0x2f, 0x2d, 0xf6, 0x5f, 0x55, 0x68, 0xbc, 0x41, 0xcf, 0x37, 0xee,
0xf6, 0x18, 0x6a, 0x13, 0x7f, 0x26, 0xae, 0xc6, 0xbc, 0xd2, 0xad, 0xf4, 0x9a, 0x9e, 0xa6, 0x90, 0x8c, 0xb3, 0x47, 0x50, 0x9d, 0xb8, 0x33, 0x7e, 0x35, 0xb6, 0x4a, 0xdd, 0x52, 0xaf, 0xe1, 0x28,
0x9f, 0x48, 0x5f, 0x2e, 0x12, 0x6e, 0x75, 0x2b, 0x3d, 0xc7, 0xd3, 0x14, 0x7b, 0x0a, 0xcd, 0x28, 0x09, 0xf5, 0xb1, 0x70, 0xc5, 0x3c, 0xb6, 0x8c, 0x6e, 0xa9, 0x67, 0x3a, 0x4a, 0x62, 0x67, 0xd0,
0x16, 0xd7, 0x4a, 0x64, 0x93, 0x28, 0x63, 0xa0, 0x34, 0x91, 0x7e, 0x2c, 0x6f, 0x82, 0x99, 0xe0, 0x08, 0x23, 0x7e, 0x2d, 0x4d, 0x65, 0x32, 0xa5, 0x0a, 0xb4, 0xc6, 0xc2, 0x8d, 0xc4, 0x3b, 0x6f,
0xd5, 0x6e, 0xa5, 0x67, 0x7b, 0x19, 0x83, 0x75, 0xa1, 0xa5, 0x88, 0xe5, 0xa5, 0x9f, 0xdc, 0x71, 0xc6, 0xad, 0x4a, 0xb7, 0xd4, 0x2b, 0x3b, 0xa9, 0x82, 0x75, 0xa1, 0x29, 0x85, 0xc5, 0xa5, 0x1b,
0x87, 0x1c, 0x9a, 0x2c, 0xf6, 0x10, 0x1c, 0x19, 0x46, 0xc1, 0x88, 0xd7, 0x48, 0xa6, 0x08, 0x76, 0xdf, 0x5a, 0x26, 0x1d, 0xa8, 0xab, 0xd8, 0x03, 0x30, 0x45, 0x10, 0x7a, 0x23, 0xab, 0x4a, 0x36,
0x0a, 0x8d, 0x91, 0x2f, 0xc5, 0x24, 0x8c, 0x57, 0xbc, 0x4e, 0x82, 0x35, 0xcd, 0x38, 0xd4, 0xc3, 0x29, 0xb0, 0x53, 0xa8, 0x8f, 0x5c, 0xc1, 0x27, 0x41, 0xb4, 0xb4, 0x6a, 0x64, 0x58, 0xc9, 0xcc,
0x08, 0xb3, 0x4b, 0x78, 0x83, 0x44, 0x29, 0x89, 0x92, 0x99, 0xbf, 0xa4, 0x48, 0x9a, 0x4a, 0xa2, 0x82, 0x5a, 0x10, 0xe2, 0xed, 0x62, 0xab, 0x4e, 0xa6, 0x44, 0x64, 0x9f, 0x02, 0xcc, 0xdc, 0xc5,
0x49, 0x8c, 0x72, 0xe6, 0x2f, 0x2f, 0x45, 0x30, 0xb9, 0x93, 0x1c, 0x54, 0x94, 0x6b, 0x06, 0x65, 0x80, 0xcb, 0x60, 0x1a, 0x64, 0xd4, 0x34, 0xcc, 0x86, 0x96, 0x94, 0x2e, 0xb9, 0x37, 0xb9, 0x15,
0xbe, 0x9a, 0x0d, 0xc3, 0x29, 0x6f, 0xa9, 0x1b, 0x51, 0x14, 0x63, 0x50, 0x15, 0x4b, 0x31, 0xe2, 0x16, 0x50, 0xb8, 0x19, 0x1d, 0x65, 0x61, 0x39, 0x1b, 0x06, 0x53, 0xab, 0x29, 0xb3, 0x23, 0x25,
0x07, 0xc4, 0xa5, 0x6f, 0xd4, 0x0d, 0xe7, 0x62, 0x20, 0x24, 0x6f, 0x77, 0x2b, 0xbd, 0xb6, 0xa7, 0xc6, 0xa0, 0xc2, 0x17, 0x7c, 0x64, 0xb5, 0x48, 0x4b, 0xbf, 0xd9, 0x53, 0x38, 0x94, 0x6b, 0xe3,
0x29, 0xed, 0x7b, 0x20, 0x64, 0xc2, 0x0f, 0x49, 0x90, 0x92, 0xec, 0x19, 0xb4, 0xf5, 0xe7, 0xcf, 0x1f, 0x7c, 0x4e, 0x67, 0x1e, 0x76, 0x4b, 0xbd, 0xb6, 0x93, 0xd3, 0xb2, 0x27, 0xd0, 0x56, 0x9a,
0x8b, 0xd9, 0x50, 0xc4, 0xfc, 0x88, 0xe4, 0x79, 0x26, 0x73, 0xe1, 0x60, 0x2c, 0x3e, 0xbc, 0x16, 0xef, 0xe7, 0xb3, 0x21, 0x8f, 0xac, 0x23, 0x72, 0xcb, 0x2a, 0x31, 0xba, 0x31, 0xbf, 0x7b, 0xcd,
0xe2, 0xb5, 0x3f, 0x92, 0x61, 0xcc, 0x3b, 0x14, 0x64, 0x8e, 0xc7, 0xbe, 0x00, 0x50, 0xf4, 0xc5, 0xf9, 0x6b, 0x77, 0x24, 0x82, 0xc8, 0xea, 0xc8, 0xe8, 0x74, 0x1d, 0xde, 0x50, 0xca, 0x17, 0xe3,
0x78, 0x1c, 0xf3, 0x63, 0x8a, 0xca, 0xe0, 0xa0, 0xa7, 0x68, 0xea, 0xcb, 0xcc, 0x08, 0x23, 0x23, 0x71, 0x64, 0x1d, 0xcb, 0x1b, 0xa6, 0x1a, 0x3c, 0x29, 0x9c, 0xba, 0x22, 0xdd, 0x84, 0xd1, 0x26,
0x79, 0x26, 0xbe, 0x89, 0x66, 0x90, 0x99, 0x13, 0xf5, 0x26, 0x06, 0x0b, 0x73, 0x14, 0xcb, 0x28, 0x59, 0x25, 0xbe, 0x8a, 0x52, 0xd0, 0x36, 0x27, 0xf2, 0x55, 0x34, 0x15, 0x66, 0x81, 0x2f, 0x42,
0x88, 0x05, 0x7f, 0xa8, 0xee, 0x43, 0x51, 0x18, 0xa3, 0xfa, 0xd2, 0x17, 0xf9, 0x48, 0xc5, 0x68, 0x2f, 0xe2, 0xd6, 0x03, 0x99, 0x05, 0x29, 0x61, 0x8c, 0xf2, 0x97, 0xca, 0xe0, 0x43, 0x19, 0xa3,
0xf2, 0xf0, 0xa6, 0xfd, 0xf1, 0x2c, 0x98, 0x93, 0xed, 0xc7, 0x74, 0x3c, 0x63, 0x60, 0x06, 0xc3, 0xae, 0xc3, 0x8a, 0x70, 0xc7, 0x33, 0xcf, 0xa7, 0xbd, 0x1f, 0xd1, 0xf2, 0x54, 0x81, 0x37, 0x18,
0xec, 0x22, 0x9e, 0xd0, 0x45, 0x18, 0x1c, 0xd6, 0x03, 0x27, 0x9a, 0xfa, 0xab, 0x84, 0xf3, 0xae, 0xa6, 0x89, 0x78, 0x4c, 0x89, 0xd0, 0x34, 0xac, 0x07, 0x66, 0x38, 0x75, 0x97, 0xb1, 0x65, 0x75,
0xdd, 0x6b, 0xf5, 0xd9, 0x19, 0xd5, 0xf4, 0x19, 0x15, 0xef, 0xdb, 0xa9, 0xbf, 0x12, 0xb1, 0xa7, 0xcb, 0xbd, 0x66, 0x9f, 0x9d, 0x53, 0x55, 0x9f, 0x53, 0xf9, 0xbe, 0x9d, 0xba, 0x4b, 0x1e, 0x39,
0x14, 0x30, 0xc6, 0x58, 0x24, 0x8b, 0xa9, 0xe4, 0xff, 0x53, 0x31, 0x2a, 0x8a, 0x3d, 0x87, 0xfa, 0xd2, 0x01, 0x63, 0x8c, 0x78, 0x3c, 0x9f, 0x0a, 0xeb, 0x23, 0x19, 0xa3, 0x94, 0xd8, 0x33, 0xa8,
0x50, 0x48, 0x2c, 0x4e, 0x7e, 0xda, 0xad, 0xf4, 0x5a, 0xfd, 0x13, 0xd3, 0xc6, 0x40, 0x89, 0xbc, 0x0d, 0xb9, 0xc0, 0xf2, 0xb4, 0x4e, 0xbb, 0xa5, 0x5e, 0xb3, 0x7f, 0xa2, 0xef, 0x31, 0x90, 0x26,
0x54, 0x07, 0xcb, 0x2f, 0x98, 0x8f, 0xc5, 0x92, 0xff, 0x9f, 0x72, 0x51, 0x04, 0x96, 0x5f, 0x14, 0x27, 0xf1, 0xc1, 0x02, 0xf4, 0xfc, 0x31, 0x5f, 0x58, 0x1f, 0xd3, 0x5d, 0xa4, 0x80, 0x05, 0x18,
0x8b, 0x2b, 0x12, 0x3c, 0x25, 0xc1, 0x9a, 0x76, 0x5f, 0x41, 0xcb, 0x08, 0x07, 0x6b, 0xc4, 0xc7, 0x46, 0xfc, 0x8a, 0x0c, 0x67, 0x64, 0x58, 0xc9, 0x98, 0xe4, 0x71, 0xe4, 0xdd, 0x71, 0x7f, 0xb0,
0x54, 0x55, 0x2f, 0xd1, 0x37, 0xfb, 0x12, 0xec, 0xa1, 0x90, 0xd4, 0x46, 0xad, 0xfe, 0x51, 0xc1, 0xbc, 0xc0, 0x7b, 0x59, 0x9f, 0x74, 0x4b, 0xbd, 0xba, 0x93, 0x55, 0xda, 0xaf, 0xa0, 0xa9, 0x05,
0xbf, 0x87, 0x32, 0xf7, 0x63, 0x05, 0x1a, 0x29, 0x87, 0x6a, 0x8a, 0x4a, 0x38, 0xed, 0x48, 0x45, 0x8d, 0xf5, 0xe3, 0x62, 0x42, 0x64, 0xcf, 0xd1, 0x6f, 0xf6, 0x19, 0x94, 0x87, 0x5c, 0x50, 0xbb,
0x15, 0x6e, 0xcb, 0xda, 0xb8, 0xad, 0x53, 0x68, 0x04, 0xc9, 0xbb, 0x60, 0x3e, 0x17, 0x31, 0x35, 0x35, 0xfb, 0x47, 0xb9, 0x28, 0x1d, 0xb4, 0xd9, 0xbf, 0x97, 0xa0, 0x9e, 0x68, 0xf0, 0xc6, 0xb2,
0x66, 0xc3, 0x5b, 0xd3, 0x68, 0x33, 0x8a, 0xc3, 0xdb, 0x40, 0xea, 0xa6, 0xd4, 0x54, 0x96, 0xb0, 0xd4, 0x93, 0xce, 0x95, 0x52, 0x2e, 0xa7, 0xc6, 0x5a, 0x4e, 0x4f, 0xa1, 0xee, 0xc5, 0xef, 0x3d,
0xb3, 0x2d, 0xe1, 0x5a, 0x21, 0xe1, 0x3f, 0x2a, 0x70, 0x60, 0x5e, 0x1e, 0x96, 0x99, 0x0c, 0xa5, 0xdf, 0xe7, 0x11, 0x35, 0x70, 0xdd, 0x59, 0xc9, 0xb8, 0x67, 0x18, 0x05, 0x37, 0x9e, 0x50, 0xcd,
0x3f, 0x1d, 0x08, 0x6a, 0xf2, 0x84, 0xa2, 0x6e, 0x7b, 0x79, 0x26, 0xeb, 0xc1, 0x51, 0xca, 0xc8, 0xab, 0xa4, 0x34, 0x2d, 0xe6, 0xa6, 0xb4, 0x54, 0xb3, 0x69, 0xb1, 0x7f, 0x2b, 0x41, 0x4b, 0x4f,
0x67, 0x50, 0x64, 0xb3, 0xe7, 0xe0, 0x04, 0x52, 0xcc, 0x10, 0x5c, 0xf0, 0xd1, 0x9f, 0x94, 0x3c, 0x31, 0xe6, 0x49, 0x04, 0xc2, 0x9d, 0xaa, 0xf6, 0x8b, 0x29, 0xea, 0xb6, 0x93, 0x55, 0xb2, 0x1e,
0xd8, 0x95, 0x14, 0x33, 0x4f, 0x69, 0xb9, 0x77, 0xd0, 0x29, 0x8a, 0xfe, 0xf5, 0x0d, 0x3e, 0x85, 0x1c, 0x25, 0x8a, 0xec, 0x0d, 0xf2, 0x6a, 0xf6, 0x0c, 0x4c, 0x4f, 0xf0, 0x19, 0x82, 0x10, 0x96,
0x26, 0x52, 0x2a, 0x0d, 0x9b, 0xc4, 0x19, 0xc3, 0xfd, 0x64, 0xc1, 0xd1, 0x1a, 0x37, 0x2f, 0x08, 0xc6, 0xe3, 0x82, 0x67, 0xbd, 0x12, 0x7c, 0xe6, 0x48, 0x2f, 0xfb, 0x16, 0x3a, 0x79, 0xd3, 0xbf,
0x51, 0x31, 0x58, 0x82, 0x2f, 0x72, 0xd4, 0xea, 0x3f, 0x32, 0x83, 0x45, 0xb5, 0x6b, 0x14, 0x5e, 0xce, 0xe0, 0x19, 0x34, 0x50, 0x92, 0xd7, 0x28, 0x93, 0x39, 0x55, 0xd8, 0x7f, 0x18, 0x70, 0xb4,
0x3e, 0xf0, 0x94, 0x16, 0xfb, 0xda, 0x2c, 0x85, 0x93, 0xa2, 0xf2, 0x40, 0xa0, 0x2a, 0x6a, 0xb0, 0xc2, 0xd7, 0x0b, 0x42, 0x5e, 0x0c, 0x96, 0x60, 0x8e, 0x0e, 0x6a, 0xf6, 0x1f, 0xea, 0xc1, 0xa2,
0x17, 0x50, 0x4f, 0x64, 0x18, 0x21, 0xb0, 0xd8, 0xa4, 0xfc, 0x64, 0xd3, 0x32, 0x89, 0x2f, 0x1f, 0xdb, 0x35, 0x1a, 0x2f, 0x0f, 0x1c, 0xe9, 0xc5, 0x3e, 0xd7, 0x4b, 0xe1, 0x24, 0xef, 0x8c, 0xf0,
0x78, 0xa9, 0x26, 0x06, 0xe3, 0x0f, 0xc3, 0x58, 0xbd, 0x71, 0x49, 0x30, 0x17, 0x28, 0xc4, 0x60, 0x74, 0x40, 0x05, 0xc1, 0x9e, 0x43, 0x2d, 0x16, 0x41, 0x38, 0xe0, 0x82, 0xe2, 0xc8, 0xa5, 0x41,
0x48, 0x0b, 0x7d, 0x44, 0x8b, 0xe1, 0x34, 0xd0, 0x48, 0x5c, 0xe2, 0xe3, 0xad, 0x12, 0xa3, 0x0f, 0xee, 0x4c, 0xe6, 0xcb, 0x03, 0x27, 0xf1, 0xc4, 0x60, 0xdc, 0x61, 0x10, 0xc9, 0x37, 0x2e, 0x08,
0xad, 0x89, 0x3e, 0xde, 0x2f, 0x44, 0xbc, 0xa2, 0xba, 0x28, 0xf1, 0xf1, 0x0b, 0x0a, 0xd1, 0x07, 0xe6, 0x02, 0x8d, 0x18, 0x0c, 0x79, 0xe1, 0x19, 0xe1, 0x7c, 0x38, 0xf5, 0x14, 0x62, 0x17, 0x9c,
0x69, 0xb1, 0x43, 0xb0, 0xa4, 0xc2, 0xec, 0xb6, 0x67, 0xc9, 0xd5, 0xa0, 0x0e, 0xce, 0x07, 0x7f, 0xf1, 0x56, 0x9a, 0xf1, 0x0c, 0xe5, 0x89, 0x67, 0x7c, 0x98, 0xf3, 0x68, 0x49, 0x75, 0x51, 0x70,
0xba, 0x10, 0xee, 0x5f, 0x36, 0x1c, 0xe6, 0x6f, 0x29, 0xc3, 0xfe, 0x8a, 0x89, 0xfd, 0x06, 0xbe, 0xc6, 0x8f, 0x68, 0xc4, 0x33, 0xc8, 0x8b, 0x1d, 0x82, 0x21, 0x24, 0xb6, 0xb7, 0x1d, 0x43, 0x2c,
0x5b, 0x79, 0x7c, 0x37, 0xa7, 0x82, 0xbd, 0x39, 0x15, 0x52, 0xec, 0xaf, 0xee, 0xc0, 0x7e, 0x67, 0x07, 0x35, 0x30, 0xef, 0xdc, 0xe9, 0x9c, 0xdb, 0xbf, 0x56, 0xe0, 0x30, 0x9b, 0xa5, 0x94, 0x23,
0x3b, 0xf6, 0xd7, 0x4a, 0xb1, 0xbf, 0x5e, 0x8a, 0xfd, 0x8d, 0x6d, 0xd8, 0xdf, 0xdc, 0x83, 0xfd, 0x4a, 0x3a, 0x47, 0x68, 0x3c, 0x60, 0x64, 0x79, 0x40, 0x67, 0x8f, 0x72, 0x8e, 0x3d, 0xb2, 0x1c,
0xf0, 0x39, 0xd8, 0xdf, 0xda, 0x8b, 0xfd, 0x07, 0xfb, 0xb1, 0xbf, 0xfd, 0x19, 0xd8, 0x7f, 0xb8, 0x51, 0xd9, 0xc9, 0x11, 0xe6, 0x56, 0x8e, 0xa8, 0x16, 0x72, 0x44, 0x6d, 0x2b, 0x47, 0x34, 0xf6,
0x0b, 0xfb, 0x8f, 0x76, 0x62, 0x7f, 0xa7, 0x04, 0xfb, 0x3b, 0x60, 0xdf, 0x0a, 0x41, 0x83, 0xc9, 0xe3, 0x08, 0xd8, 0x87, 0x23, 0x9a, 0x3b, 0x39, 0xa2, 0xb5, 0x9b, 0x23, 0xda, 0x7b, 0x70, 0xc4,
0xf6, 0xf0, 0xd3, 0xfd, 0x4d, 0x43, 0x87, 0x2e, 0xf6, 0x5d, 0xbb, 0x87, 0xee, 0x5f, 0x2b, 0xd7, 0xe1, 0x36, 0x8e, 0x38, 0xda, 0xca, 0x11, 0x9d, 0x02, 0x8e, 0x58, 0x83, 0xd0, 0xe3, 0x22, 0x08,
0xbf, 0x9c, 0xd0, 0x1c, 0xef, 0x49, 0x77, 0x67, 0x4a, 0xa6, 0xbe, 0xaa, 0x99, 0xaf, 0x1f, 0x34, 0xfd, 0x59, 0x01, 0x8a, 0x6a, 0x81, 0x6d, 0x93, 0x8b, 0xea, 0x6a, 0x23, 0xd3, 0xd5, 0x16, 0x31,
0x2e, 0x18, 0xbd, 0xb2, 0xd5, 0x9f, 0x3e, 0x6d, 0x65, 0xa7, 0xcf, 0x8d, 0xea, 0xa4, 0xb6, 0xb9, 0x01, 0xe6, 0x4e, 0xf5, 0x6c, 0x22, 0xda, 0x5f, 0x2a, 0x6c, 0xd0, 0xfa, 0x65, 0xd3, 0xee, 0x76,
0xc7, 0xd9, 0x1b, 0xc3, 0xb3, 0xee, 0xa0, 0x5d, 0x99, 0xea, 0xb9, 0x65, 0xe5, 0xe6, 0x96, 0xb6, 0x4f, 0xab, 0x47, 0x6a, 0x94, 0x8d, 0x9e, 0x03, 0x6d, 0x57, 0xd5, 0x21, 0xdb, 0x62, 0x56, 0xec,
0x6a, 0x67, 0x56, 0x7f, 0x32, 0x22, 0xa2, 0x26, 0xdb, 0x6a, 0x53, 0xf5, 0x9c, 0x95, 0xf6, 0x5c, 0x65, 0xe8, 0xec, 0x65, 0x7f, 0xab, 0x9d, 0x46, 0x2d, 0xb3, 0x71, 0x07, 0xd9, 0x41, 0x46, 0xd2,
0x89, 0xad, 0x8f, 0x15, 0x60, 0x64, 0x63, 0x6d, 0xf1, 0x6a, 0x7e, 0x1b, 0x6e, 0x35, 0x98, 0x0e, 0x41, 0x48, 0x15, 0x8c, 0x56, 0xac, 0xd6, 0x5f, 0xf9, 0x37, 0xc1, 0xc6, 0xe5, 0x09, 0x21, 0x19,
0x35, 0xcb, 0x18, 0x6a, 0xd9, 0x7a, 0x68, 0xe7, 0xd6, 0xc3, 0xf5, 0x40, 0xa9, 0x9a, 0x03, 0x25, 0x1a, 0x21, 0xa5, 0x23, 0x60, 0x39, 0x33, 0x02, 0xae, 0xc8, 0xa0, 0xa2, 0x93, 0x41, 0x86, 0xe8,
0xb7, 0x06, 0x38, 0xc5, 0x35, 0xc0, 0x6c, 0xe4, 0x5a, 0xbe, 0x91, 0xdd, 0x73, 0x60, 0x9e, 0x88, 0xcd, 0x3c, 0xd1, 0xeb, 0x4d, 0x58, 0xcd, 0x36, 0xa1, 0xfd, 0x02, 0x98, 0xc3, 0xc3, 0x69, 0x2e,
0xa6, 0x85, 0x48, 0x9f, 0x41, 0x15, 0x63, 0xd3, 0xa8, 0xdb, 0x29, 0x82, 0x90, 0x47, 0x52, 0xf7, 0xd2, 0x27, 0x50, 0xc1, 0xd8, 0x14, 0x62, 0x76, 0xf2, 0x00, 0xe2, 0x90, 0xd5, 0xfe, 0x0a, 0x4e,
0x5b, 0x38, 0xd9, 0xcc, 0x92, 0xf6, 0x42, 0x95, 0x18, 0x8e, 0x2a, 0x1b, 0xb1, 0x41, 0x93, 0xee, 0xd6, 0x6f, 0x19, 0xe3, 0x5b, 0xcb, 0x8b, 0x21, 0xcd, 0x94, 0x11, 0x0d, 0x94, 0x68, 0x7f, 0x07,
0x8f, 0x70, 0xb2, 0xe9, 0x2c, 0x61, 0x5f, 0x81, 0x83, 0x1a, 0x4a, 0xbd, 0xcc, 0x9d, 0x12, 0xbb, 0x27, 0xeb, 0x87, 0xc5, 0xec, 0x29, 0x98, 0xe8, 0x21, 0xdd, 0x8b, 0x8e, 0x93, 0x66, 0xfb, 0x17,
0xbf, 0x5b, 0xd0, 0xf1, 0xc4, 0x48, 0x04, 0x91, 0xdc, 0xbf, 0x5f, 0xe7, 0xf6, 0x68, 0xab, 0xb8, 0x03, 0x3a, 0x0e, 0x1f, 0x71, 0x2f, 0x14, 0xbb, 0x67, 0xe8, 0xcc, 0xac, 0x6c, 0xe4, 0x67, 0xe5,
0x47, 0x6f, 0xbb, 0xde, 0xf4, 0x29, 0xaa, 0xc6, 0x53, 0xec, 0xbd, 0xdc, 0x6d, 0xb3, 0x3c, 0x7b, 0x4d, 0xe9, 0x4d, 0x9e, 0xa2, 0xa2, 0x3d, 0xc5, 0xce, 0xe4, 0x6e, 0xe2, 0xe1, 0xf4, 0xb1, 0x6a,
0xac, 0x7a, 0x61, 0xfa, 0xaf, 0x9f, 0xa3, 0x51, 0xc0, 0x55, 0x17, 0x0e, 0x54, 0x24, 0x2f, 0xef, 0x39, 0xe6, 0x5e, 0x3d, 0x47, 0x3d, 0x87, 0x89, 0x36, 0xb4, 0x64, 0x24, 0x2f, 0x6f, 0x5d, 0x7f,
0xfc, 0xf9, 0x44, 0x2d, 0xd6, 0x0d, 0x2f, 0xc7, 0x73, 0xff, 0xb6, 0xf5, 0x9c, 0xbc, 0x56, 0x8b, 0x22, 0x11, 0xaa, 0xee, 0x64, 0x74, 0xf6, 0xdf, 0x65, 0xc5, 0x71, 0xd7, 0x72, 0x78, 0x77, 0xf8,
0xbd, 0x27, 0xde, 0xdf, 0x1b, 0xdb, 0x73, 0xbf, 0x23, 0xec, 0xe2, 0xef, 0x88, 0x7b, 0xa0, 0x7b, 0x87, 0x7b, 0xe3, 0x72, 0xe6, 0x5b, 0xa1, 0x9c, 0xff, 0x56, 0xf8, 0xff, 0x91, 0xb9, 0xbe, 0x1f,
0xfb, 0x3f, 0x74, 0xdf, 0x8e, 0xee, 0x1c, 0xea, 0xb7, 0x5a, 0xaa, 0xe0, 0x3d, 0x25, 0x0d, 0xdc, 0x32, 0x37, 0xf6, 0x41, 0x66, 0xd8, 0x89, 0xcc, 0xcd, 0xdd, 0xc8, 0xdc, 0xda, 0x03, 0x99, 0xdb,
0xef, 0xec, 0xc4, 0xfd, 0x63, 0x4a, 0x31, 0xc7, 0x73, 0xaf, 0xa1, 0x9d, 0x6e, 0x64, 0xea, 0xf1, 0xeb, 0xc8, 0x6c, 0x41, 0xed, 0x26, 0x83, 0xdb, 0x89, 0xf8, 0x5f, 0x30, 0xdb, 0xbe, 0x86, 0x76,
0xef, 0x0b, 0xf3, 0x0c, 0xaa, 0x88, 0xeb, 0x1a, 0xe3, 0xe9, 0xdb, 0xfd, 0x46, 0xd7, 0x14, 0x81, 0x32, 0x4f, 0xc9, 0xe7, 0xbf, 0x2f, 0x1c, 0x33, 0xa8, 0x20, 0xfe, 0x2a, 0x2c, 0xa6, 0xdf, 0xf6,
0xf1, 0x4e, 0xb3, 0xee, 0x4b, 0x38, 0x56, 0x2b, 0xb9, 0xc2, 0xde, 0xbd, 0x31, 0x94, 0x01, 0xb0, 0x17, 0xaa, 0xaa, 0x08, 0x58, 0xb7, 0x6e, 0x6b, 0xbf, 0x84, 0x63, 0x39, 0x50, 0x4b, 0x64, 0xdd,
0xfb, 0xce, 0xd8, 0xf5, 0x3c, 0x31, 0x0a, 0xe3, 0xf1, 0xbd, 0x7f, 0x29, 0xaf, 0xbb, 0xcb, 0x36, 0x19, 0x43, 0x21, 0xbc, 0xbe, 0xd7, 0x26, 0x35, 0x87, 0x8f, 0x82, 0x68, 0x7c, 0xef, 0xef, 0xe1,
0xba, 0xcb, 0x7d, 0x05, 0x0f, 0x0d, 0x78, 0x19, 0x8b, 0xe5, 0x1e, 0xeb, 0x6b, 0x2b, 0x56, 0xde, 0x55, 0x7f, 0x95, 0xb5, 0xfe, 0xb2, 0x5f, 0xc1, 0x03, 0x0d, 0x60, 0xc6, 0x7c, 0xb1, 0x63, 0xf7,
0x4a, 0xa7, 0x10, 0x5e, 0xc2, 0xbe, 0x83, 0x7a, 0xac, 0x3e, 0x35, 0x50, 0x3d, 0xde, 0x00, 0x2a, 0xd5, 0x2e, 0x46, 0x76, 0x97, 0x4e, 0x2e, 0xbc, 0x98, 0x7d, 0x0d, 0xb5, 0x48, 0xfe, 0x54, 0x50,
0x12, 0x7b, 0xa9, 0x5a, 0xff, 0xcf, 0x0a, 0x38, 0xf4, 0x9f, 0x01, 0xfb, 0x1e, 0x20, 0x6b, 0x59, 0xf5, 0x68, 0x0d, 0xaa, 0xc8, 0xec, 0x24, 0x6e, 0xfd, 0x3f, 0x4b, 0x60, 0xd2, 0x3f, 0x03, 0xec,
0x56, 0xbe, 0xc6, 0x9e, 0xa6, 0xbf, 0x5d, 0x7e, 0x9d, 0x27, 0xc1, 0x64, 0x7e, 0xb3, 0x74, 0x1f, 0x1b, 0x80, 0xb4, 0x69, 0x59, 0xf1, 0x10, 0x7a, 0x9a, 0x7c, 0x79, 0xfc, 0xe4, 0xc7, 0xde, 0xc4,
0xb0, 0xbe, 0xf1, 0xbb, 0xa5, 0x6c, 0x9f, 0x2d, 0x3b, 0x93, 0xfa, 0x52, 0x73, 0xb5, 0x7c, 0x4b, 0x7f, 0xb7, 0xb0, 0x0f, 0x58, 0x5f, 0xfb, 0xea, 0x28, 0x9a, 0x46, 0x8b, 0xd6, 0x24, 0x67, 0x49,
0x2d, 0x3b, 0x77, 0xae, 0xb7, 0x87, 0x74, 0xa6, 0x6e, 0x5b, 0x57, 0x4b, 0xce, 0x0e, 0x6b, 0xf4, 0x8e, 0x2c, 0x9e, 0x31, 0x8b, 0xd6, 0xbd, 0x50, 0x2c, 0x9f, 0x30, 0xe6, 0xa6, 0x61, 0xb3, 0x60,
0xd7, 0xc7, 0x8b, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x64, 0x6d, 0x1d, 0xe5, 0x23, 0x11, 0x00, 0xed, 0xb0, 0x4a, 0x7f, 0x70, 0x3c, 0xff, 0x27, 0x00, 0x00, 0xff, 0xff, 0xdb, 0x17, 0xde, 0x9c,
0x00, 0x09, 0x11, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
......
...@@ -2,17 +2,16 @@ ...@@ -2,17 +2,16 @@
// Use of this source code is governed by a BSD-style // Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file. // license that can be found in the LICENSE file.
package rpc package types
type GuessGameStart struct { type GuessGameStartTx struct {
Topic string `json:"topic,omitempty"` Topic string `json:"topic,omitempty"`
Options string `json:"options,omitempty"` Options string `json:"options,omitempty"`
Category string `json:"category,omitempty"` Category string `json:"category,omitempty"`
MaxTime string `json:"maxTime,omitempty"` MaxBetTime string `json:"maxTime,omitempty"`
MaxHeight int64 `json:"maxHeight,omitempty"` MaxBetHeight int64 `json:"maxHeight,omitempty"`
Symbol string `json:"symbol,omitempty"` Symbol string `json:"symbol,omitempty"`
Exec string `json:"exec,omitempty"` Exec string `json:"exec,omitempty"`
OneBet uint32 `json:"oneBet,omitempty"`
MaxBets uint32 `json:"maxBets,omitempty"` MaxBets uint32 `json:"maxBets,omitempty"`
MaxBetsNumber uint32 `json:"maxBetsNumber,omitempty"` MaxBetsNumber uint32 `json:"maxBetsNumber,omitempty"`
DevFeeFactor int64 `json:"devFeeFactor,omitempty"` DevFeeFactor int64 `json:"devFeeFactor,omitempty"`
...@@ -24,25 +23,25 @@ type GuessGameStart struct { ...@@ -24,25 +23,25 @@ type GuessGameStart struct {
Fee int64 `json:"fee,omitempty"` Fee int64 `json:"fee,omitempty"`
} }
type GuessGameBet struct { type GuessGameBetTx struct {
GameId string `json:"gameId,omitempty"` GameId string `json:"gameId,omitempty"`
Option string `json:"option,omitempty"` Option string `json:"option,omitempty"`
BetsNum uint32 `json:"betsNum,omitempty"` BetsNum uint32 `json:"betsNum,omitempty"`
Fee int64 `json:"fee,omitempty"` Fee int64 `json:"fee,omitempty"`
} }
type GuessGameStopBet struct { type GuessGameStopBetTx struct {
GameId string `json:"gameId,omitempty"` GameId string `json:"gameId,omitempty"`
Fee int64 `json:"fee,omitempty"` Fee int64 `json:"fee,omitempty"`
} }
type GuessGamePublish struct { type GuessGamePublishTx struct {
GameId string `json:"gameId,omitempty"` GameId string `json:"gameId,omitempty"`
Result string `json:"result,omitempty"` Result string `json:"result,omitempty"`
Fee int64 `json:"fee,omitempty"` Fee int64 `json:"fee,omitempty"`
} }
type GuessGameAbort struct { type GuessGameAbortTx struct {
GameId string `json:"gameId,omitempty"` GameId string `json:"gameId,omitempty"`
Fee int64 `json:"fee,omitempty"` Fee int64 `json:"fee,omitempty"`
} }
...@@ -66,7 +66,7 @@ func (t *GuessType) CreateTx(action string, message json.RawMessage) (*types.Tra ...@@ -66,7 +66,7 @@ func (t *GuessType) CreateTx(action string, message json.RawMessage) (*types.Tra
llog.Debug("Guess.CreateTx", "action", action) llog.Debug("Guess.CreateTx", "action", action)
if action == "GuessStart" { if action == "GuessStart" {
var param GuessStartTxReq var param GuessGameStartTx
err := json.Unmarshal(message, &param) err := json.Unmarshal(message, &param)
if err != nil { if err != nil {
llog.Error("CreateTx.GuessStart", "Error", err) llog.Error("CreateTx.GuessStart", "Error", err)
...@@ -74,15 +74,23 @@ func (t *GuessType) CreateTx(action string, message json.RawMessage) (*types.Tra ...@@ -74,15 +74,23 @@ func (t *GuessType) CreateTx(action string, message json.RawMessage) (*types.Tra
} }
return CreateRawGuessStartTx(&param) return CreateRawGuessStartTx(&param)
} else if action == "GuessBet" { } else if action == "GuessBet" {
var param GuessBetTxReq var param GuessGameBetTx
err := json.Unmarshal(message, &param) err := json.Unmarshal(message, &param)
if err != nil { if err != nil {
llog.Error("CreateTx.GuessBet", "Error", err) llog.Error("CreateTx.GuessBet", "Error", err)
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
return CreateRawGuessBetTx(&param) return CreateRawGuessBetTx(&param)
} else if action == "GuessStopBet" {
var param GuessGameStopBetTx
err := json.Unmarshal(message, &param)
if err != nil {
llog.Error("CreateTx.GuessStopBet", "Error", err)
return nil, types.ErrInvalidParam
}
return CreateRawGuessStopBetTx(&param)
} else if action == "GuessPublish" { } else if action == "GuessPublish" {
var param GuessPublishTxReq var param GuessGamePublishTx
err := json.Unmarshal(message, &param) err := json.Unmarshal(message, &param)
if err != nil { if err != nil {
llog.Error("CreateTx.GuessPublish", "Error", err) llog.Error("CreateTx.GuessPublish", "Error", err)
...@@ -90,7 +98,7 @@ func (t *GuessType) CreateTx(action string, message json.RawMessage) (*types.Tra ...@@ -90,7 +98,7 @@ func (t *GuessType) CreateTx(action string, message json.RawMessage) (*types.Tra
} }
return CreateRawGuessPublishTx(&param) return CreateRawGuessPublishTx(&param)
} else if action == "GuessAbort" { } else if action == "GuessAbort" {
var param GuessAbortTxReq var param GuessGameAbortTx
err := json.Unmarshal(message, &param) err := json.Unmarshal(message, &param)
if err != nil { if err != nil {
llog.Error("CreateTx.GuessAbort", "Error", err) llog.Error("CreateTx.GuessAbort", "Error", err)
...@@ -103,15 +111,33 @@ func (t *GuessType) CreateTx(action string, message json.RawMessage) (*types.Tra ...@@ -103,15 +111,33 @@ func (t *GuessType) CreateTx(action string, message json.RawMessage) (*types.Tra
} }
// CreateRawLotteryCreateTx method // CreateRawLotteryCreateTx method
func CreateRawGuessStartTx(parm *GuessGameStart) (*types.Transaction, error) { func CreateRawGuessStartTx(parm *GuessGameStartTx) (*types.Transaction, error) {
if parm == nil { if parm == nil {
llog.Error("CreateRawGuessStartTx", "parm", parm) llog.Error("CreateRawGuessStartTx", "parm", parm)
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
v := &GuessGameStart {
Topic: parm.Topic,
Options: parm.Options,
Category: parm.Category,
MaxBetTime: parm.MaxBetTime,
MaxBetHeight: parm.MaxBetHeight,
Symbol: parm.Symbol,
Exec: parm.Exec,
MaxBetsOneTime: parm.MaxBets,
MaxBetsNumber: parm.MaxBetsNumber,
DevFeeFactor: parm.DevFeeFactor,
DevFeeAddr: parm.DevFeeAddr,
PlatFeeFactor: parm.PlatFeeFactor,
PlatFeeAddr: parm.PlatFeeAddr,
Expire: parm.Expire,
ExpireHeight: parm.ExpireHeight,
}
val := &GuessGameAction{ val := &GuessGameAction{
Ty: GuessGameActionStart, Ty: GuessGameActionStart,
Value: &GuessGameAction_Start{Start: parm}, Value: &GuessGameAction_Start{Start: v},
} }
name := types.ExecName(GuessX) name := types.ExecName(GuessX)
tx := &types.Transaction{ tx := &types.Transaction{
...@@ -129,15 +155,20 @@ func CreateRawGuessStartTx(parm *GuessGameStart) (*types.Transaction, error) { ...@@ -129,15 +155,20 @@ func CreateRawGuessStartTx(parm *GuessGameStart) (*types.Transaction, error) {
} }
// CreateRawGuessBetTx method // CreateRawGuessBetTx method
func CreateRawGuessBetTx(parm *GuessGameBet) (*types.Transaction, error) { func CreateRawGuessBetTx(parm *GuessGameBetTx) (*types.Transaction, error) {
if parm == nil { if parm == nil {
llog.Error("CreateRawGuessBet", "parm", parm) llog.Error("CreateRawGuessBet", "parm", parm)
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
v := &GuessGameBet{
GameId: parm.GameId,
Option: parm.Option,
BetsNum: parm.BetsNum,
}
val := &GuessGameAction{ val := &GuessGameAction{
Ty: GuessGameActionBet, Ty: GuessGameActionBet,
Value: &GuessGameAction_Bet{Bet: parm}, Value: &GuessGameAction_Bet{Bet: v},
} }
name := types.ExecName(GuessX) name := types.ExecName(GuessX)
tx := &types.Transaction{ tx := &types.Transaction{
...@@ -155,15 +186,18 @@ func CreateRawGuessBetTx(parm *GuessGameBet) (*types.Transaction, error) { ...@@ -155,15 +186,18 @@ func CreateRawGuessBetTx(parm *GuessGameBet) (*types.Transaction, error) {
} }
// CreateRawGuessStopBetTx method // CreateRawGuessStopBetTx method
func CreateRawGuessBetTx(parm *GuessGameStopBet) (*types.Transaction, error) { func CreateRawGuessStopBetTx(parm *GuessGameStopBetTx) (*types.Transaction, error) {
if parm == nil { if parm == nil {
llog.Error("CreateRawGuessBet", "parm", parm) llog.Error("CreateRawGuessBet", "parm", parm)
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
v := &GuessGameStopBet{
GameId: parm.GameId,
}
val := &GuessGameAction{ val := &GuessGameAction{
Ty: GuessGameActionStopBet, Ty: GuessGameActionStopBet,
Value: &GuessGameAction_StopBet{StopBet: parm}, Value: &GuessGameAction_StopBet{StopBet: v},
} }
name := types.ExecName(GuessX) name := types.ExecName(GuessX)
tx := &types.Transaction{ tx := &types.Transaction{
...@@ -181,15 +215,20 @@ func CreateRawGuessBetTx(parm *GuessGameStopBet) (*types.Transaction, error) { ...@@ -181,15 +215,20 @@ func CreateRawGuessBetTx(parm *GuessGameStopBet) (*types.Transaction, error) {
} }
// CreateRawGuessPublishTx method // CreateRawGuessPublishTx method
func CreateRawGuessPublishTx(parm *GuessGamePublish) (*types.Transaction, error) { func CreateRawGuessPublishTx(parm *GuessGamePublishTx) (*types.Transaction, error) {
if parm == nil { if parm == nil {
llog.Error("CreateRawGuessPublish", "parm", parm) llog.Error("CreateRawGuessPublish", "parm", parm)
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
v := &GuessGamePublish{
GameId: parm.GameId,
Result: parm.Result,
}
val := &GuessGameAction{ val := &GuessGameAction{
Ty: GuessGameActionPublish, Ty: GuessGameActionPublish,
Value: &GuessGameAction_Publish{Publish: parm}, Value: &GuessGameAction_Publish{Publish: v},
} }
name := types.ExecName(GuessX) name := types.ExecName(GuessX)
tx := &types.Transaction{ tx := &types.Transaction{
...@@ -207,15 +246,19 @@ func CreateRawGuessPublishTx(parm *GuessGamePublish) (*types.Transaction, error) ...@@ -207,15 +246,19 @@ func CreateRawGuessPublishTx(parm *GuessGamePublish) (*types.Transaction, error)
} }
// CreateRawGuessAbortTx method // CreateRawGuessAbortTx method
func CreateRawGuessAbortTx(parm *GuessGameAbort) (*types.Transaction, error) { func CreateRawGuessAbortTx(parm *GuessGameAbortTx) (*types.Transaction, error) {
if parm == nil { if parm == nil {
llog.Error("CreateRawGuessAbortTx", "parm", parm) llog.Error("CreateRawGuessAbortTx", "parm", parm)
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
v := &GuessGameAbort {
GameId: parm.GameId,
}
val := &GuessGameAction{ val := &GuessGameAction{
Ty: GuessGameActionAbort, Ty: GuessGameActionAbort,
Value: &GuessGameAction_Abort{Abort: parm}, Value: &GuessGameAction_Abort{Abort: v},
} }
name := types.ExecName(GuessX) name := types.ExecName(GuessX)
tx := &types.Transaction{ tx := &types.Transaction{
......
...@@ -9,6 +9,7 @@ import ( ...@@ -9,6 +9,7 @@ import (
_ "github.com/33cn/plugin/plugin/dapp/cert" _ "github.com/33cn/plugin/plugin/dapp/cert"
_ "github.com/33cn/plugin/plugin/dapp/evm" _ "github.com/33cn/plugin/plugin/dapp/evm"
_ "github.com/33cn/plugin/plugin/dapp/game" _ "github.com/33cn/plugin/plugin/dapp/game"
_ "github.com/33cn/plugin/plugin/dapp/guess"
_ "github.com/33cn/plugin/plugin/dapp/hashlock" _ "github.com/33cn/plugin/plugin/dapp/hashlock"
_ "github.com/33cn/plugin/plugin/dapp/lottery" _ "github.com/33cn/plugin/plugin/dapp/lottery"
_ "github.com/33cn/plugin/plugin/dapp/norm" _ "github.com/33cn/plugin/plugin/dapp/norm"
......
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