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 }