forked from TrueCloudLab/frostfs-node
[#338] ir: Always enable notary on sidechain
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
81718afb39
commit
0ab589dd52
5 changed files with 32 additions and 51 deletions
|
@ -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,12 +42,10 @@ 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 {
|
||||||
cfgName string
|
cfgName string
|
||||||
|
|
|
@ -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")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,7 +116,6 @@ 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),
|
||||||
|
@ -126,7 +125,6 @@ func (s *Server) enableNotarySupport() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
@ -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
|
||||||
|
|
|
@ -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,15 +266,12 @@ 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() {
|
||||||
initialEpochTicker := timer.NewOneTickTimer(
|
initialEpochTicker := timer.NewOneTickTimer(
|
||||||
|
|
|
@ -57,13 +57,10 @@ func (s *Server) notaryHandler(_ event.Event) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !s.sideNotaryConfig.disabled {
|
if _, err := s.depositSideNotary(); err != nil {
|
||||||
_, err := s.depositSideNotary()
|
|
||||||
if err != nil {
|
|
||||||
s.log.Error(logs.InnerringCantMakeNotaryDepositInSideChain, zap.Error(err))
|
s.log.Error(logs.InnerringCantMakeNotaryDepositInSideChain, zap.Error(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Server) awaitMainNotaryDeposit(ctx context.Context, tx util.Uint256) error {
|
func (s *Server) awaitMainNotaryDeposit(ctx context.Context, tx util.Uint256) error {
|
||||||
return awaitNotaryDepositInClient(ctx, s.mainnetClient, tx)
|
return awaitNotaryDepositInClient(ctx, s.mainnetClient, tx)
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue