github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/contracts/ens/contract/publicresolver.go (about)

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