Commit 19bb29d0 authored by 张振华's avatar 张振华

modify

parent 043707db
......@@ -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().Uint32P("maxBetsOneTime", "m", 10000, "max bets one time")
cmd.Flags().Int64P("maxBetsOneTime", "m", 10000, "max bets one time")
//cmd.MarkFlagRequired("maxBets")
cmd.Flags().Uint32P("maxBetsNumber", "n", 100000, "max bets number")
cmd.Flags().Int64P("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().GetUint32("maxBets")
maxBetsNumber, _ := cmd.Flags().GetUint32("maxBetsNumber")
maxBets, _ := cmd.Flags().GetInt64("maxBets")
maxBetsNumber, _ := cmd.Flags().GetInt64("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().Uint32P("betsNumber", "b", 1, "bets number for one option in a guess game")
cmd.Flags().Int64P("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().GetUint32("betsNumber")
betsNumber, _ := cmd.Flags().GetInt64("betsNumber")
params := &pkt.GuessBetTxReq{
GameId: gameId,
......
......@@ -25,8 +25,8 @@ const (
ListASC = int32(1)
DefaultCount = int32(20) //默认一次取多少条记录
MaxBetsOneTime = 10000 //一次最多下多少注
MaxBetsNumber = 1000000 //一局游戏最多接受多少注
MaxBetsOneTime = 10000e8 //一次最多下多少注
MaxBetsNumber = 10000000e8 //一局游戏最多接受多少注
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
......
......@@ -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 {
......
This diff is collapsed.
......@@ -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"`
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment