Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
47379749
Commit
47379749
authored
May 16, 2019
by
caopingcp
Committed by
vipwzw
May 18, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update vrf usage
parent
be6fe665
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
284 additions
and
663 deletions
+284
-663
ticket.go
plugin/consensus/ticket/ticket.go
+10
-6
ticket_test.go
plugin/consensus/ticket/ticket_test.go
+8
-3
ticketnum.go
plugin/dapp/ticket/executor/ticketnum.go
+1
-3
ticket.proto
plugin/dapp/ticket/proto/ticket.proto
+2
-4
ticket.pb.go
plugin/dapp/ticket/types/ticket.pb.go
+263
-647
No files found.
plugin/consensus/ticket/ticket.go
View file @
47379749
...
...
@@ -6,6 +6,7 @@ package ticket
import
(
"bytes"
"crypto/ecdsa"
"encoding/hex"
"errors"
"fmt"
...
...
@@ -20,13 +21,14 @@ import (
"github.com/33cn/chain33/common/crypto"
"github.com/33cn/chain33/common/difficulty"
"github.com/33cn/chain33/common/log/log15"
vrf
"github.com/33cn/chain33/common/vrf/
p256
"
vrf
"github.com/33cn/chain33/common/vrf/
secp256k1
"
"github.com/33cn/chain33/queue"
drivers
"github.com/33cn/chain33/system/consensus"
driver
"github.com/33cn/chain33/system/dapp"
cty
"github.com/33cn/chain33/system/dapp/coins/types"
"github.com/33cn/chain33/types"
ty
"github.com/33cn/plugin/plugin/dapp/ticket/types"
secp256k1
"github.com/btcsuite/btcd/btcec"
"github.com/golang/protobuf/proto"
)
...
...
@@ -377,11 +379,12 @@ func (client *Client) CheckBlock(parent *types.Block, current *types.BlockDetail
if
input
==
nil
{
input
=
miner
.
PrivHash
}
if
err
=
vrfVerify
(
miner
.
PubKey
,
input
,
miner
.
VrfProof
,
miner
.
VrfHash
);
err
!=
nil
{
minerTx
:=
current
.
Block
.
Txs
[
0
]
if
err
=
vrfVerify
(
minerTx
.
Signature
.
Pubkey
,
input
,
miner
.
VrfProof
,
miner
.
VrfHash
);
err
!=
nil
{
return
err
}
}
else
{
if
len
(
miner
.
PubKey
)
!=
0
||
len
(
miner
.
VrfHash
)
!=
0
||
len
(
miner
.
VrfProof
)
!=
0
{
if
len
(
miner
.
VrfHash
)
!=
0
||
len
(
miner
.
VrfProof
)
!=
0
{
tlog
.
Error
(
"block error: not yet add vrf"
)
return
ty
.
ErrNoVrf
}
...
...
@@ -390,11 +393,12 @@ func (client *Client) CheckBlock(parent *types.Block, current *types.BlockDetail
}
func
vrfVerify
(
pub
[]
byte
,
input
[]
byte
,
proof
[]
byte
,
hash
[]
byte
)
error
{
vrfPub
,
err
:=
vrf
.
ParseVrfPubKey
(
pub
)
pubKey
,
err
:=
secp256k1
.
ParsePubKey
(
pub
,
secp256k1
.
S256
()
)
if
err
!=
nil
{
tlog
.
Error
(
"vrfVerify"
,
"err"
,
err
)
return
ty
.
ErrVrfVerify
}
vrfPub
:=
&
vrf
.
PublicKey
{
PublicKey
:
(
*
ecdsa
.
PublicKey
)(
pubKey
)}
vrfHash
,
err
:=
vrfPub
.
ProofToHash
(
input
,
proof
)
if
err
!=
nil
{
tlog
.
Error
(
"vrfVerify"
,
"err"
,
err
)
...
...
@@ -653,9 +657,9 @@ func (client *Client) addMinerTx(parent, block *types.Block, diff *big.Int, priv
if
input
==
nil
{
input
=
miner
.
PrivHash
}
vrfPriv
,
_
,
pubKey
:=
vrf
.
GenVrfKey
(
priv
)
privKey
,
_
:=
secp256k1
.
PrivKeyFromBytes
(
secp256k1
.
S256
(),
priv
.
Bytes
())
vrfPriv
:=
&
vrf
.
PrivateKey
{
PrivateKey
:
(
*
ecdsa
.
PrivateKey
)(
privKey
)}
vrfHash
,
vrfProof
:=
vrfPriv
.
Evaluate
(
input
)
miner
.
PubKey
=
pubKey
miner
.
VrfHash
=
vrfHash
[
:
]
miner
.
VrfProof
=
vrfProof
}
...
...
plugin/consensus/ticket/ticket_test.go
View file @
47379749
...
...
@@ -5,17 +5,19 @@
package
ticket
import
(
"crypto/ecdsa"
"fmt"
"testing"
"github.com/33cn/chain33/account"
"github.com/33cn/chain33/common/crypto"
vrf
"github.com/33cn/chain33/common/vrf/
p256
"
vrf
"github.com/33cn/chain33/common/vrf/
secp256k1
"
"github.com/33cn/chain33/queue"
"github.com/33cn/chain33/types"
"github.com/33cn/chain33/util"
"github.com/33cn/chain33/util/testnode"
ty
"github.com/33cn/plugin/plugin/dapp/ticket/types"
secp256k1
"github.com/btcsuite/btcd/btcec"
"github.com/stretchr/testify/assert"
_
"github.com/33cn/chain33/system"
...
...
@@ -170,8 +172,11 @@ func Test_vrfVerify(t *testing.T) {
assert
.
NoError
(
t
,
err
)
priv
,
err
:=
c
.
GenKey
()
assert
.
NoError
(
t
,
err
)
pub
:=
priv
.
PubKey
()
.
Bytes
()
privKey
,
_
:=
secp256k1
.
PrivKeyFromBytes
(
secp256k1
.
S256
(),
priv
.
Bytes
())
vpriv
:=
&
vrf
.
PrivateKey
{
PrivateKey
:
(
*
ecdsa
.
PrivateKey
)(
privKey
)}
vpriv
,
_
,
pubKey
:=
vrf
.
GenVrfKey
(
priv
)
m1
:=
[]
byte
(
"data1"
)
m2
:=
[]
byte
(
"data2"
)
m3
:=
[]
byte
(
"data2"
)
...
...
@@ -191,7 +196,7 @@ func Test_vrfVerify(t *testing.T) {
{
m3
,
hash3
,
proof1
,
ty
.
ErrVrfVerify
},
{
m3
,
hash1
,
proof3
,
ty
.
ErrVrfVerify
},
}
{
err
:=
vrfVerify
(
pub
Key
,
tc
.
m
,
tc
.
proof
,
tc
.
hash
[
:
])
err
:=
vrfVerify
(
pub
,
tc
.
m
,
tc
.
proof
,
tc
.
hash
[
:
])
if
got
,
want
:=
err
,
tc
.
err
;
got
!=
want
{
t
.
Errorf
(
"vrfVerify(%s, %x): %v, want %v"
,
tc
.
m
,
tc
.
proof
,
got
,
want
)
}
...
...
plugin/dapp/ticket/executor/ticketnum.go
View file @
47379749
...
...
@@ -45,7 +45,6 @@ func (ticket *Ticket) GetRandNum(blockHash []byte, blockNum int64) (types.Messag
var
ticketIds
string
var
privHashs
[]
byte
var
vrfHashs
[]
byte
var
vrfProofs
[]
byte
for
_
,
ticketAction
:=
range
txActions
{
//tlog.Debug("GetRandNum", "modify", ticketAction.GetMiner().GetModify(), "bits", ticketAction.GetMiner().GetBits(), "ticketId", ticketAction.GetMiner().GetTicketId(), "PrivHash", ticketAction.GetMiner().GetPrivHash())
...
...
@@ -54,12 +53,11 @@ func (ticket *Ticket) GetRandNum(blockHash []byte, blockNum int64) (types.Messag
ticketIds
+=
ticketAction
.
GetMiner
()
.
GetTicketId
()
privHashs
=
append
(
privHashs
,
ticketAction
.
GetMiner
()
.
GetPrivHash
()
...
)
vrfHashs
=
append
(
vrfHashs
,
ticketAction
.
GetMiner
()
.
GetVrfHash
()
...
)
vrfProofs
=
append
(
vrfProofs
,
ticketAction
.
GetMiner
()
.
GetVrfProof
()
...
)
}
newmodify
:=
fmt
.
Sprintf
(
"%s:%s:%d:%s"
,
string
(
modifies
),
ticketIds
,
bits
,
string
(
privHashs
))
if
len
(
vrfHashs
)
!=
0
{
newmodify
=
newmodify
+
":"
+
fmt
.
Sprintf
(
"%x:%x"
,
vrfHashs
,
vrfProof
s
)
newmodify
=
fmt
.
Sprintf
(
"%s:%x"
,
newmodify
,
vrfHash
s
)
}
modify
:=
common
.
Sha256
([]
byte
(
newmodify
))
...
...
plugin/dapp/ticket/proto/ticket.proto
View file @
47379749
...
...
@@ -41,12 +41,10 @@ message TicketMiner {
bytes
modify
=
4
;
//挖到区块时公开
bytes
privHash
=
5
;
//VRF公钥
bytes
pubKey
=
6
;
//VRF计算得到的hash
bytes
vrfHash
=
7
;
bytes
vrfHash
=
6
;
//VRF计算得到的proof
bytes
vrfProof
=
8
;
bytes
vrfProof
=
7
;
}
message
TicketMinerOld
{
...
...
plugin/dapp/ticket/types/ticket.pb.go
View file @
47379749
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: ticket.proto
/*
Package types is a generated protocol buffer package.
It is generated from these files:
ticket.proto
It has these top-level messages:
Ticket
TicketAction
TicketMiner
TicketMinerOld
MinerFlag
TicketBind
TicketOpen
TicketGenesis
TicketClose
TicketList
TicketInfos
ReplyTicketList
ReplyWalletTickets
ReceiptTicket
ReceiptTicketBind
ReqBindMiner
ReplyBindMiner
*/
package
types
import
(
context
"contex
t"
fmt
"fmt
"
math
"math
"
import
proto
"github.com/golang/protobuf/proto"
import
fmt
"fm
t"
import
math
"math
"
import
types1
"github.com/33cn/chain33/types
"
types
"github.com/33cn/chain33/types"
proto
"github.com/golang/protobuf/proto
"
import
(
context
"golang.org/x/net/context
"
grpc
"google.golang.org/grpc"
)
...
...
@@ -25,51 +50,28 @@ var _ = math.Inf
const
_
=
proto
.
ProtoPackageIsVersion2
// please upgrade the proto package
type
Ticket
struct
{
TicketId
string
`protobuf:"bytes,1,opt,name=ticketId
,proto3
" json:"ticketId,omitempty"`
TicketId
string
`protobuf:"bytes,1,opt,name=ticketId" json:"ticketId,omitempty"`
// 0 -> 未成熟 1 -> 可挖矿 2 -> 已挖成功 3-> 已关闭
Status
int32
`protobuf:"varint,2,opt,name=status
,proto3
" json:"status,omitempty"`
Status
int32
`protobuf:"varint,2,opt,name=status" json:"status,omitempty"`
// genesis 创建的私钥比较特殊
IsGenesis
bool
`protobuf:"varint,3,opt,name=isGenesis
,proto3
" json:"isGenesis,omitempty"`
//创建时间
CreateTime
int64
`protobuf:"varint,4,opt,name=createTime
,proto3
" json:"createTime,omitempty"`
//挖矿时间
MinerTime
int64
`protobuf:"varint,5,opt,name=minerTime
,proto3
" json:"minerTime,omitempty"`
//挖到的币的数目
MinerValue
int64
`protobuf:"varint,8,opt,name=minerValue
,proto3
" json:"minerValue,omitempty"`
MinerAddress
string
`protobuf:"bytes,6,opt,name=minerAddress
,proto3
" json:"minerAddress,omitempty"`
IsGenesis
bool
`protobuf:"varint,3,opt,name=isGenesis" json:"isGenesis,omitempty"`
//
创建时间
CreateTime
int64
`protobuf:"varint,4,opt,name=createTime" json:"createTime,omitempty"`
//
挖矿时间
MinerTime
int64
`protobuf:"varint,5,opt,name=minerTime" json:"minerTime,omitempty"`
//
挖到的币的数目
MinerValue
int64
`protobuf:"varint,8,opt,name=minerValue" json:"minerValue,omitempty"`
MinerAddress
string
`protobuf:"bytes,6,opt,name=minerAddress" json:"minerAddress,omitempty"`
// return wallet
ReturnAddress
string
`protobuf:"bytes,7,opt,name=returnAddress,proto3" json:"returnAddress,omitempty"`
//miner Price
Price
int64
`protobuf:"varint,9,opt,name=price,proto3" json:"price,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
Ticket
)
Reset
()
{
*
m
=
Ticket
{}
}
func
(
m
*
Ticket
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Ticket
)
ProtoMessage
()
{}
func
(
*
Ticket
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
0
}
}
func
(
m
*
Ticket
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_Ticket
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
Ticket
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_Ticket
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
Ticket
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_Ticket
.
Merge
(
m
,
src
)
}
func
(
m
*
Ticket
)
XXX_Size
()
int
{
return
xxx_messageInfo_Ticket
.
Size
(
m
)
}
func
(
m
*
Ticket
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_Ticket
.
DiscardUnknown
(
m
)
ReturnAddress
string
`protobuf:"bytes,7,opt,name=returnAddress" json:"returnAddress,omitempty"`
// miner Price
Price
int64
`protobuf:"varint,9,opt,name=price" json:"price,omitempty"`
}
var
xxx_messageInfo_Ticket
proto
.
InternalMessageInfo
func
(
m
*
Ticket
)
Reset
()
{
*
m
=
Ticket
{}
}
func
(
m
*
Ticket
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Ticket
)
ProtoMessage
()
{}
func
(
*
Ticket
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
0
}
}
func
(
m
*
Ticket
)
GetTicketId
()
string
{
if
m
!=
nil
{
...
...
@@ -142,71 +144,40 @@ type TicketAction struct {
// *TicketAction_Genesis
// *TicketAction_Tclose
// *TicketAction_Miner
Value
isTicketAction_Value
`protobuf_oneof:"value"`
Ty
int32
`protobuf:"varint,10,opt,name=ty,proto3" json:"ty,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
Value
isTicketAction_Value
`protobuf_oneof:"value"`
Ty
int32
`protobuf:"varint,10,opt,name=ty" json:"ty,omitempty"`
}
func
(
m
*
TicketAction
)
Reset
()
{
*
m
=
TicketAction
{}
}
func
(
m
*
TicketAction
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketAction
)
ProtoMessage
()
{}
func
(
*
TicketAction
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
1
}
}
func
(
m
*
TicketAction
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_TicketAction
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
TicketAction
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_TicketAction
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
TicketAction
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_TicketAction
.
Merge
(
m
,
src
)
}
func
(
m
*
TicketAction
)
XXX_Size
()
int
{
return
xxx_messageInfo_TicketAction
.
Size
(
m
)
}
func
(
m
*
TicketAction
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_TicketAction
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_TicketAction
proto
.
InternalMessageInfo
func
(
m
*
TicketAction
)
Reset
()
{
*
m
=
TicketAction
{}
}
func
(
m
*
TicketAction
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketAction
)
ProtoMessage
()
{}
func
(
*
TicketAction
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
}
}
type
isTicketAction_Value
interface
{
isTicketAction_Value
()
}
type
TicketAction_Tbind
struct
{
Tbind
*
TicketBind
`protobuf:"bytes,5,opt,name=tbind,
proto3,
oneof"`
Tbind
*
TicketBind
`protobuf:"bytes,5,opt,name=tbind,oneof"`
}
type
TicketAction_Topen
struct
{
Topen
*
TicketOpen
`protobuf:"bytes,1,opt,name=topen,
proto3,
oneof"`
Topen
*
TicketOpen
`protobuf:"bytes,1,opt,name=topen,oneof"`
}
type
TicketAction_Genesis
struct
{
Genesis
*
TicketGenesis
`protobuf:"bytes,2,opt,name=genesis,
proto3,
oneof"`
Genesis
*
TicketGenesis
`protobuf:"bytes,2,opt,name=genesis,oneof"`
}
type
TicketAction_Tclose
struct
{
Tclose
*
TicketClose
`protobuf:"bytes,3,opt,name=tclose,
proto3,
oneof"`
Tclose
*
TicketClose
`protobuf:"bytes,3,opt,name=tclose,oneof"`
}
type
TicketAction_Miner
struct
{
Miner
*
TicketMiner
`protobuf:"bytes,4,opt,name=miner,
proto3,
oneof"`
Miner
*
TicketMiner
`protobuf:"bytes,4,opt,name=miner,oneof"`
}
func
(
*
TicketAction_Tbind
)
isTicketAction_Value
()
{}
func
(
*
TicketAction_Topen
)
isTicketAction_Value
()
{}
func
(
*
TicketAction_Tbind
)
isTicketAction_Value
()
{}
func
(
*
TicketAction_Topen
)
isTicketAction_Value
()
{}
func
(
*
TicketAction_Genesis
)
isTicketAction_Value
()
{}
func
(
*
TicketAction_Tclose
)
isTicketAction_Value
()
{}
func
(
*
TicketAction_Miner
)
isTicketAction_Value
()
{}
func
(
*
TicketAction_Tclose
)
isTicketAction_Value
()
{}
func
(
*
TicketAction_Miner
)
isTicketAction_Value
()
{}
func
(
m
*
TicketAction
)
GetValue
()
isTicketAction_Value
{
if
m
!=
nil
{
...
...
@@ -358,27 +329,27 @@ func _TicketAction_OneofSizer(msg proto.Message) (n int) {
switch
x
:=
m
.
Value
.
(
type
)
{
case
*
TicketAction_Tbind
:
s
:=
proto
.
Size
(
x
.
Tbind
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
5
<<
3
|
proto
.
WireBytes
)
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
TicketAction_Topen
:
s
:=
proto
.
Size
(
x
.
Topen
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
1
<<
3
|
proto
.
WireBytes
)
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
TicketAction_Genesis
:
s
:=
proto
.
Size
(
x
.
Genesis
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
2
<<
3
|
proto
.
WireBytes
)
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
TicketAction_Tclose
:
s
:=
proto
.
Size
(
x
.
Tclose
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
3
<<
3
|
proto
.
WireBytes
)
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
TicketAction_Miner
:
s
:=
proto
.
Size
(
x
.
Miner
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
4
<<
3
|
proto
.
WireBytes
)
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
nil
:
...
...
@@ -389,47 +360,22 @@ func _TicketAction_OneofSizer(msg proto.Message) (n int) {
}
type
TicketMiner
struct
{
Bits
uint32
`protobuf:"varint,1,opt,name=bits
,proto3
" json:"bits,omitempty"`
Reward
int64
`protobuf:"varint,2,opt,name=reward
,proto3
" json:"reward,omitempty"`
TicketId
string
`protobuf:"bytes,3,opt,name=ticketId
,proto3
" json:"ticketId,omitempty"`
Bits
uint32
`protobuf:"varint,1,opt,name=bits" json:"bits,omitempty"`
Reward
int64
`protobuf:"varint,2,opt,name=reward" json:"reward,omitempty"`
TicketId
string
`protobuf:"bytes,3,opt,name=ticketId" json:"ticketId,omitempty"`
Modify
[]
byte
`protobuf:"bytes,4,opt,name=modify,proto3" json:"modify,omitempty"`
//挖到区块时公开
//
挖到区块时公开
PrivHash
[]
byte
`protobuf:"bytes,5,opt,name=privHash,proto3" json:"privHash,omitempty"`
//VRF公钥
PubKey
[]
byte
`protobuf:"bytes,6,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
//VRF计算得到的hash
VrfHash
[]
byte
`protobuf:"bytes,7,opt,name=vrfHash,proto3" json:"vrfHash,omitempty"`
//VRF计算得到的proof
VrfProof
[]
byte
`protobuf:"bytes,8,opt,name=vrfProof,proto3" json:"vrfProof,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
TicketMiner
)
Reset
()
{
*
m
=
TicketMiner
{}
}
func
(
m
*
TicketMiner
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketMiner
)
ProtoMessage
()
{}
func
(
*
TicketMiner
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
2
}
}
func
(
m
*
TicketMiner
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_TicketMiner
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
TicketMiner
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_TicketMiner
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
TicketMiner
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_TicketMiner
.
Merge
(
m
,
src
)
}
func
(
m
*
TicketMiner
)
XXX_Size
()
int
{
return
xxx_messageInfo_TicketMiner
.
Size
(
m
)
}
func
(
m
*
TicketMiner
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_TicketMiner
.
DiscardUnknown
(
m
)
// VRF计算得到的hash
VrfHash
[]
byte
`protobuf:"bytes,6,opt,name=vrfHash,proto3" json:"vrfHash,omitempty"`
// VRF计算得到的proof
VrfProof
[]
byte
`protobuf:"bytes,7,opt,name=vrfProof,proto3" json:"vrfProof,omitempty"`
}
var
xxx_messageInfo_TicketMiner
proto
.
InternalMessageInfo
func
(
m
*
TicketMiner
)
Reset
()
{
*
m
=
TicketMiner
{}
}
func
(
m
*
TicketMiner
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketMiner
)
ProtoMessage
()
{}
func
(
*
TicketMiner
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
2
}
}
func
(
m
*
TicketMiner
)
GetBits
()
uint32
{
if
m
!=
nil
{
...
...
@@ -466,13 +412,6 @@ func (m *TicketMiner) GetPrivHash() []byte {
return
nil
}
func
(
m
*
TicketMiner
)
GetPubKey
()
[]
byte
{
if
m
!=
nil
{
return
m
.
PubKey
}
return
nil
}
func
(
m
*
TicketMiner
)
GetVrfHash
()
[]
byte
{
if
m
!=
nil
{
return
m
.
VrfHash
...
...
@@ -488,39 +427,16 @@ func (m *TicketMiner) GetVrfProof() []byte {
}
type
TicketMinerOld
struct
{
Bits
uint32
`protobuf:"varint,1,opt,name=bits,proto3" json:"bits,omitempty"`
Reward
int64
`protobuf:"varint,2,opt,name=reward,proto3" json:"reward,omitempty"`
TicketId
string
`protobuf:"bytes,3,opt,name=ticketId,proto3" json:"ticketId,omitempty"`
Modify
[]
byte
`protobuf:"bytes,4,opt,name=modify,proto3" json:"modify,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
TicketMinerOld
)
Reset
()
{
*
m
=
TicketMinerOld
{}
}
func
(
m
*
TicketMinerOld
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketMinerOld
)
ProtoMessage
()
{}
func
(
*
TicketMinerOld
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
3
}
}
func
(
m
*
TicketMinerOld
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_TicketMinerOld
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
TicketMinerOld
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_TicketMinerOld
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
TicketMinerOld
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_TicketMinerOld
.
Merge
(
m
,
src
)
}
func
(
m
*
TicketMinerOld
)
XXX_Size
()
int
{
return
xxx_messageInfo_TicketMinerOld
.
Size
(
m
)
}
func
(
m
*
TicketMinerOld
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_TicketMinerOld
.
DiscardUnknown
(
m
)
Bits
uint32
`protobuf:"varint,1,opt,name=bits" json:"bits,omitempty"`
Reward
int64
`protobuf:"varint,2,opt,name=reward" json:"reward,omitempty"`
TicketId
string
`protobuf:"bytes,3,opt,name=ticketId" json:"ticketId,omitempty"`
Modify
[]
byte
`protobuf:"bytes,4,opt,name=modify,proto3" json:"modify,omitempty"`
}
var
xxx_messageInfo_TicketMinerOld
proto
.
InternalMessageInfo
func
(
m
*
TicketMinerOld
)
Reset
()
{
*
m
=
TicketMinerOld
{}
}
func
(
m
*
TicketMinerOld
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketMinerOld
)
ProtoMessage
()
{}
func
(
*
TicketMinerOld
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
3
}
}
func
(
m
*
TicketMinerOld
)
GetBits
()
uint32
{
if
m
!=
nil
{
...
...
@@ -551,37 +467,14 @@ func (m *TicketMinerOld) GetModify() []byte {
}
type
MinerFlag
struct
{
Flag
int32
`protobuf:"varint,1,opt,name=flag,proto3" json:"flag,omitempty"`
Reserve
int64
`protobuf:"varint,2,opt,name=reserve,proto3" json:"reserve,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
MinerFlag
)
Reset
()
{
*
m
=
MinerFlag
{}
}
func
(
m
*
MinerFlag
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
MinerFlag
)
ProtoMessage
()
{}
func
(
*
MinerFlag
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
4
}
Flag
int32
`protobuf:"varint,1,opt,name=flag" json:"flag,omitempty"`
Reserve
int64
`protobuf:"varint,2,opt,name=reserve" json:"reserve,omitempty"`
}
func
(
m
*
MinerFlag
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_MinerFlag
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
MinerFlag
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_MinerFlag
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
MinerFlag
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_MinerFlag
.
Merge
(
m
,
src
)
}
func
(
m
*
MinerFlag
)
XXX_Size
()
int
{
return
xxx_messageInfo_MinerFlag
.
Size
(
m
)
}
func
(
m
*
MinerFlag
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_MinerFlag
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_MinerFlag
proto
.
InternalMessageInfo
func
(
m
*
MinerFlag
)
Reset
()
{
*
m
=
MinerFlag
{}
}
func
(
m
*
MinerFlag
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
MinerFlag
)
ProtoMessage
()
{}
func
(
*
MinerFlag
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
4
}
}
func
(
m
*
MinerFlag
)
GetFlag
()
int32
{
if
m
!=
nil
{
...
...
@@ -598,37 +491,14 @@ func (m *MinerFlag) GetReserve() int64 {
}
type
TicketBind
struct
{
MinerAddress
string
`protobuf:"bytes,1,opt,name=minerAddress,proto3" json:"minerAddress,omitempty"`
ReturnAddress
string
`protobuf:"bytes,2,opt,name=returnAddress,proto3" json:"returnAddress,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
TicketBind
)
Reset
()
{
*
m
=
TicketBind
{}
}
func
(
m
*
TicketBind
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketBind
)
ProtoMessage
()
{}
func
(
*
TicketBind
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
5
}
}
func
(
m
*
TicketBind
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_TicketBind
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
TicketBind
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_TicketBind
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
TicketBind
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_TicketBind
.
Merge
(
m
,
src
)
}
func
(
m
*
TicketBind
)
XXX_Size
()
int
{
return
xxx_messageInfo_TicketBind
.
Size
(
m
)
}
func
(
m
*
TicketBind
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_TicketBind
.
DiscardUnknown
(
m
)
MinerAddress
string
`protobuf:"bytes,1,opt,name=minerAddress" json:"minerAddress,omitempty"`
ReturnAddress
string
`protobuf:"bytes,2,opt,name=returnAddress" json:"returnAddress,omitempty"`
}
var
xxx_messageInfo_TicketBind
proto
.
InternalMessageInfo
func
(
m
*
TicketBind
)
Reset
()
{
*
m
=
TicketBind
{}
}
func
(
m
*
TicketBind
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketBind
)
ProtoMessage
()
{}
func
(
*
TicketBind
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
5
}
}
func
(
m
*
TicketBind
)
GetMinerAddress
()
string
{
if
m
!=
nil
{
...
...
@@ -645,45 +515,22 @@ func (m *TicketBind) GetReturnAddress() string {
}
type
TicketOpen
struct
{
//用户挖矿的ticket 地址
MinerAddress
string
`protobuf:"bytes,1,opt,name=minerAddress,proto3" json:"minerAddress,omitempty"`
//购买ticket的数目
Count
int32
`protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
//币实际存储的地址
ReturnAddress
string
`protobuf:"bytes,3,opt,name=returnAddress,proto3" json:"returnAddress,omitempty"`
//随机种子
RandSeed
int64
`protobuf:"varint,4,opt,name=randSeed,proto3" json:"randSeed,omitempty"`
//购买ticket时公开
PubHashes
[][]
byte
`protobuf:"bytes,5,rep,name=pubHashes,proto3" json:"pubHashes,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
TicketOpen
)
Reset
()
{
*
m
=
TicketOpen
{}
}
func
(
m
*
TicketOpen
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketOpen
)
ProtoMessage
()
{}
func
(
*
TicketOpen
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
6
}
}
func
(
m
*
TicketOpen
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_TicketOpen
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
TicketOpen
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_TicketOpen
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
TicketOpen
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_TicketOpen
.
Merge
(
m
,
src
)
}
func
(
m
*
TicketOpen
)
XXX_Size
()
int
{
return
xxx_messageInfo_TicketOpen
.
Size
(
m
)
}
func
(
m
*
TicketOpen
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_TicketOpen
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_TicketOpen
proto
.
InternalMessageInfo
// 用户挖矿的ticket 地址
MinerAddress
string
`protobuf:"bytes,1,opt,name=minerAddress" json:"minerAddress,omitempty"`
// 购买ticket的数目
Count
int32
`protobuf:"varint,2,opt,name=count" json:"count,omitempty"`
// 币实际存储的地址
ReturnAddress
string
`protobuf:"bytes,3,opt,name=returnAddress" json:"returnAddress,omitempty"`
// 随机种子
RandSeed
int64
`protobuf:"varint,4,opt,name=randSeed" json:"randSeed,omitempty"`
// 购买ticket时公开
PubHashes
[][]
byte
`protobuf:"bytes,5,rep,name=pubHashes,proto3" json:"pubHashes,omitempty"`
}
func
(
m
*
TicketOpen
)
Reset
()
{
*
m
=
TicketOpen
{}
}
func
(
m
*
TicketOpen
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketOpen
)
ProtoMessage
()
{}
func
(
*
TicketOpen
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
6
}
}
func
(
m
*
TicketOpen
)
GetMinerAddress
()
string
{
if
m
!=
nil
{
...
...
@@ -721,38 +568,15 @@ func (m *TicketOpen) GetPubHashes() [][]byte {
}
type
TicketGenesis
struct
{
MinerAddress
string
`protobuf:"bytes,1,opt,name=minerAddress,proto3" json:"minerAddress,omitempty"`
ReturnAddress
string
`protobuf:"bytes,2,opt,name=returnAddress,proto3" json:"returnAddress,omitempty"`
Count
int32
`protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
TicketGenesis
)
Reset
()
{
*
m
=
TicketGenesis
{}
}
func
(
m
*
TicketGenesis
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketGenesis
)
ProtoMessage
()
{}
func
(
*
TicketGenesis
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
7
}
}
func
(
m
*
TicketGenesis
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_TicketGenesis
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
TicketGenesis
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_TicketGenesis
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
TicketGenesis
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_TicketGenesis
.
Merge
(
m
,
src
)
}
func
(
m
*
TicketGenesis
)
XXX_Size
()
int
{
return
xxx_messageInfo_TicketGenesis
.
Size
(
m
)
}
func
(
m
*
TicketGenesis
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_TicketGenesis
.
DiscardUnknown
(
m
)
MinerAddress
string
`protobuf:"bytes,1,opt,name=minerAddress" json:"minerAddress,omitempty"`
ReturnAddress
string
`protobuf:"bytes,2,opt,name=returnAddress" json:"returnAddress,omitempty"`
Count
int32
`protobuf:"varint,3,opt,name=count" json:"count,omitempty"`
}
var
xxx_messageInfo_TicketGenesis
proto
.
InternalMessageInfo
func
(
m
*
TicketGenesis
)
Reset
()
{
*
m
=
TicketGenesis
{}
}
func
(
m
*
TicketGenesis
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketGenesis
)
ProtoMessage
()
{}
func
(
*
TicketGenesis
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
7
}
}
func
(
m
*
TicketGenesis
)
GetMinerAddress
()
string
{
if
m
!=
nil
{
...
...
@@ -776,37 +600,14 @@ func (m *TicketGenesis) GetCount() int32 {
}
type
TicketClose
struct
{
TicketId
[]
string
`protobuf:"bytes,1,rep,name=ticketId,proto3" json:"ticketId,omitempty"`
MinerAddress
string
`protobuf:"bytes,2,opt,name=minerAddress,proto3" json:"minerAddress,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
TicketClose
)
Reset
()
{
*
m
=
TicketClose
{}
}
func
(
m
*
TicketClose
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketClose
)
ProtoMessage
()
{}
func
(
*
TicketClose
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
8
}
}
func
(
m
*
TicketClose
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_TicketClose
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
TicketClose
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_TicketClose
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
TicketClose
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_TicketClose
.
Merge
(
m
,
src
)
}
func
(
m
*
TicketClose
)
XXX_Size
()
int
{
return
xxx_messageInfo_TicketClose
.
Size
(
m
)
}
func
(
m
*
TicketClose
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_TicketClose
.
DiscardUnknown
(
m
)
TicketId
[]
string
`protobuf:"bytes,1,rep,name=ticketId" json:"ticketId,omitempty"`
MinerAddress
string
`protobuf:"bytes,2,opt,name=minerAddress" json:"minerAddress,omitempty"`
}
var
xxx_messageInfo_TicketClose
proto
.
InternalMessageInfo
func
(
m
*
TicketClose
)
Reset
()
{
*
m
=
TicketClose
{}
}
func
(
m
*
TicketClose
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketClose
)
ProtoMessage
()
{}
func
(
*
TicketClose
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
8
}
}
func
(
m
*
TicketClose
)
GetTicketId
()
[]
string
{
if
m
!=
nil
{
...
...
@@ -823,37 +624,14 @@ func (m *TicketClose) GetMinerAddress() string {
}
type
TicketList
struct
{
Addr
string
`protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
Status
int32
`protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
Addr
string
`protobuf:"bytes,1,opt,name=addr" json:"addr,omitempty"`
Status
int32
`protobuf:"varint,3,opt,name=status" json:"status,omitempty"`
}
func
(
m
*
TicketList
)
Reset
()
{
*
m
=
TicketList
{}
}
func
(
m
*
TicketList
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketList
)
ProtoMessage
()
{}
func
(
*
TicketList
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
9
}
}
func
(
m
*
TicketList
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_TicketList
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
TicketList
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_TicketList
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
TicketList
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_TicketList
.
Merge
(
m
,
src
)
}
func
(
m
*
TicketList
)
XXX_Size
()
int
{
return
xxx_messageInfo_TicketList
.
Size
(
m
)
}
func
(
m
*
TicketList
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_TicketList
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_TicketList
proto
.
InternalMessageInfo
func
(
m
*
TicketList
)
Reset
()
{
*
m
=
TicketList
{}
}
func
(
m
*
TicketList
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketList
)
ProtoMessage
()
{}
func
(
*
TicketList
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
9
}
}
func
(
m
*
TicketList
)
GetAddr
()
string
{
if
m
!=
nil
{
...
...
@@ -870,36 +648,13 @@ func (m *TicketList) GetStatus() int32 {
}
type
TicketInfos
struct
{
TicketIds
[]
string
`protobuf:"bytes,1,rep,name=ticketIds,proto3" json:"ticketIds,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
TicketInfos
)
Reset
()
{
*
m
=
TicketInfos
{}
}
func
(
m
*
TicketInfos
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketInfos
)
ProtoMessage
()
{}
func
(
*
TicketInfos
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
10
}
TicketIds
[]
string
`protobuf:"bytes,1,rep,name=ticketIds" json:"ticketIds,omitempty"`
}
func
(
m
*
TicketInfos
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_TicketInfos
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
TicketInfos
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_TicketInfos
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
TicketInfos
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_TicketInfos
.
Merge
(
m
,
src
)
}
func
(
m
*
TicketInfos
)
XXX_Size
()
int
{
return
xxx_messageInfo_TicketInfos
.
Size
(
m
)
}
func
(
m
*
TicketInfos
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_TicketInfos
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_TicketInfos
proto
.
InternalMessageInfo
func
(
m
*
TicketInfos
)
Reset
()
{
*
m
=
TicketInfos
{}
}
func
(
m
*
TicketInfos
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
TicketInfos
)
ProtoMessage
()
{}
func
(
*
TicketInfos
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
10
}
}
func
(
m
*
TicketInfos
)
GetTicketIds
()
[]
string
{
if
m
!=
nil
{
...
...
@@ -909,36 +664,13 @@ func (m *TicketInfos) GetTicketIds() []string {
}
type
ReplyTicketList
struct
{
Tickets
[]
*
Ticket
`protobuf:"bytes,1,rep,name=tickets,proto3" json:"tickets,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
ReplyTicketList
)
Reset
()
{
*
m
=
ReplyTicketList
{}
}
func
(
m
*
ReplyTicketList
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyTicketList
)
ProtoMessage
()
{}
func
(
*
ReplyTicketList
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
11
}
}
func
(
m
*
ReplyTicketList
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ReplyTicketList
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ReplyTicketList
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ReplyTicketList
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
ReplyTicketList
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ReplyTicketList
.
Merge
(
m
,
src
)
}
func
(
m
*
ReplyTicketList
)
XXX_Size
()
int
{
return
xxx_messageInfo_ReplyTicketList
.
Size
(
m
)
}
func
(
m
*
ReplyTicketList
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ReplyTicketList
.
DiscardUnknown
(
m
)
Tickets
[]
*
Ticket
`protobuf:"bytes,1,rep,name=tickets" json:"tickets,omitempty"`
}
var
xxx_messageInfo_ReplyTicketList
proto
.
InternalMessageInfo
func
(
m
*
ReplyTicketList
)
Reset
()
{
*
m
=
ReplyTicketList
{}
}
func
(
m
*
ReplyTicketList
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyTicketList
)
ProtoMessage
()
{}
func
(
*
ReplyTicketList
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
11
}
}
func
(
m
*
ReplyTicketList
)
GetTickets
()
[]
*
Ticket
{
if
m
!=
nil
{
...
...
@@ -948,37 +680,14 @@ func (m *ReplyTicketList) GetTickets() []*Ticket {
}
type
ReplyWalletTickets
struct
{
Tickets
[]
*
Ticket
`protobuf:"bytes,1,rep,name=tickets,proto3" json:"tickets,omitempty"`
Privkeys
[][]
byte
`protobuf:"bytes,2,rep,name=privkeys,proto3" json:"privkeys,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
ReplyWalletTickets
)
Reset
()
{
*
m
=
ReplyWalletTickets
{}
}
func
(
m
*
ReplyWalletTickets
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyWalletTickets
)
ProtoMessage
()
{}
func
(
*
ReplyWalletTickets
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
12
}
}
func
(
m
*
ReplyWalletTickets
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ReplyWalletTickets
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ReplyWalletTickets
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ReplyWalletTickets
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
ReplyWalletTickets
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ReplyWalletTickets
.
Merge
(
m
,
src
)
}
func
(
m
*
ReplyWalletTickets
)
XXX_Size
()
int
{
return
xxx_messageInfo_ReplyWalletTickets
.
Size
(
m
)
}
func
(
m
*
ReplyWalletTickets
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ReplyWalletTickets
.
DiscardUnknown
(
m
)
Tickets
[]
*
Ticket
`protobuf:"bytes,1,rep,name=tickets" json:"tickets,omitempty"`
Privkeys
[][]
byte
`protobuf:"bytes,2,rep,name=privkeys,proto3" json:"privkeys,omitempty"`
}
var
xxx_messageInfo_ReplyWalletTickets
proto
.
InternalMessageInfo
func
(
m
*
ReplyWalletTickets
)
Reset
()
{
*
m
=
ReplyWalletTickets
{}
}
func
(
m
*
ReplyWalletTickets
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyWalletTickets
)
ProtoMessage
()
{}
func
(
*
ReplyWalletTickets
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
12
}
}
func
(
m
*
ReplyWalletTickets
)
GetTickets
()
[]
*
Ticket
{
if
m
!=
nil
{
...
...
@@ -995,39 +704,16 @@ func (m *ReplyWalletTickets) GetPrivkeys() [][]byte {
}
type
ReceiptTicket
struct
{
TicketId
string
`protobuf:"bytes,1,opt,name=ticketId,proto3" json:"ticketId,omitempty"`
Status
int32
`protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
PrevStatus
int32
`protobuf:"varint,3,opt,name=prevStatus,proto3" json:"prevStatus,omitempty"`
Addr
string
`protobuf:"bytes,4,opt,name=addr,proto3" json:"addr,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
ReceiptTicket
)
Reset
()
{
*
m
=
ReceiptTicket
{}
}
func
(
m
*
ReceiptTicket
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReceiptTicket
)
ProtoMessage
()
{}
func
(
*
ReceiptTicket
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
13
}
}
func
(
m
*
ReceiptTicket
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ReceiptTicket
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ReceiptTicket
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ReceiptTicket
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
ReceiptTicket
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ReceiptTicket
.
Merge
(
m
,
src
)
}
func
(
m
*
ReceiptTicket
)
XXX_Size
()
int
{
return
xxx_messageInfo_ReceiptTicket
.
Size
(
m
)
}
func
(
m
*
ReceiptTicket
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ReceiptTicket
.
DiscardUnknown
(
m
)
TicketId
string
`protobuf:"bytes,1,opt,name=ticketId" json:"ticketId,omitempty"`
Status
int32
`protobuf:"varint,2,opt,name=status" json:"status,omitempty"`
PrevStatus
int32
`protobuf:"varint,3,opt,name=prevStatus" json:"prevStatus,omitempty"`
Addr
string
`protobuf:"bytes,4,opt,name=addr" json:"addr,omitempty"`
}
var
xxx_messageInfo_ReceiptTicket
proto
.
InternalMessageInfo
func
(
m
*
ReceiptTicket
)
Reset
()
{
*
m
=
ReceiptTicket
{}
}
func
(
m
*
ReceiptTicket
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReceiptTicket
)
ProtoMessage
()
{}
func
(
*
ReceiptTicket
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
13
}
}
func
(
m
*
ReceiptTicket
)
GetTicketId
()
string
{
if
m
!=
nil
{
...
...
@@ -1058,38 +744,15 @@ func (m *ReceiptTicket) GetAddr() string {
}
type
ReceiptTicketBind
struct
{
OldMinerAddress
string
`protobuf:"bytes,1,opt,name=oldMinerAddress,proto3" json:"oldMinerAddress,omitempty"`
NewMinerAddress
string
`protobuf:"bytes,2,opt,name=newMinerAddress,proto3" json:"newMinerAddress,omitempty"`
ReturnAddress
string
`protobuf:"bytes,3,opt,name=returnAddress,proto3" json:"returnAddress,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
OldMinerAddress
string
`protobuf:"bytes,1,opt,name=oldMinerAddress" json:"oldMinerAddress,omitempty"`
NewMinerAddress
string
`protobuf:"bytes,2,opt,name=newMinerAddress" json:"newMinerAddress,omitempty"`
ReturnAddress
string
`protobuf:"bytes,3,opt,name=returnAddress" json:"returnAddress,omitempty"`
}
func
(
m
*
ReceiptTicketBind
)
Reset
()
{
*
m
=
ReceiptTicketBind
{}
}
func
(
m
*
ReceiptTicketBind
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReceiptTicketBind
)
ProtoMessage
()
{}
func
(
*
ReceiptTicketBind
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
14
}
}
func
(
m
*
ReceiptTicketBind
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ReceiptTicketBind
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ReceiptTicketBind
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ReceiptTicketBind
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
ReceiptTicketBind
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ReceiptTicketBind
.
Merge
(
m
,
src
)
}
func
(
m
*
ReceiptTicketBind
)
XXX_Size
()
int
{
return
xxx_messageInfo_ReceiptTicketBind
.
Size
(
m
)
}
func
(
m
*
ReceiptTicketBind
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ReceiptTicketBind
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_ReceiptTicketBind
proto
.
InternalMessageInfo
func
(
m
*
ReceiptTicketBind
)
Reset
()
{
*
m
=
ReceiptTicketBind
{}
}
func
(
m
*
ReceiptTicketBind
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReceiptTicketBind
)
ProtoMessage
()
{}
func
(
*
ReceiptTicketBind
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
14
}
}
func
(
m
*
ReceiptTicketBind
)
GetOldMinerAddress
()
string
{
if
m
!=
nil
{
...
...
@@ -1113,39 +776,16 @@ func (m *ReceiptTicketBind) GetReturnAddress() string {
}
type
ReqBindMiner
struct
{
BindAddr
string
`protobuf:"bytes,1,opt,name=bindAddr,proto3" json:"bindAddr,omitempty"`
OriginAddr
string
`protobuf:"bytes,2,opt,name=originAddr,proto3" json:"originAddr,omitempty"`
Amount
int64
`protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"`
CheckBalance
bool
`protobuf:"varint,4,opt,name=checkBalance,proto3" json:"checkBalance,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
ReqBindMiner
)
Reset
()
{
*
m
=
ReqBindMiner
{}
}
func
(
m
*
ReqBindMiner
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReqBindMiner
)
ProtoMessage
()
{}
func
(
*
ReqBindMiner
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
15
}
BindAddr
string
`protobuf:"bytes,1,opt,name=bindAddr" json:"bindAddr,omitempty"`
OriginAddr
string
`protobuf:"bytes,2,opt,name=originAddr" json:"originAddr,omitempty"`
Amount
int64
`protobuf:"varint,3,opt,name=amount" json:"amount,omitempty"`
CheckBalance
bool
`protobuf:"varint,4,opt,name=checkBalance" json:"checkBalance,omitempty"`
}
func
(
m
*
ReqBindMiner
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ReqBindMiner
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ReqBindMiner
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ReqBindMiner
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
ReqBindMiner
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ReqBindMiner
.
Merge
(
m
,
src
)
}
func
(
m
*
ReqBindMiner
)
XXX_Size
()
int
{
return
xxx_messageInfo_ReqBindMiner
.
Size
(
m
)
}
func
(
m
*
ReqBindMiner
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ReqBindMiner
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_ReqBindMiner
proto
.
InternalMessageInfo
func
(
m
*
ReqBindMiner
)
Reset
()
{
*
m
=
ReqBindMiner
{}
}
func
(
m
*
ReqBindMiner
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReqBindMiner
)
ProtoMessage
()
{}
func
(
*
ReqBindMiner
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
15
}
}
func
(
m
*
ReqBindMiner
)
GetBindAddr
()
string
{
if
m
!=
nil
{
...
...
@@ -1176,36 +816,13 @@ func (m *ReqBindMiner) GetCheckBalance() bool {
}
type
ReplyBindMiner
struct
{
TxHex
string
`protobuf:"bytes,1,opt,name=txHex,proto3" json:"txHex,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
ReplyBindMiner
)
Reset
()
{
*
m
=
ReplyBindMiner
{}
}
func
(
m
*
ReplyBindMiner
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyBindMiner
)
ProtoMessage
()
{}
func
(
*
ReplyBindMiner
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_98a6c21780e82d22
,
[]
int
{
16
}
}
func
(
m
*
ReplyBindMiner
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ReplyBindMiner
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ReplyBindMiner
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ReplyBindMiner
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
ReplyBindMiner
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ReplyBindMiner
.
Merge
(
m
,
src
)
}
func
(
m
*
ReplyBindMiner
)
XXX_Size
()
int
{
return
xxx_messageInfo_ReplyBindMiner
.
Size
(
m
)
}
func
(
m
*
ReplyBindMiner
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ReplyBindMiner
.
DiscardUnknown
(
m
)
TxHex
string
`protobuf:"bytes,1,opt,name=txHex" json:"txHex,omitempty"`
}
var
xxx_messageInfo_ReplyBindMiner
proto
.
InternalMessageInfo
func
(
m
*
ReplyBindMiner
)
Reset
()
{
*
m
=
ReplyBindMiner
{}
}
func
(
m
*
ReplyBindMiner
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyBindMiner
)
ProtoMessage
()
{}
func
(
*
ReplyBindMiner
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
16
}
}
func
(
m
*
ReplyBindMiner
)
GetTxHex
()
string
{
if
m
!=
nil
{
...
...
@@ -1234,68 +851,6 @@ func init() {
proto
.
RegisterType
((
*
ReplyBindMiner
)(
nil
),
"types.ReplyBindMiner"
)
}
func
init
()
{
proto
.
RegisterFile
(
"ticket.proto"
,
fileDescriptor_98a6c21780e82d22
)
}
var
fileDescriptor_98a6c21780e82d22
=
[]
byte
{
// 890 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xb4
,
0x56
,
0xcd
,
0x6e
,
0x23
,
0x45
,
0x10
,
0xf6
,
0x78
,
0x32
,
0xb6
,
0x53
,
0x19
,
0x27
,
0x6c
,
0x13
,
0xd0
,
0xc8
,
0x42
,
0x2b
,
0xab
,
0x85
,
0xc0
,
0xfc
,
0x28
,
0x40
,
0x40
,
0x08
,
0xb8
,
0xa0
,
0x24
,
0x12
,
0xeb
,
0x08
,
0xcc
,
0xa2
,
0xce
,
0x6a
,
0x11
,
0xc7
,
0xf1
,
0x4c
,
0xdb
,
0xdb
,
0xca
,
0xb8
,
0x67
,
0xe8
,
0x69
,
0x3b
,
0xeb
,
0x17
,
0x40
,
0xe2
,
0xc0
,
0x9d
,
0x27
,
0xe0
,
0xc6
,
0xf3
,
0xf0
,
0x3a
,
0xa8
,
0x6b
,
0x7a
,
0xfe
,
0xec
,
0x3d
,
0x58
,
0x82
,
0xbd
,
0xf9
,
0xab
,
0xfe
,
0x6a
,
0xaa
,
0xea
,
0xeb
,
0xaa
,
0x6a
,
0x83
,
0xaf
,
0x45
,
0x74
,
0xcf
,
0xf5
,
0x45
,
0xa6
,
0x52
,
0x9d
,
0x12
,
0x4f
,
0x6f
,
0x33
,
0x9e
,
0x8f
,
0xfc
,
0x28
,
0x5d
,
0xad
,
0x52
,
0x59
,
0x18
,
0xe9
,
0x9f
,
0x5d
,
0xe8
,
0x3d
,
0x43
,
0x16
,
0x19
,
0xc1
,
0xa0
,
0xe0
,
0xdf
,
0xc6
,
0x81
,
0x33
,
0x76
,
0x26
,
0xc7
,
0xac
,
0xc2
,
0xe4
,
0x6d
,
0xe8
,
0xe5
,
0x3a
,
0xd4
,
0xeb
,
0x3c
,
0xe8
,
0x8e
,
0x9d
,
0x89
,
0xc7
,
0x2c
,
0x22
,
0xef
,
0xc0
,
0xb1
,
0xc8
,
0x9f
,
0x70
,
0xc9
,
0x73
,
0x91
,
0x07
,
0xee
,
0xd8
,
0x99
,
0x0c
,
0x58
,
0x6d
,
0x20
,
0x8f
,
0x01
,
0x22
,
0xc5
,
0x43
,
0xcd
,
0x9f
,
0x89
,
0x15
,
0x0f
,
0x8e
,
0xc6
,
0xce
,
0xc4
,
0x65
,
0x0d
,
0x8b
,
0xf1
,
0x5e
,
0x09
,
0xc9
,
0x15
,
0x1e
,
0x7b
,
0x78
,
0x5c
,
0x1b
,
0x8c
,
0x37
,
0x82
,
0xe7
,
0x61
,
0xb2
,
0xe6
,
0xc1
,
0xa0
,
0xf0
,
0xae
,
0x2d
,
0x84
,
0x82
,
0x8f
,
0xe8
,
0x2a
,
0x8e
,
0x15
,
0xcf
,
0xf3
,
0xa0
,
0x87
,
0x39
,
0xb7
,
0x6c
,
0xe4
,
0x5d
,
0x18
,
0x2a
,
0xae
,
0xd7
,
0x4a
,
0x96
,
0xa4
,
0x3e
,
0x92
,
0xda
,
0x46
,
0x72
,
0x0e
,
0x5e
,
0xa6
,
0x44
,
0xc4
,
0x83
,
0x63
,
0x0c
,
0x52
,
0x00
,
0xfa
,
0x7b
,
0x17
,
0xfc
,
0x42
,
0x9a
,
0xab
,
0x48
,
0x8b
,
0x54
,
0x92
,
0x0f
,
0xc0
,
0xd3
,
0x73
,
0x21
,
0x63
,
0x4c
,
0xf5
,
0xe4
,
0xf2
,
0xd1
,
0x05
,
0x0a
,
0x7a
,
0x51
,
0x70
,
0xae
,
0x85
,
0x8c
,
0xa7
,
0x1d
,
0x56
,
0x30
,
0x90
,
0x9a
,
0x66
,
0x5c
,
0xa2
,
0x90
,
0xbb
,
0xd4
,
0xa7
,
0x19
,
0x97
,
0x48
,
0x35
,
0x0c
,
0xf2
,
0x29
,
0xf4
,
0x97
,
0x56
,
0xc0
,
0x2e
,
0x92
,
0xcf
,
0x5b
,
0x64
,
0xab
,
0xe5
,
0xb4
,
0xc3
,
0x4a
,
0x1a
,
0xf9
,
0x18
,
0x7a
,
0x3a
,
0x4a
,
0xd2
,
0x9c
,
0xa3
,
0xe2
,
0x27
,
0x97
,
0xa4
,
0xe5
,
0x70
,
0x63
,
0x4e
,
0xa6
,
0x1d
,
0x66
,
0x39
,
0xe4
,
0x43
,
0xf0
,
0x50
,
0x12
,
0xd4
,
0x7f
,
0x97
,
0x3c
,
0x33
,
0x27
,
0x26
,
0x17
,
0xa4
,
0x90
,
0x53
,
0xe8
,
0xea
,
0x6d
,
0x00
,
0x78
,
0xc5
,
0x5d
,
0xbd
,
0xbd
,
0xee
,
0x83
,
0xb7
,
0x31
,
0x5a
,
0xd3
,
0x7f
,
0x1c
,
0x38
,
0x69
,
0x78
,
0x10
,
0x02
,
0x47
,
0x73
,
0xa1
,
0x73
,
0x2c
,
0x6f
,
0xc8
,
0xf0
,
0xb7
,
0xe9
,
0x11
,
0xc5
,
0x1f
,
0x42
,
0x15
,
0x63
,
0x1d
,
0x2e
,
0xb3
,
0xa8
,
0xd5
,
0x57
,
0xee
,
0x7e
,
0x5f
,
0xad
,
0xd2
,
0x58
,
0x2c
,
0xb6
,
0x98
,
0x9d
,
0xcf
,
0x2c
,
0x32
,
0x3e
,
0x99
,
0x12
,
0x9b
,
0x69
,
0x98
,
0xbf
,
0x40
,
0xb5
,
0x7d
,
0x56
,
0x61
,
0xe3
,
0x93
,
0xad
,
0xe7
,
0xdf
,
0xf3
,
0x2d
,
0xde
,
0xb8
,
0xcf
,
0x2c
,
0x22
,
0x01
,
0xf4
,
0x37
,
0x6a
,
0x81
,
0x2e
,
0x7d
,
0x3c
,
0x28
,
0xa1
,
0xf9
,
0xda
,
0x46
,
0x2d
,
0x7e
,
0x52
,
0x69
,
0xba
,
0xc0
,
0x3e
,
0xf2
,
0x59
,
0x85
,
0x69
,
0x06
,
0xa7
,
0x8d
,
0xc2
,
0x9e
,
0x26
,
0xf1
,
0xeb
,
0xae
,
0x8d
,
0x7e
,
0x0d
,
0xc7
,
0x18
,
0xeb
,
0xbb
,
0x24
,
0x5c
,
0x9a
,
0x60
,
0x8b
,
0x24
,
0x5c
,
0x62
,
0x30
,
0x8f
,
0xe1
,
0x6f
,
0x53
,
0x88
,
0xe2
,
0x39
,
0x57
,
0x1b
,
0x6e
,
0xa3
,
0x95
,
0x90
,
0x3e
,
0x07
,
0xa8
,
0xbb
,
0x6d
,
0x6f
,
0x00
,
0x9c
,
0x43
,
0x06
,
0xa0
,
0xfb
,
0x8a
,
0x01
,
0xa0
,
0x7f
,
0x39
,
0xe5
,
0x87
,
0x4d
,
0x6f
,
0x1e
,
0xf4
,
0xe1
,
0x73
,
0xf0
,
0xa2
,
0x74
,
0x2d
,
0xb5
,
0x5d
,
0x08
,
0x05
,
0xd8
,
0x0f
,
0xe7
,
0xbe
,
0x6a
,
0xde
,
0x46
,
0x30
,
0x50
,
0xa1
,
0x8c
,
0xef
,
0x38
,
0x8f
,
0xed
,
0x56
,
0xa8
,
0xb0
,
0xd9
,
0x09
,
0xd9
,
0x7a
,
0x6e
,
0xae
,
0x8d
,
0xe7
,
0x81
,
0x37
,
0x76
,
0x27
,
0x3e
,
0xab
,
0x0d
,
0x34
,
0x85
,
0x61
,
0x6b
,
0x2c
,
0xfe
,
0x3f
,
0x0d
,
0xea
,
0x82
,
0xdc
,
0x46
,
0x41
,
0x74
,
0x56
,
0xf6
,
0x3d
,
0x8e
,
0xd5
,
0xce
,
0x8e
,
0x74
,
0x5b
,
0xf7
,
0xbd
,
0x9b
,
0x4a
,
0x77
,
0x3f
,
0x15
,
0xfa
,
0x55
,
0xa9
,
0xf3
,
0x0f
,
0x22
,
0xd7
,
0xe6
,
0xf2
,
0xc3
,
0x38
,
0x56
,
0x36
,
0x69
,
0xfc
,
0xdd
,
0xd8
,
0xb4
,
0x6e
,
0x73
,
0xd3
,
0xd2
,
0x8f
,
0xca
,
0x44
,
0x6e
,
0xe5
,
0x22
,
0xc5
,
0xc5
,
0x5b
,
0x06
,
0xce
,
0x6d
,
0x26
,
0xb5
,
0x81
,
0x7e
,
0x03
,
0x67
,
0x8c
,
0x67
,
0xc9
,
0xb6
,
0x11
,
0xeb
,
0x7d
,
0xe8
,
0x17
,
0xe7
,
0x05
,
0xfd
,
0xe4
,
0x72
,
0xd8
,
0x5a
,
0x04
,
0xac
,
0x3c
,
0xa5
,
0xbf
,
0x00
,
0x41
,
0xdf
,
0x9f
,
0xc3
,
0x24
,
0xe1
,
0xba
,
0x38
,
0xcd
,
0x0f
,
0x76
,
0x2f
,
0x27
,
0xf7
,
0x9e
,
0x6f
,
0x8d
,
0x02
,
0x6e
,
0x39
,
0xb9
,
0x06
,
0xd3
,
0x07
,
0x18
,
0x32
,
0x1e
,
0x71
,
0x91
,
0xe9
,
0xff
,
0xf0
,
0xe4
,
0x3c
,
0x06
,
0xc8
,
0x14
,
0xdf
,
0xdc
,
0x35
,
0x45
,
0x6a
,
0x58
,
0x2a
,
0x51
,
0x8f
,
0x6a
,
0x51
,
0xe9
,
0x1f
,
0x0e
,
0x3c
,
0x6a
,
0x45
,
0xc6
,
0xf9
,
0x99
,
0xc0
,
0x59
,
0x9a
,
0xc4
,
0xb3
,
0xfd
,
0xf6
,
0xd9
,
0x35
,
0x1b
,
0xa6
,
0xe4
,
0x0f
,
0xb3
,
0xfd
,
0xdb
,
0xdd
,
0x35
,
0x1f
,
0x36
,
0x00
,
0xf4
,
0x37
,
0x07
,
0x7c
,
0xc6
,
0x7f
,
0x35
,
0x59
,
0x14
,
0xfb
,
0x74
,
0x04
,
0x03
,
0xf3
,
0x6e
,
0x5c
,
0xd5
,
0xdd
,
0x50
,
0x61
,
0x53
,
0x70
,
0xaa
,
0xc4
,
0x52
,
0xa0
,
0xb7
,
0x8d
,
0xdb
,
0xb0
,
0x18
,
0xa1
,
0xc2
,
0x55
,
0xd5
,
0xb9
,
0x2e
,
0xb3
,
0xc8
,
0xf4
,
0x63
,
0xf4
,
0x82
,
0x47
,
0xf7
,
0xd7
,
0x61
,
0x12
,
0xca
,
0xa8
,
0x78
,
0x7f
,
0x07
,
0xac
,
0x65
,
0xa3
,
0xef
,
0xc1
,
0x29
,
0x5e
,
0x76
,
0x9d
,
0xc9
,
0x39
,
0x78
,
0xfa
,
0xe5
,
0x94
,
0xbf
,
0xb4
,
0x69
,
0x14
,
0xe0
,
0xf2
,
0x6f
,
0x07
,
0x7a
,
0xc5
,
0xcd
,
0x90
,
0x6f
,
0xe1
,
0xec
,
0x06
,
0x9f
,
0xf0
,
0xda
,
0xe7
,
0x4d
,
0xdb
,
0x0b
,
0xcd
,
0x92
,
0x46
,
0x6f
,
0x55
,
0xc6
,
0xe6
,
0xf7
,
0x69
,
0x87
,
0x7c
,
0x02
,
0xa7
,
0x4f
,
0xca
,
0xc6
,
0xba
,
0xc1
,
0x4c
,
0x87
,
0xb5
,
0xff
,
0x8f
,
0x22
,
0x19
,
0xf9
,
0x16
,
0xde
,
0x4a
,
0xfd
,
0xe5
,
0x17
,
0xb4
,
0x43
,
0x3e
,
0x83
,
0xe1
,
0x1d
,
0xd7
,
0x57
,
0x6b
,
0x9d
,
0xce
,
0x84
,
0x14
,
0x72
,
0x49
,
0xde
,
0xb0
,
0x84
,
0x6a
,
0x8d
,
0x56
,
0x2e
,
0x18
,
0x8c
,
0x76
,
0xe6
,
0x3d
,
0xfc
,
0x77
,
0xf3
,
0xf9
,
0xbf
,
0x01
,
0x00
,
0x00
,
0xff
,
0xff
,
0x2a
,
0xad
,
0x66
,
0x94
,
0x02
,
0x09
,
0x00
,
0x00
,
}
// Reference imports to suppress errors if they are not otherwise used.
var
_
context
.
Context
var
_
grpc
.
ClientConn
...
...
@@ -1304,17 +859,16 @@ var _ grpc.ClientConn
// is compatible with the grpc package it is being compiled against.
const
_
=
grpc
.
SupportPackageIsVersion4
// TicketClient is the client API for Ticket service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
// Client API for Ticket service
type
TicketClient
interface
{
//创建绑定挖矿
//
创建绑定挖矿
CreateBindMiner
(
ctx
context
.
Context
,
in
*
ReqBindMiner
,
opts
...
grpc
.
CallOption
)
(
*
ReplyBindMiner
,
error
)
//查询钱包票数
GetTicketCount
(
ctx
context
.
Context
,
in
*
types
.
ReqNil
,
opts
...
grpc
.
CallOption
)
(
*
types
.
Int64
,
error
)
//
查询钱包票数
GetTicketCount
(
ctx
context
.
Context
,
in
*
types
1
.
ReqNil
,
opts
...
grpc
.
CallOption
)
(
*
types1
.
Int64
,
error
)
// Miner
//设置自动挖矿
SetAutoMining
(
ctx
context
.
Context
,
in
*
MinerFlag
,
opts
...
grpc
.
CallOption
)
(
*
types
.
Reply
,
error
)
//
设置自动挖矿
SetAutoMining
(
ctx
context
.
Context
,
in
*
MinerFlag
,
opts
...
grpc
.
CallOption
)
(
*
types
1
.
Reply
,
error
)
}
type
ticketClient
struct
{
...
...
@@ -1327,40 +881,41 @@ func NewTicketClient(cc *grpc.ClientConn) TicketClient {
func
(
c
*
ticketClient
)
CreateBindMiner
(
ctx
context
.
Context
,
in
*
ReqBindMiner
,
opts
...
grpc
.
CallOption
)
(
*
ReplyBindMiner
,
error
)
{
out
:=
new
(
ReplyBindMiner
)
err
:=
c
.
cc
.
Invoke
(
ctx
,
"/types.ticket/CreateBindMiner"
,
in
,
out
,
opts
...
)
err
:=
grpc
.
Invoke
(
ctx
,
"/types.ticket/CreateBindMiner"
,
in
,
out
,
c
.
cc
,
opts
...
)
if
err
!=
nil
{
return
nil
,
err
}
return
out
,
nil
}
func
(
c
*
ticketClient
)
GetTicketCount
(
ctx
context
.
Context
,
in
*
types
.
ReqNil
,
opts
...
grpc
.
CallOption
)
(
*
types
.
Int64
,
error
)
{
out
:=
new
(
types
.
Int64
)
err
:=
c
.
cc
.
Invoke
(
ctx
,
"/types.ticket/GetTicketCount"
,
in
,
out
,
opts
...
)
func
(
c
*
ticketClient
)
GetTicketCount
(
ctx
context
.
Context
,
in
*
types
1
.
ReqNil
,
opts
...
grpc
.
CallOption
)
(
*
types1
.
Int64
,
error
)
{
out
:=
new
(
types
1
.
Int64
)
err
:=
grpc
.
Invoke
(
ctx
,
"/types.ticket/GetTicketCount"
,
in
,
out
,
c
.
cc
,
opts
...
)
if
err
!=
nil
{
return
nil
,
err
}
return
out
,
nil
}
func
(
c
*
ticketClient
)
SetAutoMining
(
ctx
context
.
Context
,
in
*
MinerFlag
,
opts
...
grpc
.
CallOption
)
(
*
types
.
Reply
,
error
)
{
out
:=
new
(
types
.
Reply
)
err
:=
c
.
cc
.
Invoke
(
ctx
,
"/types.ticket/SetAutoMining"
,
in
,
out
,
opts
...
)
func
(
c
*
ticketClient
)
SetAutoMining
(
ctx
context
.
Context
,
in
*
MinerFlag
,
opts
...
grpc
.
CallOption
)
(
*
types
1
.
Reply
,
error
)
{
out
:=
new
(
types
1
.
Reply
)
err
:=
grpc
.
Invoke
(
ctx
,
"/types.ticket/SetAutoMining"
,
in
,
out
,
c
.
cc
,
opts
...
)
if
err
!=
nil
{
return
nil
,
err
}
return
out
,
nil
}
// TicketServer is the server API for Ticket service.
// Server API for Ticket service
type
TicketServer
interface
{
//创建绑定挖矿
//
创建绑定挖矿
CreateBindMiner
(
context
.
Context
,
*
ReqBindMiner
)
(
*
ReplyBindMiner
,
error
)
//查询钱包票数
GetTicketCount
(
context
.
Context
,
*
types
.
ReqNil
)
(
*
types
.
Int64
,
error
)
//
查询钱包票数
GetTicketCount
(
context
.
Context
,
*
types
1
.
ReqNil
)
(
*
types1
.
Int64
,
error
)
// Miner
//设置自动挖矿
SetAutoMining
(
context
.
Context
,
*
MinerFlag
)
(
*
types
.
Reply
,
error
)
//
设置自动挖矿
SetAutoMining
(
context
.
Context
,
*
MinerFlag
)
(
*
types
1
.
Reply
,
error
)
}
func
RegisterTicketServer
(
s
*
grpc
.
Server
,
srv
TicketServer
)
{
...
...
@@ -1386,7 +941,7 @@ func _Ticket_CreateBindMiner_Handler(srv interface{}, ctx context.Context, dec f
}
func
_Ticket_GetTicketCount_Handler
(
srv
interface
{},
ctx
context
.
Context
,
dec
func
(
interface
{})
error
,
interceptor
grpc
.
UnaryServerInterceptor
)
(
interface
{},
error
)
{
in
:=
new
(
types
.
ReqNil
)
in
:=
new
(
types
1
.
ReqNil
)
if
err
:=
dec
(
in
);
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -1398,7 +953,7 @@ func _Ticket_GetTicketCount_Handler(srv interface{}, ctx context.Context, dec fu
FullMethod
:
"/types.ticket/GetTicketCount"
,
}
handler
:=
func
(
ctx
context
.
Context
,
req
interface
{})
(
interface
{},
error
)
{
return
srv
.
(
TicketServer
)
.
GetTicketCount
(
ctx
,
req
.
(
*
types
.
ReqNil
))
return
srv
.
(
TicketServer
)
.
GetTicketCount
(
ctx
,
req
.
(
*
types
1
.
ReqNil
))
}
return
interceptor
(
ctx
,
in
,
info
,
handler
)
}
...
...
@@ -1441,3 +996,64 @@ var _Ticket_serviceDesc = grpc.ServiceDesc{
Streams
:
[]
grpc
.
StreamDesc
{},
Metadata
:
"ticket.proto"
,
}
func
init
()
{
proto
.
RegisterFile
(
"ticket.proto"
,
fileDescriptor0
)
}
var
fileDescriptor0
=
[]
byte
{
// 877 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xb4
,
0x56
,
0xdd
,
0x6e
,
0xeb
,
0x44
,
0x10
,
0x8e
,
0xed
,
0x3a
,
0x49
,
0xa7
,
0x4e
,
0xcb
,
0x59
,
0x0a
,
0xb2
,
0x22
,
0x74
,
0x14
,
0xad
,
0x10
,
0x84
,
0x1f
,
0x15
,
0x28
,
0x08
,
0x01
,
0x37
,
0xa8
,
0xad
,
0xc4
,
0x49
,
0x25
,
0xc2
,
0x41
,
0xdb
,
0xa3
,
0x83
,
0xb8
,
0x74
,
0xed
,
0x4d
,
0xce
,
0xaa
,
0xce
,
0xda
,
0xac
,
0x37
,
0xe9
,
0xc9
,
0x0b
,
0x20
,
0x71
,
0xc1
,
0x3d
,
0x4f
,
0xc0
,
0x1d
,
0xcf
,
0xc0
,
0xab
,
0xa1
,
0x1d
,
0xaf
,
0xff
,
0x92
,
0x5e
,
0x54
,
0x02
,
0xee
,
0xf2
,
0xcd
,
0x7c
,
0xe3
,
0x99
,
0xf9
,
0x76
,
0x66
,
0x37
,
0x10
,
0x68
,
0x11
,
0xdf
,
0x71
,
0x7d
,
0x96
,
0xab
,
0x4c
,
0x67
,
0xc4
,
0xd7
,
0xdb
,
0x9c
,
0x17
,
0xe3
,
0x20
,
0xce
,
0x56
,
0xab
,
0x4c
,
0x96
,
0x46
,
0xfa
,
0x87
,
0x0b
,
0xfd
,
0x17
,
0xc8
,
0x22
,
0x63
,
0x18
,
0x96
,
0xfc
,
0xeb
,
0x24
,
0x74
,
0x26
,
0xce
,
0xf4
,
0x90
,
0xd5
,
0x98
,
0xbc
,
0x0d
,
0xfd
,
0x42
,
0x47
,
0x7a
,
0x5d
,
0x84
,
0xee
,
0xc4
,
0x99
,
0xfa
,
0xcc
,
0x22
,
0xf2
,
0x0e
,
0x1c
,
0x8a
,
0xe2
,
0x19
,
0x97
,
0xbc
,
0x10
,
0x45
,
0xe8
,
0x4d
,
0x9c
,
0xe9
,
0x90
,
0x35
,
0x06
,
0xf2
,
0x14
,
0x20
,
0x56
,
0x3c
,
0xd2
,
0xfc
,
0x85
,
0x58
,
0xf1
,
0xf0
,
0x60
,
0xe2
,
0x4c
,
0x3d
,
0xd6
,
0xb2
,
0x98
,
0xe8
,
0x95
,
0x90
,
0x5c
,
0xa1
,
0xdb
,
0x47
,
0x77
,
0x63
,
0x30
,
0xd1
,
0x08
,
0x5e
,
0x46
,
0xe9
,
0x9a
,
0x87
,
0xc3
,
0x32
,
0xba
,
0xb1
,
0x10
,
0x0a
,
0x01
,
0xa2
,
0x8b
,
0x24
,
0x51
,
0xbc
,
0x28
,
0xc2
,
0x3e
,
0xd6
,
0xdc
,
0xb1
,
0x91
,
0x77
,
0x61
,
0xa4
,
0xb8
,
0x5e
,
0x2b
,
0x59
,
0x91
,
0x06
,
0x48
,
0xea
,
0x1a
,
0xc9
,
0x29
,
0xf8
,
0xb9
,
0x12
,
0x31
,
0x0f
,
0x0f
,
0x31
,
0x49
,
0x09
,
0xe8
,
0x6f
,
0x2e
,
0x04
,
0xa5
,
0x34
,
0x17
,
0xb1
,
0x16
,
0x99
,
0x24
,
0x1f
,
0x80
,
0xaf
,
0x6f
,
0x85
,
0x4c
,
0xb0
,
0xd4
,
0xa3
,
0xf3
,
0x27
,
0x67
,
0x28
,
0xe8
,
0x59
,
0xc9
,
0xb9
,
0x14
,
0x32
,
0x99
,
0xf5
,
0x58
,
0xc9
,
0x40
,
0x6a
,
0x96
,
0x73
,
0x89
,
0x42
,
0xee
,
0x52
,
0x9f
,
0xe7
,
0x5c
,
0x22
,
0xd5
,
0x30
,
0xc8
,
0xa7
,
0x30
,
0x58
,
0x5a
,
0x01
,
0x5d
,
0x24
,
0x9f
,
0x76
,
0xc8
,
0x56
,
0xcb
,
0x59
,
0x8f
,
0x55
,
0x34
,
0xf2
,
0x31
,
0xf4
,
0x75
,
0x9c
,
0x66
,
0x05
,
0x47
,
0xc5
,
0x8f
,
0xce
,
0x49
,
0x27
,
0xe0
,
0xca
,
0x78
,
0x66
,
0x3d
,
0x66
,
0x39
,
0xe4
,
0x43
,
0xf0
,
0x51
,
0x12
,
0xd4
,
0x7f
,
0x97
,
0x3c
,
0x37
,
0x1e
,
0x53
,
0x0b
,
0x52
,
0xc8
,
0x31
,
0xb8
,
0x7a
,
0x1b
,
0x02
,
0x1e
,
0xb1
,
0xab
,
0xb7
,
0x97
,
0x03
,
0xf0
,
0x37
,
0x46
,
0x6b
,
0xfa
,
0xb7
,
0x03
,
0x47
,
0xad
,
0x08
,
0x42
,
0xe0
,
0xe0
,
0x56
,
0xe8
,
0x02
,
0xdb
,
0x1b
,
0x31
,
0xfc
,
0x6d
,
0x66
,
0x44
,
0xf1
,
0xfb
,
0x48
,
0x25
,
0xd8
,
0x87
,
0xc7
,
0x2c
,
0xea
,
0xcc
,
0x95
,
0xb7
,
0x3f
,
0x57
,
0xab
,
0x2c
,
0x11
,
0x8b
,
0x2d
,
0x56
,
0x17
,
0x30
,
0x8b
,
0x4c
,
0x4c
,
0xae
,
0xc4
,
0x66
,
0x16
,
0x15
,
0xaf
,
0x50
,
0xed
,
0x80
,
0xd5
,
0x98
,
0x84
,
0x30
,
0xd8
,
0xa8
,
0x05
,
0xba
,
0xfa
,
0xe8
,
0xaa
,
0xa0
,
0x89
,
0xda
,
0xa8
,
0xc5
,
0x8f
,
0x2a
,
0xcb
,
0x16
,
0x78
,
0xd0
,
0x01
,
0xab
,
0x31
,
0xcd
,
0xe1
,
0xb8
,
0xd5
,
0xc0
,
0xf3
,
0x34
,
0xf9
,
0xbf
,
0x7b
,
0xa0
,
0x5f
,
0xc3
,
0x21
,
0xe6
,
0xfa
,
0x2e
,
0x8d
,
0x96
,
0x26
,
0xd9
,
0x22
,
0x8d
,
0x96
,
0x98
,
0xcc
,
0x67
,
0xf8
,
0xdb
,
0x34
,
0xa2
,
0x78
,
0xc1
,
0xd5
,
0x86
,
0xdb
,
0x6c
,
0x15
,
0xa4
,
0x2f
,
0x01
,
0x9a
,
0xa9
,
0xda
,
0x1b
,
0x74
,
0xe7
,
0x31
,
0x83
,
0xee
,
0x3e
,
0x30
,
0xe8
,
0xf4
,
0x4f
,
0xa7
,
0xfa
,
0xb0
,
0x99
,
0xc1
,
0x47
,
0x7d
,
0xf8
,
0x14
,
0xfc
,
0x38
,
0x5b
,
0x4b
,
0x6d
,
0x17
,
0xbf
,
0x04
,
0xfb
,
0xe9
,
0xbc
,
0x87
,
0xf6
,
0x6a
,
0x0c
,
0x43
,
0x15
,
0xc9
,
0xe4
,
0x86
,
0xf3
,
0xc4
,
0x6e
,
0x7f
,
0x8d
,
0xcd
,
0xee
,
0xe7
,
0xeb
,
0x5b
,
0x73
,
0x6c
,
0xbc
,
0x08
,
0xfd
,
0x89
,
0x37
,
0x0d
,
0x58
,
0x63
,
0xa0
,
0x19
,
0x8c
,
0x3a
,
0xe3
,
0xff
,
0xdf
,
0x69
,
0xd0
,
0x34
,
0xe4
,
0xb5
,
0x1a
,
0xa2
,
0xf3
,
0x6a
,
0xbe
,
0x71
,
0x7d
,
0x76
,
0xee
,
0x42
,
0xaf
,
0x73
,
0xde
,
0xbb
,
0xa5
,
0xb8
,
0xfb
,
0xa5
,
0xd0
,
0xaf
,
0x2a
,
0x9d
,
0xbf
,
0x17
,
0x85
,
0x36
,
0x87
,
0x1f
,
0x25
,
0x89
,
0xb2
,
0x45
,
0xe3
,
0xef
,
0xd6
,
0x8d
,
0xea
,
0xb5
,
0x6f
,
0x54
,
0xfa
,
0x51
,
0x55
,
0xc8
,
0xb5
,
0x5c
,
0x64
,
0x78
,
0xc1
,
0x56
,
0x89
,
0x0b
,
0x5b
,
0x49
,
0x63
,
0xa0
,
0xdf
,
0xc0
,
0x09
,
0xe3
,
0x79
,
0xba
,
0x6d
,
0xe5
,
0x7a
,
0x1f
,
0x06
,
0xa5
,
0xbf
,
0xa4
,
0x1f
,
0x9d
,
0x8f
,
0x3a
,
0x0b
,
0xcf
,
0x2a
,
0x2f
,
0xfd
,
0x19
,
0x08
,
0xc6
,
0xfe
,
0x14
,
0xa5
,
0x29
,
0xd7
,
0xa5
,
0xb7
,
0x78
,
0x74
,
0x78
,
0xb5
,
0xa1
,
0x77
,
0x7c
,
0x6b
,
0x14
,
0xf0
,
0xaa
,
0x0d
,
0x35
,
0x98
,
0xde
,
0xc3
,
0x88
,
0xf1
,
0x98
,
0x8b
,
0x5c
,
0xff
,
0x8b
,
0xa7
,
0xe5
,
0x29
,
0x40
,
0xae
,
0xf8
,
0xe6
,
0xa6
,
0x2d
,
0x52
,
0xcb
,
0x52
,
0x8b
,
0x7a
,
0xd0
,
0x88
,
0x4a
,
0x7f
,
0x77
,
0xe0
,
0x49
,
0x27
,
0x33
,
0xee
,
0xcf
,
0x14
,
0x4e
,
0xb2
,
0x34
,
0x99
,
0xef
,
0x8f
,
0xcf
,
0xae
,
0xd9
,
0x30
,
0x25
,
0xbf
,
0x9f
,
0xef
,
0x9f
,
0xee
,
0xae
,
0xf9
,
0x71
,
0x0b
,
0x40
,
0x7f
,
0x75
,
0x20
,
0x60
,
0xfc
,
0x17
,
0x53
,
0x45
,
0x79
,
0x6f
,
0x8e
,
0x61
,
0x68
,
0xde
,
0x87
,
0x8b
,
0x66
,
0x1a
,
0x6a
,
0x6c
,
0x1a
,
0xce
,
0x94
,
0x58
,
0x0a
,
0x8c
,
0xb6
,
0x79
,
0x5b
,
0x16
,
0x23
,
0x54
,
0xb4
,
0xaa
,
0x27
,
0xd7
,
0x63
,
0x16
,
0x99
,
0x79
,
0x8c
,
0x5f
,
0xf1
,
0xf8
,
0xee
,
0x32
,
0x4a
,
0x23
,
0x19
,
0x97
,
0xef
,
0xec
,
0x90
,
0x75
,
0x6c
,
0xf4
,
0x3d
,
0x38
,
0xc6
,
0xc3
,
0x6e
,
0x2a
,
0x39
,
0x05
,
0x5f
,
0xbf
,
0x9e
,
0xf1
,
0xd7
,
0xb6
,
0x8c
,
0x12
,
0x9c
,
0xff
,
0xe5
,
0x40
,
0xbf
,
0x3c
,
0x19
,
0xf2
,
0x2d
,
0x9c
,
0x5c
,
0xe1
,
0x53
,
0xdd
,
0xc4
,
0xbc
,
0x69
,
0x67
,
0xa1
,
0xdd
,
0xd2
,
0xf8
,
0xad
,
0xda
,
0xd8
,
0xfe
,
0x3e
,
0xed
,
0x91
,
0x4f
,
0xe0
,
0xf8
,
0x59
,
0x35
,
0x58
,
0x57
,
0x58
,
0xe9
,
0xa8
,
0x89
,
0xff
,
0x41
,
0xa4
,
0xe3
,
0xc0
,
0xc2
,
0x6b
,
0xa9
,
0xbf
,
0xfc
,
0x82
,
0xf6
,
0xc8
,
0x67
,
0x30
,
0xba
,
0xe1
,
0xfa
,
0x62
,
0xad
,
0xb3
,
0xb9
,
0x90
,
0x42
,
0x2e
,
0xc9
,
0x1b
,
0x96
,
0x50
,
0x5f
,
0xa3
,
0x75
,
0x08
,
0x26
,
0xa3
,
0xbd
,
0xdb
,
0x3e
,
0xfe
,
0x8b
,
0xf9
,
0xfc
,
0x9f
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0xcb
,
0x56
,
0xb4
,
0x54
,
0xea
,
0x08
,
0x00
,
0x00
,
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment