github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/contracts/ens/contract/ens.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  //代码生成-不要编辑。
    10  //此文件是生成的绑定,任何手动更改都将丢失。
    11  
    12  package contract
    13  
    14  import (
    15  	"strings"
    16  
    17  	ethereum "github.com/ethereum/go-ethereum"
    18  	"github.com/ethereum/go-ethereum/accounts/abi"
    19  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    20  	"github.com/ethereum/go-ethereum/common"
    21  	"github.com/ethereum/go-ethereum/core/types"
    22  	"github.com/ethereum/go-ethereum/event"
    23  )
    24  
    25  //ensabi是用于从中生成绑定的输入abi。
    26  const ENSABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"label\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setTTL\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"ttl\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NewOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"NewResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"NewTTL\",\"type\":\"event\"}]"
    27  
    28  //ensbin是用于部署新合同的编译字节码。
    29  const ENSBin = `0x6060604052341561000f57600080fd5b60008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58054600160a060020a033316600160a060020a0319909116179055610503806100626000396000f3006060604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630178b8bf811461008757806302571be3146100b957806306ab5923146100cf57806314ab9038146100f657806316a25cbd146101195780631896f70a1461014c5780635b0fc9c31461016e575b600080fd5b341561009257600080fd5b61009d600435610190565b604051600160a060020a03909116815260200160405180910390f35b34156100c457600080fd5b61009d6004356101ae565b34156100da57600080fd5b6100f4600435602435600160a060020a03604435166101c9565b005b341561010157600080fd5b6100f460043567ffffffffffffffff6024351661028b565b341561012457600080fd5b61012f600435610357565b60405167ffffffffffffffff909116815260200160405180910390f35b341561015757600080fd5b6100f4600435600160a060020a036024351661038e565b341561017957600080fd5b6100f4600435600160a060020a0360243516610434565b600090815260208190526040902060010154600160a060020a031690565b600090815260208190526040902054600160a060020a031690565b600083815260208190526040812054849033600160a060020a039081169116146101f257600080fd5b8484604051918252602082015260409081019051908190039020915083857fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e8285604051600160a060020a03909116815260200160405180910390a3506000908152602081905260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555050565b600082815260208190526040902054829033600160a060020a039081169116146102b457600080fd5b827f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa688360405167ffffffffffffffff909116815260200160405180910390a250600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60009081526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1690565b600082815260208190526040902054829033600160a060020a039081169116146103b757600080fd5b827f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a083604051600160a060020a03909116815260200160405180910390a250600091825260208290526040909120600101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b600082815260208190526040902054829033600160a060020a0390811691161461045d57600080fd5b827fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d26683604051600160a060020a03909116815260200160405180910390a250600091825260208290526040909120805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555600a165627a7a72305820f4c798d4c84c9912f389f64631e85e8d16c3e6644f8c2e1579936015c7d5f6660029`
    30  
    31  //Deployeens部署一个新的以太坊契约,将ENS实例绑定到它。
    32  func DeployENS(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ENS, error) {
    33  	parsed, err := abi.JSON(strings.NewReader(ENSABI))
    34  	if err != nil {
    35  		return common.Address{}, nil, nil, err
    36  	}
    37  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ENSBin), backend)
    38  	if err != nil {
    39  		return common.Address{}, nil, nil, err
    40  	}
    41  	return address, tx, &ENS{ENSCaller: ENSCaller{contract: contract}, ENSTransactor: ENSTransactor{contract: contract}, ENSFilterer: ENSFilterer{contract: contract}}, nil
    42  }
    43  
    44  //ENS是围绕以太坊合同自动生成的Go绑定。
    45  type ENS struct {
    46  ENSCaller     //对合同具有只读约束力
    47  ENSTransactor //只写对合同有约束力
    48  ENSFilterer   //合同事件的日志筛选程序
    49  }
    50  
    51  //EnsCaller是围绕以太坊契约自动生成的只读Go绑定。
    52  type ENSCaller struct {
    53  contract *bind.BoundContract //用于低级调用的通用协定包装器
    54  }
    55  
    56  //EnsTransactor是围绕以太坊合同自动生成的只写Go绑定。
    57  type ENSTransactor struct {
    58  contract *bind.BoundContract //用于低级调用的通用协定包装器
    59  }
    60  
    61  //EnsFilter是围绕以太坊合同事件自动生成的日志筛选Go绑定。
    62  type ENSFilterer struct {
    63  contract *bind.BoundContract //用于低级调用的通用协定包装器
    64  }
    65  
    66  //EnSession是围绕以太坊合同自动生成的Go绑定,
    67  //具有预设的调用和事务处理选项。
    68  type ENSSession struct {
    69  Contract     *ENS              //为其设置会话的通用约定绑定
    70  CallOpts     bind.CallOpts     //在整个会话中使用的调用选项
    71  TransactOpts bind.TransactOpts //要在此会话中使用的事务验证选项
    72  }
    73  
    74  //EnCallersession是围绕以太坊合约自动生成的只读Go绑定,
    75  //带预设通话选项。
    76  type ENSCallerSession struct {
    77  Contract *ENSCaller    //用于设置会话的通用协定调用方绑定
    78  CallOpts bind.CallOpts //在整个会话中使用的调用选项
    79  }
    80  
    81  //enstransactiorsession是围绕以太坊合同自动生成的只写Go绑定,
    82  //具有预设的Transact选项。
    83  type ENSTransactorSession struct {
    84  Contract     *ENSTransactor    //用于设置会话的通用合同事务处理程序绑定
    85  TransactOpts bind.TransactOpts //要在此会话中使用的事务验证选项
    86  }
    87  
    88  //Ensraw是围绕以太坊合同自动生成的低级Go绑定。
    89  type ENSRaw struct {
    90  Contract *ENS //用于访问上的原始方法的通用合同绑定
    91  }
    92  
    93  //EnsCallerraw是围绕以太坊合约自动生成的低级只读Go绑定。
    94  type ENSCallerRaw struct {
    95  Contract *ENSCaller //用于访问上的原始方法的通用只读协定绑定
    96  }
    97  
    98  //
    99  type ENSTransactorRaw struct {
   100  Contract *ENSTransactor //用于访问上的原始方法的通用只写协定绑定
   101  }
   102  
   103  //new ens创建一个新的ens实例,绑定到特定的已部署契约。
   104  func NewENS(address common.Address, backend bind.ContractBackend) (*ENS, error) {
   105  	contract, err := bindENS(address, backend, backend, backend)
   106  	if err != nil {
   107  		return nil, err
   108  	}
   109  	return &ENS{ENSCaller: ENSCaller{contract: contract}, ENSTransactor: ENSTransactor{contract: contract}, ENSFilterer: ENSFilterer{contract: contract}}, nil
   110  }
   111  
   112  //newenscaller创建一个新的ENS只读实例,绑定到特定的已部署契约。
   113  func NewENSCaller(address common.Address, caller bind.ContractCaller) (*ENSCaller, error) {
   114  	contract, err := bindENS(address, caller, nil, nil)
   115  	if err != nil {
   116  		return nil, err
   117  	}
   118  	return &ENSCaller{contract: contract}, nil
   119  }
   120  
   121  //
   122  func NewENSTransactor(address common.Address, transactor bind.ContractTransactor) (*ENSTransactor, error) {
   123  	contract, err := bindENS(address, nil, transactor, nil)
   124  	if err != nil {
   125  		return nil, err
   126  	}
   127  	return &ENSTransactor{contract: contract}, nil
   128  }
   129  
   130  //newensfilter创建一个新的ens日志筛选器实例,绑定到特定的已部署协定。
   131  func NewENSFilterer(address common.Address, filterer bind.ContractFilterer) (*ENSFilterer, error) {
   132  	contract, err := bindENS(address, nil, nil, filterer)
   133  	if err != nil {
   134  		return nil, err
   135  	}
   136  	return &ENSFilterer{contract: contract}, nil
   137  }
   138  
   139  //bindens将通用包装绑定到已部署的协定。
   140  func bindENS(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   141  	parsed, err := abi.JSON(strings.NewReader(ENSABI))
   142  	if err != nil {
   143  		return nil, err
   144  	}
   145  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   146  }
   147  
   148  //调用调用(常量)contract方法,参数作为输入值,并且
   149  //将输出设置为结果。结果类型可能是用于
   150  //返回、匿名返回的接口切片和命名的结构
   151  //返回。
   152  func (_ENS *ENSRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   153  	return _ENS.Contract.ENSCaller.contract.Call(opts, result, method, params...)
   154  }
   155  
   156  //转账启动普通交易以将资金转移到合同,调用
   157  //它的默认方法(如果有)。
   158  func (_ENS *ENSRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   159  	return _ENS.Contract.ENSTransactor.contract.Transfer(opts)
   160  }
   161  
   162  //Transact使用参数作为输入值调用(付费)Contract方法。
   163  func (_ENS *ENSRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   164  	return _ENS.Contract.ENSTransactor.contract.Transact(opts, method, params...)
   165  }
   166  
   167  //调用调用(常量)contract方法,参数作为输入值,并且
   168  //将输出设置为结果。结果类型可能是用于
   169  //返回、匿名返回的接口切片和命名的结构
   170  //返回。
   171  func (_ENS *ENSCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   172  	return _ENS.Contract.contract.Call(opts, result, method, params...)
   173  }
   174  
   175  //转账启动普通交易以将资金转移到合同,调用
   176  //它的默认方法(如果有)。
   177  func (_ENS *ENSTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   178  	return _ENS.Contract.contract.Transfer(opts)
   179  }
   180  
   181  //Transact使用参数作为输入值调用(付费)Contract方法。
   182  func (_ENS *ENSTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   183  	return _ENS.Contract.contract.Transact(opts, method, params...)
   184  }
   185  
   186  //owner是一个绑定契约方法0x02571BE3的免费数据检索调用。
   187  //
   188  //solidity:函数所有者(节点字节32)常量返回(地址)
   189  func (_ENS *ENSCaller) Owner(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
   190  	var (
   191  		ret0 = new(common.Address)
   192  	)
   193  	out := ret0
   194  	err := _ENS.contract.Call(opts, out, "owner", node)
   195  	return *ret0, err
   196  }
   197  
   198  //owner是一个绑定契约方法0x02571BE3的免费数据检索调用。
   199  //
   200  //solidity:函数所有者(节点字节32)常量返回(地址)
   201  func (_ENS *ENSSession) Owner(node [32]byte) (common.Address, error) {
   202  	return _ENS.Contract.Owner(&_ENS.CallOpts, node)
   203  }
   204  
   205  //owner是一个绑定契约方法0x02571BE3的免费数据检索调用。
   206  //
   207  //solidity:函数所有者(节点字节32)常量返回(地址)
   208  func (_ENS *ENSCallerSession) Owner(node [32]byte) (common.Address, error) {
   209  	return _ENS.Contract.Owner(&_ENS.CallOpts, node)
   210  }
   211  
   212  //解析器是一个自由的数据检索调用,绑定契约方法0x0178B8bf。
   213  //
   214  //solidity:函数解析程序(节点字节32)常量返回(地址)
   215  func (_ENS *ENSCaller) Resolver(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
   216  	var (
   217  		ret0 = new(common.Address)
   218  	)
   219  	out := ret0
   220  	err := _ENS.contract.Call(opts, out, "resolver", node)
   221  	return *ret0, err
   222  }
   223  
   224  //解析器是一个自由的数据检索调用,绑定契约方法0x0178B8bf。
   225  //
   226  //solidity:函数解析程序(节点字节32)常量返回(地址)
   227  func (_ENS *ENSSession) Resolver(node [32]byte) (common.Address, error) {
   228  	return _ENS.Contract.Resolver(&_ENS.CallOpts, node)
   229  }
   230  
   231  //解析器是一个自由的数据检索调用,绑定契约方法0x0178B8bf。
   232  //
   233  //solidity:函数解析程序(节点字节32)常量返回(地址)
   234  func (_ENS *ENSCallerSession) Resolver(node [32]byte) (common.Address, error) {
   235  	return _ENS.Contract.Resolver(&_ENS.CallOpts, node)
   236  }
   237  
   238  //TTL是一个绑定契约方法0x16A25CBD的免费数据检索调用。
   239  //
   240  //solidity:函数ttl(节点字节32)常量返回(uint64)
   241  func (_ENS *ENSCaller) Ttl(opts *bind.CallOpts, node [32]byte) (uint64, error) {
   242  	var (
   243  		ret0 = new(uint64)
   244  	)
   245  	out := ret0
   246  	err := _ENS.contract.Call(opts, out, "ttl", node)
   247  	return *ret0, err
   248  }
   249  
   250  //TTL是一个绑定契约方法0x16A25CBD的免费数据检索调用。
   251  //
   252  //solidity:函数ttl(节点字节32)常量返回(uint64)
   253  func (_ENS *ENSSession) Ttl(node [32]byte) (uint64, error) {
   254  	return _ENS.Contract.Ttl(&_ENS.CallOpts, node)
   255  }
   256  
   257  //TTL是一个绑定契约方法0x16A25CBD的免费数据检索调用。
   258  //
   259  //solidity:函数ttl(节点字节32)常量返回(uint64)
   260  func (_ENS *ENSCallerSession) Ttl(node [32]byte) (uint64, error) {
   261  	return _ENS.Contract.Ttl(&_ENS.CallOpts, node)
   262  }
   263  
   264  //setowner是一个受合同方法0x5b0fc9c3约束的付费mutator事务。
   265  //
   266  //Solidity: function setOwner(node bytes32, owner address) returns()
   267  func (_ENS *ENSTransactor) SetOwner(opts *bind.TransactOpts, node [32]byte, owner common.Address) (*types.Transaction, error) {
   268  	return _ENS.contract.Transact(opts, "setOwner", node, owner)
   269  }
   270  
   271  //setowner是一个受合同方法0x5b0fc9c3约束的付费mutator事务。
   272  //
   273  //solidity:函数setowner(node bytes32,owner address)返回()
   274  func (_ENS *ENSSession) SetOwner(node [32]byte, owner common.Address) (*types.Transaction, error) {
   275  	return _ENS.Contract.SetOwner(&_ENS.TransactOpts, node, owner)
   276  }
   277  
   278  //setowner是一个受合同方法0x5b0fc9c3约束的付费mutator事务。
   279  //
   280  //solidity:函数setowner(node bytes32,owner address)返回()
   281  func (_ENS *ENSTransactorSession) SetOwner(node [32]byte, owner common.Address) (*types.Transaction, error) {
   282  	return _ENS.Contract.SetOwner(&_ENS.TransactOpts, node, owner)
   283  }
   284  
   285  //setresolver是一个受契约方法0x1896F70A约束的付费转换器事务。
   286  //
   287  //solidity:函数setresolver(node bytes32,resolver address)返回()
   288  func (_ENS *ENSTransactor) SetResolver(opts *bind.TransactOpts, node [32]byte, resolver common.Address) (*types.Transaction, error) {
   289  	return _ENS.contract.Transact(opts, "setResolver", node, resolver)
   290  }
   291  
   292  //setresolver是一个受契约方法0x1896F70A约束的付费转换器事务。
   293  //
   294  //solidity:函数setresolver(node bytes32,resolver address)返回()
   295  func (_ENS *ENSSession) SetResolver(node [32]byte, resolver common.Address) (*types.Transaction, error) {
   296  	return _ENS.Contract.SetResolver(&_ENS.TransactOpts, node, resolver)
   297  }
   298  
   299  //setresolver是一个受契约方法0x1896F70A约束的付费转换器事务。
   300  //
   301  //solidity:函数setresolver(node bytes32,resolver address)返回()
   302  func (_ENS *ENSTransactorSession) SetResolver(node [32]byte, resolver common.Address) (*types.Transaction, error) {
   303  	return _ENS.Contract.SetResolver(&_ENS.TransactOpts, node, resolver)
   304  }
   305  
   306  //setSubnodeOwner是一个付费的mutator事务,绑定合同方法0x06AB5923。
   307  //
   308  //solidity:函数setSubNodeOwner(node bytes32,label bytes32,owner address)返回()
   309  func (_ENS *ENSTransactor) SetSubnodeOwner(opts *bind.TransactOpts, node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
   310  	return _ENS.contract.Transact(opts, "setSubnodeOwner", node, label, owner)
   311  }
   312  
   313  //setSubnodeOwner是一个付费的mutator事务,绑定合同方法0x06AB5923。
   314  //
   315  //solidity:函数setSubNodeOwner(node bytes32,label bytes32,owner address)返回()
   316  func (_ENS *ENSSession) SetSubnodeOwner(node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
   317  	return _ENS.Contract.SetSubnodeOwner(&_ENS.TransactOpts, node, label, owner)
   318  }
   319  
   320  //setSubnodeOwner是一个付费的mutator事务,绑定合同方法0x06AB5923。
   321  //
   322  //solidity:函数setSubNodeOwner(node bytes32,label bytes32,owner address)返回()
   323  func (_ENS *ENSTransactorSession) SetSubnodeOwner(node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
   324  	return _ENS.Contract.SetSubnodeOwner(&_ENS.TransactOpts, node, label, owner)
   325  }
   326  
   327  //settl是一个受合同方法0x14AB9038约束的付费的转换程序事务。
   328  //
   329  //solidity:函数settl(节点字节32,ttl uint64)返回()
   330  func (_ENS *ENSTransactor) SetTTL(opts *bind.TransactOpts, node [32]byte, ttl uint64) (*types.Transaction, error) {
   331  	return _ENS.contract.Transact(opts, "setTTL", node, ttl)
   332  }
   333  
   334  //settl是一个受合同方法0x14AB9038约束的付费的转换程序事务。
   335  //
   336  //solidity:函数settl(节点字节32,ttl uint64)返回()
   337  func (_ENS *ENSSession) SetTTL(node [32]byte, ttl uint64) (*types.Transaction, error) {
   338  	return _ENS.Contract.SetTTL(&_ENS.TransactOpts, node, ttl)
   339  }
   340  
   341  //settl是一个受合同方法0x14AB9038约束的付费的转换程序事务。
   342  //
   343  //solidity:函数settl(节点字节32,ttl uint64)返回()
   344  func (_ENS *ENSTransactorSession) SetTTL(node [32]byte, ttl uint64) (*types.Transaction, error) {
   345  	return _ENS.Contract.SetTTL(&_ENS.TransactOpts, node, ttl)
   346  }
   347  
   348  //EnsNewOwnerIterator从filterNewOwner返回,用于迭代ENS合同引发的NewOwner事件的原始日志和解包数据。
   349  type ENSNewOwnerIterator struct {
   350  Event *ENSNewOwner //包含合同细节和原始日志的事件
   351  
   352  contract *bind.BoundContract //用于解包事件数据的通用合同
   353  event    string              //用于解包事件数据的事件名称
   354  
   355  logs chan types.Log        //日志通道接收找到的合同事件
   356  sub  ethereum.Subscription //错误、完成和终止订阅
   357  done bool                  //订阅是否完成传递日志
   358  fail error                 //停止迭代时出错
   359  }
   360  
   361  //next将迭代器前进到后续事件,返回是否存在
   362  //是否找到更多事件。在检索或分析错误的情况下,false是
   363  //返回错误(),可以查询错误()的确切错误。
   364  func (it *ENSNewOwnerIterator) Next() bool {
   365  //如果迭代器失败,请停止迭代
   366  	if it.fail != nil {
   367  		return false
   368  	}
   369  //如果迭代器已完成,则直接传递可用的
   370  	if it.done {
   371  		select {
   372  		case log := <-it.logs:
   373  			it.Event = new(ENSNewOwner)
   374  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   375  				it.fail = err
   376  				return false
   377  			}
   378  			it.Event.Raw = log
   379  			return true
   380  
   381  		default:
   382  			return false
   383  		}
   384  	}
   385  //迭代器仍在进行中,请等待数据或错误事件
   386  	select {
   387  	case log := <-it.logs:
   388  		it.Event = new(ENSNewOwner)
   389  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   390  			it.fail = err
   391  			return false
   392  		}
   393  		it.Event.Raw = log
   394  		return true
   395  
   396  	case err := <-it.sub.Err():
   397  		it.done = true
   398  		it.fail = err
   399  		return it.Next()
   400  	}
   401  }
   402  
   403  //重试时出错。筛选过程中出现任何检索或分析错误。
   404  func (it *ENSNewOwnerIterator) Error() error {
   405  	return it.fail
   406  }
   407  
   408  //关闭终止迭代过程,释放任何挂起的基础
   409  //资源。
   410  func (it *ENSNewOwnerIterator) Close() error {
   411  	it.sub.Unsubscribe()
   412  	return nil
   413  }
   414  
   415  //EnsNewOwner表示ENS合同引发的NewOwner事件。
   416  type ENSNewOwner struct {
   417  	Node  [32]byte
   418  	Label [32]byte
   419  	Owner common.Address
   420  Raw   types.Log //区块链特定的上下文信息
   421  }
   422  
   423  //FieldNeWOrthor是一个绑定日志事件的免费日志检索操作,绑定了合同事件0xCE047FE737、F824cc26316695128128C118B49 D34 81717417C6D108D155E82.
   424  //
   425  //solidity:事件newowner(节点索引字节32,标签索引字节32,所有者地址)
   426  func (_ENS *ENSFilterer) FilterNewOwner(opts *bind.FilterOpts, node [][32]byte, label [][32]byte) (*ENSNewOwnerIterator, error) {
   427  
   428  	var nodeRule []interface{}
   429  	for _, nodeItem := range node {
   430  		nodeRule = append(nodeRule, nodeItem)
   431  	}
   432  	var labelRule []interface{}
   433  	for _, labelItem := range label {
   434  		labelRule = append(labelRule, labelItem)
   435  	}
   436  
   437  	logs, sub, err := _ENS.contract.FilterLogs(opts, "NewOwner", nodeRule, labelRule)
   438  	if err != nil {
   439  		return nil, err
   440  	}
   441  	return &ENSNewOwnerIterator{contract: _ENS.contract, event: "NewOwner", logs: logs, sub: sub}, nil
   442  }
   443  
   444  //WatchNewOwner是一个绑定合同事件0xCE0457FE73731F824CC27236169235128C118B49D344817417C6D108D155E82的免费日志订阅操作。
   445  //
   446  //solidity:事件newowner(节点索引字节32,标签索引字节32,所有者地址)
   447  func (_ENS *ENSFilterer) WatchNewOwner(opts *bind.WatchOpts, sink chan<- *ENSNewOwner, node [][32]byte, label [][32]byte) (event.Subscription, error) {
   448  
   449  	var nodeRule []interface{}
   450  	for _, nodeItem := range node {
   451  		nodeRule = append(nodeRule, nodeItem)
   452  	}
   453  	var labelRule []interface{}
   454  	for _, labelItem := range label {
   455  		labelRule = append(labelRule, labelItem)
   456  	}
   457  
   458  	logs, sub, err := _ENS.contract.WatchLogs(opts, "NewOwner", nodeRule, labelRule)
   459  	if err != nil {
   460  		return nil, err
   461  	}
   462  	return event.NewSubscription(func(quit <-chan struct{}) error {
   463  		defer sub.Unsubscribe()
   464  		for {
   465  			select {
   466  			case log := <-logs:
   467  //新日志到达,分析事件并转发给用户
   468  				event := new(ENSNewOwner)
   469  				if err := _ENS.contract.UnpackLog(event, "NewOwner", log); err != nil {
   470  					return err
   471  				}
   472  				event.Raw = log
   473  
   474  				select {
   475  				case sink <- event:
   476  				case err := <-sub.Err():
   477  					return err
   478  				case <-quit:
   479  					return nil
   480  				}
   481  			case err := <-sub.Err():
   482  				return err
   483  			case <-quit:
   484  				return nil
   485  			}
   486  		}
   487  	}), nil
   488  }
   489  
   490  //ENSNewResolverIterator is returned from FilterNewResolver and is used to iterate over the raw logs and unpacked data for NewResolver events raised by the ENS contract.
   491  type ENSNewResolverIterator struct {
   492  Event *ENSNewResolver //
   493  
   494  contract *bind.BoundContract //用于解包事件数据的通用合同
   495  event    string              //用于解包事件数据的事件名称
   496  
   497  logs chan types.Log        //日志通道接收找到的合同事件
   498  sub  ethereum.Subscription //错误、完成和终止订阅
   499  done bool                  //订阅是否完成传递日志
   500  fail error                 //停止迭代时出错
   501  }
   502  
   503  //next将迭代器前进到后续事件,返回是否存在
   504  //是否找到更多事件。在检索或分析错误的情况下,false是
   505  //返回错误(),可以查询错误()的确切错误。
   506  func (it *ENSNewResolverIterator) Next() bool {
   507  //如果迭代器失败,请停止迭代
   508  	if it.fail != nil {
   509  		return false
   510  	}
   511  //如果迭代器已完成,则直接传递可用的
   512  	if it.done {
   513  		select {
   514  		case log := <-it.logs:
   515  			it.Event = new(ENSNewResolver)
   516  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   517  				it.fail = err
   518  				return false
   519  			}
   520  			it.Event.Raw = log
   521  			return true
   522  
   523  		default:
   524  			return false
   525  		}
   526  	}
   527  //迭代器仍在进行中,请等待数据或错误事件
   528  	select {
   529  	case log := <-it.logs:
   530  		it.Event = new(ENSNewResolver)
   531  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   532  			it.fail = err
   533  			return false
   534  		}
   535  		it.Event.Raw = log
   536  		return true
   537  
   538  	case err := <-it.sub.Err():
   539  		it.done = true
   540  		it.fail = err
   541  		return it.Next()
   542  	}
   543  }
   544  
   545  //重试时出错。筛选过程中出现任何检索或分析错误。
   546  func (it *ENSNewResolverIterator) Error() error {
   547  	return it.fail
   548  }
   549  
   550  //关闭终止迭代过程,释放任何挂起的基础
   551  //资源。
   552  func (it *ENSNewResolverIterator) Close() error {
   553  	it.sub.Unsubscribe()
   554  	return nil
   555  }
   556  
   557  //ens newresolver表示由ens协定引发的newresolver事件。
   558  type ENSNewResolver struct {
   559  	Node     [32]byte
   560  	Resolver common.Address
   561  Raw      types.Log //区块链特定的上下文信息
   562  }
   563  
   564  //filternewresolver是一个自由的日志检索操作,绑定合同事件0x335721b01866dc23fbee8B6b2c7b1e14d6f05c28cd35a2c934239f94095602a0。
   565  //
   566  //
   567  func (_ENS *ENSFilterer) FilterNewResolver(opts *bind.FilterOpts, node [][32]byte) (*ENSNewResolverIterator, error) {
   568  
   569  	var nodeRule []interface{}
   570  	for _, nodeItem := range node {
   571  		nodeRule = append(nodeRule, nodeItem)
   572  	}
   573  
   574  	logs, sub, err := _ENS.contract.FilterLogs(opts, "NewResolver", nodeRule)
   575  	if err != nil {
   576  		return nil, err
   577  	}
   578  	return &ENSNewResolverIterator{contract: _ENS.contract, event: "NewResolver", logs: logs, sub: sub}, nil
   579  }
   580  
   581  //
   582  //
   583  //
   584  func (_ENS *ENSFilterer) WatchNewResolver(opts *bind.WatchOpts, sink chan<- *ENSNewResolver, node [][32]byte) (event.Subscription, error) {
   585  
   586  	var nodeRule []interface{}
   587  	for _, nodeItem := range node {
   588  		nodeRule = append(nodeRule, nodeItem)
   589  	}
   590  
   591  	logs, sub, err := _ENS.contract.WatchLogs(opts, "NewResolver", nodeRule)
   592  	if err != nil {
   593  		return nil, err
   594  	}
   595  	return event.NewSubscription(func(quit <-chan struct{}) error {
   596  		defer sub.Unsubscribe()
   597  		for {
   598  			select {
   599  			case log := <-logs:
   600  //新日志到达,分析事件并转发给用户
   601  				event := new(ENSNewResolver)
   602  				if err := _ENS.contract.UnpackLog(event, "NewResolver", log); err != nil {
   603  					return err
   604  				}
   605  				event.Raw = log
   606  
   607  				select {
   608  				case sink <- event:
   609  				case err := <-sub.Err():
   610  					return err
   611  				case <-quit:
   612  					return nil
   613  				}
   614  			case err := <-sub.Err():
   615  				return err
   616  			case <-quit:
   617  				return nil
   618  			}
   619  		}
   620  	}), nil
   621  }
   622  
   623  //
   624  type ENSNewTTLIterator struct {
   625  Event *ENSNewTTL //包含合同细节和原始日志的事件
   626  
   627  contract *bind.BoundContract //用于解包事件数据的通用合同
   628  event    string              //用于解包事件数据的事件名称
   629  
   630  logs chan types.Log        //日志通道接收找到的合同事件
   631  sub  ethereum.Subscription //错误、完成和终止订阅
   632  done bool                  //订阅是否完成传递日志
   633  fail error                 //停止迭代时出错
   634  }
   635  
   636  //next将迭代器前进到后续事件,返回是否存在
   637  //是否找到更多事件。在检索或分析错误的情况下,false是
   638  //返回错误(),可以查询错误()的确切错误。
   639  func (it *ENSNewTTLIterator) Next() bool {
   640  //如果迭代器失败,请停止迭代
   641  	if it.fail != nil {
   642  		return false
   643  	}
   644  //如果迭代器已完成,则直接传递可用的
   645  	if it.done {
   646  		select {
   647  		case log := <-it.logs:
   648  			it.Event = new(ENSNewTTL)
   649  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   650  				it.fail = err
   651  				return false
   652  			}
   653  			it.Event.Raw = log
   654  			return true
   655  
   656  		default:
   657  			return false
   658  		}
   659  	}
   660  //迭代器仍在进行中,请等待数据或错误事件
   661  	select {
   662  	case log := <-it.logs:
   663  		it.Event = new(ENSNewTTL)
   664  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   665  			it.fail = err
   666  			return false
   667  		}
   668  		it.Event.Raw = log
   669  		return true
   670  
   671  	case err := <-it.sub.Err():
   672  		it.done = true
   673  		it.fail = err
   674  		return it.Next()
   675  	}
   676  }
   677  
   678  //重试时出错。筛选过程中出现任何检索或分析错误。
   679  func (it *ENSNewTTLIterator) Error() error {
   680  	return it.fail
   681  }
   682  
   683  //关闭终止迭代过程,释放任何挂起的基础
   684  //资源。
   685  func (it *ENSNewTTLIterator) Close() error {
   686  	it.sub.Unsubscribe()
   687  	return nil
   688  }
   689  
   690  //
   691  type ENSNewTTL struct {
   692  	Node [32]byte
   693  	Ttl  uint64
   694  Raw  types.Log //区块链特定的上下文信息
   695  }
   696  
   697  //
   698  //
   699  //
   700  func (_ENS *ENSFilterer) FilterNewTTL(opts *bind.FilterOpts, node [][32]byte) (*ENSNewTTLIterator, error) {
   701  
   702  	var nodeRule []interface{}
   703  	for _, nodeItem := range node {
   704  		nodeRule = append(nodeRule, nodeItem)
   705  	}
   706  
   707  	logs, sub, err := _ENS.contract.FilterLogs(opts, "NewTTL", nodeRule)
   708  	if err != nil {
   709  		return nil, err
   710  	}
   711  	return &ENSNewTTLIterator{contract: _ENS.contract, event: "NewTTL", logs: logs, sub: sub}, nil
   712  }
   713  
   714  //
   715  //
   716  //solidity:事件newttl(节点索引字节32,ttl uint64)
   717  func (_ENS *ENSFilterer) WatchNewTTL(opts *bind.WatchOpts, sink chan<- *ENSNewTTL, node [][32]byte) (event.Subscription, error) {
   718  
   719  	var nodeRule []interface{}
   720  	for _, nodeItem := range node {
   721  		nodeRule = append(nodeRule, nodeItem)
   722  	}
   723  
   724  	logs, sub, err := _ENS.contract.WatchLogs(opts, "NewTTL", nodeRule)
   725  	if err != nil {
   726  		return nil, err
   727  	}
   728  	return event.NewSubscription(func(quit <-chan struct{}) error {
   729  		defer sub.Unsubscribe()
   730  		for {
   731  			select {
   732  			case log := <-logs:
   733  //新日志到达,分析事件并转发给用户
   734  				event := new(ENSNewTTL)
   735  				if err := _ENS.contract.UnpackLog(event, "NewTTL", log); err != nil {
   736  					return err
   737  				}
   738  				event.Raw = log
   739  
   740  				select {
   741  				case sink <- event:
   742  				case err := <-sub.Err():
   743  					return err
   744  				case <-quit:
   745  					return nil
   746  				}
   747  			case err := <-sub.Err():
   748  				return err
   749  			case <-quit:
   750  				return nil
   751  			}
   752  		}
   753  	}), nil
   754  }
   755  
   756  //enstransferriterator从filtertransfer返回,用于迭代ens协定引发的传输事件的原始日志和解包数据。
   757  type ENSTransferIterator struct {
   758  Event *ENSTransfer //包含合同细节和原始日志的事件
   759  
   760  contract *bind.BoundContract //用于解包事件数据的通用合同
   761  event    string              //用于解包事件数据的事件名称
   762  
   763  logs chan types.Log        //日志通道接收找到的合同事件
   764  sub  ethereum.Subscription //错误、完成和终止订阅
   765  done bool                  //订阅是否完成传递日志
   766  fail error                 //停止迭代时出错
   767  }
   768  
   769  //next将迭代器前进到后续事件,返回是否存在
   770  //是否找到更多事件。在检索或分析错误的情况下,false是
   771  //返回错误(),可以查询错误()的确切错误。
   772  func (it *ENSTransferIterator) Next() bool {
   773  //如果迭代器失败,请停止迭代
   774  	if it.fail != nil {
   775  		return false
   776  	}
   777  //如果迭代器已完成,则直接传递可用的
   778  	if it.done {
   779  		select {
   780  		case log := <-it.logs:
   781  			it.Event = new(ENSTransfer)
   782  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   783  				it.fail = err
   784  				return false
   785  			}
   786  			it.Event.Raw = log
   787  			return true
   788  
   789  		default:
   790  			return false
   791  		}
   792  	}
   793  //迭代器仍在进行中,请等待数据或错误事件
   794  	select {
   795  	case log := <-it.logs:
   796  		it.Event = new(ENSTransfer)
   797  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   798  			it.fail = err
   799  			return false
   800  		}
   801  		it.Event.Raw = log
   802  		return true
   803  
   804  	case err := <-it.sub.Err():
   805  		it.done = true
   806  		it.fail = err
   807  		return it.Next()
   808  	}
   809  }
   810  
   811  //重试时出错。筛选过程中出现任何检索或分析错误。
   812  func (it *ENSTransferIterator) Error() error {
   813  	return it.fail
   814  }
   815  
   816  //关闭终止迭代过程,释放任何挂起的基础
   817  //资源。
   818  func (it *ENSTransferIterator) Close() error {
   819  	it.sub.Unsubscribe()
   820  	return nil
   821  }
   822  
   823  //EnsTransfer表示ENS合同引发的转让事件。
   824  type ENSTransfer struct {
   825  	Node  [32]byte
   826  	Owner common.Address
   827  Raw   types.Log //区块链特定的上下文信息
   828  }
   829  
   830  //
   831  //
   832  //
   833  func (_ENS *ENSFilterer) FilterTransfer(opts *bind.FilterOpts, node [][32]byte) (*ENSTransferIterator, error) {
   834  
   835  	var nodeRule []interface{}
   836  	for _, nodeItem := range node {
   837  		nodeRule = append(nodeRule, nodeItem)
   838  	}
   839  
   840  	logs, sub, err := _ENS.contract.FilterLogs(opts, "Transfer", nodeRule)
   841  	if err != nil {
   842  		return nil, err
   843  	}
   844  	return &ENSTransferIterator{contract: _ENS.contract, event: "Transfer", logs: logs, sub: sub}, nil
   845  }
   846  
   847  //
   848  //
   849  //
   850  func (_ENS *ENSFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ENSTransfer, node [][32]byte) (event.Subscription, error) {
   851  
   852  	var nodeRule []interface{}
   853  	for _, nodeItem := range node {
   854  		nodeRule = append(nodeRule, nodeItem)
   855  	}
   856  
   857  	logs, sub, err := _ENS.contract.WatchLogs(opts, "Transfer", nodeRule)
   858  	if err != nil {
   859  		return nil, err
   860  	}
   861  	return event.NewSubscription(func(quit <-chan struct{}) error {
   862  		defer sub.Unsubscribe()
   863  		for {
   864  			select {
   865  			case log := <-logs:
   866  //新日志到达,分析事件并转发给用户
   867  				event := new(ENSTransfer)
   868  				if err := _ENS.contract.UnpackLog(event, "Transfer", log); err != nil {
   869  					return err
   870  				}
   871  				event.Raw = log
   872  
   873  				select {
   874  				case sink <- event:
   875  				case err := <-sub.Err():
   876  					return err
   877  				case <-quit:
   878  					return nil
   879  				}
   880  			case err := <-sub.Err():
   881  				return err
   882  			case <-quit:
   883  				return nil
   884  			}
   885  		}
   886  	}), nil
   887  }