[#338] ir: Always enable notary on sidechain

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
Dmitrii Stepanov 2023-05-17 17:56:11 +03:00 committed by Evgenii Stratonikov
parent 81718afb39
commit 0ab589dd52
5 changed files with 32 additions and 51 deletions

View file

@ -22,7 +22,7 @@ type contracts struct {
alphabet AlphabetContracts // in morph alphabet AlphabetContracts // in morph
} }
func parseContracts(cfg *viper.Viper, morph nnsResolver, withoutMainNet, withoutMainNotary, withoutSideNotary bool) (*contracts, error) { func parseContracts(cfg *viper.Viper, morph nnsResolver, withoutMainNet, withoutMainNotary bool) (*contracts, error) {
var ( var (
result = new(contracts) result = new(contracts)
err error err error
@ -42,11 +42,9 @@ func parseContracts(cfg *viper.Viper, morph nnsResolver, withoutMainNet, without
} }
} }
if !withoutSideNotary { result.proxy, err = parseContract(cfg, morph, "contracts.proxy", client.NNSProxyContractName)
result.proxy, err = parseContract(cfg, morph, "contracts.proxy", client.NNSProxyContractName) if err != nil {
if err != nil { return nil, fmt.Errorf("can't get proxy script hash: %w", err)
return nil, fmt.Errorf("can't get proxy script hash: %w", err)
}
} }
targets := [...]struct { targets := [...]struct {

View file

@ -35,7 +35,7 @@ contracts:
t.Run("all enabled", func(t *testing.T) { t.Run("all enabled", func(t *testing.T) {
t.Parallel() t.Parallel()
c, err := parseContracts(v, nil, false, false, false) c, err := parseContracts(v, nil, false, false)
require.NoError(t, err, "failed to parse contracts") require.NoError(t, err, "failed to parse contracts")
frostfsExp, _ := util.Uint160DecodeStringLE("ee3dee6d05dc79c24a5b8f6985e10d68b7cacc62") frostfsExp, _ := util.Uint160DecodeStringLE("ee3dee6d05dc79c24a5b8f6985e10d68b7cacc62")
@ -70,7 +70,7 @@ contracts:
t.Run("all disabled", func(t *testing.T) { t.Run("all disabled", func(t *testing.T) {
t.Parallel() t.Parallel()
c, err := parseContracts(v, nil, true, true, true) c, err := parseContracts(v, nil, true, true)
require.NoError(t, err, "failed to parse contracts") require.NoError(t, err, "failed to parse contracts")
require.Equal(t, util.Uint160{}, c.frostfs, "invalid frostfs") require.Equal(t, util.Uint160{}, c.frostfs, "invalid frostfs")
@ -89,7 +89,8 @@ contracts:
netmapIDExp, _ := util.Uint160DecodeStringLE("83c600c81d47a1b1b7cf58eb49ae7ee7240dc742") netmapIDExp, _ := util.Uint160DecodeStringLE("83c600c81d47a1b1b7cf58eb49ae7ee7240dc742")
require.Equal(t, netmapIDExp, c.netmap, "invalid netmap") require.Equal(t, netmapIDExp, c.netmap, "invalid netmap")
require.Equal(t, util.Uint160{}, c.proxy, "invalid proxy") proxyExp, _ := util.Uint160DecodeStringLE("abc8794bb40a21f2db5f21ae62741eb46c8cad1c")
require.Equal(t, proxyExp, c.proxy, "invalid proxy")
require.Equal(t, 2, len(c.alphabet), "invalid alphabet contracts length") require.Equal(t, 2, len(c.alphabet), "invalid alphabet contracts length")
@ -100,9 +101,9 @@ contracts:
require.Equal(t, bukyExp, c.alphabet[buky], "invalid buky") require.Equal(t, bukyExp, c.alphabet[buky], "invalid buky")
}) })
t.Run("main notary & side notary disabled", func(t *testing.T) { t.Run("main notary disabled", func(t *testing.T) {
t.Parallel() t.Parallel()
c, err := parseContracts(v, nil, false, true, true) c, err := parseContracts(v, nil, false, true)
require.NoError(t, err, "failed to parse contracts") require.NoError(t, err, "failed to parse contracts")
frostfsExp, _ := util.Uint160DecodeStringLE("ee3dee6d05dc79c24a5b8f6985e10d68b7cacc62") frostfsExp, _ := util.Uint160DecodeStringLE("ee3dee6d05dc79c24a5b8f6985e10d68b7cacc62")
@ -122,7 +123,8 @@ contracts:
netmapIDExp, _ := util.Uint160DecodeStringLE("83c600c81d47a1b1b7cf58eb49ae7ee7240dc742") netmapIDExp, _ := util.Uint160DecodeStringLE("83c600c81d47a1b1b7cf58eb49ae7ee7240dc742")
require.Equal(t, netmapIDExp, c.netmap, "invalid netmap") require.Equal(t, netmapIDExp, c.netmap, "invalid netmap")
require.Equal(t, util.Uint160{}, c.proxy, "invalid proxy") proxyExp, _ := util.Uint160DecodeStringLE("abc8794bb40a21f2db5f21ae62741eb46c8cad1c")
require.Equal(t, proxyExp, c.proxy, "invalid proxy")
require.Equal(t, 2, len(c.alphabet), "invalid alphabet contracts length") require.Equal(t, 2, len(c.alphabet), "invalid alphabet contracts length")
@ -159,7 +161,7 @@ contracts:
err := v.ReadConfig(file) err := v.ReadConfig(file)
require.NoError(t, err, "read config file failed") require.NoError(t, err, "read config file failed")
_, err = parseContracts(v, nil, false, false, false) _, err = parseContracts(v, nil, false, false)
require.Error(t, err, "unexpected success") require.Error(t, err, "unexpected success")
}) })
@ -196,7 +198,7 @@ contracts:
}, },
} }
_, err = parseContracts(v, morph, false, false, false) _, err = parseContracts(v, morph, false, false)
require.ErrorContains(t, err, "could not read all contracts: required 3, read 2", "unexpected success") require.ErrorContains(t, err, "could not read all contracts: required 3, read 2", "unexpected success")
}) })
} }

View file

@ -116,18 +116,16 @@ func (s *Server) initMainnet(ctx context.Context, cfg *viper.Viper, morphChain *
} }
func (s *Server) enableNotarySupport() error { func (s *Server) enableNotarySupport() error {
if !s.sideNotaryConfig.disabled { // enable notary support in the side client
// enable notary support in the side client err := s.morphClient.EnableNotarySupport(
err := s.morphClient.EnableNotarySupport( client.WithProxyContract(s.contracts.proxy),
client.WithProxyContract(s.contracts.proxy), )
) if err != nil {
if err != nil { return fmt.Errorf("could not enable side chain notary support: %w", err)
return fmt.Errorf("could not enable side chain notary support: %w", err)
}
s.morphListener.EnableNotarySupport(s.contracts.proxy, s.morphClient.Committee, s.morphClient)
} }
s.morphListener.EnableNotarySupport(s.contracts.proxy, s.morphClient.Committee, s.morphClient)
if !s.mainNotaryConfig.disabled { if !s.mainNotaryConfig.disabled {
// enable notary support in the main client // enable notary support in the main client
err := s.mainnetClient.EnableNotarySupport( err := s.mainnetClient.EnableNotarySupport(
@ -143,13 +141,12 @@ func (s *Server) enableNotarySupport() error {
} }
func (s *Server) initNotaryConfig() { func (s *Server) initNotaryConfig() {
s.mainNotaryConfig, s.sideNotaryConfig = notaryConfigs( s.mainNotaryConfig = notaryConfigs(
s.morphClient.ProbeNotary(),
!s.withoutMainNet && s.mainnetClient.ProbeNotary(), // if mainnet disabled then notary flag must be disabled too !s.withoutMainNet && s.mainnetClient.ProbeNotary(), // if mainnet disabled then notary flag must be disabled too
) )
s.log.Info(logs.InnerringNotarySupport, s.log.Info(logs.InnerringNotarySupport,
zap.Bool("sidechain_enabled", !s.sideNotaryConfig.disabled), zap.Bool("sidechain_enabled", true),
zap.Bool("mainchain_enabled", !s.mainNotaryConfig.disabled), zap.Bool("mainchain_enabled", !s.mainNotaryConfig.disabled),
) )
} }
@ -500,7 +497,6 @@ func (s *Server) initContracts(cfg *viper.Viper) error {
s.morphClient, s.morphClient,
s.withoutMainNet, s.withoutMainNet,
s.mainNotaryConfig.disabled, s.mainNotaryConfig.disabled,
s.sideNotaryConfig.disabled,
) )
return err return err

View file

@ -63,7 +63,6 @@ type (
// notary configuration // notary configuration
feeConfig *config.FeeConfig feeConfig *config.FeeConfig
mainNotaryConfig *notaryConfig mainNotaryConfig *notaryConfig
sideNotaryConfig *notaryConfig
// internal variables // internal variables
key *keys.PrivateKey key *keys.PrivateKey
@ -267,14 +266,11 @@ func (s *Server) initMainNotary(ctx context.Context) error {
} }
func (s *Server) initSideNotary(ctx context.Context) error { func (s *Server) initSideNotary(ctx context.Context) error {
if !s.sideNotaryConfig.disabled { return s.initNotary(ctx,
return s.initNotary(ctx, s.depositSideNotary,
s.depositSideNotary, s.awaitSideNotaryDeposit,
s.awaitSideNotaryDeposit, "waiting to accept side notary deposit",
"waiting to accept side notary deposit", )
)
}
return nil
} }
func (s *Server) tickInitialExpoch() { func (s *Server) tickInitialExpoch() {

View file

@ -57,11 +57,8 @@ func (s *Server) notaryHandler(_ event.Event) {
} }
} }
if !s.sideNotaryConfig.disabled { if _, err := s.depositSideNotary(); err != nil {
_, err := s.depositSideNotary() s.log.Error(logs.InnerringCantMakeNotaryDepositInSideChain, zap.Error(err))
if err != nil {
s.log.Error(logs.InnerringCantMakeNotaryDepositInSideChain, zap.Error(err))
}
} }
} }
@ -115,16 +112,8 @@ func awaitNotaryDepositInClient(ctx context.Context, cli *client.Client, txHash
return errDepositTimeout return errDepositTimeout
} }
func notaryConfigs(withSideNotary, withMainNotary bool) (main, side *notaryConfig) { func notaryConfigs(withMainNotary bool) (main *notaryConfig) {
main = new(notaryConfig) main = new(notaryConfig)
side = new(notaryConfig)
if !withSideNotary {
main.disabled = true
side.disabled = true
return
}
main.disabled = !withMainNotary main.disabled = !withMainNotary