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