forked from TrueCloudLab/frostfs-node
d840627816
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
76 lines
2 KiB
Go
76 lines
2 KiB
Go
package contractsconfig
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/nspcc-dev/neo-go/pkg/util"
|
|
"github.com/nspcc-dev/neofs-node/cmd/neofs-node/config"
|
|
)
|
|
|
|
const (
|
|
subsection = "contracts"
|
|
)
|
|
|
|
// Netmap returns value of "netmap" config parameter
|
|
// from "contracts" section.
|
|
//
|
|
// Returns zero filled script hash if value is not set.
|
|
// Throws panic if value is not a 20-byte LE hex-encoded string.
|
|
func Netmap(c *config.Config) util.Uint160 {
|
|
return contractAddress(c, "netmap")
|
|
}
|
|
|
|
// Balance returns value of "balance" config parameter
|
|
// from "contracts" section.
|
|
//
|
|
// Returns zero filled script hash if value is not set.
|
|
// Throws panic if value is not a 20-byte LE hex-encoded string.
|
|
func Balance(c *config.Config) util.Uint160 {
|
|
return contractAddress(c, "balance")
|
|
}
|
|
|
|
// Container returns value of "container" config parameter
|
|
// from "contracts" section.
|
|
//
|
|
// Returns zero filled script hash if value is not set.
|
|
// Throws panic if value is not a 20-byte LE hex-encoded string.
|
|
func Container(c *config.Config) util.Uint160 {
|
|
return contractAddress(c, "container")
|
|
}
|
|
|
|
// Reputation returns value of "reputation" config parameter
|
|
// from "contracts" section.
|
|
//
|
|
// Returns zero filled script hash if value is not set.
|
|
// Throws panic if value is not a 20-byte LE hex-encoded string.
|
|
func Reputation(c *config.Config) util.Uint160 {
|
|
return contractAddress(c, "reputation")
|
|
}
|
|
|
|
// Proxy returns value of "proxy" config parameter
|
|
// from "contracts" section.
|
|
//
|
|
// Returns zero filled script hash if value is not set.
|
|
// Throws panic if value is not a 20-byte LE hex-encoded string.
|
|
func Proxy(c *config.Config) util.Uint160 {
|
|
return contractAddress(c, "proxy")
|
|
}
|
|
|
|
func contractAddress(c *config.Config, name string) util.Uint160 {
|
|
v := config.String(c.Sub(subsection), name)
|
|
if v == "" {
|
|
return util.Uint160{} // if address is not set, then NNS resolver should be used
|
|
}
|
|
|
|
addr, err := util.Uint160DecodeStringLE(v)
|
|
if err != nil {
|
|
panic(fmt.Errorf(
|
|
"can't parse %s contract address %s: %w",
|
|
name,
|
|
v,
|
|
err,
|
|
))
|
|
}
|
|
|
|
return addr
|
|
}
|