/
format.go
37 lines (32 loc) · 1.37 KB
/
format.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
package format
// InterchangeFormatVersion specified by https://eips.ethereum.org/EIPS/eip-3076.
// The version Prysm supports is version 5.
const InterchangeFormatVersion = "5"
// EIPSlashingProtectionFormat string representation of a standard
// format for representing validator slashing protection db data.
type EIPSlashingProtectionFormat struct {
Metadata struct {
InterchangeFormatVersion string `json:"interchange_format_version"`
GenesisValidatorsRoot string `json:"genesis_validators_root"`
} `json:"metadata"`
Data []*ProtectionData `json:"data"`
}
// ProtectionData field for the standard slashing protection format.
type ProtectionData struct {
Pubkey string `json:"pubkey"`
SignedBlocks []*SignedBlock `json:"signed_blocks"`
SignedAttestations []*SignedAttestation `json:"signed_attestations"`
}
// SignedAttestation in the standard slashing protection format file, including
// a source epoch, target epoch, and an optional signing root.
type SignedAttestation struct {
SourceEpoch string `json:"source_epoch"`
TargetEpoch string `json:"target_epoch"`
SigningRoot string `json:"signing_root,omitempty"`
}
// SignedBlock in the standard slashing protection format, including a slot
// and an optional signing root.
type SignedBlock struct {
Slot string `json:"slot"`
SigningRoot string `json:"signing_root,omitempty"`
}