Commit 8b29c90a authored by wjx@disanbo.com's avatar wjx@disanbo.com Committed by vipwzw

update lottery

parent 8222696c
...@@ -9,59 +9,10 @@ import ( ...@@ -9,59 +9,10 @@ import (
"time" "time"
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
pty "github.com/33cn/plugin/plugin/dapp/lottery/types"
tickettypes "github.com/33cn/plugin/plugin/dapp/ticket/types"
) )
const retryNum = 10 const retryNum = 10
//different impl on main chain and parachain
func (action *Action) getTxActions(height int64, blockNum int64) ([]*tickettypes.TicketAction, error) {
var txActions []*tickettypes.TicketAction
llog.Error("getTxActions", "height", height, "blockNum", blockNum)
if !types.IsPara() {
req := &types.ReqBlocks{Start: height - blockNum + 1, End: height, IsDetail: false, Pid: []string{""}}
blockDetails, err := action.api.GetBlocks(req)
if err != nil {
llog.Error("getTxActions", "height", height, "blockNum", blockNum, "err", err)
return txActions, err
}
for _, block := range blockDetails.Items {
llog.Debug("getTxActions", "blockHeight", block.Block.Height, "blockhash", block.Block.Hash())
ticketAction, err := action.getMinerTx(block.Block)
if err != nil {
return txActions, err
}
txActions = append(txActions, ticketAction)
}
return txActions, nil
}
//block height on main
mainHeight := action.GetMainHeightByTxHash(action.txhash)
if mainHeight < 0 {
llog.Error("LotteryCreate", "mainHeight", mainHeight)
return nil, pty.ErrLotteryStatus
}
blockDetails, err := action.GetBlocksOnMain(mainHeight-blockNum, mainHeight-1)
if err != nil {
llog.Error("LotteryCreate", "mainHeight", mainHeight)
return nil, pty.ErrLotteryStatus
}
for _, block := range blockDetails.Items {
ticketAction, err := action.getMinerTx(block.Block)
if err != nil {
return txActions, err
}
txActions = append(txActions, ticketAction)
}
return txActions, nil
}
// GetMainHeightByTxHash get Block height // GetMainHeightByTxHash get Block height
func (action *Action) GetMainHeightByTxHash(txHash []byte) int64 { func (action *Action) GetMainHeightByTxHash(txHash []byte) int64 {
for i := 0; i < retryNum; i++ { for i := 0; i < retryNum; i++ {
...@@ -76,58 +27,3 @@ func (action *Action) GetMainHeightByTxHash(txHash []byte) int64 { ...@@ -76,58 +27,3 @@ func (action *Action) GetMainHeightByTxHash(txHash []byte) int64 {
return -1 return -1
} }
// GetBlocksOnMain get Block from main chain
func (action *Action) GetBlocksOnMain(start int64, end int64) (*types.BlockDetails, error) {
req := &types.ReqBlocks{Start: start, End: end, IsDetail: false, Pid: []string{""}}
getBlockSucc := false
var reply *types.Reply
var err error
for i := 0; i < retryNum; i++ {
reply, err = action.grpcClient.GetBlocks(context.Background(), req)
if err != nil {
llog.Error("GetBlocksOnMain", "start", start, "end", end, "err", err)
time.Sleep(time.Second)
} else {
getBlockSucc = true
break
}
}
if !getBlockSucc {
return nil, err
}
var blockDetails types.BlockDetails
err = types.Decode(reply.Msg, &blockDetails)
if err != nil {
llog.Error("GetBlocksOnMain", "err", err)
return nil, err
}
return &blockDetails, nil
}
func (action *Action) getMinerTx(current *types.Block) (*tickettypes.TicketAction, error) {
//检查第一个笔交易的execs, 以及执行状态
if len(current.Txs) == 0 {
return nil, types.ErrEmptyTx
}
baseTx := current.Txs[0]
//判断交易类型和执行情况
var ticketAction tickettypes.TicketAction
err := types.Decode(baseTx.GetPayload(), &ticketAction)
if err != nil {
return nil, err
}
if ticketAction.GetTy() != tickettypes.TicketActionMiner {
return nil, types.ErrCoinBaseTxType
}
//判断交易执行是否OK
if ticketAction.GetMiner() == nil {
return nil, tickettypes.ErrEmptyMinerTx
}
return &ticketAction, nil
}
...@@ -5,8 +5,7 @@ ...@@ -5,8 +5,7 @@
package executor package executor
import ( import (
"fmt" "context"
"sort"
"strconv" "strconv"
"github.com/33cn/chain33/account" "github.com/33cn/chain33/account"
...@@ -20,10 +19,10 @@ import ( ...@@ -20,10 +19,10 @@ import (
) )
const ( const (
exciting = 100000 / 2 exciting = 100000
lucky = 1000 / 2 lucky = 1000
happy = 100 / 2 happy = 100
notbad = 10 / 2 notbad = 10
) )
const ( const (
...@@ -51,13 +50,22 @@ const ( ...@@ -51,13 +50,22 @@ const (
OneStar = 1 OneStar = 1
) )
const luckyNumMol = 100000 const (
const decimal = 100000000 //1e8 luckyNumMol = 100000
const randMolNum = 5 decimal = 100000000 //1e8
const grpcRecSize int = 5 * 30 * 1024 * 1024 randMolNum = 5
const blockNum = 5 grpcRecSize int = 5 * 30 * 1024 * 1024
blockNum = 5
)
const (
maxRatio = 100
rewardBase = 1000
devRewardAddr = "1D6RFZNp2rh6QdbcZ1d7RWuBUz61We6SD7"
opRewardAddr = "1PHtChNt3UcfssR7v7trKSk3WJtAWjKjjX"
)
// LotteryDB struct // LotteryDB def
type LotteryDB struct { type LotteryDB struct {
pty.Lottery pty.Lottery
} }
...@@ -127,6 +135,9 @@ func NewLotteryAction(l *Lottery, tx *types.Transaction, index int) *Action { ...@@ -127,6 +135,9 @@ func NewLotteryAction(l *Lottery, tx *types.Transaction, index int) *Action {
fromaddr := tx.From() fromaddr := tx.From()
msgRecvOp := grpc.WithMaxMsgSize(grpcRecSize) msgRecvOp := grpc.WithMaxMsgSize(grpcRecSize)
if types.IsPara() && cfg.ParaRemoteGrpcClient == "" {
panic("ParaRemoteGrpcClient error")
}
conn, err := grpc.Dial(cfg.ParaRemoteGrpcClient, grpc.WithInsecure(), msgRecvOp) conn, err := grpc.Dial(cfg.ParaRemoteGrpcClient, grpc.WithInsecure(), msgRecvOp)
if err != nil { if err != nil {
...@@ -187,6 +198,9 @@ func (action *Action) LotteryCreate(create *pty.LotteryCreate) (*types.Receipt, ...@@ -187,6 +198,9 @@ func (action *Action) LotteryCreate(create *pty.LotteryCreate) (*types.Receipt,
lotteryID := common.ToHex(action.txhash) lotteryID := common.ToHex(action.txhash)
if create.OpRewardRatio > maxRatio || create.DevRewardRatio > maxRatio || create.OpRewardRatio < 0 || create.DevRewardRatio < 0 {
return nil, pty.ErrRewardFactor
}
if !isRightCreator(action.fromaddr, action.db, false) { if !isRightCreator(action.fromaddr, action.db, false) {
return nil, pty.ErrNoPrivilege return nil, pty.ErrNoPrivilege
} }
...@@ -212,6 +226,9 @@ func (action *Action) LotteryCreate(create *pty.LotteryCreate) (*types.Receipt, ...@@ -212,6 +226,9 @@ func (action *Action) LotteryCreate(create *pty.LotteryCreate) (*types.Receipt,
lott := NewLotteryDB(lotteryID, create.GetPurBlockNum(), lott := NewLotteryDB(lotteryID, create.GetPurBlockNum(),
create.GetDrawBlockNum(), action.height, action.fromaddr) create.GetDrawBlockNum(), action.height, action.fromaddr)
lott.OpRewardRatio = create.OpRewardRatio
lott.DevRewardRatio = create.DevRewardRatio
llog.Debug("LotteryCreate", "OpRewardRatio", lott.OpRewardRatio, "DevRewardRatio", lott.DevRewardRatio)
if types.IsPara() { if types.IsPara() {
mainHeight := action.GetMainHeightByTxHash(action.txhash) mainHeight := action.GetMainHeightByTxHash(action.txhash)
if mainHeight < 0 { if mainHeight < 0 {
...@@ -310,11 +327,6 @@ func (action *Action) LotteryBuy(buy *pty.LotteryBuy) (*types.Receipt, error) { ...@@ -310,11 +327,6 @@ func (action *Action) LotteryBuy(buy *pty.LotteryBuy) (*types.Receipt, error) {
return nil, pty.ErrLotteryBuyNumber return nil, pty.ErrLotteryBuyNumber
} }
if lott.Records == nil {
llog.Debug("LotteryBuy records init")
lott.Records = make(map[string]*pty.PurchaseRecords)
}
newRecord := &pty.PurchaseRecord{Amount: buy.GetAmount(), Number: buy.GetNumber(), Index: action.GetIndex(), Way: buy.GetWay()} newRecord := &pty.PurchaseRecord{Amount: buy.GetAmount(), Number: buy.GetNumber(), Index: action.GetIndex(), Way: buy.GetWay()}
llog.Debug("LotteryBuy", "amount", buy.GetAmount(), "number", buy.GetNumber()) llog.Debug("LotteryBuy", "amount", buy.GetAmount(), "number", buy.GetNumber())
...@@ -340,18 +352,25 @@ func (action *Action) LotteryBuy(buy *pty.LotteryBuy) (*types.Receipt, error) { ...@@ -340,18 +352,25 @@ func (action *Action) LotteryBuy(buy *pty.LotteryBuy) (*types.Receipt, error) {
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
lott.Fund += buy.GetAmount() lott.Fund += buy.GetAmount()
lott.TotalPurchasedTxNum++
if record, ok := lott.Records[action.fromaddr]; ok { newAddr := true
record.Record = append(record.Record, newRecord) for i := range lott.PurRecords {
} else { if action.fromaddr == lott.PurRecords[i].Addr {
lott.PurRecords[i].Record = append(lott.PurRecords[i].Record, newRecord)
lott.PurRecords[i].AmountOneRound += buy.Amount
newAddr = false
break
}
}
if newAddr {
initrecord := &pty.PurchaseRecords{} initrecord := &pty.PurchaseRecords{}
initrecord.Record = append(initrecord.Record, newRecord) initrecord.Record = append(initrecord.Record, newRecord)
initrecord.FundWin = 0 initrecord.FundWin = 0
initrecord.AmountOneRound = 0 initrecord.AmountOneRound = buy.Amount
lott.Records[action.fromaddr] = initrecord initrecord.Addr = action.fromaddr
lott.PurRecords = append(lott.PurRecords, initrecord)
} }
lott.Records[action.fromaddr].AmountOneRound += buy.Amount
lott.TotalPurchasedTxNum++
lott.Save(action.db) lott.Save(action.db)
kv = append(kv, lott.GetKVSet()...) kv = append(kv, lott.GetKVSet()...)
...@@ -364,8 +383,6 @@ func (action *Action) LotteryBuy(buy *pty.LotteryBuy) (*types.Receipt, error) { ...@@ -364,8 +383,6 @@ func (action *Action) LotteryBuy(buy *pty.LotteryBuy) (*types.Receipt, error) {
} }
// LotteryDraw Action // LotteryDraw Action
// 1.Anyone who buy a ticket
// 2.Creator
func (action *Action) LotteryDraw(draw *pty.LotteryDraw) (*types.Receipt, error) { func (action *Action) LotteryDraw(draw *pty.LotteryDraw) (*types.Receipt, error) {
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -404,10 +421,10 @@ func (action *Action) LotteryDraw(draw *pty.LotteryDraw) (*types.Receipt, error) ...@@ -404,10 +421,10 @@ func (action *Action) LotteryDraw(draw *pty.LotteryDraw) (*types.Receipt, error)
} }
if action.fromaddr != lott.GetCreateAddr() { if action.fromaddr != lott.GetCreateAddr() {
if _, ok := lott.Records[action.fromaddr]; !ok { //if _, ok := lott.Records[action.fromaddr]; !ok {
llog.Error("LotteryDraw", "action.fromaddr", action.fromaddr) llog.Error("LotteryDraw", "action.fromaddr", action.fromaddr)
return nil, pty.ErrLotteryDrawActionInvalid return nil, pty.ErrLotteryDrawActionInvalid
} //}
} }
rec, updateInfo, err := action.checkDraw(lott) rec, updateInfo, err := action.checkDraw(lott)
...@@ -454,13 +471,9 @@ func (action *Action) LotteryClose(draw *pty.LotteryClose) (*types.Receipt, erro ...@@ -454,13 +471,9 @@ func (action *Action) LotteryClose(draw *pty.LotteryClose) (*types.Receipt, erro
return nil, pty.ErrLotteryStatus return nil, pty.ErrLotteryStatus
} }
addrkeys := make([]string, len(lott.Records))
i := 0
var totalReturn int64 var totalReturn int64
for addr := range lott.Records { for _, recs := range lott.PurRecords {
totalReturn += lott.Records[addr].AmountOneRound totalReturn += recs.AmountOneRound
addrkeys[i] = addr
i++
} }
llog.Debug("LotteryClose", "totalReturn", totalReturn) llog.Debug("LotteryClose", "totalReturn", totalReturn)
...@@ -470,12 +483,10 @@ func (action *Action) LotteryClose(draw *pty.LotteryClose) (*types.Receipt, erro ...@@ -470,12 +483,10 @@ func (action *Action) LotteryClose(draw *pty.LotteryClose) (*types.Receipt, erro
return nil, pty.ErrLotteryFundNotEnough return nil, pty.ErrLotteryFundNotEnough
} }
sort.Strings(addrkeys) for _, recs := range lott.PurRecords {
if recs.AmountOneRound > 0 {
for _, addr := range addrkeys { receipt, err := action.coinsAccount.ExecTransferFrozen(lott.CreateAddr, recs.Addr, action.execaddr,
if lott.Records[addr].AmountOneRound > 0 { decimal*recs.AmountOneRound)
receipt, err := action.coinsAccount.ExecTransferFrozen(lott.CreateAddr, addr, action.execaddr,
decimal*lott.Records[addr].AmountOneRound)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -486,11 +497,10 @@ func (action *Action) LotteryClose(draw *pty.LotteryClose) (*types.Receipt, erro ...@@ -486,11 +497,10 @@ func (action *Action) LotteryClose(draw *pty.LotteryClose) (*types.Receipt, erro
} }
} }
for addr := range lott.Records { for i := range lott.PurRecords {
lott.Records[addr].Record = lott.Records[addr].Record[0:0] lott.PurRecords[i].Record = lott.PurRecords[i].Record[0:0]
delete(lott.Records, addr)
} }
lott.PurRecords = lott.PurRecords[0:0]
lott.TotalPurchasedTxNum = 0 lott.TotalPurchasedTxNum = 0
llog.Debug("LotteryClose switch to closestate") llog.Debug("LotteryClose switch to closestate")
lott.Status = pty.LotteryClosed lott.Status = pty.LotteryClosed
...@@ -504,66 +514,43 @@ func (action *Action) LotteryClose(draw *pty.LotteryClose) (*types.Receipt, erro ...@@ -504,66 +514,43 @@ func (action *Action) LotteryClose(draw *pty.LotteryClose) (*types.Receipt, erro
return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil
} }
// GetCalculableHash return hash for calculation
func (action *Action) GetCalculableHash(beg, end int64, randMolNum int64) ([]byte, error) {
//通过某个区间计算modify
timeSource := int64(0)
total := int64(0)
//last := []byte("last")
for i := beg; i < end; i += randMolNum {
req := &types.ReqBlocks{Start: i, End: i, IsDetail: false, Pid: []string{""}}
blocks, err := action.api.GetBlocks(req)
if err != nil {
return []byte{}, err
}
block := blocks.Items[0].Block
timeSource += block.BlockTime
total += block.BlockTime
}
//for main chain, 5 latest block
//for para chain, 5 latest block -- 5 sequence main block
txActions, err := action.getTxActions(end, blockNum)
if err != nil {
return nil, err
}
//modify, bits, id
var modifies []byte
var bits uint32
var ticketIds string
for _, ticketAction := range txActions {
llog.Debug("GetModify", "modify", ticketAction.GetMiner().GetModify(), "bits", ticketAction.GetMiner().GetBits(), "ticketId", ticketAction.GetMiner().GetTicketId())
modifies = append(modifies, ticketAction.GetMiner().GetModify()...)
bits += ticketAction.GetMiner().GetBits()
ticketIds += ticketAction.GetMiner().GetTicketId()
}
newmodify := fmt.Sprintf("%s:%s:%d:%d", string(modifies), ticketIds, total, bits)
modify := common.Sha256([]byte(newmodify))
return modify, nil
}
//random used for verification in solo //random used for verification in solo
func (action *Action) findLuckyNum(isSolo bool, lott *LotteryDB) int64 { func (action *Action) findLuckyNum(isSolo bool, lott *LotteryDB) int64 {
var num int64 var num int64
var msg types.Message
var err error
var hash []byte
if isSolo { if isSolo {
//used for internal verification //used for internal verfication
num = 12345 num = 12345
} else { } else {
randMolNum := (lott.TotalPurchasedTxNum+action.height-lott.LastTransToPurState)%3 + 2 //3~5 //发消息给randnum模块
//在主链上,当前高度查询不到,如果要保证区块个数,高度传入action.height-1
modify, err := action.GetCalculableHash(lott.LastTransToPurState, action.height-1, randMolNum) llog.Debug("findLuckyNum on randnum module")
llog.Error("findLuckyNum", "begin", lott.LastTransToPurState, "end", action.height-1, "randMolNum", randMolNum) if !types.IsPara() {
req := &types.ReqRandHash{ExecName: "ticket", Height: action.height - 1, BlockNum: 5}
if err != nil { msg, err = action.api.Query("ticket", "RandNumHash", req)
llog.Error("findLuckyNum", "err", err) if err != nil {
return -1 return -1
}
reply := msg.(*types.ReplyHash)
hash = reply.Hash
} else {
mainHeight := action.GetMainHeightByTxHash(action.txhash)
if mainHeight < 0 {
llog.Error("findLuckyNum", "mainHeight", mainHeight)
return -1
}
req := &types.ReqRandHash{ExecName: "ticket", Height: mainHeight, BlockNum: 5}
reply, err := action.grpcClient.QueryRandNum(context.Background(), req)
if err != nil {
return -1
}
hash = reply.Hash
} }
baseNum, err := strconv.ParseUint(common.ToHex(modify[0:4]), 0, 64) baseNum, err := strconv.ParseUint(common.ToHex(hash[0:4]), 0, 64)
llog.Debug("findLuckyNum", "baseNum", baseNum)
if err != nil { if err != nil {
llog.Error("findLuckyNum", "err", err) llog.Error("findLuckyNum", "err", err)
return -1 return -1
...@@ -589,91 +576,101 @@ func checkFundAmount(luckynum int64, guessnum int64, way int64) (int64, int64) { ...@@ -589,91 +576,101 @@ func checkFundAmount(luckynum int64, guessnum int64, way int64) (int64, int64) {
} }
func (action *Action) checkDraw(lott *LotteryDB) (*types.Receipt, *pty.LotteryUpdateBuyInfo, error) { func (action *Action) checkDraw(lott *LotteryDB) (*types.Receipt, *pty.LotteryUpdateBuyInfo, error) {
llog.Debug("checkDraw")
luckynum := action.findLuckyNum(false, lott) luckynum := action.findLuckyNum(false, lott)
if luckynum < 0 || luckynum >= luckyNumMol { if luckynum < 0 || luckynum >= luckyNumMol {
return nil, nil, pty.ErrLotteryErrLuckyNum return nil, nil, pty.ErrLotteryErrLuckyNum
} }
llog.Error("checkDraw", "luckynum", luckynum) llog.Debug("checkDraw", "luckynum", luckynum)
//var receipt *types.Receipt
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kv []*types.KeyValue var kv []*types.KeyValue
//calculate fund for all participant showed their number
var updateInfo pty.LotteryUpdateBuyInfo var updateInfo pty.LotteryUpdateBuyInfo
updateInfo.BuyInfo = make(map[string]*pty.LotteryUpdateRecs)
var tempFund int64 var tempFund int64
var totalFund int64 var totalFund int64
addrkeys := make([]string, len(lott.Records))
i := 0 updateInfo.BuyInfo = make(map[string]*pty.LotteryUpdateRecs)
for addr := range lott.Records {
addrkeys[i] = addr for i := range lott.PurRecords {
i++ for _, rec := range lott.PurRecords[i].Record {
for _, rec := range lott.Records[addr].Record {
fund, fundType := checkFundAmount(luckynum, rec.Number, rec.Way) fund, fundType := checkFundAmount(luckynum, rec.Number, rec.Way)
if fund != 0 { if fund != 0 {
newUpdateRec := &pty.LotteryUpdateRec{Index: rec.Index, Type: fundType} newUpdateRec := &pty.LotteryUpdateRec{Index: rec.Index, Type: fundType}
if update, ok := updateInfo.BuyInfo[addr]; ok { if update, ok := updateInfo.BuyInfo[lott.PurRecords[i].Addr]; ok {
update.Records = append(update.Records, newUpdateRec) update.Records = append(update.Records, newUpdateRec)
} else { } else {
initrecord := &pty.LotteryUpdateRecs{} initrecord := &pty.LotteryUpdateRecs{}
initrecord.Records = append(initrecord.Records, newUpdateRec) initrecord.Records = append(initrecord.Records, newUpdateRec)
updateInfo.BuyInfo[addr] = initrecord updateInfo.BuyInfo[lott.PurRecords[i].Addr] = initrecord
} }
} }
tempFund = fund * rec.Amount tempFund = fund * rec.Amount
lott.Records[addr].FundWin += tempFund lott.PurRecords[i].FundWin += tempFund
totalFund += tempFund totalFund += tempFund
} }
} }
llog.Debug("checkDraw", "lenofupdate", len(updateInfo.BuyInfo)) llog.Debug("checkDraw", "lenofupdate", len(updateInfo.BuyInfo), "update", updateInfo.BuyInfo)
llog.Debug("checkDraw", "update", updateInfo.BuyInfo)
var factor float64 var factor float64
if totalFund > lott.GetFund()/2 { if totalFund > 0 {
llog.Debug("checkDraw ajust fund", "lott.Fund", lott.Fund, "totalFund", totalFund) if totalFund > lott.GetFund()/2 {
factor = (float64)(lott.GetFund()) / 2 / (float64)(totalFund) llog.Debug("checkDraw ajust fund", "lott.Fund", lott.Fund, "totalFund", totalFund)
lott.Fund = lott.Fund / 2 factor = (float64)(lott.GetFund()) / 2 / (float64)(totalFund)
} else { lott.Fund = lott.Fund / 2
factor = 1.0 } else {
lott.Fund -= totalFund factor = 1.0
} lott.Fund -= totalFund
}
llog.Debug("checkDraw", "factor", factor, "totalFund", totalFund) llog.Debug("checkDraw", "factor", factor, "totalFund", totalFund)
//protection for rollback //protection for rollback
if factor == 1.0 { if factor == 1.0 {
if !action.CheckExecAccount(lott.CreateAddr, totalFund, true) { if !action.CheckExecAccount(lott.CreateAddr, totalFund, true) {
return nil, nil, pty.ErrLotteryFundNotEnough return nil, nil, pty.ErrLotteryFundNotEnough
} }
} else { } else {
if !action.CheckExecAccount(lott.CreateAddr, decimal*lott.Fund/2+1, true) { if !action.CheckExecAccount(lott.CreateAddr, decimal*lott.Fund/2+1, true) {
return nil, nil, pty.ErrLotteryFundNotEnough return nil, nil, pty.ErrLotteryFundNotEnough
}
} }
}
sort.Strings(addrkeys) for _, recs := range lott.PurRecords {
if recs.FundWin > 0 {
fund := (recs.FundWin * int64(factor*exciting)) * decimal * (rewardBase - lott.OpRewardRatio - lott.DevRewardRatio) / (exciting * rewardBase) //any problem when too little?
llog.Debug("checkDraw", "fund", fund)
for _, addr := range addrkeys { receipt, err := action.coinsAccount.ExecTransferFrozen(lott.CreateAddr, recs.Addr, action.execaddr, fund)
fund := (lott.Records[addr].FundWin * int64(factor*exciting)) * decimal / exciting //any problem when too little? if err != nil {
llog.Debug("checkDraw", "fund", fund) return nil, nil, err
if fund > 0 { }
receipt, err := action.coinsAccount.ExecTransferFrozen(lott.CreateAddr, addr, action.execaddr, fund) kv = append(kv, receipt.KV...)
if err != nil { logs = append(logs, receipt.Logs...)
return nil, nil, err
} }
}
kv = append(kv, receipt.KV...) //op reward
logs = append(logs, receipt.Logs...) fundOp := int64(factor*decimal) * totalFund * lott.OpRewardRatio / rewardBase
receipt, err := action.coinsAccount.ExecTransferFrozen(lott.CreateAddr, opRewardAddr, action.execaddr, fundOp)
if err != nil {
return nil, nil, err
}
kv = append(kv, receipt.KV...)
logs = append(logs, receipt.Logs...)
//dev reward
fundDev := int64(factor*decimal) * totalFund * lott.DevRewardRatio / rewardBase
receipt, err = action.coinsAccount.ExecTransferFrozen(lott.CreateAddr, devRewardAddr, action.execaddr, fundDev)
if err != nil {
return nil, nil, err
} }
kv = append(kv, receipt.KV...)
logs = append(logs, receipt.Logs...)
} }
for addr := range lott.Records { for i := range lott.PurRecords {
lott.Records[addr].Record = lott.Records[addr].Record[0:0] lott.PurRecords[i].Record = lott.PurRecords[i].Record[0:0]
delete(lott.Records, addr)
} }
lott.PurRecords = lott.PurRecords[0:0]
llog.Debug("checkDraw lottery switch to drawed") llog.Debug("checkDraw lottery switch to drawed")
lott.LastTransToDrawState = action.height lott.LastTransToDrawState = action.height
...@@ -685,7 +682,7 @@ func (action *Action) checkDraw(lott *LotteryDB) (*types.Receipt, *pty.LotteryUp ...@@ -685,7 +682,7 @@ func (action *Action) checkDraw(lott *LotteryDB) (*types.Receipt, *pty.LotteryUp
if types.IsPara() { if types.IsPara() {
mainHeight := action.GetMainHeightByTxHash(action.txhash) mainHeight := action.GetMainHeightByTxHash(action.txhash)
if mainHeight < 0 { if mainHeight < 0 {
llog.Error("LotteryBuy", "mainHeight", mainHeight) llog.Error("LotteryDraw", "mainHeight", mainHeight)
return nil, nil, pty.ErrLotteryStatus return nil, nil, pty.ErrLotteryStatus
} }
lott.LastTransToDrawStateOnMain = mainHeight lott.LastTransToDrawStateOnMain = mainHeight
......
...@@ -16,9 +16,11 @@ func (l *Lottery) Query_GetLotteryNormalInfo(param *pty.ReqLotteryInfo) (types.M ...@@ -16,9 +16,11 @@ func (l *Lottery) Query_GetLotteryNormalInfo(param *pty.ReqLotteryInfo) (types.M
return nil, err return nil, err
} }
return &pty.ReplyLotteryNormalInfo{CreateHeight: lottery.CreateHeight, return &pty.ReplyLotteryNormalInfo{CreateHeight: lottery.CreateHeight,
PurBlockNum: lottery.PurBlockNum, PurBlockNum: lottery.PurBlockNum,
DrawBlockNum: lottery.DrawBlockNum, DrawBlockNum: lottery.DrawBlockNum,
CreateAddr: lottery.CreateAddr}, nil CreateAddr: lottery.CreateAddr,
OpRewardRatio: lottery.OpRewardRatio,
DevRewardRatio: lottery.DevRewardRatio}, nil
} }
// Query_GetLotteryPurchaseAddr for current round // Query_GetLotteryPurchaseAddr for current round
...@@ -28,8 +30,8 @@ func (l *Lottery) Query_GetLotteryPurchaseAddr(param *pty.ReqLotteryInfo) (types ...@@ -28,8 +30,8 @@ func (l *Lottery) Query_GetLotteryPurchaseAddr(param *pty.ReqLotteryInfo) (types
return nil, err return nil, err
} }
reply := &pty.ReplyLotteryPurchaseAddr{} reply := &pty.ReplyLotteryPurchaseAddr{}
for addr := range lottery.Records { for _, recs := range lottery.PurRecords {
reply.Address = append(reply.Address, addr) reply.Address = append(reply.Address, recs.Addr)
} }
//lottery.Records //lottery.Records
return reply, nil return reply, nil
......
...@@ -13,6 +13,7 @@ message PurchaseRecords { ...@@ -13,6 +13,7 @@ message PurchaseRecords {
repeated PurchaseRecord record = 1; repeated PurchaseRecord record = 1;
int64 fundWin = 2; int64 fundWin = 2;
int64 amountOneRound = 3; int64 amountOneRound = 3;
string addr = 4;
} }
message Lottery { message Lottery {
...@@ -24,7 +25,7 @@ message Lottery { ...@@ -24,7 +25,7 @@ message Lottery {
int64 drawBlockNum = 6; int64 drawBlockNum = 6;
int64 lastTransToPurState = 7; int64 lastTransToPurState = 7;
int64 lastTransToDrawState = 8; int64 lastTransToDrawState = 8;
map<string, PurchaseRecords> records = 9; //map<string, PurchaseRecords> records = 9;
int64 totalPurchasedTxNum = 10; int64 totalPurchasedTxNum = 10;
string createAddr = 11; string createAddr = 11;
int64 round = 12; int64 round = 12;
...@@ -33,6 +34,9 @@ message Lottery { ...@@ -33,6 +34,9 @@ message Lottery {
int64 lastTransToPurStateOnMain = 15; int64 lastTransToPurStateOnMain = 15;
int64 lastTransToDrawStateOnMain = 16; int64 lastTransToDrawStateOnMain = 16;
repeated MissingRecord missingRecords = 17; repeated MissingRecord missingRecords = 17;
int64 opRewardRatio = 18;
int64 devRewardRatio = 19;
repeated PurchaseRecords purRecords = 20;
} }
message MissingRecord { message MissingRecord {
...@@ -50,8 +54,10 @@ message LotteryAction { ...@@ -50,8 +54,10 @@ message LotteryAction {
} }
message LotteryCreate { message LotteryCreate {
int64 purBlockNum = 1; int64 purBlockNum = 1;
int64 drawBlockNum = 2; int64 drawBlockNum = 2;
int64 opRewardRatio = 3;
int64 devRewardRatio = 4;
} }
message LotteryBuy { message LotteryBuy {
...@@ -117,10 +123,12 @@ message ReqLotteryLuckyHistory { ...@@ -117,10 +123,12 @@ message ReqLotteryLuckyHistory {
} }
message ReplyLotteryNormalInfo { message ReplyLotteryNormalInfo {
int64 createHeight = 1; int64 createHeight = 1;
int64 purBlockNum = 2; int64 purBlockNum = 2;
int64 drawBlockNum = 3; int64 drawBlockNum = 3;
string createAddr = 4; string createAddr = 4;
int64 opRewardRatio = 5;
int64 devRewardRatio = 6;
} }
message ReplyLotteryCurrentInfo { message ReplyLotteryCurrentInfo {
......
...@@ -25,4 +25,5 @@ var ( ...@@ -25,4 +25,5 @@ var (
ErrLotteryErrUnableClose = errors.New("ErrLotteryErrUnableClose") ErrLotteryErrUnableClose = errors.New("ErrLotteryErrUnableClose")
ErrNodeNotExist = errors.New("ErrNodeNotExist") ErrNodeNotExist = errors.New("ErrNodeNotExist")
ErrEmptyMinerTx = errors.New("ErrEmptyMinerTx") ErrEmptyMinerTx = errors.New("ErrEmptyMinerTx")
ErrRewardFactor = errors.New("ErrRewardFactor")
) )
...@@ -3,12 +3,9 @@ ...@@ -3,12 +3,9 @@
package types package types
import ( import proto "github.com/golang/protobuf/proto"
fmt "fmt" import fmt "fmt"
math "math" import math "math"
proto "github.com/golang/protobuf/proto"
)
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal var _ = proto.Marshal
...@@ -35,17 +32,16 @@ func (m *PurchaseRecord) Reset() { *m = PurchaseRecord{} } ...@@ -35,17 +32,16 @@ func (m *PurchaseRecord) Reset() { *m = PurchaseRecord{} }
func (m *PurchaseRecord) String() string { return proto.CompactTextString(m) } func (m *PurchaseRecord) String() string { return proto.CompactTextString(m) }
func (*PurchaseRecord) ProtoMessage() {} func (*PurchaseRecord) ProtoMessage() {}
func (*PurchaseRecord) Descriptor() ([]byte, []int) { func (*PurchaseRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{0} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{0}
} }
func (m *PurchaseRecord) XXX_Unmarshal(b []byte) error { func (m *PurchaseRecord) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PurchaseRecord.Unmarshal(m, b) return xxx_messageInfo_PurchaseRecord.Unmarshal(m, b)
} }
func (m *PurchaseRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *PurchaseRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PurchaseRecord.Marshal(b, m, deterministic) return xxx_messageInfo_PurchaseRecord.Marshal(b, m, deterministic)
} }
func (m *PurchaseRecord) XXX_Merge(src proto.Message) { func (dst *PurchaseRecord) XXX_Merge(src proto.Message) {
xxx_messageInfo_PurchaseRecord.Merge(m, src) xxx_messageInfo_PurchaseRecord.Merge(dst, src)
} }
func (m *PurchaseRecord) XXX_Size() int { func (m *PurchaseRecord) XXX_Size() int {
return xxx_messageInfo_PurchaseRecord.Size(m) return xxx_messageInfo_PurchaseRecord.Size(m)
...@@ -88,6 +84,7 @@ type PurchaseRecords struct { ...@@ -88,6 +84,7 @@ type PurchaseRecords struct {
Record []*PurchaseRecord `protobuf:"bytes,1,rep,name=record,proto3" json:"record,omitempty"` Record []*PurchaseRecord `protobuf:"bytes,1,rep,name=record,proto3" json:"record,omitempty"`
FundWin int64 `protobuf:"varint,2,opt,name=fundWin,proto3" json:"fundWin,omitempty"` FundWin int64 `protobuf:"varint,2,opt,name=fundWin,proto3" json:"fundWin,omitempty"`
AmountOneRound int64 `protobuf:"varint,3,opt,name=amountOneRound,proto3" json:"amountOneRound,omitempty"` AmountOneRound int64 `protobuf:"varint,3,opt,name=amountOneRound,proto3" json:"amountOneRound,omitempty"`
Addr string `protobuf:"bytes,4,opt,name=addr,proto3" json:"addr,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:"-"`
...@@ -97,17 +94,16 @@ func (m *PurchaseRecords) Reset() { *m = PurchaseRecords{} } ...@@ -97,17 +94,16 @@ func (m *PurchaseRecords) Reset() { *m = PurchaseRecords{} }
func (m *PurchaseRecords) String() string { return proto.CompactTextString(m) } func (m *PurchaseRecords) String() string { return proto.CompactTextString(m) }
func (*PurchaseRecords) ProtoMessage() {} func (*PurchaseRecords) ProtoMessage() {}
func (*PurchaseRecords) Descriptor() ([]byte, []int) { func (*PurchaseRecords) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{1} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{1}
} }
func (m *PurchaseRecords) XXX_Unmarshal(b []byte) error { func (m *PurchaseRecords) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PurchaseRecords.Unmarshal(m, b) return xxx_messageInfo_PurchaseRecords.Unmarshal(m, b)
} }
func (m *PurchaseRecords) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *PurchaseRecords) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PurchaseRecords.Marshal(b, m, deterministic) return xxx_messageInfo_PurchaseRecords.Marshal(b, m, deterministic)
} }
func (m *PurchaseRecords) XXX_Merge(src proto.Message) { func (dst *PurchaseRecords) XXX_Merge(src proto.Message) {
xxx_messageInfo_PurchaseRecords.Merge(m, src) xxx_messageInfo_PurchaseRecords.Merge(dst, src)
} }
func (m *PurchaseRecords) XXX_Size() int { func (m *PurchaseRecords) XXX_Size() int {
return xxx_messageInfo_PurchaseRecords.Size(m) return xxx_messageInfo_PurchaseRecords.Size(m)
...@@ -139,44 +135,53 @@ func (m *PurchaseRecords) GetAmountOneRound() int64 { ...@@ -139,44 +135,53 @@ func (m *PurchaseRecords) GetAmountOneRound() int64 {
return 0 return 0
} }
func (m *PurchaseRecords) GetAddr() string {
if m != nil {
return m.Addr
}
return ""
}
type Lottery struct { type Lottery struct {
LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"` LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
CreateHeight int64 `protobuf:"varint,3,opt,name=createHeight,proto3" json:"createHeight,omitempty"` CreateHeight int64 `protobuf:"varint,3,opt,name=createHeight,proto3" json:"createHeight,omitempty"`
Fund int64 `protobuf:"varint,4,opt,name=fund,proto3" json:"fund,omitempty"` Fund int64 `protobuf:"varint,4,opt,name=fund,proto3" json:"fund,omitempty"`
PurBlockNum int64 `protobuf:"varint,5,opt,name=purBlockNum,proto3" json:"purBlockNum,omitempty"` PurBlockNum int64 `protobuf:"varint,5,opt,name=purBlockNum,proto3" json:"purBlockNum,omitempty"`
DrawBlockNum int64 `protobuf:"varint,6,opt,name=drawBlockNum,proto3" json:"drawBlockNum,omitempty"` DrawBlockNum int64 `protobuf:"varint,6,opt,name=drawBlockNum,proto3" json:"drawBlockNum,omitempty"`
LastTransToPurState int64 `protobuf:"varint,7,opt,name=lastTransToPurState,proto3" json:"lastTransToPurState,omitempty"` LastTransToPurState int64 `protobuf:"varint,7,opt,name=lastTransToPurState,proto3" json:"lastTransToPurState,omitempty"`
LastTransToDrawState int64 `protobuf:"varint,8,opt,name=lastTransToDrawState,proto3" json:"lastTransToDrawState,omitempty"` LastTransToDrawState int64 `protobuf:"varint,8,opt,name=lastTransToDrawState,proto3" json:"lastTransToDrawState,omitempty"`
Records map[string]*PurchaseRecords `protobuf:"bytes,9,rep,name=records,proto3" json:"records,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // map<string, PurchaseRecords> records = 9;
TotalPurchasedTxNum int64 `protobuf:"varint,10,opt,name=totalPurchasedTxNum,proto3" json:"totalPurchasedTxNum,omitempty"` TotalPurchasedTxNum int64 `protobuf:"varint,10,opt,name=totalPurchasedTxNum,proto3" json:"totalPurchasedTxNum,omitempty"`
CreateAddr string `protobuf:"bytes,11,opt,name=createAddr,proto3" json:"createAddr,omitempty"` CreateAddr string `protobuf:"bytes,11,opt,name=createAddr,proto3" json:"createAddr,omitempty"`
Round int64 `protobuf:"varint,12,opt,name=round,proto3" json:"round,omitempty"` Round int64 `protobuf:"varint,12,opt,name=round,proto3" json:"round,omitempty"`
LuckyNumber int64 `protobuf:"varint,13,opt,name=luckyNumber,proto3" json:"luckyNumber,omitempty"` LuckyNumber int64 `protobuf:"varint,13,opt,name=luckyNumber,proto3" json:"luckyNumber,omitempty"`
CreateOnMain int64 `protobuf:"varint,14,opt,name=createOnMain,proto3" json:"createOnMain,omitempty"` CreateOnMain int64 `protobuf:"varint,14,opt,name=createOnMain,proto3" json:"createOnMain,omitempty"`
LastTransToPurStateOnMain int64 `protobuf:"varint,15,opt,name=lastTransToPurStateOnMain,proto3" json:"lastTransToPurStateOnMain,omitempty"` LastTransToPurStateOnMain int64 `protobuf:"varint,15,opt,name=lastTransToPurStateOnMain,proto3" json:"lastTransToPurStateOnMain,omitempty"`
LastTransToDrawStateOnMain int64 `protobuf:"varint,16,opt,name=lastTransToDrawStateOnMain,proto3" json:"lastTransToDrawStateOnMain,omitempty"` LastTransToDrawStateOnMain int64 `protobuf:"varint,16,opt,name=lastTransToDrawStateOnMain,proto3" json:"lastTransToDrawStateOnMain,omitempty"`
MissingRecords []*MissingRecord `protobuf:"bytes,17,rep,name=missingRecords,proto3" json:"missingRecords,omitempty"` MissingRecords []*MissingRecord `protobuf:"bytes,17,rep,name=missingRecords,proto3" json:"missingRecords,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` OpRewardRatio int64 `protobuf:"varint,18,opt,name=opRewardRatio,proto3" json:"opRewardRatio,omitempty"`
XXX_unrecognized []byte `json:"-"` DevRewardRatio int64 `protobuf:"varint,19,opt,name=devRewardRatio,proto3" json:"devRewardRatio,omitempty"`
XXX_sizecache int32 `json:"-"` PurRecords []*PurchaseRecords `protobuf:"bytes,20,rep,name=purRecords,proto3" json:"purRecords,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *Lottery) Reset() { *m = Lottery{} } func (m *Lottery) Reset() { *m = Lottery{} }
func (m *Lottery) String() string { return proto.CompactTextString(m) } func (m *Lottery) String() string { return proto.CompactTextString(m) }
func (*Lottery) ProtoMessage() {} func (*Lottery) ProtoMessage() {}
func (*Lottery) Descriptor() ([]byte, []int) { func (*Lottery) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{2} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{2}
} }
func (m *Lottery) XXX_Unmarshal(b []byte) error { func (m *Lottery) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Lottery.Unmarshal(m, b) return xxx_messageInfo_Lottery.Unmarshal(m, b)
} }
func (m *Lottery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *Lottery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Lottery.Marshal(b, m, deterministic) return xxx_messageInfo_Lottery.Marshal(b, m, deterministic)
} }
func (m *Lottery) XXX_Merge(src proto.Message) { func (dst *Lottery) XXX_Merge(src proto.Message) {
xxx_messageInfo_Lottery.Merge(m, src) xxx_messageInfo_Lottery.Merge(dst, src)
} }
func (m *Lottery) XXX_Size() int { func (m *Lottery) XXX_Size() int {
return xxx_messageInfo_Lottery.Size(m) return xxx_messageInfo_Lottery.Size(m)
...@@ -243,13 +248,6 @@ func (m *Lottery) GetLastTransToDrawState() int64 { ...@@ -243,13 +248,6 @@ func (m *Lottery) GetLastTransToDrawState() int64 {
return 0 return 0
} }
func (m *Lottery) GetRecords() map[string]*PurchaseRecords {
if m != nil {
return m.Records
}
return nil
}
func (m *Lottery) GetTotalPurchasedTxNum() int64 { func (m *Lottery) GetTotalPurchasedTxNum() int64 {
if m != nil { if m != nil {
return m.TotalPurchasedTxNum return m.TotalPurchasedTxNum
...@@ -306,6 +304,27 @@ func (m *Lottery) GetMissingRecords() []*MissingRecord { ...@@ -306,6 +304,27 @@ func (m *Lottery) GetMissingRecords() []*MissingRecord {
return nil return nil
} }
func (m *Lottery) GetOpRewardRatio() int64 {
if m != nil {
return m.OpRewardRatio
}
return 0
}
func (m *Lottery) GetDevRewardRatio() int64 {
if m != nil {
return m.DevRewardRatio
}
return 0
}
func (m *Lottery) GetPurRecords() []*PurchaseRecords {
if m != nil {
return m.PurRecords
}
return nil
}
type MissingRecord struct { type MissingRecord struct {
Times []int32 `protobuf:"varint,1,rep,packed,name=times,proto3" json:"times,omitempty"` Times []int32 `protobuf:"varint,1,rep,packed,name=times,proto3" json:"times,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -317,17 +336,16 @@ func (m *MissingRecord) Reset() { *m = MissingRecord{} } ...@@ -317,17 +336,16 @@ func (m *MissingRecord) Reset() { *m = MissingRecord{} }
func (m *MissingRecord) String() string { return proto.CompactTextString(m) } func (m *MissingRecord) String() string { return proto.CompactTextString(m) }
func (*MissingRecord) ProtoMessage() {} func (*MissingRecord) ProtoMessage() {}
func (*MissingRecord) Descriptor() ([]byte, []int) { func (*MissingRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{3} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{3}
} }
func (m *MissingRecord) XXX_Unmarshal(b []byte) error { func (m *MissingRecord) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MissingRecord.Unmarshal(m, b) return xxx_messageInfo_MissingRecord.Unmarshal(m, b)
} }
func (m *MissingRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *MissingRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_MissingRecord.Marshal(b, m, deterministic) return xxx_messageInfo_MissingRecord.Marshal(b, m, deterministic)
} }
func (m *MissingRecord) XXX_Merge(src proto.Message) { func (dst *MissingRecord) XXX_Merge(src proto.Message) {
xxx_messageInfo_MissingRecord.Merge(m, src) xxx_messageInfo_MissingRecord.Merge(dst, src)
} }
func (m *MissingRecord) XXX_Size() int { func (m *MissingRecord) XXX_Size() int {
return xxx_messageInfo_MissingRecord.Size(m) return xxx_messageInfo_MissingRecord.Size(m)
...@@ -362,17 +380,16 @@ func (m *LotteryAction) Reset() { *m = LotteryAction{} } ...@@ -362,17 +380,16 @@ func (m *LotteryAction) Reset() { *m = LotteryAction{} }
func (m *LotteryAction) String() string { return proto.CompactTextString(m) } func (m *LotteryAction) String() string { return proto.CompactTextString(m) }
func (*LotteryAction) ProtoMessage() {} func (*LotteryAction) ProtoMessage() {}
func (*LotteryAction) Descriptor() ([]byte, []int) { func (*LotteryAction) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{4} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{4}
} }
func (m *LotteryAction) XXX_Unmarshal(b []byte) error { func (m *LotteryAction) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryAction.Unmarshal(m, b) return xxx_messageInfo_LotteryAction.Unmarshal(m, b)
} }
func (m *LotteryAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryAction.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryAction.Marshal(b, m, deterministic)
} }
func (m *LotteryAction) XXX_Merge(src proto.Message) { func (dst *LotteryAction) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryAction.Merge(m, src) xxx_messageInfo_LotteryAction.Merge(dst, src)
} }
func (m *LotteryAction) XXX_Size() int { func (m *LotteryAction) XXX_Size() int {
return xxx_messageInfo_LotteryAction.Size(m) return xxx_messageInfo_LotteryAction.Size(m)
...@@ -390,26 +407,20 @@ type isLotteryAction_Value interface { ...@@ -390,26 +407,20 @@ type isLotteryAction_Value interface {
type LotteryAction_Create struct { type LotteryAction_Create struct {
Create *LotteryCreate `protobuf:"bytes,1,opt,name=create,proto3,oneof"` Create *LotteryCreate `protobuf:"bytes,1,opt,name=create,proto3,oneof"`
} }
type LotteryAction_Buy struct { type LotteryAction_Buy struct {
Buy *LotteryBuy `protobuf:"bytes,2,opt,name=buy,proto3,oneof"` Buy *LotteryBuy `protobuf:"bytes,2,opt,name=buy,proto3,oneof"`
} }
type LotteryAction_Draw struct { type LotteryAction_Draw struct {
Draw *LotteryDraw `protobuf:"bytes,3,opt,name=draw,proto3,oneof"` Draw *LotteryDraw `protobuf:"bytes,3,opt,name=draw,proto3,oneof"`
} }
type LotteryAction_Close struct { type LotteryAction_Close struct {
Close *LotteryClose `protobuf:"bytes,4,opt,name=close,proto3,oneof"` Close *LotteryClose `protobuf:"bytes,4,opt,name=close,proto3,oneof"`
} }
func (*LotteryAction_Create) isLotteryAction_Value() {} func (*LotteryAction_Create) isLotteryAction_Value() {}
func (*LotteryAction_Buy) isLotteryAction_Value() {}
func (*LotteryAction_Buy) isLotteryAction_Value() {} func (*LotteryAction_Draw) isLotteryAction_Value() {}
func (*LotteryAction_Close) isLotteryAction_Value() {}
func (*LotteryAction_Draw) isLotteryAction_Value() {}
func (*LotteryAction_Close) isLotteryAction_Value() {}
func (m *LotteryAction) GetValue() isLotteryAction_Value { func (m *LotteryAction) GetValue() isLotteryAction_Value {
if m != nil { if m != nil {
...@@ -568,6 +579,8 @@ func _LotteryAction_OneofSizer(msg proto.Message) (n int) { ...@@ -568,6 +579,8 @@ func _LotteryAction_OneofSizer(msg proto.Message) (n int) {
type LotteryCreate struct { type LotteryCreate struct {
PurBlockNum int64 `protobuf:"varint,1,opt,name=purBlockNum,proto3" json:"purBlockNum,omitempty"` PurBlockNum int64 `protobuf:"varint,1,opt,name=purBlockNum,proto3" json:"purBlockNum,omitempty"`
DrawBlockNum int64 `protobuf:"varint,2,opt,name=drawBlockNum,proto3" json:"drawBlockNum,omitempty"` DrawBlockNum int64 `protobuf:"varint,2,opt,name=drawBlockNum,proto3" json:"drawBlockNum,omitempty"`
OpRewardRatio int64 `protobuf:"varint,3,opt,name=opRewardRatio,proto3" json:"opRewardRatio,omitempty"`
DevRewardRatio int64 `protobuf:"varint,4,opt,name=devRewardRatio,proto3" json:"devRewardRatio,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:"-"`
...@@ -577,17 +590,16 @@ func (m *LotteryCreate) Reset() { *m = LotteryCreate{} } ...@@ -577,17 +590,16 @@ func (m *LotteryCreate) Reset() { *m = LotteryCreate{} }
func (m *LotteryCreate) String() string { return proto.CompactTextString(m) } func (m *LotteryCreate) String() string { return proto.CompactTextString(m) }
func (*LotteryCreate) ProtoMessage() {} func (*LotteryCreate) ProtoMessage() {}
func (*LotteryCreate) Descriptor() ([]byte, []int) { func (*LotteryCreate) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{5} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{5}
} }
func (m *LotteryCreate) XXX_Unmarshal(b []byte) error { func (m *LotteryCreate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryCreate.Unmarshal(m, b) return xxx_messageInfo_LotteryCreate.Unmarshal(m, b)
} }
func (m *LotteryCreate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryCreate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryCreate.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryCreate.Marshal(b, m, deterministic)
} }
func (m *LotteryCreate) XXX_Merge(src proto.Message) { func (dst *LotteryCreate) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryCreate.Merge(m, src) xxx_messageInfo_LotteryCreate.Merge(dst, src)
} }
func (m *LotteryCreate) XXX_Size() int { func (m *LotteryCreate) XXX_Size() int {
return xxx_messageInfo_LotteryCreate.Size(m) return xxx_messageInfo_LotteryCreate.Size(m)
...@@ -612,6 +624,20 @@ func (m *LotteryCreate) GetDrawBlockNum() int64 { ...@@ -612,6 +624,20 @@ func (m *LotteryCreate) GetDrawBlockNum() int64 {
return 0 return 0
} }
func (m *LotteryCreate) GetOpRewardRatio() int64 {
if m != nil {
return m.OpRewardRatio
}
return 0
}
func (m *LotteryCreate) GetDevRewardRatio() int64 {
if m != nil {
return m.DevRewardRatio
}
return 0
}
type LotteryBuy struct { type LotteryBuy struct {
LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"` LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"` Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
...@@ -626,17 +652,16 @@ func (m *LotteryBuy) Reset() { *m = LotteryBuy{} } ...@@ -626,17 +652,16 @@ func (m *LotteryBuy) Reset() { *m = LotteryBuy{} }
func (m *LotteryBuy) String() string { return proto.CompactTextString(m) } func (m *LotteryBuy) String() string { return proto.CompactTextString(m) }
func (*LotteryBuy) ProtoMessage() {} func (*LotteryBuy) ProtoMessage() {}
func (*LotteryBuy) Descriptor() ([]byte, []int) { func (*LotteryBuy) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{6} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{6}
} }
func (m *LotteryBuy) XXX_Unmarshal(b []byte) error { func (m *LotteryBuy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryBuy.Unmarshal(m, b) return xxx_messageInfo_LotteryBuy.Unmarshal(m, b)
} }
func (m *LotteryBuy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryBuy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryBuy.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryBuy.Marshal(b, m, deterministic)
} }
func (m *LotteryBuy) XXX_Merge(src proto.Message) { func (dst *LotteryBuy) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryBuy.Merge(m, src) xxx_messageInfo_LotteryBuy.Merge(dst, src)
} }
func (m *LotteryBuy) XXX_Size() int { func (m *LotteryBuy) XXX_Size() int {
return xxx_messageInfo_LotteryBuy.Size(m) return xxx_messageInfo_LotteryBuy.Size(m)
...@@ -686,17 +711,16 @@ func (m *LotteryDraw) Reset() { *m = LotteryDraw{} } ...@@ -686,17 +711,16 @@ func (m *LotteryDraw) Reset() { *m = LotteryDraw{} }
func (m *LotteryDraw) String() string { return proto.CompactTextString(m) } func (m *LotteryDraw) String() string { return proto.CompactTextString(m) }
func (*LotteryDraw) ProtoMessage() {} func (*LotteryDraw) ProtoMessage() {}
func (*LotteryDraw) Descriptor() ([]byte, []int) { func (*LotteryDraw) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{7} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{7}
} }
func (m *LotteryDraw) XXX_Unmarshal(b []byte) error { func (m *LotteryDraw) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryDraw.Unmarshal(m, b) return xxx_messageInfo_LotteryDraw.Unmarshal(m, b)
} }
func (m *LotteryDraw) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryDraw) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryDraw.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryDraw.Marshal(b, m, deterministic)
} }
func (m *LotteryDraw) XXX_Merge(src proto.Message) { func (dst *LotteryDraw) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryDraw.Merge(m, src) xxx_messageInfo_LotteryDraw.Merge(dst, src)
} }
func (m *LotteryDraw) XXX_Size() int { func (m *LotteryDraw) XXX_Size() int {
return xxx_messageInfo_LotteryDraw.Size(m) return xxx_messageInfo_LotteryDraw.Size(m)
...@@ -725,17 +749,16 @@ func (m *LotteryClose) Reset() { *m = LotteryClose{} } ...@@ -725,17 +749,16 @@ func (m *LotteryClose) Reset() { *m = LotteryClose{} }
func (m *LotteryClose) String() string { return proto.CompactTextString(m) } func (m *LotteryClose) String() string { return proto.CompactTextString(m) }
func (*LotteryClose) ProtoMessage() {} func (*LotteryClose) ProtoMessage() {}
func (*LotteryClose) Descriptor() ([]byte, []int) { func (*LotteryClose) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{8} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{8}
} }
func (m *LotteryClose) XXX_Unmarshal(b []byte) error { func (m *LotteryClose) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryClose.Unmarshal(m, b) return xxx_messageInfo_LotteryClose.Unmarshal(m, b)
} }
func (m *LotteryClose) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryClose) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryClose.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryClose.Marshal(b, m, deterministic)
} }
func (m *LotteryClose) XXX_Merge(src proto.Message) { func (dst *LotteryClose) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryClose.Merge(m, src) xxx_messageInfo_LotteryClose.Merge(dst, src)
} }
func (m *LotteryClose) XXX_Size() int { func (m *LotteryClose) XXX_Size() int {
return xxx_messageInfo_LotteryClose.Size(m) return xxx_messageInfo_LotteryClose.Size(m)
...@@ -776,17 +799,16 @@ func (m *ReceiptLottery) Reset() { *m = ReceiptLottery{} } ...@@ -776,17 +799,16 @@ func (m *ReceiptLottery) Reset() { *m = ReceiptLottery{} }
func (m *ReceiptLottery) String() string { return proto.CompactTextString(m) } func (m *ReceiptLottery) String() string { return proto.CompactTextString(m) }
func (*ReceiptLottery) ProtoMessage() {} func (*ReceiptLottery) ProtoMessage() {}
func (*ReceiptLottery) Descriptor() ([]byte, []int) { func (*ReceiptLottery) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{9} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{9}
} }
func (m *ReceiptLottery) XXX_Unmarshal(b []byte) error { func (m *ReceiptLottery) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptLottery.Unmarshal(m, b) return xxx_messageInfo_ReceiptLottery.Unmarshal(m, b)
} }
func (m *ReceiptLottery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReceiptLottery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReceiptLottery.Marshal(b, m, deterministic) return xxx_messageInfo_ReceiptLottery.Marshal(b, m, deterministic)
} }
func (m *ReceiptLottery) XXX_Merge(src proto.Message) { func (dst *ReceiptLottery) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptLottery.Merge(m, src) xxx_messageInfo_ReceiptLottery.Merge(dst, src)
} }
func (m *ReceiptLottery) XXX_Size() int { func (m *ReceiptLottery) XXX_Size() int {
return xxx_messageInfo_ReceiptLottery.Size(m) return xxx_messageInfo_ReceiptLottery.Size(m)
...@@ -899,17 +921,16 @@ func (m *ReqLotteryInfo) Reset() { *m = ReqLotteryInfo{} } ...@@ -899,17 +921,16 @@ func (m *ReqLotteryInfo) Reset() { *m = ReqLotteryInfo{} }
func (m *ReqLotteryInfo) String() string { return proto.CompactTextString(m) } func (m *ReqLotteryInfo) String() string { return proto.CompactTextString(m) }
func (*ReqLotteryInfo) ProtoMessage() {} func (*ReqLotteryInfo) ProtoMessage() {}
func (*ReqLotteryInfo) Descriptor() ([]byte, []int) { func (*ReqLotteryInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{10} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{10}
} }
func (m *ReqLotteryInfo) XXX_Unmarshal(b []byte) error { func (m *ReqLotteryInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqLotteryInfo.Unmarshal(m, b) return xxx_messageInfo_ReqLotteryInfo.Unmarshal(m, b)
} }
func (m *ReqLotteryInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReqLotteryInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReqLotteryInfo.Marshal(b, m, deterministic) return xxx_messageInfo_ReqLotteryInfo.Marshal(b, m, deterministic)
} }
func (m *ReqLotteryInfo) XXX_Merge(src proto.Message) { func (dst *ReqLotteryInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqLotteryInfo.Merge(m, src) xxx_messageInfo_ReqLotteryInfo.Merge(dst, src)
} }
func (m *ReqLotteryInfo) XXX_Size() int { func (m *ReqLotteryInfo) XXX_Size() int {
return xxx_messageInfo_ReqLotteryInfo.Size(m) return xxx_messageInfo_ReqLotteryInfo.Size(m)
...@@ -940,17 +961,16 @@ func (m *ReqLotteryBuyInfo) Reset() { *m = ReqLotteryBuyInfo{} } ...@@ -940,17 +961,16 @@ func (m *ReqLotteryBuyInfo) Reset() { *m = ReqLotteryBuyInfo{} }
func (m *ReqLotteryBuyInfo) String() string { return proto.CompactTextString(m) } func (m *ReqLotteryBuyInfo) String() string { return proto.CompactTextString(m) }
func (*ReqLotteryBuyInfo) ProtoMessage() {} func (*ReqLotteryBuyInfo) ProtoMessage() {}
func (*ReqLotteryBuyInfo) Descriptor() ([]byte, []int) { func (*ReqLotteryBuyInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{11} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{11}
} }
func (m *ReqLotteryBuyInfo) XXX_Unmarshal(b []byte) error { func (m *ReqLotteryBuyInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqLotteryBuyInfo.Unmarshal(m, b) return xxx_messageInfo_ReqLotteryBuyInfo.Unmarshal(m, b)
} }
func (m *ReqLotteryBuyInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReqLotteryBuyInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReqLotteryBuyInfo.Marshal(b, m, deterministic) return xxx_messageInfo_ReqLotteryBuyInfo.Marshal(b, m, deterministic)
} }
func (m *ReqLotteryBuyInfo) XXX_Merge(src proto.Message) { func (dst *ReqLotteryBuyInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqLotteryBuyInfo.Merge(m, src) xxx_messageInfo_ReqLotteryBuyInfo.Merge(dst, src)
} }
func (m *ReqLotteryBuyInfo) XXX_Size() int { func (m *ReqLotteryBuyInfo) XXX_Size() int {
return xxx_messageInfo_ReqLotteryBuyInfo.Size(m) return xxx_messageInfo_ReqLotteryBuyInfo.Size(m)
...@@ -998,17 +1018,16 @@ func (m *ReqLotteryBuyHistory) Reset() { *m = ReqLotteryBuyHistory{} } ...@@ -998,17 +1018,16 @@ func (m *ReqLotteryBuyHistory) Reset() { *m = ReqLotteryBuyHistory{} }
func (m *ReqLotteryBuyHistory) String() string { return proto.CompactTextString(m) } func (m *ReqLotteryBuyHistory) String() string { return proto.CompactTextString(m) }
func (*ReqLotteryBuyHistory) ProtoMessage() {} func (*ReqLotteryBuyHistory) ProtoMessage() {}
func (*ReqLotteryBuyHistory) Descriptor() ([]byte, []int) { func (*ReqLotteryBuyHistory) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{12} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{12}
} }
func (m *ReqLotteryBuyHistory) XXX_Unmarshal(b []byte) error { func (m *ReqLotteryBuyHistory) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqLotteryBuyHistory.Unmarshal(m, b) return xxx_messageInfo_ReqLotteryBuyHistory.Unmarshal(m, b)
} }
func (m *ReqLotteryBuyHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReqLotteryBuyHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReqLotteryBuyHistory.Marshal(b, m, deterministic) return xxx_messageInfo_ReqLotteryBuyHistory.Marshal(b, m, deterministic)
} }
func (m *ReqLotteryBuyHistory) XXX_Merge(src proto.Message) { func (dst *ReqLotteryBuyHistory) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqLotteryBuyHistory.Merge(m, src) xxx_messageInfo_ReqLotteryBuyHistory.Merge(dst, src)
} }
func (m *ReqLotteryBuyHistory) XXX_Size() int { func (m *ReqLotteryBuyHistory) XXX_Size() int {
return xxx_messageInfo_ReqLotteryBuyHistory.Size(m) return xxx_messageInfo_ReqLotteryBuyHistory.Size(m)
...@@ -1073,17 +1092,16 @@ func (m *ReqLotteryLuckyInfo) Reset() { *m = ReqLotteryLuckyInfo{} } ...@@ -1073,17 +1092,16 @@ func (m *ReqLotteryLuckyInfo) Reset() { *m = ReqLotteryLuckyInfo{} }
func (m *ReqLotteryLuckyInfo) String() string { return proto.CompactTextString(m) } func (m *ReqLotteryLuckyInfo) String() string { return proto.CompactTextString(m) }
func (*ReqLotteryLuckyInfo) ProtoMessage() {} func (*ReqLotteryLuckyInfo) ProtoMessage() {}
func (*ReqLotteryLuckyInfo) Descriptor() ([]byte, []int) { func (*ReqLotteryLuckyInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{13} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{13}
} }
func (m *ReqLotteryLuckyInfo) XXX_Unmarshal(b []byte) error { func (m *ReqLotteryLuckyInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqLotteryLuckyInfo.Unmarshal(m, b) return xxx_messageInfo_ReqLotteryLuckyInfo.Unmarshal(m, b)
} }
func (m *ReqLotteryLuckyInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReqLotteryLuckyInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReqLotteryLuckyInfo.Marshal(b, m, deterministic) return xxx_messageInfo_ReqLotteryLuckyInfo.Marshal(b, m, deterministic)
} }
func (m *ReqLotteryLuckyInfo) XXX_Merge(src proto.Message) { func (dst *ReqLotteryLuckyInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqLotteryLuckyInfo.Merge(m, src) xxx_messageInfo_ReqLotteryLuckyInfo.Merge(dst, src)
} }
func (m *ReqLotteryLuckyInfo) XXX_Size() int { func (m *ReqLotteryLuckyInfo) XXX_Size() int {
return xxx_messageInfo_ReqLotteryLuckyInfo.Size(m) return xxx_messageInfo_ReqLotteryLuckyInfo.Size(m)
...@@ -1122,17 +1140,16 @@ func (m *ReqLotteryLuckyHistory) Reset() { *m = ReqLotteryLuckyHistory{} ...@@ -1122,17 +1140,16 @@ func (m *ReqLotteryLuckyHistory) Reset() { *m = ReqLotteryLuckyHistory{}
func (m *ReqLotteryLuckyHistory) String() string { return proto.CompactTextString(m) } func (m *ReqLotteryLuckyHistory) String() string { return proto.CompactTextString(m) }
func (*ReqLotteryLuckyHistory) ProtoMessage() {} func (*ReqLotteryLuckyHistory) ProtoMessage() {}
func (*ReqLotteryLuckyHistory) Descriptor() ([]byte, []int) { func (*ReqLotteryLuckyHistory) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{14} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{14}
} }
func (m *ReqLotteryLuckyHistory) XXX_Unmarshal(b []byte) error { func (m *ReqLotteryLuckyHistory) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqLotteryLuckyHistory.Unmarshal(m, b) return xxx_messageInfo_ReqLotteryLuckyHistory.Unmarshal(m, b)
} }
func (m *ReqLotteryLuckyHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReqLotteryLuckyHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReqLotteryLuckyHistory.Marshal(b, m, deterministic) return xxx_messageInfo_ReqLotteryLuckyHistory.Marshal(b, m, deterministic)
} }
func (m *ReqLotteryLuckyHistory) XXX_Merge(src proto.Message) { func (dst *ReqLotteryLuckyHistory) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqLotteryLuckyHistory.Merge(m, src) xxx_messageInfo_ReqLotteryLuckyHistory.Merge(dst, src)
} }
func (m *ReqLotteryLuckyHistory) XXX_Size() int { func (m *ReqLotteryLuckyHistory) XXX_Size() int {
return xxx_messageInfo_ReqLotteryLuckyHistory.Size(m) return xxx_messageInfo_ReqLotteryLuckyHistory.Size(m)
...@@ -1176,6 +1193,8 @@ type ReplyLotteryNormalInfo struct { ...@@ -1176,6 +1193,8 @@ type ReplyLotteryNormalInfo struct {
PurBlockNum int64 `protobuf:"varint,2,opt,name=purBlockNum,proto3" json:"purBlockNum,omitempty"` PurBlockNum int64 `protobuf:"varint,2,opt,name=purBlockNum,proto3" json:"purBlockNum,omitempty"`
DrawBlockNum int64 `protobuf:"varint,3,opt,name=drawBlockNum,proto3" json:"drawBlockNum,omitempty"` DrawBlockNum int64 `protobuf:"varint,3,opt,name=drawBlockNum,proto3" json:"drawBlockNum,omitempty"`
CreateAddr string `protobuf:"bytes,4,opt,name=createAddr,proto3" json:"createAddr,omitempty"` CreateAddr string `protobuf:"bytes,4,opt,name=createAddr,proto3" json:"createAddr,omitempty"`
OpRewardRatio int64 `protobuf:"varint,5,opt,name=opRewardRatio,proto3" json:"opRewardRatio,omitempty"`
DevRewardRatio int64 `protobuf:"varint,6,opt,name=devRewardRatio,proto3" json:"devRewardRatio,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:"-"`
...@@ -1185,17 +1204,16 @@ func (m *ReplyLotteryNormalInfo) Reset() { *m = ReplyLotteryNormalInfo{} ...@@ -1185,17 +1204,16 @@ func (m *ReplyLotteryNormalInfo) Reset() { *m = ReplyLotteryNormalInfo{}
func (m *ReplyLotteryNormalInfo) String() string { return proto.CompactTextString(m) } func (m *ReplyLotteryNormalInfo) String() string { return proto.CompactTextString(m) }
func (*ReplyLotteryNormalInfo) ProtoMessage() {} func (*ReplyLotteryNormalInfo) ProtoMessage() {}
func (*ReplyLotteryNormalInfo) Descriptor() ([]byte, []int) { func (*ReplyLotteryNormalInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{15} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{15}
} }
func (m *ReplyLotteryNormalInfo) XXX_Unmarshal(b []byte) error { func (m *ReplyLotteryNormalInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyLotteryNormalInfo.Unmarshal(m, b) return xxx_messageInfo_ReplyLotteryNormalInfo.Unmarshal(m, b)
} }
func (m *ReplyLotteryNormalInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReplyLotteryNormalInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReplyLotteryNormalInfo.Marshal(b, m, deterministic) return xxx_messageInfo_ReplyLotteryNormalInfo.Marshal(b, m, deterministic)
} }
func (m *ReplyLotteryNormalInfo) XXX_Merge(src proto.Message) { func (dst *ReplyLotteryNormalInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplyLotteryNormalInfo.Merge(m, src) xxx_messageInfo_ReplyLotteryNormalInfo.Merge(dst, src)
} }
func (m *ReplyLotteryNormalInfo) XXX_Size() int { func (m *ReplyLotteryNormalInfo) XXX_Size() int {
return xxx_messageInfo_ReplyLotteryNormalInfo.Size(m) return xxx_messageInfo_ReplyLotteryNormalInfo.Size(m)
...@@ -1234,6 +1252,20 @@ func (m *ReplyLotteryNormalInfo) GetCreateAddr() string { ...@@ -1234,6 +1252,20 @@ func (m *ReplyLotteryNormalInfo) GetCreateAddr() string {
return "" return ""
} }
func (m *ReplyLotteryNormalInfo) GetOpRewardRatio() int64 {
if m != nil {
return m.OpRewardRatio
}
return 0
}
func (m *ReplyLotteryNormalInfo) GetDevRewardRatio() int64 {
if m != nil {
return m.DevRewardRatio
}
return 0
}
type ReplyLotteryCurrentInfo struct { type ReplyLotteryCurrentInfo struct {
Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
Fund int64 `protobuf:"varint,2,opt,name=fund,proto3" json:"fund,omitempty"` Fund int64 `protobuf:"varint,2,opt,name=fund,proto3" json:"fund,omitempty"`
...@@ -1256,17 +1288,16 @@ func (m *ReplyLotteryCurrentInfo) Reset() { *m = ReplyLotteryCurrentInfo ...@@ -1256,17 +1288,16 @@ func (m *ReplyLotteryCurrentInfo) Reset() { *m = ReplyLotteryCurrentInfo
func (m *ReplyLotteryCurrentInfo) String() string { return proto.CompactTextString(m) } func (m *ReplyLotteryCurrentInfo) String() string { return proto.CompactTextString(m) }
func (*ReplyLotteryCurrentInfo) ProtoMessage() {} func (*ReplyLotteryCurrentInfo) ProtoMessage() {}
func (*ReplyLotteryCurrentInfo) Descriptor() ([]byte, []int) { func (*ReplyLotteryCurrentInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{16} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{16}
} }
func (m *ReplyLotteryCurrentInfo) XXX_Unmarshal(b []byte) error { func (m *ReplyLotteryCurrentInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyLotteryCurrentInfo.Unmarshal(m, b) return xxx_messageInfo_ReplyLotteryCurrentInfo.Unmarshal(m, b)
} }
func (m *ReplyLotteryCurrentInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReplyLotteryCurrentInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReplyLotteryCurrentInfo.Marshal(b, m, deterministic) return xxx_messageInfo_ReplyLotteryCurrentInfo.Marshal(b, m, deterministic)
} }
func (m *ReplyLotteryCurrentInfo) XXX_Merge(src proto.Message) { func (dst *ReplyLotteryCurrentInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplyLotteryCurrentInfo.Merge(m, src) xxx_messageInfo_ReplyLotteryCurrentInfo.Merge(dst, src)
} }
func (m *ReplyLotteryCurrentInfo) XXX_Size() int { func (m *ReplyLotteryCurrentInfo) XXX_Size() int {
return xxx_messageInfo_ReplyLotteryCurrentInfo.Size(m) return xxx_messageInfo_ReplyLotteryCurrentInfo.Size(m)
...@@ -1372,17 +1403,16 @@ func (m *ReplyLotteryHistoryLuckyNumber) Reset() { *m = ReplyLotteryHist ...@@ -1372,17 +1403,16 @@ func (m *ReplyLotteryHistoryLuckyNumber) Reset() { *m = ReplyLotteryHist
func (m *ReplyLotteryHistoryLuckyNumber) String() string { return proto.CompactTextString(m) } func (m *ReplyLotteryHistoryLuckyNumber) String() string { return proto.CompactTextString(m) }
func (*ReplyLotteryHistoryLuckyNumber) ProtoMessage() {} func (*ReplyLotteryHistoryLuckyNumber) ProtoMessage() {}
func (*ReplyLotteryHistoryLuckyNumber) Descriptor() ([]byte, []int) { func (*ReplyLotteryHistoryLuckyNumber) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{17} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{17}
} }
func (m *ReplyLotteryHistoryLuckyNumber) XXX_Unmarshal(b []byte) error { func (m *ReplyLotteryHistoryLuckyNumber) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyLotteryHistoryLuckyNumber.Unmarshal(m, b) return xxx_messageInfo_ReplyLotteryHistoryLuckyNumber.Unmarshal(m, b)
} }
func (m *ReplyLotteryHistoryLuckyNumber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReplyLotteryHistoryLuckyNumber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReplyLotteryHistoryLuckyNumber.Marshal(b, m, deterministic) return xxx_messageInfo_ReplyLotteryHistoryLuckyNumber.Marshal(b, m, deterministic)
} }
func (m *ReplyLotteryHistoryLuckyNumber) XXX_Merge(src proto.Message) { func (dst *ReplyLotteryHistoryLuckyNumber) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplyLotteryHistoryLuckyNumber.Merge(m, src) xxx_messageInfo_ReplyLotteryHistoryLuckyNumber.Merge(dst, src)
} }
func (m *ReplyLotteryHistoryLuckyNumber) XXX_Size() int { func (m *ReplyLotteryHistoryLuckyNumber) XXX_Size() int {
return xxx_messageInfo_ReplyLotteryHistoryLuckyNumber.Size(m) return xxx_messageInfo_ReplyLotteryHistoryLuckyNumber.Size(m)
...@@ -1411,17 +1441,16 @@ func (m *ReplyLotteryShowInfo) Reset() { *m = ReplyLotteryShowInfo{} } ...@@ -1411,17 +1441,16 @@ func (m *ReplyLotteryShowInfo) Reset() { *m = ReplyLotteryShowInfo{} }
func (m *ReplyLotteryShowInfo) String() string { return proto.CompactTextString(m) } func (m *ReplyLotteryShowInfo) String() string { return proto.CompactTextString(m) }
func (*ReplyLotteryShowInfo) ProtoMessage() {} func (*ReplyLotteryShowInfo) ProtoMessage() {}
func (*ReplyLotteryShowInfo) Descriptor() ([]byte, []int) { func (*ReplyLotteryShowInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{18} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{18}
} }
func (m *ReplyLotteryShowInfo) XXX_Unmarshal(b []byte) error { func (m *ReplyLotteryShowInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyLotteryShowInfo.Unmarshal(m, b) return xxx_messageInfo_ReplyLotteryShowInfo.Unmarshal(m, b)
} }
func (m *ReplyLotteryShowInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReplyLotteryShowInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReplyLotteryShowInfo.Marshal(b, m, deterministic) return xxx_messageInfo_ReplyLotteryShowInfo.Marshal(b, m, deterministic)
} }
func (m *ReplyLotteryShowInfo) XXX_Merge(src proto.Message) { func (dst *ReplyLotteryShowInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplyLotteryShowInfo.Merge(m, src) xxx_messageInfo_ReplyLotteryShowInfo.Merge(dst, src)
} }
func (m *ReplyLotteryShowInfo) XXX_Size() int { func (m *ReplyLotteryShowInfo) XXX_Size() int {
return xxx_messageInfo_ReplyLotteryShowInfo.Size(m) return xxx_messageInfo_ReplyLotteryShowInfo.Size(m)
...@@ -1451,17 +1480,16 @@ func (m *LotteryNumberRecord) Reset() { *m = LotteryNumberRecord{} } ...@@ -1451,17 +1480,16 @@ func (m *LotteryNumberRecord) Reset() { *m = LotteryNumberRecord{} }
func (m *LotteryNumberRecord) String() string { return proto.CompactTextString(m) } func (m *LotteryNumberRecord) String() string { return proto.CompactTextString(m) }
func (*LotteryNumberRecord) ProtoMessage() {} func (*LotteryNumberRecord) ProtoMessage() {}
func (*LotteryNumberRecord) Descriptor() ([]byte, []int) { func (*LotteryNumberRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{19} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{19}
} }
func (m *LotteryNumberRecord) XXX_Unmarshal(b []byte) error { func (m *LotteryNumberRecord) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryNumberRecord.Unmarshal(m, b) return xxx_messageInfo_LotteryNumberRecord.Unmarshal(m, b)
} }
func (m *LotteryNumberRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryNumberRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryNumberRecord.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryNumberRecord.Marshal(b, m, deterministic)
} }
func (m *LotteryNumberRecord) XXX_Merge(src proto.Message) { func (dst *LotteryNumberRecord) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryNumberRecord.Merge(m, src) xxx_messageInfo_LotteryNumberRecord.Merge(dst, src)
} }
func (m *LotteryNumberRecord) XXX_Size() int { func (m *LotteryNumberRecord) XXX_Size() int {
return xxx_messageInfo_LotteryNumberRecord.Size(m) return xxx_messageInfo_LotteryNumberRecord.Size(m)
...@@ -1505,17 +1533,16 @@ func (m *LotteryBuyRecord) Reset() { *m = LotteryBuyRecord{} } ...@@ -1505,17 +1533,16 @@ func (m *LotteryBuyRecord) Reset() { *m = LotteryBuyRecord{} }
func (m *LotteryBuyRecord) String() string { return proto.CompactTextString(m) } func (m *LotteryBuyRecord) String() string { return proto.CompactTextString(m) }
func (*LotteryBuyRecord) ProtoMessage() {} func (*LotteryBuyRecord) ProtoMessage() {}
func (*LotteryBuyRecord) Descriptor() ([]byte, []int) { func (*LotteryBuyRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{20} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{20}
} }
func (m *LotteryBuyRecord) XXX_Unmarshal(b []byte) error { func (m *LotteryBuyRecord) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryBuyRecord.Unmarshal(m, b) return xxx_messageInfo_LotteryBuyRecord.Unmarshal(m, b)
} }
func (m *LotteryBuyRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryBuyRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryBuyRecord.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryBuyRecord.Marshal(b, m, deterministic)
} }
func (m *LotteryBuyRecord) XXX_Merge(src proto.Message) { func (dst *LotteryBuyRecord) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryBuyRecord.Merge(m, src) xxx_messageInfo_LotteryBuyRecord.Merge(dst, src)
} }
func (m *LotteryBuyRecord) XXX_Size() int { func (m *LotteryBuyRecord) XXX_Size() int {
return xxx_messageInfo_LotteryBuyRecord.Size(m) return xxx_messageInfo_LotteryBuyRecord.Size(m)
...@@ -1593,17 +1620,16 @@ func (m *LotteryBuyRecords) Reset() { *m = LotteryBuyRecords{} } ...@@ -1593,17 +1620,16 @@ func (m *LotteryBuyRecords) Reset() { *m = LotteryBuyRecords{} }
func (m *LotteryBuyRecords) String() string { return proto.CompactTextString(m) } func (m *LotteryBuyRecords) String() string { return proto.CompactTextString(m) }
func (*LotteryBuyRecords) ProtoMessage() {} func (*LotteryBuyRecords) ProtoMessage() {}
func (*LotteryBuyRecords) Descriptor() ([]byte, []int) { func (*LotteryBuyRecords) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{21} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{21}
} }
func (m *LotteryBuyRecords) XXX_Unmarshal(b []byte) error { func (m *LotteryBuyRecords) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryBuyRecords.Unmarshal(m, b) return xxx_messageInfo_LotteryBuyRecords.Unmarshal(m, b)
} }
func (m *LotteryBuyRecords) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryBuyRecords) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryBuyRecords.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryBuyRecords.Marshal(b, m, deterministic)
} }
func (m *LotteryBuyRecords) XXX_Merge(src proto.Message) { func (dst *LotteryBuyRecords) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryBuyRecords.Merge(m, src) xxx_messageInfo_LotteryBuyRecords.Merge(dst, src)
} }
func (m *LotteryBuyRecords) XXX_Size() int { func (m *LotteryBuyRecords) XXX_Size() int {
return xxx_messageInfo_LotteryBuyRecords.Size(m) return xxx_messageInfo_LotteryBuyRecords.Size(m)
...@@ -1635,17 +1661,16 @@ func (m *LotteryDrawRecord) Reset() { *m = LotteryDrawRecord{} } ...@@ -1635,17 +1661,16 @@ func (m *LotteryDrawRecord) Reset() { *m = LotteryDrawRecord{} }
func (m *LotteryDrawRecord) String() string { return proto.CompactTextString(m) } func (m *LotteryDrawRecord) String() string { return proto.CompactTextString(m) }
func (*LotteryDrawRecord) ProtoMessage() {} func (*LotteryDrawRecord) ProtoMessage() {}
func (*LotteryDrawRecord) Descriptor() ([]byte, []int) { func (*LotteryDrawRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{22} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{22}
} }
func (m *LotteryDrawRecord) XXX_Unmarshal(b []byte) error { func (m *LotteryDrawRecord) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryDrawRecord.Unmarshal(m, b) return xxx_messageInfo_LotteryDrawRecord.Unmarshal(m, b)
} }
func (m *LotteryDrawRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryDrawRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryDrawRecord.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryDrawRecord.Marshal(b, m, deterministic)
} }
func (m *LotteryDrawRecord) XXX_Merge(src proto.Message) { func (dst *LotteryDrawRecord) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryDrawRecord.Merge(m, src) xxx_messageInfo_LotteryDrawRecord.Merge(dst, src)
} }
func (m *LotteryDrawRecord) XXX_Size() int { func (m *LotteryDrawRecord) XXX_Size() int {
return xxx_messageInfo_LotteryDrawRecord.Size(m) return xxx_messageInfo_LotteryDrawRecord.Size(m)
...@@ -1695,17 +1720,16 @@ func (m *LotteryDrawRecords) Reset() { *m = LotteryDrawRecords{} } ...@@ -1695,17 +1720,16 @@ func (m *LotteryDrawRecords) Reset() { *m = LotteryDrawRecords{} }
func (m *LotteryDrawRecords) String() string { return proto.CompactTextString(m) } func (m *LotteryDrawRecords) String() string { return proto.CompactTextString(m) }
func (*LotteryDrawRecords) ProtoMessage() {} func (*LotteryDrawRecords) ProtoMessage() {}
func (*LotteryDrawRecords) Descriptor() ([]byte, []int) { func (*LotteryDrawRecords) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{23} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{23}
} }
func (m *LotteryDrawRecords) XXX_Unmarshal(b []byte) error { func (m *LotteryDrawRecords) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryDrawRecords.Unmarshal(m, b) return xxx_messageInfo_LotteryDrawRecords.Unmarshal(m, b)
} }
func (m *LotteryDrawRecords) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryDrawRecords) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryDrawRecords.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryDrawRecords.Marshal(b, m, deterministic)
} }
func (m *LotteryDrawRecords) XXX_Merge(src proto.Message) { func (dst *LotteryDrawRecords) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryDrawRecords.Merge(m, src) xxx_messageInfo_LotteryDrawRecords.Merge(dst, src)
} }
func (m *LotteryDrawRecords) XXX_Size() int { func (m *LotteryDrawRecords) XXX_Size() int {
return xxx_messageInfo_LotteryDrawRecords.Size(m) return xxx_messageInfo_LotteryDrawRecords.Size(m)
...@@ -1735,17 +1759,16 @@ func (m *LotteryUpdateRec) Reset() { *m = LotteryUpdateRec{} } ...@@ -1735,17 +1759,16 @@ func (m *LotteryUpdateRec) Reset() { *m = LotteryUpdateRec{} }
func (m *LotteryUpdateRec) String() string { return proto.CompactTextString(m) } func (m *LotteryUpdateRec) String() string { return proto.CompactTextString(m) }
func (*LotteryUpdateRec) ProtoMessage() {} func (*LotteryUpdateRec) ProtoMessage() {}
func (*LotteryUpdateRec) Descriptor() ([]byte, []int) { func (*LotteryUpdateRec) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{24} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{24}
} }
func (m *LotteryUpdateRec) XXX_Unmarshal(b []byte) error { func (m *LotteryUpdateRec) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryUpdateRec.Unmarshal(m, b) return xxx_messageInfo_LotteryUpdateRec.Unmarshal(m, b)
} }
func (m *LotteryUpdateRec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryUpdateRec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryUpdateRec.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryUpdateRec.Marshal(b, m, deterministic)
} }
func (m *LotteryUpdateRec) XXX_Merge(src proto.Message) { func (dst *LotteryUpdateRec) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryUpdateRec.Merge(m, src) xxx_messageInfo_LotteryUpdateRec.Merge(dst, src)
} }
func (m *LotteryUpdateRec) XXX_Size() int { func (m *LotteryUpdateRec) XXX_Size() int {
return xxx_messageInfo_LotteryUpdateRec.Size(m) return xxx_messageInfo_LotteryUpdateRec.Size(m)
...@@ -1781,17 +1804,16 @@ func (m *LotteryUpdateRecs) Reset() { *m = LotteryUpdateRecs{} } ...@@ -1781,17 +1804,16 @@ func (m *LotteryUpdateRecs) Reset() { *m = LotteryUpdateRecs{} }
func (m *LotteryUpdateRecs) String() string { return proto.CompactTextString(m) } func (m *LotteryUpdateRecs) String() string { return proto.CompactTextString(m) }
func (*LotteryUpdateRecs) ProtoMessage() {} func (*LotteryUpdateRecs) ProtoMessage() {}
func (*LotteryUpdateRecs) Descriptor() ([]byte, []int) { func (*LotteryUpdateRecs) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{25} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{25}
} }
func (m *LotteryUpdateRecs) XXX_Unmarshal(b []byte) error { func (m *LotteryUpdateRecs) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryUpdateRecs.Unmarshal(m, b) return xxx_messageInfo_LotteryUpdateRecs.Unmarshal(m, b)
} }
func (m *LotteryUpdateRecs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryUpdateRecs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryUpdateRecs.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryUpdateRecs.Marshal(b, m, deterministic)
} }
func (m *LotteryUpdateRecs) XXX_Merge(src proto.Message) { func (dst *LotteryUpdateRecs) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryUpdateRecs.Merge(m, src) xxx_messageInfo_LotteryUpdateRecs.Merge(dst, src)
} }
func (m *LotteryUpdateRecs) XXX_Size() int { func (m *LotteryUpdateRecs) XXX_Size() int {
return xxx_messageInfo_LotteryUpdateRecs.Size(m) return xxx_messageInfo_LotteryUpdateRecs.Size(m)
...@@ -1820,17 +1842,16 @@ func (m *LotteryUpdateBuyInfo) Reset() { *m = LotteryUpdateBuyInfo{} } ...@@ -1820,17 +1842,16 @@ func (m *LotteryUpdateBuyInfo) Reset() { *m = LotteryUpdateBuyInfo{} }
func (m *LotteryUpdateBuyInfo) String() string { return proto.CompactTextString(m) } func (m *LotteryUpdateBuyInfo) String() string { return proto.CompactTextString(m) }
func (*LotteryUpdateBuyInfo) ProtoMessage() {} func (*LotteryUpdateBuyInfo) ProtoMessage() {}
func (*LotteryUpdateBuyInfo) Descriptor() ([]byte, []int) { func (*LotteryUpdateBuyInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{26} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{26}
} }
func (m *LotteryUpdateBuyInfo) XXX_Unmarshal(b []byte) error { func (m *LotteryUpdateBuyInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LotteryUpdateBuyInfo.Unmarshal(m, b) return xxx_messageInfo_LotteryUpdateBuyInfo.Unmarshal(m, b)
} }
func (m *LotteryUpdateBuyInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LotteryUpdateBuyInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LotteryUpdateBuyInfo.Marshal(b, m, deterministic) return xxx_messageInfo_LotteryUpdateBuyInfo.Marshal(b, m, deterministic)
} }
func (m *LotteryUpdateBuyInfo) XXX_Merge(src proto.Message) { func (dst *LotteryUpdateBuyInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_LotteryUpdateBuyInfo.Merge(m, src) xxx_messageInfo_LotteryUpdateBuyInfo.Merge(dst, src)
} }
func (m *LotteryUpdateBuyInfo) XXX_Size() int { func (m *LotteryUpdateBuyInfo) XXX_Size() int {
return xxx_messageInfo_LotteryUpdateBuyInfo.Size(m) return xxx_messageInfo_LotteryUpdateBuyInfo.Size(m)
...@@ -1859,17 +1880,16 @@ func (m *ReplyLotteryPurchaseAddr) Reset() { *m = ReplyLotteryPurchaseAd ...@@ -1859,17 +1880,16 @@ func (m *ReplyLotteryPurchaseAddr) Reset() { *m = ReplyLotteryPurchaseAd
func (m *ReplyLotteryPurchaseAddr) String() string { return proto.CompactTextString(m) } func (m *ReplyLotteryPurchaseAddr) String() string { return proto.CompactTextString(m) }
func (*ReplyLotteryPurchaseAddr) ProtoMessage() {} func (*ReplyLotteryPurchaseAddr) ProtoMessage() {}
func (*ReplyLotteryPurchaseAddr) Descriptor() ([]byte, []int) { func (*ReplyLotteryPurchaseAddr) Descriptor() ([]byte, []int) {
return fileDescriptor_2cce7afd61783b10, []int{27} return fileDescriptor_lottery_e89d18c3b84fb8bd, []int{27}
} }
func (m *ReplyLotteryPurchaseAddr) XXX_Unmarshal(b []byte) error { func (m *ReplyLotteryPurchaseAddr) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyLotteryPurchaseAddr.Unmarshal(m, b) return xxx_messageInfo_ReplyLotteryPurchaseAddr.Unmarshal(m, b)
} }
func (m *ReplyLotteryPurchaseAddr) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *ReplyLotteryPurchaseAddr) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReplyLotteryPurchaseAddr.Marshal(b, m, deterministic) return xxx_messageInfo_ReplyLotteryPurchaseAddr.Marshal(b, m, deterministic)
} }
func (m *ReplyLotteryPurchaseAddr) XXX_Merge(src proto.Message) { func (dst *ReplyLotteryPurchaseAddr) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplyLotteryPurchaseAddr.Merge(m, src) xxx_messageInfo_ReplyLotteryPurchaseAddr.Merge(dst, src)
} }
func (m *ReplyLotteryPurchaseAddr) XXX_Size() int { func (m *ReplyLotteryPurchaseAddr) XXX_Size() int {
return xxx_messageInfo_ReplyLotteryPurchaseAddr.Size(m) return xxx_messageInfo_ReplyLotteryPurchaseAddr.Size(m)
...@@ -1891,7 +1911,6 @@ func init() { ...@@ -1891,7 +1911,6 @@ func init() {
proto.RegisterType((*PurchaseRecord)(nil), "types.PurchaseRecord") proto.RegisterType((*PurchaseRecord)(nil), "types.PurchaseRecord")
proto.RegisterType((*PurchaseRecords)(nil), "types.PurchaseRecords") proto.RegisterType((*PurchaseRecords)(nil), "types.PurchaseRecords")
proto.RegisterType((*Lottery)(nil), "types.Lottery") proto.RegisterType((*Lottery)(nil), "types.Lottery")
proto.RegisterMapType((map[string]*PurchaseRecords)(nil), "types.Lottery.RecordsEntry")
proto.RegisterType((*MissingRecord)(nil), "types.MissingRecord") proto.RegisterType((*MissingRecord)(nil), "types.MissingRecord")
proto.RegisterType((*LotteryAction)(nil), "types.LotteryAction") proto.RegisterType((*LotteryAction)(nil), "types.LotteryAction")
proto.RegisterType((*LotteryCreate)(nil), "types.LotteryCreate") proto.RegisterType((*LotteryCreate)(nil), "types.LotteryCreate")
...@@ -1920,87 +1939,89 @@ func init() { ...@@ -1920,87 +1939,89 @@ func init() {
proto.RegisterType((*ReplyLotteryPurchaseAddr)(nil), "types.ReplyLotteryPurchaseAddr") proto.RegisterType((*ReplyLotteryPurchaseAddr)(nil), "types.ReplyLotteryPurchaseAddr")
} }
func init() { proto.RegisterFile("lottery.proto", fileDescriptor_2cce7afd61783b10) } func init() { proto.RegisterFile("lottery.proto", fileDescriptor_lottery_e89d18c3b84fb8bd) }
var fileDescriptor_2cce7afd61783b10 = []byte{ var fileDescriptor_lottery_e89d18c3b84fb8bd = []byte{
// 1252 bytes of a gzipped FileDescriptorProto // 1285 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0x5f, 0x6f, 0xe3, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xdd, 0x6e, 0xe3, 0x44,
0x10, 0xaf, 0xed, 0x38, 0x69, 0x26, 0x69, 0xee, 0xba, 0x2d, 0x3d, 0x53, 0x50, 0x55, 0x59, 0x3a, 0x14, 0xae, 0xed, 0x38, 0x69, 0x4e, 0x7e, 0xb6, 0x9d, 0x86, 0xae, 0x59, 0x50, 0x55, 0x59, 0x2c,
0x54, 0xe9, 0x8e, 0x08, 0x02, 0x48, 0x08, 0x2a, 0xa4, 0xcb, 0x71, 0x28, 0x95, 0x7a, 0xbd, 0xd3, 0xaa, 0xb4, 0x10, 0x41, 0x40, 0x08, 0x41, 0x85, 0xb4, 0x59, 0x16, 0xa5, 0x52, 0xb7, 0xbb, 0x9a,
0xb6, 0x27, 0x1e, 0x78, 0x72, 0xe3, 0xbd, 0xab, 0xd5, 0xc4, 0x0e, 0xf6, 0xfa, 0x5a, 0xbf, 0x21, 0x16, 0x71, 0xc1, 0x95, 0x1b, 0xcf, 0x6e, 0xad, 0x26, 0x76, 0x18, 0x8f, 0xdb, 0xfa, 0x8e, 0x77,
0xbe, 0x04, 0x3c, 0xf3, 0xc4, 0x23, 0x1f, 0x81, 0x4f, 0xc1, 0x17, 0xe1, 0x0b, 0xa0, 0x9d, 0x5d, 0x40, 0x82, 0x07, 0xe0, 0x86, 0x4b, 0x1e, 0x81, 0xa7, 0xe0, 0x39, 0x90, 0x78, 0x01, 0x34, 0x3f,
0xc7, 0x6b, 0xc7, 0x49, 0x7a, 0xdc, 0x53, 0x76, 0x67, 0x67, 0x67, 0x67, 0x7e, 0xf3, 0xd7, 0x81, 0x8e, 0xc7, 0x8e, 0xf3, 0x53, 0xf6, 0xaa, 0x9e, 0x33, 0x67, 0xe6, 0x9c, 0xf9, 0xce, 0x39, 0xdf,
0xad, 0x49, 0xc4, 0x39, 0x8b, 0xb3, 0xfe, 0x2c, 0x8e, 0x78, 0x44, 0x6c, 0x9e, 0xcd, 0x58, 0xe2, 0x39, 0x29, 0x74, 0x26, 0x11, 0x63, 0x84, 0xa6, 0xfd, 0x19, 0x8d, 0x58, 0x84, 0x6c, 0x96, 0xce,
0x5e, 0x41, 0xef, 0x65, 0x1a, 0x8f, 0xaf, 0xbc, 0x84, 0x51, 0x36, 0x8e, 0x62, 0x9f, 0xec, 0x41, 0x48, 0xec, 0x5e, 0x41, 0xf7, 0x55, 0x42, 0xc7, 0x57, 0x5e, 0x4c, 0x30, 0x19, 0x47, 0xd4, 0x47,
0xd3, 0x9b, 0x46, 0x69, 0xc8, 0x1d, 0xe3, 0xd0, 0x38, 0xb2, 0xa8, 0xda, 0x09, 0x7a, 0x98, 0x4e, 0xfb, 0x50, 0xf7, 0xa6, 0x51, 0x12, 0x32, 0xc7, 0x38, 0x34, 0x8e, 0x2c, 0xac, 0x56, 0x5c, 0x1e,
0x2f, 0x59, 0xec, 0x98, 0x92, 0x2e, 0x77, 0x64, 0x17, 0xec, 0x20, 0xf4, 0xd9, 0xad, 0x63, 0x21, 0x26, 0xd3, 0x4b, 0x42, 0x1d, 0x53, 0xca, 0xe5, 0x0a, 0xf5, 0xc0, 0x0e, 0x42, 0x9f, 0xdc, 0x39,
0x59, 0x6e, 0xc8, 0x7d, 0xb0, 0x6e, 0xbc, 0xcc, 0x69, 0x20, 0x4d, 0x2c, 0xdd, 0x5f, 0x0d, 0xb8, 0x96, 0x10, 0xcb, 0x05, 0xda, 0x01, 0xeb, 0xd6, 0x4b, 0x9d, 0x9a, 0x90, 0xf1, 0x4f, 0xf7, 0x57,
0x57, 0x7e, 0x2a, 0x21, 0x9f, 0x42, 0x33, 0xc6, 0xa5, 0x63, 0x1c, 0x5a, 0x47, 0x9d, 0xc1, 0x07, 0x03, 0x1e, 0x14, 0x4d, 0xc5, 0xe8, 0x63, 0xa8, 0x53, 0xf1, 0xe9, 0x18, 0x87, 0xd6, 0x51, 0x6b,
0x7d, 0xd4, 0xaa, 0x5f, 0xe6, 0xa3, 0x8a, 0x89, 0x38, 0xd0, 0x7a, 0x9d, 0x86, 0xfe, 0x8f, 0x41, 0xf0, 0x4e, 0x5f, 0x78, 0xd5, 0x2f, 0xea, 0x61, 0xa5, 0x84, 0x1c, 0x68, 0xbc, 0x4e, 0x42, 0xff,
0xa8, 0x74, 0xc8, 0xb7, 0xe4, 0x13, 0xe8, 0x49, 0x35, 0x5f, 0x84, 0x8c, 0x46, 0x69, 0xe8, 0x2b, 0x87, 0x20, 0x54, 0x3e, 0x64, 0x4b, 0xf4, 0x21, 0x74, 0xa5, 0x9b, 0x2f, 0x43, 0x82, 0xa3, 0x24,
0x6d, 0x2a, 0x54, 0xf7, 0xf7, 0x26, 0xb4, 0x4e, 0x25, 0x0e, 0xe4, 0x63, 0x68, 0x2b, 0x48, 0x4e, 0xf4, 0x95, 0x37, 0x25, 0x29, 0x42, 0x50, 0xf3, 0x7c, 0x9f, 0x0a, 0xbf, 0x9a, 0x58, 0x7c, 0xbb,
0x7c, 0xb4, 0xb5, 0x4d, 0x0b, 0x82, 0x30, 0x37, 0xe1, 0x1e, 0x4f, 0x13, 0x7c, 0xca, 0xa6, 0x6a, 0xbf, 0xd4, 0xa1, 0x71, 0x2a, 0xb1, 0x41, 0xef, 0x43, 0x53, 0xc1, 0x74, 0xe2, 0x8b, 0xf7, 0x37,
0x47, 0x5c, 0xe8, 0x8e, 0x63, 0xe6, 0x71, 0x36, 0x62, 0xc1, 0x9b, 0x2b, 0xae, 0xde, 0x29, 0xd1, 0x71, 0x2e, 0xe0, 0x10, 0xc4, 0xcc, 0x63, 0x49, 0x2c, 0xcc, 0xdb, 0x58, 0xad, 0x90, 0x0b, 0xed,
0x08, 0x81, 0x86, 0x50, 0x4c, 0x59, 0x8f, 0x6b, 0x72, 0x08, 0x9d, 0x59, 0x1a, 0x0f, 0x27, 0xd1, 0x31, 0x25, 0x1e, 0x23, 0x23, 0x12, 0xbc, 0xb9, 0x62, 0xca, 0x76, 0x41, 0xc6, 0x2d, 0x73, 0x67,
0xf8, 0xfa, 0x2c, 0x9d, 0x3a, 0x36, 0x1e, 0xe9, 0x24, 0x21, 0xd9, 0x8f, 0xbd, 0x9b, 0x39, 0x4b, 0x15, 0x22, 0xe2, 0x1b, 0x1d, 0x42, 0x6b, 0x96, 0xd0, 0xe1, 0x24, 0x1a, 0x5f, 0x9f, 0x25, 0x53,
0x53, 0x4a, 0xd6, 0x69, 0xe4, 0x33, 0xd8, 0x99, 0x78, 0x09, 0xbf, 0x88, 0xbd, 0x30, 0xb9, 0x88, 0xc7, 0x16, 0x5b, 0xba, 0x88, 0xdf, 0xec, 0x53, 0xef, 0x76, 0xae, 0x52, 0x97, 0x37, 0xeb, 0x32,
0x5e, 0xa6, 0xf1, 0x39, 0xf7, 0x38, 0x73, 0x5a, 0xc8, 0x5a, 0x77, 0x44, 0x06, 0xb0, 0xab, 0x91, 0xf4, 0x09, 0xec, 0x4d, 0xbc, 0x98, 0x5d, 0x50, 0x2f, 0x8c, 0x2f, 0xa2, 0x57, 0x09, 0x3d, 0x67,
0xbf, 0x8f, 0xbd, 0x1b, 0x79, 0x65, 0x13, 0xaf, 0xd4, 0x9e, 0x91, 0xaf, 0xa0, 0x25, 0x11, 0x4f, 0x1e, 0x23, 0x4e, 0x43, 0xa8, 0x56, 0x6d, 0xa1, 0x01, 0xf4, 0x34, 0xf1, 0xb7, 0xd4, 0xbb, 0x95,
0x9c, 0x36, 0xfa, 0xe5, 0x23, 0xe5, 0x17, 0x05, 0x5d, 0x5f, 0xf9, 0xef, 0x59, 0xc8, 0xe3, 0x8c, 0x47, 0xb6, 0xc5, 0x91, 0xca, 0x3d, 0x6e, 0x85, 0x45, 0xcc, 0x9b, 0x64, 0xa1, 0xf1, 0x2f, 0xee,
0xe6, 0xbc, 0x42, 0x39, 0x1e, 0x71, 0x6f, 0x92, 0x7b, 0xcf, 0xbf, 0xb8, 0x15, 0x76, 0x80, 0x54, 0xb8, 0x43, 0x20, 0xad, 0x54, 0x6c, 0xa1, 0x03, 0x00, 0x89, 0xc0, 0x53, 0x8e, 0x78, 0x4b, 0x80,
0xae, 0xe6, 0x88, 0x1c, 0x00, 0x48, 0xe0, 0x9e, 0xf8, 0x7e, 0xec, 0x74, 0xd0, 0x07, 0x1a, 0x45, 0xa9, 0x49, 0x78, 0xe2, 0x50, 0x11, 0xaa, 0xb6, 0x4c, 0x1c, 0xb1, 0xe0, 0x98, 0x4c, 0x92, 0xf1,
0xc4, 0x56, 0x8c, 0xde, 0xec, 0xca, 0xd8, 0xc2, 0x8d, 0x80, 0x72, 0x92, 0x8e, 0xaf, 0xb3, 0x33, 0x75, 0x7a, 0x26, 0x73, 0xad, 0x23, 0x31, 0xd1, 0x44, 0x39, 0xda, 0x2f, 0xc3, 0x17, 0x5e, 0x10,
0x19, 0x8e, 0x5b, 0x12, 0x4a, 0x8d, 0x54, 0x38, 0xe9, 0x45, 0xf8, 0xdc, 0x0b, 0x42, 0xa7, 0xa7, 0x3a, 0x5d, 0x1d, 0x6d, 0x29, 0x43, 0xc7, 0xf0, 0x6e, 0xc5, 0xc3, 0xd5, 0x81, 0x07, 0xe2, 0xc0,
0x3b, 0x49, 0xd2, 0xc8, 0x31, 0x7c, 0x58, 0x83, 0x97, 0xba, 0x70, 0x0f, 0x2f, 0x2c, 0x67, 0x20, 0x72, 0x05, 0xf4, 0x0d, 0x3c, 0xaa, 0xc2, 0x40, 0x1d, 0xdf, 0x11, 0xc7, 0x57, 0x68, 0xa0, 0x63,
0xdf, 0xc1, 0x7e, 0x1d, 0x74, 0xea, 0xfa, 0x7d, 0xbc, 0xbe, 0x82, 0x83, 0x1c, 0x43, 0x6f, 0x1a, 0xe8, 0x4e, 0x83, 0x38, 0x0e, 0xc2, 0x37, 0x2a, 0xd1, 0x9d, 0x5d, 0x91, 0xde, 0x3d, 0x95, 0xde,
0x24, 0x49, 0x10, 0xbe, 0x51, 0x58, 0x3a, 0xdb, 0x88, 0xf4, 0xae, 0x42, 0xfa, 0xb9, 0x7e, 0x48, 0x2f, 0xf4, 0x4d, 0x5c, 0xd2, 0x45, 0x1f, 0x40, 0x27, 0x9a, 0x61, 0x72, 0xeb, 0x51, 0x1f, 0x7b,
0x2b, 0xbc, 0xfb, 0x14, 0xba, 0xba, 0x0b, 0x44, 0xb6, 0x5d, 0xb3, 0x4c, 0x05, 0xb1, 0x58, 0x92, 0x2c, 0x88, 0x1c, 0x24, 0x0c, 0x16, 0x85, 0x3c, 0xe3, 0x7d, 0x72, 0xa3, 0xab, 0xed, 0xc9, 0x8c,
0xc7, 0x60, 0xbf, 0xf5, 0x26, 0x29, 0xc3, 0xe8, 0xed, 0x0c, 0xf6, 0x6a, 0x13, 0x2b, 0xa1, 0x92, 0x2f, 0x4a, 0xd1, 0x17, 0x00, 0xb3, 0x84, 0x66, 0x7e, 0xf4, 0x84, 0x1f, 0xfb, 0x95, 0x65, 0x16,
0xe9, 0x1b, 0xf3, 0x6b, 0xc3, 0x7d, 0x08, 0x5b, 0xa5, 0x47, 0x05, 0xf8, 0x3c, 0x98, 0xb2, 0x04, 0x63, 0x4d, 0xd3, 0x7d, 0x0c, 0x9d, 0x82, 0x9b, 0x3c, 0x5c, 0x2c, 0x98, 0x92, 0x58, 0x94, 0xaa,
0x73, 0xd3, 0xa6, 0x72, 0xe3, 0xfe, 0x63, 0xc0, 0x96, 0x0a, 0x83, 0x27, 0x63, 0x1e, 0x44, 0x21, 0x8d, 0xe5, 0xc2, 0xfd, 0xdb, 0x80, 0x8e, 0x2a, 0x9e, 0xa7, 0x63, 0x16, 0x44, 0x21, 0xea, 0x43,
0xe9, 0x43, 0x53, 0x02, 0x8b, 0xef, 0x17, 0x26, 0x28, 0xae, 0xa7, 0x32, 0x33, 0x36, 0xa8, 0xe2, 0x5d, 0x86, 0x42, 0xd4, 0x4f, 0xfe, 0x68, 0xa5, 0xf5, 0x4c, 0x16, 0xc5, 0x16, 0x56, 0x5a, 0xe8,
0x22, 0x0f, 0xc1, 0xba, 0x4c, 0x33, 0xa5, 0xd8, 0x76, 0x99, 0x79, 0x98, 0x66, 0xa3, 0x0d, 0x2a, 0x31, 0x58, 0x97, 0x49, 0x2a, 0x2a, 0xaa, 0x35, 0xd8, 0x2d, 0x2a, 0x0f, 0x93, 0x74, 0xb4, 0x85,
0xce, 0xc9, 0x11, 0x34, 0x44, 0xe8, 0x63, 0x82, 0x75, 0x06, 0xa4, 0xcc, 0x27, 0xe0, 0x1c, 0x6d, 0xf9, 0x3e, 0x3a, 0x82, 0x1a, 0xcf, 0x7a, 0x51, 0x5b, 0xad, 0x01, 0x2a, 0xea, 0xf1, 0x00, 0x8c,
0x50, 0xe4, 0x20, 0x8f, 0xc0, 0x1e, 0x4f, 0xa2, 0x84, 0x61, 0xbe, 0x75, 0x06, 0x3b, 0x95, 0xf7, 0xb6, 0xb0, 0xd0, 0x40, 0x4f, 0xc0, 0x1e, 0x4f, 0xa2, 0x98, 0x88, 0x52, 0x6b, 0x0d, 0xf6, 0x4a,
0xc5, 0xd1, 0x68, 0x83, 0x4a, 0x1e, 0xd2, 0x03, 0x93, 0x67, 0x18, 0x93, 0x36, 0x35, 0x79, 0x36, 0xf6, 0xf9, 0xd6, 0x68, 0x0b, 0x4b, 0x1d, 0xd4, 0x05, 0x93, 0xa5, 0x22, 0x8b, 0x6d, 0x6c, 0xb2,
0x6c, 0x29, 0xa0, 0xdc, 0x57, 0x73, 0xbb, 0xa4, 0xc6, 0xd5, 0x8c, 0x35, 0xd6, 0x67, 0xac, 0xb9, 0x74, 0xd8, 0x00, 0xfb, 0xc6, 0x9b, 0x24, 0xc4, 0xfd, 0x3d, 0x7f, 0x98, 0x74, 0xb9, 0x5c, 0xad,
0x98, 0xb1, 0xee, 0x04, 0xa0, 0xb0, 0x6d, 0x7d, 0xcd, 0x51, 0xa5, 0xd7, 0x5c, 0x52, 0x7a, 0xad, 0xc6, 0xfa, 0x6a, 0x35, 0x2b, 0xaa, 0x75, 0x21, 0xba, 0xd6, 0x66, 0xd1, 0xad, 0x55, 0x45, 0xd7,
0x52, 0xe9, 0x5d, 0x2c, 0xb2, 0x8f, 0xa0, 0xa3, 0x21, 0xb4, 0xfa, 0x39, 0xf7, 0x31, 0x74, 0x75, 0x9d, 0x00, 0xe4, 0x50, 0xad, 0x67, 0x2f, 0x45, 0xec, 0xe6, 0x12, 0x62, 0xb7, 0x0a, 0xc4, 0xbe,
0x8c, 0xd6, 0x70, 0xff, 0x6b, 0x42, 0x8f, 0xb2, 0x31, 0x0b, 0x66, 0xfc, 0xfd, 0x2a, 0xe8, 0x01, 0x48, 0xe1, 0x4f, 0xa0, 0xa5, 0x01, 0xbe, 0xda, 0x9c, 0xfb, 0x11, 0xb4, 0x75, 0xc8, 0xd7, 0x68,
0xc0, 0x2c, 0x66, 0x6f, 0xcf, 0xe5, 0x99, 0x85, 0x67, 0x1a, 0x45, 0x54, 0x4f, 0x4f, 0x94, 0x83, 0xff, 0x6b, 0x42, 0x17, 0x93, 0x31, 0x09, 0x66, 0xec, 0xed, 0xb8, 0xf8, 0x00, 0x60, 0x46, 0xc9,
0x06, 0x0a, 0xc4, 0x75, 0x51, 0x08, 0x6c, 0xbd, 0x10, 0x14, 0xb8, 0x34, 0x4b, 0xb8, 0x14, 0x38, 0xcd, 0xb9, 0xdc, 0xb3, 0xc4, 0x9e, 0x26, 0xa9, 0xea, 0x00, 0x39, 0x13, 0xd9, 0x3a, 0x13, 0xe5,
0xb6, 0x4a, 0x38, 0x56, 0x0a, 0xc7, 0xe6, 0x62, 0xe1, 0x20, 0xd0, 0x10, 0x61, 0xee, 0xb4, 0x65, 0xb8, 0xd4, 0x0b, 0xb8, 0xe4, 0x38, 0x36, 0x0a, 0x38, 0x96, 0x98, 0x6b, 0x7b, 0x91, 0xb9, 0x10,
0xe5, 0x16, 0x6b, 0x21, 0x8d, 0xdf, 0x8e, 0xbc, 0xe4, 0x0a, 0xa3, 0xa6, 0x4d, 0xd5, 0x8e, 0x7c, 0xd4, 0x78, 0xd5, 0x38, 0x4d, 0xd9, 0x03, 0xf8, 0x37, 0xbf, 0x8d, 0xdd, 0x8d, 0xbc, 0xf8, 0x4a,
0x0b, 0x90, 0xce, 0x7c, 0x8f, 0xb3, 0x93, 0xf0, 0x75, 0x84, 0xc5, 0x6b, 0xa1, 0x50, 0xbe, 0xc2, 0x24, 0x61, 0x13, 0xab, 0x15, 0xfa, 0x1a, 0x20, 0x99, 0xf9, 0x1e, 0x23, 0x27, 0xe1, 0xeb, 0x48,
0xf3, 0x61, 0x9a, 0x09, 0x16, 0xaa, 0xb1, 0xe7, 0xae, 0xeb, 0xce, 0x5d, 0x57, 0xf4, 0xd1, 0x2d, 0xb0, 0x67, 0x6b, 0xf0, 0x5e, 0x31, 0x95, 0xbf, 0x17, 0xfb, 0xc3, 0x24, 0xe5, 0x2a, 0x58, 0x53,
0xad, 0x8f, 0xba, 0x7d, 0x01, 0xfa, 0xcf, 0x4a, 0x1c, 0xde, 0x5c, 0xed, 0xa5, 0x9f, 0x60, 0xbb, 0xcf, 0x42, 0xd7, 0x9e, 0x87, 0x2e, 0xef, 0xd2, 0x1d, 0xad, 0x4b, 0xbb, 0x7d, 0x0e, 0xfa, 0x4f,
0xe0, 0x57, 0x0f, 0xaf, 0xf1, 0x53, 0x8e, 0xb7, 0x59, 0x87, 0xb7, 0xa5, 0xe1, 0xed, 0xfe, 0x69, 0xea, 0x3a, 0x71, 0x72, 0x75, 0x94, 0x7e, 0x84, 0xdd, 0x5c, 0x5f, 0x19, 0x5e, 0x13, 0xa7, 0x0c,
0xc0, 0x6e, 0x49, 0xfa, 0x28, 0x48, 0x78, 0xb4, 0x36, 0x10, 0xee, 0xfc, 0x80, 0xa0, 0x8e, 0xd1, 0x6f, 0xb3, 0x0a, 0x6f, 0x4b, 0xc3, 0xdb, 0xfd, 0xc3, 0x80, 0x5e, 0xe1, 0xf6, 0x51, 0x10, 0xb3,
0x6f, 0x0d, 0x8c, 0x0a, 0xb9, 0x11, 0xd2, 0xfd, 0x20, 0x66, 0x58, 0x6d, 0x30, 0x00, 0x6c, 0x5a, 0x68, 0x6d, 0x22, 0x6c, 0x6c, 0x80, 0x4b, 0xc7, 0x22, 0x6e, 0x35, 0x91, 0x15, 0x72, 0xc1, 0x6f,
0x10, 0x0a, 0xdc, 0x9a, 0x3a, 0x6e, 0x27, 0xb0, 0x53, 0x68, 0x7a, 0x2a, 0x3c, 0x7c, 0x07, 0x24, 0xf7, 0x03, 0x4a, 0x04, 0x79, 0x89, 0x04, 0xb0, 0x71, 0x2e, 0xc8, 0x71, 0xab, 0xeb, 0xb8, 0x9d,
0xe6, 0x4a, 0x99, 0x87, 0x56, 0x61, 0xf5, 0x2f, 0x06, 0xec, 0x55, 0x64, 0xdd, 0xcd, 0x6e, 0x4d, 0xc0, 0x5e, 0xee, 0xe9, 0x29, 0x8f, 0xf0, 0x06, 0x48, 0xcc, 0x9d, 0x32, 0x0f, 0xad, 0xfc, 0xd5,
0x5c, 0x9d, 0x8d, 0xd6, 0x52, 0x1b, 0x1b, 0x15, 0x1b, 0xdd, 0x3f, 0x50, 0x85, 0xd9, 0x24, 0x53, 0x3f, 0x1b, 0xb0, 0x5f, 0xba, 0x6b, 0xb3, 0x77, 0x6b, 0xd7, 0x55, 0xbd, 0xd1, 0x5a, 0xfa, 0xc6,
0x4a, 0x9c, 0x45, 0xf1, 0xd4, 0x9b, 0xa0, 0x45, 0xd5, 0x79, 0xc4, 0xa8, 0x99, 0x47, 0x2a, 0x95, 0x5a, 0xe9, 0x8d, 0xee, 0x3f, 0xc2, 0x85, 0xd9, 0x24, 0x55, 0x4e, 0x9c, 0x45, 0x74, 0xea, 0x4d,
0xcc, 0x5c, 0x5f, 0xc9, 0xac, 0x9a, 0xd9, 0xa3, 0xdc, 0xac, 0x1b, 0xd5, 0x66, 0xed, 0xfe, 0xd6, 0xc4, 0x8b, 0xca, 0x93, 0x8d, 0x51, 0x31, 0xd9, 0x94, 0x78, 0xd1, 0x5c, 0xcf, 0x8b, 0x56, 0x05,
0x80, 0x07, 0xba, 0x92, 0x4f, 0xd3, 0x38, 0x66, 0x21, 0x47, 0x2d, 0x8b, 0x5a, 0x60, 0x94, 0x6a, 0x2f, 0x16, 0xa7, 0x85, 0xda, 0xc2, 0xb4, 0xb0, 0xc0, 0x9b, 0xf6, 0x66, 0xbc, 0x59, 0xaf, 0xe4,
0x41, 0x3e, 0x29, 0x99, 0xda, 0xa4, 0xb4, 0x64, 0xc6, 0xb1, 0xde, 0x7d, 0xc6, 0x69, 0xac, 0x98, 0xcd, 0xdf, 0x6a, 0xf0, 0x50, 0x7f, 0xf2, 0xb3, 0x84, 0x52, 0x12, 0x32, 0xf1, 0xe6, 0x9c, 0x59,
0x71, 0x96, 0x0c, 0x2b, 0xf6, 0xf2, 0x61, 0x65, 0xee, 0xce, 0xe6, 0x8a, 0x61, 0xa4, 0xb5, 0x58, 0x8c, 0x02, 0xb3, 0x64, 0x13, 0x9c, 0xa9, 0x4d, 0x70, 0x4b, 0x66, 0x2f, 0xeb, 0xfe, 0xb3, 0x57,
0x53, 0x56, 0x0e, 0x1a, 0x9b, 0xef, 0x37, 0x68, 0xb4, 0xd7, 0x0e, 0x1a, 0x15, 0xdf, 0xc3, 0x7a, 0xed, 0xfe, 0xb3, 0x97, 0xbd, 0x7c, 0xf6, 0x9a, 0x27, 0x47, 0x7d, 0xc5, 0x6c, 0xd5, 0x58, 0x64,
0xdf, 0x77, 0x6a, 0x7c, 0xbf, 0x38, 0xae, 0x74, 0xef, 0x3e, 0xae, 0xb8, 0x43, 0x38, 0xd0, 0x03, 0xa8, 0x95, 0x73, 0xd3, 0xf6, 0xdb, 0xcd, 0x4d, 0xcd, 0xb5, 0x73, 0x53, 0x29, 0x93, 0x60, 0x7d,
0x43, 0x65, 0xcf, 0xa9, 0x86, 0x51, 0x05, 0x45, 0x03, 0xf3, 0x4f, 0x27, 0xb9, 0x27, 0xa2, 0xf4, 0x26, 0xb5, 0x2a, 0x32, 0x69, 0x71, 0xfa, 0x6a, 0x6f, 0x3e, 0x7d, 0xb9, 0x43, 0x38, 0xd0, 0x13,
0x14, 0x32, 0xce, 0xaf, 0xa2, 0x1b, 0x8c, 0xac, 0xcf, 0x8b, 0x59, 0x55, 0x7e, 0x43, 0x3c, 0x58, 0x43, 0xd5, 0xe2, 0xa9, 0x86, 0x51, 0x09, 0x45, 0x43, 0x54, 0xb3, 0x2e, 0x72, 0x4f, 0x38, 0x91,
0x98, 0x28, 0x94, 0x56, 0x39, 0x9f, 0xfb, 0x0c, 0x76, 0xf2, 0x3c, 0x42, 0xd9, 0xc5, 0x87, 0x4f, 0xe5, 0x77, 0x9c, 0x5f, 0x45, 0xb7, 0x22, 0xb3, 0x3e, 0x85, 0x06, 0x55, 0x2e, 0xc9, 0xdf, 0x3b,
0x98, 0x3f, 0x5f, 0xdf, 0x4d, 0x4a, 0x5d, 0xd9, 0xfd, 0xdb, 0x80, 0xfb, 0xd5, 0x47, 0xde, 0x55, 0x0f, 0x17, 0xc6, 0x1d, 0xe5, 0x55, 0xa6, 0xe7, 0x3e, 0x87, 0xbd, 0xac, 0x2a, 0xc5, 0xdd, 0xf9,
0xc8, 0x92, 0x3a, 0x28, 0xda, 0x50, 0x36, 0xcb, 0x03, 0x18, 0xd7, 0x79, 0xc7, 0xb0, 0x6b, 0x3a, 0x8f, 0xb4, 0x30, 0x33, 0x5f, 0xdd, 0x9b, 0x0a, 0x3d, 0xde, 0xfd, 0xcb, 0x80, 0x9d, 0xb2, 0x91,
0x86, 0x5e, 0xf9, 0xe6, 0x2d, 0xac, 0x55, 0xdb, 0xc2, 0x36, 0xf5, 0x16, 0xe6, 0xfe, 0x00, 0xdb, 0xfb, 0x5e, 0xb2, 0x84, 0x55, 0x79, 0x53, 0x4b, 0x67, 0x59, 0x02, 0x8b, 0xef, 0xac, 0xff, 0xd8,
0x55, 0x0b, 0x92, 0xff, 0x83, 0xe8, 0x74, 0x2e, 0x47, 0x84, 0xdf, 0x1a, 0x28, 0xea, 0xcb, 0x62, 0x15, 0xfd, 0x47, 0xe7, 0xd1, 0x79, 0x43, 0x6c, 0x54, 0x36, 0xc4, 0x6d, 0xbd, 0x21, 0xba, 0xdf,
0xae, 0xb6, 0x55, 0xab, 0x76, 0xa3, 0xa4, 0xf6, 0x08, 0xc8, 0xc2, 0x73, 0x09, 0x19, 0x54, 0xf5, 0xc1, 0x6e, 0xf9, 0x05, 0xf1, 0xff, 0x41, 0x74, 0x3a, 0xbf, 0x87, 0xa7, 0xdf, 0x1a, 0x28, 0xaa,
0x76, 0x16, 0x67, 0xc6, 0xaa, 0xe2, 0xc7, 0x73, 0x17, 0xca, 0x56, 0x4d, 0xd9, 0xb8, 0x80, 0xd5, 0x49, 0x36, 0x73, 0xdb, 0xaa, 0x74, 0xbb, 0x56, 0x70, 0x7b, 0x04, 0x68, 0xc1, 0x5c, 0x8c, 0x06,
0xa8, 0xc2, 0x2a, 0x5c, 0x62, 0x16, 0x2e, 0xd1, 0xe0, 0x9b, 0xdf, 0x5e, 0x0f, 0xdf, 0x9c, 0xb5, 0x65, 0xbf, 0x9d, 0xc5, 0x81, 0xb6, 0xec, 0xf8, 0xf1, 0x3c, 0x84, 0xb2, 0xf1, 0x63, 0x32, 0xce,
0xd0, 0xe2, 0x2f, 0x03, 0x76, 0xeb, 0x26, 0x06, 0x32, 0x84, 0xd6, 0xa5, 0x5c, 0x2a, 0x59, 0x47, 0x61, 0x35, 0xca, 0xb0, 0xf2, 0x90, 0x98, 0x79, 0x48, 0x34, 0xf8, 0xe6, 0xa7, 0xd7, 0xc3, 0x37,
0x2b, 0xe6, 0x8b, 0xbe, 0xfa, 0x55, 0x5f, 0x65, 0xea, 0xe2, 0xfe, 0x05, 0x74, 0xf5, 0x83, 0x9a, 0x57, 0xcd, 0xbd, 0xf8, 0xd3, 0x80, 0x5e, 0xd5, 0xfc, 0x81, 0x86, 0xd0, 0xb8, 0x94, 0x9f, 0xea,
0x6f, 0x85, 0x7e, 0xf9, 0x5b, 0xc1, 0x59, 0xa2, 0x6f, 0xe9, 0x6b, 0xe1, 0x4b, 0x70, 0xf4, 0x74, 0xae, 0xa3, 0x15, 0xd3, 0x4a, 0x5f, 0xfd, 0x7d, 0x1e, 0x32, 0x9a, 0xe2, 0xec, 0xe0, 0xa3, 0x0b,
0xcc, 0x4b, 0x25, 0x7e, 0xb5, 0x39, 0xd0, 0x12, 0x3d, 0x9e, 0x25, 0x12, 0x81, 0x36, 0xcd, 0xb7, 0x68, 0xeb, 0x1b, 0x3c, 0x8f, 0xae, 0x49, 0xaa, 0x7a, 0x1f, 0xff, 0x44, 0x7d, 0x35, 0x9f, 0xab,
0x97, 0x4d, 0xfc, 0xef, 0xe1, 0x8b, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb7, 0x56, 0x83, 0xf5, 0xdf, 0x0b, 0xce, 0x12, 0x7f, 0x63, 0x2c, 0xd5, 0xbe, 0x32, 0xbf, 0x34, 0xdc, 0xcf, 0xc1, 0xd1,
0x8c, 0x10, 0x00, 0x00, 0xcb, 0x31, 0xa3, 0x4a, 0xd1, 0x56, 0x1c, 0x68, 0xf0, 0x89, 0x81, 0xc4, 0x12, 0x81, 0x26, 0xce,
0x96, 0x97, 0x75, 0xf1, 0x7f, 0x92, 0xcf, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x62, 0x68, 0x00,
0x1f, 0x38, 0x11, 0x00, 0x00,
} }
...@@ -9,6 +9,8 @@ type LotteryCreateTx struct { ...@@ -9,6 +9,8 @@ type LotteryCreateTx struct {
PurBlockNum int64 `json:"purBlockNum"` PurBlockNum int64 `json:"purBlockNum"`
DrawBlockNum int64 `json:"drawBlockNum"` DrawBlockNum int64 `json:"drawBlockNum"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
OpRewardRatio int64 `json:"opRewardRatio"`
DevRewardRatio int64 `json:"devRewardRatio"`
} }
// LotteryBuyTx for construction // LotteryBuyTx for construction
......
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