mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-24 12:27:18 +00:00
45 lines
1.8 KiB
Go
45 lines
1.8 KiB
Go
|
// Package interchangeformat defines methods to parse, import, and export slashing protection data
|
||
|
// from a standard JSON file according to EIP-3076 https://eips.ethereum.org/EIPS/eip-3076. This format
|
||
|
// is critical to allow safe interoperability between eth2 clients.
|
||
|
package interchangeformat
|
||
|
|
||
|
import "github.com/sirupsen/logrus"
|
||
|
|
||
|
var log = logrus.WithField("prefix", "slashing-protection-format")
|
||
|
|
||
|
// INTERCHANGE_FORMAT_VERSION specified by https://eips.ethereum.org/EIPS/eip-3076.
|
||
|
// The version Prysm supports is version 5.
|
||
|
const INTERCHANGE_FORMAT_VERSION = "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"`
|
||
|
}
|