diff --git a/pkg/innerring/innerring.go b/pkg/innerring/innerring.go index 82c3da69..9c92c441 100644 --- a/pkg/innerring/innerring.go +++ b/pkg/innerring/innerring.go @@ -423,7 +423,7 @@ func New(ctx context.Context, log *zap.Logger, cfg *viper.Viper) (*Server, error } neofsClient, err := neofsWrapper.NewFromMorph(server.mainnetClient, server.contracts.neofs, - server.feeConfig.MainChainFee()) + server.feeConfig.MainChainFee(), neofsWrapper.TryNotary()) if err != nil { return nil, err } diff --git a/pkg/morph/client/neofs/wrapper/client.go b/pkg/morph/client/neofs/wrapper/client.go index 2d647f57..8d038ab1 100644 --- a/pkg/morph/client/neofs/wrapper/client.go +++ b/pkg/morph/client/neofs/wrapper/client.go @@ -16,9 +16,33 @@ import ( // Working ClientWrapper must be created via NewFromMorph. type ClientWrapper neofscontract.Client +// Option allows to set an optional +// parameter of ClientWrapper. +type Option func(*opts) + +type opts []client.StaticClientOption + +func defaultOpts() *opts { + return new(opts) +} + +// TryNotary returns option to enable +// notary invocation tries. +func TryNotary() Option { + return func(o *opts) { + *o = append(*o, client.TryNotary()) + } +} + // NewFromMorph wraps client to work with NeoFS contract. -func NewFromMorph(cli *client.Client, contract util.Uint160, fee fixedn.Fixed8) (*ClientWrapper, error) { - sc, err := client.NewStatic(cli, contract, fee, client.TryNotary()) +func NewFromMorph(cli *client.Client, contract util.Uint160, fee fixedn.Fixed8, opts ...Option) (*ClientWrapper, error) { + o := defaultOpts() + + for i := range opts { + opts[i](o) + } + + sc, err := client.NewStatic(cli, contract, fee, ([]client.StaticClientOption)(*o)...) if err != nil { return nil, fmt.Errorf("could not create client of NeoFS contract: %w", err) }