-
Notifications
You must be signed in to change notification settings - Fork 1
/
sign_request.go
66 lines (53 loc) · 2.15 KB
/
sign_request.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package protocol
import (
tz "github.com/ecadlabs/gotez/v2"
"github.com/ecadlabs/gotez/v2/encoding"
"github.com/ecadlabs/gotez/v2/protocol/latest"
)
type SignRequest interface {
SignRequestKind() string
}
type BlockSignRequest struct {
Chain *tz.ChainID
BlockHeader latest.UnsignedBlockHeader
}
func (r *BlockSignRequest) GetChainID() *tz.ChainID { return r.Chain }
func (r *BlockSignRequest) GetLevel() int32 { return r.BlockHeader.Level }
func (r *BlockSignRequest) GetRound() int32 { return r.BlockHeader.PayloadRound }
func (*BlockSignRequest) SignRequestKind() string { return "block" }
type PreattestationSignRequest struct {
Chain *tz.ChainID
Branch *tz.BlockHash
Operation latest.InlinedPreendorsementContents
}
type PreendorsementSignRequest = PreattestationSignRequest
func (r *PreattestationSignRequest) GetChainID() *tz.ChainID { return r.Chain }
func (r *PreattestationSignRequest) GetLevel() int32 {
return r.Operation.(*latest.Preattestation).Level
}
func (r *PreattestationSignRequest) GetRound() int32 {
return r.Operation.(*latest.Preattestation).Round
}
func (*PreattestationSignRequest) SignRequestKind() string { return "preendorsement" }
type AttestationSignRequest struct {
Chain *tz.ChainID
Branch *tz.BlockHash
Operation latest.InlinedEndorsementContents
}
type EndorsementSignRequest = AttestationSignRequest
func (r *AttestationSignRequest) GetChainID() *tz.ChainID { return r.Chain }
func (r *AttestationSignRequest) GetLevel() int32 { return r.Operation.(*latest.Attestation).Level }
func (r *AttestationSignRequest) GetRound() int32 { return r.Operation.(*latest.Attestation).Round }
func (*AttestationSignRequest) SignRequestKind() string { return "endorsement" }
type GenericOperationSignRequest latest.UnsignedOperation
func (*GenericOperationSignRequest) SignRequestKind() string { return "generic" }
func init() {
encoding.RegisterEnum(&encoding.Enum[SignRequest]{
Variants: encoding.Variants[SignRequest]{
0x03: (*GenericOperationSignRequest)(nil),
0x11: (*BlockSignRequest)(nil),
0x12: (*PreattestationSignRequest)(nil),
0x13: (*AttestationSignRequest)(nil),
},
})
}