github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/contracts/ens/contract/publicresolver.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  	"math/big"
    16  	"strings"
    17  
    18  	ethereum "github.com/ethereum/go-ethereum"
    19  	"github.com/ethereum/go-ethereum/accounts/abi"
    20  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    21  	"github.com/ethereum/go-ethereum/common"
    22  	"github.com/ethereum/go-ethereum/core/types"
    23  	"github.com/ethereum/go-ethereum/event"
    24  )
    25  
    26  //publicResolverabi是用于从中生成绑定的输入abi。
    27  const PublicResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"name\":\"contentType\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"setPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"content\",\"outputs\":[{\"name\":\"ret\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"ret\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"name\":\"ret\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentType\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setABI\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"name\":\"ret\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"setContent\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"ensAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"ContentChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"key\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"}]"
    28  
    29  //publicResolverbin是用于部署新合同的编译字节码。
    30  const PublicResolverBin = `0x6060604052341561000f57600080fd5b6040516020806111b28339810160405280805160008054600160a060020a03909216600160a060020a0319909216919091179055505061115e806100546000396000f3006060604052600436106100ab5763ffffffff60e060020a60003504166301ffc9a781146100b057806310f13a8c146100e45780632203ab561461017e57806329cd62ea146102155780632dff6941146102315780633b3b57de1461025957806359d1d43c1461028b578063623195b014610358578063691f3431146103b457806377372213146103ca578063c3d014d614610420578063c869023314610439578063d5fa2b0014610467575b600080fd5b34156100bb57600080fd5b6100d0600160e060020a031960043516610489565b604051901515815260200160405180910390f35b34156100ef57600080fd5b61017c600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506105f695505050505050565b005b341561018957600080fd5b610197600435602435610807565b60405182815260406020820181815290820183818151815260200191508051906020019080838360005b838110156101d95780820151838201526020016101c1565b50505050905090810190601f1680156102065780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b341561022057600080fd5b61017c600435602435604435610931565b341561023c57600080fd5b610247600435610a30565b60405190815260200160405180910390f35b341561026457600080fd5b61026f600435610a46565b604051600160a060020a03909116815260200160405180910390f35b341561029657600080fd5b6102e1600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610a6195505050505050565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561031d578082015183820152602001610305565b50505050905090810190601f16801561034a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036357600080fd5b61017c600480359060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610b8095505050505050565b34156103bf57600080fd5b6102e1600435610c7c565b34156103d557600080fd5b61017c600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610d4295505050505050565b341561042b57600080fd5b61017c600435602435610e8c565b341561044457600080fd5b61044f600435610f65565b60405191825260208201526040908101905180910390f35b341561047257600080fd5b61017c600435600160a060020a0360243516610f82565b6000600160e060020a031982167f3b3b57de0000000000000000000000000000000000000000000000000000000014806104ec5750600160e060020a031982167fd8389dc500000000000000000000000000000000000000000000000000000000145b806105205750600160e060020a031982167f691f343100000000000000000000000000000000000000000000000000000000145b806105545750600160e060020a031982167f2203ab5600000000000000000000000000000000000000000000000000000000145b806105885750600160e060020a031982167fc869023300000000000000000000000000000000000000000000000000000000145b806105bc5750600160e060020a031982167f59d1d43c00000000000000000000000000000000000000000000000000000000145b806105f05750600160e060020a031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600080548491600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561064f57600080fd5b6102c65a03f1151561066057600080fd5b50505060405180519050600160a060020a031614151561067f57600080fd5b6000848152600160205260409081902083916005909101908590518082805190602001908083835b602083106106c65780518252601f1990920191602091820191016106a7565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805161070a929160200190611085565b50826040518082805190602001908083835b6020831061073b5780518252601f19909201916020918201910161071c565b6001836020036101000a0380198251168184511617909252505050919091019250604091505051908190039020847fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a75508560405160208082528190810183818151815260200191508051906020019080838360005b838110156107c75780820151838201526020016107af565b50505050905090810190601f1680156107f45780820380516001836020036101000a031916815260200191505b509250505060405180910390a350505050565b6000610811611103565b60008481526001602081905260409091209092505b838311610924578284161580159061085f5750600083815260068201602052604081205460026000196101006001841615020190911604115b15610919578060060160008481526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561090d5780601f106108e25761010080835404028352916020019161090d565b820191906000526020600020905b8154815290600101906020018083116108f057829003601f168201915b50505050509150610929565b600290920291610826565b600092505b509250929050565b600080548491600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561098a57600080fd5b6102c65a03f1151561099b57600080fd5b50505060405180519050600160a060020a03161415156109ba57600080fd5b6040805190810160409081528482526020808301859052600087815260019091522060030181518155602082015160019091015550837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46848460405191825260208201526040908101905180910390a250505050565b6000908152600160208190526040909120015490565b600090815260016020526040902054600160a060020a031690565b610a69611103565b60008381526001602052604090819020600501908390518082805190602001908083835b60208310610aac5780518252601f199092019160209182019101610a8d565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b735780601f10610b4857610100808354040283529160200191610b73565b820191906000526020600020905b815481529060010190602001808311610b5657829003601f168201915b5050505050905092915050565b600080548491600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610bd957600080fd5b6102c65a03f11515610bea57600080fd5b50505060405180519050600160a060020a0316141515610c0957600080fd5b6000198301831615610c1a57600080fd5b60008481526001602090815260408083208684526006019091529020828051610c47929160200190611085565b5082847faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a350505050565b610c84611103565b6001600083600019166000191681526020019081526020016000206002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b50505050509050919050565b600080548391600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610d9b57600080fd5b6102c65a03f11515610dac57600080fd5b50505060405180519050600160a060020a0316141515610dcb57600080fd5b6000838152600160205260409020600201828051610ded929160200190611085565b50827fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78360405160208082528190810183818151815260200191508051906020019080838360005b83811015610e4d578082015183820152602001610e35565b50505050905090810190601f168015610e7a5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b600080548391600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610ee557600080fd5b6102c65a03f11515610ef657600080fd5b50505060405180519050600160a060020a0316141515610f1557600080fd5b6000838152600160208190526040918290200183905583907f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc9084905190815260200160405180910390a2505050565b600090815260016020526040902060038101546004909101549091565b600080548391600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610fdb57600080fd5b6102c65a03f11515610fec57600080fd5b50505060405180519050600160a060020a031614151561100b57600080fd5b60008381526001602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03851617905583907f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd290849051600160a060020a03909116815260200160405180910390a2505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106110c657805160ff19168380011785556110f3565b828001600101855582156110f3579182015b828111156110f35782518255916020019190600101906110d8565b506110ff929150611115565b5090565b60206040519081016040526000815290565b61112f91905b808211156110ff576000815560010161111b565b905600a165627a7a723058201ecacbc445b9fbcd91b0ab164389f69d7283b856883bc7437eeed1008345a4920029`
    31  
    32  //部署公共解析器部署一个新的EUTHUM合同,将公共解析器的实例绑定到它。
    33  func DeployPublicResolver(auth *bind.TransactOpts, backend bind.ContractBackend, ensAddr common.Address) (common.Address, *types.Transaction, *PublicResolver, error) {
    34  	parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
    35  	if err != nil {
    36  		return common.Address{}, nil, nil, err
    37  	}
    38  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(PublicResolverBin), backend, ensAddr)
    39  	if err != nil {
    40  		return common.Address{}, nil, nil, err
    41  	}
    42  	return address, tx, &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}, PublicResolverFilterer: PublicResolverFilterer{contract: contract}}, nil
    43  }
    44  
    45  //PublicResolver是围绕以太坊契约自动生成的Go绑定。
    46  type PublicResolver struct {
    47  PublicResolverCaller     //对合同具有只读约束力
    48  PublicResolverTransactor //只写对合同有约束力
    49  PublicResolverFilterer   //合同事件的日志筛选程序
    50  }
    51  
    52  //PublicResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
    53  type PublicResolverCaller struct {
    54  contract *bind.BoundContract //用于低级调用的通用协定包装器
    55  }
    56  
    57  //PublicResolverTransactior是围绕以太坊契约自动生成的只写Go绑定。
    58  type PublicResolverTransactor struct {
    59  contract *bind.BoundContract //用于低级调用的通用协定包装器
    60  }
    61  
    62  //PublicResolverFilter是围绕以太坊契约事件自动生成的日志筛选Go绑定。
    63  type PublicResolverFilterer struct {
    64  contract *bind.BoundContract //用于低级调用的通用协定包装器
    65  }
    66  
    67  //PublicResolverSession是围绕以太坊合同自动生成的Go绑定,
    68  //具有预设的调用和事务处理选项。
    69  type PublicResolverSession struct {
    70  Contract     *PublicResolver   //为其设置会话的通用约定绑定
    71  CallOpts     bind.CallOpts     //在整个会话中使用的调用选项
    72  TransactOpts bind.TransactOpts //要在此会话中使用的事务验证选项
    73  }
    74  
    75  //PublicResolverCallersession是围绕以太坊合约自动生成的只读Go绑定,
    76  //带预设通话选项。
    77  type PublicResolverCallerSession struct {
    78  Contract *PublicResolverCaller //用于设置会话的通用协定调用方绑定
    79  CallOpts bind.CallOpts         //在整个会话中使用的调用选项
    80  }
    81  
    82  //PublicResolverTransactiorSession是围绕以太坊合同自动生成的只写Go绑定,
    83  //具有预设的Transact选项。
    84  type PublicResolverTransactorSession struct {
    85  Contract     *PublicResolverTransactor //用于设置会话的通用合同事务处理程序绑定
    86  TransactOpts bind.TransactOpts         //要在此会话中使用的事务验证选项
    87  }
    88  
    89  //PublicResolverRaw是围绕以太坊合同自动生成的低级Go绑定。
    90  type PublicResolverRaw struct {
    91  Contract *PublicResolver //用于访问上的原始方法的通用合同绑定
    92  }
    93  
    94  //PublicResolverCallerraw是围绕以太坊契约自动生成的低级别只读Go绑定。
    95  type PublicResolverCallerRaw struct {
    96  Contract *PublicResolverCaller //用于访问上的原始方法的通用只读协定绑定
    97  }
    98  
    99  //
   100  type PublicResolverTransactorRaw struct {
   101  Contract *PublicResolverTransactor //用于访问上的原始方法的通用只写协定绑定
   102  }
   103  
   104  //NewPublicResolver创建绑定到特定部署协定的PublicResolver的新实例。
   105  func NewPublicResolver(address common.Address, backend bind.ContractBackend) (*PublicResolver, error) {
   106  	contract, err := bindPublicResolver(address, backend, backend, backend)
   107  	if err != nil {
   108  		return nil, err
   109  	}
   110  	return &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}, PublicResolverFilterer: PublicResolverFilterer{contract: contract}}, nil
   111  }
   112  
   113  //NewPublicResolver调用程序创建绑定到特定部署协定的PublicResolver的新只读实例。
   114  func NewPublicResolverCaller(address common.Address, caller bind.ContractCaller) (*PublicResolverCaller, error) {
   115  	contract, err := bindPublicResolver(address, caller, nil, nil)
   116  	if err != nil {
   117  		return nil, err
   118  	}
   119  	return &PublicResolverCaller{contract: contract}, nil
   120  }
   121  
   122  //NewPublicResolverTransactior创建绑定到特定部署协定的PublicResolver的新的只写实例。
   123  func NewPublicResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*PublicResolverTransactor, error) {
   124  	contract, err := bindPublicResolver(address, nil, transactor, nil)
   125  	if err != nil {
   126  		return nil, err
   127  	}
   128  	return &PublicResolverTransactor{contract: contract}, nil
   129  }
   130  
   131  //NewPublicResolverFilter创建PublicResolver的新日志筛选器实例,该实例绑定到特定的已部署协定。
   132  func NewPublicResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*PublicResolverFilterer, error) {
   133  	contract, err := bindPublicResolver(address, nil, nil, filterer)
   134  	if err != nil {
   135  		return nil, err
   136  	}
   137  	return &PublicResolverFilterer{contract: contract}, nil
   138  }
   139  
   140  //BindPublicResolver将通用包装绑定到已部署的协定。
   141  func bindPublicResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   142  	parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
   143  	if err != nil {
   144  		return nil, err
   145  	}
   146  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   147  }
   148  
   149  //调用调用(常量)contract方法,参数作为输入值,并且
   150  //将输出设置为结果。结果类型可能是用于
   151  //返回、匿名返回的接口切片和命名的结构
   152  //返回。
   153  func (_PublicResolver *PublicResolverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   154  	return _PublicResolver.Contract.PublicResolverCaller.contract.Call(opts, result, method, params...)
   155  }
   156  
   157  //转账启动普通交易以将资金转移到合同,调用
   158  //它的默认方法(如果有)。
   159  func (_PublicResolver *PublicResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   160  	return _PublicResolver.Contract.PublicResolverTransactor.contract.Transfer(opts)
   161  }
   162  
   163  //Transact使用参数作为输入值调用(付费)Contract方法。
   164  func (_PublicResolver *PublicResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   165  	return _PublicResolver.Contract.PublicResolverTransactor.contract.Transact(opts, method, params...)
   166  }
   167  
   168  //调用调用(常量)contract方法,参数作为输入值,并且
   169  //将输出设置为结果。结果类型可能是用于
   170  //返回、匿名返回的接口切片和命名的结构
   171  //
   172  func (_PublicResolver *PublicResolverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   173  	return _PublicResolver.Contract.contract.Call(opts, result, method, params...)
   174  }
   175  
   176  //转账启动普通交易以将资金转移到合同,调用
   177  //它的默认方法(如果有)。
   178  func (_PublicResolver *PublicResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   179  	return _PublicResolver.Contract.contract.Transfer(opts)
   180  }
   181  
   182  //Transact使用参数作为输入值调用(付费)Contract方法。
   183  func (_PublicResolver *PublicResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   184  	return _PublicResolver.Contract.contract.Transact(opts, method, params...)
   185  }
   186  
   187  //ABI是一个绑定契约方法0x2203ab56的免费数据检索调用。
   188  //
   189  //solidity:函数abi(node bytes32,contenttype uint256)常量返回(contenttype uint256,data bytes)
   190  func (_PublicResolver *PublicResolverCaller) ABI(opts *bind.CallOpts, node [32]byte, contentTypes *big.Int) (struct {
   191  	ContentType *big.Int
   192  	Data        []byte
   193  }, error) {
   194  	ret := new(struct {
   195  		ContentType *big.Int
   196  		Data        []byte
   197  	})
   198  	out := ret
   199  	err := _PublicResolver.contract.Call(opts, out, "ABI", node, contentTypes)
   200  	return *ret, err
   201  }
   202  
   203  //ABI是一个绑定契约方法0x2203ab56的免费数据检索调用。
   204  //
   205  //solidity:函数abi(node bytes32,contenttype uint256)常量返回(contenttype uint256,data bytes)
   206  func (_PublicResolver *PublicResolverSession) ABI(node [32]byte, contentTypes *big.Int) (struct {
   207  	ContentType *big.Int
   208  	Data        []byte
   209  }, error) {
   210  	return _PublicResolver.Contract.ABI(&_PublicResolver.CallOpts, node, contentTypes)
   211  }
   212  
   213  //ABI是一个绑定契约方法0x2203ab56的免费数据检索调用。
   214  //
   215  //solidity:函数abi(node bytes32,contenttype uint256)常量返回(contenttype uint256,data bytes)
   216  func (_PublicResolver *PublicResolverCallerSession) ABI(node [32]byte, contentTypes *big.Int) (struct {
   217  	ContentType *big.Int
   218  	Data        []byte
   219  }, error) {
   220  	return _PublicResolver.Contract.ABI(&_PublicResolver.CallOpts, node, contentTypes)
   221  }
   222  
   223  //addr是绑定contract方法0x3b3b57de的自由数据检索调用。
   224  //
   225  //solidity:函数addr(node bytes32)常量返回(ret address)
   226  func (_PublicResolver *PublicResolverCaller) Addr(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
   227  	var (
   228  		ret0 = new(common.Address)
   229  	)
   230  	out := ret0
   231  	err := _PublicResolver.contract.Call(opts, out, "addr", node)
   232  	return *ret0, err
   233  }
   234  
   235  //addr是绑定contract方法0x3b3b57de的自由数据检索调用。
   236  //
   237  //solidity:函数addr(node bytes32)常量返回(ret address)
   238  func (_PublicResolver *PublicResolverSession) Addr(node [32]byte) (common.Address, error) {
   239  	return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
   240  }
   241  
   242  //addr是绑定contract方法0x3b3b57de的自由数据检索调用。
   243  //
   244  //solidity:函数addr(node bytes32)常量返回(ret address)
   245  func (_PublicResolver *PublicResolverCallerSession) Addr(node [32]byte) (common.Address, error) {
   246  	return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
   247  }
   248  
   249  //content是一个绑定contract方法0x2dff6941的免费数据检索调用。
   250  //
   251  //solidity:函数内容(节点字节32)常量返回(ret字节32)
   252  func (_PublicResolver *PublicResolverCaller) Content(opts *bind.CallOpts, node [32]byte) ([32]byte, error) {
   253  	var (
   254  		ret0 = new([32]byte)
   255  	)
   256  	out := ret0
   257  	err := _PublicResolver.contract.Call(opts, out, "content", node)
   258  	return *ret0, err
   259  }
   260  
   261  //content是一个绑定contract方法0x2dff6941的免费数据检索调用。
   262  //
   263  //solidity:函数内容(节点字节32)常量返回(ret字节32)
   264  func (_PublicResolver *PublicResolverSession) Content(node [32]byte) ([32]byte, error) {
   265  	return _PublicResolver.Contract.Content(&_PublicResolver.CallOpts, node)
   266  }
   267  
   268  //content是一个绑定contract方法0x2dff6941的免费数据检索调用。
   269  //
   270  //solidity:函数内容(节点字节32)常量返回(ret字节32)
   271  func (_PublicResolver *PublicResolverCallerSession) Content(node [32]byte) ([32]byte, error) {
   272  	return _PublicResolver.Contract.Content(&_PublicResolver.CallOpts, node)
   273  }
   274  
   275  //name是绑定协定方法0x691F3431的免费数据检索调用。
   276  //
   277  //solidity:函数名(node bytes32)常量返回(ret string)
   278  func (_PublicResolver *PublicResolverCaller) Name(opts *bind.CallOpts, node [32]byte) (string, error) {
   279  	var (
   280  		ret0 = new(string)
   281  	)
   282  	out := ret0
   283  	err := _PublicResolver.contract.Call(opts, out, "name", node)
   284  	return *ret0, err
   285  }
   286  
   287  //name是绑定协定方法0x691F3431的免费数据检索调用。
   288  //
   289  //solidity:函数名(node bytes32)常量返回(ret string)
   290  func (_PublicResolver *PublicResolverSession) Name(node [32]byte) (string, error) {
   291  	return _PublicResolver.Contract.Name(&_PublicResolver.CallOpts, node)
   292  }
   293  
   294  //name是绑定协定方法0x691F3431的免费数据检索调用。
   295  //
   296  //solidity:函数名(node bytes32)常量返回(ret string)
   297  func (_PublicResolver *PublicResolverCallerSession) Name(node [32]byte) (string, error) {
   298  	return _PublicResolver.Contract.Name(&_PublicResolver.CallOpts, node)
   299  }
   300  
   301  //pubkey是绑定契约方法0xC8690233的免费数据检索调用。
   302  //
   303  //solidity:函数pubkey(node bytes 32)常量返回(x bytes 32,y bytes 32)
   304  func (_PublicResolver *PublicResolverCaller) Pubkey(opts *bind.CallOpts, node [32]byte) (struct {
   305  	X [32]byte
   306  	Y [32]byte
   307  }, error) {
   308  	ret := new(struct {
   309  		X [32]byte
   310  		Y [32]byte
   311  	})
   312  	out := ret
   313  	err := _PublicResolver.contract.Call(opts, out, "pubkey", node)
   314  	return *ret, err
   315  }
   316  
   317  //pubkey是绑定契约方法0xC8690233的免费数据检索调用。
   318  //
   319  //solidity:函数pubkey(node bytes 32)常量返回(x bytes 32,y bytes 32)
   320  func (_PublicResolver *PublicResolverSession) Pubkey(node [32]byte) (struct {
   321  	X [32]byte
   322  	Y [32]byte
   323  }, error) {
   324  	return _PublicResolver.Contract.Pubkey(&_PublicResolver.CallOpts, node)
   325  }
   326  
   327  //pubkey是绑定契约方法0xC8690233的免费数据检索调用。
   328  //
   329  //solidity:函数pubkey(node bytes 32)常量返回(x bytes 32,y bytes 32)
   330  func (_PublicResolver *PublicResolverCallerSession) Pubkey(node [32]byte) (struct {
   331  	X [32]byte
   332  	Y [32]byte
   333  }, error) {
   334  	return _PublicResolver.Contract.Pubkey(&_PublicResolver.CallOpts, node)
   335  }
   336  
   337  //SUPPORTSInterface是一个绑定契约方法0x01FC9A7的免费数据检索调用。
   338  //
   339  //solidity:函数支持接口(interfaceid bytes 4)常量返回(bool)
   340  func (_PublicResolver *PublicResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
   341  	var (
   342  		ret0 = new(bool)
   343  	)
   344  	out := ret0
   345  	err := _PublicResolver.contract.Call(opts, out, "supportsInterface", interfaceID)
   346  	return *ret0, err
   347  }
   348  
   349  //SUPPORTSInterface是一个绑定契约方法0x01FC9A7的免费数据检索调用。
   350  //
   351  //solidity:函数支持接口(interfaceid bytes 4)常量返回(bool)
   352  func (_PublicResolver *PublicResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   353  	return _PublicResolver.Contract.SupportsInterface(&_PublicResolver.CallOpts, interfaceID)
   354  }
   355  
   356  //SUPPORTSInterface是一个绑定契约方法0x01FC9A7的免费数据检索调用。
   357  //
   358  //solidity:函数支持接口(interfaceid bytes 4)常量返回(bool)
   359  func (_PublicResolver *PublicResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   360  	return _PublicResolver.Contract.SupportsInterface(&_PublicResolver.CallOpts, interfaceID)
   361  }
   362  
   363  //
   364  //
   365  //solidity:函数文本(节点字节32,键字符串)常量返回(ret字符串)
   366  func (_PublicResolver *PublicResolverCaller) Text(opts *bind.CallOpts, node [32]byte, key string) (string, error) {
   367  	var (
   368  		ret0 = new(string)
   369  	)
   370  	out := ret0
   371  	err := _PublicResolver.contract.Call(opts, out, "text", node, key)
   372  	return *ret0, err
   373  }
   374  
   375  //文本是绑定契约方法0x59D1D43C的免费数据检索调用。
   376  //
   377  //solidity:函数文本(节点字节32,键字符串)常量返回(ret字符串)
   378  func (_PublicResolver *PublicResolverSession) Text(node [32]byte, key string) (string, error) {
   379  	return _PublicResolver.Contract.Text(&_PublicResolver.CallOpts, node, key)
   380  }
   381  
   382  //文本是绑定契约方法0x59D1D43C的免费数据检索调用。
   383  //
   384  //solidity:函数文本(节点字节32,键字符串)常量返回(ret字符串)
   385  func (_PublicResolver *PublicResolverCallerSession) Text(node [32]byte, key string) (string, error) {
   386  	return _PublicResolver.Contract.Text(&_PublicResolver.CallOpts, node, key)
   387  }
   388  
   389  //setabi是一个受合同方法0x623195b0约束的付费变元事务。
   390  //
   391  //solidity:函数setabi(node bytes 32,contenttype uint256,data bytes)返回()
   392  func (_PublicResolver *PublicResolverTransactor) SetABI(opts *bind.TransactOpts, node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   393  	return _PublicResolver.contract.Transact(opts, "setABI", node, contentType, data)
   394  }
   395  
   396  //setabi是一个受合同方法0x623195b0约束的付费变元事务。
   397  //
   398  //solidity:函数setabi(node bytes 32,contenttype uint256,data bytes)返回()
   399  func (_PublicResolver *PublicResolverSession) SetABI(node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   400  	return _PublicResolver.Contract.SetABI(&_PublicResolver.TransactOpts, node, contentType, data)
   401  }
   402  
   403  //setabi是一个受合同方法0x623195b0约束的付费变元事务。
   404  //
   405  //solidity:函数setabi(node bytes 32,contenttype uint256,data bytes)返回()
   406  func (_PublicResolver *PublicResolverTransactorSession) SetABI(node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   407  	return _PublicResolver.Contract.SetABI(&_PublicResolver.TransactOpts, node, contentType, data)
   408  }
   409  
   410  //setaddr是一个付费的mutator事务,绑定合同方法0xD5FA2B00。
   411  //
   412  //solidity:函数setaddr(node bytes32,addr address)返回()
   413  func (_PublicResolver *PublicResolverTransactor) SetAddr(opts *bind.TransactOpts, node [32]byte, addr common.Address) (*types.Transaction, error) {
   414  	return _PublicResolver.contract.Transact(opts, "setAddr", node, addr)
   415  }
   416  
   417  //setaddr是一个付费的mutator事务,绑定合同方法0xD5FA2B00。
   418  //
   419  //solidity:函数setaddr(node bytes32,addr address)返回()
   420  func (_PublicResolver *PublicResolverSession) SetAddr(node [32]byte, addr common.Address) (*types.Transaction, error) {
   421  	return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, addr)
   422  }
   423  
   424  //setaddr是一个付费的mutator事务,绑定合同方法0xD5FA2B00。
   425  //
   426  //solidity:函数setaddr(node bytes32,addr address)返回()
   427  func (_PublicResolver *PublicResolverTransactorSession) SetAddr(node [32]byte, addr common.Address) (*types.Transaction, error) {
   428  	return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, addr)
   429  }
   430  
   431  //setContent是一个付费的mutator事务,绑定合同方法0xc3d014d6。
   432  //
   433  //
   434  func (_PublicResolver *PublicResolverTransactor) SetContent(opts *bind.TransactOpts, node [32]byte, hash [32]byte) (*types.Transaction, error) {
   435  	return _PublicResolver.contract.Transact(opts, "setContent", node, hash)
   436  }
   437  
   438  //setContent是一个付费的mutator事务,绑定合同方法0xc3d014d6。
   439  //
   440  //solidity:函数setcontent(node bytes 32,hash bytes 32)返回()
   441  func (_PublicResolver *PublicResolverSession) SetContent(node [32]byte, hash [32]byte) (*types.Transaction, error) {
   442  	return _PublicResolver.Contract.SetContent(&_PublicResolver.TransactOpts, node, hash)
   443  }
   444  
   445  //setContent是一个付费的mutator事务,绑定合同方法0xc3d014d6。
   446  //
   447  //solidity:函数setcontent(node bytes 32,hash bytes 32)返回()
   448  func (_PublicResolver *PublicResolverTransactorSession) SetContent(node [32]byte, hash [32]byte) (*types.Transaction, error) {
   449  	return _PublicResolver.Contract.SetContent(&_PublicResolver.TransactOpts, node, hash)
   450  }
   451  
   452  //setname是一个付费的mutator事务,绑定合同方法0x77372213。
   453  //
   454  //solidity:函数setname(node bytes32,name string)返回()
   455  func (_PublicResolver *PublicResolverTransactor) SetName(opts *bind.TransactOpts, node [32]byte, name string) (*types.Transaction, error) {
   456  	return _PublicResolver.contract.Transact(opts, "setName", node, name)
   457  }
   458  
   459  //setname是一个付费的mutator事务,绑定合同方法0x77372213。
   460  //
   461  //solidity:函数setname(node bytes32,name string)返回()
   462  func (_PublicResolver *PublicResolverSession) SetName(node [32]byte, name string) (*types.Transaction, error) {
   463  	return _PublicResolver.Contract.SetName(&_PublicResolver.TransactOpts, node, name)
   464  }
   465  
   466  //setname是一个付费的mutator事务,绑定合同方法0x77372213。
   467  //
   468  //solidity:函数setname(node bytes32,name string)返回()
   469  func (_PublicResolver *PublicResolverTransactorSession) SetName(node [32]byte, name string) (*types.Transaction, error) {
   470  	return _PublicResolver.Contract.SetName(&_PublicResolver.TransactOpts, node, name)
   471  }
   472  
   473  //setpubkey是一个付费的mutator事务,绑定合同方法0x29CD62EA。
   474  //
   475  //solidity:函数setpubkey(node bytes 32,x bytes 32,y bytes 32)返回()
   476  func (_PublicResolver *PublicResolverTransactor) SetPubkey(opts *bind.TransactOpts, node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
   477  	return _PublicResolver.contract.Transact(opts, "setPubkey", node, x, y)
   478  }
   479  
   480  //setpubkey是一个付费的mutator事务,绑定合同方法0x29CD62EA。
   481  //
   482  //solidity:函数setpubkey(node bytes 32,x bytes 32,y bytes 32)返回()
   483  func (_PublicResolver *PublicResolverSession) SetPubkey(node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
   484  	return _PublicResolver.Contract.SetPubkey(&_PublicResolver.TransactOpts, node, x, y)
   485  }
   486  
   487  //setpubkey是一个付费的mutator事务,绑定合同方法0x29CD62EA。
   488  //
   489  //solidity:函数setpubkey(node bytes 32,x bytes 32,y bytes 32)返回()
   490  func (_PublicResolver *PublicResolverTransactorSession) SetPubkey(node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
   491  	return _PublicResolver.Contract.SetPubkey(&_PublicResolver.TransactOpts, node, x, y)
   492  }
   493  
   494  //settext是一个付费的mutator事务,绑定合同方法0x10F13A8C。
   495  //
   496  //solidity:函数settext(node bytes 32,key string,value string)返回()
   497  func (_PublicResolver *PublicResolverTransactor) SetText(opts *bind.TransactOpts, node [32]byte, key string, value string) (*types.Transaction, error) {
   498  	return _PublicResolver.contract.Transact(opts, "setText", node, key, value)
   499  }
   500  
   501  //settext是一个付费的mutator事务,绑定合同方法0x10F13A8C。
   502  //
   503  //solidity:函数settext(node bytes 32,key string,value string)返回()
   504  func (_PublicResolver *PublicResolverSession) SetText(node [32]byte, key string, value string) (*types.Transaction, error) {
   505  	return _PublicResolver.Contract.SetText(&_PublicResolver.TransactOpts, node, key, value)
   506  }
   507  
   508  //settext是一个付费的mutator事务,绑定合同方法0x10F13A8C。
   509  //
   510  //solidity:函数settext(node bytes 32,key string,value string)返回()
   511  func (_PublicResolver *PublicResolverTransactorSession) SetText(node [32]byte, key string, value string) (*types.Transaction, error) {
   512  	return _PublicResolver.Contract.SetText(&_PublicResolver.TransactOpts, node, key, value)
   513  }
   514  
   515  //publicResolvabicChangedEditor从filterabichanged返回,用于对publicResolver协定引发的abichanged事件的原始日志和解包数据进行迭代。
   516  type PublicResolverABIChangedIterator struct {
   517  Event *PublicResolverABIChanged //包含合同细节和原始日志的事件
   518  
   519  contract *bind.BoundContract //用于解包事件数据的通用合同
   520  event    string              //用于解包事件数据的事件名称
   521  
   522  logs chan types.Log        //日志通道接收找到的合同事件
   523  sub  ethereum.Subscription //错误、完成和终止订阅
   524  done bool                  //订阅是否完成传递日志
   525  fail error                 //停止迭代时出错
   526  }
   527  
   528  //next将迭代器前进到后续事件,返回是否存在
   529  //是否找到更多事件。在检索或分析错误的情况下,false是
   530  //返回错误(),可以查询错误()的确切错误。
   531  func (it *PublicResolverABIChangedIterator) Next() bool {
   532  //如果迭代器失败,请停止迭代
   533  	if it.fail != nil {
   534  		return false
   535  	}
   536  //如果迭代器已完成,则直接传递可用的
   537  	if it.done {
   538  		select {
   539  		case log := <-it.logs:
   540  			it.Event = new(PublicResolverABIChanged)
   541  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   542  				it.fail = err
   543  				return false
   544  			}
   545  			it.Event.Raw = log
   546  			return true
   547  
   548  		default:
   549  			return false
   550  		}
   551  	}
   552  //迭代器仍在进行中,请等待数据或错误事件
   553  	select {
   554  	case log := <-it.logs:
   555  		it.Event = new(PublicResolverABIChanged)
   556  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   557  			it.fail = err
   558  			return false
   559  		}
   560  		it.Event.Raw = log
   561  		return true
   562  
   563  	case err := <-it.sub.Err():
   564  		it.done = true
   565  		it.fail = err
   566  		return it.Next()
   567  	}
   568  }
   569  
   570  //重试时出错。筛选过程中出现任何检索或分析错误。
   571  func (it *PublicResolverABIChangedIterator) Error() error {
   572  	return it.fail
   573  }
   574  
   575  //关闭终止迭代过程,释放任何挂起的基础
   576  //资源。
   577  func (it *PublicResolverABIChangedIterator) Close() error {
   578  	it.sub.Unsubscribe()
   579  	return nil
   580  }
   581  
   582  //PublicResolverAbiChanged表示PublicResolver协定引发的AbiChanged事件。
   583  type PublicResolverABIChanged struct {
   584  	Node        [32]byte
   585  	ContentType *big.Int
   586  Raw         types.Log //区块链特定的上下文信息
   587  }
   588  
   589  //filterabichanged是绑定合同事件0xaa121bbeef5f32f5961a2896e769023910fc9479059ee3495d4c1a696efe3的自由日志检索操作。
   590  //
   591  //solidity:事件abichanged(节点索引字节32,内容类型索引uint256)
   592  func (_PublicResolver *PublicResolverFilterer) FilterABIChanged(opts *bind.FilterOpts, node [][32]byte, contentType []*big.Int) (*PublicResolverABIChangedIterator, error) {
   593  
   594  	var nodeRule []interface{}
   595  	for _, nodeItem := range node {
   596  		nodeRule = append(nodeRule, nodeItem)
   597  	}
   598  	var contentTypeRule []interface{}
   599  	for _, contentTypeItem := range contentType {
   600  		contentTypeRule = append(contentTypeRule, contentTypeItem)
   601  	}
   602  
   603  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
   604  	if err != nil {
   605  		return nil, err
   606  	}
   607  	return &PublicResolverABIChangedIterator{contract: _PublicResolver.contract, event: "ABIChanged", logs: logs, sub: sub}, nil
   608  }
   609  
   610  //watchabiChanged是一个绑定合同事件0xaa121bbeef5f32f5961a2896e769023910fc9479059ee3495d4c1a696efe3的自由日志订阅操作。
   611  //
   612  //solidity:事件abichanged(节点索引字节32,内容类型索引uint256)
   613  func (_PublicResolver *PublicResolverFilterer) WatchABIChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverABIChanged, node [][32]byte, contentType []*big.Int) (event.Subscription, error) {
   614  
   615  	var nodeRule []interface{}
   616  	for _, nodeItem := range node {
   617  		nodeRule = append(nodeRule, nodeItem)
   618  	}
   619  	var contentTypeRule []interface{}
   620  	for _, contentTypeItem := range contentType {
   621  		contentTypeRule = append(contentTypeRule, contentTypeItem)
   622  	}
   623  
   624  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
   625  	if err != nil {
   626  		return nil, err
   627  	}
   628  	return event.NewSubscription(func(quit <-chan struct{}) error {
   629  		defer sub.Unsubscribe()
   630  		for {
   631  			select {
   632  			case log := <-logs:
   633  //新日志到达,分析事件并转发给用户
   634  				event := new(PublicResolverABIChanged)
   635  				if err := _PublicResolver.contract.UnpackLog(event, "ABIChanged", log); err != nil {
   636  					return err
   637  				}
   638  				event.Raw = log
   639  
   640  				select {
   641  				case sink <- event:
   642  				case err := <-sub.Err():
   643  					return err
   644  				case <-quit:
   645  					return nil
   646  				}
   647  			case err := <-sub.Err():
   648  				return err
   649  			case <-quit:
   650  				return nil
   651  			}
   652  		}
   653  	}), nil
   654  }
   655  
   656  //publicResolver addrChangediterator从filterAddrChanged返回,用于迭代publicResolver协定引发的addrChanged事件的原始日志和解包数据。
   657  type PublicResolverAddrChangedIterator struct {
   658  Event *PublicResolverAddrChanged //包含合同细节和原始日志的事件
   659  
   660  contract *bind.BoundContract //用于解包事件数据的通用合同
   661  event    string              //用于解包事件数据的事件名称
   662  
   663  logs chan types.Log        //日志通道接收找到的合同事件
   664  sub  ethereum.Subscription //错误、完成和终止订阅
   665  done bool                  //订阅是否完成传递日志
   666  fail error                 //停止迭代时出错
   667  }
   668  
   669  //next将迭代器前进到后续事件,返回是否存在
   670  //是否找到更多事件。在检索或分析错误的情况下,false是
   671  //返回错误(),可以查询错误()的确切错误。
   672  func (it *PublicResolverAddrChangedIterator) Next() bool {
   673  //如果迭代器失败,请停止迭代
   674  	if it.fail != nil {
   675  		return false
   676  	}
   677  //如果迭代器已完成,则直接传递可用的
   678  	if it.done {
   679  		select {
   680  		case log := <-it.logs:
   681  			it.Event = new(PublicResolverAddrChanged)
   682  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   683  				it.fail = err
   684  				return false
   685  			}
   686  			it.Event.Raw = log
   687  			return true
   688  
   689  		default:
   690  			return false
   691  		}
   692  	}
   693  //迭代器仍在进行中,请等待数据或错误事件
   694  	select {
   695  	case log := <-it.logs:
   696  		it.Event = new(PublicResolverAddrChanged)
   697  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   698  			it.fail = err
   699  			return false
   700  		}
   701  		it.Event.Raw = log
   702  		return true
   703  
   704  	case err := <-it.sub.Err():
   705  		it.done = true
   706  		it.fail = err
   707  		return it.Next()
   708  	}
   709  }
   710  
   711  //重试时出错。筛选过程中出现任何检索或分析错误。
   712  func (it *PublicResolverAddrChangedIterator) Error() error {
   713  	return it.fail
   714  }
   715  
   716  //关闭终止迭代过程,释放任何挂起的基础
   717  //资源。
   718  func (it *PublicResolverAddrChangedIterator) Close() error {
   719  	it.sub.Unsubscribe()
   720  	return nil
   721  }
   722  
   723  //PublicResolverAddrChanged表示PublicResolver协定引发的AddrChanged事件。
   724  type PublicResolverAddrChanged struct {
   725  	Node [32]byte
   726  	A    common.Address
   727  Raw  types.Log //区块链特定的上下文信息
   728  }
   729  
   730  //filterAddrChanged是一个绑定合同事件0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2的免费日志检索操作。
   731  //
   732  //
   733  func (_PublicResolver *PublicResolverFilterer) FilterAddrChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverAddrChangedIterator, error) {
   734  
   735  	var nodeRule []interface{}
   736  	for _, nodeItem := range node {
   737  		nodeRule = append(nodeRule, nodeItem)
   738  	}
   739  
   740  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "AddrChanged", nodeRule)
   741  	if err != nil {
   742  		return nil, err
   743  	}
   744  	return &PublicResolverAddrChangedIterator{contract: _PublicResolver.contract, event: "AddrChanged", logs: logs, sub: sub}, nil
   745  }
   746  
   747  //watchAddrChanged是绑定合同事件0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2的免费日志订阅操作。
   748  //
   749  //solidity:事件addrChanged(节点索引字节32,地址)
   750  func (_PublicResolver *PublicResolverFilterer) WatchAddrChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverAddrChanged, node [][32]byte) (event.Subscription, error) {
   751  
   752  	var nodeRule []interface{}
   753  	for _, nodeItem := range node {
   754  		nodeRule = append(nodeRule, nodeItem)
   755  	}
   756  
   757  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "AddrChanged", nodeRule)
   758  	if err != nil {
   759  		return nil, err
   760  	}
   761  	return event.NewSubscription(func(quit <-chan struct{}) error {
   762  		defer sub.Unsubscribe()
   763  		for {
   764  			select {
   765  			case log := <-logs:
   766  //新日志到达,分析事件并转发给用户
   767  				event := new(PublicResolverAddrChanged)
   768  				if err := _PublicResolver.contract.UnpackLog(event, "AddrChanged", log); err != nil {
   769  					return err
   770  				}
   771  				event.Raw = log
   772  
   773  				select {
   774  				case sink <- event:
   775  				case err := <-sub.Err():
   776  					return err
   777  				case <-quit:
   778  					return nil
   779  				}
   780  			case err := <-sub.Err():
   781  				return err
   782  			case <-quit:
   783  				return nil
   784  			}
   785  		}
   786  	}), nil
   787  }
   788  
   789  //
   790  type PublicResolverContentChangedIterator struct {
   791  Event *PublicResolverContentChanged //包含合同细节和原始日志的事件
   792  
   793  contract *bind.BoundContract //用于解包事件数据的通用合同
   794  event    string              //用于解包事件数据的事件名称
   795  
   796  logs chan types.Log        //日志通道接收找到的合同事件
   797  sub  ethereum.Subscription //错误、完成和终止订阅
   798  done bool                  //订阅是否完成传递日志
   799  fail error                 //停止迭代时出错
   800  }
   801  
   802  //next将迭代器前进到后续事件,返回是否存在
   803  //是否找到更多事件。在检索或分析错误的情况下,false是
   804  //返回错误(),可以查询错误()的确切错误。
   805  func (it *PublicResolverContentChangedIterator) Next() bool {
   806  //如果迭代器失败,请停止迭代
   807  	if it.fail != nil {
   808  		return false
   809  	}
   810  //如果迭代器已完成,则直接传递可用的
   811  	if it.done {
   812  		select {
   813  		case log := <-it.logs:
   814  			it.Event = new(PublicResolverContentChanged)
   815  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   816  				it.fail = err
   817  				return false
   818  			}
   819  			it.Event.Raw = log
   820  			return true
   821  
   822  		default:
   823  			return false
   824  		}
   825  	}
   826  //迭代器仍在进行中,请等待数据或错误事件
   827  	select {
   828  	case log := <-it.logs:
   829  		it.Event = new(PublicResolverContentChanged)
   830  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   831  			it.fail = err
   832  			return false
   833  		}
   834  		it.Event.Raw = log
   835  		return true
   836  
   837  	case err := <-it.sub.Err():
   838  		it.done = true
   839  		it.fail = err
   840  		return it.Next()
   841  	}
   842  }
   843  
   844  //重试时出错。筛选过程中出现任何检索或分析错误。
   845  func (it *PublicResolverContentChangedIterator) Error() error {
   846  	return it.fail
   847  }
   848  
   849  //关闭终止迭代过程,释放任何挂起的基础
   850  //资源。
   851  func (it *PublicResolverContentChangedIterator) Close() error {
   852  	it.sub.Unsubscribe()
   853  	return nil
   854  }
   855  
   856  //PublicResolverContentChanged表示PublicResolver协定引发的ContentChanged事件。
   857  type PublicResolverContentChanged struct {
   858  	Node [32]byte
   859  	Hash [32]byte
   860  Raw  types.Log //区块链特定的上下文信息
   861  }
   862  
   863  //filterContentChanged是绑定合同事件0x0424B6FE0D9c3bBece07799dc241bb0c22e900be8b6c168b4ee08bd9bf83bc的自由日志检索操作。
   864  //
   865  //solidity:事件内容已更改(节点索引字节32、哈希字节32)
   866  func (_PublicResolver *PublicResolverFilterer) FilterContentChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverContentChangedIterator, error) {
   867  
   868  	var nodeRule []interface{}
   869  	for _, nodeItem := range node {
   870  		nodeRule = append(nodeRule, nodeItem)
   871  	}
   872  
   873  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "ContentChanged", nodeRule)
   874  	if err != nil {
   875  		return nil, err
   876  	}
   877  	return &PublicResolverContentChangedIterator{contract: _PublicResolver.contract, event: "ContentChanged", logs: logs, sub: sub}, nil
   878  }
   879  
   880  //watchContentChanged是绑定合同事件0x0424B6FE0D9c3bBece07799dc241bb0c22e900be8b6c168b4ee08bd9bf83bc的自由日志订阅操作。
   881  //
   882  //solidity:事件内容已更改(节点索引字节32、哈希字节32)
   883  func (_PublicResolver *PublicResolverFilterer) WatchContentChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverContentChanged, node [][32]byte) (event.Subscription, error) {
   884  
   885  	var nodeRule []interface{}
   886  	for _, nodeItem := range node {
   887  		nodeRule = append(nodeRule, nodeItem)
   888  	}
   889  
   890  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ContentChanged", nodeRule)
   891  	if err != nil {
   892  		return nil, err
   893  	}
   894  	return event.NewSubscription(func(quit <-chan struct{}) error {
   895  		defer sub.Unsubscribe()
   896  		for {
   897  			select {
   898  			case log := <-logs:
   899  //新日志到达,分析事件并转发给用户
   900  				event := new(PublicResolverContentChanged)
   901  				if err := _PublicResolver.contract.UnpackLog(event, "ContentChanged", log); err != nil {
   902  					return err
   903  				}
   904  				event.Raw = log
   905  
   906  				select {
   907  				case sink <- event:
   908  				case err := <-sub.Err():
   909  					return err
   910  				case <-quit:
   911  					return nil
   912  				}
   913  			case err := <-sub.Err():
   914  				return err
   915  			case <-quit:
   916  				return nil
   917  			}
   918  		}
   919  	}), nil
   920  }
   921  
   922  //publicResolverNameChangedEditor从filterNameChanged返回,用于迭代publicResolver协定引发的名称更改事件的原始日志和解包数据。
   923  type PublicResolverNameChangedIterator struct {
   924  Event *PublicResolverNameChanged //包含合同细节和原始日志的事件
   925  
   926  contract *bind.BoundContract //用于解包事件数据的通用合同
   927  event    string              //用于解包事件数据的事件名称
   928  
   929  logs chan types.Log        //日志通道接收找到的合同事件
   930  sub  ethereum.Subscription //错误、完成和终止订阅
   931  done bool                  //订阅是否完成传递日志
   932  fail error                 //停止迭代时出错
   933  }
   934  
   935  //next将迭代器前进到后续事件,返回是否存在
   936  //是否找到更多事件。在检索或分析错误的情况下,false是
   937  //返回错误(),可以查询错误()的确切错误。
   938  func (it *PublicResolverNameChangedIterator) Next() bool {
   939  //如果迭代器失败,请停止迭代
   940  	if it.fail != nil {
   941  		return false
   942  	}
   943  //如果迭代器已完成,则直接传递可用的
   944  	if it.done {
   945  		select {
   946  		case log := <-it.logs:
   947  			it.Event = new(PublicResolverNameChanged)
   948  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   949  				it.fail = err
   950  				return false
   951  			}
   952  			it.Event.Raw = log
   953  			return true
   954  
   955  		default:
   956  			return false
   957  		}
   958  	}
   959  //迭代器仍在进行中,请等待数据或错误事件
   960  	select {
   961  	case log := <-it.logs:
   962  		it.Event = new(PublicResolverNameChanged)
   963  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   964  			it.fail = err
   965  			return false
   966  		}
   967  		it.Event.Raw = log
   968  		return true
   969  
   970  	case err := <-it.sub.Err():
   971  		it.done = true
   972  		it.fail = err
   973  		return it.Next()
   974  	}
   975  }
   976  
   977  //重试时出错。筛选过程中出现任何检索或分析错误。
   978  func (it *PublicResolverNameChangedIterator) Error() error {
   979  	return it.fail
   980  }
   981  
   982  //关闭终止迭代过程,释放任何挂起的基础
   983  //资源。
   984  func (it *PublicResolverNameChangedIterator) Close() error {
   985  	it.sub.Unsubscribe()
   986  	return nil
   987  }
   988  
   989  //PublicResolverNameChanged表示PublicResolver协定引发的NameChanged事件。
   990  type PublicResolverNameChanged struct {
   991  	Node [32]byte
   992  	Name string
   993  Raw  types.Log //区块链特定的上下文信息
   994  }
   995  
   996  //filternamechanged是绑定合同事件0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e724c4c348f7的自由日志检索操作。
   997  //
   998  //solidity:事件名称已更改(节点索引字节32,名称字符串)
   999  func (_PublicResolver *PublicResolverFilterer) FilterNameChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverNameChangedIterator, error) {
  1000  
  1001  	var nodeRule []interface{}
  1002  	for _, nodeItem := range node {
  1003  		nodeRule = append(nodeRule, nodeItem)
  1004  	}
  1005  
  1006  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "NameChanged", nodeRule)
  1007  	if err != nil {
  1008  		return nil, err
  1009  	}
  1010  	return &PublicResolverNameChangedIterator{contract: _PublicResolver.contract, event: "NameChanged", logs: logs, sub: sub}, nil
  1011  }
  1012  
  1013  //watchnamechanged是绑定合同事件0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e724c4c348f7的免费日志订阅操作。
  1014  //
  1015  //solidity:事件名称已更改(节点索引字节32,名称字符串)
  1016  func (_PublicResolver *PublicResolverFilterer) WatchNameChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverNameChanged, node [][32]byte) (event.Subscription, error) {
  1017  
  1018  	var nodeRule []interface{}
  1019  	for _, nodeItem := range node {
  1020  		nodeRule = append(nodeRule, nodeItem)
  1021  	}
  1022  
  1023  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "NameChanged", nodeRule)
  1024  	if err != nil {
  1025  		return nil, err
  1026  	}
  1027  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1028  		defer sub.Unsubscribe()
  1029  		for {
  1030  			select {
  1031  			case log := <-logs:
  1032  //新日志到达,分析事件并转发给用户
  1033  				event := new(PublicResolverNameChanged)
  1034  				if err := _PublicResolver.contract.UnpackLog(event, "NameChanged", log); err != nil {
  1035  					return err
  1036  				}
  1037  				event.Raw = log
  1038  
  1039  				select {
  1040  				case sink <- event:
  1041  				case err := <-sub.Err():
  1042  					return err
  1043  				case <-quit:
  1044  					return nil
  1045  				}
  1046  			case err := <-sub.Err():
  1047  				return err
  1048  			case <-quit:
  1049  				return nil
  1050  			}
  1051  		}
  1052  	}), nil
  1053  }
  1054  
  1055  //PublicResolverPubKeyChangedEditor从filterPubKeyChanged返回,用于迭代PublicResolver协定引发的PubKeyChanged事件的原始日志和解包数据。
  1056  type PublicResolverPubkeyChangedIterator struct {
  1057  Event *PublicResolverPubkeyChanged //包含合同细节和原始日志的事件
  1058  
  1059  contract *bind.BoundContract //用于解包事件数据的通用合同
  1060  event    string              //用于解包事件数据的事件名称
  1061  
  1062  logs chan types.Log        //日志通道接收找到的合同事件
  1063  sub  ethereum.Subscription //错误、完成和终止订阅
  1064  done bool                  //订阅是否完成传递日志
  1065  fail error                 //停止迭代时出错
  1066  }
  1067  
  1068  //next将迭代器前进到后续事件,返回是否存在
  1069  //是否找到更多事件。在检索或分析错误的情况下,false是
  1070  //返回错误(),可以查询错误()的确切错误。
  1071  func (it *PublicResolverPubkeyChangedIterator) Next() bool {
  1072  //如果迭代器失败,请停止迭代
  1073  	if it.fail != nil {
  1074  		return false
  1075  	}
  1076  //如果迭代器已完成,则直接传递可用的
  1077  	if it.done {
  1078  		select {
  1079  		case log := <-it.logs:
  1080  			it.Event = new(PublicResolverPubkeyChanged)
  1081  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1082  				it.fail = err
  1083  				return false
  1084  			}
  1085  			it.Event.Raw = log
  1086  			return true
  1087  
  1088  		default:
  1089  			return false
  1090  		}
  1091  	}
  1092  //迭代器仍在进行中,请等待数据或错误事件
  1093  	select {
  1094  	case log := <-it.logs:
  1095  		it.Event = new(PublicResolverPubkeyChanged)
  1096  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1097  			it.fail = err
  1098  			return false
  1099  		}
  1100  		it.Event.Raw = log
  1101  		return true
  1102  
  1103  	case err := <-it.sub.Err():
  1104  		it.done = true
  1105  		it.fail = err
  1106  		return it.Next()
  1107  	}
  1108  }
  1109  
  1110  //重试时出错。筛选过程中出现任何检索或分析错误。
  1111  func (it *PublicResolverPubkeyChangedIterator) Error() error {
  1112  	return it.fail
  1113  }
  1114  
  1115  //关闭终止迭代过程,释放任何挂起的基础
  1116  //资源。
  1117  func (it *PublicResolverPubkeyChangedIterator) Close() error {
  1118  	it.sub.Unsubscribe()
  1119  	return nil
  1120  }
  1121  
  1122  //PublicResolverPubKeyChanged表示PublicResolver协定引发的PubKeyChanged事件。
  1123  type PublicResolverPubkeyChanged struct {
  1124  	Node [32]byte
  1125  	X    [32]byte
  1126  	Y    [32]byte
  1127  Raw  types.Log //区块链特定的上下文信息
  1128  }
  1129  
  1130  //filterPubKeyChanged是一个自由的日志检索操作,绑定合同事件0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46。
  1131  //
  1132  //Solidity:事件PubKeyChanged(节点索引字节32、X字节32、Y字节32)
  1133  func (_PublicResolver *PublicResolverFilterer) FilterPubkeyChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverPubkeyChangedIterator, error) {
  1134  
  1135  	var nodeRule []interface{}
  1136  	for _, nodeItem := range node {
  1137  		nodeRule = append(nodeRule, nodeItem)
  1138  	}
  1139  
  1140  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "PubkeyChanged", nodeRule)
  1141  	if err != nil {
  1142  		return nil, err
  1143  	}
  1144  	return &PublicResolverPubkeyChangedIterator{contract: _PublicResolver.contract, event: "PubkeyChanged", logs: logs, sub: sub}, nil
  1145  }
  1146  
  1147  //
  1148  //
  1149  //Solidity:事件PubKeyChanged(节点索引字节32、X字节32、Y字节32)
  1150  func (_PublicResolver *PublicResolverFilterer) WatchPubkeyChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverPubkeyChanged, node [][32]byte) (event.Subscription, error) {
  1151  
  1152  	var nodeRule []interface{}
  1153  	for _, nodeItem := range node {
  1154  		nodeRule = append(nodeRule, nodeItem)
  1155  	}
  1156  
  1157  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "PubkeyChanged", nodeRule)
  1158  	if err != nil {
  1159  		return nil, err
  1160  	}
  1161  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1162  		defer sub.Unsubscribe()
  1163  		for {
  1164  			select {
  1165  			case log := <-logs:
  1166  //新日志到达,分析事件并转发给用户
  1167  				event := new(PublicResolverPubkeyChanged)
  1168  				if err := _PublicResolver.contract.UnpackLog(event, "PubkeyChanged", log); err != nil {
  1169  					return err
  1170  				}
  1171  				event.Raw = log
  1172  
  1173  				select {
  1174  				case sink <- event:
  1175  				case err := <-sub.Err():
  1176  					return err
  1177  				case <-quit:
  1178  					return nil
  1179  				}
  1180  			case err := <-sub.Err():
  1181  				return err
  1182  			case <-quit:
  1183  				return nil
  1184  			}
  1185  		}
  1186  	}), nil
  1187  }
  1188  
  1189  //publicResolverTextChangedEditor从filterTextChanged返回,用于为publicResolver协定引发的textChanged事件迭代原始日志和解包数据。
  1190  type PublicResolverTextChangedIterator struct {
  1191  Event *PublicResolverTextChanged //包含合同细节和原始日志的事件
  1192  
  1193  contract *bind.BoundContract //用于解包事件数据的通用合同
  1194  event    string              //用于解包事件数据的事件名称
  1195  
  1196  logs chan types.Log        //日志通道接收找到的合同事件
  1197  sub  ethereum.Subscription //错误、完成和终止订阅
  1198  done bool                  //订阅是否完成传递日志
  1199  fail error                 //停止迭代时出错
  1200  }
  1201  
  1202  //next将迭代器前进到后续事件,返回是否存在
  1203  //是否找到更多事件。在检索或分析错误的情况下,false是
  1204  //返回错误(),可以查询错误()的确切错误。
  1205  func (it *PublicResolverTextChangedIterator) Next() bool {
  1206  //如果迭代器失败,请停止迭代
  1207  	if it.fail != nil {
  1208  		return false
  1209  	}
  1210  //如果迭代器已完成,则直接传递可用的
  1211  	if it.done {
  1212  		select {
  1213  		case log := <-it.logs:
  1214  			it.Event = new(PublicResolverTextChanged)
  1215  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1216  				it.fail = err
  1217  				return false
  1218  			}
  1219  			it.Event.Raw = log
  1220  			return true
  1221  
  1222  		default:
  1223  			return false
  1224  		}
  1225  	}
  1226  //迭代器仍在进行中,请等待数据或错误事件
  1227  	select {
  1228  	case log := <-it.logs:
  1229  		it.Event = new(PublicResolverTextChanged)
  1230  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1231  			it.fail = err
  1232  			return false
  1233  		}
  1234  		it.Event.Raw = log
  1235  		return true
  1236  
  1237  	case err := <-it.sub.Err():
  1238  		it.done = true
  1239  		it.fail = err
  1240  		return it.Next()
  1241  	}
  1242  }
  1243  
  1244  //重试时出错。筛选过程中出现任何检索或分析错误。
  1245  func (it *PublicResolverTextChangedIterator) Error() error {
  1246  	return it.fail
  1247  }
  1248  
  1249  //关闭终止迭代过程,释放任何挂起的基础
  1250  //资源。
  1251  func (it *PublicResolverTextChangedIterator) Close() error {
  1252  	it.sub.Unsubscribe()
  1253  	return nil
  1254  }
  1255  
  1256  //PublicResolverTextChanged represents a TextChanged event raised by the PublicResolver contract.
  1257  type PublicResolverTextChanged struct {
  1258  	Node       [32]byte
  1259  	IndexedKey common.Hash
  1260  	Key        string
  1261  Raw        types.Log //区块链特定的上下文信息
  1262  }
  1263  
  1264  //filtertextchanged是绑定合同事件0xD8C9334B1A9C2F9DA342A2A232629C1A229B6445DAD78947F674B44444A7550的自由日志检索操作。
  1265  //
  1266  //solidity:事件文本已更改(节点索引字节32、索引键索引字符串、键字符串)
  1267  func (_PublicResolver *PublicResolverFilterer) FilterTextChanged(opts *bind.FilterOpts, node [][32]byte, indexedKey []string) (*PublicResolverTextChangedIterator, error) {
  1268  
  1269  	var nodeRule []interface{}
  1270  	for _, nodeItem := range node {
  1271  		nodeRule = append(nodeRule, nodeItem)
  1272  	}
  1273  	var indexedKeyRule []interface{}
  1274  	for _, indexedKeyItem := range indexedKey {
  1275  		indexedKeyRule = append(indexedKeyRule, indexedKeyItem)
  1276  	}
  1277  
  1278  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "TextChanged", nodeRule, indexedKeyRule)
  1279  	if err != nil {
  1280  		return nil, err
  1281  	}
  1282  	return &PublicResolverTextChangedIterator{contract: _PublicResolver.contract, event: "TextChanged", logs: logs, sub: sub}, nil
  1283  }
  1284  
  1285  //watchTextChanged是一个绑定合同事件0xD8C9334B1A9C2F9DA342A2A232629C1A229B6445DAD78947F674B44444A7550的免费日志订阅操作。
  1286  //
  1287  //solidity:事件文本已更改(节点索引字节32、索引键索引字符串、键字符串)
  1288  func (_PublicResolver *PublicResolverFilterer) WatchTextChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverTextChanged, node [][32]byte, indexedKey []string) (event.Subscription, error) {
  1289  
  1290  	var nodeRule []interface{}
  1291  	for _, nodeItem := range node {
  1292  		nodeRule = append(nodeRule, nodeItem)
  1293  	}
  1294  	var indexedKeyRule []interface{}
  1295  	for _, indexedKeyItem := range indexedKey {
  1296  		indexedKeyRule = append(indexedKeyRule, indexedKeyItem)
  1297  	}
  1298  
  1299  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "TextChanged", nodeRule, indexedKeyRule)
  1300  	if err != nil {
  1301  		return nil, err
  1302  	}
  1303  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1304  		defer sub.Unsubscribe()
  1305  		for {
  1306  			select {
  1307  			case log := <-logs:
  1308  //新日志到达,分析事件并转发给用户
  1309  				event := new(PublicResolverTextChanged)
  1310  				if err := _PublicResolver.contract.UnpackLog(event, "TextChanged", log); err != nil {
  1311  					return err
  1312  				}
  1313  				event.Raw = log
  1314  
  1315  				select {
  1316  				case sink <- event:
  1317  				case err := <-sub.Err():
  1318  					return err
  1319  				case <-quit:
  1320  					return nil
  1321  				}
  1322  			case err := <-sub.Err():
  1323  				return err
  1324  			case <-quit:
  1325  				return nil
  1326  			}
  1327  		}
  1328  	}), nil
  1329  }