diff options
Diffstat (limited to 'contracts/ens/ens.go')
-rw-r--r-- | contracts/ens/ens.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/contracts/ens/ens.go b/contracts/ens/ens.go index 75d9d0e4b..b7448c471 100644 --- a/contracts/ens/ens.go +++ b/contracts/ens/ens.go @@ -151,6 +151,38 @@ func (self *ENS) Resolve(name string) (common.Hash, error) { return common.BytesToHash(ret[:]), nil } +// Addr is a non-transactional call that returns the address associated with a name. +func (self *ENS) Addr(name string) (common.Address, error) { + node := EnsNode(name) + + resolver, err := self.getResolver(node) + if err != nil { + return common.Address{}, err + } + + ret, err := resolver.Addr(node) + if err != nil { + return common.Address{}, err + } + + return common.BytesToAddress(ret[:]), nil +} + +// SetAddress sets the address associated with a name. Only works if the caller +// owns the name, and the associated resolver implements a `setAddress` function. +func (self *ENS) SetAddr(name string, addr common.Address) (*types.Transaction, error) { + node := EnsNode(name) + + resolver, err := self.getResolver(node) + if err != nil { + return nil, err + } + + opts := self.TransactOpts + opts.GasLimit = 200000 + return resolver.Contract.SetAddr(&opts, node, addr) +} + // Register registers a new domain name for the caller, making them the owner of the new name. // Only works if the registrar for the parent domain implements the FIFS registrar protocol. func (self *ENS) Register(name string) (*types.Transaction, error) { |