33 lines
597 B
Go
33 lines
597 B
Go
package ens
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
"github.com/ethereum/go-ethereum/crypto"
|
|
)
|
|
|
|
func nameHash(name string) common.Hash {
|
|
node := common.Hash{}
|
|
|
|
if len(name) > 0 {
|
|
labels := strings.Split(name, ".")
|
|
|
|
for i := len(labels) - 1; i >= 0; i-- {
|
|
labelSha := crypto.Keccak256Hash([]byte(labels[i]))
|
|
node = crypto.Keccak256Hash(node.Bytes(), labelSha.Bytes())
|
|
}
|
|
}
|
|
|
|
return node
|
|
}
|
|
|
|
func validateENSUsername(username string) error {
|
|
if !strings.HasSuffix(username, ".eth") {
|
|
return fmt.Errorf("username must end with .eth")
|
|
}
|
|
|
|
return nil
|
|
}
|