diff options
Diffstat (limited to 'common/resolver/resolver.go')
-rw-r--r-- | common/resolver/resolver.go | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/common/resolver/resolver.go b/common/resolver/resolver.go index 060e9dbb5..9c71ac85f 100644 --- a/common/resolver/resolver.go +++ b/common/resolver/resolver.go @@ -11,7 +11,7 @@ import ( /* Resolver implements the Ethereum DNS mapping -NameReg : Domain Name (or Code hash of Contract) -> Content Hash +HashReg : Key Hash (hash of domain name or contract code) -> Content Hash UrlHint : Content Hash -> Url Hint The resolver is meant to be called by the roundtripper transport implementation @@ -19,13 +19,13 @@ of a url scheme */ const ( URLHintContractAddress = core.ContractAddrURLhint - NameRegContractAddress = core.ContractAddrHashReg + HashRegContractAddress = core.ContractAddrHashReg ) type Resolver struct { backend Backend urlHintContractAddress string - nameRegContractAddress string + hashRegContractAddress string } type Backend interface { @@ -36,17 +36,23 @@ func New(eth Backend, uhca, nrca string) *Resolver { return &Resolver{eth, uhca, nrca} } -func (self *Resolver) NameToContentHash(name string) (chash common.Hash, err error) { - // look up in nameReg - key := storageAddress(1, common.Hex2BytesFixed(name, 32)) - hash := self.backend.StorageAt("0x"+self.nameRegContractAddress, key) - copy(chash[:], common.Hex2Bytes(hash)) +func (self *Resolver) KeyToContentHash(khash common.Hash) (chash common.Hash, err error) { + // look up in hashReg + key := storageAddress(1, khash[:]) + hash := self.backend.StorageAt("0x"+self.hashRegContractAddress, key) + + if hash == "0x0" || len(hash) < 3 { + err = fmt.Errorf("GetHashReg: content hash not found") + return + } + + copy(chash[:], common.Hex2BytesFixed(hash[2:], 32)) return } func (self *Resolver) ContentHashToUrl(chash common.Hash) (uri string, err error) { - // look up in nameReg - key := storageAddress(2, chash[:]) + // look up in URL reg + key := storageAddress(1, chash[:]) hex := self.backend.StorageAt("0x"+self.urlHintContractAddress, key) uri = string(common.Hex2Bytes(hex[2:])) l := len(uri) @@ -61,9 +67,9 @@ func (self *Resolver) ContentHashToUrl(chash common.Hash) (uri string, err error return } -func (self *Resolver) NameToUrl(name string) (uri string, hash common.Hash, err error) { +func (self *Resolver) KeyToUrl(key common.Hash) (uri string, hash common.Hash, err error) { // look up in urlHint - hash, err = self.NameToContentHash(name) + hash, err = self.KeyToContentHash(key) if err != nil { return } |