diff --git a/.gitignore b/.gitignore index 9120c09..9ff44ac 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ cache/ gnoshcontracts/ shopcontracts/ out/ +broadcast/ .tool-versions .env diff --git a/.gitmodules b/.gitmodules index 3e4f3cb..6d164d9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,9 @@ -[submodule "src/common/lib/openzeppelin"] - path = lib/openzeppelin - url = https://github.com/OpenZeppelin/openzeppelin-contracts -[submodule "forge-std"] +[submodule "lib/openzeppelin-contracts-upgradeable"] + path = lib/openzeppelin-contracts-upgradeable + url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable +[submodule "lib/openzeppelin-foundry-upgrades"] + path = lib/openzeppelin-foundry-upgrades + url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades +[submodule "lib/forge-std"] path = lib/forge-std url = https://github.com/foundry-rs/forge-std diff --git a/bindings/eonkeypublish/eonkeypublish.go b/bindings/eonkeypublish/eonkeypublish.go index 9b21a21..f795153 100644 --- a/bindings/eonkeypublish/eonkeypublish.go +++ b/bindings/eonkeypublish/eonkeypublish.go @@ -32,12 +32,34 @@ var ( // EonkeypublishMetaData contains all meta data concerning the Eonkeypublish contract. var EonkeypublishMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_keyperSet\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_broadcaster\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_eon\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eonKeyConfirmed\",\"inputs\":[{\"name\":\"eonKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasKeyperVoted\",\"inputs\":[{\"name\":\"keyper\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"publishEonKey\",\"inputs\":[{\"name\":\"eonKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"keyperId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"EonVoteRegistered\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"key\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyVoted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyperSetNotFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowed\",\"inputs\":[]}]", + Bin: "0x608060405234801561000f575f5ffd5b50604051610ddc380380610ddc8339818101604052810190610031919061017d565b8260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050506101cd565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61010f826100e6565b9050919050565b61011f81610105565b8114610129575f5ffd5b50565b5f8151905061013a81610116565b92915050565b5f67ffffffffffffffff82169050919050565b61015c81610140565b8114610166575f5ffd5b50565b5f8151905061017781610153565b92915050565b5f5f5f60608486031215610194576101936100e2565b5b5f6101a18682870161012c565b93505060206101b28682870161012c565b92505060406101c386828701610169565b9150509250925092565b610c02806101da5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063517e1cf714610043578063a1dd75ba14610073578063b118b6ed1461008f575b5f5ffd5b61005d600480360381019061005891906107c0565b6100bf565b60405161006a9190610821565b60405180910390f35b61008d60048036038101906100889190610877565b6101b0565b005b6100a960048036038101906100a4919061092b565b610621565b6040516100b69190610821565b60405180910390f35b5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561012b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014f919061096a565b67ffffffffffffffff1690505f5f5f858051906020012081526020019081526020015f205f9054906101000a900467ffffffffffffffff169050818167ffffffffffffffff16106101a5576001925050506101ab565b5f925050505b919050565b5f8251036101ea576040517f76d4e1e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d4e40836040518163ffffffff1660e01b8152600401602060405180830381865afa158015610254573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027891906109bf565b6102ae576040517feac631aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e8e6cad836040518263ffffffff1660e01b815260040161031f91906109f9565b602060405180830381865afa15801561033a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035e9190610a26565b73ffffffffffffffffffffffffffffffffffffffff16146103ab576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610502576001805f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f5f838051906020012081526020019081526020015f205f81819054906101000a900467ffffffffffffffff168092919061048790610a7e565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550507fd521fd602f7dce253c2e07c489358eb9e00e3af335a362168a0300d30e401a8a600360149054906101000a900467ffffffffffffffff16836040516104f5929190610b0d565b60405180910390a1610534565b6040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053d826100bf565b1561061c5760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663daade8e8600360149054906101000a900467ffffffffffffffff16846040518363ffffffff1660e01b81526004016105b4929190610b0d565b5f604051808303815f87803b1580156105cb575f5ffd5b505af19250505080156105dc575060015b610617576105e8610b47565b806308c379a00361060d57506105fc610b66565b80610607575061060f565b5061061d565b505b3d5f5f3e3d5ffd5b61061d565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6106d28261068c565b810181811067ffffffffffffffff821117156106f1576106f061069c565b5b80604052505050565b5f610703610673565b905061070f82826106c9565b919050565b5f67ffffffffffffffff82111561072e5761072d61069c565b5b6107378261068c565b9050602081019050919050565b828183375f83830152505050565b5f61076461075f84610714565b6106fa565b9050828152602081018484840111156107805761077f610688565b5b61078b848285610744565b509392505050565b5f82601f8301126107a7576107a6610684565b5b81356107b7848260208601610752565b91505092915050565b5f602082840312156107d5576107d461067c565b5b5f82013567ffffffffffffffff8111156107f2576107f1610680565b5b6107fe84828501610793565b91505092915050565b5f8115159050919050565b61081b81610807565b82525050565b5f6020820190506108345f830184610812565b92915050565b5f67ffffffffffffffff82169050919050565b6108568161083a565b8114610860575f5ffd5b50565b5f813590506108718161084d565b92915050565b5f5f6040838503121561088d5761088c61067c565b5b5f83013567ffffffffffffffff8111156108aa576108a9610680565b5b6108b685828601610793565b92505060206108c785828601610863565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108fa826108d1565b9050919050565b61090a816108f0565b8114610914575f5ffd5b50565b5f8135905061092581610901565b92915050565b5f602082840312156109405761093f61067c565b5b5f61094d84828501610917565b91505092915050565b5f815190506109648161084d565b92915050565b5f6020828403121561097f5761097e61067c565b5b5f61098c84828501610956565b91505092915050565b61099e81610807565b81146109a8575f5ffd5b50565b5f815190506109b981610995565b92915050565b5f602082840312156109d4576109d361067c565b5b5f6109e1848285016109ab565b91505092915050565b6109f38161083a565b82525050565b5f602082019050610a0c5f8301846109ea565b92915050565b5f81519050610a2081610901565b92915050565b5f60208284031215610a3b57610a3a61067c565b5b5f610a4884828501610a12565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a888261083a565b915067ffffffffffffffff8203610aa257610aa1610a51565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610adf82610aad565b610ae98185610ab7565b9350610af9818560208601610ac7565b610b028161068c565b840191505092915050565b5f604082019050610b205f8301856109ea565b8181036020830152610b328184610ad5565b90509392505050565b5f8160e01c9050919050565b5f60033d1115610b635760045f5f3e610b605f51610b3b565b90505b90565b5f60443d10610bf257610b77610673565b60043d036004823e80513d602482011167ffffffffffffffff82111715610b9f575050610bf2565b808201805167ffffffffffffffff811115610bbd5750505050610bf2565b80602083010160043d038501811115610bda575050505050610bf2565b610be9826020018501866106c9565b82955050505050505b9056fea164736f6c634300081c000a", } // EonkeypublishABI is the input ABI used to generate the binding from. // Deprecated: Use EonkeypublishMetaData.ABI instead. var EonkeypublishABI = EonkeypublishMetaData.ABI +// EonkeypublishBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use EonkeypublishMetaData.Bin instead. +var EonkeypublishBin = EonkeypublishMetaData.Bin + +// DeployEonkeypublish deploys a new Ethereum contract, binding an instance of Eonkeypublish to it. +func DeployEonkeypublish(auth *bind.TransactOpts, backend bind.ContractBackend, _keyperSet common.Address, _broadcaster common.Address, _eon uint64) (common.Address, *types.Transaction, *Eonkeypublish, error) { + parsed, err := EonkeypublishMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(EonkeypublishBin), backend, _keyperSet, _broadcaster, _eon) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Eonkeypublish{EonkeypublishCaller: EonkeypublishCaller{contract: contract}, EonkeypublishTransactor: EonkeypublishTransactor{contract: contract}, EonkeypublishFilterer: EonkeypublishFilterer{contract: contract}}, nil +} + // Eonkeypublish is an auto generated Go binding around an Ethereum contract. type Eonkeypublish struct { EonkeypublishCaller // Read-only binding to the contract diff --git a/bindings/eventtriggertesthelper/eventtriggertesthelper.go b/bindings/eventtriggertesthelper/eventtriggertesthelper.go new file mode 100644 index 0000000..be4ec27 --- /dev/null +++ b/bindings/eventtriggertesthelper/eventtriggertesthelper.go @@ -0,0 +1,379 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package eventtriggertesthelper + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// EventtriggertesthelperMetaData contains all meta data concerning the Eventtriggertesthelper contract. +var EventtriggertesthelperMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"trigger\",\"inputs\":[{\"name\":\"topic1\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"topic2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"data1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"data2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Trigger\",\"inputs\":[{\"name\":\"topic1\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"topic2\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"data1\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"data2\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false}]", + Bin: "0x6080604052348015600e575f5ffd5b506101af8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063838860701461002d575b5f5ffd5b61004760048036038101906100429190610108565b610049565b005b828467ffffffffffffffff167f4e62cf06e16b508286e9b2a7e026a6b8d6e4f0a4e863a7b9c127bad45a6d0868848460405161008692919061017b565b60405180910390a350505050565b5f5ffd5b5f67ffffffffffffffff82169050919050565b6100b481610098565b81146100be575f5ffd5b50565b5f813590506100cf816100ab565b92915050565b5f819050919050565b6100e7816100d5565b81146100f1575f5ffd5b50565b5f81359050610102816100de565b92915050565b5f5f5f5f608085870312156101205761011f610094565b5b5f61012d878288016100c1565b945050602061013e878288016100f4565b935050604061014f878288016100f4565b9250506060610160878288016100f4565b91505092959194509250565b610175816100d5565b82525050565b5f60408201905061018e5f83018561016c565b61019b602083018461016c565b939250505056fea164736f6c634300081c000a", +} + +// EventtriggertesthelperABI is the input ABI used to generate the binding from. +// Deprecated: Use EventtriggertesthelperMetaData.ABI instead. +var EventtriggertesthelperABI = EventtriggertesthelperMetaData.ABI + +// EventtriggertesthelperBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use EventtriggertesthelperMetaData.Bin instead. +var EventtriggertesthelperBin = EventtriggertesthelperMetaData.Bin + +// DeployEventtriggertesthelper deploys a new Ethereum contract, binding an instance of Eventtriggertesthelper to it. +func DeployEventtriggertesthelper(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Eventtriggertesthelper, error) { + parsed, err := EventtriggertesthelperMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(EventtriggertesthelperBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Eventtriggertesthelper{EventtriggertesthelperCaller: EventtriggertesthelperCaller{contract: contract}, EventtriggertesthelperTransactor: EventtriggertesthelperTransactor{contract: contract}, EventtriggertesthelperFilterer: EventtriggertesthelperFilterer{contract: contract}}, nil +} + +// Eventtriggertesthelper is an auto generated Go binding around an Ethereum contract. +type Eventtriggertesthelper struct { + EventtriggertesthelperCaller // Read-only binding to the contract + EventtriggertesthelperTransactor // Write-only binding to the contract + EventtriggertesthelperFilterer // Log filterer for contract events +} + +// EventtriggertesthelperCaller is an auto generated read-only Go binding around an Ethereum contract. +type EventtriggertesthelperCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EventtriggertesthelperTransactor is an auto generated write-only Go binding around an Ethereum contract. +type EventtriggertesthelperTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EventtriggertesthelperFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type EventtriggertesthelperFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EventtriggertesthelperSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type EventtriggertesthelperSession struct { + Contract *Eventtriggertesthelper // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// EventtriggertesthelperCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type EventtriggertesthelperCallerSession struct { + Contract *EventtriggertesthelperCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// EventtriggertesthelperTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type EventtriggertesthelperTransactorSession struct { + Contract *EventtriggertesthelperTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// EventtriggertesthelperRaw is an auto generated low-level Go binding around an Ethereum contract. +type EventtriggertesthelperRaw struct { + Contract *Eventtriggertesthelper // Generic contract binding to access the raw methods on +} + +// EventtriggertesthelperCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type EventtriggertesthelperCallerRaw struct { + Contract *EventtriggertesthelperCaller // Generic read-only contract binding to access the raw methods on +} + +// EventtriggertesthelperTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type EventtriggertesthelperTransactorRaw struct { + Contract *EventtriggertesthelperTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewEventtriggertesthelper creates a new instance of Eventtriggertesthelper, bound to a specific deployed contract. +func NewEventtriggertesthelper(address common.Address, backend bind.ContractBackend) (*Eventtriggertesthelper, error) { + contract, err := bindEventtriggertesthelper(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Eventtriggertesthelper{EventtriggertesthelperCaller: EventtriggertesthelperCaller{contract: contract}, EventtriggertesthelperTransactor: EventtriggertesthelperTransactor{contract: contract}, EventtriggertesthelperFilterer: EventtriggertesthelperFilterer{contract: contract}}, nil +} + +// NewEventtriggertesthelperCaller creates a new read-only instance of Eventtriggertesthelper, bound to a specific deployed contract. +func NewEventtriggertesthelperCaller(address common.Address, caller bind.ContractCaller) (*EventtriggertesthelperCaller, error) { + contract, err := bindEventtriggertesthelper(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &EventtriggertesthelperCaller{contract: contract}, nil +} + +// NewEventtriggertesthelperTransactor creates a new write-only instance of Eventtriggertesthelper, bound to a specific deployed contract. +func NewEventtriggertesthelperTransactor(address common.Address, transactor bind.ContractTransactor) (*EventtriggertesthelperTransactor, error) { + contract, err := bindEventtriggertesthelper(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &EventtriggertesthelperTransactor{contract: contract}, nil +} + +// NewEventtriggertesthelperFilterer creates a new log filterer instance of Eventtriggertesthelper, bound to a specific deployed contract. +func NewEventtriggertesthelperFilterer(address common.Address, filterer bind.ContractFilterer) (*EventtriggertesthelperFilterer, error) { + contract, err := bindEventtriggertesthelper(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &EventtriggertesthelperFilterer{contract: contract}, nil +} + +// bindEventtriggertesthelper binds a generic wrapper to an already deployed contract. +func bindEventtriggertesthelper(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := EventtriggertesthelperMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Eventtriggertesthelper *EventtriggertesthelperRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Eventtriggertesthelper.Contract.EventtriggertesthelperCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Eventtriggertesthelper *EventtriggertesthelperRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Eventtriggertesthelper.Contract.EventtriggertesthelperTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Eventtriggertesthelper *EventtriggertesthelperRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Eventtriggertesthelper.Contract.EventtriggertesthelperTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Eventtriggertesthelper *EventtriggertesthelperCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Eventtriggertesthelper.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Eventtriggertesthelper *EventtriggertesthelperTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Eventtriggertesthelper.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Eventtriggertesthelper *EventtriggertesthelperTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Eventtriggertesthelper.Contract.contract.Transact(opts, method, params...) +} + +// Trigger is a paid mutator transaction binding the contract method 0x83886070. +// +// Solidity: function trigger(uint64 topic1, bytes32 topic2, bytes32 data1, bytes32 data2) returns() +func (_Eventtriggertesthelper *EventtriggertesthelperTransactor) Trigger(opts *bind.TransactOpts, topic1 uint64, topic2 [32]byte, data1 [32]byte, data2 [32]byte) (*types.Transaction, error) { + return _Eventtriggertesthelper.contract.Transact(opts, "trigger", topic1, topic2, data1, data2) +} + +// Trigger is a paid mutator transaction binding the contract method 0x83886070. +// +// Solidity: function trigger(uint64 topic1, bytes32 topic2, bytes32 data1, bytes32 data2) returns() +func (_Eventtriggertesthelper *EventtriggertesthelperSession) Trigger(topic1 uint64, topic2 [32]byte, data1 [32]byte, data2 [32]byte) (*types.Transaction, error) { + return _Eventtriggertesthelper.Contract.Trigger(&_Eventtriggertesthelper.TransactOpts, topic1, topic2, data1, data2) +} + +// Trigger is a paid mutator transaction binding the contract method 0x83886070. +// +// Solidity: function trigger(uint64 topic1, bytes32 topic2, bytes32 data1, bytes32 data2) returns() +func (_Eventtriggertesthelper *EventtriggertesthelperTransactorSession) Trigger(topic1 uint64, topic2 [32]byte, data1 [32]byte, data2 [32]byte) (*types.Transaction, error) { + return _Eventtriggertesthelper.Contract.Trigger(&_Eventtriggertesthelper.TransactOpts, topic1, topic2, data1, data2) +} + +// EventtriggertesthelperTriggerIterator is returned from FilterTrigger and is used to iterate over the raw logs and unpacked data for Trigger events raised by the Eventtriggertesthelper contract. +type EventtriggertesthelperTriggerIterator struct { + Event *EventtriggertesthelperTrigger // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *EventtriggertesthelperTriggerIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(EventtriggertesthelperTrigger) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(EventtriggertesthelperTrigger) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *EventtriggertesthelperTriggerIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EventtriggertesthelperTriggerIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EventtriggertesthelperTrigger represents a Trigger event raised by the Eventtriggertesthelper contract. +type EventtriggertesthelperTrigger struct { + Topic1 uint64 + Topic2 [32]byte + Data1 [32]byte + Data2 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTrigger is a free log retrieval operation binding the contract event 0x4e62cf06e16b508286e9b2a7e026a6b8d6e4f0a4e863a7b9c127bad45a6d0868. +// +// Solidity: event Trigger(uint64 indexed topic1, bytes32 indexed topic2, bytes32 data1, bytes32 data2) +func (_Eventtriggertesthelper *EventtriggertesthelperFilterer) FilterTrigger(opts *bind.FilterOpts, topic1 []uint64, topic2 [][32]byte) (*EventtriggertesthelperTriggerIterator, error) { + + var topic1Rule []interface{} + for _, topic1Item := range topic1 { + topic1Rule = append(topic1Rule, topic1Item) + } + var topic2Rule []interface{} + for _, topic2Item := range topic2 { + topic2Rule = append(topic2Rule, topic2Item) + } + + logs, sub, err := _Eventtriggertesthelper.contract.FilterLogs(opts, "Trigger", topic1Rule, topic2Rule) + if err != nil { + return nil, err + } + return &EventtriggertesthelperTriggerIterator{contract: _Eventtriggertesthelper.contract, event: "Trigger", logs: logs, sub: sub}, nil +} + +// WatchTrigger is a free log subscription operation binding the contract event 0x4e62cf06e16b508286e9b2a7e026a6b8d6e4f0a4e863a7b9c127bad45a6d0868. +// +// Solidity: event Trigger(uint64 indexed topic1, bytes32 indexed topic2, bytes32 data1, bytes32 data2) +func (_Eventtriggertesthelper *EventtriggertesthelperFilterer) WatchTrigger(opts *bind.WatchOpts, sink chan<- *EventtriggertesthelperTrigger, topic1 []uint64, topic2 [][32]byte) (event.Subscription, error) { + + var topic1Rule []interface{} + for _, topic1Item := range topic1 { + topic1Rule = append(topic1Rule, topic1Item) + } + var topic2Rule []interface{} + for _, topic2Item := range topic2 { + topic2Rule = append(topic2Rule, topic2Item) + } + + logs, sub, err := _Eventtriggertesthelper.contract.WatchLogs(opts, "Trigger", topic1Rule, topic2Rule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(EventtriggertesthelperTrigger) + if err := _Eventtriggertesthelper.contract.UnpackLog(event, "Trigger", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTrigger is a log parse operation binding the contract event 0x4e62cf06e16b508286e9b2a7e026a6b8d6e4f0a4e863a7b9c127bad45a6d0868. +// +// Solidity: event Trigger(uint64 indexed topic1, bytes32 indexed topic2, bytes32 data1, bytes32 data2) +func (_Eventtriggertesthelper *EventtriggertesthelperFilterer) ParseTrigger(log types.Log) (*EventtriggertesthelperTrigger, error) { + event := new(EventtriggertesthelperTrigger) + if err := _Eventtriggertesthelper.contract.UnpackLog(event, "Trigger", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/bindings/inbox/inbox.go b/bindings/inbox/inbox.go index e8c4fce..ebc9476 100644 --- a/bindings/inbox/inbox.go +++ b/bindings/inbox/inbox.go @@ -40,12 +40,34 @@ type InboxTransaction struct { // InboxMetaData contains all meta data concerning the Inbox contract. var InboxMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_blockGasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"initializer\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BLOCK_GAS_LIMIT_SETTER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SEQUENCER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAW_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clear\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlockGasLimit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransactions\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structInbox.Transaction[]\",\"components\":[{\"name\":\"encryptedTransaction\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"cumulativeGasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"dao\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"sequencer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializer\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setBlockGasLimit\",\"inputs\":[{\"name\":\"newBlockGasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitEncryptedTransaction\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"encryptedTransaction\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"excessFeeRecipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"EncryptedTransactionSubmitted\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"block\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"encryptedTransaction\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"gasLimit\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"cumulativeGasLimit\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeesWithdrawn\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AlreadyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BlockAlreadyFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BlockGasLimitExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TransferEtherFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedInitializer\",\"inputs\":[]}]", + Bin: "0x608060405234801561000f575f5ffd5b5060405161239b38038061239b8339818101604052810190610031919061013d565b80806001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508160035f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505061017b565b5f5ffd5b5f67ffffffffffffffff82169050919050565b6100c2816100a6565b81146100cc575f5ffd5b50565b5f815190506100dd816100b9565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61010c826100e3565b9050919050565b61011c81610102565b8114610126575f5ffd5b50565b5f8151905061013781610113565b92915050565b5f5f60408385031215610153576101526100a2565b5b5f610160858286016100cf565b925050602061017185828601610129565b9150509250929050565b612213806101885f395ff3fe608060405260043610610134575f3560e01c80635c975abb116100aa578063a217fddf1161006e578063a217fddf146103dc578063a44e7cfe14610406578063ae0dad6014610422578063d547741f1461044a578063e02023a114610472578063e63ab1e91461049c57610134565b80635c975abb1461030c5780638456cb591461033657806391d148541461034c57806391de737e146103885780639ce110d7146103b257610134565b80633f4ba83a116100fc5780633f4ba83a1461022a5780634842855c14610240578063485cc9551461026a57806351cff8d91461029257806352efea6e146102ba578063552fd4aa146102d057610134565b806301ffc9a714610138578063248a9ca3146101745780632cc8377d146101b05780632f2ff15d146101da57806336568abe14610202575b5f5ffd5b348015610143575f5ffd5b5061015e600480360381019061015991906116c4565b6104c6565b60405161016b9190611709565b60405180910390f35b34801561017f575f5ffd5b5061019a60048036038101906101959190611755565b61053f565b6040516101a7919061178f565b60405180910390f35b3480156101bb575f5ffd5b506101c461055b565b6040516101d191906117ca565b60405180910390f35b3480156101e5575f5ffd5b5061020060048036038101906101fb919061183d565b610577565b005b34801561020d575f5ffd5b506102286004803603810190610223919061183d565b610599565b005b348015610235575f5ffd5b5061023e610614565b005b34801561024b575f5ffd5b5061025461062b565b604051610261919061178f565b60405180910390f35b348015610275575f5ffd5b50610290600480360381019061028b919061187b565b61064f565b005b34801561029d575f5ffd5b506102b860048036038101906102b391906118b9565b610792565b005b3480156102c5575f5ffd5b506102ce610801565b005b3480156102db575f5ffd5b506102f660048036038101906102f1919061190e565b61085e565b6040516103039190611ae2565b60405180910390f35b348015610317575f5ffd5b50610320610a26565b60405161032d9190611709565b60405180910390f35b348015610341575f5ffd5b5061034a610a3b565b005b348015610357575f5ffd5b50610372600480360381019061036d919061183d565b610a70565b60405161037f9190611709565b60405180910390f35b348015610393575f5ffd5b5061039c610ad3565b6040516103a9919061178f565b60405180910390f35b3480156103bd575f5ffd5b506103c6610af7565b6040516103d39190611b11565b60405180910390f35b3480156103e7575f5ffd5b506103f0610b1b565b6040516103fd919061178f565b60405180910390f35b610420600480360381019061041b9190611c56565b610b21565b005b34801561042d575f5ffd5b506104486004803603810190610443919061190e565b610e91565b005b348015610455575f5ffd5b50610470600480360381019061046b919061183d565b610ee7565b005b34801561047d575f5ffd5b50610486610f09565b604051610493919061178f565b60405180910390f35b3480156104a7575f5ffd5b506104b0610f2d565b6040516104bd919061178f565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610538575061053782610f51565b5b9050919050565b5f5f5f8381526020019081526020015f20600101549050919050565b5f60035f9054906101000a900467ffffffffffffffff16905090565b6105808261053f565b61058981610fba565b6105938383610fce565b50505050565b6105a16110b7565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610605576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61060f82826110be565b505050565b5f5f1b61062081610fba565b6106286111a7565b50565b7fac4f1890dc96c9a02330d1fa696648a38f3b282d2449c2d8e6f10507488c84c881565b5f73ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036106d4576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610759576040517f0d622feb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107837fac4f1890dc96c9a02330d1fa696648a38f3b282d2449c2d8e6f10507488c84c882610fce565b5061078e8282611208565b5050565b7f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec6107bc81610fba565b6107c6824761138e565b7f792248b395a0ac81e65e6d79494b5382c8de690233f36c2e5e672f77044887c7826040516107f59190611b11565b60405180910390a15050565b7fac4f1890dc96c9a02330d1fa696648a38f3b282d2449c2d8e6f10507488c84c861082b81610fba565b60025f4367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f61085b9190611565565b50565b606060025f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610a1b578382905f5260205f2090600302016040518060800160405290815f820180546108d490611d03565b80601f016020809104026020016040519081016040528092919081815260200182805461090090611d03565b801561094b5780601f106109225761010080835404028352916020019161094b565b820191905f5260205f20905b81548152906001019060200180831161092e57829003601f168201915b50505050508152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152602001600282015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815260200190600101906108a4565b505050509050919050565b5f60015f9054906101000a900460ff16905090565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a6581610fba565b610a6d611432565b50565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b7ff265e6f4485879ff06917e0b78d882e64c54d090917c00d06bf8720a31ba125681565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f1b81565b610b29611493565b4367ffffffffffffffff168467ffffffffffffffff1611610b76576040517fa393699e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f488367ffffffffffffffff16610b8d9190611d69565b905080341015610bc9576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025f8767ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f818054905090505f5f8267ffffffffffffffff1611610c11575f610c5e565b82600183610c1f9190611daa565b67ffffffffffffffff1681548110610c3a57610c39611de5565b5b905f5260205f2090600302016002015f9054906101000a900467ffffffffffffffff165b905060035f9054906101000a900467ffffffffffffffff1667ffffffffffffffff168682610c8c9190611e12565b67ffffffffffffffff161115610cce576040517fa026cc8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260405180608001604052808981526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff1681526020018884610d189190611e12565b67ffffffffffffffff16815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f019081610d5e9190611fed565b506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506060820151816002015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050508767ffffffffffffffff168267ffffffffffffffff167f0ac44a68e7048007d82fa113a6c5d84bec8a110ed9e953d4f234fab3c9ecac5389338a8b87610e4a9190611e12565b8a604051610e5c959493929190612113565b60405180910390a35f8434610e71919061216b565b90505f811115610e8657610e85868261138e565b5b505050505050505050565b7ff265e6f4485879ff06917e0b78d882e64c54d090917c00d06bf8720a31ba1256610ebb81610fba565b8160035f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b610ef08261053f565b610ef981610fba565b610f0383836110be565b50505050565b7f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec81565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610fcb81610fc66110b7565b6114d4565b50565b5f610fd98383610a70565b6110ad5760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061104a6110b7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506110b1565b5f90505b92915050565b5f33905090565b5f6110c98383610a70565b1561119d575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061113a6110b7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506111a1565b5f90505b92915050565b6111af611525565b5f60015f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6111f16110b7565b6040516111fe9190611b11565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361128d576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611312576040517f0d622feb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61131e5f5f1b83610fce565b506113497f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610fce565b505f6001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040516113b3906121cb565b5f6040518083038185875af1925050503d805f81146113ed576040519150601f19603f3d011682016040523d82523d5f602084013e6113f2565b606091505b505090508061142d576040517f560fbc9400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b61143a611493565b6001805f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861147c6110b7565b6040516114899190611b11565b60405180910390a1565b61149b610a26565b156114d2576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6114de8282610a70565b6115215780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016115189291906121df565b60405180910390fd5b5050565b61152d610a26565b611563576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5080545f8255600302905f5260205f20908101906115839190611586565b50565b5b80821115611602575f5f82015f61159e9190611606565b600182015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549067ffffffffffffffff0219169055600282015f6101000a81549067ffffffffffffffff021916905550600301611587565b5090565b50805461161290611d03565b5f825580601f106116235750611640565b601f0160209004905f5260205f209081019061163f9190611643565b5b50565b5b8082111561165a575f815f905550600101611644565b5090565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6116a38161166f565b81146116ad575f5ffd5b50565b5f813590506116be8161169a565b92915050565b5f602082840312156116d9576116d8611667565b5b5f6116e6848285016116b0565b91505092915050565b5f8115159050919050565b611703816116ef565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f819050919050565b61173481611722565b811461173e575f5ffd5b50565b5f8135905061174f8161172b565b92915050565b5f6020828403121561176a57611769611667565b5b5f61177784828501611741565b91505092915050565b61178981611722565b82525050565b5f6020820190506117a25f830184611780565b92915050565b5f67ffffffffffffffff82169050919050565b6117c4816117a8565b82525050565b5f6020820190506117dd5f8301846117bb565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61180c826117e3565b9050919050565b61181c81611802565b8114611826575f5ffd5b50565b5f8135905061183781611813565b92915050565b5f5f6040838503121561185357611852611667565b5b5f61186085828601611741565b925050602061187185828601611829565b9150509250929050565b5f5f6040838503121561189157611890611667565b5b5f61189e85828601611829565b92505060206118af85828601611829565b9150509250929050565b5f602082840312156118ce576118cd611667565b5b5f6118db84828501611829565b91505092915050565b6118ed816117a8565b81146118f7575f5ffd5b50565b5f81359050611908816118e4565b92915050565b5f6020828403121561192357611922611667565b5b5f611930848285016118fa565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6119a482611962565b6119ae818561196c565b93506119be81856020860161197c565b6119c78161198a565b840191505092915050565b6119db81611802565b82525050565b6119ea816117a8565b82525050565b5f608083015f8301518482035f860152611a0a828261199a565b9150506020830151611a1f60208601826119d2565b506040830151611a3260408601826119e1565b506060830151611a4560608601826119e1565b508091505092915050565b5f611a5b83836119f0565b905092915050565b5f602082019050919050565b5f611a7982611939565b611a838185611943565b935083602082028501611a9585611953565b805f5b85811015611ad05784840389528151611ab18582611a50565b9450611abc83611a63565b925060208a01995050600181019050611a98565b50829750879550505050505092915050565b5f6020820190508181035f830152611afa8184611a6f565b905092915050565b611b0b81611802565b82525050565b5f602082019050611b245f830184611b02565b92915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b688261198a565b810181811067ffffffffffffffff82111715611b8757611b86611b32565b5b80604052505050565b5f611b9961165e565b9050611ba58282611b5f565b919050565b5f67ffffffffffffffff821115611bc457611bc3611b32565b5b611bcd8261198a565b9050602081019050919050565b828183375f83830152505050565b5f611bfa611bf584611baa565b611b90565b905082815260208101848484011115611c1657611c15611b2e565b5b611c21848285611bda565b509392505050565b5f82601f830112611c3d57611c3c611b2a565b5b8135611c4d848260208601611be8565b91505092915050565b5f5f5f5f60808587031215611c6e57611c6d611667565b5b5f611c7b878288016118fa565b945050602085013567ffffffffffffffff811115611c9c57611c9b61166b565b5b611ca887828801611c29565b9350506040611cb9878288016118fa565b9250506060611cca87828801611829565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611d1a57607f821691505b602082108103611d2d57611d2c611cd6565b5b50919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611d7382611d33565b9150611d7e83611d33565b9250828202611d8c81611d33565b91508282048414831517611da357611da2611d3c565b5b5092915050565b5f611db4826117a8565b9150611dbf836117a8565b9250828203905067ffffffffffffffff811115611ddf57611dde611d3c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611e1c826117a8565b9150611e27836117a8565b9250828201905067ffffffffffffffff811115611e4757611e46611d3c565b5b92915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302611ea97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611e6e565b611eb38683611e6e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f611eee611ee9611ee484611d33565b611ecb565b611d33565b9050919050565b5f819050919050565b611f0783611ed4565b611f1b611f1382611ef5565b848454611e7a565b825550505050565b5f5f905090565b611f32611f23565b611f3d818484611efe565b505050565b5b81811015611f6057611f555f82611f2a565b600181019050611f43565b5050565b601f821115611fa557611f7681611e4d565b611f7f84611e5f565b81016020851015611f8e578190505b611fa2611f9a85611e5f565b830182611f42565b50505b505050565b5f82821c905092915050565b5f611fc55f1984600802611faa565b1980831691505092915050565b5f611fdd8383611fb6565b9150826002028217905092915050565b611ff682611962565b67ffffffffffffffff81111561200f5761200e611b32565b5b6120198254611d03565b612024828285611f64565b5f60209050601f831160018114612055575f8415612043578287015190505b61204d8582611fd2565b8655506120b4565b601f19841661206386611e4d565b5f5b8281101561208a57848901518255600182019150602085019450602081019050612065565b868310156120a757848901516120a3601f891682611fb6565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b5f6120d682611962565b6120e081856120bc565b93506120f081856020860161197c565b6120f98161198a565b840191505092915050565b61210d81611d33565b82525050565b5f60a0820190508181035f83015261212b81886120cc565b905061213a6020830187611b02565b61214760408301866117bb565b61215460608301856117bb565b6121616080830184612104565b9695505050505050565b5f61217582611d33565b915061218083611d33565b925082820390508181111561219857612197611d3c565b5b92915050565b5f81905092915050565b50565b5f6121b65f8361219e565b91506121c1826121a8565b5f82019050919050565b5f6121d5826121ab565b9150819050919050565b5f6040820190506121f25f830185611b02565b6121ff6020830184611780565b939250505056fea164736f6c634300081c000a", } // InboxABI is the input ABI used to generate the binding from. // Deprecated: Use InboxMetaData.ABI instead. var InboxABI = InboxMetaData.ABI +// InboxBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use InboxMetaData.Bin instead. +var InboxBin = InboxMetaData.Bin + +// DeployInbox deploys a new Ethereum contract, binding an instance of Inbox to it. +func DeployInbox(auth *bind.TransactOpts, backend bind.ContractBackend, _blockGasLimit uint64, initializer common.Address) (common.Address, *types.Transaction, *Inbox, error) { + parsed, err := InboxMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(InboxBin), backend, _blockGasLimit, initializer) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Inbox{InboxCaller: InboxCaller{contract: contract}, InboxTransactor: InboxTransactor{contract: contract}, InboxFilterer: InboxFilterer{contract: contract}}, nil +} + // Inbox is an auto generated Go binding around an Ethereum contract. type Inbox struct { InboxCaller // Read-only binding to the contract diff --git a/bindings/keybroadcastcontract/keybroadcastcontract.go b/bindings/keybroadcastcontract/keybroadcastcontract.go index 99892c5..dccd901 100644 --- a/bindings/keybroadcastcontract/keybroadcastcontract.go +++ b/bindings/keybroadcastcontract/keybroadcastcontract.go @@ -32,12 +32,34 @@ var ( // KeybroadcastcontractMetaData contains all meta data concerning the Keybroadcastcontract contract. var KeybroadcastcontractMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"keyperSetManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"broadcastEonKey\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getEonKey\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"EonKeyBroadcast\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"key\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyHaveKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowed\",\"inputs\":[]}]", + Bin: "0x608060405234801561000f575f5ffd5b50604051610b77380380610b77833981810160405281019061003191906100d5565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610100565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a48261007b565b9050919050565b6100b48161009a565b81146100be575f5ffd5b50565b5f815190506100cf816100ab565b92915050565b5f602082840312156100ea576100e9610077565b5b5f6100f7848285016100c1565b91505092915050565b610a6a8061010d5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80638a0b8b2814610038578063daade8e814610068575b5f5ffd5b610052600480360381019061004d91906103e4565b610084565b60405161005f919061047f565b60405180910390f35b610082600480360381019061007d91906105cb565b610138565b005b60605f5f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2080546100b590610652565b80601f01602080910402602001604051908101604052809291908181526020018280546100e190610652565b801561012c5780601f106101035761010080835404028352916020019161012c565b820191905f5260205f20905b81548152906001019060200180831161010f57829003601f168201915b50505050509050919050565b5f815103610172576040517f76d4e1e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2080546101a290610652565b905011156101dc576040517f58d819a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f90f3bed846040518263ffffffff1660e01b81526004016102379190610691565b602060405180830381865afa158015610252573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102769190610704565b90508073ffffffffffffffffffffffffffffffffffffffff1663cde1532d336040518263ffffffff1660e01b81526004016102b1919061073e565b602060405180830381865afa1580156102cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f0919061078c565b610326576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f5f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090816103579190610960565b507ff0dbcf46bf98296dd97ce9cb1ef117ac6fd1b2f126741125433174d56dad37688383604051610389929190610a2f565b60405180910390a1505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff82169050919050565b6103c3816103a7565b81146103cd575f5ffd5b50565b5f813590506103de816103ba565b92915050565b5f602082840312156103f9576103f861039f565b5b5f610406848285016103d0565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6104518261040f565b61045b8185610419565b935061046b818560208601610429565b61047481610437565b840191505092915050565b5f6020820190508181035f8301526104978184610447565b905092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6104dd82610437565b810181811067ffffffffffffffff821117156104fc576104fb6104a7565b5b80604052505050565b5f61050e610396565b905061051a82826104d4565b919050565b5f67ffffffffffffffff821115610539576105386104a7565b5b61054282610437565b9050602081019050919050565b828183375f83830152505050565b5f61056f61056a8461051f565b610505565b90508281526020810184848401111561058b5761058a6104a3565b5b61059684828561054f565b509392505050565b5f82601f8301126105b2576105b161049f565b5b81356105c284826020860161055d565b91505092915050565b5f5f604083850312156105e1576105e061039f565b5b5f6105ee858286016103d0565b925050602083013567ffffffffffffffff81111561060f5761060e6103a3565b5b61061b8582860161059e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061066957607f821691505b60208210810361067c5761067b610625565b5b50919050565b61068b816103a7565b82525050565b5f6020820190506106a45f830184610682565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106d3826106aa565b9050919050565b6106e3816106c9565b81146106ed575f5ffd5b50565b5f815190506106fe816106da565b92915050565b5f602082840312156107195761071861039f565b5b5f610726848285016106f0565b91505092915050565b610738816106c9565b82525050565b5f6020820190506107515f83018461072f565b92915050565b5f8115159050919050565b61076b81610757565b8114610775575f5ffd5b50565b5f8151905061078681610762565b92915050565b5f602082840312156107a1576107a061039f565b5b5f6107ae84828501610778565b91505092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026108137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826107d8565b61081d86836107d8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61086161085c61085784610835565b61083e565b610835565b9050919050565b5f819050919050565b61087a83610847565b61088e61088682610868565b8484546107e4565b825550505050565b5f5f905090565b6108a5610896565b6108b0818484610871565b505050565b5b818110156108d3576108c85f8261089d565b6001810190506108b6565b5050565b601f821115610918576108e9816107b7565b6108f2846107c9565b81016020851015610901578190505b61091561090d856107c9565b8301826108b5565b50505b505050565b5f82821c905092915050565b5f6109385f198460080261091d565b1980831691505092915050565b5f6109508383610929565b9150826002028217905092915050565b6109698261040f565b67ffffffffffffffff811115610982576109816104a7565b5b61098c8254610652565b6109978282856108d7565b5f60209050601f8311600181146109c8575f84156109b6578287015190505b6109c08582610945565b865550610a27565b601f1984166109d6866107b7565b5f5b828110156109fd578489015182556001820191506020850194506020810190506109d8565b86831015610a1a5784890151610a16601f891682610929565b8355505b6001600288020188555050505b505050505050565b5f604082019050610a425f830185610682565b8181036020830152610a548184610447565b9050939250505056fea164736f6c634300081c000a", } // KeybroadcastcontractABI is the input ABI used to generate the binding from. // Deprecated: Use KeybroadcastcontractMetaData.ABI instead. var KeybroadcastcontractABI = KeybroadcastcontractMetaData.ABI +// KeybroadcastcontractBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use KeybroadcastcontractMetaData.Bin instead. +var KeybroadcastcontractBin = KeybroadcastcontractMetaData.Bin + +// DeployKeybroadcastcontract deploys a new Ethereum contract, binding an instance of Keybroadcastcontract to it. +func DeployKeybroadcastcontract(auth *bind.TransactOpts, backend bind.ContractBackend, keyperSetManagerAddress common.Address) (common.Address, *types.Transaction, *Keybroadcastcontract, error) { + parsed, err := KeybroadcastcontractMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(KeybroadcastcontractBin), backend, keyperSetManagerAddress) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Keybroadcastcontract{KeybroadcastcontractCaller: KeybroadcastcontractCaller{contract: contract}, KeybroadcastcontractTransactor: KeybroadcastcontractTransactor{contract: contract}, KeybroadcastcontractFilterer: KeybroadcastcontractFilterer{contract: contract}}, nil +} + // Keybroadcastcontract is an auto generated Go binding around an Ethereum contract. type Keybroadcastcontract struct { KeybroadcastcontractCaller // Read-only binding to the contract diff --git a/bindings/keyperset/keyperset.go b/bindings/keyperset/keyperset.go index f7a80b0..5c068b7 100644 --- a/bindings/keyperset/keyperset.go +++ b/bindings/keyperset/keyperset.go @@ -32,12 +32,34 @@ var ( // KeypersetMetaData contains all meta data concerning the Keyperset contract. var KeypersetMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addMembers\",\"inputs\":[{\"name\":\"newMembers\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getMember\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNumMembers\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPublisher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isAllowedToBroadcastEonKey\",\"inputs\":[{\"name\":\"a\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isFinalized\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setFinalized\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPublisher\",\"inputs\":[{\"name\":\"_publisher\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setThreshold\",\"inputs\":[{\"name\":\"_threshold\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x608060405234801561000f575f5ffd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610081575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100789190610196565b60405180910390fd5b6100908161009660201b60201c565b506101af565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61018082610157565b9050919050565b61019081610176565b82525050565b5f6020820190506101a95f830184610187565b92915050565b610bfa806101bc5f395ff3fe608060405234801561000f575f5ffd5b50600436106100e8575f3560e01c80638da5cb5b1161008a578063cde1532d11610064578063cde1532d146101fc578063dbf4ab4e1461022c578063e75235b81461024a578063f2fde38b14610268576100e8565b80638da5cb5b146101a45780639eab5253146101c2578063cab63661146101e0576100e8565b80632e8e6cad116100c65780632e8e6cad146101305780636f4d469b14610160578063715018a61461017c5780638d4e408314610186576100e8565b806317c4de35146100ec57806317d5430a146101085780631de7725314610126575b5f5ffd5b610106600480360381019061010191906108ae565b610284565b005b6101106102fd565b60405161011d91906108e8565b60405180910390f35b61012e610309565b005b61014a600480360381019061014591906108ae565b61032d565b6040516101579190610940565b60405180910390f35b61017a600480360381019061017591906109ba565b61037b565b005b61018461048c565b005b61018e61049f565b60405161019b9190610a1f565b60405180910390f35b6101ac6104b4565b6040516101b99190610940565b60405180910390f35b6101ca6104db565b6040516101d79190610aef565b60405180910390f35b6101fa60048036038101906101f59190610b39565b610566565b005b61021660048036038101906102119190610b39565b6105f8565b6040516102239190610a1f565b60405180910390f35b610234610651565b6040516102419190610940565b60405180910390f35b61025261067a565b60405161025f91906108e8565b60405180910390f35b610282600480360381019061027d9190610b39565b610696565b005b61028c61071a565b5f60149054906101000a900460ff16156102d2576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b5f600180549050905090565b61031161071a565b60015f60146101000a81548160ff021916908315150217905550565b5f60018267ffffffffffffffff168154811061034c5761034b610b64565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61038361071a565b5f60149054906101000a900460ff16156103c9576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f90505b828290508167ffffffffffffffff16101561048757600183838367ffffffffffffffff1681811061040257610401610b64565b5b90506020020160208101906104179190610b39565b908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808061047f90610bbe565b9150506103ce565b505050565b61049461071a565b61049d5f6107a1565b565b5f5f60149054906101000a900460ff16905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180548060200260200160405190810160405280929190818152602001828054801561055c57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610513575b5050505050905090565b61056e61071a565b5f60149054906101000a900460ff16156105b4576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60025f9054906101000a900467ffffffffffffffff16905090565b61069e61071a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361070e575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016107059190610940565b60405180910390fd5b610717816107a1565b50565b610722610862565b73ffffffffffffffffffffffffffffffffffffffff166107406104b4565b73ffffffffffffffffffffffffffffffffffffffff161461079f57610763610862565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107969190610940565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff82169050919050565b61088d81610871565b8114610897575f5ffd5b50565b5f813590506108a881610884565b92915050565b5f602082840312156108c3576108c2610869565b5b5f6108d08482850161089a565b91505092915050565b6108e281610871565b82525050565b5f6020820190506108fb5f8301846108d9565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61092a82610901565b9050919050565b61093a81610920565b82525050565b5f6020820190506109535f830184610931565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261097a57610979610959565b5b8235905067ffffffffffffffff8111156109975761099661095d565b5b6020830191508360208202830111156109b3576109b2610961565b5b9250929050565b5f5f602083850312156109d0576109cf610869565b5b5f83013567ffffffffffffffff8111156109ed576109ec61086d565b5b6109f985828601610965565b92509250509250929050565b5f8115159050919050565b610a1981610a05565b82525050565b5f602082019050610a325f830184610a10565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610a6a81610920565b82525050565b5f610a7b8383610a61565b60208301905092915050565b5f602082019050919050565b5f610a9d82610a38565b610aa78185610a42565b9350610ab283610a52565b805f5b83811015610ae2578151610ac98882610a70565b9750610ad483610a87565b925050600181019050610ab5565b5085935050505092915050565b5f6020820190508181035f830152610b078184610a93565b905092915050565b610b1881610920565b8114610b22575f5ffd5b50565b5f81359050610b3381610b0f565b92915050565b5f60208284031215610b4e57610b4d610869565b5b5f610b5b84828501610b25565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610bc882610871565b915067ffffffffffffffff8203610be257610be1610b91565b5b60018201905091905056fea164736f6c634300081c000a", } // KeypersetABI is the input ABI used to generate the binding from. // Deprecated: Use KeypersetMetaData.ABI instead. var KeypersetABI = KeypersetMetaData.ABI +// KeypersetBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use KeypersetMetaData.Bin instead. +var KeypersetBin = KeypersetMetaData.Bin + +// DeployKeyperset deploys a new Ethereum contract, binding an instance of Keyperset to it. +func DeployKeyperset(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Keyperset, error) { + parsed, err := KeypersetMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(KeypersetBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Keyperset{KeypersetCaller: KeypersetCaller{contract: contract}, KeypersetTransactor: KeypersetTransactor{contract: contract}, KeypersetFilterer: KeypersetFilterer{contract: contract}}, nil +} + // Keyperset is an auto generated Go binding around an Ethereum contract. type Keyperset struct { KeypersetCaller // Read-only binding to the contract diff --git a/bindings/keypersetmanager/keypersetmanager.go b/bindings/keypersetmanager/keypersetmanager.go index a785bd7..5d9615e 100644 --- a/bindings/keypersetmanager/keypersetmanager.go +++ b/bindings/keypersetmanager/keypersetmanager.go @@ -32,12 +32,34 @@ var ( // KeypersetmanagerMetaData contains all meta data concerning the Keypersetmanager contract. var KeypersetmanagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"initializer\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addKeyperSet\",\"inputs\":[{\"name\":\"activationBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"keyperSetContract\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getKeyperSetActivationBlock\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getKeyperSetAddress\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getKeyperSetIndexByBlock\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNumKeyperSets\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pauser\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializer\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"KeyperSetAdded\",\"inputs\":[{\"name\":\"activationBlock\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"keyperSetContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"members\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"},{\"name\":\"threshold\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"eon\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"KeyperSetAdded\",\"inputs\":[{\"name\":\"activationSlot\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"keyperSetContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AlreadyHaveKeyperSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlreadyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyperSetNotFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoActiveKeyperSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedInitializer\",\"inputs\":[]}]", + Bin: "0x608060405234801561000f575f5ffd5b506040516118e73803806118e7833981810160405281019061003191906100d7565b80806001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610102565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a68261007d565b9050919050565b6100b68161009c565b81146100c0575f5ffd5b50565b5f815190506100d1816100ad565b92915050565b5f602082840312156100ec576100eb610079565b5b5f6100f9848285016100c3565b91505092915050565b6117d88061010f5f395ff3fe608060405234801561000f575f5ffd5b5060043610610114575f3560e01c80638456cb59116100a0578063d3877c431161006f578063d3877c43146102ca578063d547741f146102e6578063e63ab1e914610302578063f2e6100a14610320578063f90f3bed1461033e57610114565b80638456cb591461025457806391d148541461025e5780639ce110d71461028e578063a217fddf146102ac57610114565b806336568abe116100e757806336568abe146101c45780633f4ba83a146101e0578063485cc955146101ea5780635c975abb14610206578063636df9791461022457610114565b806301ffc9a714610118578063035cef1514610148578063248a9ca3146101785780632f2ff15d146101a8575b5f5ffd5b610132600480360381019061012d91906110b6565b61036e565b60405161013f91906110fb565b60405180910390f35b610162600480360381019061015d9190611151565b6103e7565b60405161016f919061118b565b60405180910390f35b610192600480360381019061018d91906111d7565b6104b2565b60405161019f9190611211565b60405180910390f35b6101c260048036038101906101bd9190611284565b6104ce565b005b6101de60048036038101906101d99190611284565b6104f0565b005b6101e861056b565b005b61020460048036038101906101ff91906112c2565b610582565b005b61020e610708565b60405161021b91906110fb565b60405180910390f35b61023e60048036038101906102399190611151565b61071d565b60405161024b919061118b565b60405180910390f35b61025c610761565b005b61027860048036038101906102739190611284565b610796565b60405161028591906110fb565b60405180910390f35b6102966107f9565b6040516102a3919061130f565b60405180910390f35b6102b461081d565b6040516102c19190611211565b60405180910390f35b6102e460048036038101906102df9190611328565b610823565b005b61030060048036038101906102fb9190611284565b610b89565b005b61030a610bab565b6040516103179190611211565b60405180910390f35b610328610bcf565b604051610335919061118b565b60405180910390f35b61035860048036038101906103539190611151565b610bdb565b604051610365919061130f565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e057506103df82610c2c565b5b9050919050565b5f5f60028054905090505b5f81111561047a578267ffffffffffffffff166002600183610414919061139c565b81548110610425576104246113cf565b5b905f5260205f20015f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16116104675760018161045f919061139c565b9150506104ad565b8080610472906113fc565b9150506103f2565b506040517fcf93fa3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f5f5f8381526020019081526020015f20600101549050919050565b6104d7826104b2565b6104e081610c95565b6104ea8383610ca9565b50505050565b6104f8610d92565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461055c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105668282610d99565b505050565b5f5f1b61057781610c95565b61057f610e82565b50565b5f73ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610607576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461068c576040517f0d622feb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106985f5f1b83610ca9565b506106c37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610ca9565b505f6001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f60015f9054906101000a900460ff16905090565b5f60028267ffffffffffffffff168154811061073c5761073b6113cf565b5b905f5260205f20015f015f9054906101000a900467ffffffffffffffff169050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61078b81610c95565b610793610ee3565b50565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f1b81565b5f5f1b61082f81610c95565b5f6002805490501180156108ad57506108a060026001600280549050610855919061139c565b81548110610866576108656113cf565b5b905f5260205f20015f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1660014361089b9190611423565b610f44565b8367ffffffffffffffff16105b156108e4576040517fc396e95600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16638d4e40836040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109519190611480565b610987576040517feac631aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260405180604001604052808567ffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506020820151815f0160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505f8290507fa940387dac06ebd336730f1d14b21629a9d137069a9137e871f95313e101016584848373ffffffffffffffffffffffffffffffffffffffff16639eab52536040518163ffffffff1660e01b81526004015f60405180830381865afa158015610ac3573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610aeb919061160f565b8473ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b34573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b58919061166a565b6001600280549050610b6a919061139c565b604051610b7b95949392919061174c565b60405180910390a150505050565b610b92826104b2565b610b9b81610c95565b610ba58383610d99565b50505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b5f600280549050905090565b5f60028267ffffffffffffffff1681548110610bfa57610bf96113cf565b5b905f5260205f20015f0160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610ca681610ca1610d92565b610f5a565b50565b5f610cb48383610796565b610d885760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610d25610d92565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610d8c565b5f90505b92915050565b5f33905090565b5f610da48383610796565b15610e78575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610e15610d92565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050610e7c565b5f90505b92915050565b610e8a610fab565b5f60015f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610ecc610d92565b604051610ed9919061130f565b60405180910390a1565b610eeb610feb565b6001805f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f2d610d92565b604051610f3a919061130f565b60405180910390a1565b5f610f52828411848461102c565b905092915050565b610f648282610796565b610fa75780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610f9e9291906117a4565b60405180910390fd5b5050565b610fb3610708565b610fe9576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610ff3610708565b1561102a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f61103684611045565b82841802821890509392505050565b5f8115159050919050565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61109581611061565b811461109f575f5ffd5b50565b5f813590506110b08161108c565b92915050565b5f602082840312156110cb576110ca611059565b5b5f6110d8848285016110a2565b91505092915050565b5f8115159050919050565b6110f5816110e1565b82525050565b5f60208201905061110e5f8301846110ec565b92915050565b5f67ffffffffffffffff82169050919050565b61113081611114565b811461113a575f5ffd5b50565b5f8135905061114b81611127565b92915050565b5f6020828403121561116657611165611059565b5b5f6111738482850161113d565b91505092915050565b61118581611114565b82525050565b5f60208201905061119e5f83018461117c565b92915050565b5f819050919050565b6111b6816111a4565b81146111c0575f5ffd5b50565b5f813590506111d1816111ad565b92915050565b5f602082840312156111ec576111eb611059565b5b5f6111f9848285016111c3565b91505092915050565b61120b816111a4565b82525050565b5f6020820190506112245f830184611202565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f5ffd5b50565b5f8135905061127e8161125a565b92915050565b5f5f6040838503121561129a57611299611059565b5b5f6112a7858286016111c3565b92505060206112b885828601611270565b9150509250929050565b5f5f604083850312156112d8576112d7611059565b5b5f6112e585828601611270565b92505060206112f685828601611270565b9150509250929050565b61130981611249565b82525050565b5f6020820190506113225f830184611300565b92915050565b5f5f6040838503121561133e5761133d611059565b5b5f61134b8582860161113d565b925050602061135c85828601611270565b9150509250929050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6113a682611366565b91506113b183611366565b92508282039050818111156113c9576113c861136f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61140682611366565b91505f82036114185761141761136f565b5b600182039050919050565b5f61142d82611366565b915061143883611366565b92508282019050808211156114505761144f61136f565b5b92915050565b61145f816110e1565b8114611469575f5ffd5b50565b5f8151905061147a81611456565b92915050565b5f6020828403121561149557611494611059565b5b5f6114a28482850161146c565b91505092915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6114f5826114af565b810181811067ffffffffffffffff82111715611514576115136114bf565b5b80604052505050565b5f611526611050565b905061153282826114ec565b919050565b5f67ffffffffffffffff821115611551576115506114bf565b5b602082029050602081019050919050565b5f5ffd5b5f815190506115748161125a565b92915050565b5f61158c61158784611537565b61151d565b905080838252602082019050602084028301858111156115af576115ae611562565b5b835b818110156115d857806115c48882611566565b8452602084019350506020810190506115b1565b5050509392505050565b5f82601f8301126115f6576115f56114ab565b5b815161160684826020860161157a565b91505092915050565b5f6020828403121561162457611623611059565b5b5f82015167ffffffffffffffff8111156116415761164061105d565b5b61164d848285016115e2565b91505092915050565b5f8151905061166481611127565b92915050565b5f6020828403121561167f5761167e611059565b5b5f61168c84828501611656565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116c781611249565b82525050565b5f6116d883836116be565b60208301905092915050565b5f602082019050919050565b5f6116fa82611695565b611704818561169f565b935061170f836116af565b805f5b8381101561173f57815161172688826116cd565b9750611731836116e4565b925050600181019050611712565b5085935050505092915050565b5f60a08201905061175f5f83018861117c565b61176c6020830187611300565b818103604083015261177e81866116f0565b905061178d606083018561117c565b61179a608083018461117c565b9695505050505050565b5f6040820190506117b75f830185611300565b6117c46020830184611202565b939250505056fea164736f6c634300081c000a", } // KeypersetmanagerABI is the input ABI used to generate the binding from. // Deprecated: Use KeypersetmanagerMetaData.ABI instead. var KeypersetmanagerABI = KeypersetmanagerMetaData.ABI +// KeypersetmanagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use KeypersetmanagerMetaData.Bin instead. +var KeypersetmanagerBin = KeypersetmanagerMetaData.Bin + +// DeployKeypersetmanager deploys a new Ethereum contract, binding an instance of Keypersetmanager to it. +func DeployKeypersetmanager(auth *bind.TransactOpts, backend bind.ContractBackend, initializer common.Address) (common.Address, *types.Transaction, *Keypersetmanager, error) { + parsed, err := KeypersetmanagerMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(KeypersetmanagerBin), backend, initializer) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Keypersetmanager{KeypersetmanagerCaller: KeypersetmanagerCaller{contract: contract}, KeypersetmanagerTransactor: KeypersetmanagerTransactor{contract: contract}, KeypersetmanagerFilterer: KeypersetmanagerFilterer{contract: contract}}, nil +} + // Keypersetmanager is an auto generated Go binding around an Ethereum contract. type Keypersetmanager struct { KeypersetmanagerCaller // Read-only binding to the contract diff --git a/bindings/sequencer/sequencer.go b/bindings/sequencer/sequencer.go index 237c558..ee3b536 100644 --- a/bindings/sequencer/sequencer.go +++ b/bindings/sequencer/sequencer.go @@ -32,12 +32,34 @@ var ( // SequencerMetaData contains all meta data concerning the Sequencer contract. var SequencerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"getTxCountForEon\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitDecryptionProgress\",\"inputs\":[{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitEncryptedTransaction\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"identityPrefix\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"encryptedTransaction\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"DecryptionProgressSubmitted\",\"inputs\":[{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransactionSubmitted\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"txIndex\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"identityPrefix\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"encryptedTransaction\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InsufficientFee\",\"inputs\":[]}]", + Bin: "0x6080604052348015600e575f5ffd5b506107528061001c5f395ff3fe608060405260043610610033575f3560e01c80632d32522e146100375780636a69d2e11461005f5780637bbd164b1461007b575b5f5ffd5b348015610042575f5ffd5b5061005d6004803603810190610058919061039c565b6100b7565b005b61007960048036038101906100749190610486565b6100f1565b005b348015610086575f5ffd5b506100a1600480360381019061009c9190610506565b61020f565b6040516100ae9190610540565b60405180910390f35b7fa9a0645b33a70f18b8d490681d637cb46a859ec51707787e6f46b942f90e8f59816040516100e691906105b9565b60405180910390a150565b80486100fd9190610606565b341015610136576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f8667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f9054906101000a900467ffffffffffffffff16905060018161017e9190610647565b5f5f8767ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fa7f1b5467be46c45249fb93063cceef96c63ddad03819246bc7770e32d4f5b7d858286338787604051610200969594939291906106df565b60405180910390a15050505050565b5f5f5f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f9054906101000a900467ffffffffffffffff169050919050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6102ae82610268565b810181811067ffffffffffffffff821117156102cd576102cc610278565b5b80604052505050565b5f6102df61024f565b90506102eb82826102a5565b919050565b5f67ffffffffffffffff82111561030a57610309610278565b5b61031382610268565b9050602081019050919050565b828183375f83830152505050565b5f61034061033b846102f0565b6102d6565b90508281526020810184848401111561035c5761035b610264565b5b610367848285610320565b509392505050565b5f82601f83011261038357610382610260565b5b813561039384826020860161032e565b91505092915050565b5f602082840312156103b1576103b0610258565b5b5f82013567ffffffffffffffff8111156103ce576103cd61025c565b5b6103da8482850161036f565b91505092915050565b5f67ffffffffffffffff82169050919050565b6103ff816103e3565b8114610409575f5ffd5b50565b5f8135905061041a816103f6565b92915050565b5f819050919050565b61043281610420565b811461043c575f5ffd5b50565b5f8135905061044d81610429565b92915050565b5f819050919050565b61046581610453565b811461046f575f5ffd5b50565b5f813590506104808161045c565b92915050565b5f5f5f5f6080858703121561049e5761049d610258565b5b5f6104ab8782880161040c565b94505060206104bc8782880161043f565b935050604085013567ffffffffffffffff8111156104dd576104dc61025c565b5b6104e98782880161036f565b92505060606104fa87828801610472565b91505092959194509250565b5f6020828403121561051b5761051a610258565b5b5f6105288482850161040c565b91505092915050565b61053a816103e3565b82525050565b5f6020820190506105535f830184610531565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61058b82610559565b6105958185610563565b93506105a5818560208601610573565b6105ae81610268565b840191505092915050565b5f6020820190508181035f8301526105d18184610581565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61061082610453565b915061061b83610453565b925082820261062981610453565b915082820484148315176106405761063f6105d9565b5b5092915050565b5f610651826103e3565b915061065c836103e3565b9250828201905067ffffffffffffffff81111561067c5761067b6105d9565b5b92915050565b61068b81610420565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106ba82610691565b9050919050565b6106ca816106b0565b82525050565b6106d981610453565b82525050565b5f60c0820190506106f25f830189610531565b6106ff6020830188610531565b61070c6040830187610682565b61071960608301866106c1565b818103608083015261072b8185610581565b905061073a60a08301846106d0565b97965050505050505056fea164736f6c634300081c000a", } // SequencerABI is the input ABI used to generate the binding from. // Deprecated: Use SequencerMetaData.ABI instead. var SequencerABI = SequencerMetaData.ABI +// SequencerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SequencerMetaData.Bin instead. +var SequencerBin = SequencerMetaData.Bin + +// DeploySequencer deploys a new Ethereum contract, binding an instance of Sequencer to it. +func DeploySequencer(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Sequencer, error) { + parsed, err := SequencerMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SequencerBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Sequencer{SequencerCaller: SequencerCaller{contract: contract}, SequencerTransactor: SequencerTransactor{contract: contract}, SequencerFilterer: SequencerFilterer{contract: contract}}, nil +} + // Sequencer is an auto generated Go binding around an Ethereum contract. type Sequencer struct { SequencerCaller // Read-only binding to the contract diff --git a/bindings/shuttereventtriggerregistry/shuttereventtriggerregistry.go b/bindings/shuttereventtriggerregistry/shuttereventtriggerregistry.go new file mode 100644 index 0000000..50e6b4f --- /dev/null +++ b/bindings/shuttereventtriggerregistry/shuttereventtriggerregistry.go @@ -0,0 +1,648 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package shuttereventtriggerregistry + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ShuttereventtriggerregistryMetaData contains all meta data concerning the Shuttereventtriggerregistry contract. +var ShuttereventtriggerregistryMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"register\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"identityPrefix\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"triggerDefinition\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"ttl\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registrations\",\"inputs\":[{\"name\":\"identity\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"ttl\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"triggerDefinitionHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"EventTriggerRegistered\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"identityPrefix\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"triggerDefinition\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"ttl\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidIdentityPrefix\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"TTLTooShort\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TimestampInThePast\",\"inputs\":[]}]", + Bin: "0x608060405234801561000f575f5ffd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610081575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100789190610196565b60405180910390fd5b6100908161009660201b60201c565b506101af565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61018082610157565b9050919050565b61019081610176565b82525050565b5f6020820190506101a95f830184610187565b92915050565b610a94806101bc5f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c8063715018a6146100595780638da5cb5b14610063578063d48b6d1e14610081578063da7c6a421461009d578063f2fde38b146100cf575b5f5ffd5b6100616100eb565b005b61006b6100fe565b6040516100789190610604565b60405180910390f35b61009b600480360381019061009691906107da565b610125565b005b6100b760048036038101906100b2919061085a565b6103a6565b6040516100c6939291906108a3565b60405180910390f35b6100e960048036038101906100e49190610902565b6103f2565b005b6100f3610476565b6100fc5f6104fd565b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b438167ffffffffffffffff161015610169576040517f84f8e55900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f1b83036101a4576040517f63a4021d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83336040516020016101b8929190610992565b6040516020818303038152906040528051906020012090505f60015f8381526020019081526020015f2090505f815f0160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16146102d4578267ffffffffffffffff16815f0160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1610610270576040517fb5f2184000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060010154846040516020016102869190610a1d565b60405160208183030381529060405280519060200120146102d3576040517f3a81d6fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b82815f0160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555085815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836040516020016103389190610a1d565b6040516020818303038152906040528051906020012081600101819055508567ffffffffffffffff167f06809c10c5d53027eb51ca4ec6da8fbfd54d79f41cdefaab2cb142d10b039db5863387876040516103969493929190610a3d565b60405180910390a2505050505050565b6001602052805f5260405f205f91509050805f015f9054906101000a900467ffffffffffffffff1690805f0160089054906101000a900467ffffffffffffffff16908060010154905083565b6103fa610476565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361046a575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016104619190610604565b60405180910390fd5b610473816104fd565b50565b61047e6105be565b73ffffffffffffffffffffffffffffffffffffffff1661049c6100fe565b73ffffffffffffffffffffffffffffffffffffffff16146104fb576104bf6105be565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016104f29190610604565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6105ee826105c5565b9050919050565b6105fe816105e4565b82525050565b5f6020820190506106175f8301846105f5565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff82169050919050565b61064a8161062e565b8114610654575f5ffd5b50565b5f8135905061066581610641565b92915050565b5f819050919050565b61067d8161066b565b8114610687575f5ffd5b50565b5f8135905061069881610674565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6106ec826106a6565b810181811067ffffffffffffffff8211171561070b5761070a6106b6565b5b80604052505050565b5f61071d61061d565b905061072982826106e3565b919050565b5f67ffffffffffffffff821115610748576107476106b6565b5b610751826106a6565b9050602081019050919050565b828183375f83830152505050565b5f61077e6107798461072e565b610714565b90508281526020810184848401111561079a576107996106a2565b5b6107a584828561075e565b509392505050565b5f82601f8301126107c1576107c061069e565b5b81356107d184826020860161076c565b91505092915050565b5f5f5f5f608085870312156107f2576107f1610626565b5b5f6107ff87828801610657565b94505060206108108782880161068a565b935050604085013567ffffffffffffffff8111156108315761083061062a565b5b61083d878288016107ad565b925050606061084e87828801610657565b91505092959194509250565b5f6020828403121561086f5761086e610626565b5b5f61087c8482850161068a565b91505092915050565b61088e8161062e565b82525050565b61089d8161066b565b82525050565b5f6060820190506108b65f830186610885565b6108c36020830185610885565b6108d06040830184610894565b949350505050565b6108e1816105e4565b81146108eb575f5ffd5b50565b5f813590506108fc816108d8565b92915050565b5f6020828403121561091757610916610626565b5b5f610924848285016108ee565b91505092915050565b5f819050919050565b6109476109428261066b565b61092d565b82525050565b5f8160601b9050919050565b5f6109638261094d565b9050919050565b5f61097482610959565b9050919050565b61098c610987826105e4565b61096a565b82525050565b5f61099d8285610936565b6020820191506109ad828461097b565b6014820191508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6109ef826109bd565b6109f981856109c7565b9350610a098185602086016109d7565b610a12816106a6565b840191505092915050565b5f6020820190508181035f830152610a3581846109e5565b905092915050565b5f608082019050610a505f830187610894565b610a5d60208301866105f5565b8181036040830152610a6f81856109e5565b9050610a7e6060830184610885565b9594505050505056fea164736f6c634300081c000a", +} + +// ShuttereventtriggerregistryABI is the input ABI used to generate the binding from. +// Deprecated: Use ShuttereventtriggerregistryMetaData.ABI instead. +var ShuttereventtriggerregistryABI = ShuttereventtriggerregistryMetaData.ABI + +// ShuttereventtriggerregistryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ShuttereventtriggerregistryMetaData.Bin instead. +var ShuttereventtriggerregistryBin = ShuttereventtriggerregistryMetaData.Bin + +// DeployShuttereventtriggerregistry deploys a new Ethereum contract, binding an instance of Shuttereventtriggerregistry to it. +func DeployShuttereventtriggerregistry(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Shuttereventtriggerregistry, error) { + parsed, err := ShuttereventtriggerregistryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ShuttereventtriggerregistryBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Shuttereventtriggerregistry{ShuttereventtriggerregistryCaller: ShuttereventtriggerregistryCaller{contract: contract}, ShuttereventtriggerregistryTransactor: ShuttereventtriggerregistryTransactor{contract: contract}, ShuttereventtriggerregistryFilterer: ShuttereventtriggerregistryFilterer{contract: contract}}, nil +} + +// Shuttereventtriggerregistry is an auto generated Go binding around an Ethereum contract. +type Shuttereventtriggerregistry struct { + ShuttereventtriggerregistryCaller // Read-only binding to the contract + ShuttereventtriggerregistryTransactor // Write-only binding to the contract + ShuttereventtriggerregistryFilterer // Log filterer for contract events +} + +// ShuttereventtriggerregistryCaller is an auto generated read-only Go binding around an Ethereum contract. +type ShuttereventtriggerregistryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ShuttereventtriggerregistryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ShuttereventtriggerregistryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ShuttereventtriggerregistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ShuttereventtriggerregistryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ShuttereventtriggerregistrySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ShuttereventtriggerregistrySession struct { + Contract *Shuttereventtriggerregistry // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ShuttereventtriggerregistryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ShuttereventtriggerregistryCallerSession struct { + Contract *ShuttereventtriggerregistryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ShuttereventtriggerregistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ShuttereventtriggerregistryTransactorSession struct { + Contract *ShuttereventtriggerregistryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ShuttereventtriggerregistryRaw is an auto generated low-level Go binding around an Ethereum contract. +type ShuttereventtriggerregistryRaw struct { + Contract *Shuttereventtriggerregistry // Generic contract binding to access the raw methods on +} + +// ShuttereventtriggerregistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ShuttereventtriggerregistryCallerRaw struct { + Contract *ShuttereventtriggerregistryCaller // Generic read-only contract binding to access the raw methods on +} + +// ShuttereventtriggerregistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ShuttereventtriggerregistryTransactorRaw struct { + Contract *ShuttereventtriggerregistryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewShuttereventtriggerregistry creates a new instance of Shuttereventtriggerregistry, bound to a specific deployed contract. +func NewShuttereventtriggerregistry(address common.Address, backend bind.ContractBackend) (*Shuttereventtriggerregistry, error) { + contract, err := bindShuttereventtriggerregistry(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Shuttereventtriggerregistry{ShuttereventtriggerregistryCaller: ShuttereventtriggerregistryCaller{contract: contract}, ShuttereventtriggerregistryTransactor: ShuttereventtriggerregistryTransactor{contract: contract}, ShuttereventtriggerregistryFilterer: ShuttereventtriggerregistryFilterer{contract: contract}}, nil +} + +// NewShuttereventtriggerregistryCaller creates a new read-only instance of Shuttereventtriggerregistry, bound to a specific deployed contract. +func NewShuttereventtriggerregistryCaller(address common.Address, caller bind.ContractCaller) (*ShuttereventtriggerregistryCaller, error) { + contract, err := bindShuttereventtriggerregistry(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ShuttereventtriggerregistryCaller{contract: contract}, nil +} + +// NewShuttereventtriggerregistryTransactor creates a new write-only instance of Shuttereventtriggerregistry, bound to a specific deployed contract. +func NewShuttereventtriggerregistryTransactor(address common.Address, transactor bind.ContractTransactor) (*ShuttereventtriggerregistryTransactor, error) { + contract, err := bindShuttereventtriggerregistry(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ShuttereventtriggerregistryTransactor{contract: contract}, nil +} + +// NewShuttereventtriggerregistryFilterer creates a new log filterer instance of Shuttereventtriggerregistry, bound to a specific deployed contract. +func NewShuttereventtriggerregistryFilterer(address common.Address, filterer bind.ContractFilterer) (*ShuttereventtriggerregistryFilterer, error) { + contract, err := bindShuttereventtriggerregistry(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ShuttereventtriggerregistryFilterer{contract: contract}, nil +} + +// bindShuttereventtriggerregistry binds a generic wrapper to an already deployed contract. +func bindShuttereventtriggerregistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ShuttereventtriggerregistryMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Shuttereventtriggerregistry.Contract.ShuttereventtriggerregistryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.Contract.ShuttereventtriggerregistryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.Contract.ShuttereventtriggerregistryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Shuttereventtriggerregistry.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Shuttereventtriggerregistry.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistrySession) Owner() (common.Address, error) { + return _Shuttereventtriggerregistry.Contract.Owner(&_Shuttereventtriggerregistry.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryCallerSession) Owner() (common.Address, error) { + return _Shuttereventtriggerregistry.Contract.Owner(&_Shuttereventtriggerregistry.CallOpts) +} + +// Registrations is a free data retrieval call binding the contract method 0xda7c6a42. +// +// Solidity: function registrations(bytes32 identity) view returns(uint64 eon, uint64 ttl, bytes32 triggerDefinitionHash) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryCaller) Registrations(opts *bind.CallOpts, identity [32]byte) (struct { + Eon uint64 + Ttl uint64 + TriggerDefinitionHash [32]byte +}, error) { + var out []interface{} + err := _Shuttereventtriggerregistry.contract.Call(opts, &out, "registrations", identity) + + outstruct := new(struct { + Eon uint64 + Ttl uint64 + TriggerDefinitionHash [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.Eon = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.Ttl = *abi.ConvertType(out[1], new(uint64)).(*uint64) + outstruct.TriggerDefinitionHash = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// Registrations is a free data retrieval call binding the contract method 0xda7c6a42. +// +// Solidity: function registrations(bytes32 identity) view returns(uint64 eon, uint64 ttl, bytes32 triggerDefinitionHash) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistrySession) Registrations(identity [32]byte) (struct { + Eon uint64 + Ttl uint64 + TriggerDefinitionHash [32]byte +}, error) { + return _Shuttereventtriggerregistry.Contract.Registrations(&_Shuttereventtriggerregistry.CallOpts, identity) +} + +// Registrations is a free data retrieval call binding the contract method 0xda7c6a42. +// +// Solidity: function registrations(bytes32 identity) view returns(uint64 eon, uint64 ttl, bytes32 triggerDefinitionHash) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryCallerSession) Registrations(identity [32]byte) (struct { + Eon uint64 + Ttl uint64 + TriggerDefinitionHash [32]byte +}, error) { + return _Shuttereventtriggerregistry.Contract.Registrations(&_Shuttereventtriggerregistry.CallOpts, identity) +} + +// Register is a paid mutator transaction binding the contract method 0xd48b6d1e. +// +// Solidity: function register(uint64 eon, bytes32 identityPrefix, bytes triggerDefinition, uint64 ttl) returns() +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryTransactor) Register(opts *bind.TransactOpts, eon uint64, identityPrefix [32]byte, triggerDefinition []byte, ttl uint64) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.contract.Transact(opts, "register", eon, identityPrefix, triggerDefinition, ttl) +} + +// Register is a paid mutator transaction binding the contract method 0xd48b6d1e. +// +// Solidity: function register(uint64 eon, bytes32 identityPrefix, bytes triggerDefinition, uint64 ttl) returns() +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistrySession) Register(eon uint64, identityPrefix [32]byte, triggerDefinition []byte, ttl uint64) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.Contract.Register(&_Shuttereventtriggerregistry.TransactOpts, eon, identityPrefix, triggerDefinition, ttl) +} + +// Register is a paid mutator transaction binding the contract method 0xd48b6d1e. +// +// Solidity: function register(uint64 eon, bytes32 identityPrefix, bytes triggerDefinition, uint64 ttl) returns() +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryTransactorSession) Register(eon uint64, identityPrefix [32]byte, triggerDefinition []byte, ttl uint64) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.Contract.Register(&_Shuttereventtriggerregistry.TransactOpts, eon, identityPrefix, triggerDefinition, ttl) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistrySession) RenounceOwnership() (*types.Transaction, error) { + return _Shuttereventtriggerregistry.Contract.RenounceOwnership(&_Shuttereventtriggerregistry.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Shuttereventtriggerregistry.Contract.RenounceOwnership(&_Shuttereventtriggerregistry.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistrySession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.Contract.TransferOwnership(&_Shuttereventtriggerregistry.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Shuttereventtriggerregistry.Contract.TransferOwnership(&_Shuttereventtriggerregistry.TransactOpts, newOwner) +} + +// ShuttereventtriggerregistryEventTriggerRegisteredIterator is returned from FilterEventTriggerRegistered and is used to iterate over the raw logs and unpacked data for EventTriggerRegistered events raised by the Shuttereventtriggerregistry contract. +type ShuttereventtriggerregistryEventTriggerRegisteredIterator struct { + Event *ShuttereventtriggerregistryEventTriggerRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ShuttereventtriggerregistryEventTriggerRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ShuttereventtriggerregistryEventTriggerRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ShuttereventtriggerregistryEventTriggerRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ShuttereventtriggerregistryEventTriggerRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ShuttereventtriggerregistryEventTriggerRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ShuttereventtriggerregistryEventTriggerRegistered represents a EventTriggerRegistered event raised by the Shuttereventtriggerregistry contract. +type ShuttereventtriggerregistryEventTriggerRegistered struct { + Eon uint64 + IdentityPrefix [32]byte + Sender common.Address + TriggerDefinition []byte + Ttl uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEventTriggerRegistered is a free log retrieval operation binding the contract event 0x06809c10c5d53027eb51ca4ec6da8fbfd54d79f41cdefaab2cb142d10b039db5. +// +// Solidity: event EventTriggerRegistered(uint64 indexed eon, bytes32 identityPrefix, address sender, bytes triggerDefinition, uint64 ttl) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryFilterer) FilterEventTriggerRegistered(opts *bind.FilterOpts, eon []uint64) (*ShuttereventtriggerregistryEventTriggerRegisteredIterator, error) { + + var eonRule []interface{} + for _, eonItem := range eon { + eonRule = append(eonRule, eonItem) + } + + logs, sub, err := _Shuttereventtriggerregistry.contract.FilterLogs(opts, "EventTriggerRegistered", eonRule) + if err != nil { + return nil, err + } + return &ShuttereventtriggerregistryEventTriggerRegisteredIterator{contract: _Shuttereventtriggerregistry.contract, event: "EventTriggerRegistered", logs: logs, sub: sub}, nil +} + +// WatchEventTriggerRegistered is a free log subscription operation binding the contract event 0x06809c10c5d53027eb51ca4ec6da8fbfd54d79f41cdefaab2cb142d10b039db5. +// +// Solidity: event EventTriggerRegistered(uint64 indexed eon, bytes32 identityPrefix, address sender, bytes triggerDefinition, uint64 ttl) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryFilterer) WatchEventTriggerRegistered(opts *bind.WatchOpts, sink chan<- *ShuttereventtriggerregistryEventTriggerRegistered, eon []uint64) (event.Subscription, error) { + + var eonRule []interface{} + for _, eonItem := range eon { + eonRule = append(eonRule, eonItem) + } + + logs, sub, err := _Shuttereventtriggerregistry.contract.WatchLogs(opts, "EventTriggerRegistered", eonRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ShuttereventtriggerregistryEventTriggerRegistered) + if err := _Shuttereventtriggerregistry.contract.UnpackLog(event, "EventTriggerRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEventTriggerRegistered is a log parse operation binding the contract event 0x06809c10c5d53027eb51ca4ec6da8fbfd54d79f41cdefaab2cb142d10b039db5. +// +// Solidity: event EventTriggerRegistered(uint64 indexed eon, bytes32 identityPrefix, address sender, bytes triggerDefinition, uint64 ttl) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryFilterer) ParseEventTriggerRegistered(log types.Log) (*ShuttereventtriggerregistryEventTriggerRegistered, error) { + event := new(ShuttereventtriggerregistryEventTriggerRegistered) + if err := _Shuttereventtriggerregistry.contract.UnpackLog(event, "EventTriggerRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ShuttereventtriggerregistryOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Shuttereventtriggerregistry contract. +type ShuttereventtriggerregistryOwnershipTransferredIterator struct { + Event *ShuttereventtriggerregistryOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ShuttereventtriggerregistryOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ShuttereventtriggerregistryOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ShuttereventtriggerregistryOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ShuttereventtriggerregistryOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ShuttereventtriggerregistryOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ShuttereventtriggerregistryOwnershipTransferred represents a OwnershipTransferred event raised by the Shuttereventtriggerregistry contract. +type ShuttereventtriggerregistryOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ShuttereventtriggerregistryOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Shuttereventtriggerregistry.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ShuttereventtriggerregistryOwnershipTransferredIterator{contract: _Shuttereventtriggerregistry.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ShuttereventtriggerregistryOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Shuttereventtriggerregistry.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ShuttereventtriggerregistryOwnershipTransferred) + if err := _Shuttereventtriggerregistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Shuttereventtriggerregistry *ShuttereventtriggerregistryFilterer) ParseOwnershipTransferred(log types.Log) (*ShuttereventtriggerregistryOwnershipTransferred, error) { + event := new(ShuttereventtriggerregistryOwnershipTransferred) + if err := _Shuttereventtriggerregistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/bindings/shuttereventtriggerregistryv1/shuttereventtriggerregistryv1.go b/bindings/shuttereventtriggerregistryv1/shuttereventtriggerregistryv1.go new file mode 100644 index 0000000..57ddd86 --- /dev/null +++ b/bindings/shuttereventtriggerregistryv1/shuttereventtriggerregistryv1.go @@ -0,0 +1,753 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package shuttereventtriggerregistryv1 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// Shuttereventtriggerregistryv1MetaData contains all meta data concerning the Shuttereventtriggerregistryv1 contract. +var Shuttereventtriggerregistryv1MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"register\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"identityPrefix\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"triggerDefinition\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"ttl\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"EventTriggerRegistered\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"identityPrefix\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"triggerDefinition\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"expirationBlockNumber\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x6080604052348015600e575f5ffd5b50610aaa8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c8063715018a6146100595780638129fc1c146100635780638da5cb5b1461006d578063d48b6d1e1461008b578063f2fde38b146100a7575b5f5ffd5b6100616100c3565b005b61006b6100d6565b005b610075610256565b6040516100829190610667565b60405180910390f35b6100a560048036038101906100a0919061083d565b61028b565b005b6100c160048036038101906100bc91906108e7565b6102ec565b005b6100cb610370565b6100d45f6103f7565b565b5f6100df6104c8565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff161480156101275750825b90505f60018367ffffffffffffffff1614801561015a57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610168575080155b1561019f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156101ec576001855f0160086101000a81548160ff0219169083151502179055505b6101f5336104db565b831561024f575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516102469190610954565b60405180910390a15b5050505050565b5f5f6102606104ef565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b610293610370565b8367ffffffffffffffff167f06809c10c5d53027eb51ca4ec6da8fbfd54d79f41cdefaab2cb142d10b039db584338585436102ce919061099a565b6040516102de9493929190610a53565b60405180910390a250505050565b6102f4610370565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610364575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161035b9190610667565b60405180910390fd5b61036d816103f7565b50565b610378610516565b73ffffffffffffffffffffffffffffffffffffffff16610396610256565b73ffffffffffffffffffffffffffffffffffffffff16146103f5576103b9610516565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016103ec9190610667565b60405180910390fd5b565b5f6104006104ef565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f5f6104d261051d565b90508091505090565b6104e3610546565b6104ec81610586565b50565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f33905090565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005f1b905090565b61054e61060a565b610584576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61058e610546565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105fe575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016105f59190610667565b60405180910390fd5b610607816103f7565b50565b5f6106136104c8565b5f0160089054906101000a900460ff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61065182610628565b9050919050565b61066181610647565b82525050565b5f60208201905061067a5f830184610658565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff82169050919050565b6106ad81610691565b81146106b7575f5ffd5b50565b5f813590506106c8816106a4565b92915050565b5f819050919050565b6106e0816106ce565b81146106ea575f5ffd5b50565b5f813590506106fb816106d7565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61074f82610709565b810181811067ffffffffffffffff8211171561076e5761076d610719565b5b80604052505050565b5f610780610680565b905061078c8282610746565b919050565b5f67ffffffffffffffff8211156107ab576107aa610719565b5b6107b482610709565b9050602081019050919050565b828183375f83830152505050565b5f6107e16107dc84610791565b610777565b9050828152602081018484840111156107fd576107fc610705565b5b6108088482856107c1565b509392505050565b5f82601f83011261082457610823610701565b5b81356108348482602086016107cf565b91505092915050565b5f5f5f5f6080858703121561085557610854610689565b5b5f610862878288016106ba565b9450506020610873878288016106ed565b935050604085013567ffffffffffffffff8111156108945761089361068d565b5b6108a087828801610810565b92505060606108b1878288016106ba565b91505092959194509250565b6108c681610647565b81146108d0575f5ffd5b50565b5f813590506108e1816108bd565b92915050565b5f602082840312156108fc576108fb610689565b5b5f610909848285016108d3565b91505092915050565b5f819050919050565b5f819050919050565b5f61093e61093961093484610912565b61091b565b610691565b9050919050565b61094e81610924565b82525050565b5f6020820190506109675f830184610945565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6109a482610691565b91506109af83610691565b9250828201905067ffffffffffffffff8111156109cf576109ce61096d565b5b92915050565b6109de816106ce565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610a16826109e4565b610a2081856109ee565b9350610a308185602086016109fe565b610a3981610709565b840191505092915050565b610a4d81610691565b82525050565b5f608082019050610a665f8301876109d5565b610a736020830186610658565b8181036040830152610a858185610a0c565b9050610a946060830184610a44565b9594505050505056fea164736f6c634300081c000a", +} + +// Shuttereventtriggerregistryv1ABI is the input ABI used to generate the binding from. +// Deprecated: Use Shuttereventtriggerregistryv1MetaData.ABI instead. +var Shuttereventtriggerregistryv1ABI = Shuttereventtriggerregistryv1MetaData.ABI + +// Shuttereventtriggerregistryv1Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use Shuttereventtriggerregistryv1MetaData.Bin instead. +var Shuttereventtriggerregistryv1Bin = Shuttereventtriggerregistryv1MetaData.Bin + +// DeployShuttereventtriggerregistryv1 deploys a new Ethereum contract, binding an instance of Shuttereventtriggerregistryv1 to it. +func DeployShuttereventtriggerregistryv1(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Shuttereventtriggerregistryv1, error) { + parsed, err := Shuttereventtriggerregistryv1MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(Shuttereventtriggerregistryv1Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Shuttereventtriggerregistryv1{Shuttereventtriggerregistryv1Caller: Shuttereventtriggerregistryv1Caller{contract: contract}, Shuttereventtriggerregistryv1Transactor: Shuttereventtriggerregistryv1Transactor{contract: contract}, Shuttereventtriggerregistryv1Filterer: Shuttereventtriggerregistryv1Filterer{contract: contract}}, nil +} + +// Shuttereventtriggerregistryv1 is an auto generated Go binding around an Ethereum contract. +type Shuttereventtriggerregistryv1 struct { + Shuttereventtriggerregistryv1Caller // Read-only binding to the contract + Shuttereventtriggerregistryv1Transactor // Write-only binding to the contract + Shuttereventtriggerregistryv1Filterer // Log filterer for contract events +} + +// Shuttereventtriggerregistryv1Caller is an auto generated read-only Go binding around an Ethereum contract. +type Shuttereventtriggerregistryv1Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Shuttereventtriggerregistryv1Transactor is an auto generated write-only Go binding around an Ethereum contract. +type Shuttereventtriggerregistryv1Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Shuttereventtriggerregistryv1Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type Shuttereventtriggerregistryv1Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Shuttereventtriggerregistryv1Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type Shuttereventtriggerregistryv1Session struct { + Contract *Shuttereventtriggerregistryv1 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// Shuttereventtriggerregistryv1CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type Shuttereventtriggerregistryv1CallerSession struct { + Contract *Shuttereventtriggerregistryv1Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// Shuttereventtriggerregistryv1TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type Shuttereventtriggerregistryv1TransactorSession struct { + Contract *Shuttereventtriggerregistryv1Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// Shuttereventtriggerregistryv1Raw is an auto generated low-level Go binding around an Ethereum contract. +type Shuttereventtriggerregistryv1Raw struct { + Contract *Shuttereventtriggerregistryv1 // Generic contract binding to access the raw methods on +} + +// Shuttereventtriggerregistryv1CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type Shuttereventtriggerregistryv1CallerRaw struct { + Contract *Shuttereventtriggerregistryv1Caller // Generic read-only contract binding to access the raw methods on +} + +// Shuttereventtriggerregistryv1TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type Shuttereventtriggerregistryv1TransactorRaw struct { + Contract *Shuttereventtriggerregistryv1Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewShuttereventtriggerregistryv1 creates a new instance of Shuttereventtriggerregistryv1, bound to a specific deployed contract. +func NewShuttereventtriggerregistryv1(address common.Address, backend bind.ContractBackend) (*Shuttereventtriggerregistryv1, error) { + contract, err := bindShuttereventtriggerregistryv1(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Shuttereventtriggerregistryv1{Shuttereventtriggerregistryv1Caller: Shuttereventtriggerregistryv1Caller{contract: contract}, Shuttereventtriggerregistryv1Transactor: Shuttereventtriggerregistryv1Transactor{contract: contract}, Shuttereventtriggerregistryv1Filterer: Shuttereventtriggerregistryv1Filterer{contract: contract}}, nil +} + +// NewShuttereventtriggerregistryv1Caller creates a new read-only instance of Shuttereventtriggerregistryv1, bound to a specific deployed contract. +func NewShuttereventtriggerregistryv1Caller(address common.Address, caller bind.ContractCaller) (*Shuttereventtriggerregistryv1Caller, error) { + contract, err := bindShuttereventtriggerregistryv1(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &Shuttereventtriggerregistryv1Caller{contract: contract}, nil +} + +// NewShuttereventtriggerregistryv1Transactor creates a new write-only instance of Shuttereventtriggerregistryv1, bound to a specific deployed contract. +func NewShuttereventtriggerregistryv1Transactor(address common.Address, transactor bind.ContractTransactor) (*Shuttereventtriggerregistryv1Transactor, error) { + contract, err := bindShuttereventtriggerregistryv1(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &Shuttereventtriggerregistryv1Transactor{contract: contract}, nil +} + +// NewShuttereventtriggerregistryv1Filterer creates a new log filterer instance of Shuttereventtriggerregistryv1, bound to a specific deployed contract. +func NewShuttereventtriggerregistryv1Filterer(address common.Address, filterer bind.ContractFilterer) (*Shuttereventtriggerregistryv1Filterer, error) { + contract, err := bindShuttereventtriggerregistryv1(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &Shuttereventtriggerregistryv1Filterer{contract: contract}, nil +} + +// bindShuttereventtriggerregistryv1 binds a generic wrapper to an already deployed contract. +func bindShuttereventtriggerregistryv1(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := Shuttereventtriggerregistryv1MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Shuttereventtriggerregistryv1.Contract.Shuttereventtriggerregistryv1Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.Shuttereventtriggerregistryv1Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.Shuttereventtriggerregistryv1Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Shuttereventtriggerregistryv1.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Caller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Shuttereventtriggerregistryv1.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Session) Owner() (common.Address, error) { + return _Shuttereventtriggerregistryv1.Contract.Owner(&_Shuttereventtriggerregistryv1.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1CallerSession) Owner() (common.Address, error) { + return _Shuttereventtriggerregistryv1.Contract.Owner(&_Shuttereventtriggerregistryv1.CallOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Transactor) Initialize(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.contract.Transact(opts, "initialize") +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Session) Initialize() (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.Initialize(&_Shuttereventtriggerregistryv1.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1TransactorSession) Initialize() (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.Initialize(&_Shuttereventtriggerregistryv1.TransactOpts) +} + +// Register is a paid mutator transaction binding the contract method 0xd48b6d1e. +// +// Solidity: function register(uint64 eon, bytes32 identityPrefix, bytes triggerDefinition, uint64 ttl) returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Transactor) Register(opts *bind.TransactOpts, eon uint64, identityPrefix [32]byte, triggerDefinition []byte, ttl uint64) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.contract.Transact(opts, "register", eon, identityPrefix, triggerDefinition, ttl) +} + +// Register is a paid mutator transaction binding the contract method 0xd48b6d1e. +// +// Solidity: function register(uint64 eon, bytes32 identityPrefix, bytes triggerDefinition, uint64 ttl) returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Session) Register(eon uint64, identityPrefix [32]byte, triggerDefinition []byte, ttl uint64) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.Register(&_Shuttereventtriggerregistryv1.TransactOpts, eon, identityPrefix, triggerDefinition, ttl) +} + +// Register is a paid mutator transaction binding the contract method 0xd48b6d1e. +// +// Solidity: function register(uint64 eon, bytes32 identityPrefix, bytes triggerDefinition, uint64 ttl) returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1TransactorSession) Register(eon uint64, identityPrefix [32]byte, triggerDefinition []byte, ttl uint64) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.Register(&_Shuttereventtriggerregistryv1.TransactOpts, eon, identityPrefix, triggerDefinition, ttl) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Session) RenounceOwnership() (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.RenounceOwnership(&_Shuttereventtriggerregistryv1.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.RenounceOwnership(&_Shuttereventtriggerregistryv1.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.TransferOwnership(&_Shuttereventtriggerregistryv1.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Shuttereventtriggerregistryv1.Contract.TransferOwnership(&_Shuttereventtriggerregistryv1.TransactOpts, newOwner) +} + +// Shuttereventtriggerregistryv1EventTriggerRegisteredIterator is returned from FilterEventTriggerRegistered and is used to iterate over the raw logs and unpacked data for EventTriggerRegistered events raised by the Shuttereventtriggerregistryv1 contract. +type Shuttereventtriggerregistryv1EventTriggerRegisteredIterator struct { + Event *Shuttereventtriggerregistryv1EventTriggerRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *Shuttereventtriggerregistryv1EventTriggerRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(Shuttereventtriggerregistryv1EventTriggerRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(Shuttereventtriggerregistryv1EventTriggerRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *Shuttereventtriggerregistryv1EventTriggerRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *Shuttereventtriggerregistryv1EventTriggerRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// Shuttereventtriggerregistryv1EventTriggerRegistered represents a EventTriggerRegistered event raised by the Shuttereventtriggerregistryv1 contract. +type Shuttereventtriggerregistryv1EventTriggerRegistered struct { + Eon uint64 + IdentityPrefix [32]byte + Sender common.Address + TriggerDefinition []byte + ExpirationBlockNumber uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEventTriggerRegistered is a free log retrieval operation binding the contract event 0x06809c10c5d53027eb51ca4ec6da8fbfd54d79f41cdefaab2cb142d10b039db5. +// +// Solidity: event EventTriggerRegistered(uint64 indexed eon, bytes32 identityPrefix, address sender, bytes triggerDefinition, uint64 expirationBlockNumber) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Filterer) FilterEventTriggerRegistered(opts *bind.FilterOpts, eon []uint64) (*Shuttereventtriggerregistryv1EventTriggerRegisteredIterator, error) { + + var eonRule []interface{} + for _, eonItem := range eon { + eonRule = append(eonRule, eonItem) + } + + logs, sub, err := _Shuttereventtriggerregistryv1.contract.FilterLogs(opts, "EventTriggerRegistered", eonRule) + if err != nil { + return nil, err + } + return &Shuttereventtriggerregistryv1EventTriggerRegisteredIterator{contract: _Shuttereventtriggerregistryv1.contract, event: "EventTriggerRegistered", logs: logs, sub: sub}, nil +} + +// WatchEventTriggerRegistered is a free log subscription operation binding the contract event 0x06809c10c5d53027eb51ca4ec6da8fbfd54d79f41cdefaab2cb142d10b039db5. +// +// Solidity: event EventTriggerRegistered(uint64 indexed eon, bytes32 identityPrefix, address sender, bytes triggerDefinition, uint64 expirationBlockNumber) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Filterer) WatchEventTriggerRegistered(opts *bind.WatchOpts, sink chan<- *Shuttereventtriggerregistryv1EventTriggerRegistered, eon []uint64) (event.Subscription, error) { + + var eonRule []interface{} + for _, eonItem := range eon { + eonRule = append(eonRule, eonItem) + } + + logs, sub, err := _Shuttereventtriggerregistryv1.contract.WatchLogs(opts, "EventTriggerRegistered", eonRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(Shuttereventtriggerregistryv1EventTriggerRegistered) + if err := _Shuttereventtriggerregistryv1.contract.UnpackLog(event, "EventTriggerRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEventTriggerRegistered is a log parse operation binding the contract event 0x06809c10c5d53027eb51ca4ec6da8fbfd54d79f41cdefaab2cb142d10b039db5. +// +// Solidity: event EventTriggerRegistered(uint64 indexed eon, bytes32 identityPrefix, address sender, bytes triggerDefinition, uint64 expirationBlockNumber) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Filterer) ParseEventTriggerRegistered(log types.Log) (*Shuttereventtriggerregistryv1EventTriggerRegistered, error) { + event := new(Shuttereventtriggerregistryv1EventTriggerRegistered) + if err := _Shuttereventtriggerregistryv1.contract.UnpackLog(event, "EventTriggerRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// Shuttereventtriggerregistryv1InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Shuttereventtriggerregistryv1 contract. +type Shuttereventtriggerregistryv1InitializedIterator struct { + Event *Shuttereventtriggerregistryv1Initialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *Shuttereventtriggerregistryv1InitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(Shuttereventtriggerregistryv1Initialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(Shuttereventtriggerregistryv1Initialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *Shuttereventtriggerregistryv1InitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *Shuttereventtriggerregistryv1InitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// Shuttereventtriggerregistryv1Initialized represents a Initialized event raised by the Shuttereventtriggerregistryv1 contract. +type Shuttereventtriggerregistryv1Initialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Filterer) FilterInitialized(opts *bind.FilterOpts) (*Shuttereventtriggerregistryv1InitializedIterator, error) { + + logs, sub, err := _Shuttereventtriggerregistryv1.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &Shuttereventtriggerregistryv1InitializedIterator{contract: _Shuttereventtriggerregistryv1.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Filterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *Shuttereventtriggerregistryv1Initialized) (event.Subscription, error) { + + logs, sub, err := _Shuttereventtriggerregistryv1.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(Shuttereventtriggerregistryv1Initialized) + if err := _Shuttereventtriggerregistryv1.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Filterer) ParseInitialized(log types.Log) (*Shuttereventtriggerregistryv1Initialized, error) { + event := new(Shuttereventtriggerregistryv1Initialized) + if err := _Shuttereventtriggerregistryv1.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// Shuttereventtriggerregistryv1OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Shuttereventtriggerregistryv1 contract. +type Shuttereventtriggerregistryv1OwnershipTransferredIterator struct { + Event *Shuttereventtriggerregistryv1OwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *Shuttereventtriggerregistryv1OwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(Shuttereventtriggerregistryv1OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(Shuttereventtriggerregistryv1OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *Shuttereventtriggerregistryv1OwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *Shuttereventtriggerregistryv1OwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// Shuttereventtriggerregistryv1OwnershipTransferred represents a OwnershipTransferred event raised by the Shuttereventtriggerregistryv1 contract. +type Shuttereventtriggerregistryv1OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*Shuttereventtriggerregistryv1OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Shuttereventtriggerregistryv1.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &Shuttereventtriggerregistryv1OwnershipTransferredIterator{contract: _Shuttereventtriggerregistryv1.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *Shuttereventtriggerregistryv1OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Shuttereventtriggerregistryv1.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(Shuttereventtriggerregistryv1OwnershipTransferred) + if err := _Shuttereventtriggerregistryv1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Shuttereventtriggerregistryv1 *Shuttereventtriggerregistryv1Filterer) ParseOwnershipTransferred(log types.Log) (*Shuttereventtriggerregistryv1OwnershipTransferred, error) { + event := new(Shuttereventtriggerregistryv1OwnershipTransferred) + if err := _Shuttereventtriggerregistryv1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/bindings/shutterregistry/shutterregistry.go b/bindings/shutterregistry/shutterregistry.go index b8fbe26..46bca31 100644 --- a/bindings/shutterregistry/shutterregistry.go +++ b/bindings/shutterregistry/shutterregistry.go @@ -26,17 +26,40 @@ var ( _ = common.Big1 _ = types.BloomLookup _ = event.NewSubscription + _ = abi.ConvertType ) // ShutterregistryMetaData contains all meta data concerning the Shutterregistry contract. var ShutterregistryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"register\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"identityPrefix\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registrations\",\"inputs\":[{\"name\":\"identity\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"IdentityRegistered\",\"inputs\":[{\"name\":\"eon\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"identityPrefix\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidIdentityPrefix\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"TimestampInThePast\",\"inputs\":[]}]", + Bin: "0x608060405234801561000f575f5ffd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610081575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100789190610196565b60405180910390fd5b6100908161009660201b60201c565b506101af565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61018082610157565b9050919050565b61019081610176565b82525050565b5f6020820190506101a95f830184610187565b92915050565b6107ae806101bc5f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c8063715018a6146100595780638da5cb5b14610063578063da7c6a4214610081578063eaac3573146100b2578063f2fde38b146100ce575b5f5ffd5b6100616100ea565b005b61006b6100fd565b604051610078919061052c565b60405180910390f35b61009b6004803603810190610096919061057c565b610124565b6040516100a99291906105c9565b60405180910390f35b6100cc60048036038101906100c7919061061a565b61016a565b005b6100e860048036038101906100e39190610694565b61031a565b005b6100f261039e565b6100fb5f610425565b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001602052805f5260405f205f91509050805f015f9054906101000a900467ffffffffffffffff1690805f0160089054906101000a900467ffffffffffffffff16905082565b428167ffffffffffffffff1610156101ae576040517f84f8e55900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f1b82036101e9576040517f63a4021d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82336040516020016101fd929190610724565b6040516020818303038152906040528051906020012090505f60015f8381526020019081526020015f2090505f815f0160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610283576040517f3a81d6fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555082815f0160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fa254e5a8078a79959db8c7203cbd84a28d6e1b9750d0c4fd743a1a069c21b05b8585338660405161030b949392919061075e565b60405180910390a15050505050565b61032261039e565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610392575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610389919061052c565b60405180910390fd5b61039b81610425565b50565b6103a66104e6565b73ffffffffffffffffffffffffffffffffffffffff166103c46100fd565b73ffffffffffffffffffffffffffffffffffffffff1614610423576103e76104e6565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161041a919061052c565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610516826104ed565b9050919050565b6105268161050c565b82525050565b5f60208201905061053f5f83018461051d565b92915050565b5f5ffd5b5f819050919050565b61055b81610549565b8114610565575f5ffd5b50565b5f8135905061057681610552565b92915050565b5f6020828403121561059157610590610545565b5b5f61059e84828501610568565b91505092915050565b5f67ffffffffffffffff82169050919050565b6105c3816105a7565b82525050565b5f6040820190506105dc5f8301856105ba565b6105e960208301846105ba565b9392505050565b6105f9816105a7565b8114610603575f5ffd5b50565b5f81359050610614816105f0565b92915050565b5f5f5f6060848603121561063157610630610545565b5b5f61063e86828701610606565b935050602061064f86828701610568565b925050604061066086828701610606565b9150509250925092565b6106738161050c565b811461067d575f5ffd5b50565b5f8135905061068e8161066a565b92915050565b5f602082840312156106a9576106a8610545565b5b5f6106b684828501610680565b91505092915050565b5f819050919050565b6106d96106d482610549565b6106bf565b82525050565b5f8160601b9050919050565b5f6106f5826106df565b9050919050565b5f610706826106eb565b9050919050565b61071e6107198261050c565b6106fc565b82525050565b5f61072f82856106c8565b60208201915061073f828461070d565b6014820191508190509392505050565b61075881610549565b82525050565b5f6080820190506107715f8301876105ba565b61077e602083018661074f565b61078b604083018561051d565b61079860608301846105ba565b9594505050505056fea164736f6c634300081c000a", } // ShutterregistryABI is the input ABI used to generate the binding from. // Deprecated: Use ShutterregistryMetaData.ABI instead. var ShutterregistryABI = ShutterregistryMetaData.ABI +// ShutterregistryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ShutterregistryMetaData.Bin instead. +var ShutterregistryBin = ShutterregistryMetaData.Bin + +// DeployShutterregistry deploys a new Ethereum contract, binding an instance of Shutterregistry to it. +func DeployShutterregistry(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Shutterregistry, error) { + parsed, err := ShutterregistryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ShutterregistryBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Shutterregistry{ShutterregistryCaller: ShutterregistryCaller{contract: contract}, ShutterregistryTransactor: ShutterregistryTransactor{contract: contract}, ShutterregistryFilterer: ShutterregistryFilterer{contract: contract}}, nil +} + // Shutterregistry is an auto generated Go binding around an Ethereum contract. type Shutterregistry struct { ShutterregistryCaller // Read-only binding to the contract @@ -134,11 +157,11 @@ func NewShutterregistryFilterer(address common.Address, filterer bind.ContractFi // bindShutterregistry binds a generic wrapper to an already deployed contract. func bindShutterregistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(ShutterregistryABI)) + parsed, err := ShutterregistryMetaData.GetAbi() if err != nil { return nil, err } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } // Call invokes the (constant) contract method with params as input values and diff --git a/bindings/validatorregistry/validatorregistry.go b/bindings/validatorregistry/validatorregistry.go index 3781bc8..c77d8b7 100644 --- a/bindings/validatorregistry/validatorregistry.go +++ b/bindings/validatorregistry/validatorregistry.go @@ -38,12 +38,34 @@ type IValidatorRegistryUpdate struct { // ValidatorregistryMetaData contains all meta data concerning the Validatorregistry contract. var ValidatorregistryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"getNumUpdates\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUpdate\",\"inputs\":[{\"name\":\"i\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIValidatorRegistry.Update\",\"components\":[{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"update\",\"inputs\":[{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Updated\",\"inputs\":[{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", + Bin: "0x6080604052348015600e575f5ffd5b5061095b8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003e575f3560e01c8062c7c0191461004257806332cb25be146100605780633f37dce214610090575b5f5ffd5b61004a6100ac565b60405161005791906102e6565b60405180910390f35b61007a6004803603810190610075919061033a565b6100b7565b6040516100879190610416565b60405180910390f35b6100aa60048036038101906100a59190610562565b61020f565b005b5f5f80549050905090565b6100bf6102b4565b5f82815481106100d2576100d16105d8565b5b905f5260205f2090600202016040518060400160405290815f820180546100f890610632565b80601f016020809104026020016040519081016040528092919081815260200182805461012490610632565b801561016f5780601f106101465761010080835404028352916020019161016f565b820191905f5260205f20905b81548152906001019060200180831161015257829003601f168201915b5050505050815260200160018201805461018890610632565b80601f01602080910402602001604051908101604052809291908181526020018280546101b490610632565b80156101ff5780601f106101d6576101008083540402835291602001916101ff565b820191905f5260205f20905b8154815290600101906020018083116101e257829003601f168201915b5050505050815250509050919050565b5f604051806040016040528084815260200183815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f01908161025e9190610802565b5060208201518160010190816102749190610802565b5050507f9796f15c93411b364b7f09bb591d0f77aa4dc399cf0481b8de1c3ce9f10a3a8782826040516102a8929190610919565b60405180910390a15050565b604051806040016040528060608152602001606081525090565b5f819050919050565b6102e0816102ce565b82525050565b5f6020820190506102f95f8301846102d7565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b610319816102ce565b8114610323575f5ffd5b50565b5f8135905061033481610310565b92915050565b5f6020828403121561034f5761034e610308565b5b5f61035c84828501610326565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6103a782610365565b6103b1818561036f565b93506103c181856020860161037f565b6103ca8161038d565b840191505092915050565b5f604083015f8301518482035f8601526103ef828261039d565b91505060208301518482036020860152610409828261039d565b9150508091505092915050565b5f6020820190508181035f83015261042e81846103d5565b905092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6104748261038d565b810181811067ffffffffffffffff821117156104935761049261043e565b5b80604052505050565b5f6104a56102ff565b90506104b1828261046b565b919050565b5f67ffffffffffffffff8211156104d0576104cf61043e565b5b6104d98261038d565b9050602081019050919050565b828183375f83830152505050565b5f610506610501846104b6565b61049c565b9050828152602081018484840111156105225761052161043a565b5b61052d8482856104e6565b509392505050565b5f82601f83011261054957610548610436565b5b81356105598482602086016104f4565b91505092915050565b5f5f6040838503121561057857610577610308565b5b5f83013567ffffffffffffffff8111156105955761059461030c565b5b6105a185828601610535565b925050602083013567ffffffffffffffff8111156105c2576105c161030c565b5b6105ce85828601610535565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061064957607f821691505b60208210810361065c5761065b610605565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610683565b6106c88683610683565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6107036106fe6106f9846102ce565b6106e0565b6102ce565b9050919050565b5f819050919050565b61071c836106e9565b6107306107288261070a565b84845461068f565b825550505050565b5f5f905090565b610747610738565b610752818484610713565b505050565b5b818110156107755761076a5f8261073f565b600181019050610758565b5050565b601f8211156107ba5761078b81610662565b61079484610674565b810160208510156107a3578190505b6107b76107af85610674565b830182610757565b50505b505050565b5f82821c905092915050565b5f6107da5f19846008026107bf565b1980831691505092915050565b5f6107f283836107cb565b9150826002028217905092915050565b61080b82610365565b67ffffffffffffffff8111156108245761082361043e565b5b61082e8254610632565b610839828285610779565b5f60209050601f83116001811461086a575f8415610858578287015190505b61086285826107e7565b8655506108c9565b601f19841661087886610662565b5f5b8281101561089f5784890151825560018201915060208501945060208101905061087a565b868310156108bc57848901516108b8601f8916826107cb565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b5f6108eb82610365565b6108f581856108d1565b935061090581856020860161037f565b61090e8161038d565b840191505092915050565b5f6040820190508181035f83015261093181856108e1565b9050818103602083015261094581846108e1565b9050939250505056fea164736f6c634300081c000a", } // ValidatorregistryABI is the input ABI used to generate the binding from. // Deprecated: Use ValidatorregistryMetaData.ABI instead. var ValidatorregistryABI = ValidatorregistryMetaData.ABI +// ValidatorregistryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ValidatorregistryMetaData.Bin instead. +var ValidatorregistryBin = ValidatorregistryMetaData.Bin + +// DeployValidatorregistry deploys a new Ethereum contract, binding an instance of Validatorregistry to it. +func DeployValidatorregistry(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Validatorregistry, error) { + parsed, err := ValidatorregistryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorregistryBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Validatorregistry{ValidatorregistryCaller: ValidatorregistryCaller{contract: contract}, ValidatorregistryTransactor: ValidatorregistryTransactor{contract: contract}, ValidatorregistryFilterer: ValidatorregistryFilterer{contract: contract}}, nil +} + // Validatorregistry is an auto generated Go binding around an Ethereum contract. type Validatorregistry struct { ValidatorregistryCaller // Read-only binding to the contract diff --git a/foundry.lock b/foundry.lock new file mode 100644 index 0000000..38b729d --- /dev/null +++ b/foundry.lock @@ -0,0 +1,23 @@ +{ + "lib/openzeppelin-foundry-upgrades": { + "tag": { + "name": "v0.4.0", + "rev": "cbce1e00305e943aa1661d43f41e5ac72c662b07" + } + }, + "lib/openzeppelin-contracts-upgradeable": { + "tag": { + "name": "v5.4.0", + "rev": "e725abddf1e01cf05ace496e950fc8e243cc7cab" + } + }, + "lib/openzeppelin": { + "rev": "932fddf69a699a9a80fd2396fd1a2ab91cdda123" + }, + "lib/forge-std": { + "tag": { + "name": "v1.10.0", + "rev": "8bbcf6e3f8f62f419e5429a0bd89331c85c37824" + } + } +} diff --git a/foundry.toml b/foundry.toml index 3cf092a..af7cab4 100644 --- a/foundry.toml +++ b/foundry.toml @@ -7,7 +7,10 @@ solc = "0.8.28" extra_output = ['devdoc', 'userdoc', 'metadata', 'storageLayout'] bytecode_hash = 'none' build_info = true -build_info_path = 'artifacts/build-info' + +ffi = true +ast = true +fs_permissions = [{ access = "read", path = "out" }] [rpc_endpoints] hardhat = "${HARDHAT_RPC_URL}" diff --git a/gen_bindings.sh b/gen_bindings.sh index f017c4c..fc6f1b5 100755 --- a/gen_bindings.sh +++ b/gen_bindings.sh @@ -1,25 +1,39 @@ #!/bin/bash +set -Eeuo pipefail + CONTRACTS=( - "Sequencer" - "ValidatorRegistry" - "KeyperSetManager" - "KeyperSet" - "EonKeyPublish" - "KeyBroadcastContract" - "Inbox" - "ShutterRegistry" + "src/gnosh/Sequencer.sol:Sequencer" + "src/gnosh/ValidatorRegistry.sol:ValidatorRegistry" + "src/common/KeyperSetManager.sol:KeyperSetManager" + "src/common/KeyperSet.sol:KeyperSet" + "src/common/EonKeyPublish.sol:EonKeyPublish" + "src/common/KeyBroadcastContract.sol:KeyBroadcastContract" + "src/shop/Inbox.sol:Inbox" + "src/shutter-service/ShutterRegistry.sol:ShutterRegistry" + "src/shutter-service/ShutterEventTriggerRegistry.sol:ShutterEventTriggerRegistryV1" + "src/shutter-service/EventTriggerTestHelper.sol:EventTriggerTestHelper" ) OUTPUT_DIR="bindings" -PACKAGE_NAME="bindings" mkdir -p "$OUTPUT_DIR" forge build -for contract in "${CONTRACTS[@]}"; do - pkg=$(echo "$contract" | tr '[:upper:]' '[:lower:]') +for contract_entry in "${CONTRACTS[@]}"; do + contract_path="${contract_entry%%:*}" + contract_name="${contract_entry##*:}" + + pkg=$(echo "$contract_name" | tr '[:upper:]' '[:lower:]') d="${OUTPUT_DIR}/${pkg}" mkdir -p "${d}" - abigen --abi <(jq '.["abi"]' "out/${contract}.sol/${contract}.json") --pkg "${pkg}" --out "${d}/${pkg}.go" + + contract_file=$(basename "$contract_path") + out_path="out/${contract_file}/${contract_name}.json" + + abigen \ + --abi <(jq -c '.abi' "$out_path") \ + --bin <(jq -r '.bytecode.object' "$out_path") \ + --pkg "${pkg}" \ + --out "${d}/${pkg}.go" done diff --git a/lib/forge-std b/lib/forge-std index f73c73d..6bce154 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit f73c73d2018eb6a111f35e4dae7b4f27401e9421 +Subproject commit 6bce1540c7a5d1c40eec032a1ae16f0e01f82b92 diff --git a/lib/openzeppelin b/lib/openzeppelin deleted file mode 160000 index 932fddf..0000000 --- a/lib/openzeppelin +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 932fddf69a699a9a80fd2396fd1a2ab91cdda123 diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable new file mode 160000 index 0000000..10d5299 --- /dev/null +++ b/lib/openzeppelin-contracts-upgradeable @@ -0,0 +1 @@ +Subproject commit 10d5299a89561a3fd2c864371de157cd294a129e diff --git a/lib/openzeppelin-foundry-upgrades b/lib/openzeppelin-foundry-upgrades new file mode 160000 index 0000000..cfd861b --- /dev/null +++ b/lib/openzeppelin-foundry-upgrades @@ -0,0 +1 @@ +Subproject commit cfd861bc18ef4737e82eae6ec75304e27af699ef diff --git a/remappings.txt b/remappings.txt new file mode 100644 index 0000000..14b446c --- /dev/null +++ b/remappings.txt @@ -0,0 +1,3 @@ +openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/ +@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/ +@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol index 9b80962..076d7f3 100644 --- a/script/Deploy.s.sol +++ b/script/Deploy.s.sol @@ -114,7 +114,7 @@ contract DeployScript is Script { keyperSetManager.addKeyperSet(0, address(fakeKeyperset)); console.log( "Initial fake KeyperSet added to KeyperSetManager with activation block:", - 0 + uint256(0) ); address[] memory keypers = vm.envAddress("KEYPER_ADDRESSES", ","); diff --git a/script/Deploy.service.s.sol b/script/Deploy.service.s.sol index 4534d2e..e39dce5 100644 --- a/script/Deploy.service.s.sol +++ b/script/Deploy.service.s.sol @@ -6,6 +6,8 @@ import "../src/common/KeyBroadcastContract.sol"; import "../src/common/KeyperSet.sol"; import "../src/common/KeyperSetManager.sol"; import "../src/shutter-service/ShutterRegistry.sol"; +import "../src/shutter-service/ShutterEventTriggerRegistry.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; contract Deploy is Script { function deployKeyperSetManager( @@ -38,6 +40,17 @@ contract Deploy is Script { return s; } + function deployEventTriggerRegistry() + public + returns (ShutterEventTriggerRegistryV1) + { + address proxy = Upgrades.deployUUPSProxy( + "ShutterEventTriggerRegistry.sol:ShutterEventTriggerRegistryV1", + abi.encodeCall(ShutterEventTriggerRegistryV1.initialize, ()) + ); + return ShutterEventTriggerRegistryV1(proxy); + } + function run() external { uint256 deployKey = vm.envUint("DEPLOY_KEY"); address deployerAddress = vm.addr(deployKey); @@ -47,6 +60,7 @@ contract Deploy is Script { KeyperSetManager ksm = deployKeyperSetManager(deployerAddress); deployKeyBroadcastContract(ksm); deployRegistry(); + deployEventTriggerRegistry(); vm.stopBroadcast(); } diff --git a/script/DeployEventTriggerTestHelper.service.s.sol b/script/DeployEventTriggerTestHelper.service.s.sol new file mode 100644 index 0000000..2db2a37 --- /dev/null +++ b/script/DeployEventTriggerTestHelper.service.s.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import {EventTriggerTestHelper} from "src/shutter-service/EventTriggerTestHelper.sol"; + +contract DeployEventTriggerTestHelperScript is Script { + function run() external { + uint256 deployKey = vm.envUint("DEPLOY_KEY"); + address deployerAddress = vm.addr(deployKey); + console.log("Deployer:", deployerAddress); + vm.startBroadcast(deployKey); + + EventTriggerTestHelper helper = new EventTriggerTestHelper(); + console.log("DeployEventTriggerTestHelper:", address(helper)); + + vm.stopBroadcast(); + } +} diff --git a/script/RegisterEventTrigger.service.s.sol b/script/RegisterEventTrigger.service.s.sol new file mode 100644 index 0000000..8968632 --- /dev/null +++ b/script/RegisterEventTrigger.service.s.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import {ShutterEventTriggerRegistryV1} from "src/shutter-service/ShutterEventTriggerRegistry.sol"; + +contract RegisterEventTrigger is Script { + function run() external { + uint256 privateKey = vm.envUint("TX_SENDER_KEY"); + ShutterEventTriggerRegistryV1 registry = ShutterEventTriggerRegistryV1( + vm.envAddress("EVENT_TRIGGER_REGISTRY_ADDRESS") + ); + uint64 eon = uint64(vm.envUint("EON")); + bytes32 identityPrefix = vm.envBytes32("IDENTITY_PREFIX"); + bytes memory triggerDefinition = vm.envBytes("TRIGGER_DEFINITION"); + uint64 ttl = uint64(vm.envUint("TTL")); + + vm.startBroadcast(privateKey); + registry.register(eon, identityPrefix, triggerDefinition, ttl); + vm.stopBroadcast(); + } +} diff --git a/script/SendTrigger.service.s.sol b/script/SendTrigger.service.s.sol new file mode 100644 index 0000000..17f22ac --- /dev/null +++ b/script/SendTrigger.service.s.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import {EventTriggerTestHelper} from "./DeployEventTriggerTestHelper.service.s.sol"; + +contract SendTrigger is Script { + function run() external { + uint256 privateKey = vm.envUint("TX_SENDER_KEY"); + EventTriggerTestHelper helper = EventTriggerTestHelper( + vm.envAddress("EVENT_TRIGGER_TEST_HELPER_ADDRESS") + ); + uint64 topic1 = uint64(vm.envUint("TOPIC1")); + bytes32 topic2 = vm.envBytes32("TOPIC2"); + bytes32 data1 = vm.envBytes32("DATA1"); + bytes32 data2 = vm.envBytes32("DATA2"); + + vm.startBroadcast(privateKey); + helper.trigger(topic1, topic2, data1, data2); + vm.stopBroadcast(); + } +} diff --git a/src/shutter-service/EventTriggerTestHelper.sol b/src/shutter-service/EventTriggerTestHelper.sol new file mode 100644 index 0000000..ba75b49 --- /dev/null +++ b/src/shutter-service/EventTriggerTestHelper.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; + +contract EventTriggerTestHelper { + event Trigger( + uint64 indexed topic1, + bytes32 indexed topic2, + bytes32 data1, + bytes32 data2 + ); + + function trigger( + uint64 topic1, + bytes32 topic2, + bytes32 data1, + bytes32 data2 + ) public { + emit Trigger(topic1, topic2, data1, data2); + } +} diff --git a/src/shutter-service/ShutterEventTriggerRegistry.sol b/src/shutter-service/ShutterEventTriggerRegistry.sol new file mode 100644 index 0000000..2563bc7 --- /dev/null +++ b/src/shutter-service/ShutterEventTriggerRegistry.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.28; + +import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; + +contract ShutterEventTriggerRegistryV1 is + Initializable, + UUPSUpgradeable, + OwnableUpgradeable +{ + event EventTriggerRegistered( + uint64 indexed eon, + bytes32 identityPrefix, + address sender, + bytes triggerDefinition, + uint64 expirationBlockNumber + ); + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + function initialize() public initializer { + __Ownable_init(msg.sender); + __UUPSUpgradeable_init(); + } + + function _authorizeUpgrade( + address newImplementation + ) internal override onlyOwner {} + + function register( + uint64 eon, + bytes32 identityPrefix, + bytes memory triggerDefinition, + uint64 ttl + ) external onlyOwner { + emit EventTriggerRegistered( + eon, + identityPrefix, + msg.sender, + triggerDefinition, + uint64(block.number) + ttl + ); + } +} diff --git a/test/ShutterEventTriggerRegistry.t.sol b/test/ShutterEventTriggerRegistry.t.sol new file mode 100644 index 0000000..e3583ae --- /dev/null +++ b/test/ShutterEventTriggerRegistry.t.sol @@ -0,0 +1,100 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.22; + +import "forge-std/Script.sol"; +import {Test} from "forge-std/Test.sol"; +import {Upgrades, Options} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import {ShutterEventTriggerRegistryV1} from "../src/shutter-service/ShutterEventTriggerRegistry.sol"; + +contract ShutterEventTriggerRegistryTest is Test { + ShutterEventTriggerRegistryV1 public registry; + address public owner = makeAddr("owner"); + + function setUp() public { + address proxy = Upgrades.deployUUPSProxy( + "ShutterEventTriggerRegistry.sol:ShutterEventTriggerRegistryV1", + abi.encodeCall(ShutterEventTriggerRegistryV1.initialize, ()) + ); + registry = ShutterEventTriggerRegistryV1(proxy); + registry.transferOwnership(owner); + } + + function testInitialization() public { + assertNotEq(address(registry.owner()), address(0)); + } + + function testUpgrade() public { + vm.startPrank(owner); + Upgrades.upgradeProxy( + address(registry), + "ShutterEventTriggerRegistry.t.sol:ShutterEventTriggerRegistryTestingUpgrade", + "" + ); + vm.stopPrank(); + ShutterEventTriggerRegistryTestingUpgrade upgraded = ShutterEventTriggerRegistryTestingUpgrade( + address(registry) + ); + assertEq(upgraded.version(), "v2"); + } + + function testOnlyOwnerCanUpgrade() public { + address notOwner = makeAddr("notOwner"); + + // We cannot use `Upgrades.upgradeProxy` because it internally does two calls only the + // second of which reverts. This prevents us from catching the revert with vm.expectRevert. + // Instead, we do the two calls manually here. See + // https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades/issues/72 + + vm.startPrank(notOwner); + Options memory opts; + address v2Implementation = Upgrades.prepareUpgrade( + "ShutterEventTriggerRegistry.t.sol:ShutterEventTriggerRegistryTestingUpgrade", + opts + ); + vm.expectRevert(); + registry.upgradeToAndCall(v2Implementation, ""); + vm.stopPrank(); + } + + function testRegistration() public { + uint64 eon = 5; + bytes32 identityPrefix = hex"001122"; + bytes memory triggerDefinition = hex"aabbcc"; + uint64 ttl = 100; + + uint64 expirationBlockNumber = uint64(block.number) + ttl; + + vm.expectEmit(address(registry)); + emit ShutterEventTriggerRegistryV1.EventTriggerRegistered( + eon, + identityPrefix, + owner, + triggerDefinition, + expirationBlockNumber + ); + + hoax(owner); + registry.register(eon, identityPrefix, triggerDefinition, ttl); + } + + function testRegistrationNotOwner() public { + uint64 eon = 5; + bytes32 identityPrefix = hex"001122"; + bytes memory triggerDefinition = hex"aabbcc"; + uint64 ttl = 100; + address sender = makeAddr("notOwner"); + + vm.expectRevert(); + hoax(sender); + registry.register(eon, identityPrefix, triggerDefinition, ttl); + } +} + +/// @custom:oz-upgrades-from ShutterEventTriggerRegistryV1 +contract ShutterEventTriggerRegistryTestingUpgrade is + ShutterEventTriggerRegistryV1 +{ + function version() external pure returns (string memory) { + return "v2"; + } +}