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
19bb29d0
Commit
19bb29d0
authored
Dec 10, 2018
by
张振华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modify
parent
043707db
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
31 additions
and
30 deletions
+31
-30
game.go
plugin/dapp/guess/commands/game.go
+6
-6
guessdb.go
plugin/dapp/guess/executor/guessdb.go
+8
-7
guess.proto
plugin/dapp/guess/proto/guess.proto
+14
-14
guess.pb.go
plugin/dapp/guess/types/guess.pb.go
+0
-0
tx.go
plugin/dapp/guess/types/tx.go
+3
-3
No files found.
plugin/dapp/guess/commands/game.go
View file @
19bb29d0
...
...
@@ -54,10 +54,10 @@ func addGuessStartFlags(cmd *cobra.Command) {
cmd
.
Flags
()
.
StringP
(
"symbol"
,
"s"
,
"bty"
,
"token symbol"
)
cmd
.
Flags
()
.
StringP
(
"exec"
,
"e"
,
"coins"
,
"excutor name"
)
cmd
.
Flags
()
.
Uint32
P
(
"maxBetsOneTime"
,
"m"
,
10000
,
"max bets one time"
)
cmd
.
Flags
()
.
Int64
P
(
"maxBetsOneTime"
,
"m"
,
10000
,
"max bets one time"
)
//cmd.MarkFlagRequired("maxBets")
cmd
.
Flags
()
.
Uint32
P
(
"maxBetsNumber"
,
"n"
,
100000
,
"max bets number"
)
cmd
.
Flags
()
.
Int64
P
(
"maxBetsNumber"
,
"n"
,
100000
,
"max bets number"
)
//cmd.MarkFlagRequired("maxBetsNumber")
cmd
.
Flags
()
.
Int64P
(
"devFeeFactor"
,
"d"
,
0
,
"dev fee factor, unit: 1/1000"
)
...
...
@@ -81,8 +81,8 @@ func guessStart(cmd *cobra.Command, args []string) {
maxBetHeight
,
_
:=
cmd
.
Flags
()
.
GetInt64
(
"maxBetHeight"
)
symbol
,
_
:=
cmd
.
Flags
()
.
GetString
(
"symbol"
)
exec
,
_
:=
cmd
.
Flags
()
.
GetString
(
"exec"
)
maxBets
,
_
:=
cmd
.
Flags
()
.
Get
Uint32
(
"maxBets"
)
maxBetsNumber
,
_
:=
cmd
.
Flags
()
.
Get
Uint32
(
"maxBetsNumber"
)
maxBets
,
_
:=
cmd
.
Flags
()
.
Get
Int64
(
"maxBets"
)
maxBetsNumber
,
_
:=
cmd
.
Flags
()
.
Get
Int64
(
"maxBetsNumber"
)
devFeeFactor
,
_
:=
cmd
.
Flags
()
.
GetInt64
(
"devFeeFactor"
)
devFeeAddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"devFeeAddr"
)
platFeeFactor
,
_
:=
cmd
.
Flags
()
.
GetInt64
(
"platFeeFactor"
)
...
...
@@ -127,7 +127,7 @@ func addGuessBetFlags(cmd *cobra.Command) {
cmd
.
MarkFlagRequired
(
"gameId"
)
cmd
.
Flags
()
.
StringP
(
"option"
,
"o"
,
""
,
"option"
)
cmd
.
MarkFlagRequired
(
"option"
)
cmd
.
Flags
()
.
Uint32
P
(
"betsNumber"
,
"b"
,
1
,
"bets number for one option in a guess game"
)
cmd
.
Flags
()
.
Int64
P
(
"betsNumber"
,
"b"
,
1
,
"bets number for one option in a guess game"
)
cmd
.
MarkFlagRequired
(
"betsNumber"
)
}
...
...
@@ -135,7 +135,7 @@ func guessBet(cmd *cobra.Command, args []string) {
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
gameId
,
_
:=
cmd
.
Flags
()
.
GetString
(
"gameId"
)
option
,
_
:=
cmd
.
Flags
()
.
GetString
(
"option"
)
betsNumber
,
_
:=
cmd
.
Flags
()
.
Get
Uint32
(
"betsNumber"
)
betsNumber
,
_
:=
cmd
.
Flags
()
.
Get
Int64
(
"betsNumber"
)
params
:=
&
pkt
.
GuessBetTxReq
{
GameId
:
gameId
,
...
...
plugin/dapp/guess/executor/guessdb.go
View file @
19bb29d0
...
...
@@ -25,8 +25,8 @@ const (
ListASC
=
int32
(
1
)
DefaultCount
=
int32
(
20
)
//默认一次取多少条记录
MaxBetsOneTime
=
10000
//一次最多下多少注
MaxBetsNumber
=
1000000
//一局游戏最多接受多少注
MaxBetsOneTime
=
10000
e8
//一次最多下多少注
MaxBetsNumber
=
1000000
0e8
//一局游戏最多接受多少注
MaxBetHeight
=
10000000000
//最大区块高度
MinBetBlockNum
=
720
//从创建游戏开始,一局游戏最少的可下注区块数量
...
...
@@ -312,6 +312,7 @@ func (action *Action) GetReceiptLog(game *pkt.GuessGame, statusChange bool) *typ
r
.
PreStatus
=
game
.
PreStatus
r
.
StatusChange
=
statusChange
r
.
PreIndex
=
game
.
PreIndex
r
.
Category
=
game
.
Category
log
.
Log
=
types
.
Encode
(
r
)
return
log
}
...
...
@@ -491,7 +492,7 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
}
// 检查余额账户余额
checkValue
:=
int64
(
pbBet
.
BetsNum
)
checkValue
:=
pbBet
.
BetsNum
if
!
action
.
CheckExecAccountBalance
(
action
.
fromaddr
,
checkValue
,
0
)
{
logger
.
Error
(
"GameBet"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"id"
,
pbBet
.
GetGameId
(),
"err"
,
types
.
ErrNoBalance
)
...
...
@@ -597,7 +598,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
if
game
.
AdminAddr
!=
action
.
fromaddr
{
logger
.
Error
(
"GamePublish"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"fromAddr is not adminAddr"
,
action
.
fromaddr
,
"adminAddr"
,
game
.
AdminAddr
)
return
nil
,
types
.
ErrInvalidParam
return
nil
,
pkt
.
ErrNoPrivilege
}
if
game
.
Status
!=
pkt
.
GuessGameStatusStart
&&
game
.
Status
!=
pkt
.
GuessGameStatusBet
&&
game
.
Status
!=
pkt
.
GuessGameStatusStopBet
{
...
...
@@ -640,7 +641,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
action
.
ChangeStatus
(
game
,
pkt
.
GuessGameStatusPublish
)
//计算竞猜正确的筹码总数
totalBetsNumber
:=
game
.
BetStat
.
TotalBetsNumber
winBetsNumber
:=
uint32
(
0
)
winBetsNumber
:=
int64
(
0
)
for
j
:=
0
;
j
<
len
(
game
.
BetStat
.
Items
);
j
++
{
if
game
.
BetStat
.
Items
[
j
]
.
Option
==
game
.
Result
{
winBetsNumber
=
game
.
BetStat
.
Items
[
j
]
.
BetsNumber
...
...
@@ -687,11 +688,11 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
}
//再遍历赢家,按照投注占比分配所有筹码
winValue
:=
int64
(
totalBetsNumber
)
-
devFee
-
platFee
winValue
:=
totalBetsNumber
-
devFee
-
platFee
for
j
:=
0
;
j
<
len
(
game
.
Plays
);
j
++
{
player
:=
game
.
Plays
[
j
]
if
player
.
Bet
.
Option
==
game
.
Result
{
value
:=
int64
(
player
.
Bet
.
BetsNumber
*
uint32
(
winValue
)
/
winBetsNumber
)
value
:=
int64
(
player
.
Bet
.
BetsNumber
*
winValue
/
winBetsNumber
)
receipt
,
err
:=
action
.
coinsAccount
.
ExecTransfer
(
game
.
AdminAddr
,
player
.
Addr
,
action
.
execaddr
,
value
)
if
err
!=
nil
{
action
.
coinsAccount
.
ExecFrozen
(
player
.
Addr
,
action
.
execaddr
,
value
)
// rollback
...
...
plugin/dapp/guess/proto/guess.proto
View file @
19bb29d0
...
...
@@ -18,8 +18,8 @@ message GuessGame {
int64
maxBetHeight
=
10
;
//截止下注的块高
string
symbol
=
11
;
//bty或者具体token
string
exec
=
12
;
//coins或者token
uint32
maxBetsOneTime
=
14
;
//单次可以下多少注,默认100
uint32
maxBetsNumber
=
15
;
//最多可以下多少注
int64
maxBetsOneTime
=
14
;
//单次可以下多少注,默认100
int64
maxBetsNumber
=
15
;
//最多可以下多少注
int64
devFeeFactor
=
16
;
//开发者抽成比例
string
devFeeAddr
=
17
;
//开发者地址
int64
platFeeFactor
=
18
;
//平台抽成比例
...
...
@@ -27,7 +27,7 @@ message GuessGame {
string
expire
=
20
;
//游戏过期时间
int64
expireHeight
=
21
;
//游戏过期区块高度
string
adminAddr
=
22
;
//游戏创建者地址,只有该地址可以开奖
uint32
betsNumber
=
23
;
//已下注数,如果数量达到maxBetsNumber,则不允许再下注
int64
betsNumber
=
23
;
//已下注数,如果数量达到maxBetsNumber,则不允许再下注
repeated
GuessPlayer
plays
=
24
;
//参与游戏下注的玩家投注信息
string
result
=
25
;
//公布的中奖结果
GuessBetStat
betStat
=
26
;
...
...
@@ -43,7 +43,7 @@ message GuessPlayer {
message
GuessBet
{
string
option
=
1
;
uint32
betsNumber
=
2
;
int64
betsNumber
=
2
;
bool
isWinner
=
3
;
int64
profit
=
4
;
int64
index
=
5
;
...
...
@@ -51,15 +51,15 @@ message GuessBet {
}
message
GuessBetStat
{
uint32
totalBetTimes
=
1
;
uint32
totalBetsNumber
=
2
;
int64
totalBetTimes
=
1
;
int64
totalBetsNumber
=
2
;
repeated
GuessBetStatItem
items
=
3
;
}
message
GuessBetStatItem
{
string
option
=
1
;
uint32
betsNumber
=
2
;
uint32
betsTimes
=
3
;
int64
betsNumber
=
2
;
int64
betsTimes
=
3
;
}
//游戏状态
...
...
@@ -84,8 +84,8 @@ message GuessGameStart{
int64
maxBetHeight
=
5
;
string
symbol
=
6
;
string
exec
=
7
;
uint32
maxBetsOneTime
=
9
;
uint32
maxBetsNumber
=
10
;
int64
maxBetsOneTime
=
9
;
int64
maxBetsNumber
=
10
;
int64
devFeeFactor
=
11
;
//开发者抽成比例
string
devFeeAddr
=
12
;
//开发者地址
int64
platFeeFactor
=
13
;
//平台抽成比例
...
...
@@ -99,7 +99,7 @@ message GuessGameStart{
message
GuessGameBet
{
string
gameId
=
1
;
string
option
=
2
;
uint32
betsNum
=
3
;
int64
betsNum
=
3
;
}
//游戏停止下注
...
...
@@ -166,8 +166,8 @@ message GuessStartTxReq {
int64
maxBetHeight
=
5
;
string
symbol
=
6
;
string
exec
=
7
;
uint32
maxBetsOneTime
=
8
;
uint32
maxBetsNumber
=
9
;
int64
maxBetsOneTime
=
8
;
int64
maxBetsNumber
=
9
;
int64
devFeeFactor
=
10
;
string
devFeeAddr
=
11
;
int64
platFeeFactor
=
12
;
...
...
@@ -180,7 +180,7 @@ message GuessStartTxReq {
message
GuessBetTxReq
{
string
gameId
=
1
;
string
option
=
2
;
uint32
bets
=
3
;
int64
bets
=
3
;
}
message
GuessAbortTxReq
{
...
...
plugin/dapp/guess/types/guess.pb.go
View file @
19bb29d0
This diff is collapsed.
Click to expand it.
plugin/dapp/guess/types/tx.go
View file @
19bb29d0
...
...
@@ -12,8 +12,8 @@ type GuessGameStartTx struct {
MaxBetHeight
int64
`json:"maxHeight,omitempty"`
Symbol
string
`json:"symbol,omitempty"`
Exec
string
`json:"exec,omitempty"`
MaxBets
uint32
`json:"maxBets,omitempty"`
MaxBetsNumber
uint32
`json:"maxBetsNumber,omitempty"`
MaxBets
int64
`json:"maxBets,omitempty"`
MaxBetsNumber
int64
`json:"maxBetsNumber,omitempty"`
DevFeeFactor
int64
`json:"devFeeFactor,omitempty"`
DevFeeAddr
string
`json:"devFeeAddr,omitempty"`
PlatFeeFactor
int64
`json:"platFeeFactor,omitempty"`
...
...
@@ -26,7 +26,7 @@ type GuessGameStartTx struct {
type
GuessGameBetTx
struct
{
GameId
string
`json:"gameId,omitempty"`
Option
string
`json:"option,omitempty"`
BetsNum
uint32
`json:"betsNum,omitempty"`
BetsNum
int64
`json:"betsNum,omitempty"`
Fee
int64
`json:"fee,omitempty"`
}
...
...
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