From f731514d7547fe721512a3661a444dcfcb938d7d Mon Sep 17 00:00:00 2001 From: Eugene Zagidullin Date: Wed, 8 Apr 2026 00:14:29 +0300 Subject: [PATCH] core.Validator interface --- protocol/core/types.go | 5 +++++ protocol/proto_023_PtSeouLo/operations.go | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/protocol/core/types.go b/protocol/core/types.go index b88c2ef..04adee3 100644 --- a/protocol/core/types.go +++ b/protocol/core/types.go @@ -314,3 +314,8 @@ type PackData struct { } func (PackData) SignRequestKind() string { return "pack" } + +// Validator interface may be implemented by some operations to allow pre-flight validation before signing/injection +type Validator interface { + Validate() error +} diff --git a/protocol/proto_023_PtSeouLo/operations.go b/protocol/proto_023_PtSeouLo/operations.go index a687dec..ef3040e 100644 --- a/protocol/proto_023_PtSeouLo/operations.go +++ b/protocol/proto_023_PtSeouLo/operations.go @@ -3,6 +3,7 @@ package proto_023_PtSeouLo //go:generate go run ../../cmd/genmarshaller.go import ( + "errors" "strconv" tz "github.com/ecadlabs/gotez/v2" @@ -125,6 +126,15 @@ type UpdateCompanionKey UpdateConsensusKey func (*UpdateCompanionKey) OperationKind() string { return "update_companion_key" } +func (u *UpdateCompanionKey) Validate() error { + if _, ok := u.PublicKey.(*tz.BLSPublicKey); !ok { + return errors.New("companion key is not a BLS key") + } + return nil +} + +var _ core.Validator = (*UpdateCompanionKey)(nil) + //json:kind=OperationKind() type Attestation proto_022_PsRiotum.Attestation