github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/contracts/ens/ens_test.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:33</date> 10 //</624342613939458048> 11 12 13 package ens 14 15 import ( 16 "math/big" 17 "testing" 18 19 "github.com/ethereum/go-ethereum/accounts/abi/bind" 20 "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" 21 "github.com/ethereum/go-ethereum/contracts/ens/contract" 22 "github.com/ethereum/go-ethereum/core" 23 "github.com/ethereum/go-ethereum/crypto" 24 ) 25 26 var ( 27 key, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") 28 name = "my name on ENS" 29 hash = crypto.Keccak256Hash([]byte("my content")) 30 addr = crypto.PubkeyToAddress(key.PublicKey) 31 ) 32 33 func TestENS(t *testing.T) { 34 contractBackend := backends.NewSimulatedBackend(core.GenesisAlloc{addr: {Balance: big.NewInt(1000000000)}}, 10000000) 35 transactOpts := bind.NewKeyedTransactor(key) 36 37 ensAddr, ens, err := DeployENS(transactOpts, contractBackend) 38 if err != nil { 39 t.Fatalf("can't deploy root registry: %v", err) 40 } 41 contractBackend.Commit() 42 43 //将自己设置为名称的所有者。 44 if _, err := ens.Register(name); err != nil { 45 t.Fatalf("can't register: %v", err) 46 } 47 contractBackend.Commit() 48 49 //部署一个冲突解决程序并使其负责该名称。 50 resolverAddr, _, _, err := contract.DeployPublicResolver(transactOpts, contractBackend, ensAddr) 51 if err != nil { 52 t.Fatalf("can't deploy resolver: %v", err) 53 } 54 if _, err := ens.SetResolver(EnsNode(name), resolverAddr); err != nil { 55 t.Fatalf("can't set resolver: %v", err) 56 } 57 contractBackend.Commit() 58 59 //设置名称的内容哈希。 60 if _, err = ens.SetContentHash(name, hash); err != nil { 61 t.Fatalf("can't set content hash: %v", err) 62 } 63 contractBackend.Commit() 64 65 //尝试解析名称。 66 vhost, err := ens.Resolve(name) 67 if err != nil { 68 t.Fatalf("expected no error, got %v", err) 69 } 70 if vhost != hash { 71 t.Fatalf("resolve error, expected %v, got %v", hash.Hex(), vhost.Hex()) 72 } 73 } 74