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