Documentation
¶
Index ¶
- Variables
- func DiffsBridgeExits(expected []*agglayertypes.BridgeExit, validating []*agglayertypes.BridgeExit) []string
- func DiffsCertificate(expectedCertificate *agglayertypes.Certificate, ...) []string
- func DiffsImportedBridgeExits(expected []*agglayertypes.ImportedBridgeExit, ...) []string
- func HashCertificateToSign(cert *agglayertypes.Certificate) (common.Hash, error)
- type CertificateValidator
- type Config
- type FEPConfig
- type L1InfoTreeRootByLeafQuerier
- type LerQuerierConfig
- type LocalValidator
- func (a *LocalValidator) Address() common.Address
- func (a *LocalValidator) HealthCheck(ctx context.Context) (*types.HealthCheckResponse, error)
- func (a *LocalValidator) Index() uint32
- func (a *LocalValidator) String() string
- func (a *LocalValidator) URL() string
- func (a *LocalValidator) ValidateAndSignCertificate(ctx context.Context, certificate *agglayertypes.Certificate, ...) ([]byte, error)
- type PPConfig
- type RemoteValidator
- func (v *RemoteValidator) Address() common.Address
- func (v *RemoteValidator) HealthCheck(ctx context.Context) (*types.HealthCheckResponse, error)
- func (v *RemoteValidator) Index() uint32
- func (v *RemoteValidator) String() string
- func (v *RemoteValidator) URL() string
- func (v *RemoteValidator) ValidateAndSignCertificate(ctx context.Context, certificate *agglayertypes.Certificate, ...) ([]byte, error)
- type ValidatorClient
- type ValidatorService
Constants ¶
This section is empty.
Variables ¶
var ( ErrNilCertificate = errors.New("aggsender-validator nil certificate") ErrMetadataNotCompatible = errors.New("aggsender-validator metadata not compatible with the current version") )
Functions ¶
func DiffsBridgeExits ¶
func DiffsBridgeExits( expected []*agglayertypes.BridgeExit, validating []*agglayertypes.BridgeExit) []string
DiffsBridgeExits compares two slices of BridgeExit and returns a slice of strings containing the differences between them.
func DiffsCertificate ¶
func DiffsCertificate( expectedCertificate *agglayertypes.Certificate, validatingCertificate *agglayertypes.Certificate) []string
DiffsCertificate compares two certificates and returns a slice of strings containing the differences between them. If both certificates are nil, it returns an empty slice.
func DiffsImportedBridgeExits ¶
func DiffsImportedBridgeExits( expected []*agglayertypes.ImportedBridgeExit, validating []*agglayertypes.ImportedBridgeExit) []string
DiffsImportedBridgeExits compares two slices of ImportedBridgeExit and returns a slice of strings containing the differences between them.
func HashCertificateToSign ¶
func HashCertificateToSign(cert *agglayertypes.Certificate) (common.Hash, error)
HashCertificateToSign is the hash of the certificate that the validator will sign before returning result to the aggsender
Types ¶
type CertificateValidator ¶
type CertificateValidator struct {
// contains filtered or unexported fields
}
CertificateValidator is a object to validate a certificate
func NewAggsenderValidator ¶
func NewAggsenderValidator(logger aggkitcommon.Logger, flow types.AggsenderVerifierFlow, l1InfoTreeDataQuerier L1InfoTreeRootByLeafQuerier, certQuerier types.CertificateQuerier, lerQuerier types.LERQuerier) *CertificateValidator
func (*CertificateValidator) ValidateCertificate ¶
func (a *CertificateValidator) ValidateCertificate(ctx context.Context, params types.VerifyIncomingRequest) error
ValidateCertificate validates the incoming certificate against the previous one.
type Config ¶
type Config struct {
// EnableRPC is a flag to enable the RPC for validator
EnableRPC bool `mapstructure:"EnableRPC"`
// Signer is the key which is used to sign valid certificates
Signer signertypes.SignerConfig `mapstructure:"Signer"`
// ServerConfig contains the configuration for the gRPC server.
ServerConfig aggkitgrpc.ServerConfig `mapstructure:"ServerConfig"`
// MaxCertSize is the maximum size of the certificate (the emitted certificate cannot be bigger that this size)
// 0 is infinite
MaxCertSize uint `mapstructure:"MaxCertSize"`
// MaxL2BlockNumber is the last L2 block number that is going to be included in a certificate
// 0 means disabled
MaxL2BlockNumber uint64 `mapstructure:"MaxL2BlockNumber"`
// DelayBetweenRetries is the delay between retries:
// is used on store Certificate and also in initial check
DelayBetweenRetries types.Duration `mapstructure:"DelayBetweenRetries"`
// LerQuerier contains the configuration for the LER querier
// which is used to query the LER data from the RollupManager contract
LerQuerier LerQuerierConfig `mapstructure:"LerQuerierConfig"`
// PPConfig specific configuration for Pessimistic mode
PPConfig PPConfig `mapstructure:"PPConfig"`
// FEPConfig specific configuration for FEP mode
FEPConfig FEPConfig `mapstructure:"FEPConfig"`
// AgglayerClient is the Agglayer gRPC client configuration
AgglayerClient agglayer.ClientConfig `mapstructure:"AgglayerClient"`
// Mode is the mode of the AggSender Validator (regular pessimistic proof mode or the aggchain proof mode)
Mode aggsendertypes.AggsenderMode `jsonschema:"enum=PessimisticProof, enum=AggchainProof, enum=Auto" mapstructure:"Mode"` //nolint:lll
// RequireCommitteeMembershipCheck indicates whether to check if the validator is part of the committee
RequireCommitteeMembershipCheck bool `mapstructure:"RequireCommitteeMembershipCheck"`
}
Config defines the configuration for the validator validator service.
type FEPConfig ¶
type FEPConfig struct {
// SovereignRollupAddr is the address of the sovereign rollup contract on L1
SovereignRollupAddr ethCommon.Address `mapstructure:"SovereignRollupAddr"`
// RequireNoBlockGap is true if the AggSender should not accept a gap between
// lastBlock from lastCertificate and first block of FEP
RequireNoBlockGap bool `mapstructure:"RequireNoBlockGap"`
// OpNodeURL is the URL of the OP Node to query for op related data
OpNodeURL string `mapstructure:"OpNodeURL"`
}
type LerQuerierConfig ¶
type LerQuerierConfig struct {
// RollupManagerAddr is the address of the RollupManager contract on L1
RollupManagerAddr ethCommon.Address `mapstructure:"RollupManagerAddr"`
// RollupCreationBlockL1 is the block number when the rollup was created on L1
RollupCreationBlockL1 uint64 `mapstructure:"RollupCreationBlockL1"`
}
type LocalValidator ¶
type LocalValidator struct {
// contains filtered or unexported fields
}
LocalValidator is a struct that implements the types.Validator interface and is used to validate and sign certificates locally. This is a temporary check, in the future it will be replaced with a object that calls to aggsender-validator using grpc
func NewLocalValidator ¶
func NewLocalValidator( log aggkitcommon.Logger, storage db.AggSenderStorage, validator types.CertificateValidator, ) *LocalValidator
NewLocalValidator creates a new LocalValidator instance.
func (*LocalValidator) Address ¶
func (a *LocalValidator) Address() common.Address
Address returns the Ethereum address of the LocalValidator
func (*LocalValidator) HealthCheck ¶
func (a *LocalValidator) HealthCheck(ctx context.Context) (*types.HealthCheckResponse, error)
func (*LocalValidator) Index ¶
func (a *LocalValidator) Index() uint32
Index returns the index of the validator in the signers list For local validator it is always 0
func (*LocalValidator) String ¶
func (a *LocalValidator) String() string
String returns a string representation of the LocalValidator.
func (*LocalValidator) URL ¶
func (a *LocalValidator) URL() string
URL returns an URL for the LocalValidator
func (*LocalValidator) ValidateAndSignCertificate ¶
func (a *LocalValidator) ValidateAndSignCertificate( ctx context.Context, certificate *agglayertypes.Certificate, lastL2BlockInCert uint64, ) ([]byte, error)
ValidateAndSignCertificate validates the certificate. LocalValidator does not sign the certificate, it just validates it.
type PPConfig ¶
type PPConfig struct {
// RequireOneBridgeInPPCertificate is a flag to force the validator to have at least one bridge exit
// for the Pessimistic Proof certificates
RequireOneBridgeInPPCertificate bool `mapstructure:"RequireOneBridgeInPPCertificate"`
}
type RemoteValidator ¶
type RemoteValidator struct {
// contains filtered or unexported fields
}
RemoteValidator encapsulates the gRPC client and configuration required to interact with the AggsenderValidator service.
func NewRemoteValidator ¶
func NewRemoteValidator( cfg *grpc.ClientConfig, storage db.AggSenderStorage, address common.Address, index uint32, ) (*RemoteValidator, error)
NewRemoteValidator initializes a new RemoteValidator with the provided gRPC client configuration. It returns an error if the gRPC client cannot be created.
func (*RemoteValidator) Address ¶
func (v *RemoteValidator) Address() common.Address
Address returns the Ethereum address of the remote validator
func (*RemoteValidator) HealthCheck ¶
func (v *RemoteValidator) HealthCheck(ctx context.Context) (*types.HealthCheckResponse, error)
HealthCheck performs a health check on the AggsenderValidator service.
func (*RemoteValidator) Index ¶
func (v *RemoteValidator) Index() uint32
Index is the index of the signer in the signers list on the Multisig contract
func (*RemoteValidator) String ¶
func (v *RemoteValidator) String() string
String returns a string representation of the RemoteValidator.
func (*RemoteValidator) URL ¶
func (v *RemoteValidator) URL() string
URL returns an URL for the remote validator
func (*RemoteValidator) ValidateAndSignCertificate ¶
func (v *RemoteValidator) ValidateAndSignCertificate( ctx context.Context, certificate *agglayertypes.Certificate, lastL2BlockInCert uint64, ) ([]byte, error)
ValidateAndSignCertificate sends a certificate to the AggsenderValidator service for validation.
type ValidatorClient ¶
type ValidatorClient struct {
// contains filtered or unexported fields
}
ValidatorClient encapsulates the gRPC client and configuration required to interact with the AggsenderValidator service.
func NewValidatorClient ¶
func NewValidatorClient(cfg *grpc.ClientConfig) (*ValidatorClient, error)
NewValidatorClient initializes a new ValidatorClient with the provided gRPC client configuration. It returns an error if the gRPC client cannot be created.
func (*ValidatorClient) HealthCheck ¶
func (v *ValidatorClient) HealthCheck(ctx context.Context) (*types.HealthCheckResponse, error)
func (*ValidatorClient) ValidateCertificate ¶
func (v *ValidatorClient) ValidateCertificate( ctx context.Context, previousCertificateID *common.Hash, certificate *agglayertypes.Certificate, lastL2BlockInCert uint64, ) ([]byte, error)
ValidateCertificate sends a certificate to the AggsenderValidator service for validation.
type ValidatorService ¶
type ValidatorService struct {
// Embed the generated server interface to ensure forward compatibility
v1.UnimplementedAggsenderValidatorServer
// contains filtered or unexported fields
}
ValidatorService implements the gRPC server for the AggsenderValidator service.
func NewValidatorService ¶
func NewValidatorService( logger aggkitcommon.Logger, validator types.CertificateValidator, agglayerClient agglayer.AggLayerClientCertificateIDQuerier, signer signertypes.Signer) *ValidatorService
func (*ValidatorService) HealthCheck ¶
func (s *ValidatorService) HealthCheck(ctx context.Context, in *emptypb.Empty) (*v1.HealthCheckResponse, error)
HealthCheck implements the HealthCheck method of the AggsenderValidator service.
func (*ValidatorService) ValidateCertificate ¶
func (s *ValidatorService) ValidateCertificate( ctx context.Context, req *v1.ValidateCertificateRequest) (*v1.ValidateCertificateResponse, error)
ValidateCertificate validates a new certificate