github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/contracts/ens/ens_test.go (about)

     1  
     2  //此源码被清华学神尹成大魔王专业翻译分析并修改
     3  //尹成QQ77025077
     4  //尹成微信18510341407
     5  //尹成所在QQ群721929980
     6  //尹成邮箱 yinc13@mails.tsinghua.edu.cn
     7  //尹成毕业于清华大学,微软区块链领域全球最有价值专家
     8  //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
     9  //版权所有2016 Go Ethereum作者
    10  //此文件是Go以太坊库的一部分。
    11  //
    12  //Go-Ethereum库是免费软件:您可以重新分发它和/或修改
    13  //根据GNU发布的较低通用公共许可证的条款
    14  //自由软件基金会,或者许可证的第3版,或者
    15  //(由您选择)任何更高版本。
    16  //
    17  //Go以太坊图书馆的发行目的是希望它会有用,
    18  //但没有任何保证;甚至没有
    19  //适销性或特定用途的适用性。见
    20  //GNU较低的通用公共许可证,了解更多详细信息。
    21  //
    22  //你应该收到一份GNU较低级别的公共许可证副本
    23  //以及Go以太坊图书馆。如果没有,请参见<http://www.gnu.org/licenses/>。
    24  
    25  package ens
    26  
    27  import (
    28  	"math/big"
    29  	"testing"
    30  
    31  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    32  	"github.com/ethereum/go-ethereum/accounts/abi/bind/backends"
    33  	"github.com/ethereum/go-ethereum/contracts/ens/contract"
    34  	"github.com/ethereum/go-ethereum/core"
    35  	"github.com/ethereum/go-ethereum/crypto"
    36  )
    37  
    38  var (
    39  	key, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
    40  	name   = "my name on ENS"
    41  	hash   = crypto.Keccak256Hash([]byte("my content"))
    42  	addr   = crypto.PubkeyToAddress(key.PublicKey)
    43  )
    44  
    45  func TestENS(t *testing.T) {
    46  	contractBackend := backends.NewSimulatedBackend(core.GenesisAlloc{addr: {Balance: big.NewInt(1000000000)}}, 10000000)
    47  	transactOpts := bind.NewKeyedTransactor(key)
    48  
    49  	ensAddr, ens, err := DeployENS(transactOpts, contractBackend)
    50  	if err != nil {
    51  		t.Fatalf("can't deploy root registry: %v", err)
    52  	}
    53  	contractBackend.Commit()
    54  
    55  //将自己设置为名称的所有者。
    56  	if _, err := ens.Register(name); err != nil {
    57  		t.Fatalf("can't register: %v", err)
    58  	}
    59  	contractBackend.Commit()
    60  
    61  //部署一个冲突解决程序并使其负责该名称。
    62  	resolverAddr, _, _, err := contract.DeployPublicResolver(transactOpts, contractBackend, ensAddr)
    63  	if err != nil {
    64  		t.Fatalf("can't deploy resolver: %v", err)
    65  	}
    66  	if _, err := ens.SetResolver(EnsNode(name), resolverAddr); err != nil {
    67  		t.Fatalf("can't set resolver: %v", err)
    68  	}
    69  	contractBackend.Commit()
    70  
    71  //设置名称的内容哈希。
    72  	if _, err = ens.SetContentHash(name, hash); err != nil {
    73  		t.Fatalf("can't set content hash: %v", err)
    74  	}
    75  	contractBackend.Commit()
    76  
    77  //尝试解析名称。
    78  	vhost, err := ens.Resolve(name)
    79  	if err != nil {
    80  		t.Fatalf("expected no error, got %v", err)
    81  	}
    82  	if vhost != hash {
    83  		t.Fatalf("resolve error, expected %v, got %v", hash.Hex(), vhost.Hex())
    84  	}
    85  }