forked from TrueCloudLab/frostfs-node
[#905] morph/client: Fetch NNS hash once on init
NNS contract hash is taken from the contract with ID=1. Because morph client is expected to work with the same chain, and because contract hash doesn't change on update, there is no need to fetch it from each new endpoint. Change-Id: Ic6dc18283789da076d6a0b3701139b97037714cc Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
30099194ba
commit
a4da1da767
3 changed files with 10 additions and 54 deletions
|
@ -61,11 +61,7 @@ func (c *Client) NNSContractAddress(name string) (sh util.Uint160, err error) {
|
|||
return util.Uint160{}, ErrConnectionLost
|
||||
}
|
||||
|
||||
nnsHash, err := c.NNSHash()
|
||||
if err != nil {
|
||||
return util.Uint160{}, err
|
||||
}
|
||||
|
||||
nnsHash := c.NNSHash()
|
||||
sh, err = nnsResolve(c.client, nnsHash, name)
|
||||
if err != nil {
|
||||
return sh, fmt.Errorf("NNS.resolve: %w", err)
|
||||
|
@ -74,34 +70,8 @@ func (c *Client) NNSContractAddress(name string) (sh util.Uint160, err error) {
|
|||
}
|
||||
|
||||
// NNSHash returns NNS contract hash.
|
||||
func (c *Client) NNSHash() (util.Uint160, error) {
|
||||
c.switchLock.RLock()
|
||||
defer c.switchLock.RUnlock()
|
||||
|
||||
if c.inactive {
|
||||
return util.Uint160{}, ErrConnectionLost
|
||||
}
|
||||
|
||||
success := false
|
||||
startedAt := time.Now()
|
||||
|
||||
defer func() {
|
||||
c.cache.metrics.AddMethodDuration("NNSContractHash", success, time.Since(startedAt))
|
||||
}()
|
||||
|
||||
nnsHash := c.cache.nns()
|
||||
|
||||
if nnsHash == nil {
|
||||
cs, err := c.client.GetContractStateByID(nnsContractID)
|
||||
if err != nil {
|
||||
return util.Uint160{}, fmt.Errorf("NNS contract state: %w", err)
|
||||
}
|
||||
|
||||
c.cache.setNNSHash(cs.Hash)
|
||||
nnsHash = &cs.Hash
|
||||
}
|
||||
success = true
|
||||
return *nnsHash, nil
|
||||
func (c *Client) NNSHash() util.Uint160 {
|
||||
return c.nnsHash
|
||||
}
|
||||
|
||||
func nnsResolveItem(c *rpcclient.WSClient, nnsHash util.Uint160, domain string) (stackitem.Item, error) {
|
||||
|
@ -241,11 +211,7 @@ func (c *Client) contractGroupKey() (*keys.PublicKey, error) {
|
|||
return gKey, nil
|
||||
}
|
||||
|
||||
nnsHash, err := c.NNSHash()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
nnsHash := c.NNSHash()
|
||||
item, err := nnsResolveItem(c.client, nnsHash, NNSGroupKeyName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue