Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
a8e53ba4
Commit
a8e53ba4
authored
Dec 03, 2018
by
张振华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
guess
parent
82b582dc
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
721 additions
and
330 deletions
+721
-330
game.go
plugin/dapp/guess/commands/game.go
+14
-8
doc.go
plugin/dapp/guess/executor/doc.go
+17
-9
exec.go
plugin/dapp/guess/executor/exec.go
+5
-0
guessdb.go
plugin/dapp/guess/executor/guessdb.go
+229
-27
query.go
plugin/dapp/guess/executor/query.go
+49
-4
guess.proto
plugin/dapp/guess/proto/guess.proto
+42
-25
jrpc.go
plugin/dapp/guess/rpc/jrpc.go
+4
-3
tx.go
plugin/dapp/guess/rpc/tx.go
+35
-13
const.go
plugin/dapp/guess/types/const.go
+7
-0
guess.pb.go
plugin/dapp/guess/types/guess.pb.go
+292
-241
types.go
plugin/dapp/guess/types/types.go
+27
-0
No files found.
plugin/dapp/guess/commands/game.go
View file @
a8e53ba4
...
@@ -62,9 +62,13 @@ func addGuessStartFlags(cmd *cobra.Command) {
...
@@ -62,9 +62,13 @@ func addGuessStartFlags(cmd *cobra.Command) {
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
()
.
Float64P
(
"fee"
,
"f"
,
0
,
"fee
"
)
cmd
.
Flags
()
.
Int64P
(
"devFeeFactor"
,
"df"
,
0
,
"dev fee factor, unit: 1/1000
"
)
cmd
.
Flags
()
.
StringP
(
"feeAddr"
,
"a"
,
""
,
"fee address"
)
cmd
.
Flags
()
.
StringP
(
"devFeeAddr"
,
"dfa"
,
""
,
"dev address to receive share"
)
cmd
.
Flags
()
.
Int64P
(
"platFeeFactor"
,
"pf"
,
0
,
"plat fee factor, unit: 1/1000"
)
cmd
.
Flags
()
.
StringP
(
"platFeeAddr"
,
"pfa"
,
""
,
"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"
,
"ex"
,
""
,
"expire time of the game, after this any addr can abort it"
)
...
@@ -82,13 +86,13 @@ func guessStart(cmd *cobra.Command, args []string) {
...
@@ -82,13 +86,13 @@ func guessStart(cmd *cobra.Command, args []string) {
oneBet
,
_
:=
cmd
.
Flags
()
.
GetUint32
(
"oneBet"
)
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"
)
fee
,
_
:=
cmd
.
Flags
()
.
GetFloat64
(
"fee"
)
devFeeFactor
,
_
:=
cmd
.
Flags
()
.
GetInt64
(
"devFeeFactor"
)
feeAddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"feeAddr"
)
devFeeAddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"devFeeAddr"
)
platFeeFactor
,
_
:=
cmd
.
Flags
()
.
GetInt64
(
"platFeeFactor"
)
platFeeAddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"platFeeAddr"
)
expire
,
_
:=
cmd
.
Flags
()
.
GetString
(
"expire"
)
expire
,
_
:=
cmd
.
Flags
()
.
GetString
(
"expire"
)
expireHeight
,
_
:=
cmd
.
Flags
()
.
GetUint32
(
"expireHeight"
)
expireHeight
,
_
:=
cmd
.
Flags
()
.
GetUint32
(
"expireHeight"
)
feeInt64
:=
uint64
(
fee
*
1e4
)
params
:=
&
pkt
.
GuessStartTxReq
{
params
:=
&
pkt
.
GuessStartTxReq
{
Topic
:
topic
,
Topic
:
topic
,
Options
:
options
,
Options
:
options
,
...
@@ -99,8 +103,10 @@ func guessStart(cmd *cobra.Command, args []string) {
...
@@ -99,8 +103,10 @@ func guessStart(cmd *cobra.Command, args []string) {
OneBet
:
oneBet
,
OneBet
:
oneBet
,
MaxBets
:
maxBets
,
MaxBets
:
maxBets
,
MaxBetsNumber
:
maxBetsNumber
,
MaxBetsNumber
:
maxBetsNumber
,
Fee
:
feeInt64
,
DevFeeFactor
:
devFeeFactor
,
FeeAddr
:
feeAddr
,
DevFeeAddr
:
devFeeAddr
,
PlatFeeFactor
:
platFeeFactor
,
PlatFeeAddr
:
platFeeAddr
,
Expire
:
expire
,
Expire
:
expire
,
ExpireHeight
:
expireHeight
,
ExpireHeight
:
expireHeight
,
}
}
...
...
plugin/dapp/guess/executor/doc.go
View file @
a8e53ba4
...
@@ -8,8 +8,8 @@ package executor
...
@@ -8,8 +8,8 @@ package executor
区块链游戏:竞猜
区块链游戏:竞猜
一、玩法简介:
一、玩法简介:
菠菜
平台的管理员可以发布竞猜游戏,玩家可以对竞猜游戏进行投注.
博彩
平台的管理员可以发布竞猜游戏,玩家可以对竞猜游戏进行投注.
截止
时间达到后
,玩家不能再进行投注,等待管理员公布结果.
截止
投注时间达到后,管理员改变游戏状态为停止投注状态
,玩家不能再进行投注,等待管理员公布结果.
竞猜内容的结果出来以后,管理员根据竞猜内容的真实结果触发智能合约进行输赢判断及结算。
竞猜内容的结果出来以后,管理员根据竞猜内容的真实结果触发智能合约进行输赢判断及结算。
二、创建及参与游戏
二、创建及参与游戏
...
@@ -19,7 +19,7 @@ package executor
...
@@ -19,7 +19,7 @@ package executor
三、制胜策略
三、制胜策略
1、竞猜游戏对应的现实世界的结果出来以后,游戏管理员向区块链合约公布胜出的竞猜选项。
1、竞猜游戏对应的现实世界的结果出来以后,游戏管理员向区块链合约公布胜出的竞猜选项。
2、合约将投注的所有赌注向压注正确选项的玩家进行分配,分配原则根据每个地址实际投注的数额占比进行分配,比如一个地址投注占了正确选项投注总额的1/2,则该地址将获得所有赌注总额的1/2。
2、合约将投注的所有赌注向压注正确选项的玩家进行分配,分配原则根据每个地址实际投注的数额占比进行分配,比如一个地址投注占了正确选项投注总额的1/2,则该地址将获得所有赌注总额的1/2。
3、如果因为现实世界的突发异常导致竞猜不能继续(比如某场足球比赛因为不可抗力取消了),则管理员可以终止竞猜,合约将把所有地址的投注返还。
3、如果因为现实世界的突发异常导致竞猜不能继续(比如某场足球比赛因为不可抗力取消了
,比如自然灾害、政治事件等
),则管理员可以终止竞猜,合约将把所有地址的投注返还。
四、游戏过程和状态
四、游戏过程和状态
1、创建游戏,一个地址可以作为本局竞猜游戏的管理员发起竞猜游戏。
1、创建游戏,一个地址可以作为本局竞猜游戏的管理员发起竞猜游戏。
...
@@ -31,16 +31,24 @@ package executor
...
@@ -31,16 +31,24 @@ package executor
单次最多可下注数量(比如100注)、
单次最多可下注数量(比如100注)、
截止下注时间(比如UTC时间2018-12-12 10:00:00或者区块高度1000000)
截止下注时间(比如UTC时间2018-12-12 10:00:00或者区块高度1000000)
游戏超时时间(比如UTC时间2018-12-20 10:00:00或者区块高度1080000)
游戏超时时间(比如UTC时间2018-12-20 10:00:00或者区块高度1080000)
可下注的最大
地址数量(比如20000个
)
可下注的最大
数量(比如20000个BTY
)
3、截止下注时间之前,玩家可根据游戏要求进行下注,下注金额注入合约地址。如果投注
地址数量已经超过上限,则不允许新的地址
投注。
3、截止下注时间之前,玩家可根据游戏要求进行下注,下注金额注入合约地址。如果投注
数量已经超过上限,则不允许新的
投注。
4、截止下注时间达到后,玩家不可再下注。
4、截止下注时间达到后,玩家不可再下注。
5、现实世界的竞猜结果出现后,管理员在游戏超时时间之前公布游戏结果。
5、现实世界的竞猜结果出现后,管理员在游戏超时时间之前公布游戏结果。
6、
合约根据管理员输入的正确结果,对每个地址的投注进行输赢判断,并将所有赌注对所有竞猜正确的地址按各自的投注额占比进行比例分配
。
6、
(1)合约先对所有赌注收取一定比例的佣金,比如5‰给开发者地址,5‰给平台地址,(2)合约根据管理员输入的正确结果,对每个投注地址进行输赢判断,并将提取佣金后的剩余所有赌注对所有竞猜正确的地址按各自的投注额占比进行比例分配(比如A选项正确,所有选A的赌注共10000个BTY,某个地址向A下注100BTY,则该地址分得1/100)
。
7、如果因为现实世界的突发异常导致竞猜不能继续(比如某场足球比赛因为不可抗力取消了),则管理员可以终止竞猜,合约将把所有地址的投注返还。
7、如果因为现实世界的突发异常导致竞猜不能继续(比如某场足球比赛因为不可抗力取消了),则管理员可以终止竞猜,合约将把所有地址的投注返还。
8、如果游戏超时,管理员仍未公布结果,则任何地址都可以触发合约异常终止竞猜,合约中的投注返还给投注地址。
8、如果游戏超时,管理员仍未公布结果,则任何地址都可以触发合约异常终止竞猜,合约中的投注返还给
原
投注地址。
8、游戏状态:
8、游戏状态:
start(管理员)->bet(玩家)->publish(管理员)
start(管理员)->bet(玩家)->stopbet(管理员)->publish(管理员)
start(管理员)->bet(玩家)->stopbet(管理员)->abort(管理员)
start(管理员)->bet(玩家)->abort(管理员)
start(管理员)->bet(玩家)->abort(管理员)
start(管理员)->abort(管理员)
start(管理员)->bet(玩家)->stopbet(管理员)->timeout->abort(任何人)
start(管理员)->bet(玩家)->timeout->abort(任何人)
start(管理员)->bet(玩家)->timeout->abort(任何人)
说明:这里的管理员不是特殊地址,而是谁创建竞猜游戏,谁就是本局竞猜游戏的管理员。
start(管理员)->timeout->abort(任何人)
start(管理员)->stopbet(管理员)->publish(管理员)
start(管理员)->bet(玩家)->publish(管理员)
start(管理员)->publish(管理员)
说明:这里的管理员不是特殊地址,而是谁创建本局竞猜游戏,谁就是本局竞猜游戏的管理员。
*/
*/
plugin/dapp/guess/executor/exec.go
View file @
a8e53ba4
...
@@ -19,6 +19,11 @@ func (c *Guess) Exec_Bet(payload *pkt.GuessGameBet, tx *types.Transaction, index
...
@@ -19,6 +19,11 @@ func (c *Guess) Exec_Bet(payload *pkt.GuessGameBet, tx *types.Transaction, index
return
action
.
GameBet
(
payload
)
return
action
.
GameBet
(
payload
)
}
}
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
)
}
func
(
c
*
Guess
)
Exec_Publish
(
payload
*
pkt
.
GuessGamePublish
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
func
(
c
*
Guess
)
Exec_Publish
(
payload
*
pkt
.
GuessGamePublish
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
action
:=
NewAction
(
c
,
tx
,
index
)
action
:=
NewAction
(
c
,
tx
,
index
)
return
action
.
GamePublish
(
payload
)
return
action
.
GamePublish
(
payload
)
...
...
plugin/dapp/guess/executor/guessdb.go
View file @
a8e53ba4
...
@@ -5,11 +5,11 @@
...
@@ -5,11 +5,11 @@
package
executor
package
executor
import
(
import
(
"context"
"errors"
"errors"
"fmt"
"fmt"
"github.com/33cn/chain33/client"
"github.com/33cn/chain33/client"
"sort"
"google.golang.org/grpc"
"strconv"
"strings"
"strings"
"time"
"time"
...
@@ -36,6 +36,10 @@ const (
...
@@ -36,6 +36,10 @@ const (
MinBetTimeoutInterval
=
"24h"
//从游戏结束下注开始,一局游戏最短的超时时间
MinBetTimeoutInterval
=
"24h"
//从游戏结束下注开始,一局游戏最短的超时时间
MinOneBet
=
1
MinOneBet
=
1
grpcRecSize
int
=
5
*
30
*
1024
*
1024
retryNum
=
10
)
)
type
Action
struct
{
type
Action
struct
{
...
@@ -49,12 +53,22 @@ type Action struct {
...
@@ -49,12 +53,22 @@ type Action struct {
localDB
dbm
.
Lister
localDB
dbm
.
Lister
index
int
index
int
api
client
.
QueueProtocolAPI
api
client
.
QueueProtocolAPI
conn
*
grpc
.
ClientConn
grpcClient
types
.
Chain33Client
}
}
func
NewAction
(
guess
*
Guess
,
tx
*
types
.
Transaction
,
index
int
)
*
Action
{
func
NewAction
(
guess
*
Guess
,
tx
*
types
.
Transaction
,
index
int
)
*
Action
{
hash
:=
tx
.
Hash
()
hash
:=
tx
.
Hash
()
fromAddr
:=
tx
.
From
()
fromAddr
:=
tx
.
From
()
msgRecvOp
:=
grpc
.
WithMaxMsgSize
(
grpcRecSize
)
conn
,
err
:=
grpc
.
Dial
(
cfg
.
ParaRemoteGrpcClient
,
grpc
.
WithInsecure
(),
msgRecvOp
)
if
err
!=
nil
{
panic
(
err
)
}
grpcClient
:=
types
.
NewChain33Client
(
conn
)
return
&
Action
{
return
&
Action
{
coinsAccount
:
guess
.
GetCoinsAccount
(),
coinsAccount
:
guess
.
GetCoinsAccount
(),
db
:
guess
.
GetStateDB
(),
db
:
guess
.
GetStateDB
(),
...
@@ -66,6 +80,8 @@ func NewAction(guess *Guess, tx *types.Transaction, index int) *Action {
...
@@ -66,6 +80,8 @@ func NewAction(guess *Guess, tx *types.Transaction, index int) *Action {
localDB
:
guess
.
GetLocalDB
(),
localDB
:
guess
.
GetLocalDB
(),
index
:
index
,
index
:
index
,
api
:
guess
.
GetApi
(),
api
:
guess
.
GetApi
(),
conn
:
conn
,
grpcClient
:
grpcClient
,
}
}
}
}
...
@@ -124,17 +140,42 @@ func getGameListByAddr(db dbm.Lister, addr string, index int64) (types.Message,
...
@@ -124,17 +140,42 @@ func getGameListByAddr(db dbm.Lister, addr string, index int64) (types.Message,
return
nil
,
err
return
nil
,
err
}
}
var
gameIds
[]
*
pkt
.
GuessGameRecord
var
records
[]
*
pkt
.
GuessGameRecord
for
_
,
value
:=
range
values
{
var
record
pkt
.
GuessGameRecord
err
:=
types
.
Decode
(
value
,
&
record
)
if
err
!=
nil
{
continue
}
records
=
append
(
records
,
&
record
)
}
return
&
pkt
.
GuessGameRecords
{
Records
:
records
},
nil
}
func
getGameListByAdminAddr
(
db
dbm
.
Lister
,
addr
string
,
index
int64
)
(
types
.
Message
,
error
)
{
var
values
[][]
byte
var
err
error
if
index
==
0
{
values
,
err
=
db
.
List
(
calcGuessGameAdminPrefix
(
addr
),
nil
,
DefaultCount
,
ListDESC
)
}
else
{
values
,
err
=
db
.
List
(
calcGuessGameAdminPrefix
(
addr
),
calcGuessGameAdminKey
(
addr
,
index
),
DefaultCount
,
ListDESC
)
}
if
err
!=
nil
{
return
nil
,
err
}
var
records
[]
*
pkt
.
GuessGameRecord
for
_
,
value
:=
range
values
{
for
_
,
value
:=
range
values
{
var
record
pkt
.
GuessGameRecord
var
record
pkt
.
GuessGameRecord
err
:=
types
.
Decode
(
value
,
&
record
)
err
:=
types
.
Decode
(
value
,
&
record
)
if
err
!=
nil
{
if
err
!=
nil
{
continue
continue
}
}
gameIds
=
append
(
gameI
ds
,
&
record
)
records
=
append
(
recor
ds
,
&
record
)
}
}
return
&
pkt
.
GuessGameRecords
{
Records
:
gameI
ds
},
nil
return
&
pkt
.
GuessGameRecords
{
Records
:
recor
ds
},
nil
}
}
func
getGameListByStatus
(
db
dbm
.
Lister
,
status
int32
,
index
int64
)
(
types
.
Message
,
error
)
{
func
getGameListByStatus
(
db
dbm
.
Lister
,
status
int32
,
index
int64
)
(
types
.
Message
,
error
)
{
...
@@ -149,19 +190,93 @@ func getGameListByStatus(db dbm.Lister, status int32, index int64) (types.Messag
...
@@ -149,19 +190,93 @@ func getGameListByStatus(db dbm.Lister, status int32, index int64) (types.Messag
return
nil
,
err
return
nil
,
err
}
}
var
gameI
ds
[]
*
pkt
.
GuessGameRecord
var
recor
ds
[]
*
pkt
.
GuessGameRecord
for
_
,
value
:=
range
values
{
for
_
,
value
:=
range
values
{
var
record
pkt
.
GuessGameRecord
var
record
pkt
.
GuessGameRecord
err
:=
types
.
Decode
(
value
,
&
record
)
err
:=
types
.
Decode
(
value
,
&
record
)
if
err
!=
nil
{
if
err
!=
nil
{
continue
continue
}
}
gameIds
=
append
(
gameI
ds
,
&
record
)
records
=
append
(
recor
ds
,
&
record
)
}
}
return
&
pkt
.
GuessGameRecords
{
Records
:
gameI
ds
},
nil
return
&
pkt
.
GuessGameRecords
{
Records
:
recor
ds
},
nil
}
}
func
getGameListByAddrStatus
(
db
dbm
.
Lister
,
addr
string
,
status
int32
,
index
int64
)
(
types
.
Message
,
error
)
{
var
values
[][]
byte
var
err
error
if
index
==
0
{
values
,
err
=
db
.
List
(
calcGuessGameAddrStatusPrefix
(
addr
,
status
),
nil
,
DefaultCount
,
ListDESC
)
}
else
{
values
,
err
=
db
.
List
(
calcGuessGameAddrStatusPrefix
(
addr
,
status
),
calcGuessGameAddrStatusKey
(
addr
,
status
,
index
),
DefaultCount
,
ListDESC
)
}
if
err
!=
nil
{
return
nil
,
err
}
var
records
[]
*
pkt
.
GuessGameRecord
for
_
,
value
:=
range
values
{
var
record
pkt
.
GuessGameRecord
err
:=
types
.
Decode
(
value
,
&
record
)
if
err
!=
nil
{
continue
}
records
=
append
(
records
,
&
record
)
}
return
&
pkt
.
GuessGameRecords
{
Records
:
records
},
nil
}
func
getGameListByAdminStatus
(
db
dbm
.
Lister
,
admin
string
,
status
int32
,
index
int64
)
(
types
.
Message
,
error
)
{
var
values
[][]
byte
var
err
error
if
index
==
0
{
values
,
err
=
db
.
List
(
calcGuessGameAdminStatusPrefix
(
admin
,
status
),
nil
,
DefaultCount
,
ListDESC
)
}
else
{
values
,
err
=
db
.
List
(
calcGuessGameAdminStatusPrefix
(
admin
,
status
),
calcGuessGameAdminStatusKey
(
admin
,
status
,
index
),
DefaultCount
,
ListDESC
)
}
if
err
!=
nil
{
return
nil
,
err
}
var
records
[]
*
pkt
.
GuessGameRecord
for
_
,
value
:=
range
values
{
var
record
pkt
.
GuessGameRecord
err
:=
types
.
Decode
(
value
,
&
record
)
if
err
!=
nil
{
continue
}
records
=
append
(
records
,
&
record
)
}
return
&
pkt
.
GuessGameRecords
{
Records
:
records
},
nil
}
func
getGameListByCategoryStatus
(
db
dbm
.
Lister
,
category
string
,
status
int32
,
index
int64
)
(
types
.
Message
,
error
)
{
var
values
[][]
byte
var
err
error
if
index
==
0
{
values
,
err
=
db
.
List
(
calcGuessGameCategoryStatusPrefix
(
category
,
status
),
nil
,
DefaultCount
,
ListDESC
)
}
else
{
values
,
err
=
db
.
List
(
calcGuessGameCategoryStatusPrefix
(
category
,
status
),
calcGuessGameCategoryStatusKey
(
category
,
status
,
index
),
DefaultCount
,
ListDESC
)
}
if
err
!=
nil
{
return
nil
,
err
}
var
records
[]
*
pkt
.
GuessGameRecord
for
_
,
value
:=
range
values
{
var
record
pkt
.
GuessGameRecord
err
:=
types
.
Decode
(
value
,
&
record
)
if
err
!=
nil
{
continue
}
records
=
append
(
records
,
&
record
)
}
return
&
pkt
.
GuessGameRecords
{
Records
:
records
},
nil
}
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
)
...
@@ -234,8 +349,10 @@ func (action *Action) newGame(gameId string, start *pkt.GuessGameStart) (*pkt.Gu
...
@@ -234,8 +349,10 @@ func (action *Action) newGame(gameId string, start *pkt.GuessGameStart) (*pkt.Gu
OneBet
:
start
.
OneBet
,
OneBet
:
start
.
OneBet
,
MaxBets
:
start
.
MaxBets
,
MaxBets
:
start
.
MaxBets
,
MaxBetsNumber
:
start
.
MaxBetsNumber
,
MaxBetsNumber
:
start
.
MaxBetsNumber
,
Fee
:
start
.
Fee
,
DevFeeFactor
:
start
.
DevFeeFactor
,
FeeAddr
:
start
.
FeeAddr
,
DevFeeAddr
:
start
.
DevFeeAddr
,
PlatFeeFactor
:
start
.
PlatFeeFactor
,
PlatFeeAddr
:
start
.
PlatFeeAddr
,
Expire
:
start
.
Expire
,
Expire
:
start
.
Expire
,
ExpireHeight
:
start
.
ExpireHeight
,
ExpireHeight
:
start
.
ExpireHeight
,
//AdminAddr: action.fromaddr,
//AdminAddr: action.fromaddr,
...
@@ -417,6 +534,47 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
...
@@ -417,6 +534,47 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
}
func
(
action
*
Action
)
GameStopBet
(
pbBet
*
pkt
.
GuessGameStopBet
)
(
*
types
.
Receipt
,
error
)
{
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
game
,
err
:=
action
.
readGame
(
pbBet
.
GetGameId
())
if
err
!=
nil
{
logger
.
Error
(
"GameStopBet"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"get game failed"
,
pbBet
.
GetGameId
(),
"err"
,
err
)
return
nil
,
err
}
prevStatus
:=
game
.
Status
if
game
.
Status
!=
pkt
.
GuessGameStatusStart
&&
game
.
Status
!=
pkt
.
GuessGameStatusBet
{
logger
.
Error
(
"GameBet"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"Status error"
,
game
.
GetStatus
())
return
nil
,
errors
.
New
(
"ErrGameStatus"
)
}
//只有adminAddr可以发起publish
if
game
.
AdminAddr
!=
action
.
fromaddr
{
logger
.
Error
(
"GameStopBet"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"fromAddr is not adminAddr"
,
action
.
fromaddr
,
"adminAddr"
,
game
.
AdminAddr
)
return
nil
,
types
.
ErrInvalidParam
}
action
.
ChangeStatus
(
game
,
pkt
.
GuessGameStatusStopBet
)
var
receiptLog
*
types
.
ReceiptLog
if
prevStatus
!=
game
.
Status
{
//状态发生变化,更新所有addr对应记录的index
action
.
ChangeAllAddrIndex
(
game
)
receiptLog
=
action
.
GetReceiptLog
(
game
,
true
)
}
else
{
receiptLog
=
action
.
GetReceiptLog
(
game
,
false
)
}
logs
=
append
(
logs
,
receiptLog
)
kv
=
append
(
kv
,
action
.
saveGame
(
game
)
...
)
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
func
(
action
*
Action
)
AddGuessBet
(
game
*
pkt
.
GuessGame
,
pbBet
*
pkt
.
GuessGameBet
)
{
func
(
action
*
Action
)
AddGuessBet
(
game
*
pkt
.
GuessGame
,
pbBet
*
pkt
.
GuessGameBet
)
{
bet
:=
&
pkt
.
GuessBet
{
Option
:
pbBet
.
GetOption
(),
BetsNumber
:
pbBet
.
BetsNum
,
Index
:
game
.
Index
}
bet
:=
&
pkt
.
GuessBet
{
Option
:
pbBet
.
GetOption
(),
BetsNumber
:
pbBet
.
BetsNum
,
Index
:
game
.
Index
}
player
:=
&
pkt
.
GuessPlayer
{
Addr
:
action
.
fromaddr
,
Bet
:
bet
}
player
:=
&
pkt
.
GuessPlayer
{
Addr
:
action
.
fromaddr
,
Bet
:
bet
}
...
@@ -479,14 +637,14 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
...
@@ -479,14 +637,14 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
game
.
Result
=
publish
.
Result
game
.
Result
=
publish
.
Result
//先遍历所有下注数据,
对于输家,
转移资金到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
*
game
.
OneBet
)
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
logger
.
Error
(
"GamePublish"
,
"addr"
,
game
.
Admin
Addr
,
"execaddr"
,
action
.
execaddr
,
logger
.
Error
(
"GamePublish"
,
"addr"
,
player
.
Addr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
value
,
"err"
,
err
)
"amount"
,
value
,
"err"
,
err
)
return
nil
,
err
return
nil
,
err
}
}
...
@@ -504,11 +662,51 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
...
@@ -504,11 +662,51 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
}
}
}
}
//按创建游戏时设定的比例,转移佣金到开发者账户和平台账户
devAddr
:=
pkt
.
DevShareAddr
platAddr
:=
pkt
.
PlatformShareAddr
devFee
:=
int64
(
0
)
platFee
:=
int64
(
0
)
if
len
(
game
.
DevFeeAddr
)
>
0
{
devAddr
=
game
.
DevFeeAddr
}
if
len
(
game
.
PlatFeeAddr
)
>
0
{
platAddr
=
game
.
PlatFeeAddr
}
if
game
.
DevFeeFactor
>
0
{
devFee
=
int64
(
totalBetsNumber
)
*
game
.
DevFeeFactor
*
int64
(
game
.
OneBet
)
/
1000
receipt
,
err
:=
action
.
coinsAccount
.
ExecTransfer
(
game
.
AdminAddr
,
devAddr
,
action
.
execaddr
,
devFee
)
if
err
!=
nil
{
action
.
coinsAccount
.
ExecFrozen
(
game
.
AdminAddr
,
action
.
execaddr
,
devFee
)
// rollback
logger
.
Error
(
"GamePublish"
,
"adminAddr"
,
game
.
AdminAddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
devFee
,
"err"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
if
game
.
PlatFeeFactor
>
0
{
platFee
=
int64
(
totalBetsNumber
)
*
game
.
PlatFeeFactor
*
int64
(
game
.
OneBet
)
/
1000
receipt
,
err
:=
action
.
coinsAccount
.
ExecTransfer
(
game
.
AdminAddr
,
platAddr
,
action
.
execaddr
,
platFee
)
if
err
!=
nil
{
action
.
coinsAccount
.
ExecFrozen
(
game
.
AdminAddr
,
action
.
execaddr
,
platFee
)
// rollback
logger
.
Error
(
"GamePublish"
,
"adminAddr"
,
game
.
AdminAddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
platFee
,
"err"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
//再遍历赢家,按照投注占比分配所有筹码
//再遍历赢家,按照投注占比分配所有筹码
winValue
:=
int64
(
totalBetsNumber
*
game
.
OneBet
)
-
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
{
value
:=
int64
(
player
.
Bet
.
BetsNumber
*
totalBetsNumber
*
game
.
OneBet
/
winBetsNumber
)
value
:=
int64
(
player
.
Bet
.
BetsNumber
*
uint32
(
winValue
)
/
winBetsNumber
)
receipt
,
err
:=
action
.
coinsAccount
.
ExecTransfer
(
game
.
AdminAddr
,
player
.
Addr
,
action
.
execaddr
,
value
)
receipt
,
err
:=
action
.
coinsAccount
.
ExecTransfer
(
game
.
AdminAddr
,
player
.
Addr
,
action
.
execaddr
,
value
)
if
err
!=
nil
{
if
err
!=
nil
{
action
.
coinsAccount
.
ExecFrozen
(
player
.
Addr
,
action
.
execaddr
,
value
)
// rollback
action
.
coinsAccount
.
ExecFrozen
(
player
.
Addr
,
action
.
execaddr
,
value
)
// rollback
...
@@ -518,22 +716,11 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
...
@@ -518,22 +716,11 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
}
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
player
.
Bet
.
IsWinner
=
true
player
.
Bet
.
Profit
=
value
}
}
}
}
//如果设置了手续费专用地址,则将本局游戏收取的手续费转移到专用地址
if
game
.
Fee
>
0
&&
len
(
game
.
FeeAddr
)
!=
0
&&
game
.
FeeAddr
!=
game
.
AdminAddr
{
value
:=
int64
(
uint32
(
game
.
Fee
)
*
uint32
(
len
(
game
.
Plays
))
receipt
,
err
:=
action
.
coinsAccount
.
ExecTransfer
(
game
.
AdminAddr
,
game
.
FeeAddr
,
action
.
execaddr
,
value
)
if
err
!=
nil
{
action
.
coinsAccount
.
ExecFrozen
(
game
.
FeeAddr
,
action
.
execaddr
,
value
)
// rollback
logger
.
Error
(
"GamePublish"
,
"addr"
,
game
.
FeeAddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
value
,
"err"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
var
receiptLog
*
types
.
ReceiptLog
var
receiptLog
*
types
.
ReceiptLog
if
prevStatus
!=
game
.
Status
{
if
prevStatus
!=
game
.
Status
{
action
.
ChangeAllAddrIndex
(
game
)
action
.
ChangeAllAddrIndex
(
game
)
...
@@ -581,7 +768,7 @@ func (action *Action) GameAbort(pbend *pkt.GuessGameAbort) (*types.Receipt, erro
...
@@ -581,7 +768,7 @@ 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
+
uint32
(
game
.
Fee
)
)
value
:=
int64
(
player
.
Bet
.
BetsNumber
*
game
.
OneBet
)
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
)
...
@@ -746,3 +933,18 @@ func (action *Action) CheckTime(start *pkt.GuessGameStart) bool {
...
@@ -746,3 +933,18 @@ func (action *Action) CheckTime(start *pkt.GuessGameStart) bool {
return
false
return
false
}
}
// GetMainHeightByTxHash get Block height
func
(
action
*
Action
)
GetMainHeightByTxHash
(
txHash
[]
byte
)
int64
{
for
i
:=
0
;
i
<
retryNum
;
i
++
{
req
:=
&
types
.
ReqHash
{
Hash
:
txHash
}
txDetail
,
err
:=
action
.
grpcClient
.
QueryTransaction
(
context
.
Background
(),
req
)
if
err
!=
nil
{
time
.
Sleep
(
time
.
Second
)
}
else
{
return
txDetail
.
GetHeight
()
}
}
return
-
1
}
plugin/dapp/guess/executor/query.go
View file @
a8e53ba4
...
@@ -22,19 +22,64 @@ func (g *Guess) Query_QueryGameById(in *pkt.QueryGuessGameInfo) (types.Message,
...
@@ -22,19 +22,64 @@ func (g *Guess) Query_QueryGameById(in *pkt.QueryGuessGameInfo) (types.Message,
}
}
func
(
g
*
Guess
)
Query_QueryGameByAddr
(
in
*
pkt
.
QueryGuessGameInfo
)
(
types
.
Message
,
error
)
{
func
(
g
*
Guess
)
Query_QueryGameByAddr
(
in
*
pkt
.
QueryGuessGameInfo
)
(
types
.
Message
,
error
)
{
gameI
ds
,
err
:=
getGameListByAddr
(
g
.
GetLocalDB
(),
in
.
Addr
,
in
.
Index
)
recor
ds
,
err
:=
getGameListByAddr
(
g
.
GetLocalDB
(),
in
.
Addr
,
in
.
Index
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
return
gameIds
,
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
)
{
gameIds
,
err
:=
getGameListByStatus
(
g
.
GetLocalDB
(),
in
.
Status
,
in
.
Index
)
records
,
err
:=
getGameListByStatus
(
g
.
GetLocalDB
(),
in
.
Status
,
in
.
Index
)
if
err
!=
nil
{
return
nil
,
err
}
return
records
,
nil
}
func
(
g
*
Guess
)
Query_QueryGameByAdminAddr
(
in
*
pkt
.
QueryGuessGameInfo
)
(
types
.
Message
,
error
)
{
records
,
err
:=
getGameListByAdminAddr
(
g
.
GetLocalDB
(),
in
.
AdminAddr
,
in
.
Index
)
if
err
!=
nil
{
return
nil
,
err
}
return
records
,
nil
}
func
(
g
*
Guess
)
Query_QueryGameByAddrStatusAddr
(
in
*
pkt
.
QueryGuessGameInfo
)
(
types
.
Message
,
error
)
{
records
,
err
:=
getGameListByAddrStatus
(
g
.
GetLocalDB
(),
in
.
Addr
,
in
.
Status
,
in
.
Index
)
if
err
!=
nil
{
return
nil
,
err
}
return
records
,
nil
}
func
(
g
*
Guess
)
Query_QueryGameByAdminStatusAddr
(
in
*
pkt
.
QueryGuessGameInfo
)
(
types
.
Message
,
error
)
{
records
,
err
:=
getGameListByAdminStatus
(
g
.
GetLocalDB
(),
in
.
AdminAddr
,
in
.
Status
,
in
.
Index
)
if
err
!=
nil
{
return
nil
,
err
}
return
records
,
nil
}
func
(
g
*
Guess
)
Query_QueryGameByCategoryStatusAddr
(
in
*
pkt
.
QueryGuessGameInfo
)
(
types
.
Message
,
error
)
{
records
,
err
:=
getGameListByCategoryStatus
(
g
.
GetLocalDB
(),
in
.
Category
,
in
.
Status
,
in
.
Index
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
return
gameI
ds
,
nil
return
recor
ds
,
nil
}
}
plugin/dapp/guess/proto/guess.proto
View file @
a8e53ba4
...
@@ -21,17 +21,19 @@ message GuessGame {
...
@@ -21,17 +21,19 @@ message GuessGame {
uint32
oneBet
=
13
;
//一注等于多少bty或者token
uint32
oneBet
=
13
;
//一注等于多少bty或者token
uint32
maxBets
=
14
;
//单次可以下多少注,默认100
uint32
maxBets
=
14
;
//单次可以下多少注,默认100
uint32
maxBetsNumber
=
15
;
//最多可以下多少注
uint32
maxBetsNumber
=
15
;
//最多可以下多少注
int64
fee
=
16
;
//收取费用,不带则表示不收费
int64
devFeeFactor
=
16
;
//开发者抽成比例
string
feeAddr
=
17
;
//收费地址
string
devFeeAddr
=
17
;
//开发者地址
string
expire
=
18
;
//游戏过期时间
int64
platFeeFactor
=
18
;
//平台抽成比例
int64
expireHeight
=
19
;
//游戏过期区块高度
string
platFeeAddr
=
19
;
//平台地址
string
adminAddr
=
20
;
//游戏创建者地址,只有该地址可以开奖
string
expire
=
20
;
//游戏过期时间
uint32
betsNumber
=
21
;
//已下注数,如果数量达到maxBetsNumber,则不允许再下注
int64
expireHeight
=
21
;
//游戏过期区块高度
repeated
GuessPlayer
plays
=
22
;
//参与游戏下注的玩家投注信息
string
adminAddr
=
22
;
//游戏创建者地址,只有该地址可以开奖
string
result
=
23
;
//公布的中奖结果
uint32
betsNumber
=
23
;
//已下注数,如果数量达到maxBetsNumber,则不允许再下注
GuessBetStat
betStat
=
24
;
repeated
GuessPlayer
plays
=
24
;
//参与游戏下注的玩家投注信息
int64
index
=
25
;
string
result
=
25
;
//公布的中奖结果
int64
preIndex
=
26
;
GuessBetStat
betStat
=
26
;
int64
index
=
27
;
int64
preIndex
=
28
;
}
}
message
GuessPlayer
{
message
GuessPlayer
{
...
@@ -43,7 +45,7 @@ message GuessBet {
...
@@ -43,7 +45,7 @@ message GuessBet {
string
option
=
1
;
string
option
=
1
;
uint32
betsNumber
=
2
;
uint32
betsNumber
=
2
;
bool
isWinner
=
3
;
bool
isWinner
=
3
;
uint32
profit
=
4
;
int64
profit
=
4
;
int64
index
=
5
;
int64
index
=
5
;
int64
preIndex
=
6
;
int64
preIndex
=
6
;
}
}
...
@@ -65,11 +67,12 @@ message GuessGameAction {
...
@@ -65,11 +67,12 @@ message GuessGameAction {
oneof
value
{
oneof
value
{
GuessGameStart
start
=
1
;
GuessGameStart
start
=
1
;
GuessGameBet
bet
=
2
;
GuessGameBet
bet
=
2
;
GuessGameAbort
abort
=
3
;
GuessGameStopBet
stopBet
=
3
;
GuessGamePublish
publish
=
4
;
GuessGameAbort
abort
=
4
;
GuessGameQuery
query
=
5
;
GuessGamePublish
publish
=
5
;
GuessGameQuery
query
=
6
;
}
}
uint32
ty
=
6
;
uint32
ty
=
7
;
}
}
//游戏启动
//游戏启动
...
@@ -78,16 +81,19 @@ message GuessGameStart{
...
@@ -78,16 +81,19 @@ message GuessGameStart{
string
options
=
2
;
string
options
=
2
;
string
category
=
3
;
string
category
=
3
;
string
maxTime
=
4
;
string
maxTime
=
4
;
int64
maxHeight
=
5
;
int64
maxHeight
=
5
;
string
symbol
=
6
;
string
symbol
=
6
;
string
exec
=
7
;
string
exec
=
7
;
uint32
oneBet
=
8
;
uint32
oneBet
=
8
;
uint32
maxBets
=
9
;
uint32
maxBets
=
9
;
uint32
maxBetsNumber
=
10
;
uint32
maxBetsNumber
=
10
;
int64
fee
=
11
;
int64
devFeeFactor
=
11
;
//开发者抽成比例
string
feeAddr
=
12
;
string
devFeeAddr
=
12
;
//开发者地址
string
expire
=
13
;
int64
platFeeFactor
=
13
;
//平台抽成比例
int64
expireHeight
=
14
;
string
platFeeAddr
=
14
;
//平台地址
string
expire
=
15
;
int64
expireHeight
=
16
;
int64
fee
=
17
;
}
}
//参与游戏下注
//参与游戏下注
...
@@ -98,6 +104,12 @@ message GuessGameBet{
...
@@ -98,6 +104,12 @@ message GuessGameBet{
int64
fee
=
4
;
int64
fee
=
4
;
}
}
//游戏停止下注
message
GuessGameStopBet
{
string
gameId
=
1
;
int64
fee
=
2
;
}
//游戏异常终止,退还下注
//游戏异常终止,退还下注
message
GuessGameAbort
{
message
GuessGameAbort
{
string
gameId
=
1
;
string
gameId
=
1
;
...
@@ -124,6 +136,8 @@ message QueryGuessGameInfo {
...
@@ -124,6 +136,8 @@ message QueryGuessGameInfo {
string
addr
=
2
;
string
addr
=
2
;
int32
status
=
3
;
int32
status
=
3
;
int64
index
=
4
;
int64
index
=
4
;
string
adminAddr
=
5
;
string
category
=
6
;
}
}
message
ReplyGuessGameInfo
{
message
ReplyGuessGameInfo
{
...
@@ -161,10 +175,13 @@ message GuessStartTxReq {
...
@@ -161,10 +175,13 @@ message GuessStartTxReq {
uint32
oneBet
=
8
;
uint32
oneBet
=
8
;
uint32
maxBets
=
9
;
uint32
maxBets
=
9
;
uint32
maxBetsNumber
=
10
;
uint32
maxBetsNumber
=
10
;
uint64
fee
=
11
;
int64
devFeeFactor
=
11
;
string
feeAddr
=
12
;
string
devFeeAddr
=
12
;
string
expire
=
13
;
int64
platFeeFactor
=
13
;
uint32
expireHeight
=
14
;
string
platFeeAddr
=
14
;
string
feeAddr
=
15
;
string
expire
=
16
;
uint32
expireHeight
=
17
;
}
}
message
GuessBetTxReq
{
message
GuessBetTxReq
{
...
...
plugin/dapp/guess/rpc/jrpc.go
View file @
a8e53ba4
...
@@ -25,11 +25,12 @@ func (c *Jrpc) GuessStartTx(parm *pb.GuessStartTxReq, result *interface{}) error
...
@@ -25,11 +25,12 @@ func (c *Jrpc) GuessStartTx(parm *pb.GuessStartTxReq, result *interface{}) error
OneBet
:
parm
.
OneBet
,
OneBet
:
parm
.
OneBet
,
MaxBets
:
parm
.
MaxBets
,
MaxBets
:
parm
.
MaxBets
,
MaxBetsNumber
:
parm
.
MaxBetsNumber
,
MaxBetsNumber
:
parm
.
MaxBetsNumber
,
Fee
:
parm
.
Fee
,
DevFeeFactor
:
parm
.
DevFeeFactor
,
FeeAddr
:
parm
.
FeeAddr
,
DevFeeAddr
:
parm
.
DevFeeAddr
,
PlatFeeFactor
:
parm
.
PlatFeeFactor
,
PlatFeeAddr
:
parm
.
PlatFeeAddr
,
}
}
reply
,
err
:=
c
.
cli
.
GuessStart
(
context
.
Background
(),
head
)
reply
,
err
:=
c
.
cli
.
GuessStart
(
context
.
Background
(),
head
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
...
plugin/dapp/guess/rpc/tx.go
View file @
a8e53ba4
...
@@ -4,23 +4,45 @@
...
@@ -4,23 +4,45 @@
package
rpc
package
rpc
type
PokerBullStartTx
struct
{
type
GuessGameStart
struct
{
Value
int64
`json:"value"`
Topic
string
`json:"topic,omitempty"`
PlayerNum
int32
`json:"playerNum"`
Options
string
`json:"options,omitempty"`
Fee
int64
`json:"fee"`
Category
string
`json:"category,omitempty"`
MaxTime
string
`json:"maxTime,omitempty"`
MaxHeight
int64
`json:"maxHeight,omitempty"`
Symbol
string
`json:"symbol,omitempty"`
Exec
string
`json:"exec,omitempty"`
OneBet
uint32
`json:"oneBet,omitempty"`
MaxBets
uint32
`json:"maxBets,omitempty"`
MaxBetsNumber
uint32
`json:"maxBetsNumber,omitempty"`
DevFeeFactor
int64
`json:"devFeeFactor,omitempty"`
DevFeeAddr
string
`json:"devFeeAddr,omitempty"`
PlatFeeFactor
int64
`json:"platFeeFactor,omitempty"`
PlatFeeAddr
string
`json:"platFeeAddr,omitempty"`
Expire
string
`json:"expire,omitempty"`
ExpireHeight
int64
`json:"expireHeight,omitempty"`
Fee
int64
`json:"fee,omitempty"`
}
}
type
PBContinueTxReq
struct
{
type
GuessGameBet
struct
{
GameId
string
`json:"gameId"`
GameId
string
`json:"gameId,omitempty"`
Fee
int64
`json:"fee"`
Option
string
`json:"option,omitempty"`
BetsNum
uint32
`json:"betsNum,omitempty"`
Fee
int64
`json:"fee,omitempty"`
}
}
type
PBQuitTxReq
struct
{
type
GuessGameStopBet
struct
{
GameId
string
`json:"gameId
"`
GameId
string
`json:"gameId,omitempty
"`
Fee
int64
`json:"fee
"`
Fee
int64
`json:"fee,omitempty
"`
}
}
type
PBQueryReq
struct
{
type
GuessGamePublish
struct
{
GameId
string
`json:"GameId"`
GameId
string
`json:"gameId,omitempty"`
Fee
int64
`json:"fee"`
Result
string
`json:"result,omitempty"`
Fee
int64
`json:"fee,omitempty"`
}
type
GuessGameAbort
struct
{
GameId
string
`json:"gameId,omitempty"`
Fee
int64
`json:"fee,omitempty"`
}
}
plugin/dapp/guess/types/const.go
View file @
a8e53ba4
...
@@ -13,6 +13,7 @@ const (
...
@@ -13,6 +13,7 @@ const (
GuessGameActionStart
=
iota
+
1
GuessGameActionStart
=
iota
+
1
GuessGameActionBet
GuessGameActionBet
GuessGameActionStopBet
GuessGameActionAbort
GuessGameActionAbort
GuessGameActionPublish
GuessGameActionPublish
GuessGameActionQuery
GuessGameActionQuery
...
@@ -52,3 +53,8 @@ const (
...
@@ -52,3 +53,8 @@ const (
//FuncName_QueryGameByAdminAddr = "QueryGameByAdminAddr"
//FuncName_QueryGameByAdminAddr = "QueryGameByAdminAddr"
//FuncName_QueryGameByCategory = "QueryGameByCategory"
//FuncName_QueryGameByCategory = "QueryGameByCategory"
)
)
const
(
DevShareAddr
=
"1D6RFZNp2rh6QdbcZ1d7RWuBUz61We6SD7"
PlatformShareAddr
=
"1PHtChNt3UcfssR7v7trKSk3WJtAWjKjjX"
)
\ No newline at end of file
plugin/dapp/guess/types/guess.pb.go
View file @
a8e53ba4
...
@@ -40,17 +40,19 @@ type GuessGame struct {
...
@@ -40,17 +40,19 @@ type GuessGame struct {
OneBet
uint32
`protobuf:"varint,13,opt,name=oneBet,proto3" json:"oneBet,omitempty"`
OneBet
uint32
`protobuf:"varint,13,opt,name=oneBet,proto3" json:"oneBet,omitempty"`
MaxBets
uint32
`protobuf:"varint,14,opt,name=maxBets,proto3" json:"maxBets,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"`
Fee
int64
`protobuf:"varint,16,opt,name=fee,proto3" json:"fee,omitempty"`
DevFeeFactor
int64
`protobuf:"varint,16,opt,name=devFeeFactor,proto3" json:"devFeeFactor,omitempty"`
FeeAddr
string
`protobuf:"bytes,17,opt,name=feeAddr,proto3" json:"feeAddr,omitempty"`
DevFeeAddr
string
`protobuf:"bytes,17,opt,name=devFeeAddr,proto3" json:"devFeeAddr,omitempty"`
Expire
string
`protobuf:"bytes,18,opt,name=expire,proto3" json:"expire,omitempty"`
PlatFeeFactor
int64
`protobuf:"varint,18,opt,name=platFeeFactor,proto3" json:"platFeeFactor,omitempty"`
ExpireHeight
int64
`protobuf:"varint,19,opt,name=expireHeight,proto3" json:"expireHeight,omitempty"`
PlatFeeAddr
string
`protobuf:"bytes,19,opt,name=platFeeAddr,proto3" json:"platFeeAddr,omitempty"`
AdminAddr
string
`protobuf:"bytes,20,opt,name=adminAddr,proto3" json:"adminAddr,omitempty"`
Expire
string
`protobuf:"bytes,20,opt,name=expire,proto3" json:"expire,omitempty"`
BetsNumber
uint32
`protobuf:"varint,21,opt,name=betsNumber,proto3" json:"betsNumber,omitempty"`
ExpireHeight
int64
`protobuf:"varint,21,opt,name=expireHeight,proto3" json:"expireHeight,omitempty"`
Plays
[]
*
GuessPlayer
`protobuf:"bytes,22,rep,name=plays,proto3" json:"plays,omitempty"`
AdminAddr
string
`protobuf:"bytes,22,opt,name=adminAddr,proto3" json:"adminAddr,omitempty"`
Result
string
`protobuf:"bytes,23,opt,name=result,proto3" json:"result,omitempty"`
BetsNumber
uint32
`protobuf:"varint,23,opt,name=betsNumber,proto3" json:"betsNumber,omitempty"`
BetStat
*
GuessBetStat
`protobuf:"bytes,24,opt,name=betStat,proto3" json:"betStat,omitempty"`
Plays
[]
*
GuessPlayer
`protobuf:"bytes,24,rep,name=plays,proto3" json:"plays,omitempty"`
Index
int64
`protobuf:"varint,25,opt,name=index,proto3" json:"index,omitempty"`
Result
string
`protobuf:"bytes,25,opt,name=result,proto3" json:"result,omitempty"`
PreIndex
int64
`protobuf:"varint,26,opt,name=preIndex,proto3" json:"preIndex,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"`
PreIndex
int64
`protobuf:"varint,28,opt,name=preIndex,proto3" json:"preIndex,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:"-"`
...
@@ -186,16 +188,30 @@ func (m *GuessGame) GetMaxBetsNumber() uint32 {
...
@@ -186,16 +188,30 @@ func (m *GuessGame) GetMaxBetsNumber() uint32 {
return
0
return
0
}
}
func
(
m
*
GuessGame
)
Get
Fee
()
int64
{
func
(
m
*
GuessGame
)
Get
DevFeeFactor
()
int64
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
Fee
return
m
.
DevFeeFactor
}
}
return
0
return
0
}
}
func
(
m
*
GuessGame
)
GetFeeAddr
()
string
{
func
(
m
*
GuessGame
)
Get
Dev
FeeAddr
()
string
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
FeeAddr
return
m
.
DevFeeAddr
}
return
""
}
func
(
m
*
GuessGame
)
GetPlatFeeFactor
()
int64
{
if
m
!=
nil
{
return
m
.
PlatFeeFactor
}
return
0
}
func
(
m
*
GuessGame
)
GetPlatFeeAddr
()
string
{
if
m
!=
nil
{
return
m
.
PlatFeeAddr
}
}
return
""
return
""
}
}
...
@@ -314,7 +330,7 @@ type GuessBet struct {
...
@@ -314,7 +330,7 @@ type GuessBet struct {
Option
string
`protobuf:"bytes,1,opt,name=option,proto3" json:"option,omitempty"`
Option
string
`protobuf:"bytes,1,opt,name=option,proto3" json:"option,omitempty"`
BetsNumber
uint32
`protobuf:"varint,2,opt,name=betsNumber,proto3" json:"betsNumber,omitempty"`
BetsNumber
uint32
`protobuf:"varint,2,opt,name=betsNumber,proto3" json:"betsNumber,omitempty"`
IsWinner
bool
`protobuf:"varint,3,opt,name=isWinner,proto3" json:"isWinner,omitempty"`
IsWinner
bool
`protobuf:"varint,3,opt,name=isWinner,proto3" json:"isWinner,omitempty"`
Profit
uint32
`protobuf:"varint,4,opt,name=profit,proto3" json:"profit,omitempty"`
Profit
int64
`protobuf:"varint,4,opt,name=profit,proto3" json:"profit,omitempty"`
Index
int64
`protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"`
Index
int64
`protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"`
PreIndex
int64
`protobuf:"varint,6,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
PreIndex
int64
`protobuf:"varint,6,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
...
@@ -368,7 +384,7 @@ func (m *GuessBet) GetIsWinner() bool {
...
@@ -368,7 +384,7 @@ func (m *GuessBet) GetIsWinner() bool {
return
false
return
false
}
}
func
(
m
*
GuessBet
)
GetProfit
()
uint32
{
func
(
m
*
GuessBet
)
GetProfit
()
int64
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
Profit
return
m
.
Profit
}
}
...
@@ -504,11 +520,12 @@ type GuessGameAction struct {
...
@@ -504,11 +520,12 @@ type GuessGameAction struct {
// Types that are valid to be assigned to Value:
// Types that are valid to be assigned to Value:
// *GuessGameAction_Start
// *GuessGameAction_Start
// *GuessGameAction_Bet
// *GuessGameAction_Bet
// *GuessGameAction_StopBet
// *GuessGameAction_Abort
// *GuessGameAction_Abort
// *GuessGameAction_Publish
// *GuessGameAction_Publish
// *GuessGameAction_Query
// *GuessGameAction_Query
Value
isGuessGameAction_Value
`protobuf_oneof:"value"`
Value
isGuessGameAction_Value
`protobuf_oneof:"value"`
Ty
uint32
`protobuf:"varint,
6
,opt,name=ty,proto3" json:"ty,omitempty"`
Ty
uint32
`protobuf:"varint,
7
,opt,name=ty,proto3" json:"ty,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:"-"`
...
@@ -551,22 +568,28 @@ type GuessGameAction_Bet struct {
...
@@ -551,22 +568,28 @@ type GuessGameAction_Bet struct {
Bet
*
GuessGameBet
`protobuf:"bytes,2,opt,name=bet,proto3,oneof"`
Bet
*
GuessGameBet
`protobuf:"bytes,2,opt,name=bet,proto3,oneof"`
}
}
type
GuessGameAction_StopBet
struct
{
StopBet
*
GuessGameStopBet
`protobuf:"bytes,3,opt,name=stopBet,proto3,oneof"`
}
type
GuessGameAction_Abort
struct
{
type
GuessGameAction_Abort
struct
{
Abort
*
GuessGameAbort
`protobuf:"bytes,
3
,opt,name=abort,proto3,oneof"`
Abort
*
GuessGameAbort
`protobuf:"bytes,
4
,opt,name=abort,proto3,oneof"`
}
}
type
GuessGameAction_Publish
struct
{
type
GuessGameAction_Publish
struct
{
Publish
*
GuessGamePublish
`protobuf:"bytes,
4
,opt,name=publish,proto3,oneof"`
Publish
*
GuessGamePublish
`protobuf:"bytes,
5
,opt,name=publish,proto3,oneof"`
}
}
type
GuessGameAction_Query
struct
{
type
GuessGameAction_Query
struct
{
Query
*
GuessGameQuery
`protobuf:"bytes,
5
,opt,name=query,proto3,oneof"`
Query
*
GuessGameQuery
`protobuf:"bytes,
6
,opt,name=query,proto3,oneof"`
}
}
func
(
*
GuessGameAction_Start
)
isGuessGameAction_Value
()
{}
func
(
*
GuessGameAction_Start
)
isGuessGameAction_Value
()
{}
func
(
*
GuessGameAction_Bet
)
isGuessGameAction_Value
()
{}
func
(
*
GuessGameAction_Bet
)
isGuessGameAction_Value
()
{}
func
(
*
GuessGameAction_StopBet
)
isGuessGameAction_Value
()
{}
func
(
*
GuessGameAction_Abort
)
isGuessGameAction_Value
()
{}
func
(
*
GuessGameAction_Abort
)
isGuessGameAction_Value
()
{}
func
(
*
GuessGameAction_Publish
)
isGuessGameAction_Value
()
{}
func
(
*
GuessGameAction_Publish
)
isGuessGameAction_Value
()
{}
...
@@ -594,6 +617,13 @@ func (m *GuessGameAction) GetBet() *GuessGameBet {
...
@@ -594,6 +617,13 @@ func (m *GuessGameAction) GetBet() *GuessGameBet {
return
nil
return
nil
}
}
func
(
m
*
GuessGameAction
)
GetStopBet
()
*
GuessGameStopBet
{
if
x
,
ok
:=
m
.
GetValue
()
.
(
*
GuessGameAction_StopBet
);
ok
{
return
x
.
StopBet
}
return
nil
}
func
(
m
*
GuessGameAction
)
GetAbort
()
*
GuessGameAbort
{
func
(
m
*
GuessGameAction
)
GetAbort
()
*
GuessGameAbort
{
if
x
,
ok
:=
m
.
GetValue
()
.
(
*
GuessGameAction_Abort
);
ok
{
if
x
,
ok
:=
m
.
GetValue
()
.
(
*
GuessGameAction_Abort
);
ok
{
return
x
.
Abort
return
x
.
Abort
...
@@ -627,6 +657,7 @@ func (*GuessGameAction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffe
...
@@ -627,6 +657,7 @@ func (*GuessGameAction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffe
return
_GuessGameAction_OneofMarshaler
,
_GuessGameAction_OneofUnmarshaler
,
_GuessGameAction_OneofSizer
,
[]
interface
{}{
return
_GuessGameAction_OneofMarshaler
,
_GuessGameAction_OneofUnmarshaler
,
_GuessGameAction_OneofSizer
,
[]
interface
{}{
(
*
GuessGameAction_Start
)(
nil
),
(
*
GuessGameAction_Start
)(
nil
),
(
*
GuessGameAction_Bet
)(
nil
),
(
*
GuessGameAction_Bet
)(
nil
),
(
*
GuessGameAction_StopBet
)(
nil
),
(
*
GuessGameAction_Abort
)(
nil
),
(
*
GuessGameAction_Abort
)(
nil
),
(
*
GuessGameAction_Publish
)(
nil
),
(
*
GuessGameAction_Publish
)(
nil
),
(
*
GuessGameAction_Query
)(
nil
),
(
*
GuessGameAction_Query
)(
nil
),
...
@@ -647,18 +678,23 @@ func _GuessGameAction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
...
@@ -647,18 +678,23 @@ func _GuessGameAction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
if
err
:=
b
.
EncodeMessage
(
x
.
Bet
);
err
!=
nil
{
if
err
:=
b
.
EncodeMessage
(
x
.
Bet
);
err
!=
nil
{
return
err
return
err
}
}
case
*
GuessGameAction_
Abor
t
:
case
*
GuessGameAction_
StopBe
t
:
b
.
EncodeVarint
(
3
<<
3
|
proto
.
WireBytes
)
b
.
EncodeVarint
(
3
<<
3
|
proto
.
WireBytes
)
if
err
:=
b
.
EncodeMessage
(
x
.
StopBet
);
err
!=
nil
{
return
err
}
case
*
GuessGameAction_Abort
:
b
.
EncodeVarint
(
4
<<
3
|
proto
.
WireBytes
)
if
err
:=
b
.
EncodeMessage
(
x
.
Abort
);
err
!=
nil
{
if
err
:=
b
.
EncodeMessage
(
x
.
Abort
);
err
!=
nil
{
return
err
return
err
}
}
case
*
GuessGameAction_Publish
:
case
*
GuessGameAction_Publish
:
b
.
EncodeVarint
(
4
<<
3
|
proto
.
WireBytes
)
b
.
EncodeVarint
(
5
<<
3
|
proto
.
WireBytes
)
if
err
:=
b
.
EncodeMessage
(
x
.
Publish
);
err
!=
nil
{
if
err
:=
b
.
EncodeMessage
(
x
.
Publish
);
err
!=
nil
{
return
err
return
err
}
}
case
*
GuessGameAction_Query
:
case
*
GuessGameAction_Query
:
b
.
EncodeVarint
(
5
<<
3
|
proto
.
WireBytes
)
b
.
EncodeVarint
(
6
<<
3
|
proto
.
WireBytes
)
if
err
:=
b
.
EncodeMessage
(
x
.
Query
);
err
!=
nil
{
if
err
:=
b
.
EncodeMessage
(
x
.
Query
);
err
!=
nil
{
return
err
return
err
}
}
...
@@ -688,7 +724,15 @@ func _GuessGameAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *prot
...
@@ -688,7 +724,15 @@ func _GuessGameAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *prot
err
:=
b
.
DecodeMessage
(
msg
)
err
:=
b
.
DecodeMessage
(
msg
)
m
.
Value
=
&
GuessGameAction_Bet
{
msg
}
m
.
Value
=
&
GuessGameAction_Bet
{
msg
}
return
true
,
err
return
true
,
err
case
3
:
// value.abort
case
3
:
// value.stopBet
if
wire
!=
proto
.
WireBytes
{
return
true
,
proto
.
ErrInternalBadWireType
}
msg
:=
new
(
GuessGameStopBet
)
err
:=
b
.
DecodeMessage
(
msg
)
m
.
Value
=
&
GuessGameAction_StopBet
{
msg
}
return
true
,
err
case
4
:
// value.abort
if
wire
!=
proto
.
WireBytes
{
if
wire
!=
proto
.
WireBytes
{
return
true
,
proto
.
ErrInternalBadWireType
return
true
,
proto
.
ErrInternalBadWireType
}
}
...
@@ -696,7 +740,7 @@ func _GuessGameAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *prot
...
@@ -696,7 +740,7 @@ func _GuessGameAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *prot
err
:=
b
.
DecodeMessage
(
msg
)
err
:=
b
.
DecodeMessage
(
msg
)
m
.
Value
=
&
GuessGameAction_Abort
{
msg
}
m
.
Value
=
&
GuessGameAction_Abort
{
msg
}
return
true
,
err
return
true
,
err
case
4
:
// value.publish
case
5
:
// value.publish
if
wire
!=
proto
.
WireBytes
{
if
wire
!=
proto
.
WireBytes
{
return
true
,
proto
.
ErrInternalBadWireType
return
true
,
proto
.
ErrInternalBadWireType
}
}
...
@@ -704,7 +748,7 @@ func _GuessGameAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *prot
...
@@ -704,7 +748,7 @@ func _GuessGameAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *prot
err
:=
b
.
DecodeMessage
(
msg
)
err
:=
b
.
DecodeMessage
(
msg
)
m
.
Value
=
&
GuessGameAction_Publish
{
msg
}
m
.
Value
=
&
GuessGameAction_Publish
{
msg
}
return
true
,
err
return
true
,
err
case
5
:
// value.query
case
6
:
// value.query
if
wire
!=
proto
.
WireBytes
{
if
wire
!=
proto
.
WireBytes
{
return
true
,
proto
.
ErrInternalBadWireType
return
true
,
proto
.
ErrInternalBadWireType
}
}
...
@@ -731,6 +775,11 @@ func _GuessGameAction_OneofSizer(msg proto.Message) (n int) {
...
@@ -731,6 +775,11 @@ func _GuessGameAction_OneofSizer(msg proto.Message) (n int) {
n
+=
1
// tag and wire
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
n
+=
s
case
*
GuessGameAction_StopBet
:
s
:=
proto
.
Size
(
x
.
StopBet
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
GuessGameAction_Abort
:
case
*
GuessGameAction_Abort
:
s
:=
proto
.
Size
(
x
.
Abort
)
s
:=
proto
.
Size
(
x
.
Abort
)
n
+=
1
// tag and wire
n
+=
1
// tag and wire
...
@@ -765,10 +814,13 @@ type GuessGameStart struct {
...
@@ -765,10 +814,13 @@ type GuessGameStart struct {
OneBet
uint32
`protobuf:"varint,8,opt,name=oneBet,proto3" json:"oneBet,omitempty"`
OneBet
uint32
`protobuf:"varint,8,opt,name=oneBet,proto3" json:"oneBet,omitempty"`
MaxBets
uint32
`protobuf:"varint,9,opt,name=maxBets,proto3" json:"maxBets,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"`
Fee
int64
`protobuf:"varint,11,opt,name=fee,proto3" json:"fee,omitempty"`
DevFeeFactor
int64
`protobuf:"varint,11,opt,name=devFeeFactor,proto3" json:"devFeeFactor,omitempty"`
FeeAddr
string
`protobuf:"bytes,12,opt,name=feeAddr,proto3" json:"feeAddr,omitempty"`
DevFeeAddr
string
`protobuf:"bytes,12,opt,name=devFeeAddr,proto3" json:"devFeeAddr,omitempty"`
Expire
string
`protobuf:"bytes,13,opt,name=expire,proto3" json:"expire,omitempty"`
PlatFeeFactor
int64
`protobuf:"varint,13,opt,name=platFeeFactor,proto3" json:"platFeeFactor,omitempty"`
ExpireHeight
int64
`protobuf:"varint,14,opt,name=expireHeight,proto3" json:"expireHeight,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"`
ExpireHeight
int64
`protobuf:"varint,16,opt,name=expireHeight,proto3" json:"expireHeight,omitempty"`
Fee
int64
`protobuf:"varint,17,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:"-"`
...
@@ -869,16 +921,30 @@ func (m *GuessGameStart) GetMaxBetsNumber() uint32 {
...
@@ -869,16 +921,30 @@ func (m *GuessGameStart) GetMaxBetsNumber() uint32 {
return
0
return
0
}
}
func
(
m
*
GuessGameStart
)
Get
Fee
()
int64
{
func
(
m
*
GuessGameStart
)
Get
DevFeeFactor
()
int64
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
Fee
return
m
.
DevFeeFactor
}
}
return
0
return
0
}
}
func
(
m
*
GuessGameStart
)
GetFeeAddr
()
string
{
func
(
m
*
GuessGameStart
)
Get
Dev
FeeAddr
()
string
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
FeeAddr
return
m
.
DevFeeAddr
}
return
""
}
func
(
m
*
GuessGameStart
)
GetPlatFeeFactor
()
int64
{
if
m
!=
nil
{
return
m
.
PlatFeeFactor
}
return
0
}
func
(
m
*
GuessGameStart
)
GetPlatFeeAddr
()
string
{
if
m
!=
nil
{
return
m
.
PlatFeeAddr
}
}
return
""
return
""
}
}
...
@@ -897,6 +963,13 @@ func (m *GuessGameStart) GetExpireHeight() int64 {
...
@@ -897,6 +963,13 @@ func (m *GuessGameStart) GetExpireHeight() int64 {
return
0
return
0
}
}
func
(
m
*
GuessGameStart
)
GetFee
()
int64
{
if
m
!=
nil
{
return
m
.
Fee
}
return
0
}
//参与游戏下注
//参与游戏下注
type
GuessGameBet
struct
{
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"`
...
@@ -961,6 +1034,54 @@ func (m *GuessGameBet) GetFee() int64 {
...
@@ -961,6 +1034,54 @@ func (m *GuessGameBet) GetFee() int64 {
return
0
return
0
}
}
//游戏停止下注
type
GuessGameStopBet
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"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
GuessGameStopBet
)
Reset
()
{
*
m
=
GuessGameStopBet
{}
}
func
(
m
*
GuessGameStopBet
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameStopBet
)
ProtoMessage
()
{}
func
(
*
GuessGameStopBet
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
8
}
}
func
(
m
*
GuessGameStopBet
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_GuessGameStopBet
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
GuessGameStopBet
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_GuessGameStopBet
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
GuessGameStopBet
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_GuessGameStopBet
.
Merge
(
m
,
src
)
}
func
(
m
*
GuessGameStopBet
)
XXX_Size
()
int
{
return
xxx_messageInfo_GuessGameStopBet
.
Size
(
m
)
}
func
(
m
*
GuessGameStopBet
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_GuessGameStopBet
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_GuessGameStopBet
proto
.
InternalMessageInfo
func
(
m
*
GuessGameStopBet
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
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"`
...
@@ -974,7 +1095,7 @@ func (m *GuessGameAbort) Reset() { *m = GuessGameAbort{} }
...
@@ -974,7 +1095,7 @@ func (m *GuessGameAbort) Reset() { *m = GuessGameAbort{} }
func
(
m
*
GuessGameAbort
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
GuessGameAbort
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameAbort
)
ProtoMessage
()
{}
func
(
*
GuessGameAbort
)
ProtoMessage
()
{}
func
(
*
GuessGameAbort
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
GuessGameAbort
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
8
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
9
}
}
}
func
(
m
*
GuessGameAbort
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
GuessGameAbort
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -1023,7 +1144,7 @@ func (m *GuessGamePublish) Reset() { *m = GuessGamePublish{} }
...
@@ -1023,7 +1144,7 @@ func (m *GuessGamePublish) Reset() { *m = GuessGamePublish{} }
func
(
m
*
GuessGamePublish
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
GuessGamePublish
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGamePublish
)
ProtoMessage
()
{}
func
(
*
GuessGamePublish
)
ProtoMessage
()
{}
func
(
*
GuessGamePublish
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
GuessGamePublish
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
9
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
10
}
}
}
func
(
m
*
GuessGamePublish
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
GuessGamePublish
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -1079,7 +1200,7 @@ func (m *GuessGameQuery) Reset() { *m = GuessGameQuery{} }
...
@@ -1079,7 +1200,7 @@ func (m *GuessGameQuery) Reset() { *m = GuessGameQuery{} }
func
(
m
*
GuessGameQuery
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
GuessGameQuery
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameQuery
)
ProtoMessage
()
{}
func
(
*
GuessGameQuery
)
ProtoMessage
()
{}
func
(
*
GuessGameQuery
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
GuessGameQuery
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
0
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
1
}
}
}
func
(
m
*
GuessGameQuery
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
GuessGameQuery
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -1126,6 +1247,8 @@ type QueryGuessGameInfo struct {
...
@@ -1126,6 +1247,8 @@ type QueryGuessGameInfo struct {
Addr
string
`protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
Addr
string
`protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
Status
int32
`protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
Status
int32
`protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
Index
int64
`protobuf:"varint,4,opt,name=index,proto3" json:"index,omitempty"`
Index
int64
`protobuf:"varint,4,opt,name=index,proto3" json:"index,omitempty"`
AdminAddr
string
`protobuf:"bytes,5,opt,name=adminAddr,proto3" json:"adminAddr,omitempty"`
Category
string
`protobuf:"bytes,6,opt,name=category,proto3" json:"category,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:"-"`
...
@@ -1135,7 +1258,7 @@ func (m *QueryGuessGameInfo) Reset() { *m = QueryGuessGameInfo{} }
...
@@ -1135,7 +1258,7 @@ func (m *QueryGuessGameInfo) Reset() { *m = QueryGuessGameInfo{} }
func
(
m
*
QueryGuessGameInfo
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
QueryGuessGameInfo
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryGuessGameInfo
)
ProtoMessage
()
{}
func
(
*
QueryGuessGameInfo
)
ProtoMessage
()
{}
func
(
*
QueryGuessGameInfo
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
QueryGuessGameInfo
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
1
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
2
}
}
}
func
(
m
*
QueryGuessGameInfo
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
QueryGuessGameInfo
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -1184,6 +1307,20 @@ func (m *QueryGuessGameInfo) GetIndex() int64 {
...
@@ -1184,6 +1307,20 @@ func (m *QueryGuessGameInfo) GetIndex() int64 {
return
0
return
0
}
}
func
(
m
*
QueryGuessGameInfo
)
GetAdminAddr
()
string
{
if
m
!=
nil
{
return
m
.
AdminAddr
}
return
""
}
func
(
m
*
QueryGuessGameInfo
)
GetCategory
()
string
{
if
m
!=
nil
{
return
m
.
Category
}
return
""
}
type
ReplyGuessGameInfo
struct
{
type
ReplyGuessGameInfo
struct
{
Game
*
GuessGame
`protobuf:"bytes,1,opt,name=game,proto3" json:"game,omitempty"`
Game
*
GuessGame
`protobuf:"bytes,1,opt,name=game,proto3" json:"game,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
...
@@ -1195,7 +1332,7 @@ func (m *ReplyGuessGameInfo) Reset() { *m = ReplyGuessGameInfo{} }
...
@@ -1195,7 +1332,7 @@ func (m *ReplyGuessGameInfo) Reset() { *m = ReplyGuessGameInfo{} }
func
(
m
*
ReplyGuessGameInfo
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
ReplyGuessGameInfo
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyGuessGameInfo
)
ProtoMessage
()
{}
func
(
*
ReplyGuessGameInfo
)
ProtoMessage
()
{}
func
(
*
ReplyGuessGameInfo
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
ReplyGuessGameInfo
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
2
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
3
}
}
}
func
(
m
*
ReplyGuessGameInfo
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
ReplyGuessGameInfo
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -1234,7 +1371,7 @@ func (m *QueryGuessGameInfos) Reset() { *m = QueryGuessGameInfos{} }
...
@@ -1234,7 +1371,7 @@ func (m *QueryGuessGameInfos) Reset() { *m = QueryGuessGameInfos{} }
func
(
m
*
QueryGuessGameInfos
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
QueryGuessGameInfos
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryGuessGameInfos
)
ProtoMessage
()
{}
func
(
*
QueryGuessGameInfos
)
ProtoMessage
()
{}
func
(
*
QueryGuessGameInfos
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
QueryGuessGameInfos
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
3
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
4
}
}
}
func
(
m
*
QueryGuessGameInfos
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
QueryGuessGameInfos
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -1273,7 +1410,7 @@ func (m *ReplyGuessGameInfos) Reset() { *m = ReplyGuessGameInfos{} }
...
@@ -1273,7 +1410,7 @@ func (m *ReplyGuessGameInfos) Reset() { *m = ReplyGuessGameInfos{} }
func
(
m
*
ReplyGuessGameInfos
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
ReplyGuessGameInfos
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyGuessGameInfos
)
ProtoMessage
()
{}
func
(
*
ReplyGuessGameInfos
)
ProtoMessage
()
{}
func
(
*
ReplyGuessGameInfos
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
ReplyGuessGameInfos
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
4
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
5
}
}
}
func
(
m
*
ReplyGuessGameInfos
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
ReplyGuessGameInfos
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -1301,117 +1438,6 @@ func (m *ReplyGuessGameInfos) GetGames() []*GuessGame {
...
@@ -1301,117 +1438,6 @@ func (m *ReplyGuessGameInfos) GetGames() []*GuessGame {
return
nil
return
nil
}
}
type
ReceiptPBGame
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"`
Addr
string
`protobuf:"bytes,3,opt,name=addr,proto3" json:"addr,omitempty"`
Index
int64
`protobuf:"varint,4,opt,name=index,proto3" json:"index,omitempty"`
PrevIndex
int64
`protobuf:"varint,5,opt,name=prevIndex,proto3" json:"prevIndex,omitempty"`
PlayerNum
int32
`protobuf:"varint,6,opt,name=playerNum,proto3" json:"playerNum,omitempty"`
Value
int64
`protobuf:"varint,7,opt,name=value,proto3" json:"value,omitempty"`
IsWaiting
bool
`protobuf:"varint,8,opt,name=isWaiting,proto3" json:"isWaiting,omitempty"`
Players
[]
string
`protobuf:"bytes,9,rep,name=players,proto3" json:"players,omitempty"`
PreStatus
int32
`protobuf:"varint,10,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
ReceiptPBGame
)
Reset
()
{
*
m
=
ReceiptPBGame
{}
}
func
(
m
*
ReceiptPBGame
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReceiptPBGame
)
ProtoMessage
()
{}
func
(
*
ReceiptPBGame
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
15
}
}
func
(
m
*
ReceiptPBGame
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ReceiptPBGame
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ReceiptPBGame
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ReceiptPBGame
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
ReceiptPBGame
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ReceiptPBGame
.
Merge
(
m
,
src
)
}
func
(
m
*
ReceiptPBGame
)
XXX_Size
()
int
{
return
xxx_messageInfo_ReceiptPBGame
.
Size
(
m
)
}
func
(
m
*
ReceiptPBGame
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ReceiptPBGame
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_ReceiptPBGame
proto
.
InternalMessageInfo
func
(
m
*
ReceiptPBGame
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
ReceiptPBGame
)
GetStatus
()
int32
{
if
m
!=
nil
{
return
m
.
Status
}
return
0
}
func
(
m
*
ReceiptPBGame
)
GetAddr
()
string
{
if
m
!=
nil
{
return
m
.
Addr
}
return
""
}
func
(
m
*
ReceiptPBGame
)
GetIndex
()
int64
{
if
m
!=
nil
{
return
m
.
Index
}
return
0
}
func
(
m
*
ReceiptPBGame
)
GetPrevIndex
()
int64
{
if
m
!=
nil
{
return
m
.
PrevIndex
}
return
0
}
func
(
m
*
ReceiptPBGame
)
GetPlayerNum
()
int32
{
if
m
!=
nil
{
return
m
.
PlayerNum
}
return
0
}
func
(
m
*
ReceiptPBGame
)
GetValue
()
int64
{
if
m
!=
nil
{
return
m
.
Value
}
return
0
}
func
(
m
*
ReceiptPBGame
)
GetIsWaiting
()
bool
{
if
m
!=
nil
{
return
m
.
IsWaiting
}
return
false
}
func
(
m
*
ReceiptPBGame
)
GetPlayers
()
[]
string
{
if
m
!=
nil
{
return
m
.
Players
}
return
nil
}
func
(
m
*
ReceiptPBGame
)
GetPreStatus
()
int32
{
if
m
!=
nil
{
return
m
.
PreStatus
}
return
0
}
type
ReceiptGuessGame
struct
{
type
ReceiptGuessGame
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"`
PreStatus
int32
`protobuf:"varint,2,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
PreStatus
int32
`protobuf:"varint,2,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
...
@@ -1526,10 +1552,13 @@ type GuessStartTxReq struct {
...
@@ -1526,10 +1552,13 @@ type GuessStartTxReq struct {
OneBet
uint32
`protobuf:"varint,8,opt,name=oneBet,proto3" json:"oneBet,omitempty"`
OneBet
uint32
`protobuf:"varint,8,opt,name=oneBet,proto3" json:"oneBet,omitempty"`
MaxBets
uint32
`protobuf:"varint,9,opt,name=maxBets,proto3" json:"maxBets,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"`
Fee
uint64
`protobuf:"varint,11,opt,name=fee,proto3" json:"fee,omitempty"`
DevFeeFactor
int64
`protobuf:"varint,11,opt,name=devFeeFactor,proto3" json:"devFeeFactor,omitempty"`
FeeAddr
string
`protobuf:"bytes,12,opt,name=feeAddr,proto3" json:"feeAddr,omitempty"`
DevFeeAddr
string
`protobuf:"bytes,12,opt,name=devFeeAddr,proto3" json:"devFeeAddr,omitempty"`
Expire
string
`protobuf:"bytes,13,opt,name=expire,proto3" json:"expire,omitempty"`
PlatFeeFactor
int64
`protobuf:"varint,13,opt,name=platFeeFactor,proto3" json:"platFeeFactor,omitempty"`
ExpireHeight
uint32
`protobuf:"varint,14,opt,name=expireHeight,proto3" json:"expireHeight,omitempty"`
PlatFeeAddr
string
`protobuf:"bytes,14,opt,name=platFeeAddr,proto3" json:"platFeeAddr,omitempty"`
FeeAddr
string
`protobuf:"bytes,15,opt,name=feeAddr,proto3" json:"feeAddr,omitempty"`
Expire
string
`protobuf:"bytes,16,opt,name=expire,proto3" json:"expire,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:"-"`
...
@@ -1630,13 +1659,34 @@ func (m *GuessStartTxReq) GetMaxBetsNumber() uint32 {
...
@@ -1630,13 +1659,34 @@ func (m *GuessStartTxReq) GetMaxBetsNumber() uint32 {
return
0
return
0
}
}
func
(
m
*
GuessStartTxReq
)
Get
Fee
()
u
int64
{
func
(
m
*
GuessStartTxReq
)
Get
DevFeeFactor
()
int64
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
Fee
return
m
.
DevFeeFactor
}
}
return
0
return
0
}
}
func
(
m
*
GuessStartTxReq
)
GetDevFeeAddr
()
string
{
if
m
!=
nil
{
return
m
.
DevFeeAddr
}
return
""
}
func
(
m
*
GuessStartTxReq
)
GetPlatFeeFactor
()
int64
{
if
m
!=
nil
{
return
m
.
PlatFeeFactor
}
return
0
}
func
(
m
*
GuessStartTxReq
)
GetPlatFeeAddr
()
string
{
if
m
!=
nil
{
return
m
.
PlatFeeAddr
}
return
""
}
func
(
m
*
GuessStartTxReq
)
GetFeeAddr
()
string
{
func
(
m
*
GuessStartTxReq
)
GetFeeAddr
()
string
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
FeeAddr
return
m
.
FeeAddr
...
@@ -1950,6 +2000,7 @@ func init() {
...
@@ -1950,6 +2000,7 @@ func init() {
proto
.
RegisterType
((
*
GuessGameAction
)(
nil
),
"types.GuessGameAction"
)
proto
.
RegisterType
((
*
GuessGameAction
)(
nil
),
"types.GuessGameAction"
)
proto
.
RegisterType
((
*
GuessGameStart
)(
nil
),
"types.GuessGameStart"
)
proto
.
RegisterType
((
*
GuessGameStart
)(
nil
),
"types.GuessGameStart"
)
proto
.
RegisterType
((
*
GuessGameBet
)(
nil
),
"types.GuessGameBet"
)
proto
.
RegisterType
((
*
GuessGameBet
)(
nil
),
"types.GuessGameBet"
)
proto
.
RegisterType
((
*
GuessGameStopBet
)(
nil
),
"types.GuessGameStopBet"
)
proto
.
RegisterType
((
*
GuessGameAbort
)(
nil
),
"types.GuessGameAbort"
)
proto
.
RegisterType
((
*
GuessGameAbort
)(
nil
),
"types.GuessGameAbort"
)
proto
.
RegisterType
((
*
GuessGamePublish
)(
nil
),
"types.GuessGamePublish"
)
proto
.
RegisterType
((
*
GuessGamePublish
)(
nil
),
"types.GuessGamePublish"
)
proto
.
RegisterType
((
*
GuessGameQuery
)(
nil
),
"types.GuessGameQuery"
)
proto
.
RegisterType
((
*
GuessGameQuery
)(
nil
),
"types.GuessGameQuery"
)
...
@@ -1957,7 +2008,6 @@ func init() {
...
@@ -1957,7 +2008,6 @@ func init() {
proto
.
RegisterType
((
*
ReplyGuessGameInfo
)(
nil
),
"types.ReplyGuessGameInfo"
)
proto
.
RegisterType
((
*
ReplyGuessGameInfo
)(
nil
),
"types.ReplyGuessGameInfo"
)
proto
.
RegisterType
((
*
QueryGuessGameInfos
)(
nil
),
"types.QueryGuessGameInfos"
)
proto
.
RegisterType
((
*
QueryGuessGameInfos
)(
nil
),
"types.QueryGuessGameInfos"
)
proto
.
RegisterType
((
*
ReplyGuessGameInfos
)(
nil
),
"types.ReplyGuessGameInfos"
)
proto
.
RegisterType
((
*
ReplyGuessGameInfos
)(
nil
),
"types.ReplyGuessGameInfos"
)
proto
.
RegisterType
((
*
ReceiptPBGame
)(
nil
),
"types.ReceiptPBGame"
)
proto
.
RegisterType
((
*
ReceiptGuessGame
)(
nil
),
"types.ReceiptGuessGame"
)
proto
.
RegisterType
((
*
ReceiptGuessGame
)(
nil
),
"types.ReceiptGuessGame"
)
proto
.
RegisterType
((
*
GuessStartTxReq
)(
nil
),
"types.GuessStartTxReq"
)
proto
.
RegisterType
((
*
GuessStartTxReq
)(
nil
),
"types.GuessStartTxReq"
)
proto
.
RegisterType
((
*
GuessBetTxReq
)(
nil
),
"types.GuessBetTxReq"
)
proto
.
RegisterType
((
*
GuessBetTxReq
)(
nil
),
"types.GuessBetTxReq"
)
...
@@ -1971,87 +2021,88 @@ func init() {
...
@@ -1971,87 +2021,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
{
// 1267 bytes of a gzipped FileDescriptorProto
// 1281 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xcc
,
0x58
,
0x4b
,
0x6f
,
0xdb
,
0xc6
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xec
,
0x58
,
0x4b
,
0x6f
,
0xdb
,
0xc6
,
0x13
,
0x8f
,
0x48
,
0x51
,
0x8f
,
0x91
,
0x65
,
0x2b
,
0xeb
,
0x3c
,
0xf6
,
0x6f
,
0x04
,
0x7f
,
0xa8
,
0x44
,
0x13
,
0x8f
,
0x48
,
0x51
,
0x8f
,
0x91
,
0x65
,
0xcb
,
0xeb
,
0x3c
,
0xf6
,
0xef
,
0x7f
,
0x50
,
0xa8
,
0x44
,
0xd0
,
0xaa
,
0x87
,
0xa4
,
0x85
,
0x02
,
0xf4
,
0x60
,
0xa0
,
0x07
,
0x2b
,
0x01
,
0x62
,
0xf7
,
0x50
,
0xb8
,
0xd0
,
0xaa
,
0x87
,
0xb8
,
0x85
,
0x02
,
0xf4
,
0x60
,
0xb4
,
0x07
,
0x2b
,
0x41
,
0x62
,
0xf7
,
0x50
,
0xa4
,
0x6b
,
0x17
,
0x3e
,
0x53
,
0xd2
,
0x5a
,
0x66
,
0x21
,
0x91
,
0x0c
,
0xb9
,
0x0a
,
0xa4
,
0x5b
,
0x81
,
0xf6
,
0xb4
,
0x8b
,
0x9c
,
0x29
,
0x69
,
0x2d
,
0xb3
,
0x90
,
0x44
,
0x86
,
0x5c
,
0x05
,
0xd2
,
0xbd
,
0xd7
,
0x7e
,
0xda
,
0x43
,
0x0f
,
0xfd
,
0x0e
,
0xfd
,
0x66
,
0x05
,
0xfa
,
0x29
,
0x8a
,
0x99
,
0x5d
,
0x8a
,
0x0f
,
0x51
,
0x8f
,
0x7c
,
0x96
,
0x7c
,
0x91
,
0xde
,
0x7b
,
0x2f
,
0x50
,
0xcc
,
0xec
,
0x52
,
0x5c
,
0x52
,
0x94
,
0x14
,
0x32
,
0x1c
,
0xf4
,
0xd0
,
0x1b
,
0xe7
,
0xb1
,
0xb3
,
0x33
,
0xb3
,
0x33
,
0xbf
,
0x19
,
0x09
,
0x3a
,
0xb3
,
0xf7
,
0xdc
,
0x1b
,
0xe7
,
0xb1
,
0xf3
,
0xd8
,
0x9d
,
0xf9
,
0xcd
,
0x48
,
0xd0
,
0x9a
,
0x2c
,
0x44
,
0x92
,
0xa5
,
0x4c
,
0x92
,
0xd7
,
0x51
,
0x1c
,
0xaa
,
0x90
,
0x39
,
0x6a
,
0x1d
,
0xc9
,
0xe4
,
0xe4
,
0xb1
,
0x8a
,
0x9c
,
0x45
,
0x71
,
0x28
,
0x43
,
0xe6
,
0xc8
,
0x55
,
0x24
,
0x92
,
0xd3
,
0x63
,
0x19
,
0xfb
,
0xf3
,
0xc4
,
0xbd
,
0x20
,
0xf1
,
0x26
,
0xca
,
0x0f
,
0x03
,
0x2d
,
0x71
,
0xff
,
0x76
,
0xa0
,
0xfd
,
0x1e
,
0x35
,
0xdf
,
0x1f
,
0xc9
,
0x20
,
0x9c
,
0x2b
,
0x89
,
0xfb
,
0xa9
,
0x06
,
0xcd
,
0x37
,
0xa8
,
0xf9
,
0xc6
,
0x9f
,
0x09
,
0x7b
,
0x0b
,
0xc9
,
0x9e
,
0x41
,
0x63
,
0xe6
,
0x2d
,
0xe4
,
0xc5
,
0x94
,
0xd7
,
0xfa
,
0xb5
,
0x41
,
0x5b
,
0xf6
,
0x18
,
0x6a
,
0x13
,
0x7f
,
0x26
,
0xae
,
0xc6
,
0xbc
,
0xd2
,
0xad
,
0xf4
,
0x9a
,
0x9e
,
0xa6
,
0x90
,
0x18
,
0x0a
,
0xf9
,
0x89
,
0xf2
,
0xd4
,
0x32
,
0xe1
,
0x56
,
0xbf
,
0x36
,
0x70
,
0x84
,
0xa1
,
0xd8
,
0x0b
,
0x9f
,
0x48
,
0x5f
,
0x2e
,
0x12
,
0x6e
,
0x75
,
0x2b
,
0x3d
,
0xc7
,
0xd3
,
0x14
,
0x7b
,
0x0a
,
0xcd
,
0x28
,
0x68
,
0x47
,
0xb1
,
0xbc
,
0xd2
,
0x22
,
0x9b
,
0x44
,
0x19
,
0x03
,
0xa5
,
0x89
,
0xf2
,
0x62
,
0x75
,
0xed
,
0x16
,
0xd7
,
0x4a
,
0x64
,
0x93
,
0x28
,
0x63
,
0xa0
,
0x34
,
0x91
,
0x7e
,
0x2c
,
0x6f
,
0x82
,
0x99
,
0xe0
,
0x2f
,
0x24
,
0xaf
,
0xf7
,
0x6b
,
0x03
,
0x5b
,
0x64
,
0x0c
,
0xd6
,
0x87
,
0x8e
,
0x26
,
0x56
,
0xe7
,
0x5e
,
0xd5
,
0x6e
,
0xa5
,
0x67
,
0x7b
,
0x19
,
0x83
,
0x75
,
0xa1
,
0xa5
,
0x88
,
0xe5
,
0xa5
,
0x9f
,
0xdc
,
0x71
,
0x72
,
0xc7
,
0x1d
,
0xba
,
0x30
,
0xcf
,
0x62
,
0x4f
,
0xc0
,
0x51
,
0x61
,
0xe4
,
0x4f
,
0x78
,
0x83
,
0x64
,
0x87
,
0x1c
,
0x9a
,
0x2c
,
0xf6
,
0x10
,
0x1c
,
0x19
,
0x46
,
0xc1
,
0x88
,
0xd7
,
0x48
,
0xa6
,
0x08
,
0x76
,
0x9a
,
0x60
,
0x27
,
0xd0
,
0x9a
,
0x78
,
0x4a
,
0xce
,
0xc2
,
0x78
,
0xcd
,
0x9b
,
0x24
,
0xd8
,
0xd0
,
0x8c
,
0x0a
,
0x8d
,
0x91
,
0x2f
,
0xc5
,
0x24
,
0x8c
,
0x57
,
0xbc
,
0x4e
,
0x82
,
0x35
,
0xcd
,
0x38
,
0xd4
,
0xc3
,
0x43
,
0x33
,
0x8c
,
0x30
,
0xba
,
0x84
,
0xb7
,
0x48
,
0x94
,
0x92
,
0x28
,
0x59
,
0x78
,
0x2b
,
0xf2
,
0xa4
,
0x08
,
0xb3
,
0x4b
,
0x78
,
0x83
,
0x44
,
0x29
,
0x89
,
0x92
,
0x99
,
0xbf
,
0xa4
,
0x48
,
0x9a
,
0x4a
,
0xa2
,
0xad
,
0x25
,
0x86
,
0x44
,
0x2f
,
0x17
,
0xde
,
0xea
,
0x5c
,
0xfa
,
0xb3
,
0x3b
,
0xc5
,
0x41
,
0x7b
,
0xb9
,
0x49
,
0x8c
,
0x72
,
0xe6
,
0x2f
,
0x2f
,
0x45
,
0x30
,
0xb9
,
0x93
,
0x1c
,
0x54
,
0x94
,
0x6b
,
0x06
,
0x65
,
0x61
,
0x50
,
0xe4
,
0xeb
,
0xc5
,
0x38
,
0x9c
,
0xf3
,
0x8e
,
0xce
,
0x88
,
0xa6
,
0x18
,
0x83
,
0xba
,
0x5c
,
0xbe
,
0x9a
,
0x0d
,
0xc3
,
0x29
,
0x6f
,
0xa9
,
0x1b
,
0x51
,
0x14
,
0x63
,
0x50
,
0x15
,
0x4b
,
0x31
,
0xe2
,
0xc9
,
0x09
,
0x3f
,
0x20
,
0x2e
,
0x7d
,
0xa3
,
0x6e
,
0x18
,
0xc8
,
0x91
,
0x54
,
0xbc
,
0xdb
,
0xaf
,
0x0d
,
0x07
,
0xc4
,
0xa5
,
0x6f
,
0xd4
,
0x0d
,
0xe7
,
0x62
,
0x20
,
0x24
,
0x6f
,
0x77
,
0x2b
,
0xbd
,
0xb6
,
0xa7
,
0xba
,
0xc2
,
0x50
,
0xe6
,
0xee
,
0x91
,
0x54
,
0x09
,
0x3f
,
0x24
,
0x41
,
0x4a
,
0xb2
,
0x97
,
0xd0
,
0x35
,
0x29
,
0xed
,
0x7b
,
0x20
,
0x64
,
0xc2
,
0x0f
,
0x49
,
0x90
,
0x92
,
0xec
,
0x19
,
0xb4
,
0xf5
,
0xe7
,
0xcf
,
0x9f
,
0xdf
,
0x2f
,
0x17
,
0x63
,
0x19
,
0xf3
,
0x23
,
0x92
,
0x17
,
0x99
,
0xac
,
0x07
,
0xf6
,
0xad
,
0x94
,
0x8b
,
0xd9
,
0x50
,
0xc4
,
0xfc
,
0x88
,
0xe4
,
0x79
,
0x26
,
0x73
,
0xe1
,
0x60
,
0x2c
,
0x3e
,
0xbc
,
0x16
,
0xbc
,
0x47
,
0xbe
,
0xe1
,
0x27
,
0x5a
,
0xbc
,
0x95
,
0xf2
,
0x6c
,
0x3a
,
0x8d
,
0xf9
,
0x63
,
0x1d
,
0x8d
,
0xe2
,
0xb5
,
0x3f
,
0x92
,
0x61
,
0xcc
,
0x3b
,
0x14
,
0x64
,
0x8e
,
0xc7
,
0xbe
,
0x00
,
0x50
,
0xf4
,
0xc5
,
0x21
,
0xd1
,
0x07
,
0xb9
,
0x8a
,
0xfc
,
0x58
,
0x72
,
0xa6
,
0xfd
,
0xd5
,
0x14
,
0x73
,
0xe1
,
0x40
,
0x7f
,
0x78
,
0x1c
,
0xf3
,
0x63
,
0x8a
,
0xca
,
0xe0
,
0xa0
,
0xa7
,
0x68
,
0xea
,
0xcb
,
0xcc
,
0x08
,
0x23
,
0x23
,
0x99
,
0x40
,
0x8f
,
0xc9
,
0x58
,
0x81
,
0x87
,
0x99
,
0xf0
,
0xa6
,
0x0b
,
0x3f
,
0x20
,
0xbb
,
0x4f
,
0xe8
,
0x79
,
0x26
,
0xbe
,
0x89
,
0x66
,
0x90
,
0x99
,
0x13
,
0xf5
,
0x26
,
0x06
,
0x0b
,
0x73
,
0x14
,
0xcb
,
0x28
,
0x78
,
0xc6
,
0x60
,
0xff
,
0x07
,
0x18
,
0x67
,
0x8e
,
0x3e
,
0x25
,
0x47
,
0x73
,
0x1c
,
0x36
,
0x00
,
0x27
,
0x88
,
0x05
,
0x7f
,
0xa8
,
0xee
,
0x43
,
0x51
,
0x18
,
0xa3
,
0xfa
,
0xd2
,
0x17
,
0xf9
,
0x48
,
0xc5
,
0x68
,
0x9a
,
0x7b
,
0xeb
,
0x84
,
0x3f
,
0xeb
,
0xdb
,
0x83
,
0xce
,
0x90
,
0xbd
,
0xa6
,
0x9a
,
0x7b
,
0x4d
,
0xc5
,
0xf2
,
0xf0
,
0xa6
,
0xfd
,
0xf1
,
0x2c
,
0x98
,
0x93
,
0xed
,
0xc7
,
0x74
,
0x3c
,
0x63
,
0x60
,
0x06
,
0xc3
,
0x75
,
0x39
,
0xf7
,
0xd6
,
0x32
,
0x16
,
0x5a
,
0x01
,
0x7d
,
0x8c
,
0x65
,
0xb2
,
0x9c
,
0x2b
,
0xfe
,
0x5c
,
0xec
,
0x22
,
0x9e
,
0xd0
,
0x45
,
0x18
,
0x1c
,
0xd6
,
0x03
,
0x27
,
0x9a
,
0xfa
,
0xab
,
0x84
,
0xf3
,
0xae
,
0xfb
,
0xa8
,
0x29
,
0xf6
,
0x0a
,
0x9a
,
0x63
,
0xa9
,
0xb0
,
0x78
,
0x38
,
0xef
,
0xd7
,
0x06
,
0x9d
,
0xe1
,
0xdd
,
0x6b
,
0xf5
,
0xd9
,
0x19
,
0xd5
,
0xf4
,
0x19
,
0x15
,
0xef
,
0xdb
,
0xa9
,
0xbf
,
0x12
,
0xb1
,
0xa7
,
0x71
,
0xde
,
0xc6
,
0x48
,
0x8b
,
0x44
,
0xaa
,
0x83
,
0xe5
,
0xe1
,
0x07
,
0x53
,
0xb9
,
0xe2
,
0xff
,
0xa3
,
0x14
,
0x30
,
0xc6
,
0x58
,
0x24
,
0x8b
,
0xa9
,
0xe4
,
0xff
,
0x53
,
0x31
,
0x2a
,
0x8a
,
0x3d
,
0x87
,
0xfa
,
0x58
,
0x34
,
0x81
,
0xe5
,
0x11
,
0xc5
,
0xf2
,
0x82
,
0x04
,
0x27
,
0x24
,
0xd8
,
0xd0
,
0xee
,
0x3b
,
0xe8
,
0x50
,
0x48
,
0x2c
,
0x4e
,
0x7e
,
0xda
,
0xad
,
0xf4
,
0x5a
,
0xfd
,
0x13
,
0xd3
,
0xc6
,
0x40
,
0x89
,
0xbc
,
0xe4
,
0xdc
,
0xc1
,
0x37
,
0xf4
,
0x30
,
0x54
,
0x5d
,
0xeb
,
0xf4
,
0xcd
,
0x3e
,
0x03
,
0x7b
,
0x2c
,
0x15
,
0x54
,
0x07
,
0xcb
,
0x2f
,
0x98
,
0x8f
,
0xc5
,
0x92
,
0xff
,
0x9f
,
0x72
,
0x51
,
0x04
,
0x96
,
0x5f
,
0x14
,
0x95
,
0x79
,
0x67
,
0x78
,
0x54
,
0xba
,
0x5f
,
0xa0
,
0xcc
,
0xfd
,
0xb3
,
0x06
,
0xad
,
0x94
,
0x43
,
0x6f
,
0x8b
,
0x2b
,
0x12
,
0x3c
,
0x25
,
0xc1
,
0x9a
,
0x76
,
0x5f
,
0x41
,
0xcb
,
0x08
,
0x07
,
0x6b
,
0xc4
,
0xc7
,
0x4e
,
0x25
,
0x96
,
0x76
,
0x8c
,
0xa6
,
0x4a
,
0xd9
,
0xb2
,
0xb6
,
0xb2
,
0x75
,
0x02
,
0x2d
,
0x3f
,
0xb9
,
0x54
,
0x55
,
0x2f
,
0xd1
,
0x37
,
0xfb
,
0x12
,
0xec
,
0xa1
,
0x90
,
0xd4
,
0x46
,
0xad
,
0xfe
,
0x51
,
0xc1
,
0xf1
,
0x83
,
0x40
,
0xc6
,
0xd4
,
0x38
,
0x2d
,
0xb1
,
0xa1
,
0xd1
,
0x66
,
0x14
,
0x87
,
0xb7
,
0xbe
,
0xa2
,
0xbf
,
0x87
,
0x32
,
0xf7
,
0x63
,
0x05
,
0x1a
,
0x29
,
0x87
,
0x6a
,
0x8a
,
0x4a
,
0x38
,
0xed
,
0x48
,
0x45
,
0xa6
,
0xe9
,
0x0a
,
0x43
,
0x65
,
0x01
,
0x3b
,
0xbb
,
0x02
,
0x6e
,
0x94
,
0x02
,
0xfe
,
0xad
,
0x06
,
0x07
,
0x15
,
0x6e
,
0xcb
,
0xda
,
0xb8
,
0xad
,
0x53
,
0x68
,
0x04
,
0xc9
,
0xbb
,
0x60
,
0x3e
,
0x17
,
0x31
,
0x35
,
0xf9
,
0xe4
,
0x61
,
0xc1
,
0xa9
,
0x50
,
0x79
,
0xf3
,
0x91
,
0xa4
,
0x26
,
0x4c
,
0xc8
,
0xeb
,
0xae
,
0x28
,
0x66
,
0xc3
,
0x5b
,
0xd3
,
0x68
,
0x33
,
0x8a
,
0xc3
,
0xdb
,
0x40
,
0xea
,
0xa6
,
0xd4
,
0x54
,
0x96
,
0xb0
,
0x32
,
0xd9
,
0x00
,
0x8e
,
0x52
,
0x46
,
0x31
,
0x82
,
0x32
,
0x9b
,
0xbd
,
0x02
,
0xc7
,
0x57
,
0x72
,
0x81
,
0xb3
,
0x2d
,
0xe1
,
0x5a
,
0x21
,
0xe1
,
0x3f
,
0x2a
,
0x70
,
0x60
,
0x5e
,
0x1e
,
0x96
,
0x99
,
0x0c
,
0xa5
,
0xcd
,
0x8f
,
0x8f
,
0xfe
,
0xbc
,
0xe2
,
0xc1
,
0x2e
,
0x94
,
0x5c
,
0x08
,
0xad
,
0xe5
,
0xde
,
0x41
,
0xaf
,
0x3f
,
0x1d
,
0x08
,
0x6a
,
0xf2
,
0x84
,
0xa2
,
0x6e
,
0x7b
,
0x79
,
0x26
,
0xeb
,
0xc1
,
0x51
,
0xca
,
0xc8
,
0x2c
,
0xfa
,
0xe4
,
0x0c
,
0xbe
,
0x80
,
0x36
,
0x52
,
0x3a
,
0x0c
,
0x9b
,
0xc4
,
0x19
,
0xc3
,
0xfd
,
0xc3
,
0x67
,
0x50
,
0x64
,
0xb3
,
0xe7
,
0xe0
,
0x04
,
0x52
,
0xcc
,
0x10
,
0x5c
,
0xf0
,
0xd1
,
0x9f
,
0x94
,
0x3c
,
0x82
,
0xa3
,
0x0d
,
0xae
,
0x9d
,
0x11
,
0xe2
,
0xa1
,
0xb3
,
0x04
,
0x2f
,
0x74
,
0x51
,
0x67
,
0xf8
,
0x34
,
0xd8
,
0x95
,
0x14
,
0x33
,
0x4f
,
0x69
,
0xb9
,
0x77
,
0xd0
,
0x29
,
0x8a
,
0xfe
,
0xf5
,
0x0d
,
0x3e
,
0x85
,
0xef
,
0x2c
,
0xaa
,
0x5d
,
0xa1
,
0xf0
,
0xfc
,
0x91
,
0xd0
,
0x5a
,
0xec
,
0x8b
,
0x7c
,
0x29
,
0x1c
,
0x97
,
0x26
,
0x52
,
0x2a
,
0x0d
,
0x9b
,
0xc4
,
0x19
,
0xc3
,
0xfd
,
0x64
,
0xc1
,
0xd1
,
0x1a
,
0x37
,
0x2f
,
0x08
,
0x95
,
0x47
,
0x12
,
0x55
,
0x51
,
0x03
,
0xed
,
0x7a
,
0xe3
,
0x30
,
0x56
,
0xe4
,
0x45
,
0x85
,
0xdd
,
0x33
,
0x51
,
0x31
,
0x58
,
0x82
,
0x2f
,
0x72
,
0xd4
,
0xea
,
0x3f
,
0x32
,
0x83
,
0x45
,
0xb5
,
0x6b
,
0x14
,
0x5e
,
0x14
,
0xa2
,
0x5d
,
0xd2
,
0x62
,
0x6f
,
0xa0
,
0x19
,
0x2d
,
0xc7
,
0x73
,
0x3f
,
0xb9
,
0xa3
,
0xf7
,
0x2d
,
0x3e
,
0xf0
,
0x94
,
0x16
,
0xfb
,
0xda
,
0x2c
,
0x85
,
0x93
,
0xa2
,
0xf2
,
0x40
,
0xa0
,
0x2a
,
0x6a
,
0xb0
,
0x65
,
0x0d
,
0x0f
,
0x5c
,
0x6a
,
0xf1
,
0xf9
,
0x23
,
0x91
,
0x6a
,
0xe2
,
0x1d
,
0x1f
,
0x96
,
0x32
,
0x5e
,
0x17
,
0x50
,
0x4f
,
0x64
,
0x18
,
0x21
,
0xb0
,
0xd8
,
0xa4
,
0xfc
,
0x64
,
0xd3
,
0x32
,
0x89
,
0x2f
,
0x1f
,
0xd3
,
0xdb
,
0x57
,
0xdc
,
0xf1
,
0x03
,
0x0a
,
0xf1
,
0x0e
,
0xd2
,
0x62
,
0x87
,
0x60
,
0xa9
,
0x35
,
0x95
,
0x78
,
0xa9
,
0x26
,
0x06
,
0xe3
,
0x0f
,
0xc3
,
0x58
,
0xbd
,
0x71
,
0x49
,
0x30
,
0x17
,
0x28
,
0xc4
,
0x60
,
0x43
,
0x57
,
0x58
,
0x6a
,
0x3d
,
0x6a
,
0x82
,
0xf3
,
0xd1
,
0x9b
,
0x2f
,
0xa5
,
0xfb
,
0xb3
,
0x0d
,
0x87
,
0x48
,
0x0b
,
0x7d
,
0x44
,
0x8b
,
0xe1
,
0x34
,
0xd0
,
0x48
,
0x5c
,
0xe2
,
0xe3
,
0xad
,
0x12
,
0xa3
,
0x0f
,
0xc5
,
0x80
,
0x33
,
0x98
,
0xad
,
0xe5
,
0x61
,
0x36
,
0x07
,
0xa5
,
0x56
,
0x11
,
0x4a
,
0xf3
,
0x00
,
0x6c
,
0xad
,
0x89
,
0x3e
,
0xde
,
0x2f
,
0x44
,
0xbc
,
0xa2
,
0xba
,
0x28
,
0xf1
,
0xf1
,
0x0b
,
0x0a
,
0xd1
,
0x07
,
0x6f
,
0x03
,
0x70
,
0x0a
,
0xb3
,
0xf5
,
0x3d
,
0x30
,
0xeb
,
0xec
,
0x86
,
0xd9
,
0x46
,
0x25
,
0xcc
,
0x36
,
0x69
,
0xb1
,
0x43
,
0xb0
,
0xa4
,
0xc2
,
0xec
,
0xb6
,
0x67
,
0xc9
,
0xd5
,
0xa0
,
0x0e
,
0xce
,
0x07
,
0x7f
,
0x2b
,
0x61
,
0xb6
,
0xb5
,
0x0b
,
0x66
,
0xdb
,
0xf7
,
0xc0
,
0x2c
,
0xec
,
0x81
,
0xd9
,
0x4e
,
0x25
,
0xcc
,
0xba
,
0x10
,
0xee
,
0x5f
,
0x36
,
0x1c
,
0xe6
,
0x6f
,
0x29
,
0xc3
,
0xfe
,
0x8a
,
0x89
,
0xfd
,
0x06
,
0xbe
,
0x1e
,
0xec
,
0x82
,
0xd9
,
0xee
,
0x5e
,
0x98
,
0x3d
,
0xdc
,
0x86
,
0x59
,
0xf7
,
0x27
,
0xd3
,
0x93
,
0xa6
,
0x5b
,
0x79
,
0x7c
,
0x37
,
0xa7
,
0x82
,
0xbd
,
0x39
,
0x15
,
0x52
,
0xec
,
0xaf
,
0xee
,
0xc0
,
0x7e
,
0x67
,
0x8a
,
0xf6
,
0x0d
,
0x5d
,
0xd3
,
0x18
,
0x56
,
0xa1
,
0x31
,
0x38
,
0xc1
,
0x24
,
0x7a
,
0x6d
,
0xca
,
0x3e
,
0x3b
,
0xf6
,
0xd7
,
0x4a
,
0xb1
,
0xbf
,
0x5e
,
0x8a
,
0xfd
,
0x8d
,
0x6d
,
0xd8
,
0xdf
,
0xdc
,
0x83
,
0xfd
,
0x25
,
0xd3
,
0x08
,
0xea
,
0x9b
,
0x08
,
0xdc
,
0xd3
,
0xdc
,
0x6b
,
0x53
,
0x19
,
0xee
,
0xbc
,
0xcd
,
0x9c
,
0xf0
,
0x39
,
0xd8
,
0xdf
,
0xda
,
0x8b
,
0xfd
,
0x07
,
0xfb
,
0xb1
,
0xbf
,
0xfd
,
0x19
,
0xd8
,
0x7f
,
0xb8
,
0xb5
,
0xb2
,
0xb3
,
0xd7
,
0xa6
,
0x59
,
0x73
,
0x15
,
0xb9
,
0xcf
,
0x57
,
0x03
,
0xe9
,
0x56
,
0x01
,
0xd2
,
0x0b
,
0xfb
,
0x8f
,
0x76
,
0x62
,
0x7f
,
0xa7
,
0x04
,
0xfb
,
0x3b
,
0x60
,
0xdf
,
0x0a
,
0x41
,
0x83
,
0xc9
,
0x8d
,
0x55
,
0x3b
,
0xb3
,
0xfa
,
0x5d
,
0xce
,
0x23
,
0x2a
,
0xda
,
0x9d
,
0x36
,
0x75
,
0x0d
,
0x5b
,
0x69
,
0xf6
,
0xf0
,
0xd3
,
0xfd
,
0x4d
,
0x43
,
0x87
,
0x2e
,
0xf6
,
0x5d
,
0xbb
,
0x87
,
0xee
,
0x5f
,
0x2b
,
0xd7
,
0x0d
,
0x57
,
0xd8
,
0x0a
,
0x80
,
0x91
,
0x89
,
0x8d
,
0xc1
,
0x8b
,
0xe0
,
0x36
,
0xdc
,
0x69
,
0x2f
,
0x85
,
0xbf
,
0x9c
,
0xd0
,
0x1c
,
0xef
,
0x49
,
0x77
,
0x67
,
0x4a
,
0xa6
,
0xbe
,
0xaa
,
0x99
,
0xaf
,
0x1f
,
0x34
,
0x7b
,
0x2b
,
0x07
,
0xf7
,
0xd9
,
0x62
,
0x63
,
0x17
,
0x16
,
0x9b
,
0x0d
,
0xd4
,
0xd6
,
0x73
,
0x50
,
0xeb
,
0x2e
,
0x18
,
0xbd
,
0xb2
,
0xd5
,
0x9f
,
0x3e
,
0x6d
,
0x65
,
0xa7
,
0xcf
,
0x8d
,
0xea
,
0xa4
,
0xb6
,
0xb9
,
0x9e
,
0x02
,
0x13
,
0x32
,
0x9a
,
0x97
,
0xee
,
0x7b
,
0x09
,
0x75
,
0xbc
,
0xc1
,
0xa0
,
0x4a
,
0xaf
,
0xdc
,
0xc7
,
0xd9
,
0x1b
,
0xc3
,
0xb3
,
0xee
,
0xa0
,
0x5d
,
0x99
,
0xea
,
0xb9
,
0x65
,
0xe5
,
0xe6
,
0x96
,
0xb6
,
0x99
,
0x82
,
0xa4
,
0xee
,
0x57
,
0x70
,
0xbc
,
0xed
,
0x2b
,
0xed
,
0x25
,
0xda
,
0x3d
,
0x84
,
0x62
,
0x1b
,
0x6a
,
0x67
,
0x56
,
0x7f
,
0x32
,
0x22
,
0xa2
,
0x26
,
0xdb
,
0x6a
,
0x53
,
0xf5
,
0x9c
,
0x95
,
0xf6
,
0x5c
,
0x4b
,
0xcc
,
0x90
,
0xee
,
0xb7
,
0x70
,
0xbc
,
0x7d
,
0x59
,
0xc2
,
0x3e
,
0x07
,
0x07
,
0x35
,
0xb4
,
0x7a
,
0x89
,
0xad
,
0x8f
,
0x15
,
0x60
,
0x64
,
0x63
,
0x6d
,
0xf1
,
0x6a
,
0x7e
,
0x1b
,
0x6e
,
0x35
,
0x98
,
0x0e
,
0xd5
,
0x75
,
0x5a
,
0xec
,
0xfe
,
0x6e
,
0x41
,
0x57
,
0xc8
,
0x89
,
0xf4
,
0x23
,
0x75
,
0x39
,
0xfa
,
0xa4
,
0x35
,
0xcb
,
0x18
,
0x6a
,
0xd9
,
0x7a
,
0x68
,
0xe7
,
0xd6
,
0xc3
,
0xf5
,
0x40
,
0xa9
,
0x9a
,
0x03
,
0x25
,
0xe5
,
0x2e
,
0xcd
,
0x97
,
0x9d
,
0xcb
,
0x57
,
0x65
,
0x5e
,
0xcc
,
0x1a
,
0xf8
,
0xf1
,
0x22
,
0x37
,
0x9c
,
0xb7
,
0x06
,
0x38
,
0xc5
,
0x35
,
0xc0
,
0x6c
,
0xe4
,
0x5a
,
0xbe
,
0x91
,
0xdd
,
0x73
,
0x60
,
0x9e
,
0x88
,
0x32
,
0x06
,
0x49
,
0x69
,
0xe0
,
0x62
,
0xc5
,
0x36
,
0xcc
,
0x92
,
0x98
,
0x32
,
0xd0
,
0x22
,
0x21
,
0x13
,
0xa6
,
0x85
,
0x48
,
0x9f
,
0x41
,
0x15
,
0x63
,
0xd3
,
0xa8
,
0xdb
,
0x29
,
0x82
,
0x90
,
0x47
,
0x52
,
0xf7
,
0xb5
,
0xb8
,
0x2d
,
0x34
,
0x81
,
0x67
,
0xfc
,
0xe4
,
0xc6
,
0xf3
,
0x95
,
0x1f
,
0xcc
,
0xa8
,
0xcd
,
0x5b
,
0x5b
,
0x38
,
0xd9
,
0xcc
,
0x92
,
0xf6
,
0x42
,
0x95
,
0x18
,
0x8e
,
0x2a
,
0x1b
,
0xb1
,
0x41
,
0x93
,
0xee
,
0x22
,
0x63
,
0x60
,
0xd2
,
0xb4
,
0x01
,
0xec
,
0x74
,
0x4a
,
0x9a
,
0x21
,
0x8b
,
0x0b
,
0x29
,
0x94
,
0x16
,
0x8f
,
0x70
,
0xb2
,
0xe9
,
0x2c
,
0x61
,
0x5f
,
0x81
,
0x83
,
0x1a
,
0x4a
,
0xbd
,
0xcc
,
0x9d
,
0x12
,
0xbb
,
0x52
,
0xf7
,
0x57
,
0x0b
,
0x7a
,
0x26
,
0x27
,
0xf7
,
0xef
,
0xbc
,
0x05
,
0x53
,
0x56
,
0x79
,
0xb7
,
0xdd
,
0xbf
,
0x5b
,
0xd0
,
0xf1
,
0xc4
,
0x48
,
0x04
,
0x91
,
0xdc
,
0xbf
,
0x5f
,
0xe7
,
0xf6
,
0x68
,
0xab
,
0xb8
,
0x55
,
0x38
,
0x69
,
0xd2
,
0xea
,
0xb9
,
0xa4
,
0x15
,
0xf6
,
0x2a
,
0xa7
,
0xbc
,
0x57
,
0xed
,
0x99
,
0xdf
,
0x47
,
0x6f
,
0xbb
,
0xde
,
0xf4
,
0x29
,
0xaa
,
0xc6
,
0x53
,
0xec
,
0xbd
,
0xdc
,
0x6d
,
0xb3
,
0x3c
,
0x7b
,
0x59
,
0xba
,
0x9b
,
0xa5
,
0x89
,
0xbf
,
0x01
,
0xe0
,
0x56
,
0x09
,
0x80
,
0x5d
,
0x38
,
0xd0
,
0x9e
,
0xbc
,
0xac
,
0x7a
,
0x61
,
0xfa
,
0xaf
,
0x9f
,
0xa3
,
0x51
,
0xc0
,
0x55
,
0x17
,
0x0e
,
0x54
,
0x24
,
0x2f
,
0xef
,
0xbd
,
0xf3
,
0x82
,
0x99
,
0x5e
,
0x76
,
0x5b
,
0xa2
,
0xc0
,
0x73
,
0x7f
,
0xb1
,
0xcd
,
0x6c
,
0xbc
,
0xd2
,
0xfc
,
0xf9
,
0x44
,
0x2d
,
0xd6
,
0x0d
,
0x2f
,
0xc7
,
0x73
,
0xff
,
0xb6
,
0xf5
,
0x9c
,
0xbc
,
0x56
,
0x8b
,
0xcb
,
0xb6
,
0x90
,
0x1f
,
0x1e
,
0x3c
,
0x04
,
0x0a
,
0xbb
,
0xbd
,
0x5d
,
0xde
,
0xed
,
0x1f
,
0x30
,
0x06
,
0xbd
,
0x27
,
0xde
,
0xdf
,
0x1b
,
0xdb
,
0x73
,
0xbf
,
0x23
,
0xec
,
0xe2
,
0xef
,
0x88
,
0x7b
,
0xa0
,
0x7b
,
0xba
,
0xff
,
0xe1
,
0x31
,
0x50
,
0xff
,
0x37
,
0xc7
,
0x40
,
0xb7
,
0x34
,
0x06
,
0xae
,
0xa0
,
0x9b
,
0xee
,
0xfb
,
0x3f
,
0x74
,
0xdf
,
0x8e
,
0xee
,
0x1c
,
0xea
,
0xb7
,
0x5a
,
0xaa
,
0xe0
,
0x3d
,
0x25
,
0x0d
,
0xdc
,
0x42
,
0xfa
,
0x09
,
0x1e
,
0x3a
,
0x07
,
0x18
,
0xd4
,
0x11
,
0xf8
,
0xcd
,
0x10
,
0xa0
,
0x6f
,
0xf7
,
0x4b
,
0xef
,
0xec
,
0xc4
,
0xfd
,
0x63
,
0x4a
,
0x31
,
0xc7
,
0x73
,
0xaf
,
0xa1
,
0x9d
,
0x6e
,
0x64
,
0xea
,
0xf1
,
0xf3
,
0xb2
,
0x84
,
0xf5
,
0x7b
,
0xcd
,
0xba
,
0x6f
,
0xe1
,
0xb1
,
0x5e
,
0x86
,
0x35
,
0xb4
,
0xdf
,
0xeb
,
0xef
,
0x0b
,
0xf3
,
0x0c
,
0xaa
,
0x88
,
0xeb
,
0x1a
,
0xe3
,
0xe9
,
0xdb
,
0xfd
,
0x46
,
0xd7
,
0x14
,
0x81
,
0x43
,
0x15
,
0xbe
,
0xbb
,
0x37
,
0xb9
,
0x2d
,
0x4b
,
0xc8
,
0x49
,
0x18
,
0x4f
,
0x1f
,
0x0c
,
0x33
,
0x9b
,
0xf1
,
0x4e
,
0xb3
,
0xee
,
0x4b
,
0x38
,
0x56
,
0x2b
,
0xb9
,
0xc2
,
0xde
,
0xbd
,
0x31
,
0x94
,
0x01
,
0xb0
,
0x1a
,
0xb7
,
0xf3
,
0x50
,
0xfb
,
0x0e
,
0x9e
,
0xe4
,
0x80
,
0x6f
,
0x2a
,
0x57
,
0xf7
,
0x58
,
0xdf
,
0x58
,
0xfb
,
0xce
,
0xd8
,
0xf5
,
0x3c
,
0x31
,
0x0a
,
0xe3
,
0xf1
,
0xbd
,
0x7f
,
0x29
,
0xaf
,
0xbb
,
0xcb
,
0x36
,
0xb1
,
0x8a
,
0x56
,
0x7a
,
0x25
,
0xf7
,
0x12
,
0xf6
,
0x35
,
0x34
,
0x63
,
0xfd
,
0x69
,
0x20
,
0xf4
,
0xd9
,
0xba
,
0xcb
,
0x7d
,
0x05
,
0x0f
,
0x0d
,
0x78
,
0x19
,
0x8b
,
0xe5
,
0x1e
,
0xeb
,
0x6b
,
0x2b
,
0x56
,
0xde
,
0x16
,
0x84
,
0x92
,
0x58
,
0xa4
,
0x6a
,
0xc3
,
0xbf
,
0x6a
,
0xe0
,
0xd0
,
0xaf
,
0x69
,
0xf6
,
0x0d
,
0x40
,
0x4a
,
0xa7
,
0x10
,
0x5e
,
0xc2
,
0xbe
,
0x83
,
0x7a
,
0xac
,
0x3e
,
0x35
,
0x50
,
0x3d
,
0xde
,
0x00
,
0x2a
,
0xd6
,
0x38
,
0xac
,
0x7a
,
0x81
,
0x3c
,
0x49
,
0x7f
,
0x35
,
0xfc
,
0x18
,
0x24
,
0xfe
,
0x2c
,
0xb8
,
0x5e
,
0x12
,
0x7b
,
0xa9
,
0x5a
,
0xff
,
0xcf
,
0x0a
,
0x38
,
0xf4
,
0x9f
,
0x01
,
0xfb
,
0x1e
,
0x20
,
0x6b
,
0x59
,
0xb9
,
0x8f
,
0xd8
,
0x30
,
0xf7
,
0x8b
,
0xa1
,
0x6a
,
0x93
,
0xac
,
0x3a
,
0x93
,
0xde
,
0xa5
,
0xc7
,
0x76
,
0x56
,
0xbe
,
0xc6
,
0x9e
,
0xa6
,
0xbf
,
0x5d
,
0x7e
,
0x9d
,
0x27
,
0xc1
,
0x64
,
0x7e
,
0xb3
,
0x74
,
0x1f
,
0xf5
,
0x52
,
0x59
,
0x75
,
0xee
,
0xd4
,
0xac
,
0x17
,
0xe9
,
0xc8
,
0xde
,
0xb5
,
0x5d
,
0x56
,
0x9c
,
0x1d
,
0xb0
,
0xbe
,
0xf1
,
0xbb
,
0xa5
,
0x6c
,
0x9f
,
0x2d
,
0x3b
,
0x93
,
0xfa
,
0x52
,
0x73
,
0xb5
,
0x7c
,
0x4b
,
0x37
,
0xe8
,
0x4f
,
0x81
,
0x37
,
0xff
,
0x04
,
0x00
,
0x00
,
0xff
,
0xff
,
0x19
,
0x3c
,
0x77
,
0xc4
,
0x3d
,
0x2d
,
0x3b
,
0x77
,
0xae
,
0xb7
,
0x87
,
0x74
,
0xa6
,
0x6e
,
0x5b
,
0x57
,
0x4b
,
0xce
,
0x0e
,
0x6b
,
0xf4
,
0x10
,
0x00
,
0x00
,
0xd7
,
0xc7
,
0x8b
,
0x7f
,
0x02
,
0x00
,
0x00
,
0xff
,
0xff
,
0x64
,
0x6d
,
0x1d
,
0xe5
,
0x23
,
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.
...
...
plugin/dapp/guess/types/types.go
View file @
a8e53ba4
...
@@ -43,6 +43,7 @@ func (t *GuessType) GetTypeMap() map[string]int32 {
...
@@ -43,6 +43,7 @@ func (t *GuessType) GetTypeMap() map[string]int32 {
return
map
[
string
]
int32
{
return
map
[
string
]
int32
{
"Start"
:
GuessGameActionStart
,
"Start"
:
GuessGameActionStart
,
"Bet"
:
GuessGameActionBet
,
"Bet"
:
GuessGameActionBet
,
"StopBet"
:
GuessGameActionStopBet
,
"Abort"
:
GuessGameActionAbort
,
"Abort"
:
GuessGameActionAbort
,
"Publish"
:
GuessGameActionPublish
,
"Publish"
:
GuessGameActionPublish
,
"Query"
:
GuessGameActionQuery
,
"Query"
:
GuessGameActionQuery
,
...
@@ -153,6 +154,32 @@ func CreateRawGuessBetTx(parm *GuessGameBet) (*types.Transaction, error) {
...
@@ -153,6 +154,32 @@ func CreateRawGuessBetTx(parm *GuessGameBet) (*types.Transaction, error) {
return
tx
,
nil
return
tx
,
nil
}
}
// CreateRawGuessStopBetTx method
func
CreateRawGuessBetTx
(
parm
*
GuessGameStopBet
)
(
*
types
.
Transaction
,
error
)
{
if
parm
==
nil
{
llog
.
Error
(
"CreateRawGuessBet"
,
"parm"
,
parm
)
return
nil
,
types
.
ErrInvalidParam
}
val
:=
&
GuessGameAction
{
Ty
:
GuessGameActionStopBet
,
Value
:
&
GuessGameAction_StopBet
{
StopBet
:
parm
},
}
name
:=
types
.
ExecName
(
GuessX
)
tx
:=
&
types
.
Transaction
{
Execer
:
[]
byte
(
types
.
ExecName
(
GuessX
)),
Payload
:
types
.
Encode
(
val
),
Fee
:
parm
.
Fee
,
To
:
address
.
ExecAddress
(
name
),
}
tx
,
err
:=
types
.
FormatTx
(
name
,
tx
)
if
err
!=
nil
{
return
nil
,
err
}
return
tx
,
nil
}
// CreateRawGuessPublishTx method
// CreateRawGuessPublishTx method
func
CreateRawGuessPublishTx
(
parm
*
GuessGamePublish
)
(
*
types
.
Transaction
,
error
)
{
func
CreateRawGuessPublishTx
(
parm
*
GuessGamePublish
)
(
*
types
.
Transaction
,
error
)
{
if
parm
==
nil
{
if
parm
==
nil
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment