From cf0fbf1dc6f8b0d23acd70ada87ec6ba46b17f8c Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Thu, 24 Jul 2025 19:07:45 +0530 Subject: [PATCH 01/28] feat: add primev keyper definition and commitment gossip message --- rolling-shutter/cmd/command.go | 2 + rolling-shutter/cmd/primevkeyper/keyper.go | 52 +++++ rolling-shutter/keyper/kprtopics/kprtopics.go | 1 + rolling-shutter/keyperimpl/primev/config.go | 155 +++++++++++++ .../keyperimpl/primev/database/database.go | 29 +++ .../primev/database/sql/queries/primev.sql | 0 .../primev/database/sql/schema/primev.sql | 0 .../keyperimpl/primev/database/sql/sqlc.yaml | 13 ++ rolling-shutter/keyperimpl/primev/handler.go | 52 +++++ rolling-shutter/keyperimpl/primev/keyper.go | 156 +++++++++++++ .../keyperimpl/primev/neweonpublickey.go | 12 + .../keyperimpl/primev/newkeyperset.go | 56 +++++ rolling-shutter/p2pmsg/gossip.pb.go | 207 +++++++++++++++++- rolling-shutter/p2pmsg/gossip.proto | 17 ++ rolling-shutter/p2pmsg/primevcommitment.go | 19 ++ 15 files changed, 762 insertions(+), 9 deletions(-) create mode 100644 rolling-shutter/cmd/primevkeyper/keyper.go create mode 100644 rolling-shutter/keyperimpl/primev/config.go create mode 100644 rolling-shutter/keyperimpl/primev/database/database.go create mode 100644 rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql create mode 100644 rolling-shutter/keyperimpl/primev/database/sql/schema/primev.sql create mode 100644 rolling-shutter/keyperimpl/primev/database/sql/sqlc.yaml create mode 100644 rolling-shutter/keyperimpl/primev/handler.go create mode 100644 rolling-shutter/keyperimpl/primev/keyper.go create mode 100644 rolling-shutter/keyperimpl/primev/neweonpublickey.go create mode 100644 rolling-shutter/keyperimpl/primev/newkeyperset.go create mode 100644 rolling-shutter/p2pmsg/primevcommitment.go diff --git a/rolling-shutter/cmd/command.go b/rolling-shutter/cmd/command.go index 8d40c8b28..1b66d53ad 100644 --- a/rolling-shutter/cmd/command.go +++ b/rolling-shutter/cmd/command.go @@ -10,6 +10,7 @@ import ( "github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/gnosiskeyper" "github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/optimism" "github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/p2pnode" + "github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/primevkeyper" "github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/shutterservicekeyper" "github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/snapshot" "github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/snapshotkeyper" @@ -29,6 +30,7 @@ func Subcommands() []*cobra.Command { cryptocmd.Cmd(), p2pnode.Cmd(), shutterservicekeyper.Cmd(), + primevkeyper.Cmd(), } } diff --git a/rolling-shutter/cmd/primevkeyper/keyper.go b/rolling-shutter/cmd/primevkeyper/keyper.go new file mode 100644 index 000000000..8be3efe45 --- /dev/null +++ b/rolling-shutter/cmd/primevkeyper/keyper.go @@ -0,0 +1,52 @@ +package primevkeyper + +import ( + "context" + + "github.com/jackc/pgx/v4/pgxpool" + "github.com/pkg/errors" + "github.com/rs/zerolog/log" + "github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/shversion" + keyper "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/database" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/configuration/command" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service" + "github.com/spf13/cobra" +) + +func Cmd() *cobra.Command { + builder := command.Build( + main, + command.Usage( + "Run a Shutter keyper for PrimeV POC", + `This command runs a keyper node. It will connect to both a PrimeV and a +Shuttermint node which have to be started separately in advance.`, + ), + command.WithGenerateConfigSubcommand(), + command.WithDumpConfigSubcommand(), + ) + builder.AddInitDBCommand(initDB) + return builder.Command() +} + +func main(config *keyper.Config) error { + log.Info(). + Str("version", shversion.Version()). + Str("address", config.GetAddress().Hex()). + Str("shuttermint", config.Shuttermint.ShuttermintURL). + Msg("starting primev keyper") + + kpr := keyper.New(config) + return service.RunWithSighandler(context.Background(), kpr) +} + +func initDB(cfg *keyper.Config) error { + ctx := context.Background() + dbpool, err := pgxpool.Connect(ctx, cfg.DatabaseURL) + if err != nil { + return errors.Wrap(err, "failed to connect to database") + } + defer dbpool.Close() + return db.InitDB(ctx, dbpool, database.Definition.Name(), database.Definition) +} diff --git a/rolling-shutter/keyper/kprtopics/kprtopics.go b/rolling-shutter/keyper/kprtopics/kprtopics.go index bfe3c6296..93ed0f1e6 100644 --- a/rolling-shutter/keyper/kprtopics/kprtopics.go +++ b/rolling-shutter/keyper/kprtopics/kprtopics.go @@ -5,4 +5,5 @@ const ( DecryptionKeys = "decryptionKeys" DecryptionKeyShares = "decryptionKeyShares" EonPublicKey = "EonPublicKey" + PrimevCommitment = "primevCommitment" ) diff --git a/rolling-shutter/keyperimpl/primev/config.go b/rolling-shutter/keyperimpl/primev/config.go new file mode 100644 index 000000000..377187543 --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/config.go @@ -0,0 +1,155 @@ +package primev + +import ( + "io" + + "github.com/ethereum/go-ethereum/common" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprconfig" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/configuration" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/metricsserver" + "github.com/shutter-network/rolling-shutter/rolling-shutter/p2p" +) + +type Config struct { + InstanceID uint64 `shconfig:",required"` + DatabaseURL string `shconfig:",required" comment:"If it's empty, we use the standard PG_ environment variables"` + + HTTPEnabled bool + HTTPReadOnly bool + HTTPListenAddress string + + Chain *ChainConfig + P2P *p2p.Config + Shuttermint *kprconfig.ShuttermintConfig + Metrics *metricsserver.MetricsConfig + + MaxNumKeysPerMessage uint64 +} + +func NewConfig() *Config { + c := &Config{} + c.Init() + return c +} + +func (c *Config) Init() { + c.P2P = p2p.NewConfig() + c.Shuttermint = kprconfig.NewShuttermintConfig() + c.Chain = NewChainConfig() + c.Metrics = metricsserver.NewConfig() +} + +func (c *Config) Validate() error { + // TODO: needs to be implemented + return nil +} + +func (c *Config) Name() string { + return "primevkeyper" +} + +func (c *Config) SetDefaultValues() error { + c.MaxNumKeysPerMessage = 500 + c.HTTPEnabled = false + c.HTTPReadOnly = true + c.HTTPListenAddress = ":3000" + return nil +} + +func (c *Config) SetExampleValues() error { + err := c.SetDefaultValues() + if err != nil { + return err + } + c.InstanceID = 42 + c.DatabaseURL = "postgres://pguser:pgpassword@localhost:5432/shutter" + return nil +} + +func (c Config) TOMLWriteHeader(_ io.Writer) (int, error) { + return 0, nil +} + +func (c *Config) GetAddress() common.Address { + return c.Chain.Node.PrivateKey.EthereumAddress() +} + +type ChainConfig struct { + Node *configuration.EthnodeConfig `shconfig:",required"` + Contracts *ContractsConfig `shconfig:",required"` + SyncStartBlockNumber uint64 `shconfig:",required"` + SyncMonitorCheckInterval uint64 `shconfig:",required"` +} + +func NewChainConfig() *ChainConfig { + c := &ChainConfig{ + Node: configuration.NewEthnodeConfig(), + Contracts: NewContractsConfig(), + SyncStartBlockNumber: 0, + SyncMonitorCheckInterval: 0, + } + c.Init() + return c +} + +func (c *ChainConfig) Init() { + c.Node.Init() + c.Contracts.Init() +} + +func (c *ChainConfig) Name() string { + return "chain" +} + +func (c *ChainConfig) Validate() error { + return nil +} + +func (c *ChainConfig) SetDefaultValues() error { + c.SyncStartBlockNumber = 0 + c.SyncMonitorCheckInterval = 30 + return c.Contracts.SetDefaultValues() +} + +func (c *ChainConfig) SetExampleValues() error { + c.SyncMonitorCheckInterval = 30 + return nil +} + +func (c *ChainConfig) TOMLWriteHeader(_ io.Writer) (int, error) { + return 0, nil +} + +type ContractsConfig struct { + KeyperSetManager common.Address `shconfig:",required"` + KeyBroadcastContract common.Address `shconfig:",required"` +} + +func NewContractsConfig() *ContractsConfig { + return &ContractsConfig{ + KeyperSetManager: common.Address{}, + KeyBroadcastContract: common.Address{}, + } +} + +func (c *ContractsConfig) Init() {} + +func (c *ContractsConfig) Name() string { + return "contracts" +} + +func (c *ContractsConfig) Validate() error { + return nil +} + +func (c *ContractsConfig) SetDefaultValues() error { + return nil +} + +func (c *ContractsConfig) SetExampleValues() error { + return nil +} + +func (c *ContractsConfig) TOMLWriteHeader(_ io.Writer) (int, error) { + return 0, nil +} diff --git a/rolling-shutter/keyperimpl/primev/database/database.go b/rolling-shutter/keyperimpl/primev/database/database.go new file mode 100644 index 000000000..2f93a7b07 --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/database/database.go @@ -0,0 +1,29 @@ +package database + +import ( + "embed" + + "github.com/rs/zerolog/log" + + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/database" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db" +) + +//go:generate sqlc generate --file sql/sqlc.yaml + +// TODO: add the sql files here +var files embed.FS + +var Definition db.Definition + +func init() { + def, err := db.NewSQLCDefinition(files, "sql/", "primevkeyper", 1) + if err != nil { + log.Fatal().Err(err).Msg("failed to initialize DB metadata") + } + Definition = db.NewAggregateDefinition( + "primevkeyper", + def, + database.Definition, + ) +} diff --git a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql new file mode 100644 index 000000000..e69de29bb diff --git a/rolling-shutter/keyperimpl/primev/database/sql/schema/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/schema/primev.sql new file mode 100644 index 000000000..e69de29bb diff --git a/rolling-shutter/keyperimpl/primev/database/sql/sqlc.yaml b/rolling-shutter/keyperimpl/primev/database/sql/sqlc.yaml new file mode 100644 index 000000000..63efe1093 --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/database/sql/sqlc.yaml @@ -0,0 +1,13 @@ +version: "2" +sql: + - schema: "schemas" + queries: "queries" + engine: "postgresql" + gen: + go: + package: "database" + out: "../" + sql_package: "pgx/v4" + output_db_file_name: "db.sqlc.gen.go" + output_models_file_name: "models.sqlc.gen.go" + output_files_suffix: "c.gen" diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go new file mode 100644 index 000000000..976bf46fb --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -0,0 +1,52 @@ +package primev + +import ( + "context" + + pubsub "github.com/libp2p/go-libp2p-pubsub" + "github.com/pkg/errors" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/broker" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/identitypreimage" + "github.com/shutter-network/rolling-shutter/rolling-shutter/p2pmsg" +) + +type PrimevCommitmentHandler struct { + config *Config + decryptionTriggerChannel chan *broker.Event[*epochkghandler.DecryptionTrigger] +} + +func (h *PrimevCommitmentHandler) MessagePrototypes() []p2pmsg.Message { + return []p2pmsg.Message{&p2pmsg.Commitment{}} +} + +func (h *PrimevCommitmentHandler) ValidateMessage(ctx context.Context, msg p2pmsg.Message) (pubsub.ValidationResult, error) { + commitment := msg.(*p2pmsg.Commitment) + if commitment.GetInstanceId() != h.config.InstanceID { + return pubsub.ValidationReject, errors.Errorf("instance ID mismatch (want=%d, have=%d)", h.config.InstanceID, commitment.GetInstanceId()) + } + return pubsub.ValidationAccept, nil + //TODO: more validations need to be done here +} + +func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg.Message) ([]p2pmsg.Message, error) { + commitment := msg.(*p2pmsg.Commitment) + + //TODO: need to validate on identity preimage + identityPreimages := make([]identitypreimage.IdentityPreimage, 0, len(commitment.TxHashes)) + for _, txHash := range commitment.TxHashes { + identityPreimage, err := identitypreimage.HexToIdentityPreimage(txHash) + if err != nil { + return nil, err + } + identityPreimages = append(identityPreimages, identityPreimage) + } + decryptionTrigger := &epochkghandler.DecryptionTrigger{ + BlockNumber: uint64(commitment.BlockNumber), + IdentityPreimages: identityPreimages, + } + + h.decryptionTriggerChannel <- broker.NewEvent(decryptionTrigger) + + return nil, nil +} diff --git a/rolling-shutter/keyperimpl/primev/keyper.go b/rolling-shutter/keyperimpl/primev/keyper.go new file mode 100644 index 000000000..557006843 --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/keyper.go @@ -0,0 +1,156 @@ +package primev + +import ( + "context" + "log/slog" + + "github.com/ethereum/go-ethereum/ethclient" + gethLog "github.com/ethereum/go-ethereum/log" + "github.com/jackc/pgx/v4/pgxpool" + "github.com/pkg/errors" + "github.com/rs/zerolog/log" + "github.com/shutter-network/rolling-shutter/rolling-shutter/eonkeypublisher" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprconfig" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/gnosis/database" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/broker" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync" + syncevent "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync/event" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service" + "github.com/shutter-network/rolling-shutter/rolling-shutter/p2p" +) + +var ErrParseKeyperSet = errors.New("cannot parse KeyperSet") + +type Keyper struct { + core *keyper.KeyperCore + config *Config + dbpool *pgxpool.Pool + + chainSyncClient *chainsync.Client + eonKeyPublisher *eonkeypublisher.EonKeyPublisher + newKeyperSets chan *syncevent.KeyperSet + newEonPublicKeys chan keyper.EonPublicKey + + // outputs + decryptionTriggerChannel chan *broker.Event[*epochkghandler.DecryptionTrigger] +} + +func New(c *Config) *Keyper { + return &Keyper{ + config: c, + } +} + +func (k *Keyper) Start(ctx context.Context, runner service.Runner) error { + var err error + + k.newKeyperSets = make(chan *syncevent.KeyperSet) + k.newEonPublicKeys = make(chan keyper.EonPublicKey) + k.decryptionTriggerChannel = make(chan *broker.Event[*epochkghandler.DecryptionTrigger]) + + k.dbpool, err = db.Connect(ctx, runner, k.config.DatabaseURL, database.Definition.Name()) + if err != nil { + return errors.Wrap(err, "failed to connect to database") + } + + messageSender, err := p2p.New(k.config.P2P) + if err != nil { + return errors.Wrap(err, "failed to initialize p2p messaging") + } + + //TODO: do we need a middleware also here? + messageSender.AddMessageHandler(&PrimevCommitmentHandler{ + config: k.config, + decryptionTriggerChannel: k.decryptionTriggerChannel, + }) + + k.core, err = NewKeyper(k) + if err != nil { + return errors.Wrap(err, "can't instantiate keyper core") + } + + k.chainSyncClient, err = chainsync.NewClient( + ctx, + chainsync.WithClientURL(k.config.Chain.Node.EthereumURL), + chainsync.WithKeyperSetManager(k.config.Chain.Contracts.KeyperSetManager), + chainsync.WithKeyBroadcastContract(k.config.Chain.Contracts.KeyBroadcastContract), + chainsync.WithSyncNewKeyperSet(k.channelNewKeyperSet), + chainsync.WithPrivateKey(k.config.Chain.Node.PrivateKey.Key), + chainsync.WithLogger(gethLog.NewLogger(slog.Default().Handler())), + ) + if err != nil { + return err + } + + eonKeyPublisherClient, err := ethclient.DialContext(ctx, k.config.Chain.Node.EthereumURL) + if err != nil { + return errors.Wrapf(err, "failed to dial ethereum node at %s", k.config.Chain.Node.EthereumURL) + } + k.eonKeyPublisher, err = eonkeypublisher.NewEonKeyPublisher( + k.dbpool, + eonKeyPublisherClient, + k.config.Chain.Contracts.KeyperSetManager, + k.config.Chain.Node.PrivateKey.Key, + ) + if err != nil { + return errors.Wrap(err, "failed to initialize eon key publisher") + } + + runner.Go(func() error { return k.processInputs(ctx) }) + return runner.StartService(k.core, k.chainSyncClient, k.eonKeyPublisher) +} + +func NewKeyper(kpr *Keyper) (*keyper.KeyperCore, error) { + return keyper.New( + &kprconfig.Config{ + InstanceID: kpr.config.InstanceID, + DatabaseURL: kpr.config.DatabaseURL, + HTTPEnabled: kpr.config.HTTPEnabled, + HTTPReadOnly: kpr.config.HTTPReadOnly, + HTTPListenAddress: kpr.config.HTTPListenAddress, + P2P: kpr.config.P2P, + Ethereum: kpr.config.Chain.Node, + Shuttermint: kpr.config.Shuttermint, + Metrics: kpr.config.Metrics, + MaxNumKeysPerMessage: kpr.config.MaxNumKeysPerMessage, + }, + kpr.decryptionTriggerChannel, + keyper.WithDBPool(kpr.dbpool), + keyper.NoBroadcastEonPublicKey(), + keyper.WithEonPublicKeyHandler(kpr.channelNewEonPublicKey), + ) +} + +func (k *Keyper) processInputs(ctx context.Context) error { + var err error + for { + select { + case ev := <-k.newKeyperSets: + err = k.processNewKeyperSet(ctx, ev) + case ev := <-k.newEonPublicKeys: + err = k.processNewEonPublicKey(ctx, ev) + case <-ctx.Done(): + return ctx.Err() + } + if err != nil { + // TODO: Check if it's safe to drop those events. If not, we should store the + // ones that remain on the channel in the db and process them when we restart. + // TODO: also, should we stop the keyper or just log the error and continue? + // return err + log.Error().Err(err).Msg("error processing event") + } + } +} + +func (k *Keyper) channelNewEonPublicKey(_ context.Context, key keyper.EonPublicKey) error { + k.newEonPublicKeys <- key + return nil +} + +func (k *Keyper) channelNewKeyperSet(_ context.Context, ev *syncevent.KeyperSet) error { + k.newKeyperSets <- ev + return nil +} diff --git a/rolling-shutter/keyperimpl/primev/neweonpublickey.go b/rolling-shutter/keyperimpl/primev/neweonpublickey.go new file mode 100644 index 000000000..4dc145e9c --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/neweonpublickey.go @@ -0,0 +1,12 @@ +package primev + +import ( + "context" + + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper" +) + +func (k *Keyper) processNewEonPublicKey(_ context.Context, key keyper.EonPublicKey) error { //nolint: unparam + k.eonKeyPublisher.Publish(key) + return nil +} diff --git a/rolling-shutter/keyperimpl/primev/newkeyperset.go b/rolling-shutter/keyperimpl/primev/newkeyperset.go new file mode 100644 index 000000000..d3c510697 --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/newkeyperset.go @@ -0,0 +1,56 @@ +package primev + +import ( + "context" + + "github.com/jackc/pgx/v4" + "github.com/pkg/errors" + "github.com/rs/zerolog/log" + + obskeyper "github.com/shutter-network/rolling-shutter/rolling-shutter/chainobserver/db/keyper" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley" + syncevent "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync/event" + "github.com/shutter-network/rolling-shutter/rolling-shutter/shdb" +) + +func (k *Keyper) processNewKeyperSet(ctx context.Context, ev *syncevent.KeyperSet) error { + isMember := false + for _, m := range ev.Members { + if m.Cmp(k.config.GetAddress()) == 0 { + isMember = true + break + } + } + + log.Info(). + Uint64("activation-block", ev.ActivationBlock). + Uint64("eon", ev.Eon). + Int("num-members", len(ev.Members)). + Uint64("threshold", ev.Threshold). + Bool("is-member", isMember). + Msg("new keyper set added") + + return k.dbpool.BeginFunc(ctx, func(tx pgx.Tx) error { + obskeyperdb := obskeyper.New(tx) + + keyperConfigIndex, err := medley.Uint64ToInt64Safe(ev.Eon) + if err != nil { + return errors.Wrap(err, ErrParseKeyperSet.Error()) + } + activationBlockNumber, err := medley.Uint64ToInt64Safe(ev.ActivationBlock) + if err != nil { + return errors.Wrap(err, ErrParseKeyperSet.Error()) + } + threshold, err := medley.Uint64ToInt64Safe(ev.Threshold) + if err != nil { + return errors.Wrap(err, ErrParseKeyperSet.Error()) + } + + return obskeyperdb.InsertKeyperSet(ctx, obskeyper.InsertKeyperSetParams{ + KeyperConfigIndex: keyperConfigIndex, + ActivationBlockNumber: activationBlockNumber, + Keypers: shdb.EncodeAddresses(ev.Members), + Threshold: int32(threshold), + }) + }) +} diff --git a/rolling-shutter/p2pmsg/gossip.pb.go b/rolling-shutter/p2pmsg/gossip.pb.go index 42b788457..d7fa7ab9e 100644 --- a/rolling-shutter/p2pmsg/gossip.pb.go +++ b/rolling-shutter/p2pmsg/gossip.pb.go @@ -7,12 +7,13 @@ package p2pmsg import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - anypb "google.golang.org/protobuf/types/known/anypb" reflect "reflect" sync "sync" unsafe "unsafe" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" ) const ( @@ -965,6 +966,154 @@ func (x *Envelope) GetTrace() *TraceContext { return nil } +type Commitment struct { + state protoimpl.MessageState `protogen:"open.v1"` + InstanceId uint64 `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + TxHashes []string `protobuf:"bytes,2,rep,name=tx_hashes,json=txHashes,proto3" json:"tx_hashes,omitempty"` + BidAmount string `protobuf:"bytes,3,opt,name=bid_amount,json=bidAmount,proto3" json:"bid_amount,omitempty"` + BlockNumber int64 `protobuf:"varint,4,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` + ReceivedBidDigest string `protobuf:"bytes,5,opt,name=received_bid_digest,json=receivedBidDigest,proto3" json:"received_bid_digest,omitempty"` + ReceivedBidSignature string `protobuf:"bytes,6,opt,name=received_bid_signature,json=receivedBidSignature,proto3" json:"received_bid_signature,omitempty"` + CommitmentDigest string `protobuf:"bytes,7,opt,name=commitment_digest,json=commitmentDigest,proto3" json:"commitment_digest,omitempty"` + CommitmentSignature string `protobuf:"bytes,8,opt,name=commitment_signature,json=commitmentSignature,proto3" json:"commitment_signature,omitempty"` + ProviderAddress string `protobuf:"bytes,9,opt,name=provider_address,json=providerAddress,proto3" json:"provider_address,omitempty"` + DecayStartTimestamp int64 `protobuf:"varint,10,opt,name=decay_start_timestamp,json=decayStartTimestamp,proto3" json:"decay_start_timestamp,omitempty"` + DecayEndTimestamp int64 `protobuf:"varint,11,opt,name=decay_end_timestamp,json=decayEndTimestamp,proto3" json:"decay_end_timestamp,omitempty"` + DispatchTimestamp int64 `protobuf:"varint,12,opt,name=dispatch_timestamp,json=dispatchTimestamp,proto3" json:"dispatch_timestamp,omitempty"` + RevertingTxHashes []string `protobuf:"bytes,13,rep,name=reverting_tx_hashes,json=revertingTxHashes,proto3" json:"reverting_tx_hashes,omitempty"` + SlashAmount string `protobuf:"bytes,14,opt,name=slash_amount,json=slashAmount,proto3" json:"slash_amount,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Commitment) Reset() { + *x = Commitment{} + mi := &file_gossip_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Commitment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Commitment) ProtoMessage() {} + +func (x *Commitment) ProtoReflect() protoreflect.Message { + mi := &file_gossip_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Commitment.ProtoReflect.Descriptor instead. +func (*Commitment) Descriptor() ([]byte, []int) { + return file_gossip_proto_rawDescGZIP(), []int{14} +} + +func (x *Commitment) GetInstanceId() uint64 { + if x != nil { + return x.InstanceId + } + return 0 +} + +func (x *Commitment) GetTxHashes() []string { + if x != nil { + return x.TxHashes + } + return nil +} + +func (x *Commitment) GetBidAmount() string { + if x != nil { + return x.BidAmount + } + return "" +} + +func (x *Commitment) GetBlockNumber() int64 { + if x != nil { + return x.BlockNumber + } + return 0 +} + +func (x *Commitment) GetReceivedBidDigest() string { + if x != nil { + return x.ReceivedBidDigest + } + return "" +} + +func (x *Commitment) GetReceivedBidSignature() string { + if x != nil { + return x.ReceivedBidSignature + } + return "" +} + +func (x *Commitment) GetCommitmentDigest() string { + if x != nil { + return x.CommitmentDigest + } + return "" +} + +func (x *Commitment) GetCommitmentSignature() string { + if x != nil { + return x.CommitmentSignature + } + return "" +} + +func (x *Commitment) GetProviderAddress() string { + if x != nil { + return x.ProviderAddress + } + return "" +} + +func (x *Commitment) GetDecayStartTimestamp() int64 { + if x != nil { + return x.DecayStartTimestamp + } + return 0 +} + +func (x *Commitment) GetDecayEndTimestamp() int64 { + if x != nil { + return x.DecayEndTimestamp + } + return 0 +} + +func (x *Commitment) GetDispatchTimestamp() int64 { + if x != nil { + return x.DispatchTimestamp + } + return 0 +} + +func (x *Commitment) GetRevertingTxHashes() []string { + if x != nil { + return x.RevertingTxHashes + } + return nil +} + +func (x *Commitment) GetSlashAmount() string { + if x != nil { + return x.SlashAmount + } + return "" +} + var File_gossip_proto protoreflect.FileDescriptor var file_gossip_proto_rawDesc = string([]byte{ @@ -1099,8 +1248,47 @@ var file_gossip_proto_rawDesc = string([]byte{ 0x12, 0x2f, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x32, 0x70, 0x6d, 0x73, 0x67, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x42, 0x0b, 0x5a, 0x09, 0x2e, - 0x2f, 0x3b, 0x70, 0x32, 0x70, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x22, 0xe3, 0x04, 0x0a, 0x0a, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x69, 0x64, 0x5f, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x69, + 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x42, 0x69, 0x64, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x42, 0x69, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, + 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x64, + 0x65, 0x63, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x64, 0x65, 0x63, 0x61, + 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x2e, 0x0a, 0x13, 0x64, 0x65, 0x63, 0x61, 0x79, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x64, 0x65, + 0x63, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x2d, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x64, 0x69, 0x73, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2e, + 0x0a, 0x13, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x78, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x3b, 0x70, 0x32, 0x70, 0x6d, 0x73, 0x67, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1115,7 +1303,7 @@ func file_gossip_proto_rawDescGZIP() []byte { return file_gossip_proto_rawDescData } -var file_gossip_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_gossip_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_gossip_proto_goTypes = []any{ (*DecryptionTrigger)(nil), // 0: p2pmsg.DecryptionTrigger (*KeyShare)(nil), // 1: p2pmsg.KeyShare @@ -1131,7 +1319,8 @@ var file_gossip_proto_goTypes = []any{ (*EonPublicKey)(nil), // 11: p2pmsg.EonPublicKey (*TraceContext)(nil), // 12: p2pmsg.TraceContext (*Envelope)(nil), // 13: p2pmsg.Envelope - (*anypb.Any)(nil), // 14: google.protobuf.Any + (*Commitment)(nil), // 14: p2pmsg.Commitment + (*anypb.Any)(nil), // 15: google.protobuf.Any } var file_gossip_proto_depIdxs = []int32{ 1, // 0: p2pmsg.DecryptionKeyShares.shares:type_name -> p2pmsg.KeyShare @@ -1142,7 +1331,7 @@ var file_gossip_proto_depIdxs = []int32{ 7, // 5: p2pmsg.DecryptionKeys.gnosis:type_name -> p2pmsg.GnosisDecryptionKeysExtra 8, // 6: p2pmsg.DecryptionKeys.optimism:type_name -> p2pmsg.OptimismDecryptionKeysExtra 9, // 7: p2pmsg.DecryptionKeys.service:type_name -> p2pmsg.ShutterServiceDecryptionKeysExtra - 14, // 8: p2pmsg.Envelope.message:type_name -> google.protobuf.Any + 15, // 8: p2pmsg.Envelope.message:type_name -> google.protobuf.Any 12, // 9: p2pmsg.Envelope.trace:type_name -> p2pmsg.TraceContext 10, // [10:10] is the sub-list for method output_type 10, // [10:10] is the sub-list for method input_type @@ -1173,7 +1362,7 @@ func file_gossip_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_gossip_proto_rawDesc), len(file_gossip_proto_rawDesc)), NumEnums: 0, - NumMessages: 14, + NumMessages: 15, NumExtensions: 0, NumServices: 0, }, diff --git a/rolling-shutter/p2pmsg/gossip.proto b/rolling-shutter/p2pmsg/gossip.proto index 6253c27bc..0aacfc803 100644 --- a/rolling-shutter/p2pmsg/gossip.proto +++ b/rolling-shutter/p2pmsg/gossip.proto @@ -98,3 +98,20 @@ message Envelope { google.protobuf.Any message = 2; optional TraceContext trace = 3; } + +message Commitment { + uint64 instance_id = 1; + repeated string tx_hashes = 2; + string bid_amount = 3; + int64 block_number = 4; + string received_bid_digest = 5; + string received_bid_signature = 6; + string commitment_digest = 7; + string commitment_signature = 8; + string provider_address = 9; + int64 decay_start_timestamp = 10; + int64 decay_end_timestamp = 11; + int64 dispatch_timestamp = 12; + repeated string reverting_tx_hashes = 13; + string slash_amount = 14; +}; \ No newline at end of file diff --git a/rolling-shutter/p2pmsg/primevcommitment.go b/rolling-shutter/p2pmsg/primevcommitment.go new file mode 100644 index 000000000..2e462c1d3 --- /dev/null +++ b/rolling-shutter/p2pmsg/primevcommitment.go @@ -0,0 +1,19 @@ +package p2pmsg + +import ( + "fmt" + + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprtopics" +) + +func (c *Commitment) LogInfo() string { + return fmt.Sprintf("Commitment{commitment_digest=%s}", c.CommitmentDigest) +} + +func (c *Commitment) Topic() string { + return kprtopics.PrimevCommitment +} + +func (c *Commitment) Validate() error { + return nil +} From 09418702ed92e4641d8b19533995ebbee1959c66 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Fri, 25 Jul 2025 17:23:47 +0530 Subject: [PATCH 02/28] feat: add basic database queries and schema --- .../keyperimpl/primev/database/db.sqlc.gen.go | 32 ++++++ .../primev/database/models.sqlc.gen.go | 20 ++++ .../primev/database/primev.sqlc.gen.go | 100 ++++++++++++++++++ .../primev/database/sql/queries/primev.sql | 37 +++++++ .../primev/database/sql/schema/primev.sql | 0 .../primev/database/sql/schemas/primev.sql | 20 ++++ rolling-shutter/keyperimpl/primev/handler.go | 31 +++++- 7 files changed, 238 insertions(+), 2 deletions(-) create mode 100644 rolling-shutter/keyperimpl/primev/database/db.sqlc.gen.go create mode 100644 rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go create mode 100644 rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go delete mode 100644 rolling-shutter/keyperimpl/primev/database/sql/schema/primev.sql create mode 100644 rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql diff --git a/rolling-shutter/keyperimpl/primev/database/db.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/db.sqlc.gen.go new file mode 100644 index 000000000..4aa2bf022 --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/database/db.sqlc.gen.go @@ -0,0 +1,32 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.28.0 + +package database + +import ( + "context" + + "github.com/jackc/pgconn" + "github.com/jackc/pgx/v4" +) + +type DBTX interface { + Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error) + Query(context.Context, string, ...interface{}) (pgx.Rows, error) + QueryRow(context.Context, string, ...interface{}) pgx.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx pgx.Tx) *Queries { + return &Queries{ + db: tx, + } +} diff --git a/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go new file mode 100644 index 000000000..c6e59fb8e --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go @@ -0,0 +1,20 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.28.0 + +package database + +type Commitment struct { + TxHashes []string + ProviderAddress string + CommitmentSignature string + CommitmentDigest string + BlockNumber int64 +} + +type CommittedTransaction struct { + Eon int64 + IdentityPreimage string + BlockNumber int64 + TxHash string +} diff --git a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go new file mode 100644 index 000000000..95c5f2c53 --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go @@ -0,0 +1,100 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.28.0 +// source: primev.sql + +package database + +import ( + "context" +) + +const getCommitmentByTxHash = `-- name: GetCommitmentByTxHash :many +SELECT + c.tx_hashes, + c.provider_address, + c.commitment_signature, + c.commitment_digest, + c.block_number +FROM commitment c +WHERE c.tx_hashes = $1 +` + +func (q *Queries) GetCommitmentByTxHash(ctx context.Context, txHashes []string) ([]Commitment, error) { + rows, err := q.db.Query(ctx, getCommitmentByTxHash, txHashes) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Commitment + for rows.Next() { + var i Commitment + if err := rows.Scan( + &i.TxHashes, + &i.ProviderAddress, + &i.CommitmentSignature, + &i.CommitmentDigest, + &i.BlockNumber, + ); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + +const insertMultipleTransactionsAndUpsertCommitment = `-- name: InsertMultipleTransactionsAndUpsertCommitment :exec +WITH inserted_transactions AS ( + INSERT INTO committed_transactions (eon, identity_preimage, block_number, tx_hash) + SELECT + unnest($1::bigint[]) as eon, + unnest($2::text[]) as identity_preimage, + unnest($3::bigint[]) as block_number, + unnest($4::text[]) as tx_hash + ON CONFLICT (eon, identity_preimage, tx_hash) DO NOTHING + RETURNING tx_hash +), +upserted_commitment AS ( + INSERT INTO commitment (tx_hashes, provider_address, commitment_signature, commitment_digest, block_number) + SELECT + ARRAY_AGG(tx_hash), + $5, + $6, + $7, + $8 + FROM inserted_transactions + ON CONFLICT (provider_address, commitment_digest, block_number) + DO UPDATE SET + tx_hashes = commitment.tx_hashes || EXCLUDED.tx_hashes + RETURNING tx_hashes, provider_address +) +SELECT tx_hashes, provider_address FROM upserted_commitment +` + +type InsertMultipleTransactionsAndUpsertCommitmentParams struct { + Column1 []int64 + Column2 []string + Column3 []int64 + Column4 []string + ProviderAddress string + CommitmentSignature string + CommitmentDigest string + BlockNumber int64 +} + +func (q *Queries) InsertMultipleTransactionsAndUpsertCommitment(ctx context.Context, arg InsertMultipleTransactionsAndUpsertCommitmentParams) error { + _, err := q.db.Exec(ctx, insertMultipleTransactionsAndUpsertCommitment, + arg.Column1, + arg.Column2, + arg.Column3, + arg.Column4, + arg.ProviderAddress, + arg.CommitmentSignature, + arg.CommitmentDigest, + arg.BlockNumber, + ) + return err +} diff --git a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql index e69de29bb..a7355aebc 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql @@ -0,0 +1,37 @@ +-- name: GetCommitmentByTxHash :many +SELECT + c.tx_hashes, + c.provider_address, + c.commitment_signature, + c.commitment_digest, + c.block_number +FROM commitment c +WHERE c.tx_hashes = $1; + +-- name: InsertMultipleTransactionsAndUpsertCommitment :exec +WITH inserted_transactions AS ( + INSERT INTO committed_transactions (eon, identity_preimage, block_number, tx_hash) + SELECT + unnest($1::bigint[]) as eon, + unnest($2::text[]) as identity_preimage, + unnest($3::bigint[]) as block_number, + unnest($4::text[]) as tx_hash + ON CONFLICT (eon, identity_preimage, tx_hash) DO NOTHING + RETURNING tx_hash +), +upserted_commitment AS ( + INSERT INTO commitment (tx_hashes, provider_address, commitment_signature, commitment_digest, block_number) + SELECT + ARRAY_AGG(tx_hash), + $5, + $6, + $7, + $8 + FROM inserted_transactions + ON CONFLICT (provider_address, commitment_digest, block_number) + DO UPDATE SET + tx_hashes = commitment.tx_hashes || EXCLUDED.tx_hashes + RETURNING tx_hashes, provider_address +) +SELECT tx_hashes, provider_address FROM upserted_commitment; + diff --git a/rolling-shutter/keyperimpl/primev/database/sql/schema/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/schema/primev.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql new file mode 100644 index 000000000..484d345d7 --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql @@ -0,0 +1,20 @@ +-- schema-version: primev-1 -- +-- Please change the version above if you make incompatible changes to +-- the schema. We'll use this to check we're using the right schema. + +CREATE TABLE commitment( + tx_hashes text[] NOT NULL, + provider_address text NOT NULL, + commitment_signature text NOT NULL, + commitment_digest text NOT NULL, + block_number bigint NOT NULL CHECK (block_number >= 0), + PRIMARY KEY (provider_address, commitment_digest, block_number) +); + +CREATE TABLE committed_transactions( + eon bigint NOT NULL CHECK (eon >= 0), + identity_preimage text NOT NULL, + block_number bigint NOT NULL CHECK (block_number >= 0), + tx_hash text NOT NULL, + PRIMARY KEY (eon, identity_preimage, tx_hash) +); \ No newline at end of file diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index 976bf46fb..e00f71bee 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -3,9 +3,12 @@ package primev import ( "context" + "github.com/jackc/pgx/v4/pgxpool" pubsub "github.com/libp2p/go-libp2p-pubsub" "github.com/pkg/errors" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/database" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/broker" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/identitypreimage" "github.com/shutter-network/rolling-shutter/rolling-shutter/p2pmsg" @@ -14,6 +17,7 @@ import ( type PrimevCommitmentHandler struct { config *Config decryptionTriggerChannel chan *broker.Event[*epochkghandler.DecryptionTrigger] + dbpool *pgxpool.Pool } func (h *PrimevCommitmentHandler) MessagePrototypes() []p2pmsg.Message { @@ -26,13 +30,13 @@ func (h *PrimevCommitmentHandler) ValidateMessage(ctx context.Context, msg p2pms return pubsub.ValidationReject, errors.Errorf("instance ID mismatch (want=%d, have=%d)", h.config.InstanceID, commitment.GetInstanceId()) } return pubsub.ValidationAccept, nil - //TODO: more validations need to be done here + // TODO: more validations need to be done here } func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg.Message) ([]p2pmsg.Message, error) { commitment := msg.(*p2pmsg.Commitment) - //TODO: need to validate on identity preimage + // TODO: need to validate on identity preimage identityPreimages := make([]identitypreimage.IdentityPreimage, 0, len(commitment.TxHashes)) for _, txHash := range commitment.TxHashes { identityPreimage, err := identitypreimage.HexToIdentityPreimage(txHash) @@ -41,11 +45,34 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. } identityPreimages = append(identityPreimages, identityPreimage) } + decryptionTrigger := &epochkghandler.DecryptionTrigger{ BlockNumber: uint64(commitment.BlockNumber), IdentityPreimages: identityPreimages, } + blockNumbers := make([]int64, 0, len(commitment.TxHashes)) + eons := make([]int64, 0, len(commitment.TxHashes)) + for range commitment.TxHashes { + blockNumbers = append(blockNumbers, int64(commitment.BlockNumber)) + eons = append(eons, int64(1)) // TODO: need to get eon from the commitment + } + + db := database.New(h.dbpool) + err := db.InsertMultipleTransactionsAndUpsertCommitment(ctx, database.InsertMultipleTransactionsAndUpsertCommitmentParams{ + Column1: eons, + Column2: commitment.TxHashes, // right now identityPreimage is txHash + Column3: blockNumbers, + Column4: commitment.TxHashes, + ProviderAddress: commitment.ProviderAddress, + CommitmentSignature: commitment.CommitmentSignature, + CommitmentDigest: commitment.CommitmentDigest, + BlockNumber: int64(commitment.BlockNumber), + }) + if err != nil { + return nil, err + } + h.decryptionTriggerChannel <- broker.NewEvent(decryptionTrigger) return nil, nil From 42865d9ac30d4f339f38b949d42dac43f6d00668 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Tue, 29 Jul 2025 14:22:42 +0530 Subject: [PATCH 03/28] feat: add provider registry event syncer --- .../primev/abi/ProviderRegistry.abi | 1466 ++++++ .../keyperimpl/primev/abi/ProviderRegistry.go | 4544 +++++++++++++++++ rolling-shutter/keyperimpl/primev/config.go | 11 +- .../primev/database/models.sqlc.gen.go | 15 + .../primev/database/primev.sqlc.gen.go | 69 + .../primev/database/sql/queries/primev.sql | 20 + .../primev/database/sql/schemas/primev.sql | 16 + rolling-shutter/keyperimpl/primev/keyper.go | 65 +- rolling-shutter/keyperimpl/primev/newblock.go | 12 + .../primev/providerregistrysyncer.go | 275 + 10 files changed, 6484 insertions(+), 9 deletions(-) create mode 100644 rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.abi create mode 100644 rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.go create mode 100644 rolling-shutter/keyperimpl/primev/newblock.go create mode 100644 rolling-shutter/keyperimpl/primev/providerregistrysyncer.go diff --git a/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.abi b/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.abi new file mode 100644 index 000000000..9c2f20d4f --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.abi @@ -0,0 +1,1466 @@ +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "fallback", + "stateMutability": "payable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "ONE_HUNDRED_PERCENT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "PRECISION", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "UPGRADE_INTERFACE_VERSION", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "acceptOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addVerifiedBLSKey", + "inputs": [ + { + "name": "blsPublicKey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "bidderSlashedAmount", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blockBuilderBLSKeyToAddress", + "inputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegateRegisterAndStake", + "inputs": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "delegateStake", + "inputs": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "eoaToBlsPubkeys", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "feePercent", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getAccumulatedPenaltyFee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getBLSKeys", + "inputs": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getEoaFromBLSKey", + "inputs": [ + { + "name": "blsKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getProviderStake", + "inputs": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_minStake", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_penaltyFeeRecipient", + "type": "address", + "internalType": "address" + }, + { + "name": "_feePercent", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_withdrawalDelay", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_penaltyFeePayoutPeriod", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isProviderValid", + "inputs": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "view" + }, + { + "type": "function", + "name": "manuallyWithdrawPenaltyFee", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "minStake", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "overrideAddBLSKey", + "inputs": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "blsPublicKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "penaltyFeeTracker", + "inputs": [], + "outputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "accumulatedAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "lastPayoutTimestamp", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "payoutTimePeriod", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pendingOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "preconfManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "providerRegistered", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "providerStakes", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerAndStake", + "inputs": [], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setFeePayoutPeriod", + "inputs": [ + { + "name": "_feePayoutPeriod", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setMinStake", + "inputs": [ + { + "name": "_minStake", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setNewFeePercent", + "inputs": [ + { + "name": "newFeePercent", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setNewPenaltyFeeRecipient", + "inputs": [ + { + "name": "newFeeRecipient", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPreconfManager", + "inputs": [ + { + "name": "contractAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setWithdrawalDelay", + "inputs": [ + { + "name": "_withdrawalDelay", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slash", + "inputs": [ + { + "name": "amt", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "slashAmt", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "bidder", + "type": "address", + "internalType": "address payable" + }, + { + "name": "residualBidPercentAfterDecay", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stake", + "inputs": [], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unstake", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "verifySignature", + "inputs": [ + { + "name": "pubKey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawSlashedAmount", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawalDelay", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdrawalRequests", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "BLSKeyAdded", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "blsPublicKey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BidderWithdrawSlashedAmount", + "inputs": [ + { + "name": "bidder", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "FeePayoutPeriodUpdated", + "inputs": [ + { + "name": "newFeePayoutPeriod", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "FeePercentUpdated", + "inputs": [ + { + "name": "newFeePercent", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "FeeTransfer", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "FundsDeposited", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "FundsSlashed", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "InsufficientFundsToSlash", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "providerStake", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "residualAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "penaltyFee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "slashAmt", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MinStakeUpdated", + "inputs": [ + { + "name": "newMinStake", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferStarted", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PenaltyFeeRecipientUpdated", + "inputs": [ + { + "name": "newPenaltyFeeRecipient", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PreconfManagerUpdated", + "inputs": [ + { + "name": "newPreconfManager", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProviderRegistered", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "stakedAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TransferToBidderFailed", + "inputs": [ + { + "name": "bidder", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unstake", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "timestamp", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Withdraw", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalDelayUpdated", + "inputs": [ + { + "name": "newWithdrawalDelay", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AddressEmptyCode", + "inputs": [ + { + "name": "target", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "AtLeastOneBLSKeyRequired", + "inputs": [] + }, + { + "type": "error", + "name": "BLSSignatureInvalid", + "inputs": [] + }, + { + "type": "error", + "name": "BidderAmountIsZero", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "BidderWithdrawalTransferFailed", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "DelayNotPassed", + "inputs": [ + { + "name": "withdrawalRequestTimestamp", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "withdrawalDelay", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "currentBlockTimestamp", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ERC1967InvalidImplementation", + "inputs": [ + { + "name": "implementation", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC1967NonPayable", + "inputs": [] + }, + { + "type": "error", + "name": "EnforcedPause", + "inputs": [] + }, + { + "type": "error", + "name": "ExpectedPause", + "inputs": [] + }, + { + "type": "error", + "name": "FailedInnerCall", + "inputs": [] + }, + { + "type": "error", + "name": "FeeRecipientIsZero", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientStake", + "inputs": [ + { + "name": "stake", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "minStake", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InvalidBLSPublicKeyLength", + "inputs": [ + { + "name": "length", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "expectedLength", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InvalidFallback", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidReceive", + "inputs": [] + }, + { + "type": "error", + "name": "NoStakeToWithdraw", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "NoUnstakeRequest", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, + { + "type": "error", + "name": "NotPreconfContract", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "preconfManager", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableInvalidOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "PayoutPeriodMustBePositive", + "inputs": [] + }, + { + "type": "error", + "name": "PendingWithdrawalRequest", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "PreconfManagerNotSet", + "inputs": [] + }, + { + "type": "error", + "name": "ProviderAlreadyRegistered", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ProviderCommitmentsPending", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "numPending", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ProviderNotRegistered", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "PublicKeyLengthInvalid", + "inputs": [ + { + "name": "exp", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "got", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ReentrancyGuardReentrantCall", + "inputs": [] + }, + { + "type": "error", + "name": "SignatureLengthInvalid", + "inputs": [ + { + "name": "exp", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "got", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "StakeTransferFailed", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "TransferToRecipientFailed", + "inputs": [] + }, + { + "type": "error", + "name": "UUPSUnauthorizedCallContext", + "inputs": [] + }, + { + "type": "error", + "name": "UUPSUnsupportedProxiableUUID", + "inputs": [ + { + "name": "slot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "UnstakeRequestExists", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + } +] \ No newline at end of file diff --git a/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.go b/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.go new file mode 100644 index 000000000..ecb411c55 --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.go @@ -0,0 +1,4544 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package providerregistry + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ProviderregistryMetaData contains all meta data concerning the Providerregistry contract. +var ProviderregistryMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"ONE_HUNDRED_PERCENT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PRECISION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addVerifiedBLSKey\",\"inputs\":[{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"bidderSlashedAmount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blockBuilderBLSKeyToAddress\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegateRegisterAndStake\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"delegateStake\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"eoaToBlsPubkeys\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"feePercent\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAccumulatedPenaltyFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBLSKeys\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEoaFromBLSKey\",\"inputs\":[{\"name\":\"blsKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getProviderStake\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_minStake\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_penaltyFeeRecipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_feePercent\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_withdrawalDelay\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_penaltyFeePayoutPeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isProviderValid\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"manuallyWithdrawPenaltyFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minStake\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"overrideAddBLSKey\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"penaltyFeeTracker\",\"inputs\":[],\"outputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"accumulatedAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"lastPayoutTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"payoutTimePeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preconfManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"providerRegistered\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"providerStakes\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerAndStake\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setFeePayoutPeriod\",\"inputs\":[{\"name\":\"_feePayoutPeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinStake\",\"inputs\":[{\"name\":\"_minStake\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setNewFeePercent\",\"inputs\":[{\"name\":\"newFeePercent\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setNewPenaltyFeeRecipient\",\"inputs\":[{\"name\":\"newFeeRecipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPreconfManager\",\"inputs\":[{\"name\":\"contractAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWithdrawalDelay\",\"inputs\":[{\"name\":\"_withdrawalDelay\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slash\",\"inputs\":[{\"name\":\"amt\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"slashAmt\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidder\",\"type\":\"address\",\"internalType\":\"addresspayable\"},{\"name\":\"residualBidPercentAfterDecay\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unstake\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifySignature\",\"inputs\":[{\"name\":\"pubKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSlashedAmount\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawalDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawalRequests\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"BLSKeyAdded\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BidderWithdrawSlashedAmount\",\"inputs\":[{\"name\":\"bidder\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeePayoutPeriodUpdated\",\"inputs\":[{\"name\":\"newFeePayoutPeriod\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeePercentUpdated\",\"inputs\":[{\"name\":\"newFeePercent\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeeTransfer\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FundsDeposited\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FundsSlashed\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InsufficientFundsToSlash\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"providerStake\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"residualAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"penaltyFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"slashAmt\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinStakeUpdated\",\"inputs\":[{\"name\":\"newMinStake\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PenaltyFeeRecipientUpdated\",\"inputs\":[{\"name\":\"newPenaltyFeeRecipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PreconfManagerUpdated\",\"inputs\":[{\"name\":\"newPreconfManager\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProviderRegistered\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"stakedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransferToBidderFailed\",\"inputs\":[{\"name\":\"bidder\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unstake\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalDelayUpdated\",\"inputs\":[{\"name\":\"newWithdrawalDelay\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AtLeastOneBLSKeyRequired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BLSSignatureInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BidderAmountIsZero\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"BidderWithdrawalTransferFailed\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"DelayNotPassed\",\"inputs\":[{\"name\":\"withdrawalRequestTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"withdrawalDelay\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"currentBlockTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FeeRecipientIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientStake\",\"inputs\":[{\"name\":\"stake\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minStake\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expectedLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidFallback\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidReceive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoStakeToWithdraw\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"NoUnstakeRequest\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotPreconfContract\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"preconfManager\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PayoutPeriodMustBePositive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PendingWithdrawalRequest\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PreconfManagerNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ProviderAlreadyRegistered\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ProviderCommitmentsPending\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"numPending\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ProviderNotRegistered\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PublicKeyLengthInvalid\",\"inputs\":[{\"name\":\"exp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"got\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureLengthInvalid\",\"inputs\":[{\"name\":\"exp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"got\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"StakeTransferFailed\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"TransferToRecipientFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"UnstakeRequestExists\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]}]", +} + +// ProviderregistryABI is the input ABI used to generate the binding from. +// Deprecated: Use ProviderregistryMetaData.ABI instead. +var ProviderregistryABI = ProviderregistryMetaData.ABI + +// Providerregistry is an auto generated Go binding around an Ethereum contract. +type Providerregistry struct { + ProviderregistryCaller // Read-only binding to the contract + ProviderregistryTransactor // Write-only binding to the contract + ProviderregistryFilterer // Log filterer for contract events +} + +// ProviderregistryCaller is an auto generated read-only Go binding around an Ethereum contract. +type ProviderregistryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProviderregistryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ProviderregistryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProviderregistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ProviderregistryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProviderregistrySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ProviderregistrySession struct { + Contract *Providerregistry // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProviderregistryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ProviderregistryCallerSession struct { + Contract *ProviderregistryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ProviderregistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ProviderregistryTransactorSession struct { + Contract *ProviderregistryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProviderregistryRaw is an auto generated low-level Go binding around an Ethereum contract. +type ProviderregistryRaw struct { + Contract *Providerregistry // Generic contract binding to access the raw methods on +} + +// ProviderregistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ProviderregistryCallerRaw struct { + Contract *ProviderregistryCaller // Generic read-only contract binding to access the raw methods on +} + +// ProviderregistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ProviderregistryTransactorRaw struct { + Contract *ProviderregistryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewProviderregistry creates a new instance of Providerregistry, bound to a specific deployed contract. +func NewProviderregistry(address common.Address, backend bind.ContractBackend) (*Providerregistry, error) { + contract, err := bindProviderregistry(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Providerregistry{ProviderregistryCaller: ProviderregistryCaller{contract: contract}, ProviderregistryTransactor: ProviderregistryTransactor{contract: contract}, ProviderregistryFilterer: ProviderregistryFilterer{contract: contract}}, nil +} + +// NewProviderregistryCaller creates a new read-only instance of Providerregistry, bound to a specific deployed contract. +func NewProviderregistryCaller(address common.Address, caller bind.ContractCaller) (*ProviderregistryCaller, error) { + contract, err := bindProviderregistry(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ProviderregistryCaller{contract: contract}, nil +} + +// NewProviderregistryTransactor creates a new write-only instance of Providerregistry, bound to a specific deployed contract. +func NewProviderregistryTransactor(address common.Address, transactor bind.ContractTransactor) (*ProviderregistryTransactor, error) { + contract, err := bindProviderregistry(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ProviderregistryTransactor{contract: contract}, nil +} + +// NewProviderregistryFilterer creates a new log filterer instance of Providerregistry, bound to a specific deployed contract. +func NewProviderregistryFilterer(address common.Address, filterer bind.ContractFilterer) (*ProviderregistryFilterer, error) { + contract, err := bindProviderregistry(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ProviderregistryFilterer{contract: contract}, nil +} + +// bindProviderregistry binds a generic wrapper to an already deployed contract. +func bindProviderregistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ProviderregistryMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Providerregistry *ProviderregistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Providerregistry.Contract.ProviderregistryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Providerregistry *ProviderregistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.Contract.ProviderregistryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Providerregistry *ProviderregistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Providerregistry.Contract.ProviderregistryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Providerregistry *ProviderregistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Providerregistry.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Providerregistry *ProviderregistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Providerregistry *ProviderregistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Providerregistry.Contract.contract.Transact(opts, method, params...) +} + +// ONEHUNDREDPERCENT is a free data retrieval call binding the contract method 0xdd0081c7. +// +// Solidity: function ONE_HUNDRED_PERCENT() view returns(uint256) +func (_Providerregistry *ProviderregistryCaller) ONEHUNDREDPERCENT(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "ONE_HUNDRED_PERCENT") + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err +} + +// ONEHUNDREDPERCENT is a free data retrieval call binding the contract method 0xdd0081c7. +// +// Solidity: function ONE_HUNDRED_PERCENT() view returns(uint256) +func (_Providerregistry *ProviderregistrySession) ONEHUNDREDPERCENT() (*big.Int, error) { + return _Providerregistry.Contract.ONEHUNDREDPERCENT(&_Providerregistry.CallOpts) +} + +// ONEHUNDREDPERCENT is a free data retrieval call binding the contract method 0xdd0081c7. +// +// Solidity: function ONE_HUNDRED_PERCENT() view returns(uint256) +func (_Providerregistry *ProviderregistryCallerSession) ONEHUNDREDPERCENT() (*big.Int, error) { + return _Providerregistry.Contract.ONEHUNDREDPERCENT(&_Providerregistry.CallOpts) +} + +// PRECISION is a free data retrieval call binding the contract method 0xaaf5eb68. +// +// Solidity: function PRECISION() view returns(uint256) +func (_Providerregistry *ProviderregistryCaller) PRECISION(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "PRECISION") + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err +} + +// PRECISION is a free data retrieval call binding the contract method 0xaaf5eb68. +// +// Solidity: function PRECISION() view returns(uint256) +func (_Providerregistry *ProviderregistrySession) PRECISION() (*big.Int, error) { + return _Providerregistry.Contract.PRECISION(&_Providerregistry.CallOpts) +} + +// PRECISION is a free data retrieval call binding the contract method 0xaaf5eb68. +// +// Solidity: function PRECISION() view returns(uint256) +func (_Providerregistry *ProviderregistryCallerSession) PRECISION() (*big.Int, error) { + return _Providerregistry.Contract.PRECISION(&_Providerregistry.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_Providerregistry *ProviderregistryCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_Providerregistry *ProviderregistrySession) UPGRADEINTERFACEVERSION() (string, error) { + return _Providerregistry.Contract.UPGRADEINTERFACEVERSION(&_Providerregistry.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_Providerregistry *ProviderregistryCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _Providerregistry.Contract.UPGRADEINTERFACEVERSION(&_Providerregistry.CallOpts) +} + +// BidderSlashedAmount is a free data retrieval call binding the contract method 0x3ab6fc1a. +// +// Solidity: function bidderSlashedAmount(address ) view returns(uint256) +func (_Providerregistry *ProviderregistryCaller) BidderSlashedAmount(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "bidderSlashedAmount", arg0) + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err +} + +// BidderSlashedAmount is a free data retrieval call binding the contract method 0x3ab6fc1a. +// +// Solidity: function bidderSlashedAmount(address ) view returns(uint256) +func (_Providerregistry *ProviderregistrySession) BidderSlashedAmount(arg0 common.Address) (*big.Int, error) { + return _Providerregistry.Contract.BidderSlashedAmount(&_Providerregistry.CallOpts, arg0) +} + +// BidderSlashedAmount is a free data retrieval call binding the contract method 0x3ab6fc1a. +// +// Solidity: function bidderSlashedAmount(address ) view returns(uint256) +func (_Providerregistry *ProviderregistryCallerSession) BidderSlashedAmount(arg0 common.Address) (*big.Int, error) { + return _Providerregistry.Contract.BidderSlashedAmount(&_Providerregistry.CallOpts, arg0) +} + +// BlockBuilderBLSKeyToAddress is a free data retrieval call binding the contract method 0x929b63c4. +// +// Solidity: function blockBuilderBLSKeyToAddress(bytes ) view returns(address) +func (_Providerregistry *ProviderregistryCaller) BlockBuilderBLSKeyToAddress(opts *bind.CallOpts, arg0 []byte) (common.Address, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "blockBuilderBLSKeyToAddress", arg0) + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err +} + +// BlockBuilderBLSKeyToAddress is a free data retrieval call binding the contract method 0x929b63c4. +// +// Solidity: function blockBuilderBLSKeyToAddress(bytes ) view returns(address) +func (_Providerregistry *ProviderregistrySession) BlockBuilderBLSKeyToAddress(arg0 []byte) (common.Address, error) { + return _Providerregistry.Contract.BlockBuilderBLSKeyToAddress(&_Providerregistry.CallOpts, arg0) +} + +// BlockBuilderBLSKeyToAddress is a free data retrieval call binding the contract method 0x929b63c4. +// +// Solidity: function blockBuilderBLSKeyToAddress(bytes ) view returns(address) +func (_Providerregistry *ProviderregistryCallerSession) BlockBuilderBLSKeyToAddress(arg0 []byte) (common.Address, error) { + return _Providerregistry.Contract.BlockBuilderBLSKeyToAddress(&_Providerregistry.CallOpts, arg0) +} + +// EoaToBlsPubkeys is a free data retrieval call binding the contract method 0x1129ce1f. +// +// Solidity: function eoaToBlsPubkeys(address , uint256 ) view returns(bytes) +func (_Providerregistry *ProviderregistryCaller) EoaToBlsPubkeys(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) ([]byte, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "eoaToBlsPubkeys", arg0, arg1) + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err +} + +// EoaToBlsPubkeys is a free data retrieval call binding the contract method 0x1129ce1f. +// +// Solidity: function eoaToBlsPubkeys(address , uint256 ) view returns(bytes) +func (_Providerregistry *ProviderregistrySession) EoaToBlsPubkeys(arg0 common.Address, arg1 *big.Int) ([]byte, error) { + return _Providerregistry.Contract.EoaToBlsPubkeys(&_Providerregistry.CallOpts, arg0, arg1) +} + +// EoaToBlsPubkeys is a free data retrieval call binding the contract method 0x1129ce1f. +// +// Solidity: function eoaToBlsPubkeys(address , uint256 ) view returns(bytes) +func (_Providerregistry *ProviderregistryCallerSession) EoaToBlsPubkeys(arg0 common.Address, arg1 *big.Int) ([]byte, error) { + return _Providerregistry.Contract.EoaToBlsPubkeys(&_Providerregistry.CallOpts, arg0, arg1) +} + +// FeePercent is a free data retrieval call binding the contract method 0x7fd6f15c. +// +// Solidity: function feePercent() view returns(uint256) +func (_Providerregistry *ProviderregistryCaller) FeePercent(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "feePercent") + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err +} + +// FeePercent is a free data retrieval call binding the contract method 0x7fd6f15c. +// +// Solidity: function feePercent() view returns(uint256) +func (_Providerregistry *ProviderregistrySession) FeePercent() (*big.Int, error) { + return _Providerregistry.Contract.FeePercent(&_Providerregistry.CallOpts) +} + +// FeePercent is a free data retrieval call binding the contract method 0x7fd6f15c. +// +// Solidity: function feePercent() view returns(uint256) +func (_Providerregistry *ProviderregistryCallerSession) FeePercent() (*big.Int, error) { + return _Providerregistry.Contract.FeePercent(&_Providerregistry.CallOpts) +} + +// GetAccumulatedPenaltyFee is a free data retrieval call binding the contract method 0xe4506e7c. +// +// Solidity: function getAccumulatedPenaltyFee() view returns(uint256) +func (_Providerregistry *ProviderregistryCaller) GetAccumulatedPenaltyFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "getAccumulatedPenaltyFee") + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err +} + +// GetAccumulatedPenaltyFee is a free data retrieval call binding the contract method 0xe4506e7c. +// +// Solidity: function getAccumulatedPenaltyFee() view returns(uint256) +func (_Providerregistry *ProviderregistrySession) GetAccumulatedPenaltyFee() (*big.Int, error) { + return _Providerregistry.Contract.GetAccumulatedPenaltyFee(&_Providerregistry.CallOpts) +} + +// GetAccumulatedPenaltyFee is a free data retrieval call binding the contract method 0xe4506e7c. +// +// Solidity: function getAccumulatedPenaltyFee() view returns(uint256) +func (_Providerregistry *ProviderregistryCallerSession) GetAccumulatedPenaltyFee() (*big.Int, error) { + return _Providerregistry.Contract.GetAccumulatedPenaltyFee(&_Providerregistry.CallOpts) +} + +// GetBLSKeys is a free data retrieval call binding the contract method 0xc50b59df. +// +// Solidity: function getBLSKeys(address provider) view returns(bytes[]) +func (_Providerregistry *ProviderregistryCaller) GetBLSKeys(opts *bind.CallOpts, provider common.Address) ([][]byte, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "getBLSKeys", provider) + if err != nil { + return *new([][]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][]byte)).(*[][]byte) + + return out0, err +} + +// GetBLSKeys is a free data retrieval call binding the contract method 0xc50b59df. +// +// Solidity: function getBLSKeys(address provider) view returns(bytes[]) +func (_Providerregistry *ProviderregistrySession) GetBLSKeys(provider common.Address) ([][]byte, error) { + return _Providerregistry.Contract.GetBLSKeys(&_Providerregistry.CallOpts, provider) +} + +// GetBLSKeys is a free data retrieval call binding the contract method 0xc50b59df. +// +// Solidity: function getBLSKeys(address provider) view returns(bytes[]) +func (_Providerregistry *ProviderregistryCallerSession) GetBLSKeys(provider common.Address) ([][]byte, error) { + return _Providerregistry.Contract.GetBLSKeys(&_Providerregistry.CallOpts, provider) +} + +// GetEoaFromBLSKey is a free data retrieval call binding the contract method 0xea3b275d. +// +// Solidity: function getEoaFromBLSKey(bytes blsKey) view returns(address) +func (_Providerregistry *ProviderregistryCaller) GetEoaFromBLSKey(opts *bind.CallOpts, blsKey []byte) (common.Address, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "getEoaFromBLSKey", blsKey) + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err +} + +// GetEoaFromBLSKey is a free data retrieval call binding the contract method 0xea3b275d. +// +// Solidity: function getEoaFromBLSKey(bytes blsKey) view returns(address) +func (_Providerregistry *ProviderregistrySession) GetEoaFromBLSKey(blsKey []byte) (common.Address, error) { + return _Providerregistry.Contract.GetEoaFromBLSKey(&_Providerregistry.CallOpts, blsKey) +} + +// GetEoaFromBLSKey is a free data retrieval call binding the contract method 0xea3b275d. +// +// Solidity: function getEoaFromBLSKey(bytes blsKey) view returns(address) +func (_Providerregistry *ProviderregistryCallerSession) GetEoaFromBLSKey(blsKey []byte) (common.Address, error) { + return _Providerregistry.Contract.GetEoaFromBLSKey(&_Providerregistry.CallOpts, blsKey) +} + +// GetProviderStake is a free data retrieval call binding the contract method 0xbfebc370. +// +// Solidity: function getProviderStake(address provider) view returns(uint256) +func (_Providerregistry *ProviderregistryCaller) GetProviderStake(opts *bind.CallOpts, provider common.Address) (*big.Int, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "getProviderStake", provider) + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err +} + +// GetProviderStake is a free data retrieval call binding the contract method 0xbfebc370. +// +// Solidity: function getProviderStake(address provider) view returns(uint256) +func (_Providerregistry *ProviderregistrySession) GetProviderStake(provider common.Address) (*big.Int, error) { + return _Providerregistry.Contract.GetProviderStake(&_Providerregistry.CallOpts, provider) +} + +// GetProviderStake is a free data retrieval call binding the contract method 0xbfebc370. +// +// Solidity: function getProviderStake(address provider) view returns(uint256) +func (_Providerregistry *ProviderregistryCallerSession) GetProviderStake(provider common.Address) (*big.Int, error) { + return _Providerregistry.Contract.GetProviderStake(&_Providerregistry.CallOpts, provider) +} + +// IsProviderValid is a free data retrieval call binding the contract method 0xb066d50d. +// +// Solidity: function isProviderValid(address provider) view returns() +func (_Providerregistry *ProviderregistryCaller) IsProviderValid(opts *bind.CallOpts, provider common.Address) error { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "isProviderValid", provider) + if err != nil { + return err + } + + return err +} + +// IsProviderValid is a free data retrieval call binding the contract method 0xb066d50d. +// +// Solidity: function isProviderValid(address provider) view returns() +func (_Providerregistry *ProviderregistrySession) IsProviderValid(provider common.Address) error { + return _Providerregistry.Contract.IsProviderValid(&_Providerregistry.CallOpts, provider) +} + +// IsProviderValid is a free data retrieval call binding the contract method 0xb066d50d. +// +// Solidity: function isProviderValid(address provider) view returns() +func (_Providerregistry *ProviderregistryCallerSession) IsProviderValid(provider common.Address) error { + return _Providerregistry.Contract.IsProviderValid(&_Providerregistry.CallOpts, provider) +} + +// MinStake is a free data retrieval call binding the contract method 0x375b3c0a. +// +// Solidity: function minStake() view returns(uint256) +func (_Providerregistry *ProviderregistryCaller) MinStake(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "minStake") + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err +} + +// MinStake is a free data retrieval call binding the contract method 0x375b3c0a. +// +// Solidity: function minStake() view returns(uint256) +func (_Providerregistry *ProviderregistrySession) MinStake() (*big.Int, error) { + return _Providerregistry.Contract.MinStake(&_Providerregistry.CallOpts) +} + +// MinStake is a free data retrieval call binding the contract method 0x375b3c0a. +// +// Solidity: function minStake() view returns(uint256) +func (_Providerregistry *ProviderregistryCallerSession) MinStake() (*big.Int, error) { + return _Providerregistry.Contract.MinStake(&_Providerregistry.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Providerregistry *ProviderregistryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "owner") + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Providerregistry *ProviderregistrySession) Owner() (common.Address, error) { + return _Providerregistry.Contract.Owner(&_Providerregistry.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Providerregistry *ProviderregistryCallerSession) Owner() (common.Address, error) { + return _Providerregistry.Contract.Owner(&_Providerregistry.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Providerregistry *ProviderregistryCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "paused") + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Providerregistry *ProviderregistrySession) Paused() (bool, error) { + return _Providerregistry.Contract.Paused(&_Providerregistry.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Providerregistry *ProviderregistryCallerSession) Paused() (bool, error) { + return _Providerregistry.Contract.Paused(&_Providerregistry.CallOpts) +} + +// PenaltyFeeTracker is a free data retrieval call binding the contract method 0xf1aab9ee. +// +// Solidity: function penaltyFeeTracker() view returns(address recipient, uint256 accumulatedAmount, uint256 lastPayoutTimestamp, uint256 payoutTimePeriod) +func (_Providerregistry *ProviderregistryCaller) PenaltyFeeTracker(opts *bind.CallOpts) (struct { + Recipient common.Address + AccumulatedAmount *big.Int + LastPayoutTimestamp *big.Int + PayoutTimePeriod *big.Int +}, error, +) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "penaltyFeeTracker") + + outstruct := new(struct { + Recipient common.Address + AccumulatedAmount *big.Int + LastPayoutTimestamp *big.Int + PayoutTimePeriod *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Recipient = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.AccumulatedAmount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.LastPayoutTimestamp = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.PayoutTimePeriod = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + + return *outstruct, err +} + +// PenaltyFeeTracker is a free data retrieval call binding the contract method 0xf1aab9ee. +// +// Solidity: function penaltyFeeTracker() view returns(address recipient, uint256 accumulatedAmount, uint256 lastPayoutTimestamp, uint256 payoutTimePeriod) +func (_Providerregistry *ProviderregistrySession) PenaltyFeeTracker() (struct { + Recipient common.Address + AccumulatedAmount *big.Int + LastPayoutTimestamp *big.Int + PayoutTimePeriod *big.Int +}, error, +) { + return _Providerregistry.Contract.PenaltyFeeTracker(&_Providerregistry.CallOpts) +} + +// PenaltyFeeTracker is a free data retrieval call binding the contract method 0xf1aab9ee. +// +// Solidity: function penaltyFeeTracker() view returns(address recipient, uint256 accumulatedAmount, uint256 lastPayoutTimestamp, uint256 payoutTimePeriod) +func (_Providerregistry *ProviderregistryCallerSession) PenaltyFeeTracker() (struct { + Recipient common.Address + AccumulatedAmount *big.Int + LastPayoutTimestamp *big.Int + PayoutTimePeriod *big.Int +}, error, +) { + return _Providerregistry.Contract.PenaltyFeeTracker(&_Providerregistry.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Providerregistry *ProviderregistryCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "pendingOwner") + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Providerregistry *ProviderregistrySession) PendingOwner() (common.Address, error) { + return _Providerregistry.Contract.PendingOwner(&_Providerregistry.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Providerregistry *ProviderregistryCallerSession) PendingOwner() (common.Address, error) { + return _Providerregistry.Contract.PendingOwner(&_Providerregistry.CallOpts) +} + +// PreconfManager is a free data retrieval call binding the contract method 0x94a87500. +// +// Solidity: function preconfManager() view returns(address) +func (_Providerregistry *ProviderregistryCaller) PreconfManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "preconfManager") + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err +} + +// PreconfManager is a free data retrieval call binding the contract method 0x94a87500. +// +// Solidity: function preconfManager() view returns(address) +func (_Providerregistry *ProviderregistrySession) PreconfManager() (common.Address, error) { + return _Providerregistry.Contract.PreconfManager(&_Providerregistry.CallOpts) +} + +// PreconfManager is a free data retrieval call binding the contract method 0x94a87500. +// +// Solidity: function preconfManager() view returns(address) +func (_Providerregistry *ProviderregistryCallerSession) PreconfManager() (common.Address, error) { + return _Providerregistry.Contract.PreconfManager(&_Providerregistry.CallOpts) +} + +// ProviderRegistered is a free data retrieval call binding the contract method 0xab255b41. +// +// Solidity: function providerRegistered(address ) view returns(bool) +func (_Providerregistry *ProviderregistryCaller) ProviderRegistered(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "providerRegistered", arg0) + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err +} + +// ProviderRegistered is a free data retrieval call binding the contract method 0xab255b41. +// +// Solidity: function providerRegistered(address ) view returns(bool) +func (_Providerregistry *ProviderregistrySession) ProviderRegistered(arg0 common.Address) (bool, error) { + return _Providerregistry.Contract.ProviderRegistered(&_Providerregistry.CallOpts, arg0) +} + +// ProviderRegistered is a free data retrieval call binding the contract method 0xab255b41. +// +// Solidity: function providerRegistered(address ) view returns(bool) +func (_Providerregistry *ProviderregistryCallerSession) ProviderRegistered(arg0 common.Address) (bool, error) { + return _Providerregistry.Contract.ProviderRegistered(&_Providerregistry.CallOpts, arg0) +} + +// ProviderStakes is a free data retrieval call binding the contract method 0x0d6b4c9f. +// +// Solidity: function providerStakes(address ) view returns(uint256) +func (_Providerregistry *ProviderregistryCaller) ProviderStakes(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "providerStakes", arg0) + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err +} + +// ProviderStakes is a free data retrieval call binding the contract method 0x0d6b4c9f. +// +// Solidity: function providerStakes(address ) view returns(uint256) +func (_Providerregistry *ProviderregistrySession) ProviderStakes(arg0 common.Address) (*big.Int, error) { + return _Providerregistry.Contract.ProviderStakes(&_Providerregistry.CallOpts, arg0) +} + +// ProviderStakes is a free data retrieval call binding the contract method 0x0d6b4c9f. +// +// Solidity: function providerStakes(address ) view returns(uint256) +func (_Providerregistry *ProviderregistryCallerSession) ProviderStakes(arg0 common.Address) (*big.Int, error) { + return _Providerregistry.Contract.ProviderStakes(&_Providerregistry.CallOpts, arg0) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_Providerregistry *ProviderregistryCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "proxiableUUID") + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_Providerregistry *ProviderregistrySession) ProxiableUUID() ([32]byte, error) { + return _Providerregistry.Contract.ProxiableUUID(&_Providerregistry.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_Providerregistry *ProviderregistryCallerSession) ProxiableUUID() ([32]byte, error) { + return _Providerregistry.Contract.ProxiableUUID(&_Providerregistry.CallOpts) +} + +// VerifySignature is a free data retrieval call binding the contract method 0x2222e36f. +// +// Solidity: function verifySignature(bytes pubKey, bytes32 message, bytes signature) view returns(bool) +func (_Providerregistry *ProviderregistryCaller) VerifySignature(opts *bind.CallOpts, pubKey []byte, message [32]byte, signature []byte) (bool, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "verifySignature", pubKey, message, signature) + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err +} + +// VerifySignature is a free data retrieval call binding the contract method 0x2222e36f. +// +// Solidity: function verifySignature(bytes pubKey, bytes32 message, bytes signature) view returns(bool) +func (_Providerregistry *ProviderregistrySession) VerifySignature(pubKey []byte, message [32]byte, signature []byte) (bool, error) { + return _Providerregistry.Contract.VerifySignature(&_Providerregistry.CallOpts, pubKey, message, signature) +} + +// VerifySignature is a free data retrieval call binding the contract method 0x2222e36f. +// +// Solidity: function verifySignature(bytes pubKey, bytes32 message, bytes signature) view returns(bool) +func (_Providerregistry *ProviderregistryCallerSession) VerifySignature(pubKey []byte, message [32]byte, signature []byte) (bool, error) { + return _Providerregistry.Contract.VerifySignature(&_Providerregistry.CallOpts, pubKey, message, signature) +} + +// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961. +// +// Solidity: function withdrawalDelay() view returns(uint256) +func (_Providerregistry *ProviderregistryCaller) WithdrawalDelay(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "withdrawalDelay") + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err +} + +// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961. +// +// Solidity: function withdrawalDelay() view returns(uint256) +func (_Providerregistry *ProviderregistrySession) WithdrawalDelay() (*big.Int, error) { + return _Providerregistry.Contract.WithdrawalDelay(&_Providerregistry.CallOpts) +} + +// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961. +// +// Solidity: function withdrawalDelay() view returns(uint256) +func (_Providerregistry *ProviderregistryCallerSession) WithdrawalDelay() (*big.Int, error) { + return _Providerregistry.Contract.WithdrawalDelay(&_Providerregistry.CallOpts) +} + +// WithdrawalRequests is a free data retrieval call binding the contract method 0x27b380f3. +// +// Solidity: function withdrawalRequests(address ) view returns(uint256) +func (_Providerregistry *ProviderregistryCaller) WithdrawalRequests(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _Providerregistry.contract.Call(opts, &out, "withdrawalRequests", arg0) + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err +} + +// WithdrawalRequests is a free data retrieval call binding the contract method 0x27b380f3. +// +// Solidity: function withdrawalRequests(address ) view returns(uint256) +func (_Providerregistry *ProviderregistrySession) WithdrawalRequests(arg0 common.Address) (*big.Int, error) { + return _Providerregistry.Contract.WithdrawalRequests(&_Providerregistry.CallOpts, arg0) +} + +// WithdrawalRequests is a free data retrieval call binding the contract method 0x27b380f3. +// +// Solidity: function withdrawalRequests(address ) view returns(uint256) +func (_Providerregistry *ProviderregistryCallerSession) WithdrawalRequests(arg0 common.Address) (*big.Int, error) { + return _Providerregistry.Contract.WithdrawalRequests(&_Providerregistry.CallOpts, arg0) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Providerregistry *ProviderregistryTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Providerregistry *ProviderregistrySession) AcceptOwnership() (*types.Transaction, error) { + return _Providerregistry.Contract.AcceptOwnership(&_Providerregistry.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Providerregistry *ProviderregistryTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _Providerregistry.Contract.AcceptOwnership(&_Providerregistry.TransactOpts) +} + +// AddVerifiedBLSKey is a paid mutator transaction binding the contract method 0x7fd358e4. +// +// Solidity: function addVerifiedBLSKey(bytes blsPublicKey, bytes signature) returns() +func (_Providerregistry *ProviderregistryTransactor) AddVerifiedBLSKey(opts *bind.TransactOpts, blsPublicKey []byte, signature []byte) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "addVerifiedBLSKey", blsPublicKey, signature) +} + +// AddVerifiedBLSKey is a paid mutator transaction binding the contract method 0x7fd358e4. +// +// Solidity: function addVerifiedBLSKey(bytes blsPublicKey, bytes signature) returns() +func (_Providerregistry *ProviderregistrySession) AddVerifiedBLSKey(blsPublicKey []byte, signature []byte) (*types.Transaction, error) { + return _Providerregistry.Contract.AddVerifiedBLSKey(&_Providerregistry.TransactOpts, blsPublicKey, signature) +} + +// AddVerifiedBLSKey is a paid mutator transaction binding the contract method 0x7fd358e4. +// +// Solidity: function addVerifiedBLSKey(bytes blsPublicKey, bytes signature) returns() +func (_Providerregistry *ProviderregistryTransactorSession) AddVerifiedBLSKey(blsPublicKey []byte, signature []byte) (*types.Transaction, error) { + return _Providerregistry.Contract.AddVerifiedBLSKey(&_Providerregistry.TransactOpts, blsPublicKey, signature) +} + +// DelegateRegisterAndStake is a paid mutator transaction binding the contract method 0x3d75c0ba. +// +// Solidity: function delegateRegisterAndStake(address provider) payable returns() +func (_Providerregistry *ProviderregistryTransactor) DelegateRegisterAndStake(opts *bind.TransactOpts, provider common.Address) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "delegateRegisterAndStake", provider) +} + +// DelegateRegisterAndStake is a paid mutator transaction binding the contract method 0x3d75c0ba. +// +// Solidity: function delegateRegisterAndStake(address provider) payable returns() +func (_Providerregistry *ProviderregistrySession) DelegateRegisterAndStake(provider common.Address) (*types.Transaction, error) { + return _Providerregistry.Contract.DelegateRegisterAndStake(&_Providerregistry.TransactOpts, provider) +} + +// DelegateRegisterAndStake is a paid mutator transaction binding the contract method 0x3d75c0ba. +// +// Solidity: function delegateRegisterAndStake(address provider) payable returns() +func (_Providerregistry *ProviderregistryTransactorSession) DelegateRegisterAndStake(provider common.Address) (*types.Transaction, error) { + return _Providerregistry.Contract.DelegateRegisterAndStake(&_Providerregistry.TransactOpts, provider) +} + +// DelegateStake is a paid mutator transaction binding the contract method 0xf094cc39. +// +// Solidity: function delegateStake(address provider) payable returns() +func (_Providerregistry *ProviderregistryTransactor) DelegateStake(opts *bind.TransactOpts, provider common.Address) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "delegateStake", provider) +} + +// DelegateStake is a paid mutator transaction binding the contract method 0xf094cc39. +// +// Solidity: function delegateStake(address provider) payable returns() +func (_Providerregistry *ProviderregistrySession) DelegateStake(provider common.Address) (*types.Transaction, error) { + return _Providerregistry.Contract.DelegateStake(&_Providerregistry.TransactOpts, provider) +} + +// DelegateStake is a paid mutator transaction binding the contract method 0xf094cc39. +// +// Solidity: function delegateStake(address provider) payable returns() +func (_Providerregistry *ProviderregistryTransactorSession) DelegateStake(provider common.Address) (*types.Transaction, error) { + return _Providerregistry.Contract.DelegateStake(&_Providerregistry.TransactOpts, provider) +} + +// Initialize is a paid mutator transaction binding the contract method 0xecfa5f52. +// +// Solidity: function initialize(uint256 _minStake, address _penaltyFeeRecipient, uint256 _feePercent, address _owner, uint256 _withdrawalDelay, uint256 _penaltyFeePayoutPeriod) returns() +func (_Providerregistry *ProviderregistryTransactor) Initialize(opts *bind.TransactOpts, _minStake *big.Int, _penaltyFeeRecipient common.Address, _feePercent *big.Int, _owner common.Address, _withdrawalDelay *big.Int, _penaltyFeePayoutPeriod *big.Int) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "initialize", _minStake, _penaltyFeeRecipient, _feePercent, _owner, _withdrawalDelay, _penaltyFeePayoutPeriod) +} + +// Initialize is a paid mutator transaction binding the contract method 0xecfa5f52. +// +// Solidity: function initialize(uint256 _minStake, address _penaltyFeeRecipient, uint256 _feePercent, address _owner, uint256 _withdrawalDelay, uint256 _penaltyFeePayoutPeriod) returns() +func (_Providerregistry *ProviderregistrySession) Initialize(_minStake *big.Int, _penaltyFeeRecipient common.Address, _feePercent *big.Int, _owner common.Address, _withdrawalDelay *big.Int, _penaltyFeePayoutPeriod *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.Initialize(&_Providerregistry.TransactOpts, _minStake, _penaltyFeeRecipient, _feePercent, _owner, _withdrawalDelay, _penaltyFeePayoutPeriod) +} + +// Initialize is a paid mutator transaction binding the contract method 0xecfa5f52. +// +// Solidity: function initialize(uint256 _minStake, address _penaltyFeeRecipient, uint256 _feePercent, address _owner, uint256 _withdrawalDelay, uint256 _penaltyFeePayoutPeriod) returns() +func (_Providerregistry *ProviderregistryTransactorSession) Initialize(_minStake *big.Int, _penaltyFeeRecipient common.Address, _feePercent *big.Int, _owner common.Address, _withdrawalDelay *big.Int, _penaltyFeePayoutPeriod *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.Initialize(&_Providerregistry.TransactOpts, _minStake, _penaltyFeeRecipient, _feePercent, _owner, _withdrawalDelay, _penaltyFeePayoutPeriod) +} + +// ManuallyWithdrawPenaltyFee is a paid mutator transaction binding the contract method 0x7df61dc1. +// +// Solidity: function manuallyWithdrawPenaltyFee() returns() +func (_Providerregistry *ProviderregistryTransactor) ManuallyWithdrawPenaltyFee(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "manuallyWithdrawPenaltyFee") +} + +// ManuallyWithdrawPenaltyFee is a paid mutator transaction binding the contract method 0x7df61dc1. +// +// Solidity: function manuallyWithdrawPenaltyFee() returns() +func (_Providerregistry *ProviderregistrySession) ManuallyWithdrawPenaltyFee() (*types.Transaction, error) { + return _Providerregistry.Contract.ManuallyWithdrawPenaltyFee(&_Providerregistry.TransactOpts) +} + +// ManuallyWithdrawPenaltyFee is a paid mutator transaction binding the contract method 0x7df61dc1. +// +// Solidity: function manuallyWithdrawPenaltyFee() returns() +func (_Providerregistry *ProviderregistryTransactorSession) ManuallyWithdrawPenaltyFee() (*types.Transaction, error) { + return _Providerregistry.Contract.ManuallyWithdrawPenaltyFee(&_Providerregistry.TransactOpts) +} + +// OverrideAddBLSKey is a paid mutator transaction binding the contract method 0xed5219de. +// +// Solidity: function overrideAddBLSKey(address provider, bytes blsPublicKey) returns() +func (_Providerregistry *ProviderregistryTransactor) OverrideAddBLSKey(opts *bind.TransactOpts, provider common.Address, blsPublicKey []byte) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "overrideAddBLSKey", provider, blsPublicKey) +} + +// OverrideAddBLSKey is a paid mutator transaction binding the contract method 0xed5219de. +// +// Solidity: function overrideAddBLSKey(address provider, bytes blsPublicKey) returns() +func (_Providerregistry *ProviderregistrySession) OverrideAddBLSKey(provider common.Address, blsPublicKey []byte) (*types.Transaction, error) { + return _Providerregistry.Contract.OverrideAddBLSKey(&_Providerregistry.TransactOpts, provider, blsPublicKey) +} + +// OverrideAddBLSKey is a paid mutator transaction binding the contract method 0xed5219de. +// +// Solidity: function overrideAddBLSKey(address provider, bytes blsPublicKey) returns() +func (_Providerregistry *ProviderregistryTransactorSession) OverrideAddBLSKey(provider common.Address, blsPublicKey []byte) (*types.Transaction, error) { + return _Providerregistry.Contract.OverrideAddBLSKey(&_Providerregistry.TransactOpts, provider, blsPublicKey) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Providerregistry *ProviderregistryTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Providerregistry *ProviderregistrySession) Pause() (*types.Transaction, error) { + return _Providerregistry.Contract.Pause(&_Providerregistry.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Providerregistry *ProviderregistryTransactorSession) Pause() (*types.Transaction, error) { + return _Providerregistry.Contract.Pause(&_Providerregistry.TransactOpts) +} + +// RegisterAndStake is a paid mutator transaction binding the contract method 0x84d180ee. +// +// Solidity: function registerAndStake() payable returns() +func (_Providerregistry *ProviderregistryTransactor) RegisterAndStake(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "registerAndStake") +} + +// RegisterAndStake is a paid mutator transaction binding the contract method 0x84d180ee. +// +// Solidity: function registerAndStake() payable returns() +func (_Providerregistry *ProviderregistrySession) RegisterAndStake() (*types.Transaction, error) { + return _Providerregistry.Contract.RegisterAndStake(&_Providerregistry.TransactOpts) +} + +// RegisterAndStake is a paid mutator transaction binding the contract method 0x84d180ee. +// +// Solidity: function registerAndStake() payable returns() +func (_Providerregistry *ProviderregistryTransactorSession) RegisterAndStake() (*types.Transaction, error) { + return _Providerregistry.Contract.RegisterAndStake(&_Providerregistry.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Providerregistry *ProviderregistryTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Providerregistry *ProviderregistrySession) RenounceOwnership() (*types.Transaction, error) { + return _Providerregistry.Contract.RenounceOwnership(&_Providerregistry.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Providerregistry *ProviderregistryTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Providerregistry.Contract.RenounceOwnership(&_Providerregistry.TransactOpts) +} + +// SetFeePayoutPeriod is a paid mutator transaction binding the contract method 0xcc5ad073. +// +// Solidity: function setFeePayoutPeriod(uint256 _feePayoutPeriod) returns() +func (_Providerregistry *ProviderregistryTransactor) SetFeePayoutPeriod(opts *bind.TransactOpts, _feePayoutPeriod *big.Int) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "setFeePayoutPeriod", _feePayoutPeriod) +} + +// SetFeePayoutPeriod is a paid mutator transaction binding the contract method 0xcc5ad073. +// +// Solidity: function setFeePayoutPeriod(uint256 _feePayoutPeriod) returns() +func (_Providerregistry *ProviderregistrySession) SetFeePayoutPeriod(_feePayoutPeriod *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.SetFeePayoutPeriod(&_Providerregistry.TransactOpts, _feePayoutPeriod) +} + +// SetFeePayoutPeriod is a paid mutator transaction binding the contract method 0xcc5ad073. +// +// Solidity: function setFeePayoutPeriod(uint256 _feePayoutPeriod) returns() +func (_Providerregistry *ProviderregistryTransactorSession) SetFeePayoutPeriod(_feePayoutPeriod *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.SetFeePayoutPeriod(&_Providerregistry.TransactOpts, _feePayoutPeriod) +} + +// SetMinStake is a paid mutator transaction binding the contract method 0x8c80fd90. +// +// Solidity: function setMinStake(uint256 _minStake) returns() +func (_Providerregistry *ProviderregistryTransactor) SetMinStake(opts *bind.TransactOpts, _minStake *big.Int) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "setMinStake", _minStake) +} + +// SetMinStake is a paid mutator transaction binding the contract method 0x8c80fd90. +// +// Solidity: function setMinStake(uint256 _minStake) returns() +func (_Providerregistry *ProviderregistrySession) SetMinStake(_minStake *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.SetMinStake(&_Providerregistry.TransactOpts, _minStake) +} + +// SetMinStake is a paid mutator transaction binding the contract method 0x8c80fd90. +// +// Solidity: function setMinStake(uint256 _minStake) returns() +func (_Providerregistry *ProviderregistryTransactorSession) SetMinStake(_minStake *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.SetMinStake(&_Providerregistry.TransactOpts, _minStake) +} + +// SetNewFeePercent is a paid mutator transaction binding the contract method 0x3221f6db. +// +// Solidity: function setNewFeePercent(uint256 newFeePercent) returns() +func (_Providerregistry *ProviderregistryTransactor) SetNewFeePercent(opts *bind.TransactOpts, newFeePercent *big.Int) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "setNewFeePercent", newFeePercent) +} + +// SetNewFeePercent is a paid mutator transaction binding the contract method 0x3221f6db. +// +// Solidity: function setNewFeePercent(uint256 newFeePercent) returns() +func (_Providerregistry *ProviderregistrySession) SetNewFeePercent(newFeePercent *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.SetNewFeePercent(&_Providerregistry.TransactOpts, newFeePercent) +} + +// SetNewFeePercent is a paid mutator transaction binding the contract method 0x3221f6db. +// +// Solidity: function setNewFeePercent(uint256 newFeePercent) returns() +func (_Providerregistry *ProviderregistryTransactorSession) SetNewFeePercent(newFeePercent *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.SetNewFeePercent(&_Providerregistry.TransactOpts, newFeePercent) +} + +// SetNewPenaltyFeeRecipient is a paid mutator transaction binding the contract method 0xc7cc6f80. +// +// Solidity: function setNewPenaltyFeeRecipient(address newFeeRecipient) returns() +func (_Providerregistry *ProviderregistryTransactor) SetNewPenaltyFeeRecipient(opts *bind.TransactOpts, newFeeRecipient common.Address) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "setNewPenaltyFeeRecipient", newFeeRecipient) +} + +// SetNewPenaltyFeeRecipient is a paid mutator transaction binding the contract method 0xc7cc6f80. +// +// Solidity: function setNewPenaltyFeeRecipient(address newFeeRecipient) returns() +func (_Providerregistry *ProviderregistrySession) SetNewPenaltyFeeRecipient(newFeeRecipient common.Address) (*types.Transaction, error) { + return _Providerregistry.Contract.SetNewPenaltyFeeRecipient(&_Providerregistry.TransactOpts, newFeeRecipient) +} + +// SetNewPenaltyFeeRecipient is a paid mutator transaction binding the contract method 0xc7cc6f80. +// +// Solidity: function setNewPenaltyFeeRecipient(address newFeeRecipient) returns() +func (_Providerregistry *ProviderregistryTransactorSession) SetNewPenaltyFeeRecipient(newFeeRecipient common.Address) (*types.Transaction, error) { + return _Providerregistry.Contract.SetNewPenaltyFeeRecipient(&_Providerregistry.TransactOpts, newFeeRecipient) +} + +// SetPreconfManager is a paid mutator transaction binding the contract method 0x3b79297c. +// +// Solidity: function setPreconfManager(address contractAddress) returns() +func (_Providerregistry *ProviderregistryTransactor) SetPreconfManager(opts *bind.TransactOpts, contractAddress common.Address) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "setPreconfManager", contractAddress) +} + +// SetPreconfManager is a paid mutator transaction binding the contract method 0x3b79297c. +// +// Solidity: function setPreconfManager(address contractAddress) returns() +func (_Providerregistry *ProviderregistrySession) SetPreconfManager(contractAddress common.Address) (*types.Transaction, error) { + return _Providerregistry.Contract.SetPreconfManager(&_Providerregistry.TransactOpts, contractAddress) +} + +// SetPreconfManager is a paid mutator transaction binding the contract method 0x3b79297c. +// +// Solidity: function setPreconfManager(address contractAddress) returns() +func (_Providerregistry *ProviderregistryTransactorSession) SetPreconfManager(contractAddress common.Address) (*types.Transaction, error) { + return _Providerregistry.Contract.SetPreconfManager(&_Providerregistry.TransactOpts, contractAddress) +} + +// SetWithdrawalDelay is a paid mutator transaction binding the contract method 0xd2c13da5. +// +// Solidity: function setWithdrawalDelay(uint256 _withdrawalDelay) returns() +func (_Providerregistry *ProviderregistryTransactor) SetWithdrawalDelay(opts *bind.TransactOpts, _withdrawalDelay *big.Int) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "setWithdrawalDelay", _withdrawalDelay) +} + +// SetWithdrawalDelay is a paid mutator transaction binding the contract method 0xd2c13da5. +// +// Solidity: function setWithdrawalDelay(uint256 _withdrawalDelay) returns() +func (_Providerregistry *ProviderregistrySession) SetWithdrawalDelay(_withdrawalDelay *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.SetWithdrawalDelay(&_Providerregistry.TransactOpts, _withdrawalDelay) +} + +// SetWithdrawalDelay is a paid mutator transaction binding the contract method 0xd2c13da5. +// +// Solidity: function setWithdrawalDelay(uint256 _withdrawalDelay) returns() +func (_Providerregistry *ProviderregistryTransactorSession) SetWithdrawalDelay(_withdrawalDelay *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.SetWithdrawalDelay(&_Providerregistry.TransactOpts, _withdrawalDelay) +} + +// Slash is a paid mutator transaction binding the contract method 0x76ddeafc. +// +// Solidity: function slash(uint256 amt, uint256 slashAmt, address provider, address bidder, uint256 residualBidPercentAfterDecay) returns() +func (_Providerregistry *ProviderregistryTransactor) Slash(opts *bind.TransactOpts, amt *big.Int, slashAmt *big.Int, provider common.Address, bidder common.Address, residualBidPercentAfterDecay *big.Int) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "slash", amt, slashAmt, provider, bidder, residualBidPercentAfterDecay) +} + +// Slash is a paid mutator transaction binding the contract method 0x76ddeafc. +// +// Solidity: function slash(uint256 amt, uint256 slashAmt, address provider, address bidder, uint256 residualBidPercentAfterDecay) returns() +func (_Providerregistry *ProviderregistrySession) Slash(amt *big.Int, slashAmt *big.Int, provider common.Address, bidder common.Address, residualBidPercentAfterDecay *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.Slash(&_Providerregistry.TransactOpts, amt, slashAmt, provider, bidder, residualBidPercentAfterDecay) +} + +// Slash is a paid mutator transaction binding the contract method 0x76ddeafc. +// +// Solidity: function slash(uint256 amt, uint256 slashAmt, address provider, address bidder, uint256 residualBidPercentAfterDecay) returns() +func (_Providerregistry *ProviderregistryTransactorSession) Slash(amt *big.Int, slashAmt *big.Int, provider common.Address, bidder common.Address, residualBidPercentAfterDecay *big.Int) (*types.Transaction, error) { + return _Providerregistry.Contract.Slash(&_Providerregistry.TransactOpts, amt, slashAmt, provider, bidder, residualBidPercentAfterDecay) +} + +// Stake is a paid mutator transaction binding the contract method 0x3a4b66f1. +// +// Solidity: function stake() payable returns() +func (_Providerregistry *ProviderregistryTransactor) Stake(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "stake") +} + +// Stake is a paid mutator transaction binding the contract method 0x3a4b66f1. +// +// Solidity: function stake() payable returns() +func (_Providerregistry *ProviderregistrySession) Stake() (*types.Transaction, error) { + return _Providerregistry.Contract.Stake(&_Providerregistry.TransactOpts) +} + +// Stake is a paid mutator transaction binding the contract method 0x3a4b66f1. +// +// Solidity: function stake() payable returns() +func (_Providerregistry *ProviderregistryTransactorSession) Stake() (*types.Transaction, error) { + return _Providerregistry.Contract.Stake(&_Providerregistry.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Providerregistry *ProviderregistryTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Providerregistry *ProviderregistrySession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Providerregistry.Contract.TransferOwnership(&_Providerregistry.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Providerregistry *ProviderregistryTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Providerregistry.Contract.TransferOwnership(&_Providerregistry.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Providerregistry *ProviderregistryTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Providerregistry *ProviderregistrySession) Unpause() (*types.Transaction, error) { + return _Providerregistry.Contract.Unpause(&_Providerregistry.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Providerregistry *ProviderregistryTransactorSession) Unpause() (*types.Transaction, error) { + return _Providerregistry.Contract.Unpause(&_Providerregistry.TransactOpts) +} + +// Unstake is a paid mutator transaction binding the contract method 0x2def6620. +// +// Solidity: function unstake() returns() +func (_Providerregistry *ProviderregistryTransactor) Unstake(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "unstake") +} + +// Unstake is a paid mutator transaction binding the contract method 0x2def6620. +// +// Solidity: function unstake() returns() +func (_Providerregistry *ProviderregistrySession) Unstake() (*types.Transaction, error) { + return _Providerregistry.Contract.Unstake(&_Providerregistry.TransactOpts) +} + +// Unstake is a paid mutator transaction binding the contract method 0x2def6620. +// +// Solidity: function unstake() returns() +func (_Providerregistry *ProviderregistryTransactorSession) Unstake() (*types.Transaction, error) { + return _Providerregistry.Contract.Unstake(&_Providerregistry.TransactOpts) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_Providerregistry *ProviderregistryTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_Providerregistry *ProviderregistrySession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _Providerregistry.Contract.UpgradeToAndCall(&_Providerregistry.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_Providerregistry *ProviderregistryTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _Providerregistry.Contract.UpgradeToAndCall(&_Providerregistry.TransactOpts, newImplementation, data) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x3ccfd60b. +// +// Solidity: function withdraw() returns() +func (_Providerregistry *ProviderregistryTransactor) Withdraw(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "withdraw") +} + +// Withdraw is a paid mutator transaction binding the contract method 0x3ccfd60b. +// +// Solidity: function withdraw() returns() +func (_Providerregistry *ProviderregistrySession) Withdraw() (*types.Transaction, error) { + return _Providerregistry.Contract.Withdraw(&_Providerregistry.TransactOpts) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x3ccfd60b. +// +// Solidity: function withdraw() returns() +func (_Providerregistry *ProviderregistryTransactorSession) Withdraw() (*types.Transaction, error) { + return _Providerregistry.Contract.Withdraw(&_Providerregistry.TransactOpts) +} + +// WithdrawSlashedAmount is a paid mutator transaction binding the contract method 0x70d6092b. +// +// Solidity: function withdrawSlashedAmount() returns() +func (_Providerregistry *ProviderregistryTransactor) WithdrawSlashedAmount(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.Transact(opts, "withdrawSlashedAmount") +} + +// WithdrawSlashedAmount is a paid mutator transaction binding the contract method 0x70d6092b. +// +// Solidity: function withdrawSlashedAmount() returns() +func (_Providerregistry *ProviderregistrySession) WithdrawSlashedAmount() (*types.Transaction, error) { + return _Providerregistry.Contract.WithdrawSlashedAmount(&_Providerregistry.TransactOpts) +} + +// WithdrawSlashedAmount is a paid mutator transaction binding the contract method 0x70d6092b. +// +// Solidity: function withdrawSlashedAmount() returns() +func (_Providerregistry *ProviderregistryTransactorSession) WithdrawSlashedAmount() (*types.Transaction, error) { + return _Providerregistry.Contract.WithdrawSlashedAmount(&_Providerregistry.TransactOpts) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Providerregistry *ProviderregistryTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _Providerregistry.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Providerregistry *ProviderregistrySession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Providerregistry.Contract.Fallback(&_Providerregistry.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Providerregistry *ProviderregistryTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Providerregistry.Contract.Fallback(&_Providerregistry.TransactOpts, calldata) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Providerregistry *ProviderregistryTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Providerregistry.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Providerregistry *ProviderregistrySession) Receive() (*types.Transaction, error) { + return _Providerregistry.Contract.Receive(&_Providerregistry.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Providerregistry *ProviderregistryTransactorSession) Receive() (*types.Transaction, error) { + return _Providerregistry.Contract.Receive(&_Providerregistry.TransactOpts) +} + +// ProviderregistryBLSKeyAddedIterator is returned from FilterBLSKeyAdded and is used to iterate over the raw logs and unpacked data for BLSKeyAdded events raised by the Providerregistry contract. +type ProviderregistryBLSKeyAddedIterator struct { + Event *ProviderregistryBLSKeyAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryBLSKeyAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryBLSKeyAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryBLSKeyAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryBLSKeyAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryBLSKeyAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryBLSKeyAdded represents a BLSKeyAdded event raised by the Providerregistry contract. +type ProviderregistryBLSKeyAdded struct { + Provider common.Address + BlsPublicKey []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBLSKeyAdded is a free log retrieval operation binding the contract event 0xc81315c03024fb67ddfe902ce0153b3d56572c0569de9564fcb90cc174a960bf. +// +// Solidity: event BLSKeyAdded(address indexed provider, bytes blsPublicKey) +func (_Providerregistry *ProviderregistryFilterer) FilterBLSKeyAdded(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryBLSKeyAddedIterator, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "BLSKeyAdded", providerRule) + if err != nil { + return nil, err + } + return &ProviderregistryBLSKeyAddedIterator{contract: _Providerregistry.contract, event: "BLSKeyAdded", logs: logs, sub: sub}, nil +} + +// WatchBLSKeyAdded is a free log subscription operation binding the contract event 0xc81315c03024fb67ddfe902ce0153b3d56572c0569de9564fcb90cc174a960bf. +// +// Solidity: event BLSKeyAdded(address indexed provider, bytes blsPublicKey) +func (_Providerregistry *ProviderregistryFilterer) WatchBLSKeyAdded(opts *bind.WatchOpts, sink chan<- *ProviderregistryBLSKeyAdded, provider []common.Address) (event.Subscription, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "BLSKeyAdded", providerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryBLSKeyAdded) + if err := _Providerregistry.contract.UnpackLog(event, "BLSKeyAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBLSKeyAdded is a log parse operation binding the contract event 0xc81315c03024fb67ddfe902ce0153b3d56572c0569de9564fcb90cc174a960bf. +// +// Solidity: event BLSKeyAdded(address indexed provider, bytes blsPublicKey) +func (_Providerregistry *ProviderregistryFilterer) ParseBLSKeyAdded(log types.Log) (*ProviderregistryBLSKeyAdded, error) { + event := new(ProviderregistryBLSKeyAdded) + if err := _Providerregistry.contract.UnpackLog(event, "BLSKeyAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryBidderWithdrawSlashedAmountIterator is returned from FilterBidderWithdrawSlashedAmount and is used to iterate over the raw logs and unpacked data for BidderWithdrawSlashedAmount events raised by the Providerregistry contract. +type ProviderregistryBidderWithdrawSlashedAmountIterator struct { + Event *ProviderregistryBidderWithdrawSlashedAmount // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryBidderWithdrawSlashedAmountIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryBidderWithdrawSlashedAmount) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryBidderWithdrawSlashedAmount) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryBidderWithdrawSlashedAmountIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryBidderWithdrawSlashedAmountIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryBidderWithdrawSlashedAmount represents a BidderWithdrawSlashedAmount event raised by the Providerregistry contract. +type ProviderregistryBidderWithdrawSlashedAmount struct { + Bidder common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBidderWithdrawSlashedAmount is a free log retrieval operation binding the contract event 0x37f4dc41eefcb0d2f96341475d50bc699b0752135621b1fabba90b41e62fc68d. +// +// Solidity: event BidderWithdrawSlashedAmount(address bidder, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) FilterBidderWithdrawSlashedAmount(opts *bind.FilterOpts) (*ProviderregistryBidderWithdrawSlashedAmountIterator, error) { + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "BidderWithdrawSlashedAmount") + if err != nil { + return nil, err + } + return &ProviderregistryBidderWithdrawSlashedAmountIterator{contract: _Providerregistry.contract, event: "BidderWithdrawSlashedAmount", logs: logs, sub: sub}, nil +} + +// WatchBidderWithdrawSlashedAmount is a free log subscription operation binding the contract event 0x37f4dc41eefcb0d2f96341475d50bc699b0752135621b1fabba90b41e62fc68d. +// +// Solidity: event BidderWithdrawSlashedAmount(address bidder, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) WatchBidderWithdrawSlashedAmount(opts *bind.WatchOpts, sink chan<- *ProviderregistryBidderWithdrawSlashedAmount) (event.Subscription, error) { + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "BidderWithdrawSlashedAmount") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryBidderWithdrawSlashedAmount) + if err := _Providerregistry.contract.UnpackLog(event, "BidderWithdrawSlashedAmount", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBidderWithdrawSlashedAmount is a log parse operation binding the contract event 0x37f4dc41eefcb0d2f96341475d50bc699b0752135621b1fabba90b41e62fc68d. +// +// Solidity: event BidderWithdrawSlashedAmount(address bidder, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) ParseBidderWithdrawSlashedAmount(log types.Log) (*ProviderregistryBidderWithdrawSlashedAmount, error) { + event := new(ProviderregistryBidderWithdrawSlashedAmount) + if err := _Providerregistry.contract.UnpackLog(event, "BidderWithdrawSlashedAmount", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryFeePayoutPeriodUpdatedIterator is returned from FilterFeePayoutPeriodUpdated and is used to iterate over the raw logs and unpacked data for FeePayoutPeriodUpdated events raised by the Providerregistry contract. +type ProviderregistryFeePayoutPeriodUpdatedIterator struct { + Event *ProviderregistryFeePayoutPeriodUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryFeePayoutPeriodUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryFeePayoutPeriodUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryFeePayoutPeriodUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryFeePayoutPeriodUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryFeePayoutPeriodUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryFeePayoutPeriodUpdated represents a FeePayoutPeriodUpdated event raised by the Providerregistry contract. +type ProviderregistryFeePayoutPeriodUpdated struct { + NewFeePayoutPeriod *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFeePayoutPeriodUpdated is a free log retrieval operation binding the contract event 0xefd7aa598240290a91e058be60cb457231c4874ea3d308c1df4c14156d58f9cb. +// +// Solidity: event FeePayoutPeriodUpdated(uint256 indexed newFeePayoutPeriod) +func (_Providerregistry *ProviderregistryFilterer) FilterFeePayoutPeriodUpdated(opts *bind.FilterOpts, newFeePayoutPeriod []*big.Int) (*ProviderregistryFeePayoutPeriodUpdatedIterator, error) { + var newFeePayoutPeriodRule []interface{} + for _, newFeePayoutPeriodItem := range newFeePayoutPeriod { + newFeePayoutPeriodRule = append(newFeePayoutPeriodRule, newFeePayoutPeriodItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "FeePayoutPeriodUpdated", newFeePayoutPeriodRule) + if err != nil { + return nil, err + } + return &ProviderregistryFeePayoutPeriodUpdatedIterator{contract: _Providerregistry.contract, event: "FeePayoutPeriodUpdated", logs: logs, sub: sub}, nil +} + +// WatchFeePayoutPeriodUpdated is a free log subscription operation binding the contract event 0xefd7aa598240290a91e058be60cb457231c4874ea3d308c1df4c14156d58f9cb. +// +// Solidity: event FeePayoutPeriodUpdated(uint256 indexed newFeePayoutPeriod) +func (_Providerregistry *ProviderregistryFilterer) WatchFeePayoutPeriodUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryFeePayoutPeriodUpdated, newFeePayoutPeriod []*big.Int) (event.Subscription, error) { + var newFeePayoutPeriodRule []interface{} + for _, newFeePayoutPeriodItem := range newFeePayoutPeriod { + newFeePayoutPeriodRule = append(newFeePayoutPeriodRule, newFeePayoutPeriodItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "FeePayoutPeriodUpdated", newFeePayoutPeriodRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryFeePayoutPeriodUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "FeePayoutPeriodUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFeePayoutPeriodUpdated is a log parse operation binding the contract event 0xefd7aa598240290a91e058be60cb457231c4874ea3d308c1df4c14156d58f9cb. +// +// Solidity: event FeePayoutPeriodUpdated(uint256 indexed newFeePayoutPeriod) +func (_Providerregistry *ProviderregistryFilterer) ParseFeePayoutPeriodUpdated(log types.Log) (*ProviderregistryFeePayoutPeriodUpdated, error) { + event := new(ProviderregistryFeePayoutPeriodUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "FeePayoutPeriodUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryFeePercentUpdatedIterator is returned from FilterFeePercentUpdated and is used to iterate over the raw logs and unpacked data for FeePercentUpdated events raised by the Providerregistry contract. +type ProviderregistryFeePercentUpdatedIterator struct { + Event *ProviderregistryFeePercentUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryFeePercentUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryFeePercentUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryFeePercentUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryFeePercentUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryFeePercentUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryFeePercentUpdated represents a FeePercentUpdated event raised by the Providerregistry contract. +type ProviderregistryFeePercentUpdated struct { + NewFeePercent *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFeePercentUpdated is a free log retrieval operation binding the contract event 0x64d1887078a96d281ed60dd69ba75bfb6b5cd2cb4c2d2538b2eb7816a4c646ea. +// +// Solidity: event FeePercentUpdated(uint256 indexed newFeePercent) +func (_Providerregistry *ProviderregistryFilterer) FilterFeePercentUpdated(opts *bind.FilterOpts, newFeePercent []*big.Int) (*ProviderregistryFeePercentUpdatedIterator, error) { + var newFeePercentRule []interface{} + for _, newFeePercentItem := range newFeePercent { + newFeePercentRule = append(newFeePercentRule, newFeePercentItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "FeePercentUpdated", newFeePercentRule) + if err != nil { + return nil, err + } + return &ProviderregistryFeePercentUpdatedIterator{contract: _Providerregistry.contract, event: "FeePercentUpdated", logs: logs, sub: sub}, nil +} + +// WatchFeePercentUpdated is a free log subscription operation binding the contract event 0x64d1887078a96d281ed60dd69ba75bfb6b5cd2cb4c2d2538b2eb7816a4c646ea. +// +// Solidity: event FeePercentUpdated(uint256 indexed newFeePercent) +func (_Providerregistry *ProviderregistryFilterer) WatchFeePercentUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryFeePercentUpdated, newFeePercent []*big.Int) (event.Subscription, error) { + var newFeePercentRule []interface{} + for _, newFeePercentItem := range newFeePercent { + newFeePercentRule = append(newFeePercentRule, newFeePercentItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "FeePercentUpdated", newFeePercentRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryFeePercentUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "FeePercentUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFeePercentUpdated is a log parse operation binding the contract event 0x64d1887078a96d281ed60dd69ba75bfb6b5cd2cb4c2d2538b2eb7816a4c646ea. +// +// Solidity: event FeePercentUpdated(uint256 indexed newFeePercent) +func (_Providerregistry *ProviderregistryFilterer) ParseFeePercentUpdated(log types.Log) (*ProviderregistryFeePercentUpdated, error) { + event := new(ProviderregistryFeePercentUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "FeePercentUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryFeeTransferIterator is returned from FilterFeeTransfer and is used to iterate over the raw logs and unpacked data for FeeTransfer events raised by the Providerregistry contract. +type ProviderregistryFeeTransferIterator struct { + Event *ProviderregistryFeeTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryFeeTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryFeeTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryFeeTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryFeeTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryFeeTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryFeeTransfer represents a FeeTransfer event raised by the Providerregistry contract. +type ProviderregistryFeeTransfer struct { + Amount *big.Int + Recipient common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFeeTransfer is a free log retrieval operation binding the contract event 0x445bb6587d6cd09e272a0d1e5179e772b547dbf1041b6163f86bb62e86f25031. +// +// Solidity: event FeeTransfer(uint256 amount, address indexed recipient) +func (_Providerregistry *ProviderregistryFilterer) FilterFeeTransfer(opts *bind.FilterOpts, recipient []common.Address) (*ProviderregistryFeeTransferIterator, error) { + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "FeeTransfer", recipientRule) + if err != nil { + return nil, err + } + return &ProviderregistryFeeTransferIterator{contract: _Providerregistry.contract, event: "FeeTransfer", logs: logs, sub: sub}, nil +} + +// WatchFeeTransfer is a free log subscription operation binding the contract event 0x445bb6587d6cd09e272a0d1e5179e772b547dbf1041b6163f86bb62e86f25031. +// +// Solidity: event FeeTransfer(uint256 amount, address indexed recipient) +func (_Providerregistry *ProviderregistryFilterer) WatchFeeTransfer(opts *bind.WatchOpts, sink chan<- *ProviderregistryFeeTransfer, recipient []common.Address) (event.Subscription, error) { + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "FeeTransfer", recipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryFeeTransfer) + if err := _Providerregistry.contract.UnpackLog(event, "FeeTransfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFeeTransfer is a log parse operation binding the contract event 0x445bb6587d6cd09e272a0d1e5179e772b547dbf1041b6163f86bb62e86f25031. +// +// Solidity: event FeeTransfer(uint256 amount, address indexed recipient) +func (_Providerregistry *ProviderregistryFilterer) ParseFeeTransfer(log types.Log) (*ProviderregistryFeeTransfer, error) { + event := new(ProviderregistryFeeTransfer) + if err := _Providerregistry.contract.UnpackLog(event, "FeeTransfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryFundsDepositedIterator is returned from FilterFundsDeposited and is used to iterate over the raw logs and unpacked data for FundsDeposited events raised by the Providerregistry contract. +type ProviderregistryFundsDepositedIterator struct { + Event *ProviderregistryFundsDeposited // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryFundsDepositedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryFundsDeposited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryFundsDeposited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryFundsDepositedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryFundsDepositedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryFundsDeposited represents a FundsDeposited event raised by the Providerregistry contract. +type ProviderregistryFundsDeposited struct { + Provider common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFundsDeposited is a free log retrieval operation binding the contract event 0x543ba50a5eec5e6178218e364b1d0f396157b3c8fa278522c2cb7fd99407d474. +// +// Solidity: event FundsDeposited(address indexed provider, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) FilterFundsDeposited(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryFundsDepositedIterator, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "FundsDeposited", providerRule) + if err != nil { + return nil, err + } + return &ProviderregistryFundsDepositedIterator{contract: _Providerregistry.contract, event: "FundsDeposited", logs: logs, sub: sub}, nil +} + +// WatchFundsDeposited is a free log subscription operation binding the contract event 0x543ba50a5eec5e6178218e364b1d0f396157b3c8fa278522c2cb7fd99407d474. +// +// Solidity: event FundsDeposited(address indexed provider, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) WatchFundsDeposited(opts *bind.WatchOpts, sink chan<- *ProviderregistryFundsDeposited, provider []common.Address) (event.Subscription, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "FundsDeposited", providerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryFundsDeposited) + if err := _Providerregistry.contract.UnpackLog(event, "FundsDeposited", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFundsDeposited is a log parse operation binding the contract event 0x543ba50a5eec5e6178218e364b1d0f396157b3c8fa278522c2cb7fd99407d474. +// +// Solidity: event FundsDeposited(address indexed provider, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) ParseFundsDeposited(log types.Log) (*ProviderregistryFundsDeposited, error) { + event := new(ProviderregistryFundsDeposited) + if err := _Providerregistry.contract.UnpackLog(event, "FundsDeposited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryFundsSlashedIterator is returned from FilterFundsSlashed and is used to iterate over the raw logs and unpacked data for FundsSlashed events raised by the Providerregistry contract. +type ProviderregistryFundsSlashedIterator struct { + Event *ProviderregistryFundsSlashed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryFundsSlashedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryFundsSlashed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryFundsSlashed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryFundsSlashedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryFundsSlashedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryFundsSlashed represents a FundsSlashed event raised by the Providerregistry contract. +type ProviderregistryFundsSlashed struct { + Provider common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFundsSlashed is a free log retrieval operation binding the contract event 0x4a00481d3f7b0802643df0bdfb9bfc491a24ffca3eb1becc9fe8b525e0427a74. +// +// Solidity: event FundsSlashed(address indexed provider, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) FilterFundsSlashed(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryFundsSlashedIterator, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "FundsSlashed", providerRule) + if err != nil { + return nil, err + } + return &ProviderregistryFundsSlashedIterator{contract: _Providerregistry.contract, event: "FundsSlashed", logs: logs, sub: sub}, nil +} + +// WatchFundsSlashed is a free log subscription operation binding the contract event 0x4a00481d3f7b0802643df0bdfb9bfc491a24ffca3eb1becc9fe8b525e0427a74. +// +// Solidity: event FundsSlashed(address indexed provider, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) WatchFundsSlashed(opts *bind.WatchOpts, sink chan<- *ProviderregistryFundsSlashed, provider []common.Address) (event.Subscription, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "FundsSlashed", providerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryFundsSlashed) + if err := _Providerregistry.contract.UnpackLog(event, "FundsSlashed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFundsSlashed is a log parse operation binding the contract event 0x4a00481d3f7b0802643df0bdfb9bfc491a24ffca3eb1becc9fe8b525e0427a74. +// +// Solidity: event FundsSlashed(address indexed provider, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) ParseFundsSlashed(log types.Log) (*ProviderregistryFundsSlashed, error) { + event := new(ProviderregistryFundsSlashed) + if err := _Providerregistry.contract.UnpackLog(event, "FundsSlashed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Providerregistry contract. +type ProviderregistryInitializedIterator struct { + Event *ProviderregistryInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryInitialized represents a Initialized event raised by the Providerregistry contract. +type ProviderregistryInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Providerregistry *ProviderregistryFilterer) FilterInitialized(opts *bind.FilterOpts) (*ProviderregistryInitializedIterator, error) { + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ProviderregistryInitializedIterator{contract: _Providerregistry.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Providerregistry *ProviderregistryFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ProviderregistryInitialized) (event.Subscription, error) { + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryInitialized) + if err := _Providerregistry.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Providerregistry *ProviderregistryFilterer) ParseInitialized(log types.Log) (*ProviderregistryInitialized, error) { + event := new(ProviderregistryInitialized) + if err := _Providerregistry.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryInsufficientFundsToSlashIterator is returned from FilterInsufficientFundsToSlash and is used to iterate over the raw logs and unpacked data for InsufficientFundsToSlash events raised by the Providerregistry contract. +type ProviderregistryInsufficientFundsToSlashIterator struct { + Event *ProviderregistryInsufficientFundsToSlash // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryInsufficientFundsToSlashIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryInsufficientFundsToSlash) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryInsufficientFundsToSlash) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryInsufficientFundsToSlashIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryInsufficientFundsToSlashIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryInsufficientFundsToSlash represents a InsufficientFundsToSlash event raised by the Providerregistry contract. +type ProviderregistryInsufficientFundsToSlash struct { + Provider common.Address + ProviderStake *big.Int + ResidualAmount *big.Int + PenaltyFee *big.Int + SlashAmt *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInsufficientFundsToSlash is a free log retrieval operation binding the contract event 0x358857ec44573677cd31f4c53a96a9a253bfaea0ae485b613fd33a99bacd79dd. +// +// Solidity: event InsufficientFundsToSlash(address indexed provider, uint256 providerStake, uint256 residualAmount, uint256 penaltyFee, uint256 slashAmt) +func (_Providerregistry *ProviderregistryFilterer) FilterInsufficientFundsToSlash(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryInsufficientFundsToSlashIterator, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "InsufficientFundsToSlash", providerRule) + if err != nil { + return nil, err + } + return &ProviderregistryInsufficientFundsToSlashIterator{contract: _Providerregistry.contract, event: "InsufficientFundsToSlash", logs: logs, sub: sub}, nil +} + +// WatchInsufficientFundsToSlash is a free log subscription operation binding the contract event 0x358857ec44573677cd31f4c53a96a9a253bfaea0ae485b613fd33a99bacd79dd. +// +// Solidity: event InsufficientFundsToSlash(address indexed provider, uint256 providerStake, uint256 residualAmount, uint256 penaltyFee, uint256 slashAmt) +func (_Providerregistry *ProviderregistryFilterer) WatchInsufficientFundsToSlash(opts *bind.WatchOpts, sink chan<- *ProviderregistryInsufficientFundsToSlash, provider []common.Address) (event.Subscription, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "InsufficientFundsToSlash", providerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryInsufficientFundsToSlash) + if err := _Providerregistry.contract.UnpackLog(event, "InsufficientFundsToSlash", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInsufficientFundsToSlash is a log parse operation binding the contract event 0x358857ec44573677cd31f4c53a96a9a253bfaea0ae485b613fd33a99bacd79dd. +// +// Solidity: event InsufficientFundsToSlash(address indexed provider, uint256 providerStake, uint256 residualAmount, uint256 penaltyFee, uint256 slashAmt) +func (_Providerregistry *ProviderregistryFilterer) ParseInsufficientFundsToSlash(log types.Log) (*ProviderregistryInsufficientFundsToSlash, error) { + event := new(ProviderregistryInsufficientFundsToSlash) + if err := _Providerregistry.contract.UnpackLog(event, "InsufficientFundsToSlash", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryMinStakeUpdatedIterator is returned from FilterMinStakeUpdated and is used to iterate over the raw logs and unpacked data for MinStakeUpdated events raised by the Providerregistry contract. +type ProviderregistryMinStakeUpdatedIterator struct { + Event *ProviderregistryMinStakeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryMinStakeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryMinStakeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryMinStakeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryMinStakeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryMinStakeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryMinStakeUpdated represents a MinStakeUpdated event raised by the Providerregistry contract. +type ProviderregistryMinStakeUpdated struct { + NewMinStake *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinStakeUpdated is a free log retrieval operation binding the contract event 0x47ab46f2c8d4258304a2f5551c1cbdb6981be49631365d1ba7191288a73f39ef. +// +// Solidity: event MinStakeUpdated(uint256 indexed newMinStake) +func (_Providerregistry *ProviderregistryFilterer) FilterMinStakeUpdated(opts *bind.FilterOpts, newMinStake []*big.Int) (*ProviderregistryMinStakeUpdatedIterator, error) { + var newMinStakeRule []interface{} + for _, newMinStakeItem := range newMinStake { + newMinStakeRule = append(newMinStakeRule, newMinStakeItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "MinStakeUpdated", newMinStakeRule) + if err != nil { + return nil, err + } + return &ProviderregistryMinStakeUpdatedIterator{contract: _Providerregistry.contract, event: "MinStakeUpdated", logs: logs, sub: sub}, nil +} + +// WatchMinStakeUpdated is a free log subscription operation binding the contract event 0x47ab46f2c8d4258304a2f5551c1cbdb6981be49631365d1ba7191288a73f39ef. +// +// Solidity: event MinStakeUpdated(uint256 indexed newMinStake) +func (_Providerregistry *ProviderregistryFilterer) WatchMinStakeUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryMinStakeUpdated, newMinStake []*big.Int) (event.Subscription, error) { + var newMinStakeRule []interface{} + for _, newMinStakeItem := range newMinStake { + newMinStakeRule = append(newMinStakeRule, newMinStakeItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "MinStakeUpdated", newMinStakeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryMinStakeUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "MinStakeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinStakeUpdated is a log parse operation binding the contract event 0x47ab46f2c8d4258304a2f5551c1cbdb6981be49631365d1ba7191288a73f39ef. +// +// Solidity: event MinStakeUpdated(uint256 indexed newMinStake) +func (_Providerregistry *ProviderregistryFilterer) ParseMinStakeUpdated(log types.Log) (*ProviderregistryMinStakeUpdated, error) { + event := new(ProviderregistryMinStakeUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "MinStakeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the Providerregistry contract. +type ProviderregistryOwnershipTransferStartedIterator struct { + Event *ProviderregistryOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the Providerregistry contract. +type ProviderregistryOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Providerregistry *ProviderregistryFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProviderregistryOwnershipTransferStartedIterator, error) { + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ProviderregistryOwnershipTransferStartedIterator{contract: _Providerregistry.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Providerregistry *ProviderregistryFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *ProviderregistryOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryOwnershipTransferStarted) + if err := _Providerregistry.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Providerregistry *ProviderregistryFilterer) ParseOwnershipTransferStarted(log types.Log) (*ProviderregistryOwnershipTransferStarted, error) { + event := new(ProviderregistryOwnershipTransferStarted) + if err := _Providerregistry.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Providerregistry contract. +type ProviderregistryOwnershipTransferredIterator struct { + Event *ProviderregistryOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryOwnershipTransferred represents a OwnershipTransferred event raised by the Providerregistry contract. +type ProviderregistryOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Providerregistry *ProviderregistryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProviderregistryOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ProviderregistryOwnershipTransferredIterator{contract: _Providerregistry.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Providerregistry *ProviderregistryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ProviderregistryOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryOwnershipTransferred) + if err := _Providerregistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Providerregistry *ProviderregistryFilterer) ParseOwnershipTransferred(log types.Log) (*ProviderregistryOwnershipTransferred, error) { + event := new(ProviderregistryOwnershipTransferred) + if err := _Providerregistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the Providerregistry contract. +type ProviderregistryPausedIterator struct { + Event *ProviderregistryPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryPaused represents a Paused event raised by the Providerregistry contract. +type ProviderregistryPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Providerregistry *ProviderregistryFilterer) FilterPaused(opts *bind.FilterOpts) (*ProviderregistryPausedIterator, error) { + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ProviderregistryPausedIterator{contract: _Providerregistry.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Providerregistry *ProviderregistryFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ProviderregistryPaused) (event.Subscription, error) { + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryPaused) + if err := _Providerregistry.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Providerregistry *ProviderregistryFilterer) ParsePaused(log types.Log) (*ProviderregistryPaused, error) { + event := new(ProviderregistryPaused) + if err := _Providerregistry.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryPenaltyFeeRecipientUpdatedIterator is returned from FilterPenaltyFeeRecipientUpdated and is used to iterate over the raw logs and unpacked data for PenaltyFeeRecipientUpdated events raised by the Providerregistry contract. +type ProviderregistryPenaltyFeeRecipientUpdatedIterator struct { + Event *ProviderregistryPenaltyFeeRecipientUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryPenaltyFeeRecipientUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryPenaltyFeeRecipientUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryPenaltyFeeRecipientUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryPenaltyFeeRecipientUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryPenaltyFeeRecipientUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryPenaltyFeeRecipientUpdated represents a PenaltyFeeRecipientUpdated event raised by the Providerregistry contract. +type ProviderregistryPenaltyFeeRecipientUpdated struct { + NewPenaltyFeeRecipient common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPenaltyFeeRecipientUpdated is a free log retrieval operation binding the contract event 0xb5d4f6e9d9b31eb58c205f8c3bb44d4f0094605caa42167107a9c3e91ebf8c85. +// +// Solidity: event PenaltyFeeRecipientUpdated(address indexed newPenaltyFeeRecipient) +func (_Providerregistry *ProviderregistryFilterer) FilterPenaltyFeeRecipientUpdated(opts *bind.FilterOpts, newPenaltyFeeRecipient []common.Address) (*ProviderregistryPenaltyFeeRecipientUpdatedIterator, error) { + var newPenaltyFeeRecipientRule []interface{} + for _, newPenaltyFeeRecipientItem := range newPenaltyFeeRecipient { + newPenaltyFeeRecipientRule = append(newPenaltyFeeRecipientRule, newPenaltyFeeRecipientItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "PenaltyFeeRecipientUpdated", newPenaltyFeeRecipientRule) + if err != nil { + return nil, err + } + return &ProviderregistryPenaltyFeeRecipientUpdatedIterator{contract: _Providerregistry.contract, event: "PenaltyFeeRecipientUpdated", logs: logs, sub: sub}, nil +} + +// WatchPenaltyFeeRecipientUpdated is a free log subscription operation binding the contract event 0xb5d4f6e9d9b31eb58c205f8c3bb44d4f0094605caa42167107a9c3e91ebf8c85. +// +// Solidity: event PenaltyFeeRecipientUpdated(address indexed newPenaltyFeeRecipient) +func (_Providerregistry *ProviderregistryFilterer) WatchPenaltyFeeRecipientUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryPenaltyFeeRecipientUpdated, newPenaltyFeeRecipient []common.Address) (event.Subscription, error) { + var newPenaltyFeeRecipientRule []interface{} + for _, newPenaltyFeeRecipientItem := range newPenaltyFeeRecipient { + newPenaltyFeeRecipientRule = append(newPenaltyFeeRecipientRule, newPenaltyFeeRecipientItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "PenaltyFeeRecipientUpdated", newPenaltyFeeRecipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryPenaltyFeeRecipientUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "PenaltyFeeRecipientUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePenaltyFeeRecipientUpdated is a log parse operation binding the contract event 0xb5d4f6e9d9b31eb58c205f8c3bb44d4f0094605caa42167107a9c3e91ebf8c85. +// +// Solidity: event PenaltyFeeRecipientUpdated(address indexed newPenaltyFeeRecipient) +func (_Providerregistry *ProviderregistryFilterer) ParsePenaltyFeeRecipientUpdated(log types.Log) (*ProviderregistryPenaltyFeeRecipientUpdated, error) { + event := new(ProviderregistryPenaltyFeeRecipientUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "PenaltyFeeRecipientUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryPreconfManagerUpdatedIterator is returned from FilterPreconfManagerUpdated and is used to iterate over the raw logs and unpacked data for PreconfManagerUpdated events raised by the Providerregistry contract. +type ProviderregistryPreconfManagerUpdatedIterator struct { + Event *ProviderregistryPreconfManagerUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryPreconfManagerUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryPreconfManagerUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryPreconfManagerUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryPreconfManagerUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryPreconfManagerUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryPreconfManagerUpdated represents a PreconfManagerUpdated event raised by the Providerregistry contract. +type ProviderregistryPreconfManagerUpdated struct { + NewPreconfManager common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPreconfManagerUpdated is a free log retrieval operation binding the contract event 0xba8b46bd4ed6a7ec49dc1a4758a5ffd0cbae99c172bbe007676fcb74fefa310f. +// +// Solidity: event PreconfManagerUpdated(address indexed newPreconfManager) +func (_Providerregistry *ProviderregistryFilterer) FilterPreconfManagerUpdated(opts *bind.FilterOpts, newPreconfManager []common.Address) (*ProviderregistryPreconfManagerUpdatedIterator, error) { + var newPreconfManagerRule []interface{} + for _, newPreconfManagerItem := range newPreconfManager { + newPreconfManagerRule = append(newPreconfManagerRule, newPreconfManagerItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "PreconfManagerUpdated", newPreconfManagerRule) + if err != nil { + return nil, err + } + return &ProviderregistryPreconfManagerUpdatedIterator{contract: _Providerregistry.contract, event: "PreconfManagerUpdated", logs: logs, sub: sub}, nil +} + +// WatchPreconfManagerUpdated is a free log subscription operation binding the contract event 0xba8b46bd4ed6a7ec49dc1a4758a5ffd0cbae99c172bbe007676fcb74fefa310f. +// +// Solidity: event PreconfManagerUpdated(address indexed newPreconfManager) +func (_Providerregistry *ProviderregistryFilterer) WatchPreconfManagerUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryPreconfManagerUpdated, newPreconfManager []common.Address) (event.Subscription, error) { + var newPreconfManagerRule []interface{} + for _, newPreconfManagerItem := range newPreconfManager { + newPreconfManagerRule = append(newPreconfManagerRule, newPreconfManagerItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "PreconfManagerUpdated", newPreconfManagerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryPreconfManagerUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "PreconfManagerUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePreconfManagerUpdated is a log parse operation binding the contract event 0xba8b46bd4ed6a7ec49dc1a4758a5ffd0cbae99c172bbe007676fcb74fefa310f. +// +// Solidity: event PreconfManagerUpdated(address indexed newPreconfManager) +func (_Providerregistry *ProviderregistryFilterer) ParsePreconfManagerUpdated(log types.Log) (*ProviderregistryPreconfManagerUpdated, error) { + event := new(ProviderregistryPreconfManagerUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "PreconfManagerUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryProviderRegisteredIterator is returned from FilterProviderRegistered and is used to iterate over the raw logs and unpacked data for ProviderRegistered events raised by the Providerregistry contract. +type ProviderregistryProviderRegisteredIterator struct { + Event *ProviderregistryProviderRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryProviderRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryProviderRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryProviderRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryProviderRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryProviderRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryProviderRegistered represents a ProviderRegistered event raised by the Providerregistry contract. +type ProviderregistryProviderRegistered struct { + Provider common.Address + StakedAmount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterProviderRegistered is a free log retrieval operation binding the contract event 0x90c9734131c1e4fb36cde2d71e6feb93fb258f71be8a85411c173d25e1516e80. +// +// Solidity: event ProviderRegistered(address indexed provider, uint256 stakedAmount) +func (_Providerregistry *ProviderregistryFilterer) FilterProviderRegistered(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryProviderRegisteredIterator, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "ProviderRegistered", providerRule) + if err != nil { + return nil, err + } + return &ProviderregistryProviderRegisteredIterator{contract: _Providerregistry.contract, event: "ProviderRegistered", logs: logs, sub: sub}, nil +} + +// WatchProviderRegistered is a free log subscription operation binding the contract event 0x90c9734131c1e4fb36cde2d71e6feb93fb258f71be8a85411c173d25e1516e80. +// +// Solidity: event ProviderRegistered(address indexed provider, uint256 stakedAmount) +func (_Providerregistry *ProviderregistryFilterer) WatchProviderRegistered(opts *bind.WatchOpts, sink chan<- *ProviderregistryProviderRegistered, provider []common.Address) (event.Subscription, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "ProviderRegistered", providerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryProviderRegistered) + if err := _Providerregistry.contract.UnpackLog(event, "ProviderRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseProviderRegistered is a log parse operation binding the contract event 0x90c9734131c1e4fb36cde2d71e6feb93fb258f71be8a85411c173d25e1516e80. +// +// Solidity: event ProviderRegistered(address indexed provider, uint256 stakedAmount) +func (_Providerregistry *ProviderregistryFilterer) ParseProviderRegistered(log types.Log) (*ProviderregistryProviderRegistered, error) { + event := new(ProviderregistryProviderRegistered) + if err := _Providerregistry.contract.UnpackLog(event, "ProviderRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryTransferToBidderFailedIterator is returned from FilterTransferToBidderFailed and is used to iterate over the raw logs and unpacked data for TransferToBidderFailed events raised by the Providerregistry contract. +type ProviderregistryTransferToBidderFailedIterator struct { + Event *ProviderregistryTransferToBidderFailed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryTransferToBidderFailedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryTransferToBidderFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryTransferToBidderFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryTransferToBidderFailedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryTransferToBidderFailedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryTransferToBidderFailed represents a TransferToBidderFailed event raised by the Providerregistry contract. +type ProviderregistryTransferToBidderFailed struct { + Bidder common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransferToBidderFailed is a free log retrieval operation binding the contract event 0xd4bd5c1c0f198fbafd25af26c36f4c115af31d522d0f520abc017845e225aca6. +// +// Solidity: event TransferToBidderFailed(address bidder, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) FilterTransferToBidderFailed(opts *bind.FilterOpts) (*ProviderregistryTransferToBidderFailedIterator, error) { + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "TransferToBidderFailed") + if err != nil { + return nil, err + } + return &ProviderregistryTransferToBidderFailedIterator{contract: _Providerregistry.contract, event: "TransferToBidderFailed", logs: logs, sub: sub}, nil +} + +// WatchTransferToBidderFailed is a free log subscription operation binding the contract event 0xd4bd5c1c0f198fbafd25af26c36f4c115af31d522d0f520abc017845e225aca6. +// +// Solidity: event TransferToBidderFailed(address bidder, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) WatchTransferToBidderFailed(opts *bind.WatchOpts, sink chan<- *ProviderregistryTransferToBidderFailed) (event.Subscription, error) { + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "TransferToBidderFailed") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryTransferToBidderFailed) + if err := _Providerregistry.contract.UnpackLog(event, "TransferToBidderFailed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransferToBidderFailed is a log parse operation binding the contract event 0xd4bd5c1c0f198fbafd25af26c36f4c115af31d522d0f520abc017845e225aca6. +// +// Solidity: event TransferToBidderFailed(address bidder, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) ParseTransferToBidderFailed(log types.Log) (*ProviderregistryTransferToBidderFailed, error) { + event := new(ProviderregistryTransferToBidderFailed) + if err := _Providerregistry.contract.UnpackLog(event, "TransferToBidderFailed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the Providerregistry contract. +type ProviderregistryUnpausedIterator struct { + Event *ProviderregistryUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryUnpaused represents a Unpaused event raised by the Providerregistry contract. +type ProviderregistryUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Providerregistry *ProviderregistryFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ProviderregistryUnpausedIterator, error) { + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ProviderregistryUnpausedIterator{contract: _Providerregistry.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Providerregistry *ProviderregistryFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ProviderregistryUnpaused) (event.Subscription, error) { + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryUnpaused) + if err := _Providerregistry.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Providerregistry *ProviderregistryFilterer) ParseUnpaused(log types.Log) (*ProviderregistryUnpaused, error) { + event := new(ProviderregistryUnpaused) + if err := _Providerregistry.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryUnstakeIterator is returned from FilterUnstake and is used to iterate over the raw logs and unpacked data for Unstake events raised by the Providerregistry contract. +type ProviderregistryUnstakeIterator struct { + Event *ProviderregistryUnstake // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryUnstakeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryUnstake) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryUnstake) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryUnstakeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryUnstakeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryUnstake represents a Unstake event raised by the Providerregistry contract. +type ProviderregistryUnstake struct { + Provider common.Address + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnstake is a free log retrieval operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd. +// +// Solidity: event Unstake(address indexed provider, uint256 timestamp) +func (_Providerregistry *ProviderregistryFilterer) FilterUnstake(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryUnstakeIterator, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Unstake", providerRule) + if err != nil { + return nil, err + } + return &ProviderregistryUnstakeIterator{contract: _Providerregistry.contract, event: "Unstake", logs: logs, sub: sub}, nil +} + +// WatchUnstake is a free log subscription operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd. +// +// Solidity: event Unstake(address indexed provider, uint256 timestamp) +func (_Providerregistry *ProviderregistryFilterer) WatchUnstake(opts *bind.WatchOpts, sink chan<- *ProviderregistryUnstake, provider []common.Address) (event.Subscription, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Unstake", providerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryUnstake) + if err := _Providerregistry.contract.UnpackLog(event, "Unstake", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnstake is a log parse operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd. +// +// Solidity: event Unstake(address indexed provider, uint256 timestamp) +func (_Providerregistry *ProviderregistryFilterer) ParseUnstake(log types.Log) (*ProviderregistryUnstake, error) { + event := new(ProviderregistryUnstake) + if err := _Providerregistry.contract.UnpackLog(event, "Unstake", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the Providerregistry contract. +type ProviderregistryUpgradedIterator struct { + Event *ProviderregistryUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryUpgraded represents a Upgraded event raised by the Providerregistry contract. +type ProviderregistryUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_Providerregistry *ProviderregistryFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ProviderregistryUpgradedIterator, error) { + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ProviderregistryUpgradedIterator{contract: _Providerregistry.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_Providerregistry *ProviderregistryFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ProviderregistryUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryUpgraded) + if err := _Providerregistry.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_Providerregistry *ProviderregistryFilterer) ParseUpgraded(log types.Log) (*ProviderregistryUpgraded, error) { + event := new(ProviderregistryUpgraded) + if err := _Providerregistry.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the Providerregistry contract. +type ProviderregistryWithdrawIterator struct { + Event *ProviderregistryWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryWithdraw represents a Withdraw event raised by the Providerregistry contract. +type ProviderregistryWithdraw struct { + Provider common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed provider, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) FilterWithdraw(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryWithdrawIterator, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Withdraw", providerRule) + if err != nil { + return nil, err + } + return &ProviderregistryWithdrawIterator{contract: _Providerregistry.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed provider, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ProviderregistryWithdraw, provider []common.Address) (event.Subscription, error) { + var providerRule []interface{} + for _, providerItem := range provider { + providerRule = append(providerRule, providerItem) + } + + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Withdraw", providerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryWithdraw) + if err := _Providerregistry.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed provider, uint256 amount) +func (_Providerregistry *ProviderregistryFilterer) ParseWithdraw(log types.Log) (*ProviderregistryWithdraw, error) { + event := new(ProviderregistryWithdraw) + if err := _Providerregistry.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProviderregistryWithdrawalDelayUpdatedIterator is returned from FilterWithdrawalDelayUpdated and is used to iterate over the raw logs and unpacked data for WithdrawalDelayUpdated events raised by the Providerregistry contract. +type ProviderregistryWithdrawalDelayUpdatedIterator struct { + Event *ProviderregistryWithdrawalDelayUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProviderregistryWithdrawalDelayUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProviderregistryWithdrawalDelayUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProviderregistryWithdrawalDelayUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProviderregistryWithdrawalDelayUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProviderregistryWithdrawalDelayUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProviderregistryWithdrawalDelayUpdated represents a WithdrawalDelayUpdated event raised by the Providerregistry contract. +type ProviderregistryWithdrawalDelayUpdated struct { + NewWithdrawalDelay *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawalDelayUpdated is a free log retrieval operation binding the contract event 0xb34b8e54226bc5e8f4a9d846e344e0c42d09eeb1c79798df7ce7460c16071e2d. +// +// Solidity: event WithdrawalDelayUpdated(uint256 newWithdrawalDelay) +func (_Providerregistry *ProviderregistryFilterer) FilterWithdrawalDelayUpdated(opts *bind.FilterOpts) (*ProviderregistryWithdrawalDelayUpdatedIterator, error) { + logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "WithdrawalDelayUpdated") + if err != nil { + return nil, err + } + return &ProviderregistryWithdrawalDelayUpdatedIterator{contract: _Providerregistry.contract, event: "WithdrawalDelayUpdated", logs: logs, sub: sub}, nil +} + +// WatchWithdrawalDelayUpdated is a free log subscription operation binding the contract event 0xb34b8e54226bc5e8f4a9d846e344e0c42d09eeb1c79798df7ce7460c16071e2d. +// +// Solidity: event WithdrawalDelayUpdated(uint256 newWithdrawalDelay) +func (_Providerregistry *ProviderregistryFilterer) WatchWithdrawalDelayUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryWithdrawalDelayUpdated) (event.Subscription, error) { + logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "WithdrawalDelayUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProviderregistryWithdrawalDelayUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "WithdrawalDelayUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawalDelayUpdated is a log parse operation binding the contract event 0xb34b8e54226bc5e8f4a9d846e344e0c42d09eeb1c79798df7ce7460c16071e2d. +// +// Solidity: event WithdrawalDelayUpdated(uint256 newWithdrawalDelay) +func (_Providerregistry *ProviderregistryFilterer) ParseWithdrawalDelayUpdated(log types.Log) (*ProviderregistryWithdrawalDelayUpdated, error) { + event := new(ProviderregistryWithdrawalDelayUpdated) + if err := _Providerregistry.contract.UnpackLog(event, "WithdrawalDelayUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/rolling-shutter/keyperimpl/primev/config.go b/rolling-shutter/keyperimpl/primev/config.go index 377187543..fa520f94c 100644 --- a/rolling-shutter/keyperimpl/primev/config.go +++ b/rolling-shutter/keyperimpl/primev/config.go @@ -4,6 +4,7 @@ import ( "io" "github.com/ethereum/go-ethereum/common" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprconfig" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/configuration" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/metricsserver" @@ -121,14 +122,16 @@ func (c *ChainConfig) TOMLWriteHeader(_ io.Writer) (int, error) { } type ContractsConfig struct { - KeyperSetManager common.Address `shconfig:",required"` - KeyBroadcastContract common.Address `shconfig:",required"` + KeyperSetManager common.Address `shconfig:",required"` + KeyBroadcastContract common.Address `shconfig:",required"` + ProviderRegistryContract common.Address `shconfig:",required"` } func NewContractsConfig() *ContractsConfig { return &ContractsConfig{ - KeyperSetManager: common.Address{}, - KeyBroadcastContract: common.Address{}, + KeyperSetManager: common.Address{}, + KeyBroadcastContract: common.Address{}, + ProviderRegistryContract: common.Address{}, } } diff --git a/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go index c6e59fb8e..be971d9f9 100644 --- a/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go +++ b/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go @@ -18,3 +18,18 @@ type CommittedTransaction struct { BlockNumber int64 TxHash string } + +type ProviderRegistryEvent struct { + BlockNumber int64 + BlockHash []byte + TxIndex int64 + LogIndex int64 + ProviderAddress string + BlsKeys [][]byte +} + +type ProviderRegistryEventsSyncedUntil struct { + EnforceOneRow bool + BlockHash []byte + BlockNumber int64 +} diff --git a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go index 95c5f2c53..d1d95508d 100644 --- a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go +++ b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go @@ -7,8 +7,19 @@ package database import ( "context" + + "github.com/jackc/pgconn" ) +const deleteProviderRegistryEventsFromBlockNumber = `-- name: DeleteProviderRegistryEventsFromBlockNumber :exec +DELETE FROM provider_registry_events WHERE block_number >= $1 +` + +func (q *Queries) DeleteProviderRegistryEventsFromBlockNumber(ctx context.Context, blockNumber int64) error { + _, err := q.db.Exec(ctx, deleteProviderRegistryEventsFromBlockNumber, blockNumber) + return err +} + const getCommitmentByTxHash = `-- name: GetCommitmentByTxHash :many SELECT c.tx_hashes, @@ -46,6 +57,17 @@ func (q *Queries) GetCommitmentByTxHash(ctx context.Context, txHashes []string) return items, nil } +const getProviderRegistryEventsSyncedUntil = `-- name: GetProviderRegistryEventsSyncedUntil :one +SELECT enforce_one_row, block_hash, block_number FROM provider_registry_events_synced_until LIMIT 1 +` + +func (q *Queries) GetProviderRegistryEventsSyncedUntil(ctx context.Context) (ProviderRegistryEventsSyncedUntil, error) { + row := q.db.QueryRow(ctx, getProviderRegistryEventsSyncedUntil) + var i ProviderRegistryEventsSyncedUntil + err := row.Scan(&i.EnforceOneRow, &i.BlockHash, &i.BlockNumber) + return i, err +} + const insertMultipleTransactionsAndUpsertCommitment = `-- name: InsertMultipleTransactionsAndUpsertCommitment :exec WITH inserted_transactions AS ( INSERT INTO committed_transactions (eon, identity_preimage, block_number, tx_hash) @@ -98,3 +120,50 @@ func (q *Queries) InsertMultipleTransactionsAndUpsertCommitment(ctx context.Cont ) return err } + +const insertProviderRegistryEvent = `-- name: InsertProviderRegistryEvent :execresult +INSERT INTO provider_registry_events (block_number, block_hash, tx_index, log_index, provider_address, bls_keys) +VALUES ($1, $2, $3, $4, $5, $6) +ON CONFLICT (provider_address) DO UPDATE SET +block_number = $1, +block_hash = $2, +tx_index = $3, +log_index = $4, +bls_keys = $6 +` + +type InsertProviderRegistryEventParams struct { + BlockNumber int64 + BlockHash []byte + TxIndex int64 + LogIndex int64 + ProviderAddress string + BlsKeys [][]byte +} + +func (q *Queries) InsertProviderRegistryEvent(ctx context.Context, arg InsertProviderRegistryEventParams) (pgconn.CommandTag, error) { + return q.db.Exec(ctx, insertProviderRegistryEvent, + arg.BlockNumber, + arg.BlockHash, + arg.TxIndex, + arg.LogIndex, + arg.ProviderAddress, + arg.BlsKeys, + ) +} + +const setProviderRegistryEventsSyncedUntil = `-- name: SetProviderRegistryEventsSyncedUntil :exec +INSERT INTO provider_registry_events_synced_until (block_hash, block_number) VALUES ($1, $2) +ON CONFLICT (enforce_one_row) DO UPDATE +SET block_hash = $1, block_number = $2 +` + +type SetProviderRegistryEventsSyncedUntilParams struct { + BlockHash []byte + BlockNumber int64 +} + +func (q *Queries) SetProviderRegistryEventsSyncedUntil(ctx context.Context, arg SetProviderRegistryEventsSyncedUntilParams) error { + _, err := q.db.Exec(ctx, setProviderRegistryEventsSyncedUntil, arg.BlockHash, arg.BlockNumber) + return err +} diff --git a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql index a7355aebc..5f395fe70 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql @@ -35,3 +35,23 @@ upserted_commitment AS ( ) SELECT tx_hashes, provider_address FROM upserted_commitment; +-- name: GetProviderRegistryEventsSyncedUntil :one +SELECT * FROM provider_registry_events_synced_until LIMIT 1; + +-- name: SetProviderRegistryEventsSyncedUntil :exec +INSERT INTO provider_registry_events_synced_until (block_hash, block_number) VALUES ($1, $2) +ON CONFLICT (enforce_one_row) DO UPDATE +SET block_hash = $1, block_number = $2; + +-- name: InsertProviderRegistryEvent :execresult +INSERT INTO provider_registry_events (block_number, block_hash, tx_index, log_index, provider_address, bls_keys) +VALUES ($1, $2, $3, $4, $5, $6) +ON CONFLICT (provider_address) DO UPDATE SET +block_number = $1, +block_hash = $2, +tx_index = $3, +log_index = $4, +bls_keys = $6; + +-- name: DeleteProviderRegistryEventsFromBlockNumber :exec +DELETE FROM provider_registry_events WHERE block_number >= $1; \ No newline at end of file diff --git a/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql index 484d345d7..954fc42f8 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql @@ -17,4 +17,20 @@ CREATE TABLE committed_transactions( block_number bigint NOT NULL CHECK (block_number >= 0), tx_hash text NOT NULL, PRIMARY KEY (eon, identity_preimage, tx_hash) +); + +CREATE TABLE provider_registry_events_synced_until( + enforce_one_row bool PRIMARY KEY DEFAULT true, + block_hash bytea NOT NULL, + block_number bigint NOT NULL CHECK (block_number >= 0) +); + +CREATE TABLE provider_registry_events( + block_number bigint NOT NULL CHECK (block_number >= 0), + block_hash bytea NOT NULL, + tx_index bigint NOT NULL CHECK (tx_index >= 0), + log_index bigint NOT NULL CHECK (log_index >= 0), + provider_address text NOT NULL, + bls_keys bytea[] NOT NULL, + PRIMARY KEY (provider_address) ); \ No newline at end of file diff --git a/rolling-shutter/keyperimpl/primev/keyper.go b/rolling-shutter/keyperimpl/primev/keyper.go index 557006843..970e400a5 100644 --- a/rolling-shutter/keyperimpl/primev/keyper.go +++ b/rolling-shutter/keyperimpl/primev/keyper.go @@ -9,11 +9,13 @@ import ( "github.com/jackc/pgx/v4/pgxpool" "github.com/pkg/errors" "github.com/rs/zerolog/log" + "github.com/shutter-network/rolling-shutter/rolling-shutter/eonkeypublisher" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprconfig" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/gnosis/database" + providerregistry "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/abi" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/broker" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync" syncevent "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync/event" @@ -29,10 +31,12 @@ type Keyper struct { config *Config dbpool *pgxpool.Pool - chainSyncClient *chainsync.Client - eonKeyPublisher *eonkeypublisher.EonKeyPublisher - newKeyperSets chan *syncevent.KeyperSet - newEonPublicKeys chan keyper.EonPublicKey + chainSyncClient *chainsync.Client + providerRegistrySyncer *ProviderRegistrySyncer + eonKeyPublisher *eonkeypublisher.EonKeyPublisher + newKeyperSets chan *syncevent.KeyperSet + newEonPublicKeys chan keyper.EonPublicKey + newBlocks chan *syncevent.LatestBlock // outputs decryptionTriggerChannel chan *broker.Event[*epochkghandler.DecryptionTrigger] @@ -49,6 +53,7 @@ func (k *Keyper) Start(ctx context.Context, runner service.Runner) error { k.newKeyperSets = make(chan *syncevent.KeyperSet) k.newEonPublicKeys = make(chan keyper.EonPublicKey) + k.newBlocks = make(chan *syncevent.LatestBlock) k.decryptionTriggerChannel = make(chan *broker.Event[*epochkghandler.DecryptionTrigger]) k.dbpool, err = db.Connect(ctx, runner, k.config.DatabaseURL, database.Definition.Name()) @@ -61,7 +66,7 @@ func (k *Keyper) Start(ctx context.Context, runner service.Runner) error { return errors.Wrap(err, "failed to initialize p2p messaging") } - //TODO: do we need a middleware also here? + // TODO: do we need a middleware also here? messageSender.AddMessageHandler(&PrimevCommitmentHandler{ config: k.config, decryptionTriggerChannel: k.decryptionTriggerChannel, @@ -78,6 +83,7 @@ func (k *Keyper) Start(ctx context.Context, runner service.Runner) error { chainsync.WithKeyperSetManager(k.config.Chain.Contracts.KeyperSetManager), chainsync.WithKeyBroadcastContract(k.config.Chain.Contracts.KeyBroadcastContract), chainsync.WithSyncNewKeyperSet(k.channelNewKeyperSet), + chainsync.WithSyncNewBlock(k.channelNewBlock), chainsync.WithPrivateKey(k.config.Chain.Node.PrivateKey.Key), chainsync.WithLogger(gethLog.NewLogger(slog.Default().Handler())), ) @@ -99,6 +105,11 @@ func (k *Keyper) Start(ctx context.Context, runner service.Runner) error { return errors.Wrap(err, "failed to initialize eon key publisher") } + err = k.initRegistrySyncer(ctx) + if err != nil { + return err + } + runner.Go(func() error { return k.processInputs(ctx) }) return runner.StartService(k.core, k.chainSyncClient, k.eonKeyPublisher) } @@ -124,10 +135,49 @@ func NewKeyper(kpr *Keyper) (*keyper.KeyperCore, error) { ) } +// initRegistrySyncer initializes the registry syncer. +func (kpr *Keyper) initRegistrySyncer(ctx context.Context) error { + client, err := ethclient.DialContext(ctx, kpr.config.Chain.Node.EthereumURL) + if err != nil { + return errors.Wrap(err, "failed to dial Ethereum execution node") + } + + log.Info(). + Str("contract-address", kpr.config.Chain.Contracts.KeyperSetManager.Hex()). + Msg("initializing registry syncer") + + contract, err := providerregistry.NewProviderregistry(kpr.config.Chain.Contracts.ProviderRegistryContract, client) + if err != nil { + return err + } + + kpr.providerRegistrySyncer = &ProviderRegistrySyncer{ + Contract: contract, + DBPool: kpr.dbpool, + ExecutionClient: client, + SyncStartBlockNumber: kpr.config.Chain.SyncStartBlockNumber, + } + + // Perform an initial sync now because it might take some time and doing so during regular + // slot processing might hold up things + latestHeader, err := client.HeaderByNumber(ctx, nil) + if err != nil { + return errors.Wrap(err, "failed to get latest block header") + } + err = kpr.providerRegistrySyncer.Sync(ctx, latestHeader) + if err != nil { + return err + } + + return nil +} + func (k *Keyper) processInputs(ctx context.Context) error { var err error for { select { + case ev := <-k.newBlocks: + err = k.processNewBlock(ctx, ev) case ev := <-k.newKeyperSets: err = k.processNewKeyperSet(ctx, ev) case ev := <-k.newEonPublicKeys: @@ -154,3 +204,8 @@ func (k *Keyper) channelNewKeyperSet(_ context.Context, ev *syncevent.KeyperSet) k.newKeyperSets <- ev return nil } + +func (k *Keyper) channelNewBlock(_ context.Context, ev *syncevent.LatestBlock) error { + k.newBlocks <- ev + return nil +} diff --git a/rolling-shutter/keyperimpl/primev/newblock.go b/rolling-shutter/keyperimpl/primev/newblock.go new file mode 100644 index 000000000..fd6e0db3c --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/newblock.go @@ -0,0 +1,12 @@ +package primev + +import ( + "context" + + syncevent "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync/event" +) + +func (k *Keyper) processNewBlock(ctx context.Context, ev *syncevent.LatestBlock) error { + // TODO: need to fetch new provider registrations + return nil +} diff --git a/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go b/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go new file mode 100644 index 000000000..c7bee10e4 --- /dev/null +++ b/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go @@ -0,0 +1,275 @@ +package primev + +import ( + "bytes" + "context" + "math/big" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/jackc/pgx/v4" + "github.com/jackc/pgx/v4/pgxpool" + "github.com/pkg/errors" + "github.com/rs/zerolog/log" + + providerregistry "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/abi" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/database" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley" +) + +const ( + AssumedReorgDepth = 10 + maxRequestBlockRange = 10_000 +) + +type ProviderRegistrySyncer struct { + Contract *providerregistry.Providerregistry + DBPool *pgxpool.Pool + ExecutionClient *ethclient.Client + SyncStartBlockNumber uint64 +} + +// getNumReorgedBlocks returns the number of blocks that have already been synced, but are no +// longer in the chain. +func getNumReorgedBlocks(syncedUntil *database.ProviderRegistryEventsSyncedUntil, header *types.Header) int { + shouldBeParent := header.Number.Int64() == syncedUntil.BlockNumber+1 + isParent := bytes.Equal(header.ParentHash.Bytes(), syncedUntil.BlockHash) + isReorg := shouldBeParent && !isParent + if !isReorg { + return 0 + } + // We don't know how deep the reorg is, so we make a conservative guess. Assuming higher depths + // is safer because it means we resync a little bit more. + depth := AssumedReorgDepth + if syncedUntil.BlockNumber < int64(depth) { + return int(syncedUntil.BlockNumber) + } + return depth +} + +// resetSyncStatus clears the db from its recent history after a reorg of given depth. +func (s *ProviderRegistrySyncer) resetSyncStatus(ctx context.Context, numReorgedBlocks int) error { + if numReorgedBlocks == 0 { + return nil + } + return s.DBPool.BeginFunc(ctx, func(tx pgx.Tx) error { + queries := database.New(tx) + + syncStatus, err := queries.GetProviderRegistryEventsSyncedUntil(ctx) + if err != nil { + return errors.Wrap(err, "failed to query sync status from db in order to reset it") + } + if syncStatus.BlockNumber < int64(numReorgedBlocks) { + return errors.Wrapf(err, "detected reorg deeper (%d) than blocks synced (%d)", syncStatus.BlockNumber, numReorgedBlocks) + } + + deleteFromInclusive := syncStatus.BlockNumber - int64(numReorgedBlocks) + 1 + + err = queries.DeleteProviderRegistryEventsFromBlockNumber(ctx, deleteFromInclusive) + if err != nil { + return errors.Wrap(err, "failed to delete provider registered events from db") + } + // Currently, we don't have enough information in the db to populate block hash. + // However, using default values here is fine since the syncer is expected to resync + // immediately after this function call which will set the correct values. When we do proper + // reorg handling, we should store the full block data of the previous blocks so that we can + // avoid this. + + newSyncedUntilBlockNumber := deleteFromInclusive - 1 + + err = queries.SetProviderRegistryEventsSyncedUntil(ctx, database.SetProviderRegistryEventsSyncedUntilParams{ + BlockHash: []byte{}, + BlockNumber: newSyncedUntilBlockNumber, + }) + if err != nil { + return errors.Wrap(err, "failed to reset provider registered event sync status in db") + } + log.Info(). + Int("depth", numReorgedBlocks). + Int64("previous-synced-until", syncStatus.BlockNumber). + Int64("new-synced-until", newSyncedUntilBlockNumber). + Msg("sync status reset due to reorg") + return nil + }) +} + +func (s *ProviderRegistrySyncer) handlePotentialReorg(ctx context.Context, header *types.Header) error { + queries := database.New(s.DBPool) + syncedUntil, err := queries.GetProviderRegistryEventsSyncedUntil(ctx) + if err == pgx.ErrNoRows { + return nil + } + if err != nil { + return errors.Wrap(err, "failed to query registration events sync status") + } + + numReorgedBlocks := getNumReorgedBlocks(&syncedUntil, header) + if numReorgedBlocks > 0 { + return s.resetSyncStatus(ctx, numReorgedBlocks) + } + return nil +} + +// Sync fetches IdentityRegistered events from the registry contract and inserts them into the +// database. It starts at the end point of the previous call to sync (or 0 if it is the first call) +// and ends at the given block number. +func (s *ProviderRegistrySyncer) Sync(ctx context.Context, header *types.Header) error { + if err := s.handlePotentialReorg(ctx, header); err != nil { + return err + } + + queries := database.New(s.DBPool) + syncedUntil, err := queries.GetProviderRegistryEventsSyncedUntil(ctx) + if err != nil && err != pgx.ErrNoRows { + return errors.Wrap(err, "failed to query provider registered events sync status") + } + var start uint64 + if err == pgx.ErrNoRows { + start = s.SyncStartBlockNumber + } else { + start = uint64(syncedUntil.BlockNumber + 1) + } + endBlock := header.Number.Uint64() + log.Debug(). + Uint64("start-block", start). + Uint64("end-block", endBlock). + Msg("syncing registry contract") + syncRanges := medley.GetSyncRanges(start, endBlock, maxRequestBlockRange) + for _, r := range syncRanges { + err = s.syncRange(ctx, r[0], r[1]) + if err != nil { + return err + } + } + return nil +} + +func (s *ProviderRegistrySyncer) syncRange( + ctx context.Context, + start, + end uint64, +) error { + events, err := s.fetchEvents(ctx, start, end) + if err != nil { + return err + } + filteredEvents, blsKeys := s.filterEvents(ctx, events) + + header, err := s.ExecutionClient.HeaderByNumber(ctx, new(big.Int).SetUint64(end)) + if err != nil { + return errors.Wrap(err, "failed to get execution block header by number") + } + err = s.DBPool.BeginFunc(ctx, func(tx pgx.Tx) error { + err = s.insertProviderRegistryEvents(ctx, tx, filteredEvents, blsKeys) + if err != nil { + return err + } + return database.New(tx).SetProviderRegistryEventsSyncedUntil(ctx, database.SetProviderRegistryEventsSyncedUntilParams{ + BlockNumber: int64(end), + BlockHash: header.Hash().Bytes(), + }) + }) + if err != nil { + log.Warn().AnErr("error adding provider registered event into db", err) + } + log.Info(). + Uint64("start-block", start). + Uint64("end-block", end). + Int("num-inserted-events", len(filteredEvents)). + Int("num-discarded-events", len(events)-len(filteredEvents)). + Msg("synced provider registry contract") + + return nil +} + +func (s *ProviderRegistrySyncer) fetchEvents( + ctx context.Context, + start, + end uint64, +) ([]*providerregistry.ProviderregistryProviderRegistered, error) { + opts := bind.FilterOpts{ + Start: start, + End: &end, + Context: ctx, + } + + // TODO: need to test if this fetches all provider registered events regardless of the provider address + it, err := s.Contract.ProviderregistryFilterer.FilterProviderRegistered(&opts, nil) + if err != nil { + return nil, errors.Wrap(err, "failed to query provider registered events") + } + events := []*providerregistry.ProviderregistryProviderRegistered{} + for it.Next() { + events = append(events, it.Event) + } + if it.Error() != nil { + return nil, errors.Wrap(it.Error(), "failed to iterate provider registered events") + } + return events, nil +} + +func (s *ProviderRegistrySyncer) filterEvents( + ctx context.Context, + events []*providerregistry.ProviderregistryProviderRegistered, +) ([]*providerregistry.ProviderregistryProviderRegistered, [][][]byte) { + filteredEvents := []*providerregistry.ProviderregistryProviderRegistered{} + blsKeys := [][][]byte{} + for _, event := range events { + err := s.Contract.IsProviderValid(&bind.CallOpts{Context: ctx, BlockNumber: big.NewInt(int64(event.Raw.BlockNumber))}, event.Provider) + if err != nil { + log.Warn(). + Uint64("block-number", event.Raw.BlockNumber). + Str("block-hash", event.Raw.BlockHash.Hex()). + Uint("tx-index", event.Raw.TxIndex). + Uint("log-index", event.Raw.Index). + Str("provider", event.Provider.Hex()). + Msg("ignoring provider registered event with invalid provider") + continue + } + + blsKey, err := s.Contract.GetBLSKeys(&bind.CallOpts{Context: ctx, BlockNumber: big.NewInt(int64(event.Raw.BlockNumber))}, event.Provider) + if err != nil { + log.Warn(). + Uint64("block-number", event.Raw.BlockNumber). + Str("block-hash", event.Raw.BlockHash.Hex()). + Uint("tx-index", event.Raw.TxIndex). + Uint("log-index", event.Raw.Index). + Str("provider", event.Provider.Hex()). + Msg("ignoring provider registered event with invalid provider") + continue + } + + filteredEvents = append(filteredEvents, event) + blsKeys = append(blsKeys, blsKey) + } + return filteredEvents, blsKeys +} + +// insertProviderRegistryEvents inserts the given events into the database. +func (s *ProviderRegistrySyncer) insertProviderRegistryEvents( + ctx context.Context, + tx pgx.Tx, + events []*providerregistry.ProviderregistryProviderRegistered, + blsKeys [][][]byte, +) error { + queries := database.New(tx) + for i, event := range events { + _, err := queries.InsertProviderRegistryEvent(ctx, database.InsertProviderRegistryEventParams{ + BlockNumber: int64(event.Raw.BlockNumber), + BlockHash: event.Raw.BlockHash.Bytes(), + TxIndex: int64(event.Raw.TxIndex), + LogIndex: int64(event.Raw.Index), + ProviderAddress: event.Provider.Hex(), + BlsKeys: blsKeys[i], + }) + if err != nil { + return errors.Wrap(err, "failed to insert provider registered event into db") + } + log.Debug(). + Uint64("block", event.Raw.BlockNumber). + Str("provider", event.Provider.Hex()). + Msg("synced new provider registered event") + } + return nil +} From 535106e7b912213bb22ae1b44960f518747a97e2 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Thu, 28 Aug 2025 14:22:23 +0530 Subject: [PATCH 04/28] fix: sql definition issue --- rolling-shutter/docs/rolling-shutter.md | 1 + .../docs/rolling-shutter_primevkeyper.md | 35 +++++++++++++++++++ ...olling-shutter_primevkeyper_dump-config.md | 29 +++++++++++++++ ...ng-shutter_primevkeyper_generate-config.md | 29 +++++++++++++++ .../rolling-shutter_primevkeyper_initdb.md | 27 ++++++++++++++ .../database/{database.go => definition.go} | 2 +- 6 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 rolling-shutter/docs/rolling-shutter_primevkeyper.md create mode 100644 rolling-shutter/docs/rolling-shutter_primevkeyper_dump-config.md create mode 100644 rolling-shutter/docs/rolling-shutter_primevkeyper_generate-config.md create mode 100644 rolling-shutter/docs/rolling-shutter_primevkeyper_initdb.md rename rolling-shutter/keyperimpl/primev/database/{database.go => definition.go} (94%) diff --git a/rolling-shutter/docs/rolling-shutter.md b/rolling-shutter/docs/rolling-shutter.md index 4f7fd30f6..1f1a4d858 100644 --- a/rolling-shutter/docs/rolling-shutter.md +++ b/rolling-shutter/docs/rolling-shutter.md @@ -21,6 +21,7 @@ A collection of commands to run and interact with Rolling Shutter nodes * [rolling-shutter op-bootstrap](rolling-shutter_op-bootstrap.md) - Bootstrap validator utility functions for a shuttermint chain * [rolling-shutter op-keyper](rolling-shutter_op-keyper.md) - Run a Shutter optimism keyper node * [rolling-shutter p2pnode](rolling-shutter_p2pnode.md) - Run a Shutter p2p bootstrap node +* [rolling-shutter primevkeyper](rolling-shutter_primevkeyper.md) - Run a Shutter keyper for PrimeV POC * [rolling-shutter shutterservicekeyper](rolling-shutter_shutterservicekeyper.md) - Run a Shutter keyper for Shutter Service * [rolling-shutter snapshot](rolling-shutter_snapshot.md) - Run the Snapshot Hub communication module * [rolling-shutter snapshotkeyper](rolling-shutter_snapshotkeyper.md) - Run a Shutter snapshotkeyper node diff --git a/rolling-shutter/docs/rolling-shutter_primevkeyper.md b/rolling-shutter/docs/rolling-shutter_primevkeyper.md new file mode 100644 index 000000000..ab30b4ded --- /dev/null +++ b/rolling-shutter/docs/rolling-shutter_primevkeyper.md @@ -0,0 +1,35 @@ +## rolling-shutter primevkeyper + +Run a Shutter keyper for PrimeV POC + +### Synopsis + +This command runs a keyper node. It will connect to both a PrimeV and a +Shuttermint node which have to be started separately in advance. + +``` +rolling-shutter primevkeyper [flags] +``` + +### Options + +``` + --config string config file + -h, --help help for primevkeyper +``` + +### Options inherited from parent commands + +``` + --logformat string set log format, possible values: min, short, long, max (default "long") + --loglevel string set log level, possible values: warn, info, debug (default "info") + --no-color do not write colored logs +``` + +### SEE ALSO + +* [rolling-shutter](rolling-shutter.md) - A collection of commands to run and interact with Rolling Shutter nodes +* [rolling-shutter primevkeyper dump-config](rolling-shutter_primevkeyper_dump-config.md) - Dump a 'primevkeyper' configuration file, based on given config and env vars +* [rolling-shutter primevkeyper generate-config](rolling-shutter_primevkeyper_generate-config.md) - Generate a 'primevkeyper' configuration file +* [rolling-shutter primevkeyper initdb](rolling-shutter_primevkeyper_initdb.md) - Initialize the database of the 'primevkeyper' + diff --git a/rolling-shutter/docs/rolling-shutter_primevkeyper_dump-config.md b/rolling-shutter/docs/rolling-shutter_primevkeyper_dump-config.md new file mode 100644 index 000000000..b9253f446 --- /dev/null +++ b/rolling-shutter/docs/rolling-shutter_primevkeyper_dump-config.md @@ -0,0 +1,29 @@ +## rolling-shutter primevkeyper dump-config + +Dump a 'primevkeyper' configuration file, based on given config and env vars + +``` +rolling-shutter primevkeyper dump-config [flags] +``` + +### Options + +``` + --config string config file + -f, --force overwrite existing file + -h, --help help for dump-config + --output string output file +``` + +### Options inherited from parent commands + +``` + --logformat string set log format, possible values: min, short, long, max (default "long") + --loglevel string set log level, possible values: warn, info, debug (default "info") + --no-color do not write colored logs +``` + +### SEE ALSO + +* [rolling-shutter primevkeyper](rolling-shutter_primevkeyper.md) - Run a Shutter keyper for PrimeV POC + diff --git a/rolling-shutter/docs/rolling-shutter_primevkeyper_generate-config.md b/rolling-shutter/docs/rolling-shutter_primevkeyper_generate-config.md new file mode 100644 index 000000000..f52b9a1b1 --- /dev/null +++ b/rolling-shutter/docs/rolling-shutter_primevkeyper_generate-config.md @@ -0,0 +1,29 @@ +## rolling-shutter primevkeyper generate-config + +Generate a 'primevkeyper' configuration file + +``` +rolling-shutter primevkeyper generate-config [flags] +``` + +### Options + +``` + -f, --force overwrite existing file + -h, --help help for generate-config + --output string output file +``` + +### Options inherited from parent commands + +``` + --config string config file + --logformat string set log format, possible values: min, short, long, max (default "long") + --loglevel string set log level, possible values: warn, info, debug (default "info") + --no-color do not write colored logs +``` + +### SEE ALSO + +* [rolling-shutter primevkeyper](rolling-shutter_primevkeyper.md) - Run a Shutter keyper for PrimeV POC + diff --git a/rolling-shutter/docs/rolling-shutter_primevkeyper_initdb.md b/rolling-shutter/docs/rolling-shutter_primevkeyper_initdb.md new file mode 100644 index 000000000..50907a265 --- /dev/null +++ b/rolling-shutter/docs/rolling-shutter_primevkeyper_initdb.md @@ -0,0 +1,27 @@ +## rolling-shutter primevkeyper initdb + +Initialize the database of the 'primevkeyper' + +``` +rolling-shutter primevkeyper initdb [flags] +``` + +### Options + +``` + -h, --help help for initdb +``` + +### Options inherited from parent commands + +``` + --config string config file + --logformat string set log format, possible values: min, short, long, max (default "long") + --loglevel string set log level, possible values: warn, info, debug (default "info") + --no-color do not write colored logs +``` + +### SEE ALSO + +* [rolling-shutter primevkeyper](rolling-shutter_primevkeyper.md) - Run a Shutter keyper for PrimeV POC + diff --git a/rolling-shutter/keyperimpl/primev/database/database.go b/rolling-shutter/keyperimpl/primev/database/definition.go similarity index 94% rename from rolling-shutter/keyperimpl/primev/database/database.go rename to rolling-shutter/keyperimpl/primev/database/definition.go index 2f93a7b07..77c0eafa5 100644 --- a/rolling-shutter/keyperimpl/primev/database/database.go +++ b/rolling-shutter/keyperimpl/primev/database/definition.go @@ -11,7 +11,7 @@ import ( //go:generate sqlc generate --file sql/sqlc.yaml -// TODO: add the sql files here +//go:embed sql var files embed.FS var Definition db.Definition From ccae033d54b0352b6a98381ef26f498d4488406e Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Tue, 2 Sep 2025 14:51:09 +0530 Subject: [PATCH 05/28] update commitment message to include identities --- rolling-shutter/keyperimpl/primev/handler.go | 29 ++++++++++++++------ rolling-shutter/p2pmsg/gossip.pb.go | 14 ++++++++-- rolling-shutter/p2pmsg/gossip.proto | 1 + 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index e00f71bee..0cae9917e 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -7,6 +7,7 @@ import ( pubsub "github.com/libp2p/go-libp2p-pubsub" "github.com/pkg/errors" + corekeyperdatabase "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/database" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/database" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/broker" @@ -26,6 +27,9 @@ func (h *PrimevCommitmentHandler) MessagePrototypes() []p2pmsg.Message { func (h *PrimevCommitmentHandler) ValidateMessage(ctx context.Context, msg p2pmsg.Message) (pubsub.ValidationResult, error) { commitment := msg.(*p2pmsg.Commitment) + if len(commitment.Identities) != len(commitment.TxHashes) { + return pubsub.ValidationReject, errors.Errorf("number of identities (%d) does not match number of tx hashes (%d)", len(commitment.Identities), len(commitment.TxHashes)) + } if commitment.GetInstanceId() != h.config.InstanceID { return pubsub.ValidationReject, errors.Errorf("instance ID mismatch (want=%d, have=%d)", h.config.InstanceID, commitment.GetInstanceId()) } @@ -36,10 +40,9 @@ func (h *PrimevCommitmentHandler) ValidateMessage(ctx context.Context, msg p2pms func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg.Message) ([]p2pmsg.Message, error) { commitment := msg.(*p2pmsg.Commitment) - // TODO: need to validate on identity preimage - identityPreimages := make([]identitypreimage.IdentityPreimage, 0, len(commitment.TxHashes)) - for _, txHash := range commitment.TxHashes { - identityPreimage, err := identitypreimage.HexToIdentityPreimage(txHash) + identityPreimages := make([]identitypreimage.IdentityPreimage, 0, len(commitment.Identities)) + for _, identity := range commitment.Identities { + identityPreimage, err := identitypreimage.HexToIdentityPreimage(identity) if err != nil { return nil, err } @@ -51,15 +54,21 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. IdentityPreimages: identityPreimages, } - blockNumbers := make([]int64, 0, len(commitment.TxHashes)) - eons := make([]int64, 0, len(commitment.TxHashes)) - for range commitment.TxHashes { + blockNumbers := make([]int64, 0, len(commitment.Identities)) + eons := make([]int64, 0, len(commitment.Identities)) + + obsKeyperDB := corekeyperdatabase.New(h.dbpool) + eon, err := obsKeyperDB.GetEonForBlockNumber(ctx, int64(commitment.BlockNumber)) + if err != nil { + return nil, err + } + for range commitment.Identities { blockNumbers = append(blockNumbers, int64(commitment.BlockNumber)) - eons = append(eons, int64(1)) // TODO: need to get eon from the commitment + eons = append(eons, eon.Eon) } db := database.New(h.dbpool) - err := db.InsertMultipleTransactionsAndUpsertCommitment(ctx, database.InsertMultipleTransactionsAndUpsertCommitmentParams{ + err = db.InsertMultipleTransactionsAndUpsertCommitment(ctx, database.InsertMultipleTransactionsAndUpsertCommitmentParams{ Column1: eons, Column2: commitment.TxHashes, // right now identityPreimage is txHash Column3: blockNumbers, @@ -73,6 +82,8 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. return nil, err } + //TODO: before sending the dec trigger, we need to check if majority of providers have generated commitments + h.decryptionTriggerChannel <- broker.NewEvent(decryptionTrigger) return nil, nil diff --git a/rolling-shutter/p2pmsg/gossip.pb.go b/rolling-shutter/p2pmsg/gossip.pb.go index d7fa7ab9e..d5297c9ac 100644 --- a/rolling-shutter/p2pmsg/gossip.pb.go +++ b/rolling-shutter/p2pmsg/gossip.pb.go @@ -982,6 +982,7 @@ type Commitment struct { DispatchTimestamp int64 `protobuf:"varint,12,opt,name=dispatch_timestamp,json=dispatchTimestamp,proto3" json:"dispatch_timestamp,omitempty"` RevertingTxHashes []string `protobuf:"bytes,13,rep,name=reverting_tx_hashes,json=revertingTxHashes,proto3" json:"reverting_tx_hashes,omitempty"` SlashAmount string `protobuf:"bytes,14,opt,name=slash_amount,json=slashAmount,proto3" json:"slash_amount,omitempty"` + Identities []string `protobuf:"bytes,15,rep,name=identities,proto3" json:"identities,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1114,6 +1115,13 @@ func (x *Commitment) GetSlashAmount() string { return "" } +func (x *Commitment) GetIdentities() []string { + if x != nil { + return x.Identities + } + return nil +} + var File_gossip_proto protoreflect.FileDescriptor var file_gossip_proto_rawDesc = string([]byte{ @@ -1248,7 +1256,7 @@ var file_gossip_proto_rawDesc = string([]byte{ 0x12, 0x2f, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x32, 0x70, 0x6d, 0x73, 0x67, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x22, 0xe3, 0x04, 0x0a, 0x0a, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x22, 0x83, 0x05, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, @@ -1287,7 +1295,9 @@ var file_gossip_proto_rawDesc = string([]byte{ 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x3b, 0x70, 0x32, 0x70, 0x6d, 0x73, 0x67, 0x62, 0x06, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x3b, 0x70, 0x32, 0x70, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) diff --git a/rolling-shutter/p2pmsg/gossip.proto b/rolling-shutter/p2pmsg/gossip.proto index 0aacfc803..5fc7d61ea 100644 --- a/rolling-shutter/p2pmsg/gossip.proto +++ b/rolling-shutter/p2pmsg/gossip.proto @@ -114,4 +114,5 @@ message Commitment { int64 dispatch_timestamp = 12; repeated string reverting_tx_hashes = 13; string slash_amount = 14; + repeated string identities = 15; }; \ No newline at end of file From f16acd2fbf8c041ee5ea279ceb54ac6b0b4003a9 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Tue, 2 Sep 2025 15:05:32 +0530 Subject: [PATCH 06/28] update config to include primev chain config and update providerSyncer to use this config --- rolling-shutter/keyperimpl/primev/config.go | 72 ++++++++++++++----- rolling-shutter/keyperimpl/primev/keyper.go | 6 +- rolling-shutter/keyperimpl/primev/newblock.go | 7 +- 3 files changed, 64 insertions(+), 21 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/config.go b/rolling-shutter/keyperimpl/primev/config.go index fa520f94c..288f37be4 100644 --- a/rolling-shutter/keyperimpl/primev/config.go +++ b/rolling-shutter/keyperimpl/primev/config.go @@ -19,6 +19,8 @@ type Config struct { HTTPReadOnly bool HTTPListenAddress string + Primev *PrimevConfig + Chain *ChainConfig P2P *p2p.Config Shuttermint *kprconfig.ShuttermintConfig @@ -35,6 +37,7 @@ func NewConfig() *Config { func (c *Config) Init() { c.P2P = p2p.NewConfig() + c.Primev = NewPrimevConfig() c.Shuttermint = kprconfig.NewShuttermintConfig() c.Chain = NewChainConfig() c.Metrics = metricsserver.NewConfig() @@ -75,19 +78,59 @@ func (c *Config) GetAddress() common.Address { return c.Chain.Node.PrivateKey.EthereumAddress() } +type PrimevConfig struct { + SyncStartBlockNumber uint64 `shconfig:",required"` + SyncMonitorCheckInterval uint64 `shconfig:",required"` + PrimevRPC string `shconfig:",required"` + ProviderRegistryContract common.Address `shconfig:",required"` +} + +func NewPrimevConfig() *PrimevConfig { + c := &PrimevConfig{} + c.Init() + return c +} + +func (c *PrimevConfig) Init() { + c.SyncStartBlockNumber = 0 + c.SyncMonitorCheckInterval = 30 + c.PrimevRPC = "" + c.ProviderRegistryContract = common.Address{} +} + +func (c *PrimevConfig) Name() string { + return "primev" +} + +func (c *PrimevConfig) Validate() error { + return nil +} + +func (c *PrimevConfig) SetDefaultValues() error { + c.SyncMonitorCheckInterval = 30 + c.PrimevRPC = "" + c.ProviderRegistryContract = common.Address{} + c.SyncStartBlockNumber = 0 + return nil +} + +func (c *PrimevConfig) SetExampleValues() error { + c.SyncMonitorCheckInterval = 30 + c.PrimevRPC = "" + c.ProviderRegistryContract = common.Address{} + c.SyncStartBlockNumber = 0 + return nil +} + type ChainConfig struct { - Node *configuration.EthnodeConfig `shconfig:",required"` - Contracts *ContractsConfig `shconfig:",required"` - SyncStartBlockNumber uint64 `shconfig:",required"` - SyncMonitorCheckInterval uint64 `shconfig:",required"` + Node *configuration.EthnodeConfig `shconfig:",required"` + Contracts *ContractsConfig `shconfig:",required"` } func NewChainConfig() *ChainConfig { c := &ChainConfig{ - Node: configuration.NewEthnodeConfig(), - Contracts: NewContractsConfig(), - SyncStartBlockNumber: 0, - SyncMonitorCheckInterval: 0, + Node: configuration.NewEthnodeConfig(), + Contracts: NewContractsConfig(), } c.Init() return c @@ -107,13 +150,10 @@ func (c *ChainConfig) Validate() error { } func (c *ChainConfig) SetDefaultValues() error { - c.SyncStartBlockNumber = 0 - c.SyncMonitorCheckInterval = 30 return c.Contracts.SetDefaultValues() } func (c *ChainConfig) SetExampleValues() error { - c.SyncMonitorCheckInterval = 30 return nil } @@ -122,16 +162,14 @@ func (c *ChainConfig) TOMLWriteHeader(_ io.Writer) (int, error) { } type ContractsConfig struct { - KeyperSetManager common.Address `shconfig:",required"` - KeyBroadcastContract common.Address `shconfig:",required"` - ProviderRegistryContract common.Address `shconfig:",required"` + KeyperSetManager common.Address `shconfig:",required"` + KeyBroadcastContract common.Address `shconfig:",required"` } func NewContractsConfig() *ContractsConfig { return &ContractsConfig{ - KeyperSetManager: common.Address{}, - KeyBroadcastContract: common.Address{}, - ProviderRegistryContract: common.Address{}, + KeyperSetManager: common.Address{}, + KeyBroadcastContract: common.Address{}, } } diff --git a/rolling-shutter/keyperimpl/primev/keyper.go b/rolling-shutter/keyperimpl/primev/keyper.go index 970e400a5..4a1476d6f 100644 --- a/rolling-shutter/keyperimpl/primev/keyper.go +++ b/rolling-shutter/keyperimpl/primev/keyper.go @@ -137,7 +137,7 @@ func NewKeyper(kpr *Keyper) (*keyper.KeyperCore, error) { // initRegistrySyncer initializes the registry syncer. func (kpr *Keyper) initRegistrySyncer(ctx context.Context) error { - client, err := ethclient.DialContext(ctx, kpr.config.Chain.Node.EthereumURL) + client, err := ethclient.DialContext(ctx, kpr.config.Primev.PrimevRPC) if err != nil { return errors.Wrap(err, "failed to dial Ethereum execution node") } @@ -146,7 +146,7 @@ func (kpr *Keyper) initRegistrySyncer(ctx context.Context) error { Str("contract-address", kpr.config.Chain.Contracts.KeyperSetManager.Hex()). Msg("initializing registry syncer") - contract, err := providerregistry.NewProviderregistry(kpr.config.Chain.Contracts.ProviderRegistryContract, client) + contract, err := providerregistry.NewProviderregistry(kpr.config.Primev.ProviderRegistryContract, client) if err != nil { return err } @@ -155,7 +155,7 @@ func (kpr *Keyper) initRegistrySyncer(ctx context.Context) error { Contract: contract, DBPool: kpr.dbpool, ExecutionClient: client, - SyncStartBlockNumber: kpr.config.Chain.SyncStartBlockNumber, + SyncStartBlockNumber: kpr.config.Primev.SyncStartBlockNumber, } // Perform an initial sync now because it might take some time and doing so during regular diff --git a/rolling-shutter/keyperimpl/primev/newblock.go b/rolling-shutter/keyperimpl/primev/newblock.go index fd6e0db3c..0dd7e009d 100644 --- a/rolling-shutter/keyperimpl/primev/newblock.go +++ b/rolling-shutter/keyperimpl/primev/newblock.go @@ -6,7 +6,12 @@ import ( syncevent "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync/event" ) +// TODO: the syncing logic for provider registry to be stripped out of here, as it uses different chain. Adding it here, just for convinience of development of POC. func (k *Keyper) processNewBlock(ctx context.Context, ev *syncevent.LatestBlock) error { - // TODO: need to fetch new provider registrations + if k.providerRegistrySyncer != nil { + if err := k.providerRegistrySyncer.Sync(ctx, ev.Header); err != nil { + return err + } + } return nil } From e099c72285b4fa97fb7832036470cfe92f913221 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Tue, 2 Sep 2025 16:16:24 +0530 Subject: [PATCH 07/28] fix: CI to build docker image --- rolling-shutter/cmd/primevkeyper/keyper.go | 3 ++- rolling-shutter/keyperimpl/primev/handler.go | 24 ++++++++++++------- rolling-shutter/keyperimpl/primev/keyper.go | 16 ++++++------- rolling-shutter/keyperimpl/primev/newblock.go | 4 +++- .../keyperimpl/primev/newkeyperset.go | 5 ++++ .../primev/providerregistrysyncer.go | 12 +++++----- rolling-shutter/p2pmsg/gossip.pb.go | 7 +++--- 7 files changed, 43 insertions(+), 28 deletions(-) diff --git a/rolling-shutter/cmd/primevkeyper/keyper.go b/rolling-shutter/cmd/primevkeyper/keyper.go index 8be3efe45..eea90084d 100644 --- a/rolling-shutter/cmd/primevkeyper/keyper.go +++ b/rolling-shutter/cmd/primevkeyper/keyper.go @@ -6,13 +6,14 @@ import ( "github.com/jackc/pgx/v4/pgxpool" "github.com/pkg/errors" "github.com/rs/zerolog/log" + "github.com/spf13/cobra" + "github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/shversion" keyper "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/database" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/configuration/command" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service" - "github.com/spf13/cobra" ) func Cmd() *cobra.Command { diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index 0cae9917e..4bf98e981 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -10,6 +10,7 @@ import ( corekeyperdatabase "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/database" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/database" + "github.com/shutter-network/rolling-shutter/rolling-shutter/medley" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/broker" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/identitypreimage" "github.com/shutter-network/rolling-shutter/rolling-shutter/p2pmsg" @@ -25,13 +26,15 @@ func (h *PrimevCommitmentHandler) MessagePrototypes() []p2pmsg.Message { return []p2pmsg.Message{&p2pmsg.Commitment{}} } -func (h *PrimevCommitmentHandler) ValidateMessage(ctx context.Context, msg p2pmsg.Message) (pubsub.ValidationResult, error) { +func (h *PrimevCommitmentHandler) ValidateMessage(_ context.Context, msg p2pmsg.Message) (pubsub.ValidationResult, error) { commitment := msg.(*p2pmsg.Commitment) if len(commitment.Identities) != len(commitment.TxHashes) { - return pubsub.ValidationReject, errors.Errorf("number of identities (%d) does not match number of tx hashes (%d)", len(commitment.Identities), len(commitment.TxHashes)) + return pubsub.ValidationReject, errors.Errorf("number of identities (%d) does not match number of tx hashes (%d)", + len(commitment.Identities), len(commitment.TxHashes)) } if commitment.GetInstanceId() != h.config.InstanceID { - return pubsub.ValidationReject, errors.Errorf("instance ID mismatch (want=%d, have=%d)", h.config.InstanceID, commitment.GetInstanceId()) + return pubsub.ValidationReject, errors.Errorf("instance ID mismatch (want=%d, have=%d)", + h.config.InstanceID, commitment.GetInstanceId()) } return pubsub.ValidationAccept, nil // TODO: more validations need to be done here @@ -49,8 +52,13 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. identityPreimages = append(identityPreimages, identityPreimage) } + blockNumberUint64, err := medley.Int64ToUint64Safe(commitment.BlockNumber) + if err != nil { + return nil, err + } + decryptionTrigger := &epochkghandler.DecryptionTrigger{ - BlockNumber: uint64(commitment.BlockNumber), + BlockNumber: blockNumberUint64, IdentityPreimages: identityPreimages, } @@ -58,12 +66,12 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. eons := make([]int64, 0, len(commitment.Identities)) obsKeyperDB := corekeyperdatabase.New(h.dbpool) - eon, err := obsKeyperDB.GetEonForBlockNumber(ctx, int64(commitment.BlockNumber)) + eon, err := obsKeyperDB.GetEonForBlockNumber(ctx, commitment.BlockNumber) if err != nil { return nil, err } for range commitment.Identities { - blockNumbers = append(blockNumbers, int64(commitment.BlockNumber)) + blockNumbers = append(blockNumbers, commitment.BlockNumber) eons = append(eons, eon.Eon) } @@ -76,13 +84,13 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. ProviderAddress: commitment.ProviderAddress, CommitmentSignature: commitment.CommitmentSignature, CommitmentDigest: commitment.CommitmentDigest, - BlockNumber: int64(commitment.BlockNumber), + BlockNumber: commitment.BlockNumber, }) if err != nil { return nil, err } - //TODO: before sending the dec trigger, we need to check if majority of providers have generated commitments + // TODO: before sending the dec trigger, we need to check if majority of providers have generated commitments h.decryptionTriggerChannel <- broker.NewEvent(decryptionTrigger) diff --git a/rolling-shutter/keyperimpl/primev/keyper.go b/rolling-shutter/keyperimpl/primev/keyper.go index 4a1476d6f..154f443de 100644 --- a/rolling-shutter/keyperimpl/primev/keyper.go +++ b/rolling-shutter/keyperimpl/primev/keyper.go @@ -136,26 +136,26 @@ func NewKeyper(kpr *Keyper) (*keyper.KeyperCore, error) { } // initRegistrySyncer initializes the registry syncer. -func (kpr *Keyper) initRegistrySyncer(ctx context.Context) error { - client, err := ethclient.DialContext(ctx, kpr.config.Primev.PrimevRPC) +func (k *Keyper) initRegistrySyncer(ctx context.Context) error { + client, err := ethclient.DialContext(ctx, k.config.Primev.PrimevRPC) if err != nil { return errors.Wrap(err, "failed to dial Ethereum execution node") } log.Info(). - Str("contract-address", kpr.config.Chain.Contracts.KeyperSetManager.Hex()). + Str("contract-address", k.config.Chain.Contracts.KeyperSetManager.Hex()). Msg("initializing registry syncer") - contract, err := providerregistry.NewProviderregistry(kpr.config.Primev.ProviderRegistryContract, client) + contract, err := providerregistry.NewProviderregistry(k.config.Primev.ProviderRegistryContract, client) if err != nil { return err } - kpr.providerRegistrySyncer = &ProviderRegistrySyncer{ + k.providerRegistrySyncer = &ProviderRegistrySyncer{ Contract: contract, - DBPool: kpr.dbpool, + DBPool: k.dbpool, ExecutionClient: client, - SyncStartBlockNumber: kpr.config.Primev.SyncStartBlockNumber, + SyncStartBlockNumber: k.config.Primev.SyncStartBlockNumber, } // Perform an initial sync now because it might take some time and doing so during regular @@ -164,7 +164,7 @@ func (kpr *Keyper) initRegistrySyncer(ctx context.Context) error { if err != nil { return errors.Wrap(err, "failed to get latest block header") } - err = kpr.providerRegistrySyncer.Sync(ctx, latestHeader) + err = k.providerRegistrySyncer.Sync(ctx, latestHeader) if err != nil { return err } diff --git a/rolling-shutter/keyperimpl/primev/newblock.go b/rolling-shutter/keyperimpl/primev/newblock.go index 0dd7e009d..2aa1034ec 100644 --- a/rolling-shutter/keyperimpl/primev/newblock.go +++ b/rolling-shutter/keyperimpl/primev/newblock.go @@ -6,7 +6,9 @@ import ( syncevent "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync/event" ) -// TODO: the syncing logic for provider registry to be stripped out of here, as it uses different chain. Adding it here, just for convinience of development of POC. +// TODO: the syncing logic for provider registry to be stripped out of here. +// +// As it uses different chain. Adding it here, just for convenience of development of POC. func (k *Keyper) processNewBlock(ctx context.Context, ev *syncevent.LatestBlock) error { if k.providerRegistrySyncer != nil { if err := k.providerRegistrySyncer.Sync(ctx, ev.Header); err != nil { diff --git a/rolling-shutter/keyperimpl/primev/newkeyperset.go b/rolling-shutter/keyperimpl/primev/newkeyperset.go index d3c510697..fcc588185 100644 --- a/rolling-shutter/keyperimpl/primev/newkeyperset.go +++ b/rolling-shutter/keyperimpl/primev/newkeyperset.go @@ -2,6 +2,7 @@ package primev import ( "context" + "math" "github.com/jackc/pgx/v4" "github.com/pkg/errors" @@ -46,6 +47,10 @@ func (k *Keyper) processNewKeyperSet(ctx context.Context, ev *syncevent.KeyperSe return errors.Wrap(err, ErrParseKeyperSet.Error()) } + if threshold > math.MaxInt32 { + return errors.Errorf("threshold %d overflows int32", threshold) + } + return obskeyperdb.InsertKeyperSet(ctx, obskeyper.InsertKeyperSetParams{ KeyperConfigIndex: keyperConfigIndex, ActivationBlockNumber: activationBlockNumber, diff --git a/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go b/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go index c7bee10e4..99d4c74f2 100644 --- a/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go +++ b/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go @@ -128,7 +128,7 @@ func (s *ProviderRegistrySyncer) Sync(ctx context.Context, header *types.Header) if err == pgx.ErrNoRows { start = s.SyncStartBlockNumber } else { - start = uint64(syncedUntil.BlockNumber + 1) + start = uint64(syncedUntil.BlockNumber + 1) //nolint:gosec } endBlock := header.Number.Uint64() log.Debug(). @@ -166,7 +166,7 @@ func (s *ProviderRegistrySyncer) syncRange( return err } return database.New(tx).SetProviderRegistryEventsSyncedUntil(ctx, database.SetProviderRegistryEventsSyncedUntilParams{ - BlockNumber: int64(end), + BlockNumber: int64(end), //nolint:gosec BlockHash: header.Hash().Bytes(), }) }) @@ -216,7 +216,7 @@ func (s *ProviderRegistrySyncer) filterEvents( filteredEvents := []*providerregistry.ProviderregistryProviderRegistered{} blsKeys := [][][]byte{} for _, event := range events { - err := s.Contract.IsProviderValid(&bind.CallOpts{Context: ctx, BlockNumber: big.NewInt(int64(event.Raw.BlockNumber))}, event.Provider) + err := s.Contract.IsProviderValid(&bind.CallOpts{Context: ctx, BlockNumber: big.NewInt(int64(event.Raw.BlockNumber))}, event.Provider) //nolint:gosec if err != nil { log.Warn(). Uint64("block-number", event.Raw.BlockNumber). @@ -228,7 +228,7 @@ func (s *ProviderRegistrySyncer) filterEvents( continue } - blsKey, err := s.Contract.GetBLSKeys(&bind.CallOpts{Context: ctx, BlockNumber: big.NewInt(int64(event.Raw.BlockNumber))}, event.Provider) + blsKey, err := s.Contract.GetBLSKeys(&bind.CallOpts{Context: ctx, BlockNumber: big.NewInt(int64(event.Raw.BlockNumber))}, event.Provider) //nolint:gosec if err != nil { log.Warn(). Uint64("block-number", event.Raw.BlockNumber). @@ -258,8 +258,8 @@ func (s *ProviderRegistrySyncer) insertProviderRegistryEvents( _, err := queries.InsertProviderRegistryEvent(ctx, database.InsertProviderRegistryEventParams{ BlockNumber: int64(event.Raw.BlockNumber), BlockHash: event.Raw.BlockHash.Bytes(), - TxIndex: int64(event.Raw.TxIndex), - LogIndex: int64(event.Raw.Index), + TxIndex: int64(event.Raw.TxIndex), //nolint:gosec + LogIndex: int64(event.Raw.Index), //nolint:gosec ProviderAddress: event.Provider.Hex(), BlsKeys: blsKeys[i], }) diff --git a/rolling-shutter/p2pmsg/gossip.pb.go b/rolling-shutter/p2pmsg/gossip.pb.go index d5297c9ac..0fc0f065b 100644 --- a/rolling-shutter/p2pmsg/gossip.pb.go +++ b/rolling-shutter/p2pmsg/gossip.pb.go @@ -7,13 +7,12 @@ package p2pmsg import ( - reflect "reflect" - sync "sync" - unsafe "unsafe" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" anypb "google.golang.org/protobuf/types/known/anypb" + reflect "reflect" + sync "sync" + unsafe "unsafe" ) const ( From 5909157916c62ce388cb6bf108a07ddc3f149a29 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Tue, 2 Sep 2025 16:42:09 +0530 Subject: [PATCH 08/28] fix CI for build --- rolling-shutter/keyperimpl/primev/config.go | 4 ++-- rolling-shutter/keyperimpl/primev/newkeyperset.go | 7 +------ .../keyperimpl/primev/providerregistrysyncer.go | 12 +++++++++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/config.go b/rolling-shutter/keyperimpl/primev/config.go index 288f37be4..73a5810ff 100644 --- a/rolling-shutter/keyperimpl/primev/config.go +++ b/rolling-shutter/keyperimpl/primev/config.go @@ -106,7 +106,7 @@ func (c *PrimevConfig) Validate() error { return nil } -func (c *PrimevConfig) SetDefaultValues() error { +func (c *PrimevConfig) SetDefaultValues() error { //nolint:unparam c.SyncMonitorCheckInterval = 30 c.PrimevRPC = "" c.ProviderRegistryContract = common.Address{} @@ -114,7 +114,7 @@ func (c *PrimevConfig) SetDefaultValues() error { return nil } -func (c *PrimevConfig) SetExampleValues() error { +func (c *PrimevConfig) SetExampleValues() error { //nolint:unparam c.SyncMonitorCheckInterval = 30 c.PrimevRPC = "" c.ProviderRegistryContract = common.Address{} diff --git a/rolling-shutter/keyperimpl/primev/newkeyperset.go b/rolling-shutter/keyperimpl/primev/newkeyperset.go index fcc588185..fbc299173 100644 --- a/rolling-shutter/keyperimpl/primev/newkeyperset.go +++ b/rolling-shutter/keyperimpl/primev/newkeyperset.go @@ -2,7 +2,6 @@ package primev import ( "context" - "math" "github.com/jackc/pgx/v4" "github.com/pkg/errors" @@ -47,15 +46,11 @@ func (k *Keyper) processNewKeyperSet(ctx context.Context, ev *syncevent.KeyperSe return errors.Wrap(err, ErrParseKeyperSet.Error()) } - if threshold > math.MaxInt32 { - return errors.Errorf("threshold %d overflows int32", threshold) - } - return obskeyperdb.InsertKeyperSet(ctx, obskeyper.InsertKeyperSetParams{ KeyperConfigIndex: keyperConfigIndex, ActivationBlockNumber: activationBlockNumber, Keypers: shdb.EncodeAddresses(ev.Members), - Threshold: int32(threshold), + Threshold: int32(threshold), //nolint:gosec }) }) } diff --git a/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go b/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go index 99d4c74f2..41df64df7 100644 --- a/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go +++ b/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go @@ -216,7 +216,10 @@ func (s *ProviderRegistrySyncer) filterEvents( filteredEvents := []*providerregistry.ProviderregistryProviderRegistered{} blsKeys := [][][]byte{} for _, event := range events { - err := s.Contract.IsProviderValid(&bind.CallOpts{Context: ctx, BlockNumber: big.NewInt(int64(event.Raw.BlockNumber))}, event.Provider) //nolint:gosec + err := s.Contract.IsProviderValid(&bind.CallOpts{ + Context: ctx, + BlockNumber: big.NewInt(int64(event.Raw.BlockNumber)), //nolint:gosec + }, event.Provider) if err != nil { log.Warn(). Uint64("block-number", event.Raw.BlockNumber). @@ -228,7 +231,10 @@ func (s *ProviderRegistrySyncer) filterEvents( continue } - blsKey, err := s.Contract.GetBLSKeys(&bind.CallOpts{Context: ctx, BlockNumber: big.NewInt(int64(event.Raw.BlockNumber))}, event.Provider) //nolint:gosec + blsKey, err := s.Contract.GetBLSKeys(&bind.CallOpts{ + Context: ctx, + BlockNumber: big.NewInt(int64(event.Raw.BlockNumber)), //nolint:gosec + }, event.Provider) if err != nil { log.Warn(). Uint64("block-number", event.Raw.BlockNumber). @@ -256,7 +262,7 @@ func (s *ProviderRegistrySyncer) insertProviderRegistryEvents( queries := database.New(tx) for i, event := range events { _, err := queries.InsertProviderRegistryEvent(ctx, database.InsertProviderRegistryEventParams{ - BlockNumber: int64(event.Raw.BlockNumber), + BlockNumber: int64(event.Raw.BlockNumber), //nolint:gosec BlockHash: event.Raw.BlockHash.Bytes(), TxIndex: int64(event.Raw.TxIndex), //nolint:gosec LogIndex: int64(event.Raw.Index), //nolint:gosec From 868cb00315fb11ced08f3c0d077496ea3b080cb2 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Tue, 2 Sep 2025 18:11:43 +0530 Subject: [PATCH 09/28] fix primev keyper database mismatch --- rolling-shutter/keyperimpl/primev/keyper.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rolling-shutter/keyperimpl/primev/keyper.go b/rolling-shutter/keyperimpl/primev/keyper.go index 154f443de..2b6109221 100644 --- a/rolling-shutter/keyperimpl/primev/keyper.go +++ b/rolling-shutter/keyperimpl/primev/keyper.go @@ -14,8 +14,8 @@ import ( "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprconfig" - "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/gnosis/database" providerregistry "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/abi" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/database" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/broker" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync" syncevent "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync/event" From 4b56c49ab43f1665f3be63784db631b563635c83 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Wed, 3 Sep 2025 12:51:31 +0530 Subject: [PATCH 10/28] fix: getting block header for primev chain --- rolling-shutter/keyperimpl/primev/keyper.go | 6 +----- rolling-shutter/keyperimpl/primev/newblock.go | 4 ++-- .../keyperimpl/primev/providerregistrysyncer.go | 7 ++++++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/keyper.go b/rolling-shutter/keyperimpl/primev/keyper.go index 2b6109221..b45b3adfc 100644 --- a/rolling-shutter/keyperimpl/primev/keyper.go +++ b/rolling-shutter/keyperimpl/primev/keyper.go @@ -160,11 +160,7 @@ func (k *Keyper) initRegistrySyncer(ctx context.Context) error { // Perform an initial sync now because it might take some time and doing so during regular // slot processing might hold up things - latestHeader, err := client.HeaderByNumber(ctx, nil) - if err != nil { - return errors.Wrap(err, "failed to get latest block header") - } - err = k.providerRegistrySyncer.Sync(ctx, latestHeader) + err = k.providerRegistrySyncer.Sync(ctx) if err != nil { return err } diff --git a/rolling-shutter/keyperimpl/primev/newblock.go b/rolling-shutter/keyperimpl/primev/newblock.go index 2aa1034ec..54380de4b 100644 --- a/rolling-shutter/keyperimpl/primev/newblock.go +++ b/rolling-shutter/keyperimpl/primev/newblock.go @@ -9,9 +9,9 @@ import ( // TODO: the syncing logic for provider registry to be stripped out of here. // // As it uses different chain. Adding it here, just for convenience of development of POC. -func (k *Keyper) processNewBlock(ctx context.Context, ev *syncevent.LatestBlock) error { +func (k *Keyper) processNewBlock(ctx context.Context, _ *syncevent.LatestBlock) error { if k.providerRegistrySyncer != nil { - if err := k.providerRegistrySyncer.Sync(ctx, ev.Header); err != nil { + if err := k.providerRegistrySyncer.Sync(ctx); err != nil { return err } } diff --git a/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go b/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go index 41df64df7..1303e6c19 100644 --- a/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go +++ b/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go @@ -114,7 +114,12 @@ func (s *ProviderRegistrySyncer) handlePotentialReorg(ctx context.Context, heade // Sync fetches IdentityRegistered events from the registry contract and inserts them into the // database. It starts at the end point of the previous call to sync (or 0 if it is the first call) // and ends at the given block number. -func (s *ProviderRegistrySyncer) Sync(ctx context.Context, header *types.Header) error { +func (s *ProviderRegistrySyncer) Sync(ctx context.Context) error { + header, err := s.ExecutionClient.HeaderByNumber(ctx, nil) + if err != nil { + return errors.Wrap(err, "failed to get latest block number") + } + if err := s.handlePotentialReorg(ctx, header); err != nil { return err } From fc0e18c7d56361cb5693d1eb5aa5a763afe1400a Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Fri, 5 Sep 2025 16:44:52 +0530 Subject: [PATCH 11/28] primev: identity calculation to use bidder node address --- rolling-shutter/keyperimpl/primev/handler.go | 42 +++++++++++++++++--- rolling-shutter/p2pnode/host.go | 1 + 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index 4bf98e981..f72e1b4b8 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -1,8 +1,12 @@ package primev import ( + "bytes" "context" + "encoding/hex" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" "github.com/jackc/pgx/v4/pgxpool" pubsub "github.com/libp2p/go-libp2p-pubsub" "github.com/pkg/errors" @@ -43,13 +47,15 @@ func (h *PrimevCommitmentHandler) ValidateMessage(_ context.Context, msg p2pmsg. func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg.Message) ([]p2pmsg.Message, error) { commitment := msg.(*p2pmsg.Commitment) + bidderNodeAddress, err := getBidderNodeAddress(commitment.ReceivedBidDigest, commitment.ReceivedBidSignature) + if err != nil { + return nil, err + } + identityPreimages := make([]identitypreimage.IdentityPreimage, 0, len(commitment.Identities)) - for _, identity := range commitment.Identities { - identityPreimage, err := identitypreimage.HexToIdentityPreimage(identity) - if err != nil { - return nil, err - } - identityPreimages = append(identityPreimages, identityPreimage) + for _, identityPrefix := range commitment.Identities { + identityPreimage := computeIdentity([]byte(identityPrefix), bidderNodeAddress.Bytes()) + identityPreimages = append(identityPreimages, identitypreimage.IdentityPreimage(identityPreimage)) } blockNumberUint64, err := medley.Int64ToUint64Safe(commitment.BlockNumber) @@ -96,3 +102,27 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. return nil, nil } + +func getBidderNodeAddress(digest, signature string) (*common.Address, error) { + digestBytes, err := hex.DecodeString(digest) + if err != nil { + return nil, err + } + signatureBytes, err := hex.DecodeString(signature) + if err != nil { + return nil, err + } + pubKey, err := crypto.SigToPub(digestBytes, signatureBytes) + if err != nil { + return nil, err + } + bidderNodeAddress := crypto.PubkeyToAddress(*pubKey) + return &bidderNodeAddress, nil +} + +func computeIdentity(identityPrefix, sender []byte) []byte { + var buf bytes.Buffer + buf.Write(identityPrefix) + buf.Write(sender) + return crypto.Keccak256(buf.Bytes()) +} diff --git a/rolling-shutter/p2pnode/host.go b/rolling-shutter/p2pnode/host.go index 68094b51c..6559609b0 100644 --- a/rolling-shutter/p2pnode/host.go +++ b/rolling-shutter/p2pnode/host.go @@ -34,6 +34,7 @@ func (dummyMessageHandler) MessagePrototypes() []p2pmsg.Message { &p2pmsg.DecryptionKeys{}, &p2pmsg.DecryptionTrigger{}, &p2pmsg.EonPublicKey{}, + &p2pmsg.Commitment{}, } } From dfc6fbde2a34830cd6989bde4a1e7fe88e9064a6 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Mon, 8 Sep 2025 19:36:05 +0530 Subject: [PATCH 12/28] add logs for commitment message --- rolling-shutter/keyperimpl/primev/handler.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index f72e1b4b8..8db5fc467 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -10,6 +10,7 @@ import ( "github.com/jackc/pgx/v4/pgxpool" pubsub "github.com/libp2p/go-libp2p-pubsub" "github.com/pkg/errors" + "github.com/rs/zerolog/log" corekeyperdatabase "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/database" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler" @@ -47,8 +48,14 @@ func (h *PrimevCommitmentHandler) ValidateMessage(_ context.Context, msg p2pmsg. func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg.Message) ([]p2pmsg.Message, error) { commitment := msg.(*p2pmsg.Commitment) + hLog := log.With(). + Str("provider_address", commitment.ProviderAddress). + Strs("identities_prefixes", commitment.Identities). + Logger() + bidderNodeAddress, err := getBidderNodeAddress(commitment.ReceivedBidDigest, commitment.ReceivedBidSignature) if err != nil { + hLog.Error().Err(err).Msg("failed to get bidder node address") return nil, err } @@ -60,6 +67,7 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. blockNumberUint64, err := medley.Int64ToUint64Safe(commitment.BlockNumber) if err != nil { + hLog.Error().Err(err).Msg("failed to convert block number to uint64") return nil, err } @@ -74,6 +82,7 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. obsKeyperDB := corekeyperdatabase.New(h.dbpool) eon, err := obsKeyperDB.GetEonForBlockNumber(ctx, commitment.BlockNumber) if err != nil { + hLog.Error().Err(err).Msg("failed to get eon for block number") return nil, err } for range commitment.Identities { @@ -93,6 +102,7 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. BlockNumber: commitment.BlockNumber, }) if err != nil { + hLog.Error().Err(err).Msg("failed to insert multiple transactions and upsert commitment") return nil, err } @@ -100,6 +110,8 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. h.decryptionTriggerChannel <- broker.NewEvent(decryptionTrigger) + hLog.Info().Msg("sent decryption trigger") + return nil, nil } From 71307722383575c50eadd983e7149bb77795cc3b Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Mon, 8 Sep 2025 20:01:47 +0530 Subject: [PATCH 13/28] update message middleware --- rolling-shutter/keyperimpl/primev/keyper.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/keyper.go b/rolling-shutter/keyperimpl/primev/keyper.go index b45b3adfc..8a3742a7c 100644 --- a/rolling-shutter/keyperimpl/primev/keyper.go +++ b/rolling-shutter/keyperimpl/primev/keyper.go @@ -72,7 +72,7 @@ func (k *Keyper) Start(ctx context.Context, runner service.Runner) error { decryptionTriggerChannel: k.decryptionTriggerChannel, }) - k.core, err = NewKeyper(k) + k.core, err = NewKeyper(k, messageSender) if err != nil { return errors.Wrap(err, "can't instantiate keyper core") } @@ -114,7 +114,7 @@ func (k *Keyper) Start(ctx context.Context, runner service.Runner) error { return runner.StartService(k.core, k.chainSyncClient, k.eonKeyPublisher) } -func NewKeyper(kpr *Keyper) (*keyper.KeyperCore, error) { +func NewKeyper(kpr *Keyper, messagingMiddleware p2p.Messaging) (*keyper.KeyperCore, error) { return keyper.New( &kprconfig.Config{ InstanceID: kpr.config.InstanceID, @@ -132,6 +132,7 @@ func NewKeyper(kpr *Keyper) (*keyper.KeyperCore, error) { keyper.WithDBPool(kpr.dbpool), keyper.NoBroadcastEonPublicKey(), keyper.WithEonPublicKeyHandler(kpr.channelNewEonPublicKey), + keyper.WithMessaging(messagingMiddleware), ) } From bdfb39837fb940871a1f6f290750d2c191ff95a8 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Mon, 8 Sep 2025 21:06:57 +0530 Subject: [PATCH 14/28] update bidder node address verification --- rolling-shutter/keyperimpl/primev/handler.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index 8db5fc467..f654f7c83 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -3,7 +3,6 @@ package primev import ( "bytes" "context" - "encoding/hex" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" @@ -116,14 +115,13 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. } func getBidderNodeAddress(digest, signature string) (*common.Address, error) { - digestBytes, err := hex.DecodeString(digest) - if err != nil { - return nil, err - } - signatureBytes, err := hex.DecodeString(signature) - if err != nil { - return nil, err + digestBytes := common.FromHex(digest) + signatureBytes := common.FromHex(signature) + + if signatureBytes[64] == 27 || signatureBytes[64] == 28 { + signatureBytes[64] -= 27 // Transform V from 27/28 to 0/1 } + pubKey, err := crypto.SigToPub(digestBytes, signatureBytes) if err != nil { return nil, err From 08baf1d6cf90e8795e286bd4aec92d21fa8a5a8e Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Mon, 8 Sep 2025 22:11:37 +0530 Subject: [PATCH 15/28] update commitment handler to check msg type --- rolling-shutter/keyperimpl/primev/handler.go | 5 ++++- rolling-shutter/keyperimpl/primev/keyper.go | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index f654f7c83..29868a0ff 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -31,7 +31,10 @@ func (h *PrimevCommitmentHandler) MessagePrototypes() []p2pmsg.Message { } func (h *PrimevCommitmentHandler) ValidateMessage(_ context.Context, msg p2pmsg.Message) (pubsub.ValidationResult, error) { - commitment := msg.(*p2pmsg.Commitment) + commitment, ok := msg.(*p2pmsg.Commitment) + if !ok { + return pubsub.ValidationReject, errors.Errorf("received message of unexpected type %s", msg.ProtoReflect().Descriptor().FullName()) + } if len(commitment.Identities) != len(commitment.TxHashes) { return pubsub.ValidationReject, errors.Errorf("number of identities (%d) does not match number of tx hashes (%d)", len(commitment.Identities), len(commitment.TxHashes)) diff --git a/rolling-shutter/keyperimpl/primev/keyper.go b/rolling-shutter/keyperimpl/primev/keyper.go index 8a3742a7c..8141e15db 100644 --- a/rolling-shutter/keyperimpl/primev/keyper.go +++ b/rolling-shutter/keyperimpl/primev/keyper.go @@ -70,6 +70,7 @@ func (k *Keyper) Start(ctx context.Context, runner service.Runner) error { messageSender.AddMessageHandler(&PrimevCommitmentHandler{ config: k.config, decryptionTriggerChannel: k.decryptionTriggerChannel, + dbpool: k.dbpool, }) k.core, err = NewKeyper(k, messageSender) From b00a8188019e5080ff5e64e70b911dd606801c40 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Tue, 9 Sep 2025 00:35:43 +0530 Subject: [PATCH 16/28] update commitment message handling to include correct identity generation --- rolling-shutter/keyperimpl/primev/handler.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index 29868a0ff..10a3eff6c 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -3,6 +3,7 @@ package primev import ( "bytes" "context" + "encoding/hex" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" @@ -48,7 +49,11 @@ func (h *PrimevCommitmentHandler) ValidateMessage(_ context.Context, msg p2pmsg. } func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg.Message) ([]p2pmsg.Message, error) { - commitment := msg.(*p2pmsg.Commitment) + log.Info().Msg("received commitment") + commitment, ok := msg.(*p2pmsg.Commitment) + if !ok { + return nil, errors.Errorf("received message of unexpected type %s", msg.ProtoReflect().Descriptor().FullName()) + } hLog := log.With(). Str("provider_address", commitment.ProviderAddress). @@ -63,7 +68,12 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. identityPreimages := make([]identitypreimage.IdentityPreimage, 0, len(commitment.Identities)) for _, identityPrefix := range commitment.Identities { - identityPreimage := computeIdentity([]byte(identityPrefix), bidderNodeAddress.Bytes()) + identityPrefixBytes, err := hex.DecodeString(identityPrefix) + if err != nil { + hLog.Error().Err(err).Msg("failed to decode identity prefix") + return nil, err + } + identityPreimage := computeIdentity(identityPrefixBytes, bidderNodeAddress.Bytes()) identityPreimages = append(identityPreimages, identitypreimage.IdentityPreimage(identityPreimage)) } @@ -72,12 +82,10 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. hLog.Error().Err(err).Msg("failed to convert block number to uint64") return nil, err } - decryptionTrigger := &epochkghandler.DecryptionTrigger{ BlockNumber: blockNumberUint64, IdentityPreimages: identityPreimages, } - blockNumbers := make([]int64, 0, len(commitment.Identities)) eons := make([]int64, 0, len(commitment.Identities)) From 9178d2f84b254a0b3a07aa2da48f38d8030f7ef2 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Wed, 10 Sep 2025 13:38:42 +0530 Subject: [PATCH 17/28] update commitment table to include bid related fields --- .../primev/database/models.sqlc.gen.go | 13 +++--- .../primev/database/primev.sqlc.gen.go | 42 +++++++++++++------ .../primev/database/sql/queries/primev.sql | 17 ++++++-- .../primev/database/sql/schemas/primev.sql | 3 ++ rolling-shutter/keyperimpl/primev/handler.go | 20 +++++---- 5 files changed, 65 insertions(+), 30 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go index be971d9f9..6f24542a9 100644 --- a/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go +++ b/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go @@ -5,11 +5,14 @@ package database type Commitment struct { - TxHashes []string - ProviderAddress string - CommitmentSignature string - CommitmentDigest string - BlockNumber int64 + TxHashes []string + ProviderAddress string + CommitmentSignature string + CommitmentDigest string + BlockNumber int64 + ReceivedBidDigest string + ReceivedBidSignature string + BidderNodeAddress string } type CommittedTransaction struct { diff --git a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go index d1d95508d..143879b9c 100644 --- a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go +++ b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go @@ -26,7 +26,10 @@ SELECT c.provider_address, c.commitment_signature, c.commitment_digest, - c.block_number + c.block_number, + c.received_bid_digest, + c.received_bid_signature, + c.bidder_node_address FROM commitment c WHERE c.tx_hashes = $1 ` @@ -46,6 +49,9 @@ func (q *Queries) GetCommitmentByTxHash(ctx context.Context, txHashes []string) &i.CommitmentSignature, &i.CommitmentDigest, &i.BlockNumber, + &i.ReceivedBidDigest, + &i.ReceivedBidSignature, + &i.BidderNodeAddress, ); err != nil { return nil, err } @@ -80,31 +86,40 @@ WITH inserted_transactions AS ( RETURNING tx_hash ), upserted_commitment AS ( - INSERT INTO commitment (tx_hashes, provider_address, commitment_signature, commitment_digest, block_number) + INSERT INTO commitment (tx_hashes, provider_address, commitment_signature, commitment_digest, block_number, received_bid_digest, received_bid_signature, bidder_node_address) SELECT ARRAY_AGG(tx_hash), $5, $6, $7, - $8 + $8, + $9, + $10, + $11 FROM inserted_transactions ON CONFLICT (provider_address, commitment_digest, block_number) DO UPDATE SET - tx_hashes = commitment.tx_hashes || EXCLUDED.tx_hashes + tx_hashes = commitment.tx_hashes || EXCLUDED.tx_hashes, + received_bid_digest = EXCLUDED.received_bid_digest, + received_bid_signature = EXCLUDED.received_bid_signature, + bidder_node_address = EXCLUDED.bidder_node_address RETURNING tx_hashes, provider_address ) SELECT tx_hashes, provider_address FROM upserted_commitment ` type InsertMultipleTransactionsAndUpsertCommitmentParams struct { - Column1 []int64 - Column2 []string - Column3 []int64 - Column4 []string - ProviderAddress string - CommitmentSignature string - CommitmentDigest string - BlockNumber int64 + Column1 []int64 + Column2 []string + Column3 []int64 + Column4 []string + ProviderAddress string + CommitmentSignature string + CommitmentDigest string + BlockNumber int64 + ReceivedBidDigest string + ReceivedBidSignature string + BidderNodeAddress string } func (q *Queries) InsertMultipleTransactionsAndUpsertCommitment(ctx context.Context, arg InsertMultipleTransactionsAndUpsertCommitmentParams) error { @@ -117,6 +132,9 @@ func (q *Queries) InsertMultipleTransactionsAndUpsertCommitment(ctx context.Cont arg.CommitmentSignature, arg.CommitmentDigest, arg.BlockNumber, + arg.ReceivedBidDigest, + arg.ReceivedBidSignature, + arg.BidderNodeAddress, ) return err } diff --git a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql index 5f395fe70..887dc1be0 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql @@ -4,7 +4,10 @@ SELECT c.provider_address, c.commitment_signature, c.commitment_digest, - c.block_number + c.block_number, + c.received_bid_digest, + c.received_bid_signature, + c.bidder_node_address FROM commitment c WHERE c.tx_hashes = $1; @@ -20,17 +23,23 @@ WITH inserted_transactions AS ( RETURNING tx_hash ), upserted_commitment AS ( - INSERT INTO commitment (tx_hashes, provider_address, commitment_signature, commitment_digest, block_number) + INSERT INTO commitment (tx_hashes, provider_address, commitment_signature, commitment_digest, block_number, received_bid_digest, received_bid_signature, bidder_node_address) SELECT ARRAY_AGG(tx_hash), $5, $6, $7, - $8 + $8, + $9, + $10, + $11 FROM inserted_transactions ON CONFLICT (provider_address, commitment_digest, block_number) DO UPDATE SET - tx_hashes = commitment.tx_hashes || EXCLUDED.tx_hashes + tx_hashes = commitment.tx_hashes || EXCLUDED.tx_hashes, + received_bid_digest = EXCLUDED.received_bid_digest, + received_bid_signature = EXCLUDED.received_bid_signature, + bidder_node_address = EXCLUDED.bidder_node_address RETURNING tx_hashes, provider_address ) SELECT tx_hashes, provider_address FROM upserted_commitment; diff --git a/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql index 954fc42f8..c7bdc725e 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql @@ -8,6 +8,9 @@ CREATE TABLE commitment( commitment_signature text NOT NULL, commitment_digest text NOT NULL, block_number bigint NOT NULL CHECK (block_number >= 0), + received_bid_digest text NOT NULL, + received_bid_signature text NOT NULL, + bidder_node_address text NOT NULL, PRIMARY KEY (provider_address, commitment_digest, block_number) ); diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index 10a3eff6c..6aeae1ee0 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -99,17 +99,19 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. blockNumbers = append(blockNumbers, commitment.BlockNumber) eons = append(eons, eon.Eon) } - db := database.New(h.dbpool) err = db.InsertMultipleTransactionsAndUpsertCommitment(ctx, database.InsertMultipleTransactionsAndUpsertCommitmentParams{ - Column1: eons, - Column2: commitment.TxHashes, // right now identityPreimage is txHash - Column3: blockNumbers, - Column4: commitment.TxHashes, - ProviderAddress: commitment.ProviderAddress, - CommitmentSignature: commitment.CommitmentSignature, - CommitmentDigest: commitment.CommitmentDigest, - BlockNumber: commitment.BlockNumber, + Column1: eons, + Column2: commitment.TxHashes, // right now identityPreimage is txHash + Column3: blockNumbers, + Column4: commitment.TxHashes, + ProviderAddress: commitment.ProviderAddress, + CommitmentSignature: commitment.CommitmentSignature, + CommitmentDigest: commitment.CommitmentDigest, + BlockNumber: commitment.BlockNumber, + ReceivedBidDigest: commitment.ReceivedBidDigest, + ReceivedBidSignature: commitment.ReceivedBidSignature, + BidderNodeAddress: bidderNodeAddress.Hex(), }) if err != nil { hLog.Error().Err(err).Msg("failed to insert multiple transactions and upsert commitment") From 4212a0fdd539e9a084d22675d0cd301724a3be3a Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Mon, 22 Sep 2025 17:33:01 +0530 Subject: [PATCH 18/28] primev: use random generated identity prefix --- .../keyperimpl/primev/database/primev.sqlc.gen.go | 8 +++++--- .../keyperimpl/primev/database/sql/queries/primev.sql | 8 +++++--- rolling-shutter/keyperimpl/primev/handler.go | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go index 143879b9c..f9235c1a0 100644 --- a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go +++ b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go @@ -82,13 +82,15 @@ WITH inserted_transactions AS ( unnest($2::text[]) as identity_preimage, unnest($3::bigint[]) as block_number, unnest($4::text[]) as tx_hash - ON CONFLICT (eon, identity_preimage, tx_hash) DO NOTHING - RETURNING tx_hash + ON CONFLICT (eon, identity_preimage, tx_hash) + DO UPDATE SET + block_number = EXCLUDED.block_number + RETURNING tx_hash as hashes ), upserted_commitment AS ( INSERT INTO commitment (tx_hashes, provider_address, commitment_signature, commitment_digest, block_number, received_bid_digest, received_bid_signature, bidder_node_address) SELECT - ARRAY_AGG(tx_hash), + ARRAY_AGG(hashes), $5, $6, $7, diff --git a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql index 887dc1be0..ecfd6b6dd 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql @@ -19,13 +19,15 @@ WITH inserted_transactions AS ( unnest($2::text[]) as identity_preimage, unnest($3::bigint[]) as block_number, unnest($4::text[]) as tx_hash - ON CONFLICT (eon, identity_preimage, tx_hash) DO NOTHING - RETURNING tx_hash + ON CONFLICT (eon, identity_preimage, tx_hash) + DO UPDATE SET + block_number = EXCLUDED.block_number + RETURNING tx_hash as hashes ), upserted_commitment AS ( INSERT INTO commitment (tx_hashes, provider_address, commitment_signature, commitment_digest, block_number, received_bid_digest, received_bid_signature, bidder_node_address) SELECT - ARRAY_AGG(tx_hash), + ARRAY_AGG(hashes), $5, $6, $7, diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index 6aeae1ee0..bb0442e3e 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -102,7 +102,7 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. db := database.New(h.dbpool) err = db.InsertMultipleTransactionsAndUpsertCommitment(ctx, database.InsertMultipleTransactionsAndUpsertCommitmentParams{ Column1: eons, - Column2: commitment.TxHashes, // right now identityPreimage is txHash + Column2: commitment.Identities, Column3: blockNumbers, Column4: commitment.TxHashes, ProviderAddress: commitment.ProviderAddress, From 6436aadaea4b5b5265b71cc8f1d6fdc7fa820a30 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Wed, 24 Sep 2025 14:19:05 +0530 Subject: [PATCH 19/28] primev: use provider registry contract binding as dependancy from mev-commit --- rolling-shutter/go.mod | 24 +- rolling-shutter/go.sum | 59 +- .../primev/abi/ProviderRegistry.abi | 1466 ------ .../keyperimpl/primev/abi/ProviderRegistry.go | 4544 ----------------- rolling-shutter/keyperimpl/primev/keyper.go | 2 +- .../primev/providerregistrysyncer.go | 2 +- 6 files changed, 45 insertions(+), 6052 deletions(-) delete mode 100644 rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.abi delete mode 100644 rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.go diff --git a/rolling-shutter/go.mod b/rolling-shutter/go.mod index ead1c91b1..5105cb846 100644 --- a/rolling-shutter/go.mod +++ b/rolling-shutter/go.mod @@ -10,7 +10,7 @@ require ( github.com/bitwurx/jrpc2 v0.0.0-20220302204700-52c6dbbeb536 github.com/deckarep/golang-set/v2 v2.6.0 github.com/deepmap/oapi-codegen v1.9.1 - github.com/ethereum/go-ethereum v1.15.7 + github.com/ethereum/go-ethereum v1.15.11 github.com/ferranbt/fastssz v0.1.3 github.com/getkin/kin-openapi v0.87.0 github.com/go-chi/chi/v5 v5.0.10 @@ -30,6 +30,7 @@ require ( github.com/oapi-codegen/runtime v1.1.1 github.com/pelletier/go-toml/v2 v2.1.0 github.com/pkg/errors v0.9.1 + github.com/primev/mev-commit/contracts-abi v0.0.0-20250922193515-6d402958637d github.com/prometheus/client_golang v1.22.0 github.com/rs/zerolog v1.28.0 github.com/shutter-network/contracts/v2 v2.0.0-beta.2.0.20250108084129-3b743179373a @@ -59,25 +60,24 @@ require ( ) require ( - github.com/DataDog/zstd v1.5.2 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.17.0 // indirect + github.com/bits-and-blooms/bitset v1.20.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/consensys/bavard v0.1.22 // indirect - github.com/consensys/gnark-crypto v0.14.0 // indirect + github.com/consensys/bavard v0.1.27 // indirect + github.com/consensys/gnark-crypto v0.16.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/cosmos/gogoproto v1.4.1 // indirect github.com/cosmos/gorocksdb v1.2.0 // indirect + github.com/crate-crypto/go-eth-kzg v1.3.0 // indirect github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect - github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect github.com/creachadair/taskgroup v0.3.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect @@ -86,7 +86,7 @@ require ( github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/elastic/gosigar v0.14.3 // indirect - github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/c-kzg-4844/v2 v2.1.0 // indirect github.com/ethereum/go-verkle v0.2.2 // indirect github.com/flynn/noise v1.1.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect @@ -158,7 +158,6 @@ require ( github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.15 // indirect github.com/miekg/dns v1.1.66 // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect @@ -201,7 +200,7 @@ require ( github.com/pion/transport/v3 v3.0.7 // indirect github.com/pion/turn/v4 v4.0.0 // indirect github.com/pion/webrtc/v4 v4.0.10 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.63.0 // indirect @@ -211,7 +210,6 @@ require ( github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/rivo/uniseg v0.4.3 // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/rs/cors v1.9.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect @@ -222,8 +220,8 @@ require ( github.com/subosito/gotenv v1.4.2 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect github.com/tendermint/tm-db v0.6.7 // indirect - github.com/tklauser/go-sysconf v0.3.12 // indirect - github.com/tklauser/numcpus v0.6.1 // indirect + github.com/tklauser/go-sysconf v0.3.13 // indirect + github.com/tklauser/numcpus v0.7.0 // indirect github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect github.com/wlynxg/anet v0.0.5 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect diff --git a/rolling-shutter/go.sum b/rolling-shutter/go.sum index 4fe2175cd..f89127e9f 100644 --- a/rolling-shutter/go.sum +++ b/rolling-shutter/go.sum @@ -51,8 +51,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= -github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= @@ -77,8 +77,8 @@ github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZx github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= -github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= +github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo= @@ -110,8 +110,8 @@ github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= -github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= -github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozMAhO9TvTJ2ZMCXtN4VIAmfrrZ0JXQ4= +github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= @@ -120,10 +120,10 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/consensys/bavard v0.1.22 h1:Uw2CGvbXSZWhqK59X0VG/zOjpTFuOMcPLStrp1ihI0A= -github.com/consensys/bavard v0.1.22/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= -github.com/consensys/gnark-crypto v0.14.0 h1:DDBdl4HaBtdQsq/wfMwJvZNE80sHidrK3Nfrefatm0E= -github.com/consensys/gnark-crypto v0.14.0/go.mod h1:CU4UijNPsHawiVGNxe9co07FkzCeWHHrb1li/n1XoU0= +github.com/consensys/bavard v0.1.27 h1:j6hKUrGAy/H+gpNrpLU3I26n1yc+VMGmd6ID5+gAhOs= +github.com/consensys/bavard v0.1.27/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= +github.com/consensys/gnark-crypto v0.16.0 h1:8Dl4eYmUWK9WmlP1Bj6je688gBRJCJbT8Mw4KoTAawo= +github.com/consensys/gnark-crypto v0.16.0/go.mod h1:Ke3j06ndtPTVvo++PhGNgvm+lgpLvzbcE2MqljY7diU= github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= @@ -152,6 +152,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsr github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-eth-kzg v1.3.0 h1:05GrhASN9kDAidaFJOda6A4BEvgvuXbazXg/0E3OOdI= +github.com/crate-crypto/go-eth-kzg v1.3.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg= github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= @@ -162,8 +164,9 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= @@ -201,10 +204,10 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= -github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.15.7 h1:vm1XXruZVnqtODBgqFaTclzP0xAvCvQIDKyFNUA1JpY= -github.com/ethereum/go-ethereum v1.15.7/go.mod h1:+S9k+jFzlyVTNcYGvqFhzN/SFhI6vA+aOY4T5tLSPL0= +github.com/ethereum/c-kzg-4844/v2 v2.1.0 h1:gQropX9YFBhl3g4HYhwE70zq3IHFRgbbNPw0Shwzf5w= +github.com/ethereum/c-kzg-4844/v2 v2.1.0/go.mod h1:TC48kOKjJKPbN7C++qIgt0TJzZ70QznYR7Ob+WXl57E= +github.com/ethereum/go-ethereum v1.15.11 h1:JK73WKeu0WC0O1eyX+mdQAVHUV+UR1a9VB/domDngBU= +github.com/ethereum/go-ethereum v1.15.11/go.mod h1:mf8YiHIb0GR4x4TipcvBUPxJLw1mFdmxzoDi11sDRoI= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= @@ -233,8 +236,8 @@ github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8x github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getkin/kin-openapi v0.87.0 h1:eeb0WBIgRiXra7ZY0Vo+jWloqvaF2kNEaxAyb+39N+E= github.com/getkin/kin-openapi v0.87.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= -github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k= +github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= @@ -630,8 +633,8 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.1.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE= @@ -792,10 +795,13 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/polydawn/refmt v0.89.0 h1:ADJTApkvkeBZsN0tBTx8QjpD9JkmxbKp0cxfr9qszm4= github.com/polydawn/refmt v0.89.0/go.mod h1:/zvteZs/GwLtCgZ4BL6CBsk9IKIlexP43ObX9AxTqTw= +github.com/primev/mev-commit/contracts-abi v0.0.0-20250922193515-6d402958637d h1:41CGwNFiG8IIwviQoVu4mMUMDbkE/q3C07vakBACxzg= +github.com/primev/mev-commit/contracts-abi v0.0.0-20250922193515-6d402958637d/go.mod h1:m1vHlJXZuPOja6j93QBz28T9HvjFAefG7QBPuXQLTcU= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= @@ -819,9 +825,8 @@ github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtB github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= -github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= @@ -948,10 +953,10 @@ github.com/tendermint/tendermint v0.37.0-rc2 h1:2n1em+jfbhSv6QnBj8F6KHCpbIzZCB8K github.com/tendermint/tendermint v0.37.0-rc2/go.mod h1:uYQO9DRNPeZROa9X3hJOZpYcVREDC2/HST+EiU5g2+A= github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= -github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= -github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= -github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4= +github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0= +github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4= +github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= diff --git a/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.abi b/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.abi deleted file mode 100644 index 9c2f20d4f..000000000 --- a/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.abi +++ /dev/null @@ -1,1466 +0,0 @@ -[ - { - "type": "constructor", - "inputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "fallback", - "stateMutability": "payable" - }, - { - "type": "receive", - "stateMutability": "payable" - }, - { - "type": "function", - "name": "ONE_HUNDRED_PERCENT", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "PRECISION", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "UPGRADE_INTERFACE_VERSION", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "string", - "internalType": "string" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "acceptOwnership", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "addVerifiedBLSKey", - "inputs": [ - { - "name": "blsPublicKey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "signature", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "bidderSlashedAmount", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "blockBuilderBLSKeyToAddress", - "inputs": [ - { - "name": "", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "delegateRegisterAndStake", - "inputs": [ - { - "name": "provider", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "delegateStake", - "inputs": [ - { - "name": "provider", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "eoaToBlsPubkeys", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - }, - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "", - "type": "bytes", - "internalType": "bytes" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "feePercent", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getAccumulatedPenaltyFee", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getBLSKeys", - "inputs": [ - { - "name": "provider", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "bytes[]", - "internalType": "bytes[]" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getEoaFromBLSKey", - "inputs": [ - { - "name": "blsKey", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getProviderStake", - "inputs": [ - { - "name": "provider", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "initialize", - "inputs": [ - { - "name": "_minStake", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_penaltyFeeRecipient", - "type": "address", - "internalType": "address" - }, - { - "name": "_feePercent", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_owner", - "type": "address", - "internalType": "address" - }, - { - "name": "_withdrawalDelay", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_penaltyFeePayoutPeriod", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "isProviderValid", - "inputs": [ - { - "name": "provider", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "view" - }, - { - "type": "function", - "name": "manuallyWithdrawPenaltyFee", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "minStake", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "overrideAddBLSKey", - "inputs": [ - { - "name": "provider", - "type": "address", - "internalType": "address" - }, - { - "name": "blsPublicKey", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "owner", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "pause", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "paused", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "penaltyFeeTracker", - "inputs": [], - "outputs": [ - { - "name": "recipient", - "type": "address", - "internalType": "address" - }, - { - "name": "accumulatedAmount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "lastPayoutTimestamp", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "payoutTimePeriod", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "pendingOwner", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "preconfManager", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "providerRegistered", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "providerStakes", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "proxiableUUID", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "registerAndStake", - "inputs": [], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "renounceOwnership", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setFeePayoutPeriod", - "inputs": [ - { - "name": "_feePayoutPeriod", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setMinStake", - "inputs": [ - { - "name": "_minStake", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setNewFeePercent", - "inputs": [ - { - "name": "newFeePercent", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setNewPenaltyFeeRecipient", - "inputs": [ - { - "name": "newFeeRecipient", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setPreconfManager", - "inputs": [ - { - "name": "contractAddress", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setWithdrawalDelay", - "inputs": [ - { - "name": "_withdrawalDelay", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "slash", - "inputs": [ - { - "name": "amt", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "slashAmt", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "provider", - "type": "address", - "internalType": "address" - }, - { - "name": "bidder", - "type": "address", - "internalType": "address payable" - }, - { - "name": "residualBidPercentAfterDecay", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "stake", - "inputs": [], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "transferOwnership", - "inputs": [ - { - "name": "newOwner", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "unpause", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "unstake", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "upgradeToAndCall", - "inputs": [ - { - "name": "newImplementation", - "type": "address", - "internalType": "address" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "verifySignature", - "inputs": [ - { - "name": "pubKey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "message", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "signature", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "withdraw", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "withdrawSlashedAmount", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "withdrawalDelay", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "withdrawalRequests", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "event", - "name": "BLSKeyAdded", - "inputs": [ - { - "name": "provider", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "blsPublicKey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "BidderWithdrawSlashedAmount", - "inputs": [ - { - "name": "bidder", - "type": "address", - "indexed": false, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "FeePayoutPeriodUpdated", - "inputs": [ - { - "name": "newFeePayoutPeriod", - "type": "uint256", - "indexed": true, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "FeePercentUpdated", - "inputs": [ - { - "name": "newFeePercent", - "type": "uint256", - "indexed": true, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "FeeTransfer", - "inputs": [ - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "recipient", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "FundsDeposited", - "inputs": [ - { - "name": "provider", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "FundsSlashed", - "inputs": [ - { - "name": "provider", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Initialized", - "inputs": [ - { - "name": "version", - "type": "uint64", - "indexed": false, - "internalType": "uint64" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "InsufficientFundsToSlash", - "inputs": [ - { - "name": "provider", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "providerStake", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "residualAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "penaltyFee", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "slashAmt", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "MinStakeUpdated", - "inputs": [ - { - "name": "newMinStake", - "type": "uint256", - "indexed": true, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "OwnershipTransferStarted", - "inputs": [ - { - "name": "previousOwner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "newOwner", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "OwnershipTransferred", - "inputs": [ - { - "name": "previousOwner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "newOwner", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Paused", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "PenaltyFeeRecipientUpdated", - "inputs": [ - { - "name": "newPenaltyFeeRecipient", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "PreconfManagerUpdated", - "inputs": [ - { - "name": "newPreconfManager", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "ProviderRegistered", - "inputs": [ - { - "name": "provider", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "stakedAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "TransferToBidderFailed", - "inputs": [ - { - "name": "bidder", - "type": "address", - "indexed": false, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Unpaused", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Unstake", - "inputs": [ - { - "name": "provider", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "timestamp", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Upgraded", - "inputs": [ - { - "name": "implementation", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Withdraw", - "inputs": [ - { - "name": "provider", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "WithdrawalDelayUpdated", - "inputs": [ - { - "name": "newWithdrawalDelay", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "AtLeastOneBLSKeyRequired", - "inputs": [] - }, - { - "type": "error", - "name": "BLSSignatureInvalid", - "inputs": [] - }, - { - "type": "error", - "name": "BidderAmountIsZero", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "BidderWithdrawalTransferFailed", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "DelayNotPassed", - "inputs": [ - { - "name": "withdrawalRequestTimestamp", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "withdrawalDelay", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "currentBlockTimestamp", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "ERC1967InvalidImplementation", - "inputs": [ - { - "name": "implementation", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "ERC1967NonPayable", - "inputs": [] - }, - { - "type": "error", - "name": "EnforcedPause", - "inputs": [] - }, - { - "type": "error", - "name": "ExpectedPause", - "inputs": [] - }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, - { - "type": "error", - "name": "FeeRecipientIsZero", - "inputs": [] - }, - { - "type": "error", - "name": "InsufficientStake", - "inputs": [ - { - "name": "stake", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "minStake", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "InvalidBLSPublicKeyLength", - "inputs": [ - { - "name": "length", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "expectedLength", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "InvalidFallback", - "inputs": [] - }, - { - "type": "error", - "name": "InvalidInitialization", - "inputs": [] - }, - { - "type": "error", - "name": "InvalidReceive", - "inputs": [] - }, - { - "type": "error", - "name": "NoStakeToWithdraw", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "NoUnstakeRequest", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "NotInitializing", - "inputs": [] - }, - { - "type": "error", - "name": "NotPreconfContract", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - }, - { - "name": "preconfManager", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "OwnableInvalidOwner", - "inputs": [ - { - "name": "owner", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "OwnableUnauthorizedAccount", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "PayoutPeriodMustBePositive", - "inputs": [] - }, - { - "type": "error", - "name": "PendingWithdrawalRequest", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "PreconfManagerNotSet", - "inputs": [] - }, - { - "type": "error", - "name": "ProviderAlreadyRegistered", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "ProviderCommitmentsPending", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - }, - { - "name": "numPending", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "ProviderNotRegistered", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "PublicKeyLengthInvalid", - "inputs": [ - { - "name": "exp", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "got", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "ReentrancyGuardReentrantCall", - "inputs": [] - }, - { - "type": "error", - "name": "SignatureLengthInvalid", - "inputs": [ - { - "name": "exp", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "got", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "StakeTransferFailed", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "TransferToRecipientFailed", - "inputs": [] - }, - { - "type": "error", - "name": "UUPSUnauthorizedCallContext", - "inputs": [] - }, - { - "type": "error", - "name": "UUPSUnsupportedProxiableUUID", - "inputs": [ - { - "name": "slot", - "type": "bytes32", - "internalType": "bytes32" - } - ] - }, - { - "type": "error", - "name": "UnstakeRequestExists", - "inputs": [ - { - "name": "sender", - "type": "address", - "internalType": "address" - } - ] - } -] \ No newline at end of file diff --git a/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.go b/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.go deleted file mode 100644 index ecb411c55..000000000 --- a/rolling-shutter/keyperimpl/primev/abi/ProviderRegistry.go +++ /dev/null @@ -1,4544 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package providerregistry - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ProviderregistryMetaData contains all meta data concerning the Providerregistry contract. -var ProviderregistryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"ONE_HUNDRED_PERCENT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PRECISION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addVerifiedBLSKey\",\"inputs\":[{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"bidderSlashedAmount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blockBuilderBLSKeyToAddress\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegateRegisterAndStake\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"delegateStake\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"eoaToBlsPubkeys\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"feePercent\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAccumulatedPenaltyFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBLSKeys\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEoaFromBLSKey\",\"inputs\":[{\"name\":\"blsKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getProviderStake\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_minStake\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_penaltyFeeRecipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_feePercent\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_withdrawalDelay\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_penaltyFeePayoutPeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isProviderValid\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"manuallyWithdrawPenaltyFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minStake\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"overrideAddBLSKey\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"penaltyFeeTracker\",\"inputs\":[],\"outputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"accumulatedAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"lastPayoutTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"payoutTimePeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preconfManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"providerRegistered\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"providerStakes\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerAndStake\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setFeePayoutPeriod\",\"inputs\":[{\"name\":\"_feePayoutPeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinStake\",\"inputs\":[{\"name\":\"_minStake\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setNewFeePercent\",\"inputs\":[{\"name\":\"newFeePercent\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setNewPenaltyFeeRecipient\",\"inputs\":[{\"name\":\"newFeeRecipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPreconfManager\",\"inputs\":[{\"name\":\"contractAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWithdrawalDelay\",\"inputs\":[{\"name\":\"_withdrawalDelay\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slash\",\"inputs\":[{\"name\":\"amt\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"slashAmt\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"provider\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidder\",\"type\":\"address\",\"internalType\":\"addresspayable\"},{\"name\":\"residualBidPercentAfterDecay\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unstake\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifySignature\",\"inputs\":[{\"name\":\"pubKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSlashedAmount\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawalDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawalRequests\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"BLSKeyAdded\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BidderWithdrawSlashedAmount\",\"inputs\":[{\"name\":\"bidder\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeePayoutPeriodUpdated\",\"inputs\":[{\"name\":\"newFeePayoutPeriod\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeePercentUpdated\",\"inputs\":[{\"name\":\"newFeePercent\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeeTransfer\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FundsDeposited\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FundsSlashed\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InsufficientFundsToSlash\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"providerStake\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"residualAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"penaltyFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"slashAmt\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinStakeUpdated\",\"inputs\":[{\"name\":\"newMinStake\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PenaltyFeeRecipientUpdated\",\"inputs\":[{\"name\":\"newPenaltyFeeRecipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PreconfManagerUpdated\",\"inputs\":[{\"name\":\"newPreconfManager\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProviderRegistered\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"stakedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransferToBidderFailed\",\"inputs\":[{\"name\":\"bidder\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unstake\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"provider\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalDelayUpdated\",\"inputs\":[{\"name\":\"newWithdrawalDelay\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AtLeastOneBLSKeyRequired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BLSSignatureInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BidderAmountIsZero\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"BidderWithdrawalTransferFailed\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"DelayNotPassed\",\"inputs\":[{\"name\":\"withdrawalRequestTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"withdrawalDelay\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"currentBlockTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FeeRecipientIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientStake\",\"inputs\":[{\"name\":\"stake\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minStake\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expectedLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidFallback\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidReceive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoStakeToWithdraw\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"NoUnstakeRequest\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotPreconfContract\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"preconfManager\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PayoutPeriodMustBePositive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PendingWithdrawalRequest\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PreconfManagerNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ProviderAlreadyRegistered\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ProviderCommitmentsPending\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"numPending\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ProviderNotRegistered\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PublicKeyLengthInvalid\",\"inputs\":[{\"name\":\"exp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"got\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureLengthInvalid\",\"inputs\":[{\"name\":\"exp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"got\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"StakeTransferFailed\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"TransferToRecipientFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"UnstakeRequestExists\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]}]", -} - -// ProviderregistryABI is the input ABI used to generate the binding from. -// Deprecated: Use ProviderregistryMetaData.ABI instead. -var ProviderregistryABI = ProviderregistryMetaData.ABI - -// Providerregistry is an auto generated Go binding around an Ethereum contract. -type Providerregistry struct { - ProviderregistryCaller // Read-only binding to the contract - ProviderregistryTransactor // Write-only binding to the contract - ProviderregistryFilterer // Log filterer for contract events -} - -// ProviderregistryCaller is an auto generated read-only Go binding around an Ethereum contract. -type ProviderregistryCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProviderregistryTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ProviderregistryTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProviderregistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ProviderregistryFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProviderregistrySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ProviderregistrySession struct { - Contract *Providerregistry // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProviderregistryCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ProviderregistryCallerSession struct { - Contract *ProviderregistryCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ProviderregistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ProviderregistryTransactorSession struct { - Contract *ProviderregistryTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProviderregistryRaw is an auto generated low-level Go binding around an Ethereum contract. -type ProviderregistryRaw struct { - Contract *Providerregistry // Generic contract binding to access the raw methods on -} - -// ProviderregistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ProviderregistryCallerRaw struct { - Contract *ProviderregistryCaller // Generic read-only contract binding to access the raw methods on -} - -// ProviderregistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ProviderregistryTransactorRaw struct { - Contract *ProviderregistryTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewProviderregistry creates a new instance of Providerregistry, bound to a specific deployed contract. -func NewProviderregistry(address common.Address, backend bind.ContractBackend) (*Providerregistry, error) { - contract, err := bindProviderregistry(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Providerregistry{ProviderregistryCaller: ProviderregistryCaller{contract: contract}, ProviderregistryTransactor: ProviderregistryTransactor{contract: contract}, ProviderregistryFilterer: ProviderregistryFilterer{contract: contract}}, nil -} - -// NewProviderregistryCaller creates a new read-only instance of Providerregistry, bound to a specific deployed contract. -func NewProviderregistryCaller(address common.Address, caller bind.ContractCaller) (*ProviderregistryCaller, error) { - contract, err := bindProviderregistry(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ProviderregistryCaller{contract: contract}, nil -} - -// NewProviderregistryTransactor creates a new write-only instance of Providerregistry, bound to a specific deployed contract. -func NewProviderregistryTransactor(address common.Address, transactor bind.ContractTransactor) (*ProviderregistryTransactor, error) { - contract, err := bindProviderregistry(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ProviderregistryTransactor{contract: contract}, nil -} - -// NewProviderregistryFilterer creates a new log filterer instance of Providerregistry, bound to a specific deployed contract. -func NewProviderregistryFilterer(address common.Address, filterer bind.ContractFilterer) (*ProviderregistryFilterer, error) { - contract, err := bindProviderregistry(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ProviderregistryFilterer{contract: contract}, nil -} - -// bindProviderregistry binds a generic wrapper to an already deployed contract. -func bindProviderregistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ProviderregistryMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Providerregistry *ProviderregistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Providerregistry.Contract.ProviderregistryCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Providerregistry *ProviderregistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.Contract.ProviderregistryTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Providerregistry *ProviderregistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Providerregistry.Contract.ProviderregistryTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Providerregistry *ProviderregistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Providerregistry.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Providerregistry *ProviderregistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Providerregistry *ProviderregistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Providerregistry.Contract.contract.Transact(opts, method, params...) -} - -// ONEHUNDREDPERCENT is a free data retrieval call binding the contract method 0xdd0081c7. -// -// Solidity: function ONE_HUNDRED_PERCENT() view returns(uint256) -func (_Providerregistry *ProviderregistryCaller) ONEHUNDREDPERCENT(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "ONE_HUNDRED_PERCENT") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// ONEHUNDREDPERCENT is a free data retrieval call binding the contract method 0xdd0081c7. -// -// Solidity: function ONE_HUNDRED_PERCENT() view returns(uint256) -func (_Providerregistry *ProviderregistrySession) ONEHUNDREDPERCENT() (*big.Int, error) { - return _Providerregistry.Contract.ONEHUNDREDPERCENT(&_Providerregistry.CallOpts) -} - -// ONEHUNDREDPERCENT is a free data retrieval call binding the contract method 0xdd0081c7. -// -// Solidity: function ONE_HUNDRED_PERCENT() view returns(uint256) -func (_Providerregistry *ProviderregistryCallerSession) ONEHUNDREDPERCENT() (*big.Int, error) { - return _Providerregistry.Contract.ONEHUNDREDPERCENT(&_Providerregistry.CallOpts) -} - -// PRECISION is a free data retrieval call binding the contract method 0xaaf5eb68. -// -// Solidity: function PRECISION() view returns(uint256) -func (_Providerregistry *ProviderregistryCaller) PRECISION(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "PRECISION") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// PRECISION is a free data retrieval call binding the contract method 0xaaf5eb68. -// -// Solidity: function PRECISION() view returns(uint256) -func (_Providerregistry *ProviderregistrySession) PRECISION() (*big.Int, error) { - return _Providerregistry.Contract.PRECISION(&_Providerregistry.CallOpts) -} - -// PRECISION is a free data retrieval call binding the contract method 0xaaf5eb68. -// -// Solidity: function PRECISION() view returns(uint256) -func (_Providerregistry *ProviderregistryCallerSession) PRECISION() (*big.Int, error) { - return _Providerregistry.Contract.PRECISION(&_Providerregistry.CallOpts) -} - -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. -// -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_Providerregistry *ProviderregistryCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err -} - -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. -// -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_Providerregistry *ProviderregistrySession) UPGRADEINTERFACEVERSION() (string, error) { - return _Providerregistry.Contract.UPGRADEINTERFACEVERSION(&_Providerregistry.CallOpts) -} - -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. -// -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_Providerregistry *ProviderregistryCallerSession) UPGRADEINTERFACEVERSION() (string, error) { - return _Providerregistry.Contract.UPGRADEINTERFACEVERSION(&_Providerregistry.CallOpts) -} - -// BidderSlashedAmount is a free data retrieval call binding the contract method 0x3ab6fc1a. -// -// Solidity: function bidderSlashedAmount(address ) view returns(uint256) -func (_Providerregistry *ProviderregistryCaller) BidderSlashedAmount(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "bidderSlashedAmount", arg0) - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// BidderSlashedAmount is a free data retrieval call binding the contract method 0x3ab6fc1a. -// -// Solidity: function bidderSlashedAmount(address ) view returns(uint256) -func (_Providerregistry *ProviderregistrySession) BidderSlashedAmount(arg0 common.Address) (*big.Int, error) { - return _Providerregistry.Contract.BidderSlashedAmount(&_Providerregistry.CallOpts, arg0) -} - -// BidderSlashedAmount is a free data retrieval call binding the contract method 0x3ab6fc1a. -// -// Solidity: function bidderSlashedAmount(address ) view returns(uint256) -func (_Providerregistry *ProviderregistryCallerSession) BidderSlashedAmount(arg0 common.Address) (*big.Int, error) { - return _Providerregistry.Contract.BidderSlashedAmount(&_Providerregistry.CallOpts, arg0) -} - -// BlockBuilderBLSKeyToAddress is a free data retrieval call binding the contract method 0x929b63c4. -// -// Solidity: function blockBuilderBLSKeyToAddress(bytes ) view returns(address) -func (_Providerregistry *ProviderregistryCaller) BlockBuilderBLSKeyToAddress(opts *bind.CallOpts, arg0 []byte) (common.Address, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "blockBuilderBLSKeyToAddress", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// BlockBuilderBLSKeyToAddress is a free data retrieval call binding the contract method 0x929b63c4. -// -// Solidity: function blockBuilderBLSKeyToAddress(bytes ) view returns(address) -func (_Providerregistry *ProviderregistrySession) BlockBuilderBLSKeyToAddress(arg0 []byte) (common.Address, error) { - return _Providerregistry.Contract.BlockBuilderBLSKeyToAddress(&_Providerregistry.CallOpts, arg0) -} - -// BlockBuilderBLSKeyToAddress is a free data retrieval call binding the contract method 0x929b63c4. -// -// Solidity: function blockBuilderBLSKeyToAddress(bytes ) view returns(address) -func (_Providerregistry *ProviderregistryCallerSession) BlockBuilderBLSKeyToAddress(arg0 []byte) (common.Address, error) { - return _Providerregistry.Contract.BlockBuilderBLSKeyToAddress(&_Providerregistry.CallOpts, arg0) -} - -// EoaToBlsPubkeys is a free data retrieval call binding the contract method 0x1129ce1f. -// -// Solidity: function eoaToBlsPubkeys(address , uint256 ) view returns(bytes) -func (_Providerregistry *ProviderregistryCaller) EoaToBlsPubkeys(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) ([]byte, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "eoaToBlsPubkeys", arg0, arg1) - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err -} - -// EoaToBlsPubkeys is a free data retrieval call binding the contract method 0x1129ce1f. -// -// Solidity: function eoaToBlsPubkeys(address , uint256 ) view returns(bytes) -func (_Providerregistry *ProviderregistrySession) EoaToBlsPubkeys(arg0 common.Address, arg1 *big.Int) ([]byte, error) { - return _Providerregistry.Contract.EoaToBlsPubkeys(&_Providerregistry.CallOpts, arg0, arg1) -} - -// EoaToBlsPubkeys is a free data retrieval call binding the contract method 0x1129ce1f. -// -// Solidity: function eoaToBlsPubkeys(address , uint256 ) view returns(bytes) -func (_Providerregistry *ProviderregistryCallerSession) EoaToBlsPubkeys(arg0 common.Address, arg1 *big.Int) ([]byte, error) { - return _Providerregistry.Contract.EoaToBlsPubkeys(&_Providerregistry.CallOpts, arg0, arg1) -} - -// FeePercent is a free data retrieval call binding the contract method 0x7fd6f15c. -// -// Solidity: function feePercent() view returns(uint256) -func (_Providerregistry *ProviderregistryCaller) FeePercent(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "feePercent") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// FeePercent is a free data retrieval call binding the contract method 0x7fd6f15c. -// -// Solidity: function feePercent() view returns(uint256) -func (_Providerregistry *ProviderregistrySession) FeePercent() (*big.Int, error) { - return _Providerregistry.Contract.FeePercent(&_Providerregistry.CallOpts) -} - -// FeePercent is a free data retrieval call binding the contract method 0x7fd6f15c. -// -// Solidity: function feePercent() view returns(uint256) -func (_Providerregistry *ProviderregistryCallerSession) FeePercent() (*big.Int, error) { - return _Providerregistry.Contract.FeePercent(&_Providerregistry.CallOpts) -} - -// GetAccumulatedPenaltyFee is a free data retrieval call binding the contract method 0xe4506e7c. -// -// Solidity: function getAccumulatedPenaltyFee() view returns(uint256) -func (_Providerregistry *ProviderregistryCaller) GetAccumulatedPenaltyFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "getAccumulatedPenaltyFee") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// GetAccumulatedPenaltyFee is a free data retrieval call binding the contract method 0xe4506e7c. -// -// Solidity: function getAccumulatedPenaltyFee() view returns(uint256) -func (_Providerregistry *ProviderregistrySession) GetAccumulatedPenaltyFee() (*big.Int, error) { - return _Providerregistry.Contract.GetAccumulatedPenaltyFee(&_Providerregistry.CallOpts) -} - -// GetAccumulatedPenaltyFee is a free data retrieval call binding the contract method 0xe4506e7c. -// -// Solidity: function getAccumulatedPenaltyFee() view returns(uint256) -func (_Providerregistry *ProviderregistryCallerSession) GetAccumulatedPenaltyFee() (*big.Int, error) { - return _Providerregistry.Contract.GetAccumulatedPenaltyFee(&_Providerregistry.CallOpts) -} - -// GetBLSKeys is a free data retrieval call binding the contract method 0xc50b59df. -// -// Solidity: function getBLSKeys(address provider) view returns(bytes[]) -func (_Providerregistry *ProviderregistryCaller) GetBLSKeys(opts *bind.CallOpts, provider common.Address) ([][]byte, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "getBLSKeys", provider) - if err != nil { - return *new([][]byte), err - } - - out0 := *abi.ConvertType(out[0], new([][]byte)).(*[][]byte) - - return out0, err -} - -// GetBLSKeys is a free data retrieval call binding the contract method 0xc50b59df. -// -// Solidity: function getBLSKeys(address provider) view returns(bytes[]) -func (_Providerregistry *ProviderregistrySession) GetBLSKeys(provider common.Address) ([][]byte, error) { - return _Providerregistry.Contract.GetBLSKeys(&_Providerregistry.CallOpts, provider) -} - -// GetBLSKeys is a free data retrieval call binding the contract method 0xc50b59df. -// -// Solidity: function getBLSKeys(address provider) view returns(bytes[]) -func (_Providerregistry *ProviderregistryCallerSession) GetBLSKeys(provider common.Address) ([][]byte, error) { - return _Providerregistry.Contract.GetBLSKeys(&_Providerregistry.CallOpts, provider) -} - -// GetEoaFromBLSKey is a free data retrieval call binding the contract method 0xea3b275d. -// -// Solidity: function getEoaFromBLSKey(bytes blsKey) view returns(address) -func (_Providerregistry *ProviderregistryCaller) GetEoaFromBLSKey(opts *bind.CallOpts, blsKey []byte) (common.Address, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "getEoaFromBLSKey", blsKey) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// GetEoaFromBLSKey is a free data retrieval call binding the contract method 0xea3b275d. -// -// Solidity: function getEoaFromBLSKey(bytes blsKey) view returns(address) -func (_Providerregistry *ProviderregistrySession) GetEoaFromBLSKey(blsKey []byte) (common.Address, error) { - return _Providerregistry.Contract.GetEoaFromBLSKey(&_Providerregistry.CallOpts, blsKey) -} - -// GetEoaFromBLSKey is a free data retrieval call binding the contract method 0xea3b275d. -// -// Solidity: function getEoaFromBLSKey(bytes blsKey) view returns(address) -func (_Providerregistry *ProviderregistryCallerSession) GetEoaFromBLSKey(blsKey []byte) (common.Address, error) { - return _Providerregistry.Contract.GetEoaFromBLSKey(&_Providerregistry.CallOpts, blsKey) -} - -// GetProviderStake is a free data retrieval call binding the contract method 0xbfebc370. -// -// Solidity: function getProviderStake(address provider) view returns(uint256) -func (_Providerregistry *ProviderregistryCaller) GetProviderStake(opts *bind.CallOpts, provider common.Address) (*big.Int, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "getProviderStake", provider) - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// GetProviderStake is a free data retrieval call binding the contract method 0xbfebc370. -// -// Solidity: function getProviderStake(address provider) view returns(uint256) -func (_Providerregistry *ProviderregistrySession) GetProviderStake(provider common.Address) (*big.Int, error) { - return _Providerregistry.Contract.GetProviderStake(&_Providerregistry.CallOpts, provider) -} - -// GetProviderStake is a free data retrieval call binding the contract method 0xbfebc370. -// -// Solidity: function getProviderStake(address provider) view returns(uint256) -func (_Providerregistry *ProviderregistryCallerSession) GetProviderStake(provider common.Address) (*big.Int, error) { - return _Providerregistry.Contract.GetProviderStake(&_Providerregistry.CallOpts, provider) -} - -// IsProviderValid is a free data retrieval call binding the contract method 0xb066d50d. -// -// Solidity: function isProviderValid(address provider) view returns() -func (_Providerregistry *ProviderregistryCaller) IsProviderValid(opts *bind.CallOpts, provider common.Address) error { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "isProviderValid", provider) - if err != nil { - return err - } - - return err -} - -// IsProviderValid is a free data retrieval call binding the contract method 0xb066d50d. -// -// Solidity: function isProviderValid(address provider) view returns() -func (_Providerregistry *ProviderregistrySession) IsProviderValid(provider common.Address) error { - return _Providerregistry.Contract.IsProviderValid(&_Providerregistry.CallOpts, provider) -} - -// IsProviderValid is a free data retrieval call binding the contract method 0xb066d50d. -// -// Solidity: function isProviderValid(address provider) view returns() -func (_Providerregistry *ProviderregistryCallerSession) IsProviderValid(provider common.Address) error { - return _Providerregistry.Contract.IsProviderValid(&_Providerregistry.CallOpts, provider) -} - -// MinStake is a free data retrieval call binding the contract method 0x375b3c0a. -// -// Solidity: function minStake() view returns(uint256) -func (_Providerregistry *ProviderregistryCaller) MinStake(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "minStake") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// MinStake is a free data retrieval call binding the contract method 0x375b3c0a. -// -// Solidity: function minStake() view returns(uint256) -func (_Providerregistry *ProviderregistrySession) MinStake() (*big.Int, error) { - return _Providerregistry.Contract.MinStake(&_Providerregistry.CallOpts) -} - -// MinStake is a free data retrieval call binding the contract method 0x375b3c0a. -// -// Solidity: function minStake() view returns(uint256) -func (_Providerregistry *ProviderregistryCallerSession) MinStake() (*big.Int, error) { - return _Providerregistry.Contract.MinStake(&_Providerregistry.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Providerregistry *ProviderregistryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "owner") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Providerregistry *ProviderregistrySession) Owner() (common.Address, error) { - return _Providerregistry.Contract.Owner(&_Providerregistry.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Providerregistry *ProviderregistryCallerSession) Owner() (common.Address, error) { - return _Providerregistry.Contract.Owner(&_Providerregistry.CallOpts) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_Providerregistry *ProviderregistryCaller) Paused(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "paused") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_Providerregistry *ProviderregistrySession) Paused() (bool, error) { - return _Providerregistry.Contract.Paused(&_Providerregistry.CallOpts) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_Providerregistry *ProviderregistryCallerSession) Paused() (bool, error) { - return _Providerregistry.Contract.Paused(&_Providerregistry.CallOpts) -} - -// PenaltyFeeTracker is a free data retrieval call binding the contract method 0xf1aab9ee. -// -// Solidity: function penaltyFeeTracker() view returns(address recipient, uint256 accumulatedAmount, uint256 lastPayoutTimestamp, uint256 payoutTimePeriod) -func (_Providerregistry *ProviderregistryCaller) PenaltyFeeTracker(opts *bind.CallOpts) (struct { - Recipient common.Address - AccumulatedAmount *big.Int - LastPayoutTimestamp *big.Int - PayoutTimePeriod *big.Int -}, error, -) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "penaltyFeeTracker") - - outstruct := new(struct { - Recipient common.Address - AccumulatedAmount *big.Int - LastPayoutTimestamp *big.Int - PayoutTimePeriod *big.Int - }) - if err != nil { - return *outstruct, err - } - - outstruct.Recipient = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - outstruct.AccumulatedAmount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.LastPayoutTimestamp = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) - outstruct.PayoutTimePeriod = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) - - return *outstruct, err -} - -// PenaltyFeeTracker is a free data retrieval call binding the contract method 0xf1aab9ee. -// -// Solidity: function penaltyFeeTracker() view returns(address recipient, uint256 accumulatedAmount, uint256 lastPayoutTimestamp, uint256 payoutTimePeriod) -func (_Providerregistry *ProviderregistrySession) PenaltyFeeTracker() (struct { - Recipient common.Address - AccumulatedAmount *big.Int - LastPayoutTimestamp *big.Int - PayoutTimePeriod *big.Int -}, error, -) { - return _Providerregistry.Contract.PenaltyFeeTracker(&_Providerregistry.CallOpts) -} - -// PenaltyFeeTracker is a free data retrieval call binding the contract method 0xf1aab9ee. -// -// Solidity: function penaltyFeeTracker() view returns(address recipient, uint256 accumulatedAmount, uint256 lastPayoutTimestamp, uint256 payoutTimePeriod) -func (_Providerregistry *ProviderregistryCallerSession) PenaltyFeeTracker() (struct { - Recipient common.Address - AccumulatedAmount *big.Int - LastPayoutTimestamp *big.Int - PayoutTimePeriod *big.Int -}, error, -) { - return _Providerregistry.Contract.PenaltyFeeTracker(&_Providerregistry.CallOpts) -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_Providerregistry *ProviderregistryCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "pendingOwner") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_Providerregistry *ProviderregistrySession) PendingOwner() (common.Address, error) { - return _Providerregistry.Contract.PendingOwner(&_Providerregistry.CallOpts) -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_Providerregistry *ProviderregistryCallerSession) PendingOwner() (common.Address, error) { - return _Providerregistry.Contract.PendingOwner(&_Providerregistry.CallOpts) -} - -// PreconfManager is a free data retrieval call binding the contract method 0x94a87500. -// -// Solidity: function preconfManager() view returns(address) -func (_Providerregistry *ProviderregistryCaller) PreconfManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "preconfManager") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// PreconfManager is a free data retrieval call binding the contract method 0x94a87500. -// -// Solidity: function preconfManager() view returns(address) -func (_Providerregistry *ProviderregistrySession) PreconfManager() (common.Address, error) { - return _Providerregistry.Contract.PreconfManager(&_Providerregistry.CallOpts) -} - -// PreconfManager is a free data retrieval call binding the contract method 0x94a87500. -// -// Solidity: function preconfManager() view returns(address) -func (_Providerregistry *ProviderregistryCallerSession) PreconfManager() (common.Address, error) { - return _Providerregistry.Contract.PreconfManager(&_Providerregistry.CallOpts) -} - -// ProviderRegistered is a free data retrieval call binding the contract method 0xab255b41. -// -// Solidity: function providerRegistered(address ) view returns(bool) -func (_Providerregistry *ProviderregistryCaller) ProviderRegistered(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "providerRegistered", arg0) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// ProviderRegistered is a free data retrieval call binding the contract method 0xab255b41. -// -// Solidity: function providerRegistered(address ) view returns(bool) -func (_Providerregistry *ProviderregistrySession) ProviderRegistered(arg0 common.Address) (bool, error) { - return _Providerregistry.Contract.ProviderRegistered(&_Providerregistry.CallOpts, arg0) -} - -// ProviderRegistered is a free data retrieval call binding the contract method 0xab255b41. -// -// Solidity: function providerRegistered(address ) view returns(bool) -func (_Providerregistry *ProviderregistryCallerSession) ProviderRegistered(arg0 common.Address) (bool, error) { - return _Providerregistry.Contract.ProviderRegistered(&_Providerregistry.CallOpts, arg0) -} - -// ProviderStakes is a free data retrieval call binding the contract method 0x0d6b4c9f. -// -// Solidity: function providerStakes(address ) view returns(uint256) -func (_Providerregistry *ProviderregistryCaller) ProviderStakes(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "providerStakes", arg0) - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// ProviderStakes is a free data retrieval call binding the contract method 0x0d6b4c9f. -// -// Solidity: function providerStakes(address ) view returns(uint256) -func (_Providerregistry *ProviderregistrySession) ProviderStakes(arg0 common.Address) (*big.Int, error) { - return _Providerregistry.Contract.ProviderStakes(&_Providerregistry.CallOpts, arg0) -} - -// ProviderStakes is a free data retrieval call binding the contract method 0x0d6b4c9f. -// -// Solidity: function providerStakes(address ) view returns(uint256) -func (_Providerregistry *ProviderregistryCallerSession) ProviderStakes(arg0 common.Address) (*big.Int, error) { - return _Providerregistry.Contract.ProviderStakes(&_Providerregistry.CallOpts, arg0) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_Providerregistry *ProviderregistryCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "proxiableUUID") - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_Providerregistry *ProviderregistrySession) ProxiableUUID() ([32]byte, error) { - return _Providerregistry.Contract.ProxiableUUID(&_Providerregistry.CallOpts) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_Providerregistry *ProviderregistryCallerSession) ProxiableUUID() ([32]byte, error) { - return _Providerregistry.Contract.ProxiableUUID(&_Providerregistry.CallOpts) -} - -// VerifySignature is a free data retrieval call binding the contract method 0x2222e36f. -// -// Solidity: function verifySignature(bytes pubKey, bytes32 message, bytes signature) view returns(bool) -func (_Providerregistry *ProviderregistryCaller) VerifySignature(opts *bind.CallOpts, pubKey []byte, message [32]byte, signature []byte) (bool, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "verifySignature", pubKey, message, signature) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// VerifySignature is a free data retrieval call binding the contract method 0x2222e36f. -// -// Solidity: function verifySignature(bytes pubKey, bytes32 message, bytes signature) view returns(bool) -func (_Providerregistry *ProviderregistrySession) VerifySignature(pubKey []byte, message [32]byte, signature []byte) (bool, error) { - return _Providerregistry.Contract.VerifySignature(&_Providerregistry.CallOpts, pubKey, message, signature) -} - -// VerifySignature is a free data retrieval call binding the contract method 0x2222e36f. -// -// Solidity: function verifySignature(bytes pubKey, bytes32 message, bytes signature) view returns(bool) -func (_Providerregistry *ProviderregistryCallerSession) VerifySignature(pubKey []byte, message [32]byte, signature []byte) (bool, error) { - return _Providerregistry.Contract.VerifySignature(&_Providerregistry.CallOpts, pubKey, message, signature) -} - -// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961. -// -// Solidity: function withdrawalDelay() view returns(uint256) -func (_Providerregistry *ProviderregistryCaller) WithdrawalDelay(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "withdrawalDelay") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961. -// -// Solidity: function withdrawalDelay() view returns(uint256) -func (_Providerregistry *ProviderregistrySession) WithdrawalDelay() (*big.Int, error) { - return _Providerregistry.Contract.WithdrawalDelay(&_Providerregistry.CallOpts) -} - -// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961. -// -// Solidity: function withdrawalDelay() view returns(uint256) -func (_Providerregistry *ProviderregistryCallerSession) WithdrawalDelay() (*big.Int, error) { - return _Providerregistry.Contract.WithdrawalDelay(&_Providerregistry.CallOpts) -} - -// WithdrawalRequests is a free data retrieval call binding the contract method 0x27b380f3. -// -// Solidity: function withdrawalRequests(address ) view returns(uint256) -func (_Providerregistry *ProviderregistryCaller) WithdrawalRequests(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _Providerregistry.contract.Call(opts, &out, "withdrawalRequests", arg0) - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// WithdrawalRequests is a free data retrieval call binding the contract method 0x27b380f3. -// -// Solidity: function withdrawalRequests(address ) view returns(uint256) -func (_Providerregistry *ProviderregistrySession) WithdrawalRequests(arg0 common.Address) (*big.Int, error) { - return _Providerregistry.Contract.WithdrawalRequests(&_Providerregistry.CallOpts, arg0) -} - -// WithdrawalRequests is a free data retrieval call binding the contract method 0x27b380f3. -// -// Solidity: function withdrawalRequests(address ) view returns(uint256) -func (_Providerregistry *ProviderregistryCallerSession) WithdrawalRequests(arg0 common.Address) (*big.Int, error) { - return _Providerregistry.Contract.WithdrawalRequests(&_Providerregistry.CallOpts, arg0) -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_Providerregistry *ProviderregistryTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "acceptOwnership") -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_Providerregistry *ProviderregistrySession) AcceptOwnership() (*types.Transaction, error) { - return _Providerregistry.Contract.AcceptOwnership(&_Providerregistry.TransactOpts) -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_Providerregistry *ProviderregistryTransactorSession) AcceptOwnership() (*types.Transaction, error) { - return _Providerregistry.Contract.AcceptOwnership(&_Providerregistry.TransactOpts) -} - -// AddVerifiedBLSKey is a paid mutator transaction binding the contract method 0x7fd358e4. -// -// Solidity: function addVerifiedBLSKey(bytes blsPublicKey, bytes signature) returns() -func (_Providerregistry *ProviderregistryTransactor) AddVerifiedBLSKey(opts *bind.TransactOpts, blsPublicKey []byte, signature []byte) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "addVerifiedBLSKey", blsPublicKey, signature) -} - -// AddVerifiedBLSKey is a paid mutator transaction binding the contract method 0x7fd358e4. -// -// Solidity: function addVerifiedBLSKey(bytes blsPublicKey, bytes signature) returns() -func (_Providerregistry *ProviderregistrySession) AddVerifiedBLSKey(blsPublicKey []byte, signature []byte) (*types.Transaction, error) { - return _Providerregistry.Contract.AddVerifiedBLSKey(&_Providerregistry.TransactOpts, blsPublicKey, signature) -} - -// AddVerifiedBLSKey is a paid mutator transaction binding the contract method 0x7fd358e4. -// -// Solidity: function addVerifiedBLSKey(bytes blsPublicKey, bytes signature) returns() -func (_Providerregistry *ProviderregistryTransactorSession) AddVerifiedBLSKey(blsPublicKey []byte, signature []byte) (*types.Transaction, error) { - return _Providerregistry.Contract.AddVerifiedBLSKey(&_Providerregistry.TransactOpts, blsPublicKey, signature) -} - -// DelegateRegisterAndStake is a paid mutator transaction binding the contract method 0x3d75c0ba. -// -// Solidity: function delegateRegisterAndStake(address provider) payable returns() -func (_Providerregistry *ProviderregistryTransactor) DelegateRegisterAndStake(opts *bind.TransactOpts, provider common.Address) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "delegateRegisterAndStake", provider) -} - -// DelegateRegisterAndStake is a paid mutator transaction binding the contract method 0x3d75c0ba. -// -// Solidity: function delegateRegisterAndStake(address provider) payable returns() -func (_Providerregistry *ProviderregistrySession) DelegateRegisterAndStake(provider common.Address) (*types.Transaction, error) { - return _Providerregistry.Contract.DelegateRegisterAndStake(&_Providerregistry.TransactOpts, provider) -} - -// DelegateRegisterAndStake is a paid mutator transaction binding the contract method 0x3d75c0ba. -// -// Solidity: function delegateRegisterAndStake(address provider) payable returns() -func (_Providerregistry *ProviderregistryTransactorSession) DelegateRegisterAndStake(provider common.Address) (*types.Transaction, error) { - return _Providerregistry.Contract.DelegateRegisterAndStake(&_Providerregistry.TransactOpts, provider) -} - -// DelegateStake is a paid mutator transaction binding the contract method 0xf094cc39. -// -// Solidity: function delegateStake(address provider) payable returns() -func (_Providerregistry *ProviderregistryTransactor) DelegateStake(opts *bind.TransactOpts, provider common.Address) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "delegateStake", provider) -} - -// DelegateStake is a paid mutator transaction binding the contract method 0xf094cc39. -// -// Solidity: function delegateStake(address provider) payable returns() -func (_Providerregistry *ProviderregistrySession) DelegateStake(provider common.Address) (*types.Transaction, error) { - return _Providerregistry.Contract.DelegateStake(&_Providerregistry.TransactOpts, provider) -} - -// DelegateStake is a paid mutator transaction binding the contract method 0xf094cc39. -// -// Solidity: function delegateStake(address provider) payable returns() -func (_Providerregistry *ProviderregistryTransactorSession) DelegateStake(provider common.Address) (*types.Transaction, error) { - return _Providerregistry.Contract.DelegateStake(&_Providerregistry.TransactOpts, provider) -} - -// Initialize is a paid mutator transaction binding the contract method 0xecfa5f52. -// -// Solidity: function initialize(uint256 _minStake, address _penaltyFeeRecipient, uint256 _feePercent, address _owner, uint256 _withdrawalDelay, uint256 _penaltyFeePayoutPeriod) returns() -func (_Providerregistry *ProviderregistryTransactor) Initialize(opts *bind.TransactOpts, _minStake *big.Int, _penaltyFeeRecipient common.Address, _feePercent *big.Int, _owner common.Address, _withdrawalDelay *big.Int, _penaltyFeePayoutPeriod *big.Int) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "initialize", _minStake, _penaltyFeeRecipient, _feePercent, _owner, _withdrawalDelay, _penaltyFeePayoutPeriod) -} - -// Initialize is a paid mutator transaction binding the contract method 0xecfa5f52. -// -// Solidity: function initialize(uint256 _minStake, address _penaltyFeeRecipient, uint256 _feePercent, address _owner, uint256 _withdrawalDelay, uint256 _penaltyFeePayoutPeriod) returns() -func (_Providerregistry *ProviderregistrySession) Initialize(_minStake *big.Int, _penaltyFeeRecipient common.Address, _feePercent *big.Int, _owner common.Address, _withdrawalDelay *big.Int, _penaltyFeePayoutPeriod *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.Initialize(&_Providerregistry.TransactOpts, _minStake, _penaltyFeeRecipient, _feePercent, _owner, _withdrawalDelay, _penaltyFeePayoutPeriod) -} - -// Initialize is a paid mutator transaction binding the contract method 0xecfa5f52. -// -// Solidity: function initialize(uint256 _minStake, address _penaltyFeeRecipient, uint256 _feePercent, address _owner, uint256 _withdrawalDelay, uint256 _penaltyFeePayoutPeriod) returns() -func (_Providerregistry *ProviderregistryTransactorSession) Initialize(_minStake *big.Int, _penaltyFeeRecipient common.Address, _feePercent *big.Int, _owner common.Address, _withdrawalDelay *big.Int, _penaltyFeePayoutPeriod *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.Initialize(&_Providerregistry.TransactOpts, _minStake, _penaltyFeeRecipient, _feePercent, _owner, _withdrawalDelay, _penaltyFeePayoutPeriod) -} - -// ManuallyWithdrawPenaltyFee is a paid mutator transaction binding the contract method 0x7df61dc1. -// -// Solidity: function manuallyWithdrawPenaltyFee() returns() -func (_Providerregistry *ProviderregistryTransactor) ManuallyWithdrawPenaltyFee(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "manuallyWithdrawPenaltyFee") -} - -// ManuallyWithdrawPenaltyFee is a paid mutator transaction binding the contract method 0x7df61dc1. -// -// Solidity: function manuallyWithdrawPenaltyFee() returns() -func (_Providerregistry *ProviderregistrySession) ManuallyWithdrawPenaltyFee() (*types.Transaction, error) { - return _Providerregistry.Contract.ManuallyWithdrawPenaltyFee(&_Providerregistry.TransactOpts) -} - -// ManuallyWithdrawPenaltyFee is a paid mutator transaction binding the contract method 0x7df61dc1. -// -// Solidity: function manuallyWithdrawPenaltyFee() returns() -func (_Providerregistry *ProviderregistryTransactorSession) ManuallyWithdrawPenaltyFee() (*types.Transaction, error) { - return _Providerregistry.Contract.ManuallyWithdrawPenaltyFee(&_Providerregistry.TransactOpts) -} - -// OverrideAddBLSKey is a paid mutator transaction binding the contract method 0xed5219de. -// -// Solidity: function overrideAddBLSKey(address provider, bytes blsPublicKey) returns() -func (_Providerregistry *ProviderregistryTransactor) OverrideAddBLSKey(opts *bind.TransactOpts, provider common.Address, blsPublicKey []byte) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "overrideAddBLSKey", provider, blsPublicKey) -} - -// OverrideAddBLSKey is a paid mutator transaction binding the contract method 0xed5219de. -// -// Solidity: function overrideAddBLSKey(address provider, bytes blsPublicKey) returns() -func (_Providerregistry *ProviderregistrySession) OverrideAddBLSKey(provider common.Address, blsPublicKey []byte) (*types.Transaction, error) { - return _Providerregistry.Contract.OverrideAddBLSKey(&_Providerregistry.TransactOpts, provider, blsPublicKey) -} - -// OverrideAddBLSKey is a paid mutator transaction binding the contract method 0xed5219de. -// -// Solidity: function overrideAddBLSKey(address provider, bytes blsPublicKey) returns() -func (_Providerregistry *ProviderregistryTransactorSession) OverrideAddBLSKey(provider common.Address, blsPublicKey []byte) (*types.Transaction, error) { - return _Providerregistry.Contract.OverrideAddBLSKey(&_Providerregistry.TransactOpts, provider, blsPublicKey) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_Providerregistry *ProviderregistryTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "pause") -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_Providerregistry *ProviderregistrySession) Pause() (*types.Transaction, error) { - return _Providerregistry.Contract.Pause(&_Providerregistry.TransactOpts) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_Providerregistry *ProviderregistryTransactorSession) Pause() (*types.Transaction, error) { - return _Providerregistry.Contract.Pause(&_Providerregistry.TransactOpts) -} - -// RegisterAndStake is a paid mutator transaction binding the contract method 0x84d180ee. -// -// Solidity: function registerAndStake() payable returns() -func (_Providerregistry *ProviderregistryTransactor) RegisterAndStake(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "registerAndStake") -} - -// RegisterAndStake is a paid mutator transaction binding the contract method 0x84d180ee. -// -// Solidity: function registerAndStake() payable returns() -func (_Providerregistry *ProviderregistrySession) RegisterAndStake() (*types.Transaction, error) { - return _Providerregistry.Contract.RegisterAndStake(&_Providerregistry.TransactOpts) -} - -// RegisterAndStake is a paid mutator transaction binding the contract method 0x84d180ee. -// -// Solidity: function registerAndStake() payable returns() -func (_Providerregistry *ProviderregistryTransactorSession) RegisterAndStake() (*types.Transaction, error) { - return _Providerregistry.Contract.RegisterAndStake(&_Providerregistry.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Providerregistry *ProviderregistryTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Providerregistry *ProviderregistrySession) RenounceOwnership() (*types.Transaction, error) { - return _Providerregistry.Contract.RenounceOwnership(&_Providerregistry.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Providerregistry *ProviderregistryTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _Providerregistry.Contract.RenounceOwnership(&_Providerregistry.TransactOpts) -} - -// SetFeePayoutPeriod is a paid mutator transaction binding the contract method 0xcc5ad073. -// -// Solidity: function setFeePayoutPeriod(uint256 _feePayoutPeriod) returns() -func (_Providerregistry *ProviderregistryTransactor) SetFeePayoutPeriod(opts *bind.TransactOpts, _feePayoutPeriod *big.Int) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "setFeePayoutPeriod", _feePayoutPeriod) -} - -// SetFeePayoutPeriod is a paid mutator transaction binding the contract method 0xcc5ad073. -// -// Solidity: function setFeePayoutPeriod(uint256 _feePayoutPeriod) returns() -func (_Providerregistry *ProviderregistrySession) SetFeePayoutPeriod(_feePayoutPeriod *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.SetFeePayoutPeriod(&_Providerregistry.TransactOpts, _feePayoutPeriod) -} - -// SetFeePayoutPeriod is a paid mutator transaction binding the contract method 0xcc5ad073. -// -// Solidity: function setFeePayoutPeriod(uint256 _feePayoutPeriod) returns() -func (_Providerregistry *ProviderregistryTransactorSession) SetFeePayoutPeriod(_feePayoutPeriod *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.SetFeePayoutPeriod(&_Providerregistry.TransactOpts, _feePayoutPeriod) -} - -// SetMinStake is a paid mutator transaction binding the contract method 0x8c80fd90. -// -// Solidity: function setMinStake(uint256 _minStake) returns() -func (_Providerregistry *ProviderregistryTransactor) SetMinStake(opts *bind.TransactOpts, _minStake *big.Int) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "setMinStake", _minStake) -} - -// SetMinStake is a paid mutator transaction binding the contract method 0x8c80fd90. -// -// Solidity: function setMinStake(uint256 _minStake) returns() -func (_Providerregistry *ProviderregistrySession) SetMinStake(_minStake *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.SetMinStake(&_Providerregistry.TransactOpts, _minStake) -} - -// SetMinStake is a paid mutator transaction binding the contract method 0x8c80fd90. -// -// Solidity: function setMinStake(uint256 _minStake) returns() -func (_Providerregistry *ProviderregistryTransactorSession) SetMinStake(_minStake *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.SetMinStake(&_Providerregistry.TransactOpts, _minStake) -} - -// SetNewFeePercent is a paid mutator transaction binding the contract method 0x3221f6db. -// -// Solidity: function setNewFeePercent(uint256 newFeePercent) returns() -func (_Providerregistry *ProviderregistryTransactor) SetNewFeePercent(opts *bind.TransactOpts, newFeePercent *big.Int) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "setNewFeePercent", newFeePercent) -} - -// SetNewFeePercent is a paid mutator transaction binding the contract method 0x3221f6db. -// -// Solidity: function setNewFeePercent(uint256 newFeePercent) returns() -func (_Providerregistry *ProviderregistrySession) SetNewFeePercent(newFeePercent *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.SetNewFeePercent(&_Providerregistry.TransactOpts, newFeePercent) -} - -// SetNewFeePercent is a paid mutator transaction binding the contract method 0x3221f6db. -// -// Solidity: function setNewFeePercent(uint256 newFeePercent) returns() -func (_Providerregistry *ProviderregistryTransactorSession) SetNewFeePercent(newFeePercent *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.SetNewFeePercent(&_Providerregistry.TransactOpts, newFeePercent) -} - -// SetNewPenaltyFeeRecipient is a paid mutator transaction binding the contract method 0xc7cc6f80. -// -// Solidity: function setNewPenaltyFeeRecipient(address newFeeRecipient) returns() -func (_Providerregistry *ProviderregistryTransactor) SetNewPenaltyFeeRecipient(opts *bind.TransactOpts, newFeeRecipient common.Address) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "setNewPenaltyFeeRecipient", newFeeRecipient) -} - -// SetNewPenaltyFeeRecipient is a paid mutator transaction binding the contract method 0xc7cc6f80. -// -// Solidity: function setNewPenaltyFeeRecipient(address newFeeRecipient) returns() -func (_Providerregistry *ProviderregistrySession) SetNewPenaltyFeeRecipient(newFeeRecipient common.Address) (*types.Transaction, error) { - return _Providerregistry.Contract.SetNewPenaltyFeeRecipient(&_Providerregistry.TransactOpts, newFeeRecipient) -} - -// SetNewPenaltyFeeRecipient is a paid mutator transaction binding the contract method 0xc7cc6f80. -// -// Solidity: function setNewPenaltyFeeRecipient(address newFeeRecipient) returns() -func (_Providerregistry *ProviderregistryTransactorSession) SetNewPenaltyFeeRecipient(newFeeRecipient common.Address) (*types.Transaction, error) { - return _Providerregistry.Contract.SetNewPenaltyFeeRecipient(&_Providerregistry.TransactOpts, newFeeRecipient) -} - -// SetPreconfManager is a paid mutator transaction binding the contract method 0x3b79297c. -// -// Solidity: function setPreconfManager(address contractAddress) returns() -func (_Providerregistry *ProviderregistryTransactor) SetPreconfManager(opts *bind.TransactOpts, contractAddress common.Address) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "setPreconfManager", contractAddress) -} - -// SetPreconfManager is a paid mutator transaction binding the contract method 0x3b79297c. -// -// Solidity: function setPreconfManager(address contractAddress) returns() -func (_Providerregistry *ProviderregistrySession) SetPreconfManager(contractAddress common.Address) (*types.Transaction, error) { - return _Providerregistry.Contract.SetPreconfManager(&_Providerregistry.TransactOpts, contractAddress) -} - -// SetPreconfManager is a paid mutator transaction binding the contract method 0x3b79297c. -// -// Solidity: function setPreconfManager(address contractAddress) returns() -func (_Providerregistry *ProviderregistryTransactorSession) SetPreconfManager(contractAddress common.Address) (*types.Transaction, error) { - return _Providerregistry.Contract.SetPreconfManager(&_Providerregistry.TransactOpts, contractAddress) -} - -// SetWithdrawalDelay is a paid mutator transaction binding the contract method 0xd2c13da5. -// -// Solidity: function setWithdrawalDelay(uint256 _withdrawalDelay) returns() -func (_Providerregistry *ProviderregistryTransactor) SetWithdrawalDelay(opts *bind.TransactOpts, _withdrawalDelay *big.Int) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "setWithdrawalDelay", _withdrawalDelay) -} - -// SetWithdrawalDelay is a paid mutator transaction binding the contract method 0xd2c13da5. -// -// Solidity: function setWithdrawalDelay(uint256 _withdrawalDelay) returns() -func (_Providerregistry *ProviderregistrySession) SetWithdrawalDelay(_withdrawalDelay *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.SetWithdrawalDelay(&_Providerregistry.TransactOpts, _withdrawalDelay) -} - -// SetWithdrawalDelay is a paid mutator transaction binding the contract method 0xd2c13da5. -// -// Solidity: function setWithdrawalDelay(uint256 _withdrawalDelay) returns() -func (_Providerregistry *ProviderregistryTransactorSession) SetWithdrawalDelay(_withdrawalDelay *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.SetWithdrawalDelay(&_Providerregistry.TransactOpts, _withdrawalDelay) -} - -// Slash is a paid mutator transaction binding the contract method 0x76ddeafc. -// -// Solidity: function slash(uint256 amt, uint256 slashAmt, address provider, address bidder, uint256 residualBidPercentAfterDecay) returns() -func (_Providerregistry *ProviderregistryTransactor) Slash(opts *bind.TransactOpts, amt *big.Int, slashAmt *big.Int, provider common.Address, bidder common.Address, residualBidPercentAfterDecay *big.Int) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "slash", amt, slashAmt, provider, bidder, residualBidPercentAfterDecay) -} - -// Slash is a paid mutator transaction binding the contract method 0x76ddeafc. -// -// Solidity: function slash(uint256 amt, uint256 slashAmt, address provider, address bidder, uint256 residualBidPercentAfterDecay) returns() -func (_Providerregistry *ProviderregistrySession) Slash(amt *big.Int, slashAmt *big.Int, provider common.Address, bidder common.Address, residualBidPercentAfterDecay *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.Slash(&_Providerregistry.TransactOpts, amt, slashAmt, provider, bidder, residualBidPercentAfterDecay) -} - -// Slash is a paid mutator transaction binding the contract method 0x76ddeafc. -// -// Solidity: function slash(uint256 amt, uint256 slashAmt, address provider, address bidder, uint256 residualBidPercentAfterDecay) returns() -func (_Providerregistry *ProviderregistryTransactorSession) Slash(amt *big.Int, slashAmt *big.Int, provider common.Address, bidder common.Address, residualBidPercentAfterDecay *big.Int) (*types.Transaction, error) { - return _Providerregistry.Contract.Slash(&_Providerregistry.TransactOpts, amt, slashAmt, provider, bidder, residualBidPercentAfterDecay) -} - -// Stake is a paid mutator transaction binding the contract method 0x3a4b66f1. -// -// Solidity: function stake() payable returns() -func (_Providerregistry *ProviderregistryTransactor) Stake(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "stake") -} - -// Stake is a paid mutator transaction binding the contract method 0x3a4b66f1. -// -// Solidity: function stake() payable returns() -func (_Providerregistry *ProviderregistrySession) Stake() (*types.Transaction, error) { - return _Providerregistry.Contract.Stake(&_Providerregistry.TransactOpts) -} - -// Stake is a paid mutator transaction binding the contract method 0x3a4b66f1. -// -// Solidity: function stake() payable returns() -func (_Providerregistry *ProviderregistryTransactorSession) Stake() (*types.Transaction, error) { - return _Providerregistry.Contract.Stake(&_Providerregistry.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Providerregistry *ProviderregistryTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Providerregistry *ProviderregistrySession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Providerregistry.Contract.TransferOwnership(&_Providerregistry.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Providerregistry *ProviderregistryTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Providerregistry.Contract.TransferOwnership(&_Providerregistry.TransactOpts, newOwner) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_Providerregistry *ProviderregistryTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "unpause") -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_Providerregistry *ProviderregistrySession) Unpause() (*types.Transaction, error) { - return _Providerregistry.Contract.Unpause(&_Providerregistry.TransactOpts) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_Providerregistry *ProviderregistryTransactorSession) Unpause() (*types.Transaction, error) { - return _Providerregistry.Contract.Unpause(&_Providerregistry.TransactOpts) -} - -// Unstake is a paid mutator transaction binding the contract method 0x2def6620. -// -// Solidity: function unstake() returns() -func (_Providerregistry *ProviderregistryTransactor) Unstake(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "unstake") -} - -// Unstake is a paid mutator transaction binding the contract method 0x2def6620. -// -// Solidity: function unstake() returns() -func (_Providerregistry *ProviderregistrySession) Unstake() (*types.Transaction, error) { - return _Providerregistry.Contract.Unstake(&_Providerregistry.TransactOpts) -} - -// Unstake is a paid mutator transaction binding the contract method 0x2def6620. -// -// Solidity: function unstake() returns() -func (_Providerregistry *ProviderregistryTransactorSession) Unstake() (*types.Transaction, error) { - return _Providerregistry.Contract.Unstake(&_Providerregistry.TransactOpts) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_Providerregistry *ProviderregistryTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_Providerregistry *ProviderregistrySession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _Providerregistry.Contract.UpgradeToAndCall(&_Providerregistry.TransactOpts, newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_Providerregistry *ProviderregistryTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _Providerregistry.Contract.UpgradeToAndCall(&_Providerregistry.TransactOpts, newImplementation, data) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x3ccfd60b. -// -// Solidity: function withdraw() returns() -func (_Providerregistry *ProviderregistryTransactor) Withdraw(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "withdraw") -} - -// Withdraw is a paid mutator transaction binding the contract method 0x3ccfd60b. -// -// Solidity: function withdraw() returns() -func (_Providerregistry *ProviderregistrySession) Withdraw() (*types.Transaction, error) { - return _Providerregistry.Contract.Withdraw(&_Providerregistry.TransactOpts) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x3ccfd60b. -// -// Solidity: function withdraw() returns() -func (_Providerregistry *ProviderregistryTransactorSession) Withdraw() (*types.Transaction, error) { - return _Providerregistry.Contract.Withdraw(&_Providerregistry.TransactOpts) -} - -// WithdrawSlashedAmount is a paid mutator transaction binding the contract method 0x70d6092b. -// -// Solidity: function withdrawSlashedAmount() returns() -func (_Providerregistry *ProviderregistryTransactor) WithdrawSlashedAmount(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.Transact(opts, "withdrawSlashedAmount") -} - -// WithdrawSlashedAmount is a paid mutator transaction binding the contract method 0x70d6092b. -// -// Solidity: function withdrawSlashedAmount() returns() -func (_Providerregistry *ProviderregistrySession) WithdrawSlashedAmount() (*types.Transaction, error) { - return _Providerregistry.Contract.WithdrawSlashedAmount(&_Providerregistry.TransactOpts) -} - -// WithdrawSlashedAmount is a paid mutator transaction binding the contract method 0x70d6092b. -// -// Solidity: function withdrawSlashedAmount() returns() -func (_Providerregistry *ProviderregistryTransactorSession) WithdrawSlashedAmount() (*types.Transaction, error) { - return _Providerregistry.Contract.WithdrawSlashedAmount(&_Providerregistry.TransactOpts) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_Providerregistry *ProviderregistryTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _Providerregistry.contract.RawTransact(opts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_Providerregistry *ProviderregistrySession) Fallback(calldata []byte) (*types.Transaction, error) { - return _Providerregistry.Contract.Fallback(&_Providerregistry.TransactOpts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_Providerregistry *ProviderregistryTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _Providerregistry.Contract.Fallback(&_Providerregistry.TransactOpts, calldata) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_Providerregistry *ProviderregistryTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Providerregistry.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_Providerregistry *ProviderregistrySession) Receive() (*types.Transaction, error) { - return _Providerregistry.Contract.Receive(&_Providerregistry.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_Providerregistry *ProviderregistryTransactorSession) Receive() (*types.Transaction, error) { - return _Providerregistry.Contract.Receive(&_Providerregistry.TransactOpts) -} - -// ProviderregistryBLSKeyAddedIterator is returned from FilterBLSKeyAdded and is used to iterate over the raw logs and unpacked data for BLSKeyAdded events raised by the Providerregistry contract. -type ProviderregistryBLSKeyAddedIterator struct { - Event *ProviderregistryBLSKeyAdded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryBLSKeyAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryBLSKeyAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryBLSKeyAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryBLSKeyAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryBLSKeyAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryBLSKeyAdded represents a BLSKeyAdded event raised by the Providerregistry contract. -type ProviderregistryBLSKeyAdded struct { - Provider common.Address - BlsPublicKey []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBLSKeyAdded is a free log retrieval operation binding the contract event 0xc81315c03024fb67ddfe902ce0153b3d56572c0569de9564fcb90cc174a960bf. -// -// Solidity: event BLSKeyAdded(address indexed provider, bytes blsPublicKey) -func (_Providerregistry *ProviderregistryFilterer) FilterBLSKeyAdded(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryBLSKeyAddedIterator, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "BLSKeyAdded", providerRule) - if err != nil { - return nil, err - } - return &ProviderregistryBLSKeyAddedIterator{contract: _Providerregistry.contract, event: "BLSKeyAdded", logs: logs, sub: sub}, nil -} - -// WatchBLSKeyAdded is a free log subscription operation binding the contract event 0xc81315c03024fb67ddfe902ce0153b3d56572c0569de9564fcb90cc174a960bf. -// -// Solidity: event BLSKeyAdded(address indexed provider, bytes blsPublicKey) -func (_Providerregistry *ProviderregistryFilterer) WatchBLSKeyAdded(opts *bind.WatchOpts, sink chan<- *ProviderregistryBLSKeyAdded, provider []common.Address) (event.Subscription, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "BLSKeyAdded", providerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryBLSKeyAdded) - if err := _Providerregistry.contract.UnpackLog(event, "BLSKeyAdded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBLSKeyAdded is a log parse operation binding the contract event 0xc81315c03024fb67ddfe902ce0153b3d56572c0569de9564fcb90cc174a960bf. -// -// Solidity: event BLSKeyAdded(address indexed provider, bytes blsPublicKey) -func (_Providerregistry *ProviderregistryFilterer) ParseBLSKeyAdded(log types.Log) (*ProviderregistryBLSKeyAdded, error) { - event := new(ProviderregistryBLSKeyAdded) - if err := _Providerregistry.contract.UnpackLog(event, "BLSKeyAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryBidderWithdrawSlashedAmountIterator is returned from FilterBidderWithdrawSlashedAmount and is used to iterate over the raw logs and unpacked data for BidderWithdrawSlashedAmount events raised by the Providerregistry contract. -type ProviderregistryBidderWithdrawSlashedAmountIterator struct { - Event *ProviderregistryBidderWithdrawSlashedAmount // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryBidderWithdrawSlashedAmountIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryBidderWithdrawSlashedAmount) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryBidderWithdrawSlashedAmount) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryBidderWithdrawSlashedAmountIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryBidderWithdrawSlashedAmountIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryBidderWithdrawSlashedAmount represents a BidderWithdrawSlashedAmount event raised by the Providerregistry contract. -type ProviderregistryBidderWithdrawSlashedAmount struct { - Bidder common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBidderWithdrawSlashedAmount is a free log retrieval operation binding the contract event 0x37f4dc41eefcb0d2f96341475d50bc699b0752135621b1fabba90b41e62fc68d. -// -// Solidity: event BidderWithdrawSlashedAmount(address bidder, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) FilterBidderWithdrawSlashedAmount(opts *bind.FilterOpts) (*ProviderregistryBidderWithdrawSlashedAmountIterator, error) { - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "BidderWithdrawSlashedAmount") - if err != nil { - return nil, err - } - return &ProviderregistryBidderWithdrawSlashedAmountIterator{contract: _Providerregistry.contract, event: "BidderWithdrawSlashedAmount", logs: logs, sub: sub}, nil -} - -// WatchBidderWithdrawSlashedAmount is a free log subscription operation binding the contract event 0x37f4dc41eefcb0d2f96341475d50bc699b0752135621b1fabba90b41e62fc68d. -// -// Solidity: event BidderWithdrawSlashedAmount(address bidder, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) WatchBidderWithdrawSlashedAmount(opts *bind.WatchOpts, sink chan<- *ProviderregistryBidderWithdrawSlashedAmount) (event.Subscription, error) { - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "BidderWithdrawSlashedAmount") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryBidderWithdrawSlashedAmount) - if err := _Providerregistry.contract.UnpackLog(event, "BidderWithdrawSlashedAmount", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBidderWithdrawSlashedAmount is a log parse operation binding the contract event 0x37f4dc41eefcb0d2f96341475d50bc699b0752135621b1fabba90b41e62fc68d. -// -// Solidity: event BidderWithdrawSlashedAmount(address bidder, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) ParseBidderWithdrawSlashedAmount(log types.Log) (*ProviderregistryBidderWithdrawSlashedAmount, error) { - event := new(ProviderregistryBidderWithdrawSlashedAmount) - if err := _Providerregistry.contract.UnpackLog(event, "BidderWithdrawSlashedAmount", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryFeePayoutPeriodUpdatedIterator is returned from FilterFeePayoutPeriodUpdated and is used to iterate over the raw logs and unpacked data for FeePayoutPeriodUpdated events raised by the Providerregistry contract. -type ProviderregistryFeePayoutPeriodUpdatedIterator struct { - Event *ProviderregistryFeePayoutPeriodUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryFeePayoutPeriodUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryFeePayoutPeriodUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryFeePayoutPeriodUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryFeePayoutPeriodUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryFeePayoutPeriodUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryFeePayoutPeriodUpdated represents a FeePayoutPeriodUpdated event raised by the Providerregistry contract. -type ProviderregistryFeePayoutPeriodUpdated struct { - NewFeePayoutPeriod *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFeePayoutPeriodUpdated is a free log retrieval operation binding the contract event 0xefd7aa598240290a91e058be60cb457231c4874ea3d308c1df4c14156d58f9cb. -// -// Solidity: event FeePayoutPeriodUpdated(uint256 indexed newFeePayoutPeriod) -func (_Providerregistry *ProviderregistryFilterer) FilterFeePayoutPeriodUpdated(opts *bind.FilterOpts, newFeePayoutPeriod []*big.Int) (*ProviderregistryFeePayoutPeriodUpdatedIterator, error) { - var newFeePayoutPeriodRule []interface{} - for _, newFeePayoutPeriodItem := range newFeePayoutPeriod { - newFeePayoutPeriodRule = append(newFeePayoutPeriodRule, newFeePayoutPeriodItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "FeePayoutPeriodUpdated", newFeePayoutPeriodRule) - if err != nil { - return nil, err - } - return &ProviderregistryFeePayoutPeriodUpdatedIterator{contract: _Providerregistry.contract, event: "FeePayoutPeriodUpdated", logs: logs, sub: sub}, nil -} - -// WatchFeePayoutPeriodUpdated is a free log subscription operation binding the contract event 0xefd7aa598240290a91e058be60cb457231c4874ea3d308c1df4c14156d58f9cb. -// -// Solidity: event FeePayoutPeriodUpdated(uint256 indexed newFeePayoutPeriod) -func (_Providerregistry *ProviderregistryFilterer) WatchFeePayoutPeriodUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryFeePayoutPeriodUpdated, newFeePayoutPeriod []*big.Int) (event.Subscription, error) { - var newFeePayoutPeriodRule []interface{} - for _, newFeePayoutPeriodItem := range newFeePayoutPeriod { - newFeePayoutPeriodRule = append(newFeePayoutPeriodRule, newFeePayoutPeriodItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "FeePayoutPeriodUpdated", newFeePayoutPeriodRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryFeePayoutPeriodUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "FeePayoutPeriodUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseFeePayoutPeriodUpdated is a log parse operation binding the contract event 0xefd7aa598240290a91e058be60cb457231c4874ea3d308c1df4c14156d58f9cb. -// -// Solidity: event FeePayoutPeriodUpdated(uint256 indexed newFeePayoutPeriod) -func (_Providerregistry *ProviderregistryFilterer) ParseFeePayoutPeriodUpdated(log types.Log) (*ProviderregistryFeePayoutPeriodUpdated, error) { - event := new(ProviderregistryFeePayoutPeriodUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "FeePayoutPeriodUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryFeePercentUpdatedIterator is returned from FilterFeePercentUpdated and is used to iterate over the raw logs and unpacked data for FeePercentUpdated events raised by the Providerregistry contract. -type ProviderregistryFeePercentUpdatedIterator struct { - Event *ProviderregistryFeePercentUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryFeePercentUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryFeePercentUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryFeePercentUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryFeePercentUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryFeePercentUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryFeePercentUpdated represents a FeePercentUpdated event raised by the Providerregistry contract. -type ProviderregistryFeePercentUpdated struct { - NewFeePercent *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFeePercentUpdated is a free log retrieval operation binding the contract event 0x64d1887078a96d281ed60dd69ba75bfb6b5cd2cb4c2d2538b2eb7816a4c646ea. -// -// Solidity: event FeePercentUpdated(uint256 indexed newFeePercent) -func (_Providerregistry *ProviderregistryFilterer) FilterFeePercentUpdated(opts *bind.FilterOpts, newFeePercent []*big.Int) (*ProviderregistryFeePercentUpdatedIterator, error) { - var newFeePercentRule []interface{} - for _, newFeePercentItem := range newFeePercent { - newFeePercentRule = append(newFeePercentRule, newFeePercentItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "FeePercentUpdated", newFeePercentRule) - if err != nil { - return nil, err - } - return &ProviderregistryFeePercentUpdatedIterator{contract: _Providerregistry.contract, event: "FeePercentUpdated", logs: logs, sub: sub}, nil -} - -// WatchFeePercentUpdated is a free log subscription operation binding the contract event 0x64d1887078a96d281ed60dd69ba75bfb6b5cd2cb4c2d2538b2eb7816a4c646ea. -// -// Solidity: event FeePercentUpdated(uint256 indexed newFeePercent) -func (_Providerregistry *ProviderregistryFilterer) WatchFeePercentUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryFeePercentUpdated, newFeePercent []*big.Int) (event.Subscription, error) { - var newFeePercentRule []interface{} - for _, newFeePercentItem := range newFeePercent { - newFeePercentRule = append(newFeePercentRule, newFeePercentItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "FeePercentUpdated", newFeePercentRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryFeePercentUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "FeePercentUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseFeePercentUpdated is a log parse operation binding the contract event 0x64d1887078a96d281ed60dd69ba75bfb6b5cd2cb4c2d2538b2eb7816a4c646ea. -// -// Solidity: event FeePercentUpdated(uint256 indexed newFeePercent) -func (_Providerregistry *ProviderregistryFilterer) ParseFeePercentUpdated(log types.Log) (*ProviderregistryFeePercentUpdated, error) { - event := new(ProviderregistryFeePercentUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "FeePercentUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryFeeTransferIterator is returned from FilterFeeTransfer and is used to iterate over the raw logs and unpacked data for FeeTransfer events raised by the Providerregistry contract. -type ProviderregistryFeeTransferIterator struct { - Event *ProviderregistryFeeTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryFeeTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryFeeTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryFeeTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryFeeTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryFeeTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryFeeTransfer represents a FeeTransfer event raised by the Providerregistry contract. -type ProviderregistryFeeTransfer struct { - Amount *big.Int - Recipient common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFeeTransfer is a free log retrieval operation binding the contract event 0x445bb6587d6cd09e272a0d1e5179e772b547dbf1041b6163f86bb62e86f25031. -// -// Solidity: event FeeTransfer(uint256 amount, address indexed recipient) -func (_Providerregistry *ProviderregistryFilterer) FilterFeeTransfer(opts *bind.FilterOpts, recipient []common.Address) (*ProviderregistryFeeTransferIterator, error) { - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "FeeTransfer", recipientRule) - if err != nil { - return nil, err - } - return &ProviderregistryFeeTransferIterator{contract: _Providerregistry.contract, event: "FeeTransfer", logs: logs, sub: sub}, nil -} - -// WatchFeeTransfer is a free log subscription operation binding the contract event 0x445bb6587d6cd09e272a0d1e5179e772b547dbf1041b6163f86bb62e86f25031. -// -// Solidity: event FeeTransfer(uint256 amount, address indexed recipient) -func (_Providerregistry *ProviderregistryFilterer) WatchFeeTransfer(opts *bind.WatchOpts, sink chan<- *ProviderregistryFeeTransfer, recipient []common.Address) (event.Subscription, error) { - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "FeeTransfer", recipientRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryFeeTransfer) - if err := _Providerregistry.contract.UnpackLog(event, "FeeTransfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseFeeTransfer is a log parse operation binding the contract event 0x445bb6587d6cd09e272a0d1e5179e772b547dbf1041b6163f86bb62e86f25031. -// -// Solidity: event FeeTransfer(uint256 amount, address indexed recipient) -func (_Providerregistry *ProviderregistryFilterer) ParseFeeTransfer(log types.Log) (*ProviderregistryFeeTransfer, error) { - event := new(ProviderregistryFeeTransfer) - if err := _Providerregistry.contract.UnpackLog(event, "FeeTransfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryFundsDepositedIterator is returned from FilterFundsDeposited and is used to iterate over the raw logs and unpacked data for FundsDeposited events raised by the Providerregistry contract. -type ProviderregistryFundsDepositedIterator struct { - Event *ProviderregistryFundsDeposited // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryFundsDepositedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryFundsDeposited) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryFundsDeposited) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryFundsDepositedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryFundsDepositedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryFundsDeposited represents a FundsDeposited event raised by the Providerregistry contract. -type ProviderregistryFundsDeposited struct { - Provider common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFundsDeposited is a free log retrieval operation binding the contract event 0x543ba50a5eec5e6178218e364b1d0f396157b3c8fa278522c2cb7fd99407d474. -// -// Solidity: event FundsDeposited(address indexed provider, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) FilterFundsDeposited(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryFundsDepositedIterator, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "FundsDeposited", providerRule) - if err != nil { - return nil, err - } - return &ProviderregistryFundsDepositedIterator{contract: _Providerregistry.contract, event: "FundsDeposited", logs: logs, sub: sub}, nil -} - -// WatchFundsDeposited is a free log subscription operation binding the contract event 0x543ba50a5eec5e6178218e364b1d0f396157b3c8fa278522c2cb7fd99407d474. -// -// Solidity: event FundsDeposited(address indexed provider, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) WatchFundsDeposited(opts *bind.WatchOpts, sink chan<- *ProviderregistryFundsDeposited, provider []common.Address) (event.Subscription, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "FundsDeposited", providerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryFundsDeposited) - if err := _Providerregistry.contract.UnpackLog(event, "FundsDeposited", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseFundsDeposited is a log parse operation binding the contract event 0x543ba50a5eec5e6178218e364b1d0f396157b3c8fa278522c2cb7fd99407d474. -// -// Solidity: event FundsDeposited(address indexed provider, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) ParseFundsDeposited(log types.Log) (*ProviderregistryFundsDeposited, error) { - event := new(ProviderregistryFundsDeposited) - if err := _Providerregistry.contract.UnpackLog(event, "FundsDeposited", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryFundsSlashedIterator is returned from FilterFundsSlashed and is used to iterate over the raw logs and unpacked data for FundsSlashed events raised by the Providerregistry contract. -type ProviderregistryFundsSlashedIterator struct { - Event *ProviderregistryFundsSlashed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryFundsSlashedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryFundsSlashed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryFundsSlashed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryFundsSlashedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryFundsSlashedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryFundsSlashed represents a FundsSlashed event raised by the Providerregistry contract. -type ProviderregistryFundsSlashed struct { - Provider common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFundsSlashed is a free log retrieval operation binding the contract event 0x4a00481d3f7b0802643df0bdfb9bfc491a24ffca3eb1becc9fe8b525e0427a74. -// -// Solidity: event FundsSlashed(address indexed provider, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) FilterFundsSlashed(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryFundsSlashedIterator, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "FundsSlashed", providerRule) - if err != nil { - return nil, err - } - return &ProviderregistryFundsSlashedIterator{contract: _Providerregistry.contract, event: "FundsSlashed", logs: logs, sub: sub}, nil -} - -// WatchFundsSlashed is a free log subscription operation binding the contract event 0x4a00481d3f7b0802643df0bdfb9bfc491a24ffca3eb1becc9fe8b525e0427a74. -// -// Solidity: event FundsSlashed(address indexed provider, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) WatchFundsSlashed(opts *bind.WatchOpts, sink chan<- *ProviderregistryFundsSlashed, provider []common.Address) (event.Subscription, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "FundsSlashed", providerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryFundsSlashed) - if err := _Providerregistry.contract.UnpackLog(event, "FundsSlashed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseFundsSlashed is a log parse operation binding the contract event 0x4a00481d3f7b0802643df0bdfb9bfc491a24ffca3eb1becc9fe8b525e0427a74. -// -// Solidity: event FundsSlashed(address indexed provider, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) ParseFundsSlashed(log types.Log) (*ProviderregistryFundsSlashed, error) { - event := new(ProviderregistryFundsSlashed) - if err := _Providerregistry.contract.UnpackLog(event, "FundsSlashed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Providerregistry contract. -type ProviderregistryInitializedIterator struct { - Event *ProviderregistryInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryInitialized represents a Initialized event raised by the Providerregistry contract. -type ProviderregistryInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Providerregistry *ProviderregistryFilterer) FilterInitialized(opts *bind.FilterOpts) (*ProviderregistryInitializedIterator, error) { - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ProviderregistryInitializedIterator{contract: _Providerregistry.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Providerregistry *ProviderregistryFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ProviderregistryInitialized) (event.Subscription, error) { - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryInitialized) - if err := _Providerregistry.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Providerregistry *ProviderregistryFilterer) ParseInitialized(log types.Log) (*ProviderregistryInitialized, error) { - event := new(ProviderregistryInitialized) - if err := _Providerregistry.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryInsufficientFundsToSlashIterator is returned from FilterInsufficientFundsToSlash and is used to iterate over the raw logs and unpacked data for InsufficientFundsToSlash events raised by the Providerregistry contract. -type ProviderregistryInsufficientFundsToSlashIterator struct { - Event *ProviderregistryInsufficientFundsToSlash // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryInsufficientFundsToSlashIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryInsufficientFundsToSlash) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryInsufficientFundsToSlash) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryInsufficientFundsToSlashIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryInsufficientFundsToSlashIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryInsufficientFundsToSlash represents a InsufficientFundsToSlash event raised by the Providerregistry contract. -type ProviderregistryInsufficientFundsToSlash struct { - Provider common.Address - ProviderStake *big.Int - ResidualAmount *big.Int - PenaltyFee *big.Int - SlashAmt *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInsufficientFundsToSlash is a free log retrieval operation binding the contract event 0x358857ec44573677cd31f4c53a96a9a253bfaea0ae485b613fd33a99bacd79dd. -// -// Solidity: event InsufficientFundsToSlash(address indexed provider, uint256 providerStake, uint256 residualAmount, uint256 penaltyFee, uint256 slashAmt) -func (_Providerregistry *ProviderregistryFilterer) FilterInsufficientFundsToSlash(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryInsufficientFundsToSlashIterator, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "InsufficientFundsToSlash", providerRule) - if err != nil { - return nil, err - } - return &ProviderregistryInsufficientFundsToSlashIterator{contract: _Providerregistry.contract, event: "InsufficientFundsToSlash", logs: logs, sub: sub}, nil -} - -// WatchInsufficientFundsToSlash is a free log subscription operation binding the contract event 0x358857ec44573677cd31f4c53a96a9a253bfaea0ae485b613fd33a99bacd79dd. -// -// Solidity: event InsufficientFundsToSlash(address indexed provider, uint256 providerStake, uint256 residualAmount, uint256 penaltyFee, uint256 slashAmt) -func (_Providerregistry *ProviderregistryFilterer) WatchInsufficientFundsToSlash(opts *bind.WatchOpts, sink chan<- *ProviderregistryInsufficientFundsToSlash, provider []common.Address) (event.Subscription, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "InsufficientFundsToSlash", providerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryInsufficientFundsToSlash) - if err := _Providerregistry.contract.UnpackLog(event, "InsufficientFundsToSlash", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInsufficientFundsToSlash is a log parse operation binding the contract event 0x358857ec44573677cd31f4c53a96a9a253bfaea0ae485b613fd33a99bacd79dd. -// -// Solidity: event InsufficientFundsToSlash(address indexed provider, uint256 providerStake, uint256 residualAmount, uint256 penaltyFee, uint256 slashAmt) -func (_Providerregistry *ProviderregistryFilterer) ParseInsufficientFundsToSlash(log types.Log) (*ProviderregistryInsufficientFundsToSlash, error) { - event := new(ProviderregistryInsufficientFundsToSlash) - if err := _Providerregistry.contract.UnpackLog(event, "InsufficientFundsToSlash", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryMinStakeUpdatedIterator is returned from FilterMinStakeUpdated and is used to iterate over the raw logs and unpacked data for MinStakeUpdated events raised by the Providerregistry contract. -type ProviderregistryMinStakeUpdatedIterator struct { - Event *ProviderregistryMinStakeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryMinStakeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryMinStakeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryMinStakeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryMinStakeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryMinStakeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryMinStakeUpdated represents a MinStakeUpdated event raised by the Providerregistry contract. -type ProviderregistryMinStakeUpdated struct { - NewMinStake *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMinStakeUpdated is a free log retrieval operation binding the contract event 0x47ab46f2c8d4258304a2f5551c1cbdb6981be49631365d1ba7191288a73f39ef. -// -// Solidity: event MinStakeUpdated(uint256 indexed newMinStake) -func (_Providerregistry *ProviderregistryFilterer) FilterMinStakeUpdated(opts *bind.FilterOpts, newMinStake []*big.Int) (*ProviderregistryMinStakeUpdatedIterator, error) { - var newMinStakeRule []interface{} - for _, newMinStakeItem := range newMinStake { - newMinStakeRule = append(newMinStakeRule, newMinStakeItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "MinStakeUpdated", newMinStakeRule) - if err != nil { - return nil, err - } - return &ProviderregistryMinStakeUpdatedIterator{contract: _Providerregistry.contract, event: "MinStakeUpdated", logs: logs, sub: sub}, nil -} - -// WatchMinStakeUpdated is a free log subscription operation binding the contract event 0x47ab46f2c8d4258304a2f5551c1cbdb6981be49631365d1ba7191288a73f39ef. -// -// Solidity: event MinStakeUpdated(uint256 indexed newMinStake) -func (_Providerregistry *ProviderregistryFilterer) WatchMinStakeUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryMinStakeUpdated, newMinStake []*big.Int) (event.Subscription, error) { - var newMinStakeRule []interface{} - for _, newMinStakeItem := range newMinStake { - newMinStakeRule = append(newMinStakeRule, newMinStakeItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "MinStakeUpdated", newMinStakeRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryMinStakeUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "MinStakeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMinStakeUpdated is a log parse operation binding the contract event 0x47ab46f2c8d4258304a2f5551c1cbdb6981be49631365d1ba7191288a73f39ef. -// -// Solidity: event MinStakeUpdated(uint256 indexed newMinStake) -func (_Providerregistry *ProviderregistryFilterer) ParseMinStakeUpdated(log types.Log) (*ProviderregistryMinStakeUpdated, error) { - event := new(ProviderregistryMinStakeUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "MinStakeUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the Providerregistry contract. -type ProviderregistryOwnershipTransferStartedIterator struct { - Event *ProviderregistryOwnershipTransferStarted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryOwnershipTransferStartedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryOwnershipTransferStarted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryOwnershipTransferStarted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryOwnershipTransferStartedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryOwnershipTransferStartedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the Providerregistry contract. -type ProviderregistryOwnershipTransferStarted struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_Providerregistry *ProviderregistryFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProviderregistryOwnershipTransferStartedIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &ProviderregistryOwnershipTransferStartedIterator{contract: _Providerregistry.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_Providerregistry *ProviderregistryFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *ProviderregistryOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryOwnershipTransferStarted) - if err := _Providerregistry.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_Providerregistry *ProviderregistryFilterer) ParseOwnershipTransferStarted(log types.Log) (*ProviderregistryOwnershipTransferStarted, error) { - event := new(ProviderregistryOwnershipTransferStarted) - if err := _Providerregistry.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Providerregistry contract. -type ProviderregistryOwnershipTransferredIterator struct { - Event *ProviderregistryOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryOwnershipTransferred represents a OwnershipTransferred event raised by the Providerregistry contract. -type ProviderregistryOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Providerregistry *ProviderregistryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProviderregistryOwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &ProviderregistryOwnershipTransferredIterator{contract: _Providerregistry.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Providerregistry *ProviderregistryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ProviderregistryOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryOwnershipTransferred) - if err := _Providerregistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Providerregistry *ProviderregistryFilterer) ParseOwnershipTransferred(log types.Log) (*ProviderregistryOwnershipTransferred, error) { - event := new(ProviderregistryOwnershipTransferred) - if err := _Providerregistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the Providerregistry contract. -type ProviderregistryPausedIterator struct { - Event *ProviderregistryPaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryPausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryPausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryPausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryPaused represents a Paused event raised by the Providerregistry contract. -type ProviderregistryPaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_Providerregistry *ProviderregistryFilterer) FilterPaused(opts *bind.FilterOpts) (*ProviderregistryPausedIterator, error) { - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Paused") - if err != nil { - return nil, err - } - return &ProviderregistryPausedIterator{contract: _Providerregistry.contract, event: "Paused", logs: logs, sub: sub}, nil -} - -// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_Providerregistry *ProviderregistryFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ProviderregistryPaused) (event.Subscription, error) { - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Paused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryPaused) - if err := _Providerregistry.contract.UnpackLog(event, "Paused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_Providerregistry *ProviderregistryFilterer) ParsePaused(log types.Log) (*ProviderregistryPaused, error) { - event := new(ProviderregistryPaused) - if err := _Providerregistry.contract.UnpackLog(event, "Paused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryPenaltyFeeRecipientUpdatedIterator is returned from FilterPenaltyFeeRecipientUpdated and is used to iterate over the raw logs and unpacked data for PenaltyFeeRecipientUpdated events raised by the Providerregistry contract. -type ProviderregistryPenaltyFeeRecipientUpdatedIterator struct { - Event *ProviderregistryPenaltyFeeRecipientUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryPenaltyFeeRecipientUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryPenaltyFeeRecipientUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryPenaltyFeeRecipientUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryPenaltyFeeRecipientUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryPenaltyFeeRecipientUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryPenaltyFeeRecipientUpdated represents a PenaltyFeeRecipientUpdated event raised by the Providerregistry contract. -type ProviderregistryPenaltyFeeRecipientUpdated struct { - NewPenaltyFeeRecipient common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPenaltyFeeRecipientUpdated is a free log retrieval operation binding the contract event 0xb5d4f6e9d9b31eb58c205f8c3bb44d4f0094605caa42167107a9c3e91ebf8c85. -// -// Solidity: event PenaltyFeeRecipientUpdated(address indexed newPenaltyFeeRecipient) -func (_Providerregistry *ProviderregistryFilterer) FilterPenaltyFeeRecipientUpdated(opts *bind.FilterOpts, newPenaltyFeeRecipient []common.Address) (*ProviderregistryPenaltyFeeRecipientUpdatedIterator, error) { - var newPenaltyFeeRecipientRule []interface{} - for _, newPenaltyFeeRecipientItem := range newPenaltyFeeRecipient { - newPenaltyFeeRecipientRule = append(newPenaltyFeeRecipientRule, newPenaltyFeeRecipientItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "PenaltyFeeRecipientUpdated", newPenaltyFeeRecipientRule) - if err != nil { - return nil, err - } - return &ProviderregistryPenaltyFeeRecipientUpdatedIterator{contract: _Providerregistry.contract, event: "PenaltyFeeRecipientUpdated", logs: logs, sub: sub}, nil -} - -// WatchPenaltyFeeRecipientUpdated is a free log subscription operation binding the contract event 0xb5d4f6e9d9b31eb58c205f8c3bb44d4f0094605caa42167107a9c3e91ebf8c85. -// -// Solidity: event PenaltyFeeRecipientUpdated(address indexed newPenaltyFeeRecipient) -func (_Providerregistry *ProviderregistryFilterer) WatchPenaltyFeeRecipientUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryPenaltyFeeRecipientUpdated, newPenaltyFeeRecipient []common.Address) (event.Subscription, error) { - var newPenaltyFeeRecipientRule []interface{} - for _, newPenaltyFeeRecipientItem := range newPenaltyFeeRecipient { - newPenaltyFeeRecipientRule = append(newPenaltyFeeRecipientRule, newPenaltyFeeRecipientItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "PenaltyFeeRecipientUpdated", newPenaltyFeeRecipientRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryPenaltyFeeRecipientUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "PenaltyFeeRecipientUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePenaltyFeeRecipientUpdated is a log parse operation binding the contract event 0xb5d4f6e9d9b31eb58c205f8c3bb44d4f0094605caa42167107a9c3e91ebf8c85. -// -// Solidity: event PenaltyFeeRecipientUpdated(address indexed newPenaltyFeeRecipient) -func (_Providerregistry *ProviderregistryFilterer) ParsePenaltyFeeRecipientUpdated(log types.Log) (*ProviderregistryPenaltyFeeRecipientUpdated, error) { - event := new(ProviderregistryPenaltyFeeRecipientUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "PenaltyFeeRecipientUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryPreconfManagerUpdatedIterator is returned from FilterPreconfManagerUpdated and is used to iterate over the raw logs and unpacked data for PreconfManagerUpdated events raised by the Providerregistry contract. -type ProviderregistryPreconfManagerUpdatedIterator struct { - Event *ProviderregistryPreconfManagerUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryPreconfManagerUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryPreconfManagerUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryPreconfManagerUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryPreconfManagerUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryPreconfManagerUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryPreconfManagerUpdated represents a PreconfManagerUpdated event raised by the Providerregistry contract. -type ProviderregistryPreconfManagerUpdated struct { - NewPreconfManager common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPreconfManagerUpdated is a free log retrieval operation binding the contract event 0xba8b46bd4ed6a7ec49dc1a4758a5ffd0cbae99c172bbe007676fcb74fefa310f. -// -// Solidity: event PreconfManagerUpdated(address indexed newPreconfManager) -func (_Providerregistry *ProviderregistryFilterer) FilterPreconfManagerUpdated(opts *bind.FilterOpts, newPreconfManager []common.Address) (*ProviderregistryPreconfManagerUpdatedIterator, error) { - var newPreconfManagerRule []interface{} - for _, newPreconfManagerItem := range newPreconfManager { - newPreconfManagerRule = append(newPreconfManagerRule, newPreconfManagerItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "PreconfManagerUpdated", newPreconfManagerRule) - if err != nil { - return nil, err - } - return &ProviderregistryPreconfManagerUpdatedIterator{contract: _Providerregistry.contract, event: "PreconfManagerUpdated", logs: logs, sub: sub}, nil -} - -// WatchPreconfManagerUpdated is a free log subscription operation binding the contract event 0xba8b46bd4ed6a7ec49dc1a4758a5ffd0cbae99c172bbe007676fcb74fefa310f. -// -// Solidity: event PreconfManagerUpdated(address indexed newPreconfManager) -func (_Providerregistry *ProviderregistryFilterer) WatchPreconfManagerUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryPreconfManagerUpdated, newPreconfManager []common.Address) (event.Subscription, error) { - var newPreconfManagerRule []interface{} - for _, newPreconfManagerItem := range newPreconfManager { - newPreconfManagerRule = append(newPreconfManagerRule, newPreconfManagerItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "PreconfManagerUpdated", newPreconfManagerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryPreconfManagerUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "PreconfManagerUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePreconfManagerUpdated is a log parse operation binding the contract event 0xba8b46bd4ed6a7ec49dc1a4758a5ffd0cbae99c172bbe007676fcb74fefa310f. -// -// Solidity: event PreconfManagerUpdated(address indexed newPreconfManager) -func (_Providerregistry *ProviderregistryFilterer) ParsePreconfManagerUpdated(log types.Log) (*ProviderregistryPreconfManagerUpdated, error) { - event := new(ProviderregistryPreconfManagerUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "PreconfManagerUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryProviderRegisteredIterator is returned from FilterProviderRegistered and is used to iterate over the raw logs and unpacked data for ProviderRegistered events raised by the Providerregistry contract. -type ProviderregistryProviderRegisteredIterator struct { - Event *ProviderregistryProviderRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryProviderRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryProviderRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryProviderRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryProviderRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryProviderRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryProviderRegistered represents a ProviderRegistered event raised by the Providerregistry contract. -type ProviderregistryProviderRegistered struct { - Provider common.Address - StakedAmount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterProviderRegistered is a free log retrieval operation binding the contract event 0x90c9734131c1e4fb36cde2d71e6feb93fb258f71be8a85411c173d25e1516e80. -// -// Solidity: event ProviderRegistered(address indexed provider, uint256 stakedAmount) -func (_Providerregistry *ProviderregistryFilterer) FilterProviderRegistered(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryProviderRegisteredIterator, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "ProviderRegistered", providerRule) - if err != nil { - return nil, err - } - return &ProviderregistryProviderRegisteredIterator{contract: _Providerregistry.contract, event: "ProviderRegistered", logs: logs, sub: sub}, nil -} - -// WatchProviderRegistered is a free log subscription operation binding the contract event 0x90c9734131c1e4fb36cde2d71e6feb93fb258f71be8a85411c173d25e1516e80. -// -// Solidity: event ProviderRegistered(address indexed provider, uint256 stakedAmount) -func (_Providerregistry *ProviderregistryFilterer) WatchProviderRegistered(opts *bind.WatchOpts, sink chan<- *ProviderregistryProviderRegistered, provider []common.Address) (event.Subscription, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "ProviderRegistered", providerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryProviderRegistered) - if err := _Providerregistry.contract.UnpackLog(event, "ProviderRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseProviderRegistered is a log parse operation binding the contract event 0x90c9734131c1e4fb36cde2d71e6feb93fb258f71be8a85411c173d25e1516e80. -// -// Solidity: event ProviderRegistered(address indexed provider, uint256 stakedAmount) -func (_Providerregistry *ProviderregistryFilterer) ParseProviderRegistered(log types.Log) (*ProviderregistryProviderRegistered, error) { - event := new(ProviderregistryProviderRegistered) - if err := _Providerregistry.contract.UnpackLog(event, "ProviderRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryTransferToBidderFailedIterator is returned from FilterTransferToBidderFailed and is used to iterate over the raw logs and unpacked data for TransferToBidderFailed events raised by the Providerregistry contract. -type ProviderregistryTransferToBidderFailedIterator struct { - Event *ProviderregistryTransferToBidderFailed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryTransferToBidderFailedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryTransferToBidderFailed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryTransferToBidderFailed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryTransferToBidderFailedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryTransferToBidderFailedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryTransferToBidderFailed represents a TransferToBidderFailed event raised by the Providerregistry contract. -type ProviderregistryTransferToBidderFailed struct { - Bidder common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransferToBidderFailed is a free log retrieval operation binding the contract event 0xd4bd5c1c0f198fbafd25af26c36f4c115af31d522d0f520abc017845e225aca6. -// -// Solidity: event TransferToBidderFailed(address bidder, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) FilterTransferToBidderFailed(opts *bind.FilterOpts) (*ProviderregistryTransferToBidderFailedIterator, error) { - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "TransferToBidderFailed") - if err != nil { - return nil, err - } - return &ProviderregistryTransferToBidderFailedIterator{contract: _Providerregistry.contract, event: "TransferToBidderFailed", logs: logs, sub: sub}, nil -} - -// WatchTransferToBidderFailed is a free log subscription operation binding the contract event 0xd4bd5c1c0f198fbafd25af26c36f4c115af31d522d0f520abc017845e225aca6. -// -// Solidity: event TransferToBidderFailed(address bidder, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) WatchTransferToBidderFailed(opts *bind.WatchOpts, sink chan<- *ProviderregistryTransferToBidderFailed) (event.Subscription, error) { - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "TransferToBidderFailed") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryTransferToBidderFailed) - if err := _Providerregistry.contract.UnpackLog(event, "TransferToBidderFailed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransferToBidderFailed is a log parse operation binding the contract event 0xd4bd5c1c0f198fbafd25af26c36f4c115af31d522d0f520abc017845e225aca6. -// -// Solidity: event TransferToBidderFailed(address bidder, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) ParseTransferToBidderFailed(log types.Log) (*ProviderregistryTransferToBidderFailed, error) { - event := new(ProviderregistryTransferToBidderFailed) - if err := _Providerregistry.contract.UnpackLog(event, "TransferToBidderFailed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the Providerregistry contract. -type ProviderregistryUnpausedIterator struct { - Event *ProviderregistryUnpaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryUnpausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryUnpausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryUnpausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryUnpaused represents a Unpaused event raised by the Providerregistry contract. -type ProviderregistryUnpaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_Providerregistry *ProviderregistryFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ProviderregistryUnpausedIterator, error) { - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return &ProviderregistryUnpausedIterator{contract: _Providerregistry.contract, event: "Unpaused", logs: logs, sub: sub}, nil -} - -// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_Providerregistry *ProviderregistryFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ProviderregistryUnpaused) (event.Subscription, error) { - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryUnpaused) - if err := _Providerregistry.contract.UnpackLog(event, "Unpaused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_Providerregistry *ProviderregistryFilterer) ParseUnpaused(log types.Log) (*ProviderregistryUnpaused, error) { - event := new(ProviderregistryUnpaused) - if err := _Providerregistry.contract.UnpackLog(event, "Unpaused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryUnstakeIterator is returned from FilterUnstake and is used to iterate over the raw logs and unpacked data for Unstake events raised by the Providerregistry contract. -type ProviderregistryUnstakeIterator struct { - Event *ProviderregistryUnstake // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryUnstakeIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryUnstake) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryUnstake) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryUnstakeIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryUnstakeIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryUnstake represents a Unstake event raised by the Providerregistry contract. -type ProviderregistryUnstake struct { - Provider common.Address - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUnstake is a free log retrieval operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd. -// -// Solidity: event Unstake(address indexed provider, uint256 timestamp) -func (_Providerregistry *ProviderregistryFilterer) FilterUnstake(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryUnstakeIterator, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Unstake", providerRule) - if err != nil { - return nil, err - } - return &ProviderregistryUnstakeIterator{contract: _Providerregistry.contract, event: "Unstake", logs: logs, sub: sub}, nil -} - -// WatchUnstake is a free log subscription operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd. -// -// Solidity: event Unstake(address indexed provider, uint256 timestamp) -func (_Providerregistry *ProviderregistryFilterer) WatchUnstake(opts *bind.WatchOpts, sink chan<- *ProviderregistryUnstake, provider []common.Address) (event.Subscription, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Unstake", providerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryUnstake) - if err := _Providerregistry.contract.UnpackLog(event, "Unstake", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUnstake is a log parse operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd. -// -// Solidity: event Unstake(address indexed provider, uint256 timestamp) -func (_Providerregistry *ProviderregistryFilterer) ParseUnstake(log types.Log) (*ProviderregistryUnstake, error) { - event := new(ProviderregistryUnstake) - if err := _Providerregistry.contract.UnpackLog(event, "Unstake", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the Providerregistry contract. -type ProviderregistryUpgradedIterator struct { - Event *ProviderregistryUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryUpgraded represents a Upgraded event raised by the Providerregistry contract. -type ProviderregistryUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_Providerregistry *ProviderregistryFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ProviderregistryUpgradedIterator, error) { - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &ProviderregistryUpgradedIterator{contract: _Providerregistry.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_Providerregistry *ProviderregistryFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ProviderregistryUpgraded, implementation []common.Address) (event.Subscription, error) { - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryUpgraded) - if err := _Providerregistry.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_Providerregistry *ProviderregistryFilterer) ParseUpgraded(log types.Log) (*ProviderregistryUpgraded, error) { - event := new(ProviderregistryUpgraded) - if err := _Providerregistry.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the Providerregistry contract. -type ProviderregistryWithdrawIterator struct { - Event *ProviderregistryWithdraw // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryWithdrawIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryWithdrawIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryWithdrawIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryWithdraw represents a Withdraw event raised by the Providerregistry contract. -type ProviderregistryWithdraw struct { - Provider common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed provider, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) FilterWithdraw(opts *bind.FilterOpts, provider []common.Address) (*ProviderregistryWithdrawIterator, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "Withdraw", providerRule) - if err != nil { - return nil, err - } - return &ProviderregistryWithdrawIterator{contract: _Providerregistry.contract, event: "Withdraw", logs: logs, sub: sub}, nil -} - -// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed provider, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ProviderregistryWithdraw, provider []common.Address) (event.Subscription, error) { - var providerRule []interface{} - for _, providerItem := range provider { - providerRule = append(providerRule, providerItem) - } - - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "Withdraw", providerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryWithdraw) - if err := _Providerregistry.contract.UnpackLog(event, "Withdraw", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed provider, uint256 amount) -func (_Providerregistry *ProviderregistryFilterer) ParseWithdraw(log types.Log) (*ProviderregistryWithdraw, error) { - event := new(ProviderregistryWithdraw) - if err := _Providerregistry.contract.UnpackLog(event, "Withdraw", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProviderregistryWithdrawalDelayUpdatedIterator is returned from FilterWithdrawalDelayUpdated and is used to iterate over the raw logs and unpacked data for WithdrawalDelayUpdated events raised by the Providerregistry contract. -type ProviderregistryWithdrawalDelayUpdatedIterator struct { - Event *ProviderregistryWithdrawalDelayUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProviderregistryWithdrawalDelayUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProviderregistryWithdrawalDelayUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProviderregistryWithdrawalDelayUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProviderregistryWithdrawalDelayUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProviderregistryWithdrawalDelayUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProviderregistryWithdrawalDelayUpdated represents a WithdrawalDelayUpdated event raised by the Providerregistry contract. -type ProviderregistryWithdrawalDelayUpdated struct { - NewWithdrawalDelay *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawalDelayUpdated is a free log retrieval operation binding the contract event 0xb34b8e54226bc5e8f4a9d846e344e0c42d09eeb1c79798df7ce7460c16071e2d. -// -// Solidity: event WithdrawalDelayUpdated(uint256 newWithdrawalDelay) -func (_Providerregistry *ProviderregistryFilterer) FilterWithdrawalDelayUpdated(opts *bind.FilterOpts) (*ProviderregistryWithdrawalDelayUpdatedIterator, error) { - logs, sub, err := _Providerregistry.contract.FilterLogs(opts, "WithdrawalDelayUpdated") - if err != nil { - return nil, err - } - return &ProviderregistryWithdrawalDelayUpdatedIterator{contract: _Providerregistry.contract, event: "WithdrawalDelayUpdated", logs: logs, sub: sub}, nil -} - -// WatchWithdrawalDelayUpdated is a free log subscription operation binding the contract event 0xb34b8e54226bc5e8f4a9d846e344e0c42d09eeb1c79798df7ce7460c16071e2d. -// -// Solidity: event WithdrawalDelayUpdated(uint256 newWithdrawalDelay) -func (_Providerregistry *ProviderregistryFilterer) WatchWithdrawalDelayUpdated(opts *bind.WatchOpts, sink chan<- *ProviderregistryWithdrawalDelayUpdated) (event.Subscription, error) { - logs, sub, err := _Providerregistry.contract.WatchLogs(opts, "WithdrawalDelayUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProviderregistryWithdrawalDelayUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "WithdrawalDelayUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawalDelayUpdated is a log parse operation binding the contract event 0xb34b8e54226bc5e8f4a9d846e344e0c42d09eeb1c79798df7ce7460c16071e2d. -// -// Solidity: event WithdrawalDelayUpdated(uint256 newWithdrawalDelay) -func (_Providerregistry *ProviderregistryFilterer) ParseWithdrawalDelayUpdated(log types.Log) (*ProviderregistryWithdrawalDelayUpdated, error) { - event := new(ProviderregistryWithdrawalDelayUpdated) - if err := _Providerregistry.contract.UnpackLog(event, "WithdrawalDelayUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/rolling-shutter/keyperimpl/primev/keyper.go b/rolling-shutter/keyperimpl/primev/keyper.go index 8141e15db..e264d4c36 100644 --- a/rolling-shutter/keyperimpl/primev/keyper.go +++ b/rolling-shutter/keyperimpl/primev/keyper.go @@ -8,13 +8,13 @@ import ( gethLog "github.com/ethereum/go-ethereum/log" "github.com/jackc/pgx/v4/pgxpool" "github.com/pkg/errors" + providerregistry "github.com/primev/mev-commit/contracts-abi/clients/ProviderRegistry" "github.com/rs/zerolog/log" "github.com/shutter-network/rolling-shutter/rolling-shutter/eonkeypublisher" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprconfig" - providerregistry "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/abi" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/database" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/broker" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync" diff --git a/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go b/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go index 1303e6c19..9e2ff79bd 100644 --- a/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go +++ b/rolling-shutter/keyperimpl/primev/providerregistrysyncer.go @@ -11,9 +11,9 @@ import ( "github.com/jackc/pgx/v4" "github.com/jackc/pgx/v4/pgxpool" "github.com/pkg/errors" + providerregistry "github.com/primev/mev-commit/contracts-abi/clients/ProviderRegistry" "github.com/rs/zerolog/log" - providerregistry "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/abi" "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/primev/database" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley" ) From 47f23001be63fa3b04beb06a5416f407461d1a06 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Wed, 24 Sep 2025 17:11:07 +0530 Subject: [PATCH 20/28] primev: update schema primary and foreign keys and queries --- .../primev/database/models.sqlc.gen.go | 2 ++ .../primev/database/primev.sqlc.gen.go | 17 +++++++++-------- .../primev/database/sql/queries/primev.sql | 17 +++++++++-------- .../primev/database/sql/schemas/primev.sql | 9 ++++++--- rolling-shutter/shmsg/shmsg.pb.go | 2 +- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go index 6f24542a9..47a69c98e 100644 --- a/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go +++ b/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go @@ -20,6 +20,8 @@ type CommittedTransaction struct { IdentityPreimage string BlockNumber int64 TxHash string + CommitmentDigest string + ProviderAddress string } type ProviderRegistryEvent struct { diff --git a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go index f9235c1a0..e877780be 100644 --- a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go +++ b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go @@ -31,7 +31,7 @@ SELECT c.received_bid_signature, c.bidder_node_address FROM commitment c -WHERE c.tx_hashes = $1 +WHERE $1 = ANY(c.tx_hashes) ` func (q *Queries) GetCommitmentByTxHash(ctx context.Context, txHashes []string) ([]Commitment, error) { @@ -76,15 +76,16 @@ func (q *Queries) GetProviderRegistryEventsSyncedUntil(ctx context.Context) (Pro const insertMultipleTransactionsAndUpsertCommitment = `-- name: InsertMultipleTransactionsAndUpsertCommitment :exec WITH inserted_transactions AS ( - INSERT INTO committed_transactions (eon, identity_preimage, block_number, tx_hash) + INSERT INTO committed_transactions (eon, identity_preimage, block_number, tx_hash, commitment_digest, provider_address) SELECT unnest($1::bigint[]) as eon, unnest($2::text[]) as identity_preimage, unnest($3::bigint[]) as block_number, - unnest($4::text[]) as tx_hash - ON CONFLICT (eon, identity_preimage, tx_hash) - DO UPDATE SET - block_number = EXCLUDED.block_number + unnest($4::text[]) as tx_hash, + $7, + $5 + ON CONFLICT (eon, identity_preimage, tx_hash, block_number) + DO NOTHING RETURNING tx_hash as hashes ), upserted_commitment AS ( @@ -99,7 +100,7 @@ upserted_commitment AS ( $10, $11 FROM inserted_transactions - ON CONFLICT (provider_address, commitment_digest, block_number) + ON CONFLICT (provider_address, commitment_digest) DO UPDATE SET tx_hashes = commitment.tx_hashes || EXCLUDED.tx_hashes, received_bid_digest = EXCLUDED.received_bid_digest, @@ -144,7 +145,7 @@ func (q *Queries) InsertMultipleTransactionsAndUpsertCommitment(ctx context.Cont const insertProviderRegistryEvent = `-- name: InsertProviderRegistryEvent :execresult INSERT INTO provider_registry_events (block_number, block_hash, tx_index, log_index, provider_address, bls_keys) VALUES ($1, $2, $3, $4, $5, $6) -ON CONFLICT (provider_address) DO UPDATE SET +ON CONFLICT (block_number, tx_index, log_index) DO UPDATE SET block_number = $1, block_hash = $2, tx_index = $3, diff --git a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql index ecfd6b6dd..343b881e8 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql @@ -9,19 +9,20 @@ SELECT c.received_bid_signature, c.bidder_node_address FROM commitment c -WHERE c.tx_hashes = $1; +WHERE $1 = ANY(c.tx_hashes); -- name: InsertMultipleTransactionsAndUpsertCommitment :exec WITH inserted_transactions AS ( - INSERT INTO committed_transactions (eon, identity_preimage, block_number, tx_hash) + INSERT INTO committed_transactions (eon, identity_preimage, block_number, tx_hash, commitment_digest, provider_address) SELECT unnest($1::bigint[]) as eon, unnest($2::text[]) as identity_preimage, unnest($3::bigint[]) as block_number, - unnest($4::text[]) as tx_hash - ON CONFLICT (eon, identity_preimage, tx_hash) - DO UPDATE SET - block_number = EXCLUDED.block_number + unnest($4::text[]) as tx_hash, + $7, + $5 + ON CONFLICT (eon, identity_preimage, tx_hash, block_number) + DO NOTHING RETURNING tx_hash as hashes ), upserted_commitment AS ( @@ -36,7 +37,7 @@ upserted_commitment AS ( $10, $11 FROM inserted_transactions - ON CONFLICT (provider_address, commitment_digest, block_number) + ON CONFLICT (provider_address, commitment_digest) DO UPDATE SET tx_hashes = commitment.tx_hashes || EXCLUDED.tx_hashes, received_bid_digest = EXCLUDED.received_bid_digest, @@ -57,7 +58,7 @@ SET block_hash = $1, block_number = $2; -- name: InsertProviderRegistryEvent :execresult INSERT INTO provider_registry_events (block_number, block_hash, tx_index, log_index, provider_address, bls_keys) VALUES ($1, $2, $3, $4, $5, $6) -ON CONFLICT (provider_address) DO UPDATE SET +ON CONFLICT (block_number, tx_index, log_index) DO UPDATE SET block_number = $1, block_hash = $2, tx_index = $3, diff --git a/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql index c7bdc725e..8efe60c42 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql @@ -11,7 +11,7 @@ CREATE TABLE commitment( received_bid_digest text NOT NULL, received_bid_signature text NOT NULL, bidder_node_address text NOT NULL, - PRIMARY KEY (provider_address, commitment_digest, block_number) + PRIMARY KEY (commitment_digest, provider_address) ); CREATE TABLE committed_transactions( @@ -19,7 +19,10 @@ CREATE TABLE committed_transactions( identity_preimage text NOT NULL, block_number bigint NOT NULL CHECK (block_number >= 0), tx_hash text NOT NULL, - PRIMARY KEY (eon, identity_preimage, tx_hash) + commitment_digest text NOT NULL, + provider_address text NOT NULL, + PRIMARY KEY (eon, identity_preimage, tx_hash, block_number), + FOREIGN KEY (commitment_digest, provider_address) REFERENCES commitment(commitment_digest, provider_address) ); CREATE TABLE provider_registry_events_synced_until( @@ -35,5 +38,5 @@ CREATE TABLE provider_registry_events( log_index bigint NOT NULL CHECK (log_index >= 0), provider_address text NOT NULL, bls_keys bytea[] NOT NULL, - PRIMARY KEY (provider_address) + PRIMARY KEY (block_number, tx_index, log_index) ); \ No newline at end of file diff --git a/rolling-shutter/shmsg/shmsg.pb.go b/rolling-shutter/shmsg/shmsg.pb.go index 8ffa518eb..8e241650e 100644 --- a/rolling-shutter/shmsg/shmsg.pb.go +++ b/rolling-shutter/shmsg/shmsg.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.5 -// protoc v5.29.3 +// protoc v3.21.12 // source: shmsg.proto package shmsg From 5d6d4ae9563a952049d0ec75ed91d14c0dceee4a Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Wed, 24 Sep 2025 17:18:58 +0530 Subject: [PATCH 21/28] primev: include commitment message in the existing message file --- rolling-shutter/p2pmsg/messages.go | 12 ++++++++++++ rolling-shutter/p2pmsg/primevcommitment.go | 19 ------------------- 2 files changed, 12 insertions(+), 19 deletions(-) delete mode 100644 rolling-shutter/p2pmsg/primevcommitment.go diff --git a/rolling-shutter/p2pmsg/messages.go b/rolling-shutter/p2pmsg/messages.go index 237f768fe..8fd1d4b9b 100644 --- a/rolling-shutter/p2pmsg/messages.go +++ b/rolling-shutter/p2pmsg/messages.go @@ -164,3 +164,15 @@ func (*EonPublicKey) Topic() string { func (*EonPublicKey) Validate() error { return nil } + +func (c *Commitment) LogInfo() string { + return fmt.Sprintf("Commitment{commitment_digest=%s}", c.CommitmentDigest) +} + +func (c *Commitment) Topic() string { + return kprtopics.PrimevCommitment +} + +func (c *Commitment) Validate() error { + return nil +} diff --git a/rolling-shutter/p2pmsg/primevcommitment.go b/rolling-shutter/p2pmsg/primevcommitment.go deleted file mode 100644 index 2e462c1d3..000000000 --- a/rolling-shutter/p2pmsg/primevcommitment.go +++ /dev/null @@ -1,19 +0,0 @@ -package p2pmsg - -import ( - "fmt" - - "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprtopics" -) - -func (c *Commitment) LogInfo() string { - return fmt.Sprintf("Commitment{commitment_digest=%s}", c.CommitmentDigest) -} - -func (c *Commitment) Topic() string { - return kprtopics.PrimevCommitment -} - -func (c *Commitment) Validate() error { - return nil -} From b8e1b108d894bc313159da4c62ae320cf34974d9 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Wed, 24 Sep 2025 17:20:00 +0530 Subject: [PATCH 22/28] primev: update config to not include http enabled flags --- rolling-shutter/keyperimpl/primev/config.go | 4 ---- rolling-shutter/keyperimpl/primev/keyper.go | 5 ++--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/config.go b/rolling-shutter/keyperimpl/primev/config.go index 73a5810ff..27b6513f5 100644 --- a/rolling-shutter/keyperimpl/primev/config.go +++ b/rolling-shutter/keyperimpl/primev/config.go @@ -15,8 +15,6 @@ type Config struct { InstanceID uint64 `shconfig:",required"` DatabaseURL string `shconfig:",required" comment:"If it's empty, we use the standard PG_ environment variables"` - HTTPEnabled bool - HTTPReadOnly bool HTTPListenAddress string Primev *PrimevConfig @@ -54,8 +52,6 @@ func (c *Config) Name() string { func (c *Config) SetDefaultValues() error { c.MaxNumKeysPerMessage = 500 - c.HTTPEnabled = false - c.HTTPReadOnly = true c.HTTPListenAddress = ":3000" return nil } diff --git a/rolling-shutter/keyperimpl/primev/keyper.go b/rolling-shutter/keyperimpl/primev/keyper.go index e264d4c36..609a35672 100644 --- a/rolling-shutter/keyperimpl/primev/keyper.go +++ b/rolling-shutter/keyperimpl/primev/keyper.go @@ -66,7 +66,6 @@ func (k *Keyper) Start(ctx context.Context, runner service.Runner) error { return errors.Wrap(err, "failed to initialize p2p messaging") } - // TODO: do we need a middleware also here? messageSender.AddMessageHandler(&PrimevCommitmentHandler{ config: k.config, decryptionTriggerChannel: k.decryptionTriggerChannel, @@ -120,8 +119,8 @@ func NewKeyper(kpr *Keyper, messagingMiddleware p2p.Messaging) (*keyper.KeyperCo &kprconfig.Config{ InstanceID: kpr.config.InstanceID, DatabaseURL: kpr.config.DatabaseURL, - HTTPEnabled: kpr.config.HTTPEnabled, - HTTPReadOnly: kpr.config.HTTPReadOnly, + HTTPEnabled: false, + HTTPReadOnly: true, HTTPListenAddress: kpr.config.HTTPListenAddress, P2P: kpr.config.P2P, Ethereum: kpr.config.Chain.Node, From a7c0d0cb2d8e526bbe72b0714b8e156470d63d6c Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Wed, 24 Sep 2025 17:20:50 +0530 Subject: [PATCH 23/28] primev: update commitment handler to generate dec trigger at the end --- rolling-shutter/keyperimpl/primev/handler.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index bb0442e3e..3ad3fb09d 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -77,15 +77,6 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. identityPreimages = append(identityPreimages, identitypreimage.IdentityPreimage(identityPreimage)) } - blockNumberUint64, err := medley.Int64ToUint64Safe(commitment.BlockNumber) - if err != nil { - hLog.Error().Err(err).Msg("failed to convert block number to uint64") - return nil, err - } - decryptionTrigger := &epochkghandler.DecryptionTrigger{ - BlockNumber: blockNumberUint64, - IdentityPreimages: identityPreimages, - } blockNumbers := make([]int64, 0, len(commitment.Identities)) eons := make([]int64, 0, len(commitment.Identities)) @@ -118,8 +109,18 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. return nil, err } + blockNumberUint64, err := medley.Int64ToUint64Safe(commitment.BlockNumber) + if err != nil { + hLog.Error().Err(err).Msg("failed to convert block number to uint64") + return nil, err + } + // TODO: before sending the dec trigger, we need to check if majority of providers have generated commitments + decryptionTrigger := &epochkghandler.DecryptionTrigger{ + BlockNumber: blockNumberUint64, + IdentityPreimages: identityPreimages, + } h.decryptionTriggerChannel <- broker.NewEvent(decryptionTrigger) hLog.Info().Msg("sent decryption trigger") From f0a55085b5194096a5966d335e07eb9cc334009b Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Wed, 24 Sep 2025 17:23:51 +0530 Subject: [PATCH 24/28] primev: resolve build after merging main --- rolling-shutter/keyperimpl/primev/database/definition.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rolling-shutter/keyperimpl/primev/database/definition.go b/rolling-shutter/keyperimpl/primev/database/definition.go index 77c0eafa5..d6c9516f2 100644 --- a/rolling-shutter/keyperimpl/primev/database/definition.go +++ b/rolling-shutter/keyperimpl/primev/database/definition.go @@ -17,7 +17,7 @@ var files embed.FS var Definition db.Definition func init() { - def, err := db.NewSQLCDefinition(files, "sql/", "primevkeyper", 1) + def, err := db.NewSQLCDefinition(files, "sql/", "primevkeyper") if err != nil { log.Fatal().Err(err).Msg("failed to initialize DB metadata") } From 52f62fca1b73128d5753c695f0fe658eda0dbae1 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Fri, 26 Sep 2025 11:47:22 +0530 Subject: [PATCH 25/28] fix: rs-generate ci --- rolling-shutter/shmsg/shmsg.pb.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rolling-shutter/shmsg/shmsg.pb.go b/rolling-shutter/shmsg/shmsg.pb.go index 8e241650e..8ffa518eb 100644 --- a/rolling-shutter/shmsg/shmsg.pb.go +++ b/rolling-shutter/shmsg/shmsg.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.5 -// protoc v3.21.12 +// protoc v5.29.3 // source: shmsg.proto package shmsg From a32b37291ec961c002ab0f3741d12cc032692148 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Tue, 14 Oct 2025 18:16:29 +0530 Subject: [PATCH 26/28] update example config values --- rolling-shutter/keyperimpl/primev/config.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/config.go b/rolling-shutter/keyperimpl/primev/config.go index 27b6513f5..ce322d788 100644 --- a/rolling-shutter/keyperimpl/primev/config.go +++ b/rolling-shutter/keyperimpl/primev/config.go @@ -90,7 +90,6 @@ func NewPrimevConfig() *PrimevConfig { func (c *PrimevConfig) Init() { c.SyncStartBlockNumber = 0 c.SyncMonitorCheckInterval = 30 - c.PrimevRPC = "" c.ProviderRegistryContract = common.Address{} } @@ -104,7 +103,6 @@ func (c *PrimevConfig) Validate() error { func (c *PrimevConfig) SetDefaultValues() error { //nolint:unparam c.SyncMonitorCheckInterval = 30 - c.PrimevRPC = "" c.ProviderRegistryContract = common.Address{} c.SyncStartBlockNumber = 0 return nil @@ -112,7 +110,7 @@ func (c *PrimevConfig) SetDefaultValues() error { //nolint:unparam func (c *PrimevConfig) SetExampleValues() error { //nolint:unparam c.SyncMonitorCheckInterval = 30 - c.PrimevRPC = "" + c.PrimevRPC = "wss://chainrpc-wss.testnet.mev-commit.xyz" c.ProviderRegistryContract = common.Address{} c.SyncStartBlockNumber = 0 return nil From 6ef165e225ab99e7e6b8b7552ee5b899d6334ce0 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Fri, 7 Nov 2025 11:38:29 +0530 Subject: [PATCH 27/28] fix: add identity prefix in committed tx table and update queries --- .../primev/database/models.sqlc.gen.go | 1 + .../primev/database/primev.sqlc.gen.go | 41 ++++++++++--------- .../primev/database/sql/queries/primev.sql | 31 +++++++------- .../primev/database/sql/schemas/primev.sql | 1 + rolling-shutter/keyperimpl/primev/handler.go | 14 ++++--- 5 files changed, 49 insertions(+), 39 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go index 47a69c98e..5f06346bb 100644 --- a/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go +++ b/rolling-shutter/keyperimpl/primev/database/models.sqlc.gen.go @@ -17,6 +17,7 @@ type Commitment struct { type CommittedTransaction struct { Eon int64 + IdentityPrefix string IdentityPreimage string BlockNumber int64 TxHash string diff --git a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go index e877780be..d668a0a1a 100644 --- a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go +++ b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go @@ -76,15 +76,16 @@ func (q *Queries) GetProviderRegistryEventsSyncedUntil(ctx context.Context) (Pro const insertMultipleTransactionsAndUpsertCommitment = `-- name: InsertMultipleTransactionsAndUpsertCommitment :exec WITH inserted_transactions AS ( - INSERT INTO committed_transactions (eon, identity_preimage, block_number, tx_hash, commitment_digest, provider_address) + INSERT INTO committed_transactions (eon, identity_preimage, identity_prefix, block_number, tx_hash, commitment_digest, provider_address) SELECT unnest($1::bigint[]) as eon, unnest($2::text[]) as identity_preimage, - unnest($3::bigint[]) as block_number, - unnest($4::text[]) as tx_hash, - $7, - $5 - ON CONFLICT (eon, identity_preimage, tx_hash, block_number) + unnest($3::text[]) as identity_prefix, + unnest($4::bigint[]) as block_number, + unnest($5::text[]) as tx_hash, + $6, + $7 + ON CONFLICT (eon, identity_preimage, identity_prefix, tx_hash, block_number) DO NOTHING RETURNING tx_hash as hashes ), @@ -92,13 +93,13 @@ upserted_commitment AS ( INSERT INTO commitment (tx_hashes, provider_address, commitment_signature, commitment_digest, block_number, received_bid_digest, received_bid_signature, bidder_node_address) SELECT ARRAY_AGG(hashes), - $5, - $6, $7, $8, + $6, $9, $10, - $11 + $11, + $12 FROM inserted_transactions ON CONFLICT (provider_address, commitment_digest) DO UPDATE SET @@ -112,13 +113,14 @@ SELECT tx_hashes, provider_address FROM upserted_commitment ` type InsertMultipleTransactionsAndUpsertCommitmentParams struct { - Column1 []int64 - Column2 []string - Column3 []int64 - Column4 []string + Eons []int64 + IdentityPreimages []string + IdentityPrefixes []string + BlockNumbers []int64 + TxHashes []string + CommitmentDigest string ProviderAddress string CommitmentSignature string - CommitmentDigest string BlockNumber int64 ReceivedBidDigest string ReceivedBidSignature string @@ -127,13 +129,14 @@ type InsertMultipleTransactionsAndUpsertCommitmentParams struct { func (q *Queries) InsertMultipleTransactionsAndUpsertCommitment(ctx context.Context, arg InsertMultipleTransactionsAndUpsertCommitmentParams) error { _, err := q.db.Exec(ctx, insertMultipleTransactionsAndUpsertCommitment, - arg.Column1, - arg.Column2, - arg.Column3, - arg.Column4, + arg.Eons, + arg.IdentityPreimages, + arg.IdentityPrefixes, + arg.BlockNumbers, + arg.TxHashes, + arg.CommitmentDigest, arg.ProviderAddress, arg.CommitmentSignature, - arg.CommitmentDigest, arg.BlockNumber, arg.ReceivedBidDigest, arg.ReceivedBidSignature, diff --git a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql index 343b881e8..f697861c2 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql @@ -13,15 +13,16 @@ WHERE $1 = ANY(c.tx_hashes); -- name: InsertMultipleTransactionsAndUpsertCommitment :exec WITH inserted_transactions AS ( - INSERT INTO committed_transactions (eon, identity_preimage, block_number, tx_hash, commitment_digest, provider_address) + INSERT INTO committed_transactions (eon, identity_preimage, identity_prefix, block_number, tx_hash, commitment_digest, provider_address) SELECT - unnest($1::bigint[]) as eon, - unnest($2::text[]) as identity_preimage, - unnest($3::bigint[]) as block_number, - unnest($4::text[]) as tx_hash, - $7, - $5 - ON CONFLICT (eon, identity_preimage, tx_hash, block_number) + unnest(sqlc.arg('eons')::bigint[]) as eon, + unnest(sqlc.arg('identity_preimages')::text[]) as identity_preimage, + unnest(sqlc.arg('identity_prefixes')::text[]) as identity_prefix, + unnest(sqlc.arg('block_numbers')::bigint[]) as block_number, + unnest(sqlc.arg('tx_hashes')::text[]) as tx_hash, + sqlc.arg('commitment_digest'), + sqlc.arg('provider_address') + ON CONFLICT (eon, identity_preimage, identity_prefix, tx_hash, block_number) DO NOTHING RETURNING tx_hash as hashes ), @@ -29,13 +30,13 @@ upserted_commitment AS ( INSERT INTO commitment (tx_hashes, provider_address, commitment_signature, commitment_digest, block_number, received_bid_digest, received_bid_signature, bidder_node_address) SELECT ARRAY_AGG(hashes), - $5, - $6, - $7, - $8, - $9, - $10, - $11 + sqlc.arg('provider_address'), + sqlc.arg('commitment_signature'), + sqlc.arg('commitment_digest'), + sqlc.arg('block_number'), + sqlc.arg('received_bid_digest'), + sqlc.arg('received_bid_signature'), + sqlc.arg('bidder_node_address') FROM inserted_transactions ON CONFLICT (provider_address, commitment_digest) DO UPDATE SET diff --git a/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql index 8efe60c42..e72038243 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/schemas/primev.sql @@ -16,6 +16,7 @@ CREATE TABLE commitment( CREATE TABLE committed_transactions( eon bigint NOT NULL CHECK (eon >= 0), + identity_prefix text NOT NULL, identity_preimage text NOT NULL, block_number bigint NOT NULL CHECK (block_number >= 0), tx_hash text NOT NULL, diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index 3ad3fb09d..3c69059a5 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -67,6 +67,7 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. } identityPreimages := make([]identitypreimage.IdentityPreimage, 0, len(commitment.Identities)) + identityPreimagesHex := make([]string, 0, len(commitment.Identities)) for _, identityPrefix := range commitment.Identities { identityPrefixBytes, err := hex.DecodeString(identityPrefix) if err != nil { @@ -74,7 +75,9 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. return nil, err } identityPreimage := computeIdentity(identityPrefixBytes, bidderNodeAddress.Bytes()) - identityPreimages = append(identityPreimages, identitypreimage.IdentityPreimage(identityPreimage)) + identityPreimageTyped := identitypreimage.IdentityPreimage(identityPreimage) + identityPreimages = append(identityPreimages, identityPreimageTyped) + identityPreimagesHex = append(identityPreimagesHex, identityPreimageTyped.Hex()) } blockNumbers := make([]int64, 0, len(commitment.Identities)) @@ -92,10 +95,11 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. } db := database.New(h.dbpool) err = db.InsertMultipleTransactionsAndUpsertCommitment(ctx, database.InsertMultipleTransactionsAndUpsertCommitmentParams{ - Column1: eons, - Column2: commitment.Identities, - Column3: blockNumbers, - Column4: commitment.TxHashes, + Eons: eons, + IdentityPreimages: identityPreimagesHex, + BlockNumbers: blockNumbers, + TxHashes: commitment.TxHashes, + IdentityPrefixes: commitment.Identities, ProviderAddress: commitment.ProviderAddress, CommitmentSignature: commitment.CommitmentSignature, CommitmentDigest: commitment.CommitmentDigest, From c8696aa7404cc12b6ef8a2fbdd1cbd0238d46149 Mon Sep 17 00:00:00 2001 From: blockchainluffy Date: Fri, 7 Nov 2025 14:39:02 +0530 Subject: [PATCH 28/28] fix: commitment handler to non-blocking --- .../keyperimpl/primev/database/primev.sqlc.gen.go | 2 +- .../keyperimpl/primev/database/sql/queries/primev.sql | 2 +- rolling-shutter/keyperimpl/primev/handler.go | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go index d668a0a1a..4d4e8b41e 100644 --- a/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go +++ b/rolling-shutter/keyperimpl/primev/database/primev.sqlc.gen.go @@ -85,7 +85,7 @@ WITH inserted_transactions AS ( unnest($5::text[]) as tx_hash, $6, $7 - ON CONFLICT (eon, identity_preimage, identity_prefix, tx_hash, block_number) + ON CONFLICT (eon, identity_preimage, tx_hash, block_number) DO NOTHING RETURNING tx_hash as hashes ), diff --git a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql index f697861c2..00dbfe61e 100644 --- a/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql +++ b/rolling-shutter/keyperimpl/primev/database/sql/queries/primev.sql @@ -22,7 +22,7 @@ WITH inserted_transactions AS ( unnest(sqlc.arg('tx_hashes')::text[]) as tx_hash, sqlc.arg('commitment_digest'), sqlc.arg('provider_address') - ON CONFLICT (eon, identity_preimage, identity_prefix, tx_hash, block_number) + ON CONFLICT (eon, identity_preimage, tx_hash, block_number) DO NOTHING RETURNING tx_hash as hashes ), diff --git a/rolling-shutter/keyperimpl/primev/handler.go b/rolling-shutter/keyperimpl/primev/handler.go index 3c69059a5..5c2bc22f8 100644 --- a/rolling-shutter/keyperimpl/primev/handler.go +++ b/rolling-shutter/keyperimpl/primev/handler.go @@ -125,7 +125,12 @@ func (h *PrimevCommitmentHandler) HandleMessage(ctx context.Context, msg p2pmsg. BlockNumber: blockNumberUint64, IdentityPreimages: identityPreimages, } - h.decryptionTriggerChannel <- broker.NewEvent(decryptionTrigger) + + select { + case h.decryptionTriggerChannel <- broker.NewEvent(decryptionTrigger): + case <-ctx.Done(): + return nil, ctx.Err() + } hLog.Info().Msg("sent decryption trigger")