Commit 43c631f6 authored by 张振华's avatar 张振华

lint

parent 5c0ea3b1
......@@ -13,6 +13,7 @@ import (
"strings"
)
//GuessCmd Guess合约命令行
func GuessCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "guess",
......@@ -32,6 +33,7 @@ func GuessCmd() *cobra.Command {
return cmd
}
//GuessStartRawTxCmd 构造Guess合约的start原始交易(未签名)的命令行
func GuessStartRawTxCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "start",
......@@ -107,6 +109,7 @@ func guessStart(cmd *cobra.Command, args []string) {
ctx.RunWithoutMarshal()
}
//GuessBetRawTxCmd 构造Guess合约的bet原始交易(未签名)的命令行
func GuessBetRawTxCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "bet",
......@@ -129,13 +132,13 @@ func addGuessBetFlags(cmd *cobra.Command) {
func guessBet(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
gameId, _ := cmd.Flags().GetString("gameId")
gameID, _ := cmd.Flags().GetString("gameId")
option, _ := cmd.Flags().GetString("option")
betsNumber, _ := cmd.Flags().GetInt64("betsNumber")
fee, _ := cmd.Flags().GetFloat64("fee")
params := &pkt.GuessBetTxReq{
GameId: gameId,
GameId: gameID,
Option: option,
Bets: betsNumber,
Fee: int64(fee * float64(1e8)),
......@@ -146,6 +149,7 @@ func guessBet(cmd *cobra.Command, args []string) {
ctx.RunWithoutMarshal()
}
//GuessStopBetRawTxCmd 构造Guess合约的停止下注(stopBet)原始交易(未签名)的命令行
func GuessStopBetRawTxCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "stop bet",
......@@ -164,11 +168,11 @@ func addGuessStopBetFlags(cmd *cobra.Command) {
func guessStopBet(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
gameId, _ := cmd.Flags().GetString("gameId")
gameID, _ := cmd.Flags().GetString("gameId")
fee, _ := cmd.Flags().GetFloat64("fee")
params := &pkt.GuessStopBetTxReq{
GameId: gameId,
GameId: gameID,
Fee: int64(fee * float64(1e8)),
}
......@@ -177,7 +181,7 @@ func guessStopBet(cmd *cobra.Command, args []string) {
ctx.RunWithoutMarshal()
}
//GuessAbortRawTxCmd 构造Guess合约的撤销(Abort)原始交易(未签名)的命令行
func GuessAbortRawTxCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "abort",
......@@ -196,10 +200,10 @@ func addGuessAbortFlags(cmd *cobra.Command) {
func guessAbort(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
gameId, _ := cmd.Flags().GetString("gameId")
gameID, _ := cmd.Flags().GetString("gameId")
fee, _ := cmd.Flags().GetFloat64("fee")
params := &pkt.GuessAbortTxReq{
GameId: gameId,
GameId: gameID,
Fee: int64(fee * float64(1e8)),
}
......@@ -208,6 +212,7 @@ func guessAbort(cmd *cobra.Command, args []string) {
ctx.RunWithoutMarshal()
}
//GuessPublishRawTxCmd 构造Guess合约的发布结果(Publish)原始交易(未签名)的命令行
func GuessPublishRawTxCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "publish",
......@@ -230,12 +235,12 @@ func addGuessPublishFlags(cmd *cobra.Command) {
func guessPublish(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
gameId, _ := cmd.Flags().GetString("gameId")
gameID, _ := cmd.Flags().GetString("gameId")
result, _ := cmd.Flags().GetString("result")
fee, _ := cmd.Flags().GetFloat64("fee")
params := &pkt.GuessPublishTxReq{
GameId: gameId,
GameId: gameID,
Result: result,
Fee: int64(fee * float64(1e8)),
}
......@@ -245,7 +250,7 @@ func guessPublish(cmd *cobra.Command, args []string) {
ctx.RunWithoutMarshal()
}
//GuessQueryRawTxCmd 构造Guess合约的查询(Query)命令行
func GuessQueryRawTxCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "query",
......@@ -270,7 +275,7 @@ func addGuessQueryFlags(cmd *cobra.Command) {
func guessQuery(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
ty, _ := cmd.Flags().GetInt32("type")
gameId, _ := cmd.Flags().GetString("gameId")
gameID, _ := cmd.Flags().GetString("gameId")
addr, _ := cmd.Flags().GetString("addr")
adminAddr, _ := cmd.Flags().GetString("adminAddr")
status, _ := cmd.Flags().GetInt32("status")
......@@ -304,7 +309,7 @@ func guessQuery(cmd *cobra.Command, args []string) {
case 2:
req := &pkt.QueryGuessGameInfo{
GameId: gameId,
GameId: gameID,
}
params.FuncName = pkt.FuncName_QueryGameById
params.Payload = types.MustPBToJSON(req)
......
......@@ -9,26 +9,31 @@ import (
pkt "github.com/33cn/plugin/plugin/dapp/guess/types"
)
//Exec_Start Guess执行器创建游戏
func (c *Guess) Exec_Start(payload *pkt.GuessGameStart, tx *types.Transaction, index int) (*types.Receipt, error) {
action := NewAction(c, tx, index)
return action.GameStart(payload)
}
//Exec_Bet Guess执行器参与游戏
func (c *Guess) Exec_Bet(payload *pkt.GuessGameBet, tx *types.Transaction, index int) (*types.Receipt, error) {
action := NewAction(c, tx, index)
return action.GameBet(payload)
}
//Exec_StopBet Guess执行器停止游戏下注
func (c *Guess) Exec_StopBet(payload *pkt.GuessGameStopBet, tx *types.Transaction, index int) (*types.Receipt, error) {
action := NewAction(c, tx, index)
return action.GameStopBet(payload)
}
//Exec_Publish Guess执行器公布游戏结果
func (c *Guess) Exec_Publish(payload *pkt.GuessGamePublish, tx *types.Transaction, index int) (*types.Receipt, error) {
action := NewAction(c, tx, index)
return action.GamePublish(payload)
}
//Exec_Abort Guess执行器撤销未结束游戏
func (c *Guess) Exec_Abort(payload *pkt.GuessGameAbort, tx *types.Transaction, index int) (*types.Receipt, error) {
action := NewAction(c, tx, index)
return action.GameAbort(payload)
......
......@@ -76,18 +76,22 @@ func (g *Guess) execDelLocal(receiptData *types.ReceiptData) (*types.LocalDBSet,
return dbSet, nil
}
//ExecDelLocal_Start Guess执行器Start交易撤销
func (g *Guess) ExecDelLocal_Start(payload *pkt.GuessGameStart, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return g.execLocal(receiptData)
}
//ExecDelLocal_Bet Guess执行器Bet交易撤销
func (g *Guess) ExecDelLocal_Bet(payload *pkt.GuessGameBet, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return g.execLocal(receiptData)
}
//ExecDelLocal_Publish Guess执行器Publish交易撤销
func (g *Guess) ExecDelLocal_Publish(payload *pkt.GuessGamePublish, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return g.execLocal(receiptData)
}
//ExecDelLocal_Abort Guess执行器Abort交易撤销
func (g *Guess) ExecDelLocal_Abort(payload *pkt.GuessGameAbort, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return g.execLocal(receiptData)
}
\ No newline at end of file
......@@ -75,22 +75,27 @@ func (g *Guess) execLocal(receipt *types.ReceiptData) (*types.LocalDBSet, error)
return dbSet, nil
}
//ExecLocal_Start method
func (g *Guess) ExecLocal_Start(payload *pkt.GuessGameStart, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return g.execLocal(receiptData)
}
//ExecLocal_Bet method
func (g *Guess) ExecLocal_Bet(payload *pkt.GuessGameBet, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return g.execLocal(receiptData)
}
//ExecLocal_StopBet method
func (g *Guess) ExecLocal_StopBet(payload *pkt.GuessGameStopBet, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return g.execLocal(receiptData)
}
//ExecLocal_Publish method
func (g *Guess) ExecLocal_Publish(payload *pkt.GuessGamePublish, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return g.execLocal(receiptData)
}
//ExecLocal_Abort method
func (g *Guess) ExecLocal_Abort(payload *pkt.GuessGameAbort, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return g.execLocal(receiptData)
}
\ No newline at end of file
......@@ -39,6 +39,7 @@ func Init(name string, sub []byte) {
drivers.Register(driverName, newGuessGame, types.GetDappFork(driverName, "Enable"))
}
//Guess 执行器,用于竞猜合约的具体执行
type Guess struct {
drivers.DriverBase
}
......@@ -50,10 +51,12 @@ func newGuessGame() drivers.Driver {
return t
}
//GetName 获取Guess执行器的名称
func GetName() string {
return newGuessGame().GetName()
}
//GetDriverName 获取Guess执行器的名称
func (g *Guess) GetDriverName() string {
return pkt.GuessX
}
......
......@@ -21,27 +21,38 @@ import (
)
const (
//ListDESC 表示记录降序排列
ListDESC = int32(0)
//ListASC 表示记录升序排列
ListASC = int32(1)
DefaultCount = int32(20) //默认一次取多少条记录
//DefaultCount 默认一次获取的记录数
DefaultCount = int32(20)
//DefaultCategory 默认分类
DefaultCategory= "default"
MaxBetsOneTime = 10000e8 //一次最多下多少注
MaxBetsNumber = 10000000e8 //一局游戏最多接受多少注
MaxBetHeight = 1000000 //距离游戏创建区块的最大可下注高度差
MaxExpireHeight = 1000000 //距离游戏创建区块的最大过期高度差
//MaxBetsOneTime 一次最多下多少注
MaxBetsOneTime = 10000e8
//MaxBetsNumber 一局游戏最多接受多少注
MaxBetsNumber = 10000000e8
MinBetBlockNum = 720 //从创建游戏开始,一局游戏最少的可下注区块数量
MinBetTimeInterval = "2h" //从创建游戏开始,一局游戏最短的可下注时间
MinBetTimeoutNum = 8640 //从游戏结束下注开始,一局游戏最少的超时块数
MinBetTimeoutInterval = "24h" //从游戏结束下注开始,一局游戏最短的超时时间
//MaxBetHeight 距离游戏创建区块的最大可下注高度差
MaxBetHeight = 1000000
grpcRecSize int = 5 * 30 * 1024 * 1024
//MaxExpireHeight 距离游戏创建区块的最大过期高度差
MaxExpireHeight = 1000000
//grpcRecSize 接收缓冲大小
grpcRecSize int = 30 * 1024 * 1024
//retryNum 失败时的重试次数
retryNum = 10
)
//Action 具体动作执行
type Action struct {
coinsAccount *account.DB
db dbm.KV
......@@ -57,6 +68,7 @@ type Action struct {
grpcClient types.Chain33Client
}
//NewAction 生成Action对象
func NewAction(guess *Guess, tx *types.Transaction, index int) *Action {
hash := tx.Hash()
fromAddr := tx.From()
......@@ -90,6 +102,7 @@ func NewAction(guess *Guess, tx *types.Transaction, index int) *Action {
}
}
//CheckExecAccountBalance 检查地址在Guess合约中的余额是否足够
func (action *Action) CheckExecAccountBalance(fromAddr string, ToFrozen, ToActive int64) bool {
acc := action.coinsAccount.LoadExecAccount(fromAddr, action.execaddr)
if acc.GetBalance() >= ToFrozen && acc.GetFrozen() >= ToActive {
......@@ -98,6 +111,7 @@ func (action *Action) CheckExecAccountBalance(fromAddr string, ToFrozen, ToActiv
return false
}
//Key State数据库中存储记录的Key值格式转换
func Key(id string) (key []byte) {
//key = append(key, []byte("mavl-"+types.ExecName(pkt.GuessX)+"-")...)
key = append(key, []byte("mavl-"+pkt.GuessX+"-")...)
......@@ -121,6 +135,7 @@ func readGame(db dbm.KV, id string) (*pkt.GuessGame, error) {
return &game, nil
}
//Infos 根据游戏id列表查询多个游戏详情信息
func Infos(db dbm.KV, infos *pkt.QueryGuessGameInfos) (types.Message, error) {
var games []*pkt.GuessGame
for i := 0; i < len(infos.GameIds); i++ {
......@@ -295,6 +310,7 @@ func (action *Action) getIndex() int64 {
return action.height*types.MaxTxsPerBlock + int64(action.index)
}
//GetReceiptLog 根据游戏信息生成收据记录
func (action *Action) GetReceiptLog(game *pkt.GuessGame, statusChange bool) *types.ReceiptLog {
log := &types.ReceiptLog{}
r := &pkt.ReceiptGuessGame{}
......@@ -340,12 +356,12 @@ func (action *Action) readGame(id string) (*pkt.GuessGame, error) {
}
// 新建一局游戏
func (action *Action) newGame(gameId string, start *pkt.GuessGameStart) (*pkt.GuessGame, error) {
func (action *Action) newGame(gameID string, start *pkt.GuessGameStart) (*pkt.GuessGame, error) {
game := &pkt.GuessGame{
GameId: gameId,
GameId: gameID,
Status: pkt.GuessGameActionStart,
//StartTime: action.blocktime,
StartTxHash: gameId,
StartTxHash: gameID,
Topic: start.Topic,
Category: start.Category,
Options: start.Options,
......@@ -366,7 +382,7 @@ func (action *Action) newGame(gameId string, start *pkt.GuessGameStart) (*pkt.Gu
return game, nil
}
//GameStart 创建游戏动作执行
func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, error) {
var logs []*types.ReceiptLog
var kv []*types.KeyValue
......@@ -385,8 +401,8 @@ func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, erro
if start.MaxBetsNumber >= MaxBetsNumber {
logger.Error("GameStart", "addr", action.fromaddr, "execaddr", action.execaddr,
"err", fmt.Sprintf("The maximum bets number is %d which is less than start.MaxBetsNumber %d", MaxBetsNumber, start.MaxBetsNumber))
return nil, types.ErrInvalidParam
"err", fmt.Sprintf("The maximum bets number is %d which is less than start.MaxBetsNumber %d", int64(MaxBetsNumber), start.MaxBetsNumber))
return nil, pkt.ErrOverBetsLimit
}
if len(start.Topic) == 0 || len(start.Options) == 0 {
......@@ -416,8 +432,8 @@ func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, erro
start.MaxBetsOneTime = MaxBetsOneTime
}
gameId := common.ToHex(action.txhash)
game, _ := action.newGame(gameId, start)
gameID := common.ToHex(action.txhash)
game, _ := action.newGame(gameID, start)
game.StartTime = action.blocktime
if types.IsPara() {
mainHeight := action.GetMainHeightByTxHash(action.txhash)
......@@ -446,6 +462,7 @@ func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, erro
return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil
}
//GameBet 参与游戏动作执行
func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
var logs []*types.ReceiptLog
var kv []*types.KeyValue
......@@ -539,6 +556,7 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil
}
//GameStopBet 停止游戏下注动作执行
func (action *Action) GameStopBet(pbBet *pkt.GuessGameStopBet) (*types.Receipt, error) {
var logs []*types.ReceiptLog
var kv []*types.KeyValue
......@@ -576,6 +594,7 @@ func (action *Action) GameStopBet(pbBet *pkt.GuessGameStopBet) (*types.Receipt,
return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil
}
//AddGuessBet 向游戏结构中加入下注信息
func (action *Action) AddGuessBet(game *pkt.GuessGame, pbBet *pkt.GuessGameBet) {
bet := &pkt.GuessBet{ Option: pbBet.GetOption(), BetsNumber: pbBet.BetsNum, Index: game.Index}
player := &pkt.GuessPlayer{ Addr: action.fromaddr, Bet: bet}
......@@ -597,6 +616,7 @@ func (action *Action) AddGuessBet(game *pkt.GuessGame, pbBet *pkt.GuessGameBet)
game.BetsNumber += pbBet.GetBetsNum()
}
//GamePublish 公布竞猜游戏结果动作执行
func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt, error) {
var logs []*types.ReceiptLog
var kv []*types.KeyValue
......@@ -740,6 +760,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil
}
//GameAbort 撤销游戏动作执行
func (action *Action) GameAbort(pbend *pkt.GuessGameAbort) (*types.Receipt, error) {
var logs []*types.ReceiptLog
var kv []*types.KeyValue
......@@ -804,6 +825,7 @@ func (action *Action) GameAbort(pbend *pkt.GuessGameAbort) (*types.Receipt, erro
return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil
}
//GetOptions 获得竞猜选项,并判断是否符合约定格式,类似"A:xxxx;B:xxxx;C:xxx",“:”前为选项名称,不能重复,":"后为选项说明。
func GetOptions(strOptions string) (options []string, legal bool){
legal = true
items := strings.Split(strOptions, ";")
......@@ -822,6 +844,7 @@ func GetOptions(strOptions string) (options []string, legal bool){
return options, legal
}
//IsLegalOption 判断选项是否为合法选项
func IsLegalOption(options []string, option string) bool {
for i := 0; i < len(options); i++ {
if options[i] == option {
......@@ -832,6 +855,7 @@ func IsLegalOption(options []string, option string) bool {
return false
}
//ChangeStatus 修改游戏状态,同步更新历史记录
func (action *Action) ChangeStatus(game *pkt.GuessGame, destStatus int32) {
if game.Status != destStatus {
game.PreStatus = game.Status
......@@ -843,6 +867,7 @@ func (action *Action) ChangeStatus(game *pkt.GuessGame, destStatus int32) {
return
}
//ChangeAllAddrIndex 状态更新时,更新下注记录的历史信息
func (action *Action) ChangeAllAddrIndex(game *pkt.GuessGame) {
for i := 0; i < len(game.Plays) ; i++ {
player := game.Plays[i]
......@@ -851,6 +876,7 @@ func (action *Action) ChangeAllAddrIndex(game *pkt.GuessGame) {
}
}
//RefreshStatusByTime 检测游戏是否过期,是否可以下注
func (action *Action) RefreshStatusByTime(game *pkt.GuessGame) (canBet bool) {
var mainHeight int64
......@@ -895,6 +921,7 @@ func (action *Action) RefreshStatusByTime(game *pkt.GuessGame) (canBet bool) {
return canBet
}
//CheckTime 检测游戏的过期设置。
func (action *Action) CheckTime(start *pkt.GuessGameStart) bool {
if start.MaxBetHeight == 0 && start.ExpireHeight == 0 {
//如果上述字段都不携带,则认为完全由admin的指令驱动。
......
......@@ -9,10 +9,12 @@ import (
pkt "github.com/33cn/plugin/plugin/dapp/guess/types"
)
//Query_QueryGamesByIds method
func (g *Guess) Query_QueryGamesByIds(in *pkt.QueryGuessGameInfos) (types.Message, error) {
return Infos(g.GetStateDB(), in)
}
//Query_QueryGameById method
func (g *Guess) Query_QueryGameById(in *pkt.QueryGuessGameInfo) (types.Message, error) {
game, err := readGame(g.GetStateDB(), in.GetGameId())
if err != nil {
......@@ -21,6 +23,7 @@ func (g *Guess) Query_QueryGameById(in *pkt.QueryGuessGameInfo) (types.Message,
return &pkt.ReplyGuessGameInfo{Game: game}, nil
}
//Query_QueryGamesByAddr method
func (g *Guess) Query_QueryGamesByAddr(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByAddr(g.GetLocalDB(), in.Addr, in.Index)
if err != nil {
......@@ -30,6 +33,7 @@ func (g *Guess) Query_QueryGamesByAddr(in *pkt.QueryGuessGameInfo) (types.Messag
return records, nil
}
//Query_QueryGamesByStatus method
func (g *Guess) Query_QueryGamesByStatus(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByStatus(g.GetLocalDB(), in.Status, in.Index)
if err != nil {
......@@ -39,6 +43,7 @@ func (g *Guess) Query_QueryGamesByStatus(in *pkt.QueryGuessGameInfo) (types.Mess
return records, nil
}
//Query_QueryGamesByAdminAddr method
func (g *Guess) Query_QueryGamesByAdminAddr(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByAdminAddr(g.GetLocalDB(), in.AdminAddr, in.Index)
if err != nil {
......@@ -48,6 +53,7 @@ func (g *Guess) Query_QueryGamesByAdminAddr(in *pkt.QueryGuessGameInfo) (types.M
return records, nil
}
//Query_QueryGamesByAddrStatus method
func (g *Guess) Query_QueryGamesByAddrStatus(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByAddrStatus(g.GetLocalDB(), in.Addr, in.Status, in.Index)
if err != nil {
......@@ -57,6 +63,7 @@ func (g *Guess) Query_QueryGamesByAddrStatus(in *pkt.QueryGuessGameInfo) (types.
return records, nil
}
//Query_QueryGamesByAdminStatus method
func (g *Guess) Query_QueryGamesByAdminStatus(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByAdminStatus(g.GetLocalDB(), in.AdminAddr, in.Status, in.Index)
if err != nil {
......@@ -66,6 +73,7 @@ func (g *Guess) Query_QueryGamesByAdminStatus(in *pkt.QueryGuessGameInfo) (types
return records, nil
}
//Query_QueryGamesByCategoryStatus method
func (g *Guess) Query_QueryGamesByCategoryStatus(in *pkt.QueryGuessGameInfo) (types.Message, error) {
records, err := getGameListByCategoryStatus(g.GetLocalDB(), in.Category, in.Status, in.Index)
if err != nil {
......
......@@ -4,7 +4,7 @@ import "transaction.proto";
package types;
//竞猜游戏内容
//GuessGame 竞猜游戏详情
message GuessGame {
string gameId = 1; //游戏ID
int32 status = 2; //游戏的状态:创建->投注->截止投注->开奖
......@@ -33,11 +33,13 @@ message GuessGame {
bool drivenByAdmin = 25;
}
//GuessPlayer 竞猜玩家信息
message GuessPlayer {
string addr = 1;
GuessBet bet = 2;
}
//GuessBet 竞猜下注信息
message GuessBet {
string option = 1;
int64 betsNumber = 2;
......@@ -47,19 +49,21 @@ message GuessBet {
int64 preIndex = 6;
}
//GuessBetStat 竞猜下注统计信息
message GuessBetStat {
int64 totalBetTimes = 1;
int64 totalBetsNumber = 2;
repeated GuessBetStatItem items = 3;
}
//GuessBetStat 竞猜下注子选项统计信息
message GuessBetStatItem {
string option = 1;
int64 betsNumber = 2;
int64 betsTimes = 3;
}
//游戏状态
//GuessGameAction 竞猜游戏动作
message GuessGameAction {
oneof value {
GuessGameStart start = 1;
......@@ -72,7 +76,7 @@ message GuessGameAction {
int32 ty = 7;
}
//游戏启动
//GuessGameStart 游戏创建
message GuessGameStart{
string topic = 1;
string options = 2;
......@@ -88,36 +92,36 @@ message GuessGameStart{
bool drivenByAdmin = 12;
}
//参与游戏下注
//GuessGameBet 参与游戏下注
message GuessGameBet{
string gameId = 1;
string option = 2;
int64 betsNum = 3;
}
//游戏停止下注
//GuessGameStopBet 游戏停止下注
message GuessGameStopBet{
string gameId = 1;
}
//游戏异常终止,退还下注
//GuessGameAbort 游戏异常终止,退还下注
message GuessGameAbort{
string gameId = 1;
}
//游戏结果揭晓
//GuessGamePublish 游戏结果揭晓
message GuessGamePublish{
string gameId = 1;
string result = 2;
}
//查询游戏结果
//GuessGameQuery 查询游戏结果
message GuessGameQuery{
string gameId = 1;
uint32 ty = 2;
}
//QueryGuessGameInfo 游戏信息查询消息
message QueryGuessGameInfo {
string gameId = 1;
string addr = 2;
......@@ -127,18 +131,22 @@ message QueryGuessGameInfo {
string category = 6;
}
//ReplyGuessGameInfo 游戏信息查询响应消息
message ReplyGuessGameInfo {
GuessGame game = 1;
}
//QueryGuessGameInfos 游戏信息列表查询消息
message QueryGuessGameInfos {
repeated string gameIds = 1;
}
//ReplyGuessGameInfos 游戏信息列表查询响应消息
message ReplyGuessGameInfos {
repeated GuessGame games = 1;
}
//ReceiptGuessGame 竞猜游戏收据信息
message ReceiptGuessGame {
string gameId = 1;
int32 preStatus = 2;
......@@ -151,6 +159,7 @@ message ReceiptGuessGame {
bool statusChange = 9;
}
//GuessStartTxReq 构造start交易的请求
message GuessStartTxReq {
string topic = 1;
string options = 2;
......@@ -167,6 +176,7 @@ message GuessStartTxReq {
int64 fee = 13;
}
//GuessBetTxReq 构造bet交易的请求
message GuessBetTxReq {
string gameId = 1;
string option = 2;
......@@ -174,40 +184,39 @@ message GuessBetTxReq {
int64 fee = 4;
}
//GuessStopBetTxReq 构造stopBet交易的请求
message GuessStopBetTxReq {
string gameId = 1;
int64 fee = 2;
}
//GuessAbortTxReq 构造abort交易的请求
message GuessAbortTxReq {
string gameId = 1;
int64 fee = 2;
}
//GuessPublishTxReq 构造publish交易的请求
message GuessPublishTxReq {
string gameId = 1;
string result = 2;
int64 fee = 3;
}
// 索引value值
// GuessGameRecord game信息查询记录
message GuessGameRecord {
string gameId = 1;
int32 status = 2;
int64 index = 3;
}
message GuessGameIndexRecord {
string gameId = 1;
int64 index = 2;
}
// GuessGameRecords game信息查询记录集
message GuessGameRecords {
repeated GuessGameRecord records = 1;
}
// guess 对外提供服务的接口
// service guess 为guess 对外提供服务的接口
service guess {
//游戏开始
rpc GuessStart(GuessGameStart) returns (UnsignTx) {}
......
......@@ -12,6 +12,7 @@ import (
pb "github.com/33cn/plugin/plugin/dapp/guess/types"
)
//GuessStartTx 构造start原始交易
func (c *Jrpc) GuessStartTx(parm *pb.GuessStartTxReq, result *interface{}) error {
if parm == nil {
return types.ErrInvalidParam
......@@ -25,6 +26,7 @@ func (c *Jrpc) GuessStartTx(parm *pb.GuessStartTxReq, result *interface{}) error
return nil
}
//GuessBetTx 构造bet原始交易
func (c *Jrpc) GuessBetTx(parm *pb.GuessBetTxReq, result *interface{}) error {
if parm == nil {
return types.ErrInvalidParam
......@@ -39,6 +41,7 @@ func (c *Jrpc) GuessBetTx(parm *pb.GuessBetTxReq, result *interface{}) error {
return nil
}
//GuessStopBetTx 构造stopBet原始交易
func (c *Jrpc) GuessStopBetTx(parm *pb.GuessStopBetTxReq, result *interface{}) error {
if parm == nil {
return types.ErrInvalidParam
......@@ -53,6 +56,7 @@ func (c *Jrpc) GuessStopBetTx(parm *pb.GuessStopBetTxReq, result *interface{}) e
return nil
}
//GuessAbortTx 构造abort原始交易
func (c *Jrpc) GuessAbortTx(parm *pb.GuessAbortTxReq, result *interface{}) error {
if parm == nil {
return types.ErrInvalidParam
......@@ -67,6 +71,7 @@ func (c *Jrpc) GuessAbortTx(parm *pb.GuessAbortTxReq, result *interface{}) error
return nil
}
//GuessPublishTx 构造publish原始交易
func (c *Jrpc) GuessPublishTx(parm *pb.GuessPublishTxReq, result *interface{}) error {
if parm == nil {
return types.ErrInvalidParam
......
......@@ -11,6 +11,7 @@ import (
pb "github.com/33cn/plugin/plugin/dapp/guess/types"
)
//构造start原始交易
func (c *channelClient) GuessStart(ctx context.Context, parm *pb.GuessStartTxReq) (*types.UnsignTx, error) {
v := &pb.GuessGameStart{
Topic: parm.Topic,
......@@ -28,7 +29,7 @@ func (c *channelClient) GuessStart(ctx context.Context, parm *pb.GuessStartTxReq
val := &pb.GuessGameAction{
Ty: pb.GuessGameActionStart,
Value: &pb.GuessGameAction_Start{v},
Value: &pb.GuessGameAction_Start{Start: v},
}
name := types.ExecName(pb.GuessX)
......@@ -47,6 +48,7 @@ func (c *channelClient) GuessStart(ctx context.Context, parm *pb.GuessStartTxReq
return &types.UnsignTx{Data: data}, nil
}
//构造bet原始交易
func (c *channelClient) GuessBet(ctx context.Context, parm *pb.GuessBetTxReq) (*types.UnsignTx, error) {
v := &pb.GuessGameBet{
GameId: parm.GameId,
......@@ -56,7 +58,7 @@ func (c *channelClient) GuessBet(ctx context.Context, parm *pb.GuessBetTxReq) (*
val := &pb.GuessGameAction{
Ty: pb.GuessGameActionBet,
Value: &pb.GuessGameAction_Bet{v},
Value: &pb.GuessGameAction_Bet{Bet: v},
}
name := types.ExecName(pb.GuessX)
......@@ -75,6 +77,7 @@ func (c *channelClient) GuessBet(ctx context.Context, parm *pb.GuessBetTxReq) (*
return &types.UnsignTx{Data: data}, nil
}
//构造stopBet原始交易
func (c *channelClient) GuessStopBet(ctx context.Context, parm *pb.GuessStopBetTxReq) (*types.UnsignTx, error) {
v := &pb.GuessGameStopBet{
GameId: parm.GameId,
......@@ -82,7 +85,7 @@ func (c *channelClient) GuessStopBet(ctx context.Context, parm *pb.GuessStopBetT
val := &pb.GuessGameAction{
Ty: pb.GuessGameActionStopBet,
Value: &pb.GuessGameAction_StopBet{v},
Value: &pb.GuessGameAction_StopBet{StopBet: v},
}
name := types.ExecName(pb.GuessX)
......@@ -101,6 +104,7 @@ func (c *channelClient) GuessStopBet(ctx context.Context, parm *pb.GuessStopBetT
return &types.UnsignTx{Data: data}, nil
}
//构造abort原始交易
func (c *channelClient) GuessAbort(ctx context.Context, parm *pb.GuessAbortTxReq) (*types.UnsignTx, error) {
v := &pb.GuessGameAbort{
GameId: parm.GameId,
......@@ -108,7 +112,7 @@ func (c *channelClient) GuessAbort(ctx context.Context, parm *pb.GuessAbortTxReq
val := &pb.GuessGameAction{
Ty: pb.GuessGameActionAbort,
Value: &pb.GuessGameAction_Abort{v},
Value: &pb.GuessGameAction_Abort{Abort: v},
}
name := types.ExecName(pb.GuessX)
tx := &types.Transaction{
......@@ -126,6 +130,7 @@ func (c *channelClient) GuessAbort(ctx context.Context, parm *pb.GuessAbortTxReq
return &types.UnsignTx{Data: data}, nil
}
//构造publish原始交易
func (c *channelClient) GuessPublish(ctx context.Context, parm *pb.GuessPublishTxReq) (*types.UnsignTx, error) {
v := &pb.GuessGamePublish{
GameId: parm.GameId,
......@@ -134,7 +139,7 @@ func (c *channelClient) GuessPublish(ctx context.Context, parm *pb.GuessPublishT
val := &pb.GuessGameAction{
Ty: pb.GuessGameActionPublish,
Value: &pb.GuessGameAction_Publish{v},
Value: &pb.GuessGameAction_Publish{Publish: v},
}
name := types.ExecName(pb.GuessX)
......@@ -153,10 +158,11 @@ func (c *channelClient) GuessPublish(ctx context.Context, parm *pb.GuessPublishT
return &types.UnsignTx{Data: data}, nil
}
//构造查询交易
func (c *channelClient) Show(ctx context.Context, head *pb.GuessGameQuery) (*types.UnsignTx, error) {
val := &pb.GuessGameAction{
Ty: pb.GuessGameActionQuery,
Value: &pb.GuessGameAction_Query{head},
Value: &pb.GuessGameAction_Query{Query: head},
}
tx, err := types.CreateFormatTx(pb.GuessX, types.Encode(val))
if err != nil {
......
......@@ -8,10 +8,12 @@ import (
"github.com/33cn/chain33/rpc/types"
)
//Jrpc struct
type Jrpc struct {
cli *channelClient
}
//Grpc struct
type Grpc struct {
*channelClient
}
......@@ -20,6 +22,7 @@ type channelClient struct {
types.ChannelClient
}
//Init method
func Init(name string, s types.RPCServer) {
cli := &channelClient{}
grpc := &Grpc{channelClient: cli}
......
......@@ -26,6 +26,7 @@ const (
GuessGameStatusTimeOut
)
//game log ty
const (
TyLogGuessGameStart = 901
TyLogGuessGameBet = 902
......@@ -45,18 +46,28 @@ var (
)
const (
//查询方法名
//FuncName_QueryGamesByIds func name
FuncName_QueryGamesByIds = "QueryGamesByIds"
//FuncName_QueryGameById func name
FuncName_QueryGameById = "QueryGameById"
//FuncName_QueryGameByAddr func name
FuncName_QueryGameByAddr = "QueryGamesByAddr"
//FuncName_QueryGameByStatus func name
FuncName_QueryGameByStatus = "QueryGamesByStatus"
//FuncName_QueryGameByAdminAddr func name
FuncName_QueryGameByAdminAddr = "QueryGamesByAdminAddr"
//FuncName_QueryGameByAddrStatus func name
FuncName_QueryGameByAddrStatus = "QueryGamesByAddrStatus"
//FuncName_QueryGameByAdminStatus func name
FuncName_QueryGameByAdminStatus = "QueryGamesByAdminStatus"
//FuncName_QueryGameByCategoryStatus func name
FuncName_QueryGameByCategoryStatus="QueryGamesByCategoryStatus"
)
const (
//DevShareAddr default value
DevShareAddr = "1D6RFZNp2rh6QdbcZ1d7RWuBUz61We6SD7"
//PlatformShareAddr default value
PlatformShareAddr = "1PHtChNt3UcfssR7v7trKSk3WJtAWjKjjX"
)
\ No newline at end of file
......@@ -10,4 +10,5 @@ import "errors"
var (
ErrNoPrivilege = errors.New("ErrNoPrivilege")
ErrGuessStatus = errors.New("ErrGuessStatus")
ErrOverBetsLimit = errors.New("ErrOverBetsLimit")
)
......@@ -23,7 +23,7 @@ var _ = math.Inf
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
//竞猜游戏内容
//GuessGame 竞猜游戏详情
type GuessGame struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
......@@ -255,6 +255,7 @@ func (m *GuessGame) GetDrivenByAdmin() bool {
return false
}
//GuessPlayer 竞猜玩家信息
type GuessPlayer struct {
Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
Bet *GuessBet `protobuf:"bytes,2,opt,name=bet,proto3" json:"bet,omitempty"`
......@@ -302,6 +303,7 @@ func (m *GuessPlayer) GetBet() *GuessBet {
return nil
}
//GuessBet 竞猜下注信息
type GuessBet struct {
Option string `protobuf:"bytes,1,opt,name=option,proto3" json:"option,omitempty"`
BetsNumber int64 `protobuf:"varint,2,opt,name=betsNumber,proto3" json:"betsNumber,omitempty"`
......@@ -381,6 +383,7 @@ func (m *GuessBet) GetPreIndex() int64 {
return 0
}
//GuessBetStat 竞猜下注统计信息
type GuessBetStat struct {
TotalBetTimes int64 `protobuf:"varint,1,opt,name=totalBetTimes,proto3" json:"totalBetTimes,omitempty"`
TotalBetsNumber int64 `protobuf:"varint,2,opt,name=totalBetsNumber,proto3" json:"totalBetsNumber,omitempty"`
......@@ -436,6 +439,7 @@ func (m *GuessBetStat) GetItems() []*GuessBetStatItem {
return nil
}
//GuessBetStat 竞猜下注子选项统计信息
type GuessBetStatItem struct {
Option string `protobuf:"bytes,1,opt,name=option,proto3" json:"option,omitempty"`
BetsNumber int64 `protobuf:"varint,2,opt,name=betsNumber,proto3" json:"betsNumber,omitempty"`
......@@ -491,7 +495,7 @@ func (m *GuessBetStatItem) GetBetsTimes() int64 {
return 0
}
//游戏状态
//GuessGameAction 竞猜游戏动作
type GuessGameAction struct {
// Types that are valid to be assigned to Value:
// *GuessGameAction_Start
......@@ -778,7 +782,7 @@ func _GuessGameAction_OneofSizer(msg proto.Message) (n int) {
return n
}
//游戏启动
//GuessGameStart 游戏创建
type GuessGameStart struct {
Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
Options string `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"`
......@@ -906,7 +910,7 @@ func (m *GuessGameStart) GetDrivenByAdmin() bool {
return false
}
//参与游戏下注
//GuessGameBet 参与游戏下注
type GuessGameBet struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Option string `protobuf:"bytes,2,opt,name=option,proto3" json:"option,omitempty"`
......@@ -962,7 +966,7 @@ func (m *GuessGameBet) GetBetsNum() int64 {
return 0
}
//游戏停止下注
//GuessGameStopBet 游戏停止下注
type GuessGameStopBet struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -1002,7 +1006,7 @@ func (m *GuessGameStopBet) GetGameId() string {
return ""
}
//游戏异常终止,退还下注
//GuessGameAbort 游戏异常终止,退还下注
type GuessGameAbort struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -1042,7 +1046,7 @@ func (m *GuessGameAbort) GetGameId() string {
return ""
}
//游戏结果揭晓
//GuessGamePublish 游戏结果揭晓
type GuessGamePublish struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Result string `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
......@@ -1090,7 +1094,7 @@ func (m *GuessGamePublish) GetResult() string {
return ""
}
//查询游戏结果
//GuessGameQuery 查询游戏结果
type GuessGameQuery struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Ty uint32 `protobuf:"varint,2,opt,name=ty,proto3" json:"ty,omitempty"`
......@@ -1138,6 +1142,7 @@ func (m *GuessGameQuery) GetTy() uint32 {
return 0
}
//QueryGuessGameInfo 游戏信息查询消息
type QueryGuessGameInfo struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
......@@ -1217,6 +1222,7 @@ func (m *QueryGuessGameInfo) GetCategory() string {
return ""
}
//ReplyGuessGameInfo 游戏信息查询响应消息
type ReplyGuessGameInfo struct {
Game *GuessGame `protobuf:"bytes,1,opt,name=game,proto3" json:"game,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -1256,6 +1262,7 @@ func (m *ReplyGuessGameInfo) GetGame() *GuessGame {
return nil
}
//QueryGuessGameInfos 游戏信息列表查询消息
type QueryGuessGameInfos struct {
GameIds []string `protobuf:"bytes,1,rep,name=gameIds,proto3" json:"gameIds,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -1295,6 +1302,7 @@ func (m *QueryGuessGameInfos) GetGameIds() []string {
return nil
}
//ReplyGuessGameInfos 游戏信息列表查询响应消息
type ReplyGuessGameInfos struct {
Games []*GuessGame `protobuf:"bytes,1,rep,name=games,proto3" json:"games,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -1334,6 +1342,7 @@ func (m *ReplyGuessGameInfos) GetGames() []*GuessGame {
return nil
}
//ReceiptGuessGame 竞猜游戏收据信息
type ReceiptGuessGame struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
PreStatus int32 `protobuf:"varint,2,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
......@@ -1437,6 +1446,7 @@ func (m *ReceiptGuessGame) GetStatusChange() bool {
return false
}
//GuessStartTxReq 构造start交易的请求
type GuessStartTxReq struct {
Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
Options string `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"`
......@@ -1572,6 +1582,7 @@ func (m *GuessStartTxReq) GetFee() int64 {
return 0
}
//GuessBetTxReq 构造bet交易的请求
type GuessBetTxReq struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Option string `protobuf:"bytes,2,opt,name=option,proto3" json:"option,omitempty"`
......@@ -1635,6 +1646,7 @@ func (m *GuessBetTxReq) GetFee() int64 {
return 0
}
//GuessStopBetTxReq 构造stopBet交易的请求
type GuessStopBetTxReq struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Fee int64 `protobuf:"varint,2,opt,name=fee,proto3" json:"fee,omitempty"`
......@@ -1682,6 +1694,7 @@ func (m *GuessStopBetTxReq) GetFee() int64 {
return 0
}
//GuessAbortTxReq 构造abort交易的请求
type GuessAbortTxReq struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Fee int64 `protobuf:"varint,2,opt,name=fee,proto3" json:"fee,omitempty"`
......@@ -1729,6 +1742,7 @@ func (m *GuessAbortTxReq) GetFee() int64 {
return 0
}
//GuessPublishTxReq 构造publish交易的请求
type GuessPublishTxReq struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Result string `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
......@@ -1784,7 +1798,7 @@ func (m *GuessPublishTxReq) GetFee() int64 {
return 0
}
// 索引value值
// GuessGameRecord game信息查询记录
type GuessGameRecord struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
......@@ -1840,53 +1854,7 @@ func (m *GuessGameRecord) GetIndex() int64 {
return 0
}
type GuessGameIndexRecord struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Index int64 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GuessGameIndexRecord) Reset() { *m = GuessGameIndexRecord{} }
func (m *GuessGameIndexRecord) String() string { return proto.CompactTextString(m) }
func (*GuessGameIndexRecord) ProtoMessage() {}
func (*GuessGameIndexRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_7574406c5d3430e8, []int{23}
}
func (m *GuessGameIndexRecord) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GuessGameIndexRecord.Unmarshal(m, b)
}
func (m *GuessGameIndexRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GuessGameIndexRecord.Marshal(b, m, deterministic)
}
func (m *GuessGameIndexRecord) XXX_Merge(src proto.Message) {
xxx_messageInfo_GuessGameIndexRecord.Merge(m, src)
}
func (m *GuessGameIndexRecord) XXX_Size() int {
return xxx_messageInfo_GuessGameIndexRecord.Size(m)
}
func (m *GuessGameIndexRecord) XXX_DiscardUnknown() {
xxx_messageInfo_GuessGameIndexRecord.DiscardUnknown(m)
}
var xxx_messageInfo_GuessGameIndexRecord proto.InternalMessageInfo
func (m *GuessGameIndexRecord) GetGameId() string {
if m != nil {
return m.GameId
}
return ""
}
func (m *GuessGameIndexRecord) GetIndex() int64 {
if m != nil {
return m.Index
}
return 0
}
// GuessGameRecords game信息查询记录集
type GuessGameRecords struct {
Records []*GuessGameRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -1898,7 +1866,7 @@ func (m *GuessGameRecords) Reset() { *m = GuessGameRecords{} }
func (m *GuessGameRecords) String() string { return proto.CompactTextString(m) }
func (*GuessGameRecords) ProtoMessage() {}
func (*GuessGameRecords) Descriptor() ([]byte, []int) {
return fileDescriptor_7574406c5d3430e8, []int{24}
return fileDescriptor_7574406c5d3430e8, []int{23}
}
func (m *GuessGameRecords) XXX_Unmarshal(b []byte) error {
......@@ -1950,94 +1918,92 @@ func init() {
proto.RegisterType((*GuessAbortTxReq)(nil), "types.GuessAbortTxReq")
proto.RegisterType((*GuessPublishTxReq)(nil), "types.GuessPublishTxReq")
proto.RegisterType((*GuessGameRecord)(nil), "types.GuessGameRecord")
proto.RegisterType((*GuessGameIndexRecord)(nil), "types.GuessGameIndexRecord")
proto.RegisterType((*GuessGameRecords)(nil), "types.GuessGameRecords")
}
func init() { proto.RegisterFile("guess.proto", fileDescriptor_7574406c5d3430e8) }
var fileDescriptor_7574406c5d3430e8 = []byte{
// 1268 bytes of a gzipped FileDescriptorProto
// 1255 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcd, 0x6e, 0xdb, 0x46,
0x10, 0xb6, 0x48, 0x51, 0x3f, 0x23, 0xd9, 0x56, 0xd6, 0x89, 0xc3, 0x1a, 0x46, 0xa1, 0x12, 0x41,
0x2a, 0x14, 0x88, 0x5b, 0x28, 0x40, 0x51, 0xa4, 0xc8, 0xc1, 0x6a, 0x90, 0xd8, 0x97, 0x36, 0xa5,
0x1d, 0xa4, 0x57, 0x4a, 0x5a, 0xcb, 0x04, 0x24, 0x92, 0x21, 0x57, 0x86, 0x74, 0xef, 0xb5, 0x4f,
0xd1, 0x1e, 0x7a, 0x6b, 0x9f, 0xa3, 0x4f, 0x55, 0xcc, 0xec, 0x52, 0x5c, 0x52, 0x94, 0x25, 0x17,
0xbd, 0x69, 0x7e, 0x76, 0x66, 0x76, 0x76, 0xe6, 0x9b, 0xa1, 0xa0, 0x35, 0x99, 0xf3, 0x24, 0x39,
0x8b, 0xe2, 0x50, 0x84, 0xcc, 0x12, 0xcb, 0x88, 0x27, 0x27, 0x8f, 0x44, 0xec, 0x05, 0x89, 0x37,
0x12, 0x7e, 0x18, 0x48, 0x89, 0xf3, 0x77, 0x0d, 0x9a, 0xef, 0x50, 0xf3, 0x9d, 0x37, 0xe3, 0xec,
0x18, 0x6a, 0x13, 0x6f, 0xc6, 0x2f, 0xc7, 0x76, 0xa5, 0x5b, 0xe9, 0x35, 0x5d, 0x45, 0x21, 0x3f,
0x11, 0x9e, 0x98, 0x27, 0xb6, 0xd1, 0xad, 0xf4, 0x2c, 0x57, 0x51, 0xec, 0x14, 0x9a, 0x51, 0xcc,
0xaf, 0xa4, 0xc8, 0x24, 0x51, 0xc6, 0x40, 0x69, 0x22, 0xbc, 0x58, 0x5c, 0xfb, 0x33, 0x6e, 0x57,
0xbb, 0x95, 0x9e, 0xe9, 0x66, 0x0c, 0xd6, 0x85, 0x16, 0x11, 0x17, 0xdc, 0x9f, 0xdc, 0x0a, 0xdb,
0x22, 0xb9, 0xce, 0x5a, 0x69, 0x5c, 0x2f, 0x2e, 0xbc, 0xe4, 0xd6, 0xae, 0x51, 0x48, 0x3a, 0x8b,
0x3d, 0x06, 0x4b, 0x84, 0x91, 0x3f, 0xb2, 0xeb, 0x24, 0x93, 0x04, 0x3b, 0x81, 0xc6, 0xc8, 0x13,
0x7c, 0x12, 0xc6, 0x4b, 0xbb, 0x41, 0x82, 0x15, 0xcd, 0x6c, 0xa8, 0x87, 0x11, 0xde, 0x3f, 0xb1,
0x9b, 0x24, 0x4a, 0x49, 0xe6, 0x40, 0x7b, 0xe6, 0x2d, 0x06, 0x3c, 0x0d, 0x08, 0x28, 0xa0, 0x1c,
0x8f, 0x3d, 0x87, 0x03, 0x49, 0x27, 0x3f, 0x05, 0x9c, 0xae, 0xd5, 0x22, 0xad, 0x02, 0x97, 0x3d,
0x83, 0x7d, 0xc5, 0xf9, 0x71, 0x3e, 0x1b, 0xf2, 0xd8, 0x6e, 0x93, 0x5a, 0x9e, 0x89, 0x1e, 0xc7,
0xfc, 0xee, 0x2d, 0xe7, 0x6f, 0xbd, 0x91, 0x08, 0x63, 0x7b, 0x5f, 0x7a, 0xd4, 0x79, 0xec, 0x73,
0x00, 0x49, 0x9f, 0x8f, 0xc7, 0xb1, 0x7d, 0x40, 0x21, 0x6b, 0x1c, 0xf4, 0x14, 0x4d, 0x3d, 0x91,
0x19, 0x39, 0x94, 0x9e, 0x72, 0x4c, 0xcc, 0xa4, 0x62, 0x90, 0x99, 0x8e, 0xcc, 0xa4, 0xc6, 0xc2,
0x58, 0xf8, 0x22, 0xf2, 0x63, 0xae, 0x6e, 0xff, 0x48, 0xc6, 0xa2, 0xf3, 0xf0, 0x3d, 0xbd, 0xf1,
0xcc, 0x0f, 0xc8, 0x06, 0x23, 0x1b, 0x19, 0x03, 0x23, 0x1d, 0x66, 0x17, 0x3e, 0xa2, 0xf3, 0x1a,
0x87, 0xf5, 0xc0, 0x8a, 0xa6, 0xde, 0x32, 0xb1, 0x1f, 0x77, 0xcd, 0x5e, 0xab, 0xcf, 0xce, 0xa8,
0x26, 0xcf, 0xa8, 0xf8, 0xde, 0x4f, 0xbd, 0x25, 0x8f, 0x5d, 0xa9, 0x80, 0xd5, 0x16, 0xf3, 0x64,
0x3e, 0x15, 0xf6, 0x13, 0x59, 0x85, 0x92, 0x62, 0x2f, 0xa0, 0x3e, 0xe4, 0x02, 0x8b, 0xcb, 0x3e,
0xee, 0x56, 0x7a, 0xad, 0xfe, 0x91, 0x6e, 0x63, 0x20, 0x45, 0x6e, 0xaa, 0x83, 0xc5, 0xe1, 0x07,
0x63, 0xbe, 0xb0, 0x9f, 0x52, 0x2c, 0x92, 0xc0, 0xe2, 0x88, 0x62, 0x7e, 0x49, 0x02, 0x9b, 0x04,
0x2b, 0x1a, 0x93, 0x39, 0x8e, 0xfd, 0x3b, 0x1e, 0x0c, 0x96, 0xe7, 0x78, 0x2f, 0xfb, 0xb3, 0x6e,
0xa5, 0xd7, 0x70, 0xf3, 0x4c, 0xe7, 0x0d, 0xb4, 0xb4, 0xa0, 0x19, 0x83, 0xaa, 0x87, 0x09, 0x91,
0x1d, 0x43, 0xbf, 0xd9, 0x17, 0x60, 0x0e, 0xb9, 0xa0, 0x66, 0x69, 0xf5, 0x0f, 0x0b, 0x51, 0xba,
0x28, 0x73, 0xfe, 0xac, 0x40, 0x23, 0xe5, 0xe0, 0x8d, 0x65, 0x19, 0xa6, 0x7d, 0x27, 0xa9, 0x42,
0x4e, 0x8d, 0xb5, 0x9c, 0x9e, 0x40, 0xc3, 0x4f, 0x3e, 0xfa, 0x41, 0xc0, 0x63, 0x6a, 0xbf, 0x86,
0xbb, 0xa2, 0xd1, 0x66, 0x14, 0x87, 0x37, 0xbe, 0x50, 0xad, 0xa7, 0xa8, 0x2c, 0x2d, 0xd6, 0xa6,
0xb4, 0xd4, 0xf2, 0x69, 0x71, 0x7e, 0xab, 0x40, 0x5b, 0x4f, 0x31, 0xe6, 0x49, 0x84, 0xc2, 0x9b,
0x0e, 0x38, 0xb5, 0x72, 0x42, 0x51, 0x9b, 0x6e, 0x9e, 0xc9, 0x7a, 0x70, 0x98, 0x32, 0xf2, 0x37,
0x28, 0xb2, 0xd9, 0x0b, 0xb0, 0x7c, 0xc1, 0x67, 0x08, 0x21, 0x58, 0x1a, 0x4f, 0x4b, 0x9e, 0xf5,
0x52, 0xf0, 0x99, 0x2b, 0xb5, 0x9c, 0x5b, 0xe8, 0x14, 0x45, 0xff, 0x39, 0x83, 0xa7, 0xd0, 0x44,
0x4a, 0x5e, 0xc3, 0x94, 0x18, 0xb5, 0x62, 0x38, 0xff, 0x18, 0x70, 0xb8, 0x42, 0xc7, 0x73, 0xc2,
0x4d, 0x0c, 0x96, 0x20, 0x88, 0x1c, 0xb5, 0xfa, 0x4f, 0xf4, 0x60, 0x51, 0xed, 0x8a, 0x10, 0x6c,
0xcf, 0x95, 0x5a, 0xec, 0x4b, 0xbd, 0x14, 0x8e, 0x8a, 0xca, 0x08, 0x2d, 0x7b, 0x54, 0x10, 0xec,
0x25, 0xd4, 0x13, 0x11, 0x46, 0x03, 0x2e, 0x28, 0x8e, 0x42, 0x1a, 0xa4, 0x65, 0x12, 0x5f, 0xec,
0xb9, 0xa9, 0x26, 0x06, 0xe3, 0x0d, 0xc3, 0x58, 0xbe, 0x71, 0x49, 0x30, 0xe7, 0x28, 0xc4, 0x60,
0x48, 0x0b, 0x7d, 0x44, 0xf3, 0xe1, 0xd4, 0x4f, 0x6e, 0xe9, 0xf5, 0x4b, 0x7c, 0xbc, 0x97, 0x62,
0xf4, 0xa1, 0x34, 0xd1, 0xc7, 0xa7, 0x39, 0x8f, 0x97, 0x54, 0x17, 0x25, 0x3e, 0x7e, 0x46, 0x21,
0xfa, 0x20, 0x2d, 0x76, 0x00, 0x86, 0x58, 0x12, 0x20, 0x5b, 0xae, 0x21, 0x96, 0x83, 0x3a, 0x58,
0x77, 0xde, 0x74, 0xce, 0x9d, 0x3f, 0x4c, 0x38, 0xc8, 0x67, 0x29, 0xc3, 0xef, 0x8a, 0x8e, 0xdf,
0x1a, 0x46, 0x1b, 0x79, 0x8c, 0xd6, 0x91, 0xdd, 0x2c, 0x20, 0x7b, 0x11, 0xbf, 0xab, 0x3b, 0xe1,
0xb7, 0xb5, 0x1b, 0x7e, 0xd7, 0x76, 0xc1, 0xef, 0xfa, 0x56, 0xfc, 0x6e, 0x6c, 0xc7, 0xef, 0xe6,
0x0e, 0xf8, 0x0d, 0xdb, 0xf1, 0xbb, 0x55, 0x82, 0xdf, 0x6b, 0xf0, 0xd6, 0x2e, 0x83, 0xb7, 0x5f,
0x54, 0xb3, 0xab, 0xf2, 0xbc, 0x6f, 0x27, 0x50, 0x1d, 0x67, 0xe4, 0x3a, 0xce, 0x26, 0x94, 0xc6,
0x1c, 0xa9, 0x7e, 0x4a, 0x49, 0xe7, 0x2b, 0xd5, 0xb7, 0x5a, 0x2d, 0x6f, 0xb2, 0xee, 0xf4, 0xb4,
0x5a, 0xa1, 0x22, 0xde, 0xa8, 0x39, 0xd0, 0xac, 0xaa, 0xea, 0xbd, 0x2f, 0x66, 0x35, 0x59, 0x0c,
0x7d, 0xb2, 0x38, 0xdf, 0x69, 0xde, 0xa8, 0x9c, 0x37, 0x5a, 0x90, 0xd5, 0x8d, 0xa7, 0xf7, 0xb1,
0xba, 0x11, 0xc6, 0x19, 0x9d, 0x58, 0x9d, 0xbf, 0x0c, 0x6e, 0xc2, 0x8d, 0xc7, 0xd3, 0x61, 0x61,
0x68, 0xc3, 0x22, 0x5b, 0xae, 0xcc, 0xdc, 0x72, 0xb5, 0x02, 0xea, 0xaa, 0x0e, 0xd4, 0xb9, 0x21,
0x6c, 0x15, 0x87, 0xb0, 0xde, 0x20, 0xb5, 0x7c, 0x83, 0x38, 0xaf, 0x80, 0xb9, 0x3c, 0x9a, 0x16,
0x22, 0x7d, 0x06, 0x55, 0x8c, 0x4d, 0xa1, 0x59, 0xa7, 0xd8, 0xdc, 0x2e, 0x49, 0x9d, 0xaf, 0xe1,
0x68, 0xfd, 0x96, 0x09, 0xbe, 0xb5, 0xbc, 0x18, 0x8e, 0x00, 0x13, 0x3b, 0x55, 0x91, 0xce, 0x6b,
0x38, 0x5a, 0x77, 0x96, 0xb0, 0xe7, 0x60, 0xa1, 0x86, 0x54, 0x2f, 0x73, 0x27, 0xc5, 0xce, 0xaf,
0x06, 0x74, 0x5c, 0x3e, 0xe2, 0x7e, 0x24, 0xb6, 0x6f, 0xa7, 0xb9, 0x2d, 0xd4, 0x28, 0x6e, 0xa1,
0x9b, 0xd2, 0x9b, 0x3e, 0x45, 0x55, 0x7b, 0x8a, 0xad, 0xc9, 0xdd, 0x34, 0x23, 0xb3, 0xc7, 0xaa,
0x17, 0xa6, 0xea, 0xc6, 0x4d, 0xd4, 0x81, 0xb6, 0x8c, 0xe4, 0x87, 0x5b, 0x2f, 0x98, 0x70, 0x6a,
0xfc, 0x86, 0x9b, 0xe3, 0x39, 0x7f, 0x99, 0x6a, 0xfe, 0x5c, 0xc9, 0xa5, 0xd7, 0xe5, 0x9f, 0xfe,
0x57, 0xcc, 0x3c, 0x85, 0xe6, 0xcc, 0x5b, 0xe4, 0x00, 0x33, 0x63, 0xac, 0x21, 0xaa, 0xb5, 0x13,
0xa2, 0xd6, 0x76, 0x43, 0xd4, 0xfa, 0x2e, 0x88, 0xda, 0xd8, 0x8a, 0xa8, 0xcd, 0xed, 0x88, 0x0a,
0x3b, 0x20, 0x6a, 0x6b, 0x3b, 0xa2, 0xb6, 0x4b, 0x10, 0xb5, 0x03, 0xe6, 0x0d, 0xe7, 0x6a, 0x71,
0xc7, 0x9f, 0x0e, 0x87, 0xfd, 0x74, 0x37, 0x91, 0xcf, 0xf5, 0x50, 0xf8, 0x64, 0x50, 0x45, 0xbc,
0x54, 0xd8, 0x49, 0xbf, 0x53, 0x37, 0xd5, 0xcc, 0xcd, 0x6b, 0x78, 0xa4, 0xea, 0x82, 0x60, 0xf4,
0x7e, 0x57, 0xea, 0xb8, 0x91, 0x1d, 0xff, 0x5e, 0x95, 0x15, 0x21, 0xeb, 0x43, 0x0f, 0x7f, 0x50,
0xbe, 0x15, 0xd8, 0x6e, 0xbd, 0x66, 0x19, 0xe2, 0xa6, 0x66, 0xcd, 0xcc, 0xec, 0x47, 0x6d, 0xd5,
0x72, 0xf9, 0x28, 0x8c, 0xc7, 0x0f, 0xfe, 0x1c, 0x5d, 0x35, 0xa1, 0xa9, 0x35, 0xa1, 0xf3, 0x06,
0x1e, 0x6b, 0x28, 0x34, 0xe6, 0x8b, 0x2d, 0xd6, 0x57, 0x56, 0x8c, 0xbc, 0x95, 0x4e, 0x21, 0xbc,
0x84, 0x7d, 0x03, 0xf5, 0x58, 0xfe, 0x54, 0x78, 0x76, 0xbc, 0x86, 0x67, 0x24, 0x76, 0x53, 0xb5,
0xfe, 0xef, 0x06, 0x58, 0xf4, 0x61, 0xce, 0xbe, 0x05, 0xc8, 0x3a, 0x9b, 0x95, 0x6f, 0x91, 0x27,
0xe9, 0xa7, 0xc3, 0x87, 0x20, 0xf1, 0x27, 0xc1, 0xf5, 0xc2, 0xd9, 0x63, 0x7d, 0xed, 0xb3, 0xa1,
0x6c, 0x9d, 0x2c, 0x3b, 0xf3, 0x4a, 0x8d, 0xf4, 0x74, 0xe8, 0x6e, 0xda, 0x2c, 0xcb, 0xce, 0xa6,
0x71, 0xca, 0x21, 0x5c, 0xbe, 0x60, 0xde, 0xe7, 0x33, 0x1d, 0xc9, 0x9b, 0x36, 0xcd, 0x92, 0xb3,
0xc3, 0x1a, 0xfd, 0x37, 0xf1, 0xf2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x4b, 0x73, 0xb4,
0xc4, 0x10, 0x00, 0x00,
0x10, 0xb6, 0x48, 0x51, 0x3f, 0x23, 0xf9, 0x27, 0xeb, 0xc4, 0x61, 0x0d, 0xa3, 0x50, 0x89, 0x20,
0x15, 0x0a, 0xc4, 0x2d, 0x14, 0xa0, 0x28, 0x52, 0xe4, 0x60, 0x35, 0x48, 0xec, 0x4b, 0x9b, 0xd2,
0x0e, 0xd2, 0x2b, 0x25, 0xad, 0x25, 0x02, 0x12, 0xc9, 0x90, 0x2b, 0x43, 0xba, 0xf7, 0xda, 0xa7,
0x68, 0x0f, 0xbd, 0xb5, 0xcf, 0xd1, 0xa7, 0x2a, 0x66, 0x76, 0x29, 0x2e, 0x29, 0xca, 0x92, 0x8b,
0xde, 0x38, 0x3f, 0x3b, 0x33, 0x3b, 0x3b, 0xf3, 0xcd, 0x48, 0xd0, 0x1a, 0xcf, 0x79, 0x92, 0x9c,
0x47, 0x71, 0x28, 0x42, 0x66, 0x89, 0x65, 0xc4, 0x93, 0xd3, 0x47, 0x22, 0xf6, 0x82, 0xc4, 0x1b,
0x0a, 0x3f, 0x0c, 0xa4, 0xc4, 0xf9, 0xbb, 0x06, 0xcd, 0x77, 0xa8, 0xf9, 0xce, 0x9b, 0x71, 0x76,
0x02, 0xb5, 0xb1, 0x37, 0xe3, 0x57, 0x23, 0xbb, 0xd2, 0xa9, 0x74, 0x9b, 0xae, 0xa2, 0x90, 0x9f,
0x08, 0x4f, 0xcc, 0x13, 0xdb, 0xe8, 0x54, 0xba, 0x96, 0xab, 0x28, 0x76, 0x06, 0xcd, 0x28, 0xe6,
0xd7, 0x52, 0x64, 0x92, 0x28, 0x63, 0xa0, 0x34, 0x11, 0x5e, 0x2c, 0x6e, 0xfc, 0x19, 0xb7, 0xab,
0x9d, 0x4a, 0xd7, 0x74, 0x33, 0x06, 0xeb, 0x40, 0x8b, 0x88, 0x4b, 0xee, 0x8f, 0x27, 0xc2, 0xb6,
0x48, 0xae, 0xb3, 0x56, 0x1a, 0x37, 0x8b, 0x4b, 0x2f, 0x99, 0xd8, 0x35, 0x0a, 0x49, 0x67, 0xb1,
0xc7, 0x60, 0x89, 0x30, 0xf2, 0x87, 0x76, 0x9d, 0x64, 0x92, 0x60, 0xa7, 0xd0, 0x18, 0x7a, 0x82,
0x8f, 0xc3, 0x78, 0x69, 0x37, 0x48, 0xb0, 0xa2, 0x99, 0x0d, 0xf5, 0x30, 0xc2, 0xfb, 0x27, 0x76,
0x93, 0x44, 0x29, 0xc9, 0x1c, 0x68, 0xcf, 0xbc, 0x45, 0x9f, 0xa7, 0x01, 0x01, 0x05, 0x94, 0xe3,
0xb1, 0xe7, 0x70, 0x20, 0xe9, 0xe4, 0xa7, 0x80, 0xd3, 0xb5, 0x5a, 0xa4, 0x55, 0xe0, 0xb2, 0x67,
0xb0, 0xaf, 0x38, 0x3f, 0xce, 0x67, 0x03, 0x1e, 0xdb, 0x6d, 0x52, 0xcb, 0x33, 0xd1, 0xe3, 0x88,
0xdf, 0xbd, 0xe5, 0xfc, 0xad, 0x37, 0x14, 0x61, 0x6c, 0xef, 0x4b, 0x8f, 0x3a, 0x8f, 0x7d, 0x0e,
0x20, 0xe9, 0x8b, 0xd1, 0x28, 0xb6, 0x0f, 0x28, 0x64, 0x8d, 0x83, 0x9e, 0xa2, 0xa9, 0x27, 0x32,
0x23, 0x87, 0xd2, 0x53, 0x8e, 0x89, 0x99, 0x54, 0x0c, 0x32, 0x73, 0x24, 0x33, 0xa9, 0xb1, 0x30,
0x16, 0xbe, 0x88, 0xfc, 0x98, 0xab, 0xdb, 0x3f, 0x92, 0xb1, 0xe8, 0x3c, 0x7c, 0x4f, 0x6f, 0x34,
0xf3, 0x03, 0xb2, 0xc1, 0xc8, 0x46, 0xc6, 0xc0, 0x48, 0x07, 0xd9, 0x85, 0x8f, 0xe9, 0xbc, 0xc6,
0x61, 0x5d, 0xb0, 0xa2, 0xa9, 0xb7, 0x4c, 0xec, 0xc7, 0x1d, 0xb3, 0xdb, 0xea, 0xb1, 0x73, 0xaa,
0xc9, 0x73, 0x2a, 0xbe, 0xf7, 0x53, 0x6f, 0xc9, 0x63, 0x57, 0x2a, 0x60, 0xb5, 0xc5, 0x3c, 0x99,
0x4f, 0x85, 0xfd, 0x44, 0x56, 0xa1, 0xa4, 0xd8, 0x0b, 0xa8, 0x0f, 0xb8, 0xc0, 0xe2, 0xb2, 0x4f,
0x3a, 0x95, 0x6e, 0xab, 0x77, 0xac, 0xdb, 0xe8, 0x4b, 0x91, 0x9b, 0xea, 0x60, 0x71, 0xf8, 0xc1,
0x88, 0x2f, 0xec, 0xa7, 0x14, 0x8b, 0x24, 0xb0, 0x38, 0xa2, 0x98, 0x5f, 0x91, 0xc0, 0x26, 0xc1,
0x8a, 0xc6, 0x64, 0x8e, 0x62, 0xff, 0x8e, 0x07, 0xfd, 0xe5, 0x05, 0xde, 0xcb, 0xfe, 0xac, 0x53,
0xe9, 0x36, 0xdc, 0x3c, 0xd3, 0x79, 0x03, 0x2d, 0x2d, 0x68, 0xc6, 0xa0, 0xea, 0x61, 0x42, 0x64,
0xc7, 0xd0, 0x37, 0xfb, 0x02, 0xcc, 0x01, 0x17, 0xd4, 0x2c, 0xad, 0xde, 0x61, 0x21, 0x4a, 0x17,
0x65, 0xce, 0x9f, 0x15, 0x68, 0xa4, 0x1c, 0xbc, 0xb1, 0x2c, 0xc3, 0xb4, 0xef, 0x24, 0x55, 0xc8,
0xa9, 0xb1, 0x96, 0xd3, 0x53, 0x68, 0xf8, 0xc9, 0x47, 0x3f, 0x08, 0x78, 0x4c, 0xed, 0xd7, 0x70,
0x57, 0x34, 0xda, 0x8c, 0xe2, 0xf0, 0xd6, 0x17, 0xaa, 0xf5, 0x14, 0x95, 0xa5, 0xc5, 0xda, 0x94,
0x96, 0x5a, 0x3e, 0x2d, 0xce, 0x6f, 0x15, 0x68, 0xeb, 0x29, 0xc6, 0x3c, 0x89, 0x50, 0x78, 0xd3,
0x3e, 0xa7, 0x56, 0x4e, 0x28, 0x6a, 0xd3, 0xcd, 0x33, 0x59, 0x17, 0x0e, 0x53, 0x46, 0xfe, 0x06,
0x45, 0x36, 0x7b, 0x01, 0x96, 0x2f, 0xf8, 0x0c, 0x21, 0x04, 0x4b, 0xe3, 0x69, 0xc9, 0xb3, 0x5e,
0x09, 0x3e, 0x73, 0xa5, 0x96, 0x33, 0x81, 0xa3, 0xa2, 0xe8, 0x3f, 0x67, 0xf0, 0x0c, 0x9a, 0x48,
0xc9, 0x6b, 0x98, 0x12, 0xa3, 0x56, 0x0c, 0xe7, 0x1f, 0x03, 0x0e, 0x57, 0xe8, 0x78, 0x41, 0xb8,
0x89, 0xc1, 0x12, 0x04, 0x91, 0xa3, 0x56, 0xef, 0x89, 0x1e, 0x2c, 0xaa, 0x5d, 0x13, 0x82, 0xed,
0xb9, 0x52, 0x8b, 0x7d, 0xa9, 0x97, 0xc2, 0x71, 0x51, 0x19, 0xa1, 0x65, 0x8f, 0x0a, 0x82, 0xbd,
0x84, 0x7a, 0x22, 0xc2, 0xa8, 0xcf, 0x05, 0xc5, 0x51, 0x48, 0x83, 0xb4, 0x4c, 0xe2, 0xcb, 0x3d,
0x37, 0xd5, 0xc4, 0x60, 0xbc, 0x41, 0x18, 0xcb, 0x37, 0x2e, 0x09, 0xe6, 0x02, 0x85, 0x18, 0x0c,
0x69, 0xa1, 0x8f, 0x68, 0x3e, 0x98, 0xfa, 0xc9, 0x84, 0x5e, 0xbf, 0xc4, 0xc7, 0x7b, 0x29, 0x46,
0x1f, 0x4a, 0x13, 0x7d, 0x7c, 0x9a, 0xf3, 0x78, 0x49, 0x75, 0x51, 0xe2, 0xe3, 0x67, 0x14, 0xa2,
0x0f, 0xd2, 0x62, 0x07, 0x60, 0x88, 0x25, 0x01, 0xb2, 0xe5, 0x1a, 0x62, 0xd9, 0xaf, 0x83, 0x75,
0xe7, 0x4d, 0xe7, 0xdc, 0xf9, 0xc3, 0x84, 0x83, 0x7c, 0x96, 0x32, 0xfc, 0xae, 0xe8, 0xf8, 0xad,
0x61, 0xb4, 0x91, 0xc7, 0x68, 0x1d, 0xd9, 0xcd, 0x02, 0xb2, 0x17, 0xf1, 0xbb, 0xba, 0x13, 0x7e,
0x5b, 0xbb, 0xe1, 0x77, 0x6d, 0x17, 0xfc, 0xae, 0x6f, 0xc5, 0xef, 0xc6, 0x76, 0xfc, 0x6e, 0xee,
0x80, 0xdf, 0xb0, 0x1d, 0xbf, 0x5b, 0x25, 0xf8, 0xbd, 0x06, 0x6f, 0xed, 0x32, 0x78, 0xfb, 0x45,
0x35, 0xbb, 0x2a, 0xcf, 0xfb, 0x76, 0x02, 0xd5, 0x71, 0x46, 0xae, 0xe3, 0x6c, 0x42, 0x69, 0xcc,
0x91, 0xea, 0xa7, 0x94, 0x74, 0xbe, 0x52, 0x7d, 0xab, 0xd5, 0xf2, 0x26, 0xeb, 0x4e, 0x57, 0xab,
0x15, 0x2a, 0xe2, 0x8d, 0x9a, 0x7d, 0xcd, 0xaa, 0xaa, 0xde, 0xfb, 0x62, 0x56, 0x93, 0xc5, 0xd0,
0x27, 0x8b, 0xf3, 0x9d, 0xe6, 0x8d, 0xca, 0x79, 0xa3, 0x05, 0x59, 0xdd, 0x78, 0x7a, 0x1f, 0xab,
0x1b, 0x61, 0x9c, 0xd1, 0x89, 0xd5, 0xf9, 0xab, 0xe0, 0x36, 0xdc, 0x78, 0x3c, 0x1d, 0x16, 0x86,
0x36, 0x2c, 0xb2, 0xe5, 0xca, 0xcc, 0x2d, 0x57, 0x2b, 0xa0, 0xae, 0xea, 0x40, 0x9d, 0x1b, 0xc2,
0x56, 0x71, 0x08, 0xeb, 0x0d, 0x52, 0xcb, 0x37, 0x88, 0xf3, 0x0a, 0x98, 0xcb, 0xa3, 0x69, 0x21,
0xd2, 0x67, 0x50, 0xc5, 0xd8, 0x14, 0x9a, 0x1d, 0x15, 0x9b, 0xdb, 0x25, 0xa9, 0xf3, 0x35, 0x1c,
0xaf, 0xdf, 0x32, 0xc1, 0xb7, 0x96, 0x17, 0xc3, 0x11, 0x60, 0x62, 0xa7, 0x2a, 0xd2, 0x79, 0x0d,
0xc7, 0xeb, 0xce, 0x12, 0xf6, 0x1c, 0x2c, 0xd4, 0x90, 0xea, 0x65, 0xee, 0xa4, 0xd8, 0xf9, 0xd5,
0x80, 0x23, 0x97, 0x0f, 0xb9, 0x1f, 0x89, 0xed, 0xdb, 0x69, 0x6e, 0x0b, 0x35, 0x8a, 0x5b, 0xe8,
0xa6, 0xf4, 0xa6, 0x4f, 0x51, 0xd5, 0x9e, 0x62, 0x6b, 0x72, 0x37, 0xcd, 0xc8, 0xec, 0xb1, 0xea,
0x85, 0xa9, 0xba, 0x71, 0x13, 0x75, 0xa0, 0x2d, 0x23, 0xf9, 0x61, 0xe2, 0x05, 0x63, 0x4e, 0x8d,
0xdf, 0x70, 0x73, 0x3c, 0xe7, 0x2f, 0x53, 0xcd, 0x9f, 0x6b, 0xb9, 0xf4, 0xba, 0xfc, 0xd3, 0xff,
0x8a, 0x99, 0x67, 0xd0, 0x9c, 0x79, 0x8b, 0x1c, 0x60, 0x66, 0x8c, 0x35, 0x44, 0xb5, 0x76, 0x42,
0xd4, 0xda, 0x6e, 0x88, 0x5a, 0xdf, 0x05, 0x51, 0x1b, 0x5b, 0x11, 0xb5, 0xb9, 0x1d, 0x51, 0x61,
0x07, 0x44, 0x6d, 0x6d, 0x47, 0xd4, 0x76, 0x09, 0xa2, 0x1e, 0x81, 0x79, 0xcb, 0xb9, 0x5a, 0xdc,
0xf1, 0xd3, 0xe1, 0xb0, 0x9f, 0xee, 0x26, 0xf2, 0xb9, 0x1e, 0x0a, 0x9f, 0x0c, 0xaa, 0x88, 0x97,
0x0a, 0x3b, 0xe9, 0x3b, 0x75, 0x53, 0xcd, 0xdc, 0xbc, 0x86, 0x47, 0xaa, 0x2e, 0x08, 0x46, 0xef,
0x77, 0xa5, 0x8e, 0x1b, 0xd9, 0xf1, 0xef, 0x55, 0x59, 0x11, 0xb2, 0x3e, 0xf4, 0xf0, 0x07, 0xe5,
0x5b, 0x81, 0xed, 0xd6, 0x6b, 0x96, 0x21, 0x6e, 0x6a, 0xd6, 0xcc, 0xcc, 0x7e, 0xd4, 0x56, 0x2d,
0x97, 0x0f, 0xc3, 0x78, 0xf4, 0xe0, 0x9f, 0xa3, 0xab, 0x26, 0x34, 0xb5, 0x26, 0x74, 0xde, 0x68,
0x03, 0x42, 0x1a, 0x4e, 0xd8, 0x37, 0x50, 0x8f, 0xe5, 0xa7, 0x42, 0xa2, 0x93, 0x35, 0x24, 0x22,
0xb1, 0x9b, 0xaa, 0xf5, 0x7e, 0x37, 0xc0, 0xa2, 0x9f, 0xd4, 0xec, 0x5b, 0x80, 0xac, 0x27, 0x59,
0xf9, 0xfe, 0x77, 0x9a, 0x2e, 0xfd, 0x1f, 0x82, 0xc4, 0x1f, 0x07, 0x37, 0x0b, 0x67, 0x8f, 0xf5,
0xb4, 0x85, 0xbf, 0x6c, 0x11, 0x2c, 0x3b, 0xf3, 0x4a, 0x0d, 0xe3, 0x74, 0x5c, 0x6e, 0xda, 0x09,
0xcb, 0xce, 0xa6, 0x71, 0xca, 0xf1, 0x59, 0xbe, 0x1a, 0xde, 0xe7, 0x33, 0x1d, 0xa6, 0x9b, 0x76,
0xc4, 0x92, 0xb3, 0x83, 0x1a, 0xfd, 0xab, 0xf0, 0xf2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0,
0x09, 0xae, 0xf2, 0x7e, 0x10, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
......
......@@ -4,6 +4,7 @@
package types
//GuessGameStartTx struct
type GuessGameStartTx struct {
Topic string `json:"topic,omitempty"`
Options string `json:"options,omitempty"`
......@@ -19,6 +20,7 @@ type GuessGameStartTx struct {
Fee int64 `json:"fee,omitempty"`
}
//GuessGameBetTx struct
type GuessGameBetTx struct {
GameId string `json:"gameId,omitempty"`
Option string `json:"option,omitempty"`
......@@ -26,17 +28,20 @@ type GuessGameBetTx struct {
Fee int64 `json:"fee,omitempty"`
}
//GuessGameStopBetTx struct
type GuessGameStopBetTx struct {
GameId string `json:"gameId,omitempty"`
Fee int64 `json:"fee,omitempty"`
}
//GuessGamePublishTx struct
type GuessGamePublishTx struct {
GameId string `json:"gameId,omitempty"`
Result string `json:"result,omitempty"`
Fee int64 `json:"fee,omitempty"`
}
//GuessGameAbortTx struct
type GuessGameAbortTx struct {
GameId string `json:"gameId,omitempty"`
Fee int64 `json:"fee,omitempty"`
......
......@@ -24,21 +24,24 @@ func init() {
types.RegisterDappFork(GuessX, "Enable", 0)
}
// exec
// GuessType struct
type GuessType struct {
types.ExecTypeBase
}
// NewType method
func NewType() *GuessType {
c := &GuessType{}
c.SetChild(c)
return c
}
// GetPayload method
func (t *GuessType) GetPayload() types.Message {
return &GuessGameAction{}
}
// GetTypeMap method
func (t *GuessType) GetTypeMap() map[string]int32 {
return map[string]int32{
"Start": GuessGameActionStart,
......@@ -50,14 +53,15 @@ func (t *GuessType) GetTypeMap() map[string]int32 {
}
}
// GetLogMap method
func (t *GuessType) GetLogMap() map[int64]*types.LogInfo {
return map[int64]*types.LogInfo{
TyLogGuessGameStart: {reflect.TypeOf(ReceiptGuessGame{}), "TyLogGuessGameStart"},
TyLogGuessGameBet: {reflect.TypeOf(ReceiptGuessGame{}), "TyLogGuessGameBet"},
TyLogGuessGameStopBet: {reflect.TypeOf(ReceiptGuessGame{}), "TyLogGuessGameStopBet"},
TyLogGuessGameAbort: {reflect.TypeOf(ReceiptGuessGame{}), "TyLogGuessGameAbort"},
TyLogGuessGamePublish: {reflect.TypeOf(ReceiptGuessGame{}), "TyLogGuessGamePublish"},
TyLogGuessGameTimeout: {reflect.TypeOf(ReceiptGuessGame{}), "TyLogGuessGameTimeout"},
TyLogGuessGameStart: { Ty: reflect.TypeOf(ReceiptGuessGame{}), Name: "TyLogGuessGameStart"},
TyLogGuessGameBet: { Ty: reflect.TypeOf(ReceiptGuessGame{}), Name: "TyLogGuessGameBet"},
TyLogGuessGameStopBet: { Ty: reflect.TypeOf(ReceiptGuessGame{}), Name: "TyLogGuessGameStopBet"},
TyLogGuessGameAbort: { Ty: reflect.TypeOf(ReceiptGuessGame{}), Name: "TyLogGuessGameAbort"},
TyLogGuessGamePublish: { Ty: reflect.TypeOf(ReceiptGuessGame{}), Name: "TyLogGuessGamePublish"},
TyLogGuessGameTimeout: { Ty: reflect.TypeOf(ReceiptGuessGame{}), Name: "TyLogGuessGameTimeout"},
}
}
......@@ -105,12 +109,12 @@ func (t *GuessType) CreateTx(action string, message json.RawMessage) (*types.Tra
return nil, types.ErrInvalidParam
}
return CreateRawGuessAbortTx(&param)
} else {
return nil, types.ErrNotSupport
}
return nil, types.ErrNotSupport
}
// CreateRawLotteryCreateTx method
// CreateRawGuessStartTx method
func CreateRawGuessStartTx(parm *GuessGameStartTx) (*types.Transaction, error) {
if parm == nil {
llog.Error("CreateRawGuessStartTx", "parm", parm)
......
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