[#122] Use balance precision converter in inner ring

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
remotes/KirillovDenis/release/v0.21.1
Alex Vanin 2020-10-27 13:49:34 +03:00 committed by Alex Vanin
parent 90984ee219
commit 330c4b42d9
1 changed files with 12 additions and 0 deletions

View File

@ -17,6 +17,7 @@ import (
"github.com/nspcc-dev/neofs-node/pkg/morph/client"
"github.com/nspcc-dev/neofs-node/pkg/morph/event"
"github.com/nspcc-dev/neofs-node/pkg/morph/subscriber"
"github.com/nspcc-dev/neofs-node/pkg/util/precision"
"github.com/pkg/errors"
"github.com/spf13/viper"
"go.uber.org/atomic"
@ -39,6 +40,7 @@ type (
mainnetClient *client.Client
epochCounter atomic.Uint64
innerRingIndex atomic.Int32
precision precision.Fixed8Converter
// internal variables
key *ecdsa.PrivateKey
@ -213,6 +215,7 @@ func New(ctx context.Context, log *zap.Logger, cfg *viper.Viper) (*Server, error
BalanceContract: server.contracts.balance,
MainnetClient: server.mainnetClient,
ActiveState: server,
Converter: &server.precision,
})
if err != nil {
return nil, err
@ -235,6 +238,7 @@ func New(ctx context.Context, log *zap.Logger, cfg *viper.Viper) (*Server, error
MorphClient: server.morphClient,
EpochState: server,
ActiveState: server,
Converter: &server.precision,
})
if err != nil {
return nil, err
@ -377,12 +381,20 @@ func (s *Server) initConfigFromBlockchain() error {
return errors.Wrap(err, "can't read inner ring list")
}
// get balance precision
balancePrecision, err := invoke.BalancePrecision(s.morphClient, s.contracts.balance)
if err != nil {
return errors.Wrap(err, "can't read balance contract precision")
}
s.epochCounter.Store(uint64(epoch))
s.innerRingIndex.Store(index)
s.precision.SetBalancePrecision(balancePrecision)
s.log.Debug("read config from blockchain",
zap.Bool("active", s.IsActive()),
zap.Int64("epoch", epoch),
zap.Uint32("precision", balancePrecision),
)
return nil