diff --git a/bindings/adjudicator/Adjudicator.go b/bindings/adjudicator/Adjudicator.go index ee944dc..de85a30 100644 --- a/bindings/adjudicator/Adjudicator.go +++ b/bindings/adjudicator/Adjudicator.go @@ -69,7 +69,7 @@ type ChannelParticipant struct { // ChannelState is an auto generated low-level Go binding around an user-defined struct. type ChannelState struct { - ChannelID [][32]byte + ChannelID [32]byte Version uint64 Outcome ChannelAllocation AppData []byte @@ -78,15 +78,15 @@ type ChannelState struct { // ChannelSubAlloc is an auto generated low-level Go binding around an user-defined struct. type ChannelSubAlloc struct { - ID [][32]byte + ID [32]byte Balances []*big.Int IndexMap []uint16 } // AdjudicatorMetaData contains all meta data concerning the Adjudicator contract. var AdjudicatorMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"timeout\",\"type\":\"uint64\"}],\"name\":\"ChannelUpdate\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"channelID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"channelID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"ID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"channelID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"ID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State[]\",\"name\":\"subStates\",\"type\":\"tuple[]\"}],\"name\":\"conclude\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"channelID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"ID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"concludeFinal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"disputes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timeout\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"challengeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"hasApp\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"channelID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"ID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"hashState\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"channelID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"ID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"stateOld\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"channelID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"ID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"actorIdx\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"name\":\"progress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"channelID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"ID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"internalType\":\"structAdjudicator.SignedState\",\"name\":\"channel\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"channelID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"ID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"internalType\":\"structAdjudicator.SignedState[]\",\"name\":\"subChannels\",\"type\":\"tuple[]\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50613829806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063848890001161005b578063848890001461014b578063c5457f0d1461016c578063db77bb271461017f578063e9bc418d1461019257600080fd5b806311be1997146100825780634176e7ae146101235780634c33077514610138575b600080fd5b6100dd6100903660046126a2565b6000602081905290815260409020805460018201546002909201546001600160401b0380831693600160401b8404821693600160801b81049092169260ff600160c01b9093048316921686565b604080516001600160401b0397881681529587166020870152939095169284019290925260ff166060830152608082015290151560a082015260c0015b60405180910390f35b610136610131366004612e6f565b6101a5565b005b610136610146366004612fe5565b610211565b61015e61015936600461306c565b6103c8565b60405190815260200161011a565b61013661017a36600461313b565b6103e1565b61015e61018d36600461320f565b61040f565b6101366101a0366004613243565b61041a565b82608001516101cf5760405162461bcd60e51b81526004016101c6906132f9565b60405180910390fd5b6101d983836106dc565b6101e28261075e565b60006101f0838360006109a3565b508351604080860151519087015192935061020b9284610d35565b50505050565b82608001516102325760405162461bcd60e51b81526004016101c6906132f9565b6080820151151560011461027a5760405162461bcd60e51b815260206004820152600f60248201526e1cdd185d19481b9bdd08199a5b985b608a1b60448201526064016101c6565b60408201516060015151156102c45760405162461bcd60e51b815260206004820152601060248201526f686173207375622d6368616e6e656c7360801b60448201526064016101c6565b6102ce83836106dc565b6102d9838383610e27565b60008061033684600001516102fa8660000151876040015160200151610f19565b6001600160401b0316815181106103135761031361331d565b602002602001015160009081526020819052604090206001810154909190151590565b915091508015610391578154600119600160c01b90910460ff16016103915760405162461bcd60e51b8152602060048201526011602482015270636f6e636c7564656420616c726561647960781b60448201526064016101c6565b61039d85856002610fd1565b6103c184600001518560400151600001518760400151876040015160400151610d35565b5050505050565b60006103d3826111da565b805190602001209050919050565b8151608001516104035760405162461bcd60e51b81526004016101c6906132f9565b61020b82826000611203565b60006103d38261138d565b825160408401516020015160009161045d91610437908290610f19565b6001600160401b0316815181106104505761045061331d565b60200260200101516113a0565b8054909150600160c01b900460ff166104c45780546001600160401b03164210156104bf5760405162461bcd60e51b81526020600482015260126024820152711d1a5b595bdd5d081b9bdd081c185cdcd95960721b60448201526064016101c6565b61055b565b8054600019600160c01b90910460ff16016105235780546001600160401b031642106104bf5760405162461bcd60e51b815260206004820152600e60248201526d1d1a5b595bdd5d081c185cdcd95960921b60448201526064016101c6565b60405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420706861736560981b60448201526064016101c6565b60608601516001600160a01b03166105a55760405162461bcd60e51b815260206004820152600d60248201526c06d75737420686176652061707609c1b60448201526064016101c6565b85604001515183106105f15760405162461bcd60e51b81526020600482015260156024820152746163746f72496478206f7574206f662072616e676560581b60448201526064016101c6565b6105fb86856106dc565b610604856103c8565b8160010154146106485760405162461bcd60e51b815260206004820152600f60248201526e77726f6e67206f6c6420737461746560881b60448201526064016101c6565b61067c610654856111da565b838860400151868151811061066b5761066b61331d565b6020026020010151600001516113f9565b6106bc5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b60448201526064016101c6565b6106c886868686611482565b6106d486856001610fd1565b505050505050565b6106e58261040f565b81516040830151602001516106fb908290610f19565b6001600160401b0316815181106107145761071461331d565b60200260200101511461075a5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c696420706172616d7360901b60448201526064016101c6565b5050565b60006107768260000151836040015160200151610f19565b9050600061079c8360000151836001600160401b0316815181106104505761045061331d565b90506107a7836103c8565b8160010154146107e95760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420737461746560981b60448201526064016101c6565b8054600119600160c01b90910460ff160161083a5760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb98db1d591959607a1b60448201526064016101c6565b8054600160c01b900460ff161580156108575750600281015460ff165b1561089757805461087a906001600160401b03600160401b82048116911661335f565b815467ffffffffffffffff19166001600160401b03919091161781555b80546001600160401b03164210156108ea5760405162461bcd60e51b81526020600482015260166024820152751d1a5b595bdd5d081b9bdd081c185cdcd959081e595d60521b60448201526064016101c6565b60025b815460ff91909116600160c01b0260ff60c01b199091161781558251805161099e91906001600160401b0385169081106109295761092961331d565b6020908102919091018101516040805160c08101825285546001600160401b038082168352600160401b8204811695830195909552600160801b810490941691810191909152600160c01b90920460ff908116606084015260018501546080840152600285015416151560a0830152906115cd565b505050565b606060006109b0856116bf565b60408501515180516001600160401b038111156109cf576109cf6126bb565b604051908082528060200260200182016040528015610a0257816020015b60608152602001906001900390816109ed5790505b50925060005b8151811015610b375760008760400151604001518281518110610a2d57610a2d61331d565b6020026020010151905080516001600160401b03811115610a5057610a506126bb565b604051908082528060200260200182016040528015610a79578160200160208202803683370190505b50858381518110610a8c57610a8c61331d565b602002602001018190525060005b8151811015610b24578860400151604001518381518110610abd57610abd61331d565b60200260200101518181518110610ad657610ad661331d565b6020026020010151868481518110610af057610af061331d565b60200260200101518281518110610b0957610b0961331d565b6020908102919091010152610b1d8161338a565b9050610a9a565b505080610b309061338a565b9050610a08565b5060408601516060015184925060005b8151811015610d2a576000828281518110610b6457610b6461331d565b602002602001015190506000888680610b7c9061338a565b975081518110610b8e57610b8e61331d565b60200260200101519050610baa82600001518260000151611765565b610bee5760405162461bcd60e51b81526020600482015260156024820152741a5b9d985b1a59081cdd5898da185b9b995b081a59605a1b60448201526064016101c6565b6060610bfb828b896109a3565b604085015190985090915060005b8751811015610d145760005b8251811015610d03576000848381518110610c3257610c3261331d565b60200260200101518281518110610c4b57610c4b61331d565b602002602001015190506000848381518110610c6957610c6961331d565b60200260200101519050818d8581518110610c8657610c8661331d565b60200260200101518261ffff1681518110610ca357610ca361331d565b6020026020010151610cb591906133a3565b8d8581518110610cc757610cc761331d565b60200260200101518261ffff1681518110610ce457610ce461331d565b602002602001018181525050505080610cfc9061338a565b9050610c15565b50610d0d8161338a565b9050610c09565b505050505080610d239061338a565b9050610b47565b505050935093915050565b60005b83518110156103c1576000848281518110610d5557610d5561331d565b6020026020010151905046816000015103610e165760208101516001600160a01b031615610e165780602001516001600160a01b031663295482ce878481518110610da257610da261331d565b602002602001015186868681518110610dbd57610dbd61331d565b60200260200101516040518463ffffffff1660e01b8152600401610de3939291906134ab565b600060405180830381600087803b158015610dfd57600080fd5b505af1158015610e11573d6000803e3d6000fd5b505050505b50610e208161338a565b9050610d38565b6000610e32836111da565b9050815184604001515114610e895760405162461bcd60e51b815260206004820152601a60248201527f7369676e617475726573206c656e677468206d69736d6174636800000000000060448201526064016101c6565b60005b82518110156103c157610ec982848381518110610eab57610eab61331d565b60200260200101518760400151848151811061066b5761066b61331d565b610f095760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b60448201526064016101c6565b610f128161338a565b9050610e8c565b60008151835114610f655760405162461bcd60e51b8152602060048201526016602482015275082e4e4c2f240d8cadccee8d0e640dad2e6dac2e8c6d60531b60448201526064016101c6565b81600081518110610f7857610f7861331d565b6020026020010151600103610f8f57506000610fcb565b60018251118015610fba575081600181518110610fae57610fae61331d565b60200260200101516001145b15610fc757506001610fcb565b5060005b92915050565b6000610fe98360000151846040015160200151610f19565b6001600160401b03169050600080611010856000015184815181106103135761031361331d565b8751825460208901516001600160401b03908116600160801b0267ffffffffffffffff60801b1991909316600160401b021677ffffffffffffffffffffffffffffffff00000000000000001990911617178255909250905061107e86606001516001600160a01b0316151590565b6002838101805460ff19169215159290921790915584908111156110a4576110a4613333565b825460ff91909116600160c01b0260ff60c01b199091161782556110c7856103c8565b60018301556080850151156110f557815467ffffffffffffffff1916426001600160401b031617825561114c565b80158061110e5750815460ff600160c01b909104166001145b1561114c57815461112f90600160401b90046001600160401b03164261335f565b825467ffffffffffffffff19166001600160401b03919091161782555b6106d4856000015184815181106111655761116561331d565b6020908102919091018101516040805160c08101825286546001600160401b038082168352600160401b8204811695830195909552600160801b810490941691810191909152600160c01b90920460ff908116606084015260018601546080840152600286015416151560a0830152906115cd565b6060816040516020016111ed919061371d565b6040516020818303038152906040529050919050565b6020830151604001518051606091839161121c876117e1565b6112298260400151611a4a565b935060008260600151905086518151111561127e5760405162461bcd60e51b81526020600482015260156024820152741cdd5890da185b9b995b1cc81d1bdbc81cda1bdc9d605a1b60448201526064016101c6565b60005b815181101561138157600088866112978161338a565b9750815181106112a9576112a961331d565b602002602001015190506000808484815181106112c8576112c861331d565b60200260200101518360200151915091506112eb82600001518260000151611765565b6113305760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081cdd588b58da185b9b995b081a5960521b60448201526064016101c6565b606061133d848d8b611203565b604084015151909a50909150611354908890611b45565b611362836020015182611bee565b61136c8a82611cdc565b505050508061137a9061338a565b9050611281565b50505050935093915050565b6060816040516020016111ed9190613795565b600081815260208190526040902060018101541515806113f35760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd081c9959da5cdd195c995960921b60448201526064016101c6565b50919050565b60008061145a85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b905060006114688286611d53565b6001600160a01b0390811690851614925050509392505050565b602083015161149290600161335f565b6001600160401b031682602001516001600160401b0316146114f65760405162461bcd60e51b815260206004820152601d60248201527f76657273696f6e206d75737420696e6372656d656e74206279206f6e6500000060448201526064016101c6565b6080830151156115485760405162461bcd60e51b815260206004820181905260248201527f63616e6e6f742070726f67726573732066726f6d2066696e616c20737461746560448201526064016101c6565b61156083604001518360400151866040015151611d77565b60608401516040516206371b60ea1b81526001600160a01b038216906318dc6c00906115969088908890889088906004016137a8565b60006040518083038186803b1580156115ae57600080fd5b505afa1580156115c2573d6000803e3d6000fd5b505050505050505050565b600082815260208181526040918290208351815485840151868601516060808901516001600160401b039586166fffffffffffffffffffffffffffffffff199095168517600160401b948716949094029390931768ffffffffffffffffff60801b1916600160801b9590921694850260ff60c01b191691909117600160c01b60ff9093169283021785556080880151600186015560a08801516002909501805460ff1916951515959095179094558551928352938201939093529283019190915283917f895ef5a5fc3efd313a300b006d6ce97ff0670dfe04f6eea90417edf924fa786b910160405180910390a25050565b60006116d78260000151836040015160200151610f19565b905060006116fd8360000151836001600160401b0316815181106104505761045061331d565b9050611708836103c8565b81600101541461174a5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420737461746560981b60448201526064016101c6565b805460ff600160c01b9091041660021461099e5760026108ed565b6000815183511461177857506000610fcb565b60005b83518110156117d7578281815181106117965761179661331d565b60200260200101518482815181106117b0576117b061331d565b6020026020010151146117c7576000915050610fcb565b6117d08161338a565b905061177b565b5060019392505050565b805160208201516117f282826106dc565b61180182828560400151610e27565b8160a001511561189e5760608201516001600160a01b0316156118585760405162461bcd60e51b815260206004820152600f60248201526e063616e6e6f7420686176652061707608c1b60448201526064016101c6565b604081015160600151511561189e5760405162461bcd60e51b815260206004820152600c60248201526b199d5b991cc81b1bd8dad95960a21b60448201526064016101c6565b6000806118bf83600001516102fa8560000151866040015160200151610f19565b6040805160c08101825283546001600160401b038082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b909204821660608201526001840154608082015260029093015416151560a083015290925090508015611a3e57611932836103c8565b826080015103611943575050505050565b82602001516001600160401b031682604001516001600160401b03161061199e5760405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b2103b32b939b4b7b760891b60448201526064016101c6565b606082015160ff16156119e55760405162461bcd60e51b815260206004820152600f60248201526e696e636f727265637420706861736560881b60448201526064016101c6565b81516001600160401b03164210611a3e5760405162461bcd60e51b815260206004820152601960248201527f72656675746174696f6e2074696d656f7574207061737365640000000000000060448201526064016101c6565b6103c184846000610fd1565b606081516001600160401b03811115611a6557611a656126bb565b604051908082528060200260200182016040528015611a8e578160200160208202803683370190505b50905060005b82518110156113f3576000838281518110611ab157611ab161331d565b6020026020010151905060005b8151811015611b3257818181518110611ad957611ad961331d565b6020026020010151848481518110611af357611af361331d565b6020026020010151611b0591906133a3565b848481518110611b1757611b1761331d565b6020908102919091010152611b2b8161338a565b9050611abe565b505080611b3e9061338a565b9050611a94565b8051825114611b965760405162461bcd60e51b815260206004820152601760248201527f41737365745b5d3a20756e657175616c206c656e67746800000000000000000060448201526064016101c6565b60005b825181101561099e57611bde838281518110611bb757611bb761331d565b6020026020010151838381518110611bd157611bd161331d565b6020026020010151612055565b611be78161338a565b9050611b99565b8051825114611c3f5760405162461bcd60e51b815260206004820152601960248201527f75696e743235365b5d3a20756e657175616c206c656e6774680000000000000060448201526064016101c6565b60005b825181101561099e57818181518110611c5d57611c5d61331d565b6020026020010151838281518110611c7757611c7761331d565b602002602001015114611ccc5760405162461bcd60e51b815260206004820152601760248201527f75696e743235365b5d3a20756e657175616c206974656d00000000000000000060448201526064016101c6565b611cd58161338a565b9050611c42565b60005b825181101561099e57818181518110611cfa57611cfa61331d565b6020026020010151838281518110611d1457611d1461331d565b6020026020010151611d2691906133a3565b838281518110611d3857611d3861331d565b6020908102919091010152611d4c8161338a565b9050611cdf565b6000806000611d62858561214d565b91509150611d6f816121bb565b509392505050565b81604001515183604001515114611dd05760405162461bcd60e51b815260206004820152601860248201527f62616c616e636573206c656e677468206d69736d61746368000000000000000060448201526064016101c6565b81515183515114611e1c5760405162461bcd60e51b81526020600482015260166024820152750c2e6e6cae8e640d8cadccee8d040dad2e6dac2e8c6d60531b60448201526064016101c6565b611e2e83606001518360600151612374565b60005b82515181101561020b57611e7284600001518281518110611e5457611e5461331d565b602002602001015184600001518381518110611bd157611bd161331d565b6000808386604001518481518110611e8c57611e8c61331d565b60200260200101515114611ee25760405162461bcd60e51b815260206004820152601c60248201527f6f6c642062616c616e636573206c656e677468206d69736d617463680000000060448201526064016101c6565b8385604001518481518110611ef957611ef961331d565b60200260200101515114611f4f5760405162461bcd60e51b815260206004820152601c60248201527f6e65772062616c616e636573206c656e677468206d69736d617463680000000060448201526064016101c6565b60005b84811015611ff25786604001518481518110611f7057611f7061331d565b60200260200101518181518110611f8957611f8961331d565b602002602001015183611f9c91906133a3565b925085604001518481518110611fb457611fb461331d565b60200260200101518181518110611fcd57611fcd61331d565b602002602001015182611fe091906133a3565b9150611feb8161338a565b9050611f52565b508082146120425760405162461bcd60e51b815260206004820152601860248201527f73756d206f662062616c616e636573206d69736d61746368000000000000000060448201526064016101c6565b50508061204e9061338a565b9050611e31565b80518251146120985760405162461bcd60e51b815260206004820152600f60248201526e1d5b995c5d585b0818da185a5b9251608a1b60448201526064016101c6565b80602001516001600160a01b031682602001516001600160a01b0316146120f55760405162461bcd60e51b81526020600482015260116024820152703ab732b8bab0b61032ba342437b63232b960791b60448201526064016101c6565b8060400151805190602001208260400151805190602001201461075a5760405162461bcd60e51b815260206004820152601060248201526f3ab732b8bab0b61031b1a437b63232b960811b60448201526064016101c6565b60008082516041036121835760208301516040840151606085015160001a6121778782858561241d565b945094505050506121b4565b82516040036121ac57602083015160408401516121a186838361250a565b9350935050506121b4565b506000905060025b9250929050565b60008160048111156121cf576121cf613333565b036121d75750565b60018160048111156121eb576121eb613333565b036122385760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101c6565b600281600481111561224c5761224c613333565b036122995760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101c6565b60038160048111156122ad576122ad613333565b036123055760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101c6565b600481600481111561231957612319613333565b036123715760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101c6565b50565b80518251146123c55760405162461bcd60e51b815260206004820152601a60248201527f537562416c6c6f635b5d3a20756e657175616c206c656e67746800000000000060448201526064016101c6565b60005b825181101561099e5761240d8382815181106123e6576123e661331d565b60200260200101518383815181106124005761240061331d565b6020026020010151612543565b6124168161338a565b90506123c8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156124545750600090506003612501565b8460ff16601b1415801561246c57508460ff16601c14155b1561247d5750600090506004612501565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156124d1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166124fa57600060019250925050612501565b9150600090505b94509492505050565b6000806001600160ff1b0383168161252760ff86901c601b6133a3565b90506125358782888561241d565b935093505050935093915050565b815181516125519190611765565b6125945760405162461bcd60e51b815260206004820152601460248201527314dd58905b1b1bd8ce881d5b995c5d585b08125160621b60448201526064016101c6565b6125a682602001518260200151611bee565b61075a8260400151826040015180518251146126045760405162461bcd60e51b815260206004820152601860248201527f75696e7431365b5d3a20756e657175616c206c656e677468000000000000000060448201526064016101c6565b60005b825181101561099e578181815181106126225761262261331d565b602002602001015161ffff168382815181106126405761264061331d565b602002602001015161ffff16146126925760405162461bcd60e51b815260206004820152601660248201527575696e7431365b5d3a20756e657175616c206974656d60501b60448201526064016101c6565b61269b8161338a565b9050612607565b6000602082840312156126b457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156126f3576126f36126bb565b60405290565b604080519081016001600160401b03811182821017156126f3576126f36126bb565b604051606081016001600160401b03811182821017156126f3576126f36126bb565b604051608081016001600160401b03811182821017156126f3576126f36126bb565b60405160a081016001600160401b03811182821017156126f3576126f36126bb565b604051601f8201601f191681016001600160401b03811182821017156127a9576127a96126bb565b604052919050565b60006001600160401b038211156127ca576127ca6126bb565b5060051b60200190565b80356001600160a01b03811681146127eb57600080fd5b919050565b600082601f83011261280157600080fd5b81356001600160401b0381111561281a5761281a6126bb565b61282d601f8201601f1916602001612781565b81815284602083860101111561284257600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146127eb57600080fd5b600060c0828403121561288157600080fd5b6128896126d1565b905081358152602080830135818301526040808401356001600160401b03808211156128b457600080fd5b818601915086601f8301126128c857600080fd5b81356128db6128d6826127b1565b612781565b81815260059190911b830185019085810190898311156128fa57600080fd5b8685015b83811015612974578035858111156129165760008081fd5b8601808c03601f190188131561292c5760008081fd5b6129346126f9565b61293f8a83016127d4565b815288820135878111156129535760008081fd5b6129618e8c838601016127f0565b828c0152508452509187019187016128fe565b5080868901525050505050505061298d606083016127d4565b606082015261299e6080830161285f565b60808201526129af60a0830161285f565b60a082015292915050565b600082601f8301126129cb57600080fd5b813560206129db6128d6836127b1565b82815260059290921b840181019181810190868411156129fa57600080fd5b8286015b84811015612a1557803583529183019183016129fe565b509695505050505050565b80356001600160401b03811681146127eb57600080fd5b600082601f830112612a4857600080fd5b81356020612a586128d6836127b1565b82815260059290921b84018101918181019086841115612a7757600080fd5b8286015b84811015612a155780356001600160401b0380821115612a9b5760008081fd5b908801906060828b03601f1901811315612ab55760008081fd5b612abd61271b565b8784013581526040612ad08186016127d4565b828a0152918401359183831115612ae75760008081fd5b612af58d8a858801016127f0565b908201528652505050918301918301612a7b565b600082601f830112612b1a57600080fd5b81356020612b2a6128d6836127b1565b82815260059290921b84018101918181019086841115612b4957600080fd5b8286015b84811015612a155780356001600160401b03811115612b6c5760008081fd5b612b7a8986838b01016129ba565b845250918301918301612b4d565b600082601f830112612b9957600080fd5b81356020612ba96128d6836127b1565b828152600592831b8501820192828201919087851115612bc857600080fd5b8387015b85811015612cf55780356001600160401b0380821115612bec5760008081fd5b908901906060828c03601f1901811315612c065760008081fd5b612c0e61271b565b8884013583811115612c205760008081fd5b612c2e8e8b838801016129ba565b82525060408085013584811115612c455760008081fd5b612c538f8c838901016129ba565b838c015250918401359183831115612c6b5760008081fd5b82850194508d603f860112612c8257600093508384fd5b898501359350612c946128d6856127b1565b84815293871b85018101938a810193508e851115612cb25760008081fd5b948101945b84861015612ce157853561ffff81168114612cd25760008081fd5b8452948a0194928a0192612cb7565b908201528752505050928401928401612bcc565b5090979650505050505050565b600060808284031215612d1457600080fd5b612d1c61273d565b905081356001600160401b0380821115612d3557600080fd5b612d4185838601612a37565b83526020840135915080821115612d5757600080fd5b612d63858386016129ba565b60208401526040840135915080821115612d7c57600080fd5b612d8885838601612b09565b60408401526060840135915080821115612da157600080fd5b50612dae84828501612b88565b60608301525092915050565b600060a08284031215612dcc57600080fd5b612dd461275f565b905081356001600160401b0380821115612ded57600080fd5b612df9858386016129ba565b8352612e0760208501612a20565b60208401526040840135915080821115612e2057600080fd5b612e2c85838601612d02565b60408401526060840135915080821115612e4557600080fd5b50612e52848285016127f0565b606083015250612e646080830161285f565b608082015292915050565b600080600060608486031215612e8457600080fd5b83356001600160401b0380821115612e9b57600080fd5b612ea78783880161286f565b9450602091508186013581811115612ebe57600080fd5b612eca88828901612dba565b945050604086013581811115612edf57600080fd5b8601601f81018813612ef057600080fd5b8035612efe6128d6826127b1565b81815260059190911b8201840190848101908a831115612f1d57600080fd5b8584015b83811015612f5557803586811115612f395760008081fd5b612f478d8983890101612dba565b845250918601918601612f21565b508096505050505050509250925092565b600082601f830112612f7757600080fd5b81356020612f876128d6836127b1565b82815260059290921b84018101918181019086841115612fa657600080fd5b8286015b84811015612a155780356001600160401b03811115612fc95760008081fd5b612fd78986838b01016127f0565b845250918301918301612faa565b600080600060608486031215612ffa57600080fd5b83356001600160401b038082111561301157600080fd5b61301d8783880161286f565b9450602086013591508082111561303357600080fd5b61303f87838801612dba565b9350604086013591508082111561305557600080fd5b5061306286828701612f66565b9150509250925092565b60006020828403121561307e57600080fd5b81356001600160401b0381111561309457600080fd5b6130a084828501612dba565b949350505050565b6000606082840312156130ba57600080fd5b6130c261271b565b905081356001600160401b03808211156130db57600080fd5b6130e78583860161286f565b835260208401359150808211156130fd57600080fd5b61310985838601612dba565b6020840152604084013591508082111561312257600080fd5b5061312f84828501612f66565b60408301525092915050565b6000806040838503121561314e57600080fd5b82356001600160401b038082111561316557600080fd5b613171868387016130a8565b935060209150818501358181111561318857600080fd5b8501601f8101871361319957600080fd5b80356131a76128d6826127b1565b81815260059190911b820184019084810190898311156131c657600080fd5b8584015b838110156131fe578035868111156131e25760008081fd5b6131f08c89838901016130a8565b8452509186019186016131ca565b508096505050505050509250929050565b60006020828403121561322157600080fd5b81356001600160401b0381111561323757600080fd5b6130a08482850161286f565b600080600080600060a0868803121561325b57600080fd5b85356001600160401b038082111561327257600080fd5b61327e89838a0161286f565b9650602088013591508082111561329457600080fd5b6132a089838a01612dba565b955060408801359150808211156132b657600080fd5b6132c289838a01612dba565b94506060880135935060808801359150808211156132df57600080fd5b506132ec888289016127f0565b9150509295509295909350565b6020808252600a90820152693737ba103632b233b2b960b11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681851680830382111561338157613381613349565b01949350505050565b60006001820161339c5761339c613349565b5060010190565b600082198211156133b6576133b6613349565b500190565b6000815180845260005b818110156133e1576020818501810151868301820152016133c5565b818111156133f3576000602083870101525b50601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015612cf557858303601f19018952815180516001600160a01b03168452840151604085850181905261345c818601836133bb565b9a86019a9450505090830190600101613425565b600081518084526020808501945080840160005b838110156134a057815187529582019590820190600101613484565b509495945050505050565b8381526060602082015260006134c46060830185613408565b82810360408401526134d68185613470565b9695505050505050565b600082825180855260208086019550808260051b84010181860160005b84811015612cf557601f19868403018952613519838351613470565b988401989250908301906001016134fd565b6000815180845260208085019450848260051b86018286016000805b868110156135dc578484038a5282516060815181875261356982880182613470565b91505087820151868203898801526135818282613470565b604093840151888203948901949094528351808252938a0193869350908a0191505b808310156135c757835161ffff1682529289019260019290920191908901906135a3565b509b88019b9550505091850191600101613547565b509198975050505050505050565b6000815160a084526135ff60a0850182613470565b905060206001600160401b03818501511681860152604080850151868403828801526080840181516080865281815180845260a08801915060a08160051b8901019350868301925060005b8181101561369d57888503609f19018352835180518652888101516001600160a01b0316898701528701516060888701819052613689818801836133bb565b96505050928701929187019160010161364a565b5050505083820151858203858701526136b68282613470565b9450505081810151848403838601526136cf84826134e0565b935050606081015191505082820360608401526136ec828261352b565b925050506060830151848203606086015261370782826133bb565b9150506080830151611d6f608086018215159052565b60208152600061373060208301846135ea565b9392505050565b80518252602081015160208301526000604082015160c0604085015261376060c0850182613408565b6060848101516001600160a01b03169086015260808085015115159086015260a0938401511515949093019390935250919050565b6020815260006137306020830184613737565b6080815260006137bb6080830187613737565b82810360208401526137cd81876135ea565b905082810360408401526137e181866135ea565b9150508260608301529594505050505056fea264697066735822122052627efb39c6a47ee5e7cde2b7c020ad00d9fa957333abaa2e58f37941774f3364736f6c634300080f0033", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"timeout\",\"type\":\"uint64\"}],\"name\":\"ChannelUpdate\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"channelID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State[]\",\"name\":\"subStates\",\"type\":\"tuple[]\"}],\"name\":\"conclude\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"concludeFinal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"disputes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timeout\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"challengeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"hasApp\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"hashState\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"stateOld\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"actorIdx\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"name\":\"progress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"internalType\":\"structAdjudicator.SignedState\",\"name\":\"channel\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"internalType\":\"structAdjudicator.SignedState[]\",\"name\":\"subChannels\",\"type\":\"tuple[]\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b506134e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637a114d3d1161005b5780637a114d3d1461014b578063db77bb271461016c578063e7c01d051461017f578063e9aa7e021461019257600080fd5b806311be1997146100825780634c8a2c901461012357806375a8722314610138575b600080fd5b6100dd6100903660046123a1565b6000602081905290815260409020805460018201546002909201546001600160401b0380831693600160401b8404821693600160801b81049092169260ff600160c01b9093048316921686565b604080516001600160401b0397881681529587166020870152939095169284019290925260ff166060830152608082015290151560a082015260c0015b60405180910390f35b610136610131366004612b29565b6101a5565b005b610136610146366004612c5e565b610438565b61015e610159366004612ce5565b6105a5565b60405190815260200161011a565b61015e61017a366004612d21565b6105be565b61013661018d366004612d55565b6105c9565b6101366101a0366004612edf565b61062c565b60006101b4846000015161065a565b8054909150600160c01b900460ff166102205780546001600160401b031642101561021b5760405162461bcd60e51b81526020600482015260126024820152711d1a5b595bdd5d081b9bdd081c185cdcd95960721b60448201526064015b60405180910390fd5b6102b7565b8054600019600160c01b90910460ff160161027f5780546001600160401b0316421061021b5760405162461bcd60e51b815260206004820152600e60248201526d1d1a5b595bdd5d081c185cdcd95960921b6044820152606401610212565b60405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420706861736560981b6044820152606401610212565b60608601516001600160a01b03166103015760405162461bcd60e51b815260206004820152600d60248201526c06d75737420686176652061707609c1b6044820152606401610212565b856040015151831061034d5760405162461bcd60e51b81526020600482015260156024820152746163746f72496478206f7574206f662072616e676560581b6044820152606401610212565b61035786856106b3565b610360856105a5565b8160010154146103a45760405162461bcd60e51b815260206004820152600f60248201526e77726f6e67206f6c6420737461746560881b6044820152606401610212565b6103d86103b085610700565b83886040015186815181106103c7576103c7612fc9565b602002602001015160000151610729565b6104185760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610212565b610424868686866107b2565b610430868560016108fe565b505050505050565b82608001516104595760405162461bcd60e51b815260040161021290612fdf565b608082015115156001146104a15760405162461bcd60e51b815260206004820152600f60248201526e1cdd185d19481b9bdd08199a5b985b608a1b6044820152606401610212565b60408201516060015151156104eb5760405162461bcd60e51b815260206004820152601060248201526f686173207375622d6368616e6e656c7360801b6044820152606401610212565b6104f583836106b3565b610500838383610ab7565b8151600090815260208190526040902060018101541580159061056e578154600119600160c01b90910460ff160161056e5760405162461bcd60e51b8152602060048201526011602482015270636f6e636c7564656420616c726561647960781b6044820152606401610212565b61057a858560026108fe565b61059e84600001518560400151600001518760400151876040015160400151610ba9565b5050505050565b60006105b082610700565b805190602001209050919050565b60006105b082610c82565b82608001516105ea5760405162461bcd60e51b815260040161021290612fdf565b6105f483836106b3565b6105fd82610c95565b600061060b83836000610e7a565b50835160408086015151908701519293506106269284610ba9565b50505050565b81516080015161064e5760405162461bcd60e51b815260040161021290612fdf565b61062682826000611205565b600081815260208190526040902060018101541515806106ad5760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd081c9959da5cdd195c995960921b6044820152606401610212565b50919050565b6106bc826105be565b8151146106fc5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c696420706172616d7360901b6044820152606401610212565b5050565b60608160405160200161071391906132c8565b6040516020818303038152906040529050919050565b60008061078a85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b905060006107988286611388565b6001600160a01b0390811690851614925050509392505050565b60208301516107c29060016132f8565b6001600160401b031682602001516001600160401b0316146108265760405162461bcd60e51b815260206004820152601d60248201527f76657273696f6e206d75737420696e6372656d656e74206279206f6e650000006044820152606401610212565b6080830151156108785760405162461bcd60e51b815260206004820181905260248201527f63616e6e6f742070726f67726573732066726f6d2066696e616c2073746174656044820152606401610212565b610890836040015183604001518660400151516113ac565b606084015160405163f7530b4160e01b81526001600160a01b0382169063f7530b41906108c79088908890889088906004016133e6565b60006040518083038186803b1580156108df57600080fd5b505afa1580156108f3573d6000803e3d6000fd5b505050505050505050565b81516000908152602081815260409091206001810154855182549386015177ffffffffffffffffffffffffffffffff000000000000000019909416600160401b6001600160401b039283160267ffffffffffffffff60801b191617600160801b9190941602929092178155606085015190911515906001600160a01b031615156002838101805460ff19169215159290921790915583908111156109a4576109a4612fb3565b825460ff91909116600160c01b0260ff60c01b199091161782556109c7846105a5565b60018301556080840151156109f557815467ffffffffffffffff1916426001600160401b0316178255610a4c565b801580610a0e5750815460ff600160c01b909104166001145b15610a4c578154610a2f90600160401b90046001600160401b0316426132f8565b825467ffffffffffffffff19166001600160401b03919091161782555b83516040805160c08101825284546001600160401b038082168352600160401b820481166020840152600160801b82041692820192909252600160c01b90910460ff908116606083015260018501546080830152600285015416151560a082015261059e9190611697565b6000610ac283610700565b9050815184604001515114610b195760405162461bcd60e51b815260206004820152601a60248201527f7369676e617475726573206c656e677468206d69736d617463680000000000006044820152606401610212565b60005b825181101561059e57610b5982848381518110610b3b57610b3b612fc9565b6020026020010151876040015184815181106103c7576103c7612fc9565b610b995760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610212565b610ba281613431565b9050610b1c565b60005b835181101561059e576000848281518110610bc957610bc9612fc9565b6020026020010151905046816000015103610c715760208101516001600160a01b031615610c715780602001516001600160a01b031663295482ce8786868681518110610c1857610c18612fc9565b60200260200101516040518463ffffffff1660e01b8152600401610c3e9392919061344a565b600060405180830381600087803b158015610c5857600080fd5b505af1158015610c6c573d6000803e3d6000fd5b505050505b50610c7b81613431565b9050610bac565b606081604051602001610713919061347f565b6000610ca4826000015161065a565b9050610caf826105a5565b816001015414610cf15760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420737461746560981b6044820152606401610212565b8054600119600160c01b90910460ff1601610d425760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb98db1d591959607a1b6044820152606401610212565b8054600160c01b900460ff16158015610d5f5750600281015460ff165b15610d9f578054610d82906001600160401b03600160401b8204811691166132f8565b815467ffffffffffffffff19166001600160401b03919091161781555b80546001600160401b0316421015610df25760405162461bcd60e51b81526020600482015260166024820152751d1a5b595bdd5d081b9bdd081c185cdcd959081e595d60521b6044820152606401610212565b60025b815460ff60c01b198116600160c01b60ff938416810291821780865586516040805160c0810182526001600160401b03968716958716959095178552600160401b830486166020860152600160801b8304909516948401949094520483166060820152600184015460808201526002840154909216151560a08301526106fc91611697565b60606000610e8785611789565b60408501515180516001600160401b03811115610ea657610ea66123ba565b604051908082528060200260200182016040528015610ed957816020015b6060815260200190600190039081610ec45790505b50925060005b815181101561100e5760008760400151604001518281518110610f0457610f04612fc9565b6020026020010151905080516001600160401b03811115610f2757610f276123ba565b604051908082528060200260200182016040528015610f50578160200160208202803683370190505b50858381518110610f6357610f63612fc9565b602002602001018190525060005b8151811015610ffb578860400151604001518381518110610f9457610f94612fc9565b60200260200101518181518110610fad57610fad612fc9565b6020026020010151868481518110610fc757610fc7612fc9565b60200260200101518281518110610fe057610fe0612fc9565b6020908102919091010152610ff481613431565b9050610f71565b50508061100790613431565b9050610edf565b5060408601516060015184925060005b81518110156111fa57600082828151811061103b5761103b612fc9565b60200260200101519050600088868061105390613431565b97508151811061106557611065612fc9565b6020026020010151905080600001518260000151146110be5760405162461bcd60e51b81526020600482015260156024820152741a5b9d985b1a59081cdd5898da185b9b995b081a59605a1b6044820152606401610212565b60606110cb828b89610e7a565b604085015190985090915060005b87518110156111e45760005b82518110156111d357600084838151811061110257611102612fc9565b6020026020010151828151811061111b5761111b612fc9565b60200260200101519050600084838151811061113957611139612fc9565b60200260200101519050818d858151811061115657611156612fc9565b60200260200101518261ffff168151811061117357611173612fc9565b60200260200101516111859190613492565b8d858151811061119757611197612fc9565b60200260200101518261ffff16815181106111b4576111b4612fc9565b6020026020010181815250505050806111cc90613431565b90506110e5565b506111dd81613431565b90506110d9565b5050505050806111f390613431565b905061101e565b505050935093915050565b6020830151604001518051606091839161121e87611800565b61122b8260400151611a5c565b93506000826060015190508651815111156112805760405162461bcd60e51b81526020600482015260156024820152741cdd5890da185b9b995b1cc81d1bdbc81cda1bdc9d605a1b6044820152606401610212565b60005b815181101561137c576000888661129981613431565b9750815181106112ab576112ab612fc9565b602002602001015190506000808484815181106112ca576112ca612fc9565b6020026020010151836020015191509150806000015182600001511461132b5760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081cdd588b58da185b9b995b081a5960521b6044820152606401610212565b6060611338848d8b611205565b604084015151909a5090915061134f908890611b57565b61135d836020015182611bf8565b6113678a82611ce6565b505050508061137590613431565b9050611283565b50505050935093915050565b60008060006113978585611d5d565b915091506113a481611dcb565b509392505050565b816040015151836040015151146114055760405162461bcd60e51b815260206004820152601860248201527f62616c616e636573206c656e677468206d69736d6174636800000000000000006044820152606401610212565b815151835151146114515760405162461bcd60e51b81526020600482015260166024820152750c2e6e6cae8e640d8cadccee8d040dad2e6dac2e8c6d60531b6044820152606401610212565b61146383606001518360600151611f84565b60005b825151811015610626576114b48460000151828151811061148957611489612fc9565b6020026020010151846000015183815181106114a7576114a7612fc9565b602002602001015161202d565b60008083866040015184815181106114ce576114ce612fc9565b602002602001015151146115245760405162461bcd60e51b815260206004820152601c60248201527f6f6c642062616c616e636573206c656e677468206d69736d61746368000000006044820152606401610212565b838560400151848151811061153b5761153b612fc9565b602002602001015151146115915760405162461bcd60e51b815260206004820152601c60248201527f6e65772062616c616e636573206c656e677468206d69736d61746368000000006044820152606401610212565b60005b8481101561163457866040015184815181106115b2576115b2612fc9565b602002602001015181815181106115cb576115cb612fc9565b6020026020010151836115de9190613492565b9250856040015184815181106115f6576115f6612fc9565b6020026020010151818151811061160f5761160f612fc9565b6020026020010151826116229190613492565b915061162d81613431565b9050611594565b508082146116845760405162461bcd60e51b815260206004820152601860248201527f73756d206f662062616c616e636573206d69736d6174636800000000000000006044820152606401610212565b50508061169090613431565b9050611466565b600082815260208181526040918290208351815485840151868601516060808901516001600160401b039586166fffffffffffffffffffffffffffffffff199095168517600160401b948716949094029390931768ffffffffffffffffff60801b1916600160801b9590921694850260ff60c01b191691909117600160c01b60ff9093169283021785556080880151600186015560a08801516002909501805460ff1916951515959095179094558551928352938201939093529283019190915283917f895ef5a5fc3efd313a300b006d6ce97ff0670dfe04f6eea90417edf924fa786b910160405180910390a25050565b6000611798826000015161065a565b90506117a3826105a5565b8160010154146117e55760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420737461746560981b6044820152606401610212565b805460ff600160c01b909104166002146106fc576002610df5565b8051602082015161181182826106b3565b61182082828560400151610ab7565b8160a00151156118bd5760608201516001600160a01b0316156118775760405162461bcd60e51b815260206004820152600f60248201526e063616e6e6f7420686176652061707608c1b6044820152606401610212565b60408101516060015151156118bd5760405162461bcd60e51b815260206004820152600c60248201526b199d5b991cc81b1bd8dad95960a21b6044820152606401610212565b8051600090815260208181526040918290206001810154835160c08101855282546001600160401b038082168352600160401b8204811695830195909552600160801b810490941694810194909452600160c01b90920460ff90811660608501526080840183905260029091015416151560a083015215801590611a5057611944836105a5565b826080015103611955575050505050565b82602001516001600160401b031682604001516001600160401b0316106119b05760405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b2103b32b939b4b7b760891b6044820152606401610212565b606082015160ff16156119f75760405162461bcd60e51b815260206004820152600f60248201526e696e636f727265637420706861736560881b6044820152606401610212565b81516001600160401b03164210611a505760405162461bcd60e51b815260206004820152601960248201527f72656675746174696f6e2074696d656f757420706173736564000000000000006044820152606401610212565b61059e848460006108fe565b606081516001600160401b03811115611a7757611a776123ba565b604051908082528060200260200182016040528015611aa0578160200160208202803683370190505b50905060005b82518110156106ad576000838281518110611ac357611ac3612fc9565b6020026020010151905060005b8151811015611b4457818181518110611aeb57611aeb612fc9565b6020026020010151848481518110611b0557611b05612fc9565b6020026020010151611b179190613492565b848481518110611b2957611b29612fc9565b6020908102919091010152611b3d81613431565b9050611ad0565b505080611b5090613431565b9050611aa6565b8051825114611ba85760405162461bcd60e51b815260206004820152601760248201527f41737365745b5d3a20756e657175616c206c656e6774680000000000000000006044820152606401610212565b60005b8251811015611bf357611be3838281518110611bc957611bc9612fc9565b60200260200101518383815181106114a7576114a7612fc9565b611bec81613431565b9050611bab565b505050565b8051825114611c495760405162461bcd60e51b815260206004820152601960248201527f75696e743235365b5d3a20756e657175616c206c656e677468000000000000006044820152606401610212565b60005b8251811015611bf357818181518110611c6757611c67612fc9565b6020026020010151838281518110611c8157611c81612fc9565b602002602001015114611cd65760405162461bcd60e51b815260206004820152601760248201527f75696e743235365b5d3a20756e657175616c206974656d0000000000000000006044820152606401610212565b611cdf81613431565b9050611c4c565b60005b8251811015611bf357818181518110611d0457611d04612fc9565b6020026020010151838281518110611d1e57611d1e612fc9565b6020026020010151611d309190613492565b838281518110611d4257611d42612fc9565b6020908102919091010152611d5681613431565b9050611ce9565b6000808251604103611d935760208301516040840151606085015160001a611d8787828585612125565b94509450505050611dc4565b8251604003611dbc5760208301516040840151611db1868383612212565b935093505050611dc4565b506000905060025b9250929050565b6000816004811115611ddf57611ddf612fb3565b03611de75750565b6001816004811115611dfb57611dfb612fb3565b03611e485760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610212565b6002816004811115611e5c57611e5c612fb3565b03611ea95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610212565b6003816004811115611ebd57611ebd612fb3565b03611f155760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610212565b6004816004811115611f2957611f29612fb3565b03611f815760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610212565b50565b8051825114611fd55760405162461bcd60e51b815260206004820152601a60248201527f537562416c6c6f635b5d3a20756e657175616c206c656e6774680000000000006044820152606401610212565b60005b8251811015611bf35761201d838281518110611ff657611ff6612fc9565b602002602001015183838151811061201057612010612fc9565b602002602001015161224b565b61202681613431565b9050611fd8565b80518251146120705760405162461bcd60e51b815260206004820152600f60248201526e1d5b995c5d585b0818da185a5b9251608a1b6044820152606401610212565b80602001516001600160a01b031682602001516001600160a01b0316146120cd5760405162461bcd60e51b81526020600482015260116024820152703ab732b8bab0b61032ba342437b63232b960791b6044820152606401610212565b806040015180519060200120826040015180519060200120146106fc5760405162461bcd60e51b815260206004820152601060248201526f3ab732b8bab0b61031b1a437b63232b960811b6044820152606401610212565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561215c5750600090506003612209565b8460ff16601b1415801561217457508460ff16601c14155b156121855750600090506004612209565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156121d9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661220257600060019250925050612209565b9150600090505b94509492505050565b6000806001600160ff1b0383168161222f60ff86901c601b613492565b905061223d87828885612125565b935093505050935093915050565b80518251146122935760405162461bcd60e51b815260206004820152601460248201527314dd58905b1b1bd8ce881d5b995c5d585b08125160621b6044820152606401610212565b6122a582602001518260200151611bf8565b6106fc8260400151826040015180518251146123035760405162461bcd60e51b815260206004820152601860248201527f75696e7431365b5d3a20756e657175616c206c656e67746800000000000000006044820152606401610212565b60005b8251811015611bf35781818151811061232157612321612fc9565b602002602001015161ffff1683828151811061233f5761233f612fc9565b602002602001015161ffff16146123915760405162461bcd60e51b815260206004820152601660248201527575696e7431365b5d3a20756e657175616c206974656d60501b6044820152606401610212565b61239a81613431565b9050612306565b6000602082840312156123b357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156123f2576123f26123ba565b60405290565b604080519081016001600160401b03811182821017156123f2576123f26123ba565b604051606081016001600160401b03811182821017156123f2576123f26123ba565b604051608081016001600160401b03811182821017156123f2576123f26123ba565b60405160a081016001600160401b03811182821017156123f2576123f26123ba565b604051601f8201601f191681016001600160401b03811182821017156124a8576124a86123ba565b604052919050565b60006001600160401b038211156124c9576124c96123ba565b5060051b60200190565b80356001600160a01b03811681146124ea57600080fd5b919050565b600082601f83011261250057600080fd5b81356001600160401b03811115612519576125196123ba565b61252c601f8201601f1916602001612480565b81815284602083860101111561254157600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146124ea57600080fd5b600060c0828403121561258057600080fd5b6125886123d0565b905081358152602080830135818301526040808401356001600160401b03808211156125b357600080fd5b818601915086601f8301126125c757600080fd5b81356125da6125d5826124b0565b612480565b81815260059190911b830185019085810190898311156125f957600080fd5b8685015b83811015612673578035858111156126155760008081fd5b8601808c03601f190188131561262b5760008081fd5b6126336123f8565b61263e8a83016124d3565b815288820135878111156126525760008081fd5b6126608e8c838601016124ef565b828c0152508452509187019187016125fd565b5080868901525050505050505061268c606083016124d3565b606082015261269d6080830161255e565b60808201526126ae60a0830161255e565b60a082015292915050565b600082601f8301126126ca57600080fd5b813560206126da6125d5836124b0565b82815260059290921b840181019181810190868411156126f957600080fd5b8286015b8481101561278b5780356001600160401b038082111561271d5760008081fd5b908801906060828b03601f19018113156127375760008081fd5b61273f61241a565b87840135815260406127528186016124d3565b828a01529184013591838311156127695760008081fd5b6127778d8a858801016124ef565b9082015286525050509183019183016126fd565b509695505050505050565b600082601f8301126127a757600080fd5b813560206127b76125d5836124b0565b82815260059290921b840181019181810190868411156127d657600080fd5b8286015b8481101561278b57803583529183019183016127da565b600082601f83011261280257600080fd5b813560206128126125d5836124b0565b82815260059290921b8401810191818101908684111561283157600080fd5b8286015b8481101561278b5780356001600160401b038111156128545760008081fd5b6128628986838b0101612796565b845250918301918301612835565b600082601f83011261288157600080fd5b813560206128916125d5836124b0565b828152600592831b85018201928282019190878511156128b057600080fd5b8387015b858110156129c05780356001600160401b03808211156128d45760008081fd5b908901906060828c03601f19018113156128ee5760008081fd5b6128f661241a565b888401358152604080850135848111156129105760008081fd5b61291e8f8c83890101612796565b838c0152509184013591838311156129365760008081fd5b82850194508d603f86011261294d57600093508384fd5b89850135935061295f6125d5856124b0565b84815293871b85018101938a810193508e85111561297d5760008081fd5b948101945b848610156129ac57853561ffff8116811461299d5760008081fd5b8452948a0194928a0192612982565b9082015287525050509284019284016128b4565b5090979650505050505050565b6000608082840312156129df57600080fd5b6129e761243c565b905081356001600160401b0380821115612a0057600080fd5b612a0c858386016126b9565b83526020840135915080821115612a2257600080fd5b612a2e85838601612796565b60208401526040840135915080821115612a4757600080fd5b612a53858386016127f1565b60408401526060840135915080821115612a6c57600080fd5b50612a7984828501612870565b60608301525092915050565b600060a08284031215612a9757600080fd5b612a9f61245e565b90508135815260208201356001600160401b038082168214612ac057600080fd5b8160208401526040840135915080821115612ada57600080fd5b612ae6858386016129cd565b60408401526060840135915080821115612aff57600080fd5b50612b0c848285016124ef565b606083015250612b1e6080830161255e565b608082015292915050565b600080600080600060a08688031215612b4157600080fd5b85356001600160401b0380821115612b5857600080fd5b612b6489838a0161256e565b96506020880135915080821115612b7a57600080fd5b612b8689838a01612a85565b95506040880135915080821115612b9c57600080fd5b612ba889838a01612a85565b9450606088013593506080880135915080821115612bc557600080fd5b50612bd2888289016124ef565b9150509295509295909350565b600082601f830112612bf057600080fd5b81356020612c006125d5836124b0565b82815260059290921b84018101918181019086841115612c1f57600080fd5b8286015b8481101561278b5780356001600160401b03811115612c425760008081fd5b612c508986838b01016124ef565b845250918301918301612c23565b600080600060608486031215612c7357600080fd5b83356001600160401b0380821115612c8a57600080fd5b612c968783880161256e565b94506020860135915080821115612cac57600080fd5b612cb887838801612a85565b93506040860135915080821115612cce57600080fd5b50612cdb86828701612bdf565b9150509250925092565b600060208284031215612cf757600080fd5b81356001600160401b03811115612d0d57600080fd5b612d1984828501612a85565b949350505050565b600060208284031215612d3357600080fd5b81356001600160401b03811115612d4957600080fd5b612d198482850161256e565b600080600060608486031215612d6a57600080fd5b83356001600160401b0380821115612d8157600080fd5b612d8d8783880161256e565b9450602091508186013581811115612da457600080fd5b612db088828901612a85565b945050604086013581811115612dc557600080fd5b8601601f81018813612dd657600080fd5b8035612de46125d5826124b0565b81815260059190911b8201840190848101908a831115612e0357600080fd5b8584015b83811015612e3b57803586811115612e1f5760008081fd5b612e2d8d8983890101612a85565b845250918601918601612e07565b508096505050505050509250925092565b600060608284031215612e5e57600080fd5b612e6661241a565b905081356001600160401b0380821115612e7f57600080fd5b612e8b8583860161256e565b83526020840135915080821115612ea157600080fd5b612ead85838601612a85565b60208401526040840135915080821115612ec657600080fd5b50612ed384828501612bdf565b60408301525092915050565b60008060408385031215612ef257600080fd5b82356001600160401b0380821115612f0957600080fd5b612f1586838701612e4c565b9350602091508185013581811115612f2c57600080fd5b8501601f81018713612f3d57600080fd5b8035612f4b6125d5826124b0565b81815260059190911b82018401908481019089831115612f6a57600080fd5b8584015b83811015612fa257803586811115612f865760008081fd5b612f948c8983890101612e4c565b845250918601918601612f6e565b508096505050505050509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252600a90820152693737ba103632b233b2b960b11b604082015260600190565b6000815180845260005b818110156130295760208185018101518683018201520161300d565b8181111561303b576000602083870101525b50601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561308057815187529582019590820190600101613064565b509495945050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156130d35782840389526130c1848351613050565b988501989350908401906001016130a9565b5091979650505050505050565b600081518084526020808501808196508360051b810191508286016000805b86811015613184578385038a52825160608151875287820151818989015261312982890182613050565b604093840151898203948a01949094528351808252938a0193869350908a0191505b8083101561316f57835161ffff16825292890192600192909201919089019061314b565b509b88019b96505050918501916001016130ff565b509298975050505050505050565b80518252600060206001600160401b0381840151168185015260408084015160a08287015261012086018151608060a08901528181518084526101409350838a019150838160051b8b01019350868301925060005b8181101561323b578a850361013f19018352835180518652888101516001600160a01b031689870152870151606088870181905261322781880183613003565b9650505092870192918701916001016131e7565b50505050838201519350609f19808883030160c089015261325c8286613050565b93830151888503820160e08a0152939450613277858561308b565b945060608301519350808886030161010089015250505061329882826130e0565b915050606083015184820360608601526132b28282613003565b91505060808301516113a4608086018215159052565b6020815260006132db6020830184613192565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681851680830382111561331a5761331a6132e2565b01949350505050565b600081518084526020808501808196508360051b8101915082860160005b858110156130d3578284038952815180516001600160a01b03168552850151604086860181905261337481870183613003565b9a87019a9550505090840190600101613341565b80518252602081015160208301526000604082015160c060408501526133b160c0850182613323565b6060848101516001600160a01b03169086015260808085015115159086015260a0938401511515949093019390935250919050565b6080815260006133f96080830187613388565b828103602084015261340b8187613192565b9050828103604084015261341f8186613192565b91505082606083015295945050505050565b600060018201613443576134436132e2565b5060010190565b8381526060602082015260006134636060830185613323565b82810360408401526134758185613050565b9695505050505050565b6020815260006132db6020830184613388565b600082198211156134a5576134a56132e2565b50019056fea2646970667358221220a342f2fe3a5c8ef0f7c77f81be0cfdcbc9d4e8a59dc87d2afef9a1ebedb2e08b64736f6c634300080f0033", } // AdjudicatorABI is the input ABI used to generate the binding from. @@ -352,9 +352,9 @@ func (_Adjudicator *AdjudicatorCallerSession) Disputes(arg0 [32]byte) (struct { return _Adjudicator.Contract.Disputes(&_Adjudicator.CallOpts, arg0) } -// HashState is a free data retrieval call binding the contract method 0x84889000. +// HashState is a free data retrieval call binding the contract method 0x7a114d3d. // -// Solidity: function hashState((bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state) pure returns(bytes32) +// Solidity: function hashState((bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state) pure returns(bytes32) func (_Adjudicator *AdjudicatorCaller) HashState(opts *bind.CallOpts, state ChannelState) ([32]byte, error) { var out []interface{} err := _Adjudicator.contract.Call(opts, &out, "hashState", state) @@ -369,100 +369,100 @@ func (_Adjudicator *AdjudicatorCaller) HashState(opts *bind.CallOpts, state Chan } -// HashState is a free data retrieval call binding the contract method 0x84889000. +// HashState is a free data retrieval call binding the contract method 0x7a114d3d. // -// Solidity: function hashState((bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state) pure returns(bytes32) +// Solidity: function hashState((bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state) pure returns(bytes32) func (_Adjudicator *AdjudicatorSession) HashState(state ChannelState) ([32]byte, error) { return _Adjudicator.Contract.HashState(&_Adjudicator.CallOpts, state) } -// HashState is a free data retrieval call binding the contract method 0x84889000. +// HashState is a free data retrieval call binding the contract method 0x7a114d3d. // -// Solidity: function hashState((bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state) pure returns(bytes32) +// Solidity: function hashState((bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state) pure returns(bytes32) func (_Adjudicator *AdjudicatorCallerSession) HashState(state ChannelState) ([32]byte, error) { return _Adjudicator.Contract.HashState(&_Adjudicator.CallOpts, state) } -// Conclude is a paid mutator transaction binding the contract method 0x4176e7ae. +// Conclude is a paid mutator transaction binding the contract method 0xe7c01d05. // -// Solidity: function conclude((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool)[] subStates) returns() +// Solidity: function conclude((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool)[] subStates) returns() func (_Adjudicator *AdjudicatorTransactor) Conclude(opts *bind.TransactOpts, params ChannelParams, state ChannelState, subStates []ChannelState) (*types.Transaction, error) { return _Adjudicator.contract.Transact(opts, "conclude", params, state, subStates) } -// Conclude is a paid mutator transaction binding the contract method 0x4176e7ae. +// Conclude is a paid mutator transaction binding the contract method 0xe7c01d05. // -// Solidity: function conclude((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool)[] subStates) returns() +// Solidity: function conclude((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool)[] subStates) returns() func (_Adjudicator *AdjudicatorSession) Conclude(params ChannelParams, state ChannelState, subStates []ChannelState) (*types.Transaction, error) { return _Adjudicator.Contract.Conclude(&_Adjudicator.TransactOpts, params, state, subStates) } -// Conclude is a paid mutator transaction binding the contract method 0x4176e7ae. +// Conclude is a paid mutator transaction binding the contract method 0xe7c01d05. // -// Solidity: function conclude((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool)[] subStates) returns() +// Solidity: function conclude((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool)[] subStates) returns() func (_Adjudicator *AdjudicatorTransactorSession) Conclude(params ChannelParams, state ChannelState, subStates []ChannelState) (*types.Transaction, error) { return _Adjudicator.Contract.Conclude(&_Adjudicator.TransactOpts, params, state, subStates) } -// ConcludeFinal is a paid mutator transaction binding the contract method 0x4c330775. +// ConcludeFinal is a paid mutator transaction binding the contract method 0x75a87223. // -// Solidity: function concludeFinal((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state, bytes[] sigs) returns() +// Solidity: function concludeFinal((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state, bytes[] sigs) returns() func (_Adjudicator *AdjudicatorTransactor) ConcludeFinal(opts *bind.TransactOpts, params ChannelParams, state ChannelState, sigs [][]byte) (*types.Transaction, error) { return _Adjudicator.contract.Transact(opts, "concludeFinal", params, state, sigs) } -// ConcludeFinal is a paid mutator transaction binding the contract method 0x4c330775. +// ConcludeFinal is a paid mutator transaction binding the contract method 0x75a87223. // -// Solidity: function concludeFinal((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state, bytes[] sigs) returns() +// Solidity: function concludeFinal((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state, bytes[] sigs) returns() func (_Adjudicator *AdjudicatorSession) ConcludeFinal(params ChannelParams, state ChannelState, sigs [][]byte) (*types.Transaction, error) { return _Adjudicator.Contract.ConcludeFinal(&_Adjudicator.TransactOpts, params, state, sigs) } -// ConcludeFinal is a paid mutator transaction binding the contract method 0x4c330775. +// ConcludeFinal is a paid mutator transaction binding the contract method 0x75a87223. // -// Solidity: function concludeFinal((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state, bytes[] sigs) returns() +// Solidity: function concludeFinal((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state, bytes[] sigs) returns() func (_Adjudicator *AdjudicatorTransactorSession) ConcludeFinal(params ChannelParams, state ChannelState, sigs [][]byte) (*types.Transaction, error) { return _Adjudicator.Contract.ConcludeFinal(&_Adjudicator.TransactOpts, params, state, sigs) } -// Progress is a paid mutator transaction binding the contract method 0xe9bc418d. +// Progress is a paid mutator transaction binding the contract method 0x4c8a2c90. // -// Solidity: function progress((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) stateOld, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state, uint256 actorIdx, bytes sig) returns() +// Solidity: function progress((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) stateOld, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state, uint256 actorIdx, bytes sig) returns() func (_Adjudicator *AdjudicatorTransactor) Progress(opts *bind.TransactOpts, params ChannelParams, stateOld ChannelState, state ChannelState, actorIdx *big.Int, sig []byte) (*types.Transaction, error) { return _Adjudicator.contract.Transact(opts, "progress", params, stateOld, state, actorIdx, sig) } -// Progress is a paid mutator transaction binding the contract method 0xe9bc418d. +// Progress is a paid mutator transaction binding the contract method 0x4c8a2c90. // -// Solidity: function progress((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) stateOld, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state, uint256 actorIdx, bytes sig) returns() +// Solidity: function progress((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) stateOld, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state, uint256 actorIdx, bytes sig) returns() func (_Adjudicator *AdjudicatorSession) Progress(params ChannelParams, stateOld ChannelState, state ChannelState, actorIdx *big.Int, sig []byte) (*types.Transaction, error) { return _Adjudicator.Contract.Progress(&_Adjudicator.TransactOpts, params, stateOld, state, actorIdx, sig) } -// Progress is a paid mutator transaction binding the contract method 0xe9bc418d. +// Progress is a paid mutator transaction binding the contract method 0x4c8a2c90. // -// Solidity: function progress((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) stateOld, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) state, uint256 actorIdx, bytes sig) returns() +// Solidity: function progress((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) stateOld, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) state, uint256 actorIdx, bytes sig) returns() func (_Adjudicator *AdjudicatorTransactorSession) Progress(params ChannelParams, stateOld ChannelState, state ChannelState, actorIdx *big.Int, sig []byte) (*types.Transaction, error) { return _Adjudicator.Contract.Progress(&_Adjudicator.TransactOpts, params, stateOld, state, actorIdx, sig) } -// Register is a paid mutator transaction binding the contract method 0xc5457f0d. +// Register is a paid mutator transaction binding the contract method 0xe9aa7e02. // -// Solidity: function register(((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool),bytes[]) channel, ((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool),bytes[])[] subChannels) returns() +// Solidity: function register(((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool),bytes[]) channel, ((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool),bytes[])[] subChannels) returns() func (_Adjudicator *AdjudicatorTransactor) Register(opts *bind.TransactOpts, channel AdjudicatorSignedState, subChannels []AdjudicatorSignedState) (*types.Transaction, error) { return _Adjudicator.contract.Transact(opts, "register", channel, subChannels) } -// Register is a paid mutator transaction binding the contract method 0xc5457f0d. +// Register is a paid mutator transaction binding the contract method 0xe9aa7e02. // -// Solidity: function register(((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool),bytes[]) channel, ((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool),bytes[])[] subChannels) returns() +// Solidity: function register(((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool),bytes[]) channel, ((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool),bytes[])[] subChannels) returns() func (_Adjudicator *AdjudicatorSession) Register(channel AdjudicatorSignedState, subChannels []AdjudicatorSignedState) (*types.Transaction, error) { return _Adjudicator.Contract.Register(&_Adjudicator.TransactOpts, channel, subChannels) } -// Register is a paid mutator transaction binding the contract method 0xc5457f0d. +// Register is a paid mutator transaction binding the contract method 0xe9aa7e02. // -// Solidity: function register(((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool),bytes[]) channel, ((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool),bytes[])[] subChannels) returns() +// Solidity: function register(((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool),bytes[]) channel, ((uint256,uint256,(address,bytes)[],address,bool,bool),(bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool),bytes[])[] subChannels) returns() func (_Adjudicator *AdjudicatorTransactorSession) Register(channel AdjudicatorSignedState, subChannels []AdjudicatorSignedState) (*types.Transaction, error) { return _Adjudicator.Contract.Register(&_Adjudicator.TransactOpts, channel, subChannels) } diff --git a/bindings/adjudicator/AdjudicatorBinRuntime.go b/bindings/adjudicator/AdjudicatorBinRuntime.go index cfd85fd..e11f6d2 100644 --- a/bindings/adjudicator/AdjudicatorBinRuntime.go +++ b/bindings/adjudicator/AdjudicatorBinRuntime.go @@ -1,4 +1,4 @@ package adjudicator // import "github.com/perun-network/perun-eth-backend/bindings/adjudicator" // AdjudicatorBinRuntime is the runtime part of the compiled bytecode used for deploying new contracts. -var AdjudicatorBinRuntime = "608060405234801561001057600080fd5b506004361061007d5760003560e01c8063848890001161005b578063848890001461014b578063c5457f0d1461016c578063db77bb271461017f578063e9bc418d1461019257600080fd5b806311be1997146100825780634176e7ae146101235780634c33077514610138575b600080fd5b6100dd6100903660046126a2565b6000602081905290815260409020805460018201546002909201546001600160401b0380831693600160401b8404821693600160801b81049092169260ff600160c01b9093048316921686565b604080516001600160401b0397881681529587166020870152939095169284019290925260ff166060830152608082015290151560a082015260c0015b60405180910390f35b610136610131366004612e6f565b6101a5565b005b610136610146366004612fe5565b610211565b61015e61015936600461306c565b6103c8565b60405190815260200161011a565b61013661017a36600461313b565b6103e1565b61015e61018d36600461320f565b61040f565b6101366101a0366004613243565b61041a565b82608001516101cf5760405162461bcd60e51b81526004016101c6906132f9565b60405180910390fd5b6101d983836106dc565b6101e28261075e565b60006101f0838360006109a3565b508351604080860151519087015192935061020b9284610d35565b50505050565b82608001516102325760405162461bcd60e51b81526004016101c6906132f9565b6080820151151560011461027a5760405162461bcd60e51b815260206004820152600f60248201526e1cdd185d19481b9bdd08199a5b985b608a1b60448201526064016101c6565b60408201516060015151156102c45760405162461bcd60e51b815260206004820152601060248201526f686173207375622d6368616e6e656c7360801b60448201526064016101c6565b6102ce83836106dc565b6102d9838383610e27565b60008061033684600001516102fa8660000151876040015160200151610f19565b6001600160401b0316815181106103135761031361331d565b602002602001015160009081526020819052604090206001810154909190151590565b915091508015610391578154600119600160c01b90910460ff16016103915760405162461bcd60e51b8152602060048201526011602482015270636f6e636c7564656420616c726561647960781b60448201526064016101c6565b61039d85856002610fd1565b6103c184600001518560400151600001518760400151876040015160400151610d35565b5050505050565b60006103d3826111da565b805190602001209050919050565b8151608001516104035760405162461bcd60e51b81526004016101c6906132f9565b61020b82826000611203565b60006103d38261138d565b825160408401516020015160009161045d91610437908290610f19565b6001600160401b0316815181106104505761045061331d565b60200260200101516113a0565b8054909150600160c01b900460ff166104c45780546001600160401b03164210156104bf5760405162461bcd60e51b81526020600482015260126024820152711d1a5b595bdd5d081b9bdd081c185cdcd95960721b60448201526064016101c6565b61055b565b8054600019600160c01b90910460ff16016105235780546001600160401b031642106104bf5760405162461bcd60e51b815260206004820152600e60248201526d1d1a5b595bdd5d081c185cdcd95960921b60448201526064016101c6565b60405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420706861736560981b60448201526064016101c6565b60608601516001600160a01b03166105a55760405162461bcd60e51b815260206004820152600d60248201526c06d75737420686176652061707609c1b60448201526064016101c6565b85604001515183106105f15760405162461bcd60e51b81526020600482015260156024820152746163746f72496478206f7574206f662072616e676560581b60448201526064016101c6565b6105fb86856106dc565b610604856103c8565b8160010154146106485760405162461bcd60e51b815260206004820152600f60248201526e77726f6e67206f6c6420737461746560881b60448201526064016101c6565b61067c610654856111da565b838860400151868151811061066b5761066b61331d565b6020026020010151600001516113f9565b6106bc5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b60448201526064016101c6565b6106c886868686611482565b6106d486856001610fd1565b505050505050565b6106e58261040f565b81516040830151602001516106fb908290610f19565b6001600160401b0316815181106107145761071461331d565b60200260200101511461075a5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c696420706172616d7360901b60448201526064016101c6565b5050565b60006107768260000151836040015160200151610f19565b9050600061079c8360000151836001600160401b0316815181106104505761045061331d565b90506107a7836103c8565b8160010154146107e95760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420737461746560981b60448201526064016101c6565b8054600119600160c01b90910460ff160161083a5760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb98db1d591959607a1b60448201526064016101c6565b8054600160c01b900460ff161580156108575750600281015460ff165b1561089757805461087a906001600160401b03600160401b82048116911661335f565b815467ffffffffffffffff19166001600160401b03919091161781555b80546001600160401b03164210156108ea5760405162461bcd60e51b81526020600482015260166024820152751d1a5b595bdd5d081b9bdd081c185cdcd959081e595d60521b60448201526064016101c6565b60025b815460ff91909116600160c01b0260ff60c01b199091161781558251805161099e91906001600160401b0385169081106109295761092961331d565b6020908102919091018101516040805160c08101825285546001600160401b038082168352600160401b8204811695830195909552600160801b810490941691810191909152600160c01b90920460ff908116606084015260018501546080840152600285015416151560a0830152906115cd565b505050565b606060006109b0856116bf565b60408501515180516001600160401b038111156109cf576109cf6126bb565b604051908082528060200260200182016040528015610a0257816020015b60608152602001906001900390816109ed5790505b50925060005b8151811015610b375760008760400151604001518281518110610a2d57610a2d61331d565b6020026020010151905080516001600160401b03811115610a5057610a506126bb565b604051908082528060200260200182016040528015610a79578160200160208202803683370190505b50858381518110610a8c57610a8c61331d565b602002602001018190525060005b8151811015610b24578860400151604001518381518110610abd57610abd61331d565b60200260200101518181518110610ad657610ad661331d565b6020026020010151868481518110610af057610af061331d565b60200260200101518281518110610b0957610b0961331d565b6020908102919091010152610b1d8161338a565b9050610a9a565b505080610b309061338a565b9050610a08565b5060408601516060015184925060005b8151811015610d2a576000828281518110610b6457610b6461331d565b602002602001015190506000888680610b7c9061338a565b975081518110610b8e57610b8e61331d565b60200260200101519050610baa82600001518260000151611765565b610bee5760405162461bcd60e51b81526020600482015260156024820152741a5b9d985b1a59081cdd5898da185b9b995b081a59605a1b60448201526064016101c6565b6060610bfb828b896109a3565b604085015190985090915060005b8751811015610d145760005b8251811015610d03576000848381518110610c3257610c3261331d565b60200260200101518281518110610c4b57610c4b61331d565b602002602001015190506000848381518110610c6957610c6961331d565b60200260200101519050818d8581518110610c8657610c8661331d565b60200260200101518261ffff1681518110610ca357610ca361331d565b6020026020010151610cb591906133a3565b8d8581518110610cc757610cc761331d565b60200260200101518261ffff1681518110610ce457610ce461331d565b602002602001018181525050505080610cfc9061338a565b9050610c15565b50610d0d8161338a565b9050610c09565b505050505080610d239061338a565b9050610b47565b505050935093915050565b60005b83518110156103c1576000848281518110610d5557610d5561331d565b6020026020010151905046816000015103610e165760208101516001600160a01b031615610e165780602001516001600160a01b031663295482ce878481518110610da257610da261331d565b602002602001015186868681518110610dbd57610dbd61331d565b60200260200101516040518463ffffffff1660e01b8152600401610de3939291906134ab565b600060405180830381600087803b158015610dfd57600080fd5b505af1158015610e11573d6000803e3d6000fd5b505050505b50610e208161338a565b9050610d38565b6000610e32836111da565b9050815184604001515114610e895760405162461bcd60e51b815260206004820152601a60248201527f7369676e617475726573206c656e677468206d69736d6174636800000000000060448201526064016101c6565b60005b82518110156103c157610ec982848381518110610eab57610eab61331d565b60200260200101518760400151848151811061066b5761066b61331d565b610f095760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b60448201526064016101c6565b610f128161338a565b9050610e8c565b60008151835114610f655760405162461bcd60e51b8152602060048201526016602482015275082e4e4c2f240d8cadccee8d0e640dad2e6dac2e8c6d60531b60448201526064016101c6565b81600081518110610f7857610f7861331d565b6020026020010151600103610f8f57506000610fcb565b60018251118015610fba575081600181518110610fae57610fae61331d565b60200260200101516001145b15610fc757506001610fcb565b5060005b92915050565b6000610fe98360000151846040015160200151610f19565b6001600160401b03169050600080611010856000015184815181106103135761031361331d565b8751825460208901516001600160401b03908116600160801b0267ffffffffffffffff60801b1991909316600160401b021677ffffffffffffffffffffffffffffffff00000000000000001990911617178255909250905061107e86606001516001600160a01b0316151590565b6002838101805460ff19169215159290921790915584908111156110a4576110a4613333565b825460ff91909116600160c01b0260ff60c01b199091161782556110c7856103c8565b60018301556080850151156110f557815467ffffffffffffffff1916426001600160401b031617825561114c565b80158061110e5750815460ff600160c01b909104166001145b1561114c57815461112f90600160401b90046001600160401b03164261335f565b825467ffffffffffffffff19166001600160401b03919091161782555b6106d4856000015184815181106111655761116561331d565b6020908102919091018101516040805160c08101825286546001600160401b038082168352600160401b8204811695830195909552600160801b810490941691810191909152600160c01b90920460ff908116606084015260018601546080840152600286015416151560a0830152906115cd565b6060816040516020016111ed919061371d565b6040516020818303038152906040529050919050565b6020830151604001518051606091839161121c876117e1565b6112298260400151611a4a565b935060008260600151905086518151111561127e5760405162461bcd60e51b81526020600482015260156024820152741cdd5890da185b9b995b1cc81d1bdbc81cda1bdc9d605a1b60448201526064016101c6565b60005b815181101561138157600088866112978161338a565b9750815181106112a9576112a961331d565b602002602001015190506000808484815181106112c8576112c861331d565b60200260200101518360200151915091506112eb82600001518260000151611765565b6113305760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081cdd588b58da185b9b995b081a5960521b60448201526064016101c6565b606061133d848d8b611203565b604084015151909a50909150611354908890611b45565b611362836020015182611bee565b61136c8a82611cdc565b505050508061137a9061338a565b9050611281565b50505050935093915050565b6060816040516020016111ed9190613795565b600081815260208190526040902060018101541515806113f35760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd081c9959da5cdd195c995960921b60448201526064016101c6565b50919050565b60008061145a85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b905060006114688286611d53565b6001600160a01b0390811690851614925050509392505050565b602083015161149290600161335f565b6001600160401b031682602001516001600160401b0316146114f65760405162461bcd60e51b815260206004820152601d60248201527f76657273696f6e206d75737420696e6372656d656e74206279206f6e6500000060448201526064016101c6565b6080830151156115485760405162461bcd60e51b815260206004820181905260248201527f63616e6e6f742070726f67726573732066726f6d2066696e616c20737461746560448201526064016101c6565b61156083604001518360400151866040015151611d77565b60608401516040516206371b60ea1b81526001600160a01b038216906318dc6c00906115969088908890889088906004016137a8565b60006040518083038186803b1580156115ae57600080fd5b505afa1580156115c2573d6000803e3d6000fd5b505050505050505050565b600082815260208181526040918290208351815485840151868601516060808901516001600160401b039586166fffffffffffffffffffffffffffffffff199095168517600160401b948716949094029390931768ffffffffffffffffff60801b1916600160801b9590921694850260ff60c01b191691909117600160c01b60ff9093169283021785556080880151600186015560a08801516002909501805460ff1916951515959095179094558551928352938201939093529283019190915283917f895ef5a5fc3efd313a300b006d6ce97ff0670dfe04f6eea90417edf924fa786b910160405180910390a25050565b60006116d78260000151836040015160200151610f19565b905060006116fd8360000151836001600160401b0316815181106104505761045061331d565b9050611708836103c8565b81600101541461174a5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420737461746560981b60448201526064016101c6565b805460ff600160c01b9091041660021461099e5760026108ed565b6000815183511461177857506000610fcb565b60005b83518110156117d7578281815181106117965761179661331d565b60200260200101518482815181106117b0576117b061331d565b6020026020010151146117c7576000915050610fcb565b6117d08161338a565b905061177b565b5060019392505050565b805160208201516117f282826106dc565b61180182828560400151610e27565b8160a001511561189e5760608201516001600160a01b0316156118585760405162461bcd60e51b815260206004820152600f60248201526e063616e6e6f7420686176652061707608c1b60448201526064016101c6565b604081015160600151511561189e5760405162461bcd60e51b815260206004820152600c60248201526b199d5b991cc81b1bd8dad95960a21b60448201526064016101c6565b6000806118bf83600001516102fa8560000151866040015160200151610f19565b6040805160c08101825283546001600160401b038082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b909204821660608201526001840154608082015260029093015416151560a083015290925090508015611a3e57611932836103c8565b826080015103611943575050505050565b82602001516001600160401b031682604001516001600160401b03161061199e5760405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b2103b32b939b4b7b760891b60448201526064016101c6565b606082015160ff16156119e55760405162461bcd60e51b815260206004820152600f60248201526e696e636f727265637420706861736560881b60448201526064016101c6565b81516001600160401b03164210611a3e5760405162461bcd60e51b815260206004820152601960248201527f72656675746174696f6e2074696d656f7574207061737365640000000000000060448201526064016101c6565b6103c184846000610fd1565b606081516001600160401b03811115611a6557611a656126bb565b604051908082528060200260200182016040528015611a8e578160200160208202803683370190505b50905060005b82518110156113f3576000838281518110611ab157611ab161331d565b6020026020010151905060005b8151811015611b3257818181518110611ad957611ad961331d565b6020026020010151848481518110611af357611af361331d565b6020026020010151611b0591906133a3565b848481518110611b1757611b1761331d565b6020908102919091010152611b2b8161338a565b9050611abe565b505080611b3e9061338a565b9050611a94565b8051825114611b965760405162461bcd60e51b815260206004820152601760248201527f41737365745b5d3a20756e657175616c206c656e67746800000000000000000060448201526064016101c6565b60005b825181101561099e57611bde838281518110611bb757611bb761331d565b6020026020010151838381518110611bd157611bd161331d565b6020026020010151612055565b611be78161338a565b9050611b99565b8051825114611c3f5760405162461bcd60e51b815260206004820152601960248201527f75696e743235365b5d3a20756e657175616c206c656e6774680000000000000060448201526064016101c6565b60005b825181101561099e57818181518110611c5d57611c5d61331d565b6020026020010151838281518110611c7757611c7761331d565b602002602001015114611ccc5760405162461bcd60e51b815260206004820152601760248201527f75696e743235365b5d3a20756e657175616c206974656d00000000000000000060448201526064016101c6565b611cd58161338a565b9050611c42565b60005b825181101561099e57818181518110611cfa57611cfa61331d565b6020026020010151838281518110611d1457611d1461331d565b6020026020010151611d2691906133a3565b838281518110611d3857611d3861331d565b6020908102919091010152611d4c8161338a565b9050611cdf565b6000806000611d62858561214d565b91509150611d6f816121bb565b509392505050565b81604001515183604001515114611dd05760405162461bcd60e51b815260206004820152601860248201527f62616c616e636573206c656e677468206d69736d61746368000000000000000060448201526064016101c6565b81515183515114611e1c5760405162461bcd60e51b81526020600482015260166024820152750c2e6e6cae8e640d8cadccee8d040dad2e6dac2e8c6d60531b60448201526064016101c6565b611e2e83606001518360600151612374565b60005b82515181101561020b57611e7284600001518281518110611e5457611e5461331d565b602002602001015184600001518381518110611bd157611bd161331d565b6000808386604001518481518110611e8c57611e8c61331d565b60200260200101515114611ee25760405162461bcd60e51b815260206004820152601c60248201527f6f6c642062616c616e636573206c656e677468206d69736d617463680000000060448201526064016101c6565b8385604001518481518110611ef957611ef961331d565b60200260200101515114611f4f5760405162461bcd60e51b815260206004820152601c60248201527f6e65772062616c616e636573206c656e677468206d69736d617463680000000060448201526064016101c6565b60005b84811015611ff25786604001518481518110611f7057611f7061331d565b60200260200101518181518110611f8957611f8961331d565b602002602001015183611f9c91906133a3565b925085604001518481518110611fb457611fb461331d565b60200260200101518181518110611fcd57611fcd61331d565b602002602001015182611fe091906133a3565b9150611feb8161338a565b9050611f52565b508082146120425760405162461bcd60e51b815260206004820152601860248201527f73756d206f662062616c616e636573206d69736d61746368000000000000000060448201526064016101c6565b50508061204e9061338a565b9050611e31565b80518251146120985760405162461bcd60e51b815260206004820152600f60248201526e1d5b995c5d585b0818da185a5b9251608a1b60448201526064016101c6565b80602001516001600160a01b031682602001516001600160a01b0316146120f55760405162461bcd60e51b81526020600482015260116024820152703ab732b8bab0b61032ba342437b63232b960791b60448201526064016101c6565b8060400151805190602001208260400151805190602001201461075a5760405162461bcd60e51b815260206004820152601060248201526f3ab732b8bab0b61031b1a437b63232b960811b60448201526064016101c6565b60008082516041036121835760208301516040840151606085015160001a6121778782858561241d565b945094505050506121b4565b82516040036121ac57602083015160408401516121a186838361250a565b9350935050506121b4565b506000905060025b9250929050565b60008160048111156121cf576121cf613333565b036121d75750565b60018160048111156121eb576121eb613333565b036122385760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101c6565b600281600481111561224c5761224c613333565b036122995760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101c6565b60038160048111156122ad576122ad613333565b036123055760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101c6565b600481600481111561231957612319613333565b036123715760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101c6565b50565b80518251146123c55760405162461bcd60e51b815260206004820152601a60248201527f537562416c6c6f635b5d3a20756e657175616c206c656e67746800000000000060448201526064016101c6565b60005b825181101561099e5761240d8382815181106123e6576123e661331d565b60200260200101518383815181106124005761240061331d565b6020026020010151612543565b6124168161338a565b90506123c8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156124545750600090506003612501565b8460ff16601b1415801561246c57508460ff16601c14155b1561247d5750600090506004612501565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156124d1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166124fa57600060019250925050612501565b9150600090505b94509492505050565b6000806001600160ff1b0383168161252760ff86901c601b6133a3565b90506125358782888561241d565b935093505050935093915050565b815181516125519190611765565b6125945760405162461bcd60e51b815260206004820152601460248201527314dd58905b1b1bd8ce881d5b995c5d585b08125160621b60448201526064016101c6565b6125a682602001518260200151611bee565b61075a8260400151826040015180518251146126045760405162461bcd60e51b815260206004820152601860248201527f75696e7431365b5d3a20756e657175616c206c656e677468000000000000000060448201526064016101c6565b60005b825181101561099e578181815181106126225761262261331d565b602002602001015161ffff168382815181106126405761264061331d565b602002602001015161ffff16146126925760405162461bcd60e51b815260206004820152601660248201527575696e7431365b5d3a20756e657175616c206974656d60501b60448201526064016101c6565b61269b8161338a565b9050612607565b6000602082840312156126b457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156126f3576126f36126bb565b60405290565b604080519081016001600160401b03811182821017156126f3576126f36126bb565b604051606081016001600160401b03811182821017156126f3576126f36126bb565b604051608081016001600160401b03811182821017156126f3576126f36126bb565b60405160a081016001600160401b03811182821017156126f3576126f36126bb565b604051601f8201601f191681016001600160401b03811182821017156127a9576127a96126bb565b604052919050565b60006001600160401b038211156127ca576127ca6126bb565b5060051b60200190565b80356001600160a01b03811681146127eb57600080fd5b919050565b600082601f83011261280157600080fd5b81356001600160401b0381111561281a5761281a6126bb565b61282d601f8201601f1916602001612781565b81815284602083860101111561284257600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146127eb57600080fd5b600060c0828403121561288157600080fd5b6128896126d1565b905081358152602080830135818301526040808401356001600160401b03808211156128b457600080fd5b818601915086601f8301126128c857600080fd5b81356128db6128d6826127b1565b612781565b81815260059190911b830185019085810190898311156128fa57600080fd5b8685015b83811015612974578035858111156129165760008081fd5b8601808c03601f190188131561292c5760008081fd5b6129346126f9565b61293f8a83016127d4565b815288820135878111156129535760008081fd5b6129618e8c838601016127f0565b828c0152508452509187019187016128fe565b5080868901525050505050505061298d606083016127d4565b606082015261299e6080830161285f565b60808201526129af60a0830161285f565b60a082015292915050565b600082601f8301126129cb57600080fd5b813560206129db6128d6836127b1565b82815260059290921b840181019181810190868411156129fa57600080fd5b8286015b84811015612a1557803583529183019183016129fe565b509695505050505050565b80356001600160401b03811681146127eb57600080fd5b600082601f830112612a4857600080fd5b81356020612a586128d6836127b1565b82815260059290921b84018101918181019086841115612a7757600080fd5b8286015b84811015612a155780356001600160401b0380821115612a9b5760008081fd5b908801906060828b03601f1901811315612ab55760008081fd5b612abd61271b565b8784013581526040612ad08186016127d4565b828a0152918401359183831115612ae75760008081fd5b612af58d8a858801016127f0565b908201528652505050918301918301612a7b565b600082601f830112612b1a57600080fd5b81356020612b2a6128d6836127b1565b82815260059290921b84018101918181019086841115612b4957600080fd5b8286015b84811015612a155780356001600160401b03811115612b6c5760008081fd5b612b7a8986838b01016129ba565b845250918301918301612b4d565b600082601f830112612b9957600080fd5b81356020612ba96128d6836127b1565b828152600592831b8501820192828201919087851115612bc857600080fd5b8387015b85811015612cf55780356001600160401b0380821115612bec5760008081fd5b908901906060828c03601f1901811315612c065760008081fd5b612c0e61271b565b8884013583811115612c205760008081fd5b612c2e8e8b838801016129ba565b82525060408085013584811115612c455760008081fd5b612c538f8c838901016129ba565b838c015250918401359183831115612c6b5760008081fd5b82850194508d603f860112612c8257600093508384fd5b898501359350612c946128d6856127b1565b84815293871b85018101938a810193508e851115612cb25760008081fd5b948101945b84861015612ce157853561ffff81168114612cd25760008081fd5b8452948a0194928a0192612cb7565b908201528752505050928401928401612bcc565b5090979650505050505050565b600060808284031215612d1457600080fd5b612d1c61273d565b905081356001600160401b0380821115612d3557600080fd5b612d4185838601612a37565b83526020840135915080821115612d5757600080fd5b612d63858386016129ba565b60208401526040840135915080821115612d7c57600080fd5b612d8885838601612b09565b60408401526060840135915080821115612da157600080fd5b50612dae84828501612b88565b60608301525092915050565b600060a08284031215612dcc57600080fd5b612dd461275f565b905081356001600160401b0380821115612ded57600080fd5b612df9858386016129ba565b8352612e0760208501612a20565b60208401526040840135915080821115612e2057600080fd5b612e2c85838601612d02565b60408401526060840135915080821115612e4557600080fd5b50612e52848285016127f0565b606083015250612e646080830161285f565b608082015292915050565b600080600060608486031215612e8457600080fd5b83356001600160401b0380821115612e9b57600080fd5b612ea78783880161286f565b9450602091508186013581811115612ebe57600080fd5b612eca88828901612dba565b945050604086013581811115612edf57600080fd5b8601601f81018813612ef057600080fd5b8035612efe6128d6826127b1565b81815260059190911b8201840190848101908a831115612f1d57600080fd5b8584015b83811015612f5557803586811115612f395760008081fd5b612f478d8983890101612dba565b845250918601918601612f21565b508096505050505050509250925092565b600082601f830112612f7757600080fd5b81356020612f876128d6836127b1565b82815260059290921b84018101918181019086841115612fa657600080fd5b8286015b84811015612a155780356001600160401b03811115612fc95760008081fd5b612fd78986838b01016127f0565b845250918301918301612faa565b600080600060608486031215612ffa57600080fd5b83356001600160401b038082111561301157600080fd5b61301d8783880161286f565b9450602086013591508082111561303357600080fd5b61303f87838801612dba565b9350604086013591508082111561305557600080fd5b5061306286828701612f66565b9150509250925092565b60006020828403121561307e57600080fd5b81356001600160401b0381111561309457600080fd5b6130a084828501612dba565b949350505050565b6000606082840312156130ba57600080fd5b6130c261271b565b905081356001600160401b03808211156130db57600080fd5b6130e78583860161286f565b835260208401359150808211156130fd57600080fd5b61310985838601612dba565b6020840152604084013591508082111561312257600080fd5b5061312f84828501612f66565b60408301525092915050565b6000806040838503121561314e57600080fd5b82356001600160401b038082111561316557600080fd5b613171868387016130a8565b935060209150818501358181111561318857600080fd5b8501601f8101871361319957600080fd5b80356131a76128d6826127b1565b81815260059190911b820184019084810190898311156131c657600080fd5b8584015b838110156131fe578035868111156131e25760008081fd5b6131f08c89838901016130a8565b8452509186019186016131ca565b508096505050505050509250929050565b60006020828403121561322157600080fd5b81356001600160401b0381111561323757600080fd5b6130a08482850161286f565b600080600080600060a0868803121561325b57600080fd5b85356001600160401b038082111561327257600080fd5b61327e89838a0161286f565b9650602088013591508082111561329457600080fd5b6132a089838a01612dba565b955060408801359150808211156132b657600080fd5b6132c289838a01612dba565b94506060880135935060808801359150808211156132df57600080fd5b506132ec888289016127f0565b9150509295509295909350565b6020808252600a90820152693737ba103632b233b2b960b11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681851680830382111561338157613381613349565b01949350505050565b60006001820161339c5761339c613349565b5060010190565b600082198211156133b6576133b6613349565b500190565b6000815180845260005b818110156133e1576020818501810151868301820152016133c5565b818111156133f3576000602083870101525b50601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015612cf557858303601f19018952815180516001600160a01b03168452840151604085850181905261345c818601836133bb565b9a86019a9450505090830190600101613425565b600081518084526020808501945080840160005b838110156134a057815187529582019590820190600101613484565b509495945050505050565b8381526060602082015260006134c46060830185613408565b82810360408401526134d68185613470565b9695505050505050565b600082825180855260208086019550808260051b84010181860160005b84811015612cf557601f19868403018952613519838351613470565b988401989250908301906001016134fd565b6000815180845260208085019450848260051b86018286016000805b868110156135dc578484038a5282516060815181875261356982880182613470565b91505087820151868203898801526135818282613470565b604093840151888203948901949094528351808252938a0193869350908a0191505b808310156135c757835161ffff1682529289019260019290920191908901906135a3565b509b88019b9550505091850191600101613547565b509198975050505050505050565b6000815160a084526135ff60a0850182613470565b905060206001600160401b03818501511681860152604080850151868403828801526080840181516080865281815180845260a08801915060a08160051b8901019350868301925060005b8181101561369d57888503609f19018352835180518652888101516001600160a01b0316898701528701516060888701819052613689818801836133bb565b96505050928701929187019160010161364a565b5050505083820151858203858701526136b68282613470565b9450505081810151848403838601526136cf84826134e0565b935050606081015191505082820360608401526136ec828261352b565b925050506060830151848203606086015261370782826133bb565b9150506080830151611d6f608086018215159052565b60208152600061373060208301846135ea565b9392505050565b80518252602081015160208301526000604082015160c0604085015261376060c0850182613408565b6060848101516001600160a01b03169086015260808085015115159086015260a0938401511515949093019390935250919050565b6020815260006137306020830184613737565b6080815260006137bb6080830187613737565b82810360208401526137cd81876135ea565b905082810360408401526137e181866135ea565b9150508260608301529594505050505056fea264697066735822122052627efb39c6a47ee5e7cde2b7c020ad00d9fa957333abaa2e58f37941774f3364736f6c634300080f0033" +var AdjudicatorBinRuntime = "608060405234801561001057600080fd5b506004361061007d5760003560e01c80637a114d3d1161005b5780637a114d3d1461014b578063db77bb271461016c578063e7c01d051461017f578063e9aa7e021461019257600080fd5b806311be1997146100825780634c8a2c901461012357806375a8722314610138575b600080fd5b6100dd6100903660046123a1565b6000602081905290815260409020805460018201546002909201546001600160401b0380831693600160401b8404821693600160801b81049092169260ff600160c01b9093048316921686565b604080516001600160401b0397881681529587166020870152939095169284019290925260ff166060830152608082015290151560a082015260c0015b60405180910390f35b610136610131366004612b29565b6101a5565b005b610136610146366004612c5e565b610438565b61015e610159366004612ce5565b6105a5565b60405190815260200161011a565b61015e61017a366004612d21565b6105be565b61013661018d366004612d55565b6105c9565b6101366101a0366004612edf565b61062c565b60006101b4846000015161065a565b8054909150600160c01b900460ff166102205780546001600160401b031642101561021b5760405162461bcd60e51b81526020600482015260126024820152711d1a5b595bdd5d081b9bdd081c185cdcd95960721b60448201526064015b60405180910390fd5b6102b7565b8054600019600160c01b90910460ff160161027f5780546001600160401b0316421061021b5760405162461bcd60e51b815260206004820152600e60248201526d1d1a5b595bdd5d081c185cdcd95960921b6044820152606401610212565b60405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420706861736560981b6044820152606401610212565b60608601516001600160a01b03166103015760405162461bcd60e51b815260206004820152600d60248201526c06d75737420686176652061707609c1b6044820152606401610212565b856040015151831061034d5760405162461bcd60e51b81526020600482015260156024820152746163746f72496478206f7574206f662072616e676560581b6044820152606401610212565b61035786856106b3565b610360856105a5565b8160010154146103a45760405162461bcd60e51b815260206004820152600f60248201526e77726f6e67206f6c6420737461746560881b6044820152606401610212565b6103d86103b085610700565b83886040015186815181106103c7576103c7612fc9565b602002602001015160000151610729565b6104185760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610212565b610424868686866107b2565b610430868560016108fe565b505050505050565b82608001516104595760405162461bcd60e51b815260040161021290612fdf565b608082015115156001146104a15760405162461bcd60e51b815260206004820152600f60248201526e1cdd185d19481b9bdd08199a5b985b608a1b6044820152606401610212565b60408201516060015151156104eb5760405162461bcd60e51b815260206004820152601060248201526f686173207375622d6368616e6e656c7360801b6044820152606401610212565b6104f583836106b3565b610500838383610ab7565b8151600090815260208190526040902060018101541580159061056e578154600119600160c01b90910460ff160161056e5760405162461bcd60e51b8152602060048201526011602482015270636f6e636c7564656420616c726561647960781b6044820152606401610212565b61057a858560026108fe565b61059e84600001518560400151600001518760400151876040015160400151610ba9565b5050505050565b60006105b082610700565b805190602001209050919050565b60006105b082610c82565b82608001516105ea5760405162461bcd60e51b815260040161021290612fdf565b6105f483836106b3565b6105fd82610c95565b600061060b83836000610e7a565b50835160408086015151908701519293506106269284610ba9565b50505050565b81516080015161064e5760405162461bcd60e51b815260040161021290612fdf565b61062682826000611205565b600081815260208190526040902060018101541515806106ad5760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd081c9959da5cdd195c995960921b6044820152606401610212565b50919050565b6106bc826105be565b8151146106fc5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c696420706172616d7360901b6044820152606401610212565b5050565b60608160405160200161071391906132c8565b6040516020818303038152906040529050919050565b60008061078a85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b905060006107988286611388565b6001600160a01b0390811690851614925050509392505050565b60208301516107c29060016132f8565b6001600160401b031682602001516001600160401b0316146108265760405162461bcd60e51b815260206004820152601d60248201527f76657273696f6e206d75737420696e6372656d656e74206279206f6e650000006044820152606401610212565b6080830151156108785760405162461bcd60e51b815260206004820181905260248201527f63616e6e6f742070726f67726573732066726f6d2066696e616c2073746174656044820152606401610212565b610890836040015183604001518660400151516113ac565b606084015160405163f7530b4160e01b81526001600160a01b0382169063f7530b41906108c79088908890889088906004016133e6565b60006040518083038186803b1580156108df57600080fd5b505afa1580156108f3573d6000803e3d6000fd5b505050505050505050565b81516000908152602081815260409091206001810154855182549386015177ffffffffffffffffffffffffffffffff000000000000000019909416600160401b6001600160401b039283160267ffffffffffffffff60801b191617600160801b9190941602929092178155606085015190911515906001600160a01b031615156002838101805460ff19169215159290921790915583908111156109a4576109a4612fb3565b825460ff91909116600160c01b0260ff60c01b199091161782556109c7846105a5565b60018301556080840151156109f557815467ffffffffffffffff1916426001600160401b0316178255610a4c565b801580610a0e5750815460ff600160c01b909104166001145b15610a4c578154610a2f90600160401b90046001600160401b0316426132f8565b825467ffffffffffffffff19166001600160401b03919091161782555b83516040805160c08101825284546001600160401b038082168352600160401b820481166020840152600160801b82041692820192909252600160c01b90910460ff908116606083015260018501546080830152600285015416151560a082015261059e9190611697565b6000610ac283610700565b9050815184604001515114610b195760405162461bcd60e51b815260206004820152601a60248201527f7369676e617475726573206c656e677468206d69736d617463680000000000006044820152606401610212565b60005b825181101561059e57610b5982848381518110610b3b57610b3b612fc9565b6020026020010151876040015184815181106103c7576103c7612fc9565b610b995760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610212565b610ba281613431565b9050610b1c565b60005b835181101561059e576000848281518110610bc957610bc9612fc9565b6020026020010151905046816000015103610c715760208101516001600160a01b031615610c715780602001516001600160a01b031663295482ce8786868681518110610c1857610c18612fc9565b60200260200101516040518463ffffffff1660e01b8152600401610c3e9392919061344a565b600060405180830381600087803b158015610c5857600080fd5b505af1158015610c6c573d6000803e3d6000fd5b505050505b50610c7b81613431565b9050610bac565b606081604051602001610713919061347f565b6000610ca4826000015161065a565b9050610caf826105a5565b816001015414610cf15760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420737461746560981b6044820152606401610212565b8054600119600160c01b90910460ff1601610d425760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb98db1d591959607a1b6044820152606401610212565b8054600160c01b900460ff16158015610d5f5750600281015460ff165b15610d9f578054610d82906001600160401b03600160401b8204811691166132f8565b815467ffffffffffffffff19166001600160401b03919091161781555b80546001600160401b0316421015610df25760405162461bcd60e51b81526020600482015260166024820152751d1a5b595bdd5d081b9bdd081c185cdcd959081e595d60521b6044820152606401610212565b60025b815460ff60c01b198116600160c01b60ff938416810291821780865586516040805160c0810182526001600160401b03968716958716959095178552600160401b830486166020860152600160801b8304909516948401949094520483166060820152600184015460808201526002840154909216151560a08301526106fc91611697565b60606000610e8785611789565b60408501515180516001600160401b03811115610ea657610ea66123ba565b604051908082528060200260200182016040528015610ed957816020015b6060815260200190600190039081610ec45790505b50925060005b815181101561100e5760008760400151604001518281518110610f0457610f04612fc9565b6020026020010151905080516001600160401b03811115610f2757610f276123ba565b604051908082528060200260200182016040528015610f50578160200160208202803683370190505b50858381518110610f6357610f63612fc9565b602002602001018190525060005b8151811015610ffb578860400151604001518381518110610f9457610f94612fc9565b60200260200101518181518110610fad57610fad612fc9565b6020026020010151868481518110610fc757610fc7612fc9565b60200260200101518281518110610fe057610fe0612fc9565b6020908102919091010152610ff481613431565b9050610f71565b50508061100790613431565b9050610edf565b5060408601516060015184925060005b81518110156111fa57600082828151811061103b5761103b612fc9565b60200260200101519050600088868061105390613431565b97508151811061106557611065612fc9565b6020026020010151905080600001518260000151146110be5760405162461bcd60e51b81526020600482015260156024820152741a5b9d985b1a59081cdd5898da185b9b995b081a59605a1b6044820152606401610212565b60606110cb828b89610e7a565b604085015190985090915060005b87518110156111e45760005b82518110156111d357600084838151811061110257611102612fc9565b6020026020010151828151811061111b5761111b612fc9565b60200260200101519050600084838151811061113957611139612fc9565b60200260200101519050818d858151811061115657611156612fc9565b60200260200101518261ffff168151811061117357611173612fc9565b60200260200101516111859190613492565b8d858151811061119757611197612fc9565b60200260200101518261ffff16815181106111b4576111b4612fc9565b6020026020010181815250505050806111cc90613431565b90506110e5565b506111dd81613431565b90506110d9565b5050505050806111f390613431565b905061101e565b505050935093915050565b6020830151604001518051606091839161121e87611800565b61122b8260400151611a5c565b93506000826060015190508651815111156112805760405162461bcd60e51b81526020600482015260156024820152741cdd5890da185b9b995b1cc81d1bdbc81cda1bdc9d605a1b6044820152606401610212565b60005b815181101561137c576000888661129981613431565b9750815181106112ab576112ab612fc9565b602002602001015190506000808484815181106112ca576112ca612fc9565b6020026020010151836020015191509150806000015182600001511461132b5760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081cdd588b58da185b9b995b081a5960521b6044820152606401610212565b6060611338848d8b611205565b604084015151909a5090915061134f908890611b57565b61135d836020015182611bf8565b6113678a82611ce6565b505050508061137590613431565b9050611283565b50505050935093915050565b60008060006113978585611d5d565b915091506113a481611dcb565b509392505050565b816040015151836040015151146114055760405162461bcd60e51b815260206004820152601860248201527f62616c616e636573206c656e677468206d69736d6174636800000000000000006044820152606401610212565b815151835151146114515760405162461bcd60e51b81526020600482015260166024820152750c2e6e6cae8e640d8cadccee8d040dad2e6dac2e8c6d60531b6044820152606401610212565b61146383606001518360600151611f84565b60005b825151811015610626576114b48460000151828151811061148957611489612fc9565b6020026020010151846000015183815181106114a7576114a7612fc9565b602002602001015161202d565b60008083866040015184815181106114ce576114ce612fc9565b602002602001015151146115245760405162461bcd60e51b815260206004820152601c60248201527f6f6c642062616c616e636573206c656e677468206d69736d61746368000000006044820152606401610212565b838560400151848151811061153b5761153b612fc9565b602002602001015151146115915760405162461bcd60e51b815260206004820152601c60248201527f6e65772062616c616e636573206c656e677468206d69736d61746368000000006044820152606401610212565b60005b8481101561163457866040015184815181106115b2576115b2612fc9565b602002602001015181815181106115cb576115cb612fc9565b6020026020010151836115de9190613492565b9250856040015184815181106115f6576115f6612fc9565b6020026020010151818151811061160f5761160f612fc9565b6020026020010151826116229190613492565b915061162d81613431565b9050611594565b508082146116845760405162461bcd60e51b815260206004820152601860248201527f73756d206f662062616c616e636573206d69736d6174636800000000000000006044820152606401610212565b50508061169090613431565b9050611466565b600082815260208181526040918290208351815485840151868601516060808901516001600160401b039586166fffffffffffffffffffffffffffffffff199095168517600160401b948716949094029390931768ffffffffffffffffff60801b1916600160801b9590921694850260ff60c01b191691909117600160c01b60ff9093169283021785556080880151600186015560a08801516002909501805460ff1916951515959095179094558551928352938201939093529283019190915283917f895ef5a5fc3efd313a300b006d6ce97ff0670dfe04f6eea90417edf924fa786b910160405180910390a25050565b6000611798826000015161065a565b90506117a3826105a5565b8160010154146117e55760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420737461746560981b6044820152606401610212565b805460ff600160c01b909104166002146106fc576002610df5565b8051602082015161181182826106b3565b61182082828560400151610ab7565b8160a00151156118bd5760608201516001600160a01b0316156118775760405162461bcd60e51b815260206004820152600f60248201526e063616e6e6f7420686176652061707608c1b6044820152606401610212565b60408101516060015151156118bd5760405162461bcd60e51b815260206004820152600c60248201526b199d5b991cc81b1bd8dad95960a21b6044820152606401610212565b8051600090815260208181526040918290206001810154835160c08101855282546001600160401b038082168352600160401b8204811695830195909552600160801b810490941694810194909452600160c01b90920460ff90811660608501526080840183905260029091015416151560a083015215801590611a5057611944836105a5565b826080015103611955575050505050565b82602001516001600160401b031682604001516001600160401b0316106119b05760405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b2103b32b939b4b7b760891b6044820152606401610212565b606082015160ff16156119f75760405162461bcd60e51b815260206004820152600f60248201526e696e636f727265637420706861736560881b6044820152606401610212565b81516001600160401b03164210611a505760405162461bcd60e51b815260206004820152601960248201527f72656675746174696f6e2074696d656f757420706173736564000000000000006044820152606401610212565b61059e848460006108fe565b606081516001600160401b03811115611a7757611a776123ba565b604051908082528060200260200182016040528015611aa0578160200160208202803683370190505b50905060005b82518110156106ad576000838281518110611ac357611ac3612fc9565b6020026020010151905060005b8151811015611b4457818181518110611aeb57611aeb612fc9565b6020026020010151848481518110611b0557611b05612fc9565b6020026020010151611b179190613492565b848481518110611b2957611b29612fc9565b6020908102919091010152611b3d81613431565b9050611ad0565b505080611b5090613431565b9050611aa6565b8051825114611ba85760405162461bcd60e51b815260206004820152601760248201527f41737365745b5d3a20756e657175616c206c656e6774680000000000000000006044820152606401610212565b60005b8251811015611bf357611be3838281518110611bc957611bc9612fc9565b60200260200101518383815181106114a7576114a7612fc9565b611bec81613431565b9050611bab565b505050565b8051825114611c495760405162461bcd60e51b815260206004820152601960248201527f75696e743235365b5d3a20756e657175616c206c656e677468000000000000006044820152606401610212565b60005b8251811015611bf357818181518110611c6757611c67612fc9565b6020026020010151838281518110611c8157611c81612fc9565b602002602001015114611cd65760405162461bcd60e51b815260206004820152601760248201527f75696e743235365b5d3a20756e657175616c206974656d0000000000000000006044820152606401610212565b611cdf81613431565b9050611c4c565b60005b8251811015611bf357818181518110611d0457611d04612fc9565b6020026020010151838281518110611d1e57611d1e612fc9565b6020026020010151611d309190613492565b838281518110611d4257611d42612fc9565b6020908102919091010152611d5681613431565b9050611ce9565b6000808251604103611d935760208301516040840151606085015160001a611d8787828585612125565b94509450505050611dc4565b8251604003611dbc5760208301516040840151611db1868383612212565b935093505050611dc4565b506000905060025b9250929050565b6000816004811115611ddf57611ddf612fb3565b03611de75750565b6001816004811115611dfb57611dfb612fb3565b03611e485760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610212565b6002816004811115611e5c57611e5c612fb3565b03611ea95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610212565b6003816004811115611ebd57611ebd612fb3565b03611f155760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610212565b6004816004811115611f2957611f29612fb3565b03611f815760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610212565b50565b8051825114611fd55760405162461bcd60e51b815260206004820152601a60248201527f537562416c6c6f635b5d3a20756e657175616c206c656e6774680000000000006044820152606401610212565b60005b8251811015611bf35761201d838281518110611ff657611ff6612fc9565b602002602001015183838151811061201057612010612fc9565b602002602001015161224b565b61202681613431565b9050611fd8565b80518251146120705760405162461bcd60e51b815260206004820152600f60248201526e1d5b995c5d585b0818da185a5b9251608a1b6044820152606401610212565b80602001516001600160a01b031682602001516001600160a01b0316146120cd5760405162461bcd60e51b81526020600482015260116024820152703ab732b8bab0b61032ba342437b63232b960791b6044820152606401610212565b806040015180519060200120826040015180519060200120146106fc5760405162461bcd60e51b815260206004820152601060248201526f3ab732b8bab0b61031b1a437b63232b960811b6044820152606401610212565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561215c5750600090506003612209565b8460ff16601b1415801561217457508460ff16601c14155b156121855750600090506004612209565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156121d9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661220257600060019250925050612209565b9150600090505b94509492505050565b6000806001600160ff1b0383168161222f60ff86901c601b613492565b905061223d87828885612125565b935093505050935093915050565b80518251146122935760405162461bcd60e51b815260206004820152601460248201527314dd58905b1b1bd8ce881d5b995c5d585b08125160621b6044820152606401610212565b6122a582602001518260200151611bf8565b6106fc8260400151826040015180518251146123035760405162461bcd60e51b815260206004820152601860248201527f75696e7431365b5d3a20756e657175616c206c656e67746800000000000000006044820152606401610212565b60005b8251811015611bf35781818151811061232157612321612fc9565b602002602001015161ffff1683828151811061233f5761233f612fc9565b602002602001015161ffff16146123915760405162461bcd60e51b815260206004820152601660248201527575696e7431365b5d3a20756e657175616c206974656d60501b6044820152606401610212565b61239a81613431565b9050612306565b6000602082840312156123b357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156123f2576123f26123ba565b60405290565b604080519081016001600160401b03811182821017156123f2576123f26123ba565b604051606081016001600160401b03811182821017156123f2576123f26123ba565b604051608081016001600160401b03811182821017156123f2576123f26123ba565b60405160a081016001600160401b03811182821017156123f2576123f26123ba565b604051601f8201601f191681016001600160401b03811182821017156124a8576124a86123ba565b604052919050565b60006001600160401b038211156124c9576124c96123ba565b5060051b60200190565b80356001600160a01b03811681146124ea57600080fd5b919050565b600082601f83011261250057600080fd5b81356001600160401b03811115612519576125196123ba565b61252c601f8201601f1916602001612480565b81815284602083860101111561254157600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146124ea57600080fd5b600060c0828403121561258057600080fd5b6125886123d0565b905081358152602080830135818301526040808401356001600160401b03808211156125b357600080fd5b818601915086601f8301126125c757600080fd5b81356125da6125d5826124b0565b612480565b81815260059190911b830185019085810190898311156125f957600080fd5b8685015b83811015612673578035858111156126155760008081fd5b8601808c03601f190188131561262b5760008081fd5b6126336123f8565b61263e8a83016124d3565b815288820135878111156126525760008081fd5b6126608e8c838601016124ef565b828c0152508452509187019187016125fd565b5080868901525050505050505061268c606083016124d3565b606082015261269d6080830161255e565b60808201526126ae60a0830161255e565b60a082015292915050565b600082601f8301126126ca57600080fd5b813560206126da6125d5836124b0565b82815260059290921b840181019181810190868411156126f957600080fd5b8286015b8481101561278b5780356001600160401b038082111561271d5760008081fd5b908801906060828b03601f19018113156127375760008081fd5b61273f61241a565b87840135815260406127528186016124d3565b828a01529184013591838311156127695760008081fd5b6127778d8a858801016124ef565b9082015286525050509183019183016126fd565b509695505050505050565b600082601f8301126127a757600080fd5b813560206127b76125d5836124b0565b82815260059290921b840181019181810190868411156127d657600080fd5b8286015b8481101561278b57803583529183019183016127da565b600082601f83011261280257600080fd5b813560206128126125d5836124b0565b82815260059290921b8401810191818101908684111561283157600080fd5b8286015b8481101561278b5780356001600160401b038111156128545760008081fd5b6128628986838b0101612796565b845250918301918301612835565b600082601f83011261288157600080fd5b813560206128916125d5836124b0565b828152600592831b85018201928282019190878511156128b057600080fd5b8387015b858110156129c05780356001600160401b03808211156128d45760008081fd5b908901906060828c03601f19018113156128ee5760008081fd5b6128f661241a565b888401358152604080850135848111156129105760008081fd5b61291e8f8c83890101612796565b838c0152509184013591838311156129365760008081fd5b82850194508d603f86011261294d57600093508384fd5b89850135935061295f6125d5856124b0565b84815293871b85018101938a810193508e85111561297d5760008081fd5b948101945b848610156129ac57853561ffff8116811461299d5760008081fd5b8452948a0194928a0192612982565b9082015287525050509284019284016128b4565b5090979650505050505050565b6000608082840312156129df57600080fd5b6129e761243c565b905081356001600160401b0380821115612a0057600080fd5b612a0c858386016126b9565b83526020840135915080821115612a2257600080fd5b612a2e85838601612796565b60208401526040840135915080821115612a4757600080fd5b612a53858386016127f1565b60408401526060840135915080821115612a6c57600080fd5b50612a7984828501612870565b60608301525092915050565b600060a08284031215612a9757600080fd5b612a9f61245e565b90508135815260208201356001600160401b038082168214612ac057600080fd5b8160208401526040840135915080821115612ada57600080fd5b612ae6858386016129cd565b60408401526060840135915080821115612aff57600080fd5b50612b0c848285016124ef565b606083015250612b1e6080830161255e565b608082015292915050565b600080600080600060a08688031215612b4157600080fd5b85356001600160401b0380821115612b5857600080fd5b612b6489838a0161256e565b96506020880135915080821115612b7a57600080fd5b612b8689838a01612a85565b95506040880135915080821115612b9c57600080fd5b612ba889838a01612a85565b9450606088013593506080880135915080821115612bc557600080fd5b50612bd2888289016124ef565b9150509295509295909350565b600082601f830112612bf057600080fd5b81356020612c006125d5836124b0565b82815260059290921b84018101918181019086841115612c1f57600080fd5b8286015b8481101561278b5780356001600160401b03811115612c425760008081fd5b612c508986838b01016124ef565b845250918301918301612c23565b600080600060608486031215612c7357600080fd5b83356001600160401b0380821115612c8a57600080fd5b612c968783880161256e565b94506020860135915080821115612cac57600080fd5b612cb887838801612a85565b93506040860135915080821115612cce57600080fd5b50612cdb86828701612bdf565b9150509250925092565b600060208284031215612cf757600080fd5b81356001600160401b03811115612d0d57600080fd5b612d1984828501612a85565b949350505050565b600060208284031215612d3357600080fd5b81356001600160401b03811115612d4957600080fd5b612d198482850161256e565b600080600060608486031215612d6a57600080fd5b83356001600160401b0380821115612d8157600080fd5b612d8d8783880161256e565b9450602091508186013581811115612da457600080fd5b612db088828901612a85565b945050604086013581811115612dc557600080fd5b8601601f81018813612dd657600080fd5b8035612de46125d5826124b0565b81815260059190911b8201840190848101908a831115612e0357600080fd5b8584015b83811015612e3b57803586811115612e1f5760008081fd5b612e2d8d8983890101612a85565b845250918601918601612e07565b508096505050505050509250925092565b600060608284031215612e5e57600080fd5b612e6661241a565b905081356001600160401b0380821115612e7f57600080fd5b612e8b8583860161256e565b83526020840135915080821115612ea157600080fd5b612ead85838601612a85565b60208401526040840135915080821115612ec657600080fd5b50612ed384828501612bdf565b60408301525092915050565b60008060408385031215612ef257600080fd5b82356001600160401b0380821115612f0957600080fd5b612f1586838701612e4c565b9350602091508185013581811115612f2c57600080fd5b8501601f81018713612f3d57600080fd5b8035612f4b6125d5826124b0565b81815260059190911b82018401908481019089831115612f6a57600080fd5b8584015b83811015612fa257803586811115612f865760008081fd5b612f948c8983890101612e4c565b845250918601918601612f6e565b508096505050505050509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252600a90820152693737ba103632b233b2b960b11b604082015260600190565b6000815180845260005b818110156130295760208185018101518683018201520161300d565b8181111561303b576000602083870101525b50601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561308057815187529582019590820190600101613064565b509495945050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156130d35782840389526130c1848351613050565b988501989350908401906001016130a9565b5091979650505050505050565b600081518084526020808501808196508360051b810191508286016000805b86811015613184578385038a52825160608151875287820151818989015261312982890182613050565b604093840151898203948a01949094528351808252938a0193869350908a0191505b8083101561316f57835161ffff16825292890192600192909201919089019061314b565b509b88019b96505050918501916001016130ff565b509298975050505050505050565b80518252600060206001600160401b0381840151168185015260408084015160a08287015261012086018151608060a08901528181518084526101409350838a019150838160051b8b01019350868301925060005b8181101561323b578a850361013f19018352835180518652888101516001600160a01b031689870152870151606088870181905261322781880183613003565b9650505092870192918701916001016131e7565b50505050838201519350609f19808883030160c089015261325c8286613050565b93830151888503820160e08a0152939450613277858561308b565b945060608301519350808886030161010089015250505061329882826130e0565b915050606083015184820360608601526132b28282613003565b91505060808301516113a4608086018215159052565b6020815260006132db6020830184613192565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681851680830382111561331a5761331a6132e2565b01949350505050565b600081518084526020808501808196508360051b8101915082860160005b858110156130d3578284038952815180516001600160a01b03168552850151604086860181905261337481870183613003565b9a87019a9550505090840190600101613341565b80518252602081015160208301526000604082015160c060408501526133b160c0850182613323565b6060848101516001600160a01b03169086015260808085015115159086015260a0938401511515949093019390935250919050565b6080815260006133f96080830187613388565b828103602084015261340b8187613192565b9050828103604084015261341f8186613192565b91505082606083015295945050505050565b600060018201613443576134436132e2565b5060010190565b8381526060602082015260006134636060830185613323565b82810360408401526134758185613050565b9695505050505050565b6020815260006132db6020830184613388565b600082198211156134a5576134a56132e2565b50019056fea2646970667358221220a342f2fe3a5c8ef0f7c77f81be0cfdcbc9d4e8a59dc87d2afef9a1ebedb2e08b64736f6c634300080f0033" diff --git a/bindings/assetholdererc20/AssetHolderERC20.go b/bindings/assetholdererc20/AssetHolderERC20.go index 6d048cb..0e1b8a3 100644 --- a/bindings/assetholdererc20/AssetHolderERC20.go +++ b/bindings/assetholdererc20/AssetHolderERC20.go @@ -46,7 +46,7 @@ type ChannelParticipant struct { // Assetholdererc20MetaData contains all meta data concerning the Assetholdererc20 contract. var Assetholdererc20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_adjudicator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"fundingID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"}],\"name\":\"OutcomeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"fundingID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"adjudicator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"fundingID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"holdings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"parts\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"newBals\",\"type\":\"uint256[]\"}],\"name\":\"setOutcome\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"settled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant\",\"name\":\"participant\",\"type\":\"tuple\"},{\"internalType\":\"addresspayable\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structAssetHolder.WithdrawalAuth\",\"name\":\"authorization\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561001057600080fd5b5060405161127538038061127583398101604081905261002f91610070565b600280546001600160a01b0319166001600160a01b03938416179055166080526100a3565b80516001600160a01b038116811461006b57600080fd5b919050565b6000806040838503121561008357600080fd5b61008c83610054565b915061009a60208401610054565b90509250929050565b6080516111a96100cc60003960008181610174015281816107e0015261097401526111a96000f3fe6080604052600436106100705760003560e01c8063ae9ee18c1161004e578063ae9ee18c146100e7578063d945af1d14610122578063fc0c546a14610162578063fca0f7781461019657600080fd5b80631de26e1614610075578063295482ce1461008a57806353c2ed8e146100aa575b600080fd5b610088610083366004610dcc565b6101b6565b005b34801561009657600080fd5b506100886100a5366004610e33565b610231565b3480156100b657600080fd5b506002546100ca906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100f357600080fd5b50610114610102366004610ead565b60006020819052908152604090205481565b6040519081526020016100de565b34801561012e57600080fd5b5061015261013d366004610ead565b60016020526000908152604090205460ff1681565b60405190151581526020016100de565b34801561016e57600080fd5b506100ca7f000000000000000000000000000000000000000000000000000000000000000081565b3480156101a257600080fd5b506100886101b1366004610ec6565b610543565b6101c0828261075a565b6000828152602081905260409020546101da908290610f7b565b6000838152602081905260409020556101f382826107be565b817fcd2fe07293de5928c5df9505b65a8d6506f8668dfe81af09090920687edc48a98260405161022591815260200190565b60405180910390a25050565b6002546001600160a01b0316331461029e5760405162461bcd60e51b815260206004820152602560248201527f63616e206f6e6c792062652063616c6c6564206279207468652061646a75646960448201526431b0ba37b960d91b60648201526084015b60405180910390fd5b8281146102ff5760405162461bcd60e51b815260206004820152602960248201527f7061727469636970616e7473206c656e6774682073686f756c6420657175616c6044820152682062616c616e63657360b81b6064820152608401610295565b60008581526001602052604090205460ff161561036c5760405162461bcd60e51b815260206004820152602560248201527f747279696e6720746f2073657420616c726561647920736574746c6564206368604482015264185b9b995b60da1b6064820152608401610295565b600085815260208190526040812080549082905590808567ffffffffffffffff81111561039b5761039b610f93565b6040519080825280602002602001820160405280156103c4578160200160208202803683370190505b50905060005b8681101561048857600061040f8a8a8a858181106103ea576103ea610fa9565b90506020028101906103fc9190610fbf565b61040a906020810190610ff4565b610897565b90508083838151811061042457610424610fa9565b602002602001018181525050600080828152602001908152602001600020548561044e9190610f7b565b945086868381811061046257610462610fa9565b90506020020135846104749190610f7b565b9350508061048190611018565b90506103ca565b508183106104f65760005b868110156104f4578585828181106104ad576104ad610fa9565b905060200201356000808484815181106104c9576104c9610fa9565b6020026020010151815260200190815260200160002081905550806104ed90611018565b9050610493565b505b6000888152600160208190526040808320805460ff19169092179091555189917fef898d6cd3395b6dfe67a3c1923e5c726c1b154e979fb0a25a9c41d0093168b891a25050505050505050565b823560009081526001602052604090205460ff166105995760405162461bcd60e51b815260206004820152601360248201527218da185b9b995b081b9bdd081cd95d1d1b1959606a1b6044820152606401610295565b61060c836040516020016105ad9190611041565b60408051601f198184030181526020601f8601819004810284018101909252848352919085908590819084018382808284376000920191909152506105f9925050506020870187610fbf565b610607906020810190610ff4565b6108dc565b6106585760405162461bcd60e51b815260206004820152601d60248201527f7369676e617475726520766572696669636174696f6e206661696c65640000006044820152606401610295565b600061066c84356103fc6020870187610fbf565b600081815260208190526040902054909150606085013511156106c65760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610295565b6000818152602081905260409020546106e490606086013590611124565b6000828152602081905260409020556106fe84848461096a565b807fd0b6e7d0170f56c62f87de6a8a47a0ccf41c86ffb5084d399d8eb62e823f2a81606086018035906107349060408901610ff4565b604080519283526001600160a01b0390911660208301520160405180910390a250505050565b34156107ba5760405162461bcd60e51b815260206004820152602960248201527f6d6573736167652076616c7565206d757374206265203020666f7220746f6b656044820152681b8819195c1bdcda5d60ba1b6064820152608401610295565b5050565b6040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610831573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610855919061113b565b6107ba5760405162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b6044820152606401610295565b600082826040516020016108be9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b60008061093d85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050600061094b8286610a5b565b6001600160a01b0390811690851614925050509392505050565b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb6109a96060860160408701610ff4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152606086013560248201526044016020604051808303816000875af11580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d919061113b565b6109655760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606401610295565b6000806000610a6a8585610a7f565b91509150610a7781610aed565b509392505050565b6000808251604103610ab55760208301516040840151606085015160001a610aa987828585610ca6565b94509450505050610ae6565b8251604003610ade5760208301516040840151610ad3868383610d93565b935093505050610ae6565b506000905060025b9250929050565b6000816004811115610b0157610b0161115d565b03610b095750565b6001816004811115610b1d57610b1d61115d565b03610b6a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610295565b6002816004811115610b7e57610b7e61115d565b03610bcb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610295565b6003816004811115610bdf57610bdf61115d565b03610c375760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610295565b6004816004811115610c4b57610c4b61115d565b03610ca35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610295565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610cdd5750600090506003610d8a565b8460ff16601b14158015610cf557508460ff16601c14155b15610d065750600090506004610d8a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610d5a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610d8357600060019250925050610d8a565b9150600090505b94509492505050565b6000806001600160ff1b03831681610db060ff86901c601b610f7b565b9050610dbe87828885610ca6565b935093505050935093915050565b60008060408385031215610ddf57600080fd5b50508035926020909101359150565b60008083601f840112610e0057600080fd5b50813567ffffffffffffffff811115610e1857600080fd5b6020830191508360208260051b8501011115610ae657600080fd5b600080600080600060608688031215610e4b57600080fd5b85359450602086013567ffffffffffffffff80821115610e6a57600080fd5b610e7689838a01610dee565b90965094506040880135915080821115610e8f57600080fd5b50610e9c88828901610dee565b969995985093965092949392505050565b600060208284031215610ebf57600080fd5b5035919050565b600080600060408486031215610edb57600080fd5b833567ffffffffffffffff80821115610ef357600080fd5b9085019060808288031215610f0757600080fd5b90935060208501359080821115610f1d57600080fd5b818601915086601f830112610f3157600080fd5b813581811115610f4057600080fd5b876020828501011115610f5257600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052601160045260246000fd5b60008219821115610f8e57610f8e610f65565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610fd557600080fd5b9190910192915050565b6001600160a01b0381168114610ca357600080fd5b60006020828403121561100657600080fd5b813561101181610fdf565b9392505050565b60006001820161102a5761102a610f65565b5060010190565b803561103c81610fdf565b919050565b602081528135602082015260006020830135603e1984360301811261106557600080fd5b608060408401528301803561107981610fdf565b6001600160a01b031660a0840152602081013536829003601e1901811261109f57600080fd5b0160208101903567ffffffffffffffff8111156110bb57600080fd5b8036038213156110ca57600080fd5b604060c08501528060e085015261010081838287013760008183870101526110f460408701611031565b6001600160a01b03811660608701529250606095909501356080850152601f01601f191690920190920192915050565b60008282101561113657611136610f65565b500390565b60006020828403121561114d57600080fd5b8151801515811461101157600080fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220e285dbc29171628d35e3b64e848d23e02fa6c180cf400d15487a67a7bede0a6264736f6c634300080f0033", + Bin: "0x60a060405234801561001057600080fd5b5060405161127538038061127583398101604081905261002f91610070565b600280546001600160a01b0319166001600160a01b03938416179055166080526100a3565b80516001600160a01b038116811461006b57600080fd5b919050565b6000806040838503121561008357600080fd5b61008c83610054565b915061009a60208401610054565b90509250929050565b6080516111a96100cc60003960008181610174015281816107e0015261097401526111a96000f3fe6080604052600436106100705760003560e01c8063ae9ee18c1161004e578063ae9ee18c146100e7578063d945af1d14610122578063fc0c546a14610162578063fca0f7781461019657600080fd5b80631de26e1614610075578063295482ce1461008a57806353c2ed8e146100aa575b600080fd5b610088610083366004610dcc565b6101b6565b005b34801561009657600080fd5b506100886100a5366004610e33565b610231565b3480156100b657600080fd5b506002546100ca906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100f357600080fd5b50610114610102366004610ead565b60006020819052908152604090205481565b6040519081526020016100de565b34801561012e57600080fd5b5061015261013d366004610ead565b60016020526000908152604090205460ff1681565b60405190151581526020016100de565b34801561016e57600080fd5b506100ca7f000000000000000000000000000000000000000000000000000000000000000081565b3480156101a257600080fd5b506100886101b1366004610ec6565b610543565b6101c0828261075a565b6000828152602081905260409020546101da908290610f7b565b6000838152602081905260409020556101f382826107be565b817fcd2fe07293de5928c5df9505b65a8d6506f8668dfe81af09090920687edc48a98260405161022591815260200190565b60405180910390a25050565b6002546001600160a01b0316331461029e5760405162461bcd60e51b815260206004820152602560248201527f63616e206f6e6c792062652063616c6c6564206279207468652061646a75646960448201526431b0ba37b960d91b60648201526084015b60405180910390fd5b8281146102ff5760405162461bcd60e51b815260206004820152602960248201527f7061727469636970616e7473206c656e6774682073686f756c6420657175616c6044820152682062616c616e63657360b81b6064820152608401610295565b60008581526001602052604090205460ff161561036c5760405162461bcd60e51b815260206004820152602560248201527f747279696e6720746f2073657420616c726561647920736574746c6564206368604482015264185b9b995b60da1b6064820152608401610295565b600085815260208190526040812080549082905590808567ffffffffffffffff81111561039b5761039b610f93565b6040519080825280602002602001820160405280156103c4578160200160208202803683370190505b50905060005b8681101561048857600061040f8a8a8a858181106103ea576103ea610fa9565b90506020028101906103fc9190610fbf565b61040a906020810190610ff4565b610897565b90508083838151811061042457610424610fa9565b602002602001018181525050600080828152602001908152602001600020548561044e9190610f7b565b945086868381811061046257610462610fa9565b90506020020135846104749190610f7b565b9350508061048190611018565b90506103ca565b508183106104f65760005b868110156104f4578585828181106104ad576104ad610fa9565b905060200201356000808484815181106104c9576104c9610fa9565b6020026020010151815260200190815260200160002081905550806104ed90611018565b9050610493565b505b6000888152600160208190526040808320805460ff19169092179091555189917fef898d6cd3395b6dfe67a3c1923e5c726c1b154e979fb0a25a9c41d0093168b891a25050505050505050565b823560009081526001602052604090205460ff166105995760405162461bcd60e51b815260206004820152601360248201527218da185b9b995b081b9bdd081cd95d1d1b1959606a1b6044820152606401610295565b61060c836040516020016105ad9190611041565b60408051601f198184030181526020601f8601819004810284018101909252848352919085908590819084018382808284376000920191909152506105f9925050506020870187610fbf565b610607906020810190610ff4565b6108dc565b6106585760405162461bcd60e51b815260206004820152601d60248201527f7369676e617475726520766572696669636174696f6e206661696c65640000006044820152606401610295565b600061066c84356103fc6020870187610fbf565b600081815260208190526040902054909150606085013511156106c65760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610295565b6000818152602081905260409020546106e490606086013590611124565b6000828152602081905260409020556106fe84848461096a565b807fd0b6e7d0170f56c62f87de6a8a47a0ccf41c86ffb5084d399d8eb62e823f2a81606086018035906107349060408901610ff4565b604080519283526001600160a01b0390911660208301520160405180910390a250505050565b34156107ba5760405162461bcd60e51b815260206004820152602960248201527f6d6573736167652076616c7565206d757374206265203020666f7220746f6b656044820152681b8819195c1bdcda5d60ba1b6064820152608401610295565b5050565b6040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610831573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610855919061113b565b6107ba5760405162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b6044820152606401610295565b600082826040516020016108be9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b60008061093d85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050600061094b8286610a5b565b6001600160a01b0390811690851614925050509392505050565b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb6109a96060860160408701610ff4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152606086013560248201526044016020604051808303816000875af11580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d919061113b565b6109655760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606401610295565b6000806000610a6a8585610a7f565b91509150610a7781610aed565b509392505050565b6000808251604103610ab55760208301516040840151606085015160001a610aa987828585610ca6565b94509450505050610ae6565b8251604003610ade5760208301516040840151610ad3868383610d93565b935093505050610ae6565b506000905060025b9250929050565b6000816004811115610b0157610b0161115d565b03610b095750565b6001816004811115610b1d57610b1d61115d565b03610b6a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610295565b6002816004811115610b7e57610b7e61115d565b03610bcb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610295565b6003816004811115610bdf57610bdf61115d565b03610c375760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610295565b6004816004811115610c4b57610c4b61115d565b03610ca35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610295565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610cdd5750600090506003610d8a565b8460ff16601b14158015610cf557508460ff16601c14155b15610d065750600090506004610d8a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610d5a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610d8357600060019250925050610d8a565b9150600090505b94509492505050565b6000806001600160ff1b03831681610db060ff86901c601b610f7b565b9050610dbe87828885610ca6565b935093505050935093915050565b60008060408385031215610ddf57600080fd5b50508035926020909101359150565b60008083601f840112610e0057600080fd5b50813567ffffffffffffffff811115610e1857600080fd5b6020830191508360208260051b8501011115610ae657600080fd5b600080600080600060608688031215610e4b57600080fd5b85359450602086013567ffffffffffffffff80821115610e6a57600080fd5b610e7689838a01610dee565b90965094506040880135915080821115610e8f57600080fd5b50610e9c88828901610dee565b969995985093965092949392505050565b600060208284031215610ebf57600080fd5b5035919050565b600080600060408486031215610edb57600080fd5b833567ffffffffffffffff80821115610ef357600080fd5b9085019060808288031215610f0757600080fd5b90935060208501359080821115610f1d57600080fd5b818601915086601f830112610f3157600080fd5b813581811115610f4057600080fd5b876020828501011115610f5257600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052601160045260246000fd5b60008219821115610f8e57610f8e610f65565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610fd557600080fd5b9190910192915050565b6001600160a01b0381168114610ca357600080fd5b60006020828403121561100657600080fd5b813561101181610fdf565b9392505050565b60006001820161102a5761102a610f65565b5060010190565b803561103c81610fdf565b919050565b602081528135602082015260006020830135603e1984360301811261106557600080fd5b608060408401528301803561107981610fdf565b6001600160a01b031660a0840152602081013536829003601e1901811261109f57600080fd5b0160208101903567ffffffffffffffff8111156110bb57600080fd5b8036038213156110ca57600080fd5b604060c08501528060e085015261010081838287013760008183870101526110f460408701611031565b6001600160a01b03811660608701529250606095909501356080850152601f01601f191690920190920192915050565b60008282101561113657611136610f65565b500390565b60006020828403121561114d57600080fd5b8151801515811461101157600080fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220e982057addc7d123f123bb6f07e4b9c1a6240a33d7f1e279adcbe8e90a45546764736f6c634300080f0033", } // Assetholdererc20ABI is the input ABI used to generate the binding from. diff --git a/bindings/assetholdererc20/AssetHolderERC20BinRuntime.go b/bindings/assetholdererc20/AssetHolderERC20BinRuntime.go index bb0de7f..5779223 100644 --- a/bindings/assetholdererc20/AssetHolderERC20BinRuntime.go +++ b/bindings/assetholdererc20/AssetHolderERC20BinRuntime.go @@ -1,4 +1,4 @@ package assetholdererc20 // import "github.com/perun-network/perun-eth-backend/bindings/assetholdererc20" // AssetHolderERC20BinRuntime is the runtime part of the compiled bytecode used for deploying new contracts. -var AssetHolderERC20BinRuntime = "6080604052600436106100705760003560e01c8063ae9ee18c1161004e578063ae9ee18c146100e7578063d945af1d14610122578063fc0c546a14610162578063fca0f7781461019657600080fd5b80631de26e1614610075578063295482ce1461008a57806353c2ed8e146100aa575b600080fd5b610088610083366004610dcc565b6101b6565b005b34801561009657600080fd5b506100886100a5366004610e33565b610231565b3480156100b657600080fd5b506002546100ca906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100f357600080fd5b50610114610102366004610ead565b60006020819052908152604090205481565b6040519081526020016100de565b34801561012e57600080fd5b5061015261013d366004610ead565b60016020526000908152604090205460ff1681565b60405190151581526020016100de565b34801561016e57600080fd5b506100ca7f000000000000000000000000000000000000000000000000000000000000000081565b3480156101a257600080fd5b506100886101b1366004610ec6565b610543565b6101c0828261075a565b6000828152602081905260409020546101da908290610f7b565b6000838152602081905260409020556101f382826107be565b817fcd2fe07293de5928c5df9505b65a8d6506f8668dfe81af09090920687edc48a98260405161022591815260200190565b60405180910390a25050565b6002546001600160a01b0316331461029e5760405162461bcd60e51b815260206004820152602560248201527f63616e206f6e6c792062652063616c6c6564206279207468652061646a75646960448201526431b0ba37b960d91b60648201526084015b60405180910390fd5b8281146102ff5760405162461bcd60e51b815260206004820152602960248201527f7061727469636970616e7473206c656e6774682073686f756c6420657175616c6044820152682062616c616e63657360b81b6064820152608401610295565b60008581526001602052604090205460ff161561036c5760405162461bcd60e51b815260206004820152602560248201527f747279696e6720746f2073657420616c726561647920736574746c6564206368604482015264185b9b995b60da1b6064820152608401610295565b600085815260208190526040812080549082905590808567ffffffffffffffff81111561039b5761039b610f93565b6040519080825280602002602001820160405280156103c4578160200160208202803683370190505b50905060005b8681101561048857600061040f8a8a8a858181106103ea576103ea610fa9565b90506020028101906103fc9190610fbf565b61040a906020810190610ff4565b610897565b90508083838151811061042457610424610fa9565b602002602001018181525050600080828152602001908152602001600020548561044e9190610f7b565b945086868381811061046257610462610fa9565b90506020020135846104749190610f7b565b9350508061048190611018565b90506103ca565b508183106104f65760005b868110156104f4578585828181106104ad576104ad610fa9565b905060200201356000808484815181106104c9576104c9610fa9565b6020026020010151815260200190815260200160002081905550806104ed90611018565b9050610493565b505b6000888152600160208190526040808320805460ff19169092179091555189917fef898d6cd3395b6dfe67a3c1923e5c726c1b154e979fb0a25a9c41d0093168b891a25050505050505050565b823560009081526001602052604090205460ff166105995760405162461bcd60e51b815260206004820152601360248201527218da185b9b995b081b9bdd081cd95d1d1b1959606a1b6044820152606401610295565b61060c836040516020016105ad9190611041565b60408051601f198184030181526020601f8601819004810284018101909252848352919085908590819084018382808284376000920191909152506105f9925050506020870187610fbf565b610607906020810190610ff4565b6108dc565b6106585760405162461bcd60e51b815260206004820152601d60248201527f7369676e617475726520766572696669636174696f6e206661696c65640000006044820152606401610295565b600061066c84356103fc6020870187610fbf565b600081815260208190526040902054909150606085013511156106c65760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610295565b6000818152602081905260409020546106e490606086013590611124565b6000828152602081905260409020556106fe84848461096a565b807fd0b6e7d0170f56c62f87de6a8a47a0ccf41c86ffb5084d399d8eb62e823f2a81606086018035906107349060408901610ff4565b604080519283526001600160a01b0390911660208301520160405180910390a250505050565b34156107ba5760405162461bcd60e51b815260206004820152602960248201527f6d6573736167652076616c7565206d757374206265203020666f7220746f6b656044820152681b8819195c1bdcda5d60ba1b6064820152608401610295565b5050565b6040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610831573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610855919061113b565b6107ba5760405162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b6044820152606401610295565b600082826040516020016108be9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b60008061093d85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050600061094b8286610a5b565b6001600160a01b0390811690851614925050509392505050565b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb6109a96060860160408701610ff4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152606086013560248201526044016020604051808303816000875af11580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d919061113b565b6109655760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606401610295565b6000806000610a6a8585610a7f565b91509150610a7781610aed565b509392505050565b6000808251604103610ab55760208301516040840151606085015160001a610aa987828585610ca6565b94509450505050610ae6565b8251604003610ade5760208301516040840151610ad3868383610d93565b935093505050610ae6565b506000905060025b9250929050565b6000816004811115610b0157610b0161115d565b03610b095750565b6001816004811115610b1d57610b1d61115d565b03610b6a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610295565b6002816004811115610b7e57610b7e61115d565b03610bcb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610295565b6003816004811115610bdf57610bdf61115d565b03610c375760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610295565b6004816004811115610c4b57610c4b61115d565b03610ca35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610295565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610cdd5750600090506003610d8a565b8460ff16601b14158015610cf557508460ff16601c14155b15610d065750600090506004610d8a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610d5a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610d8357600060019250925050610d8a565b9150600090505b94509492505050565b6000806001600160ff1b03831681610db060ff86901c601b610f7b565b9050610dbe87828885610ca6565b935093505050935093915050565b60008060408385031215610ddf57600080fd5b50508035926020909101359150565b60008083601f840112610e0057600080fd5b50813567ffffffffffffffff811115610e1857600080fd5b6020830191508360208260051b8501011115610ae657600080fd5b600080600080600060608688031215610e4b57600080fd5b85359450602086013567ffffffffffffffff80821115610e6a57600080fd5b610e7689838a01610dee565b90965094506040880135915080821115610e8f57600080fd5b50610e9c88828901610dee565b969995985093965092949392505050565b600060208284031215610ebf57600080fd5b5035919050565b600080600060408486031215610edb57600080fd5b833567ffffffffffffffff80821115610ef357600080fd5b9085019060808288031215610f0757600080fd5b90935060208501359080821115610f1d57600080fd5b818601915086601f830112610f3157600080fd5b813581811115610f4057600080fd5b876020828501011115610f5257600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052601160045260246000fd5b60008219821115610f8e57610f8e610f65565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610fd557600080fd5b9190910192915050565b6001600160a01b0381168114610ca357600080fd5b60006020828403121561100657600080fd5b813561101181610fdf565b9392505050565b60006001820161102a5761102a610f65565b5060010190565b803561103c81610fdf565b919050565b602081528135602082015260006020830135603e1984360301811261106557600080fd5b608060408401528301803561107981610fdf565b6001600160a01b031660a0840152602081013536829003601e1901811261109f57600080fd5b0160208101903567ffffffffffffffff8111156110bb57600080fd5b8036038213156110ca57600080fd5b604060c08501528060e085015261010081838287013760008183870101526110f460408701611031565b6001600160a01b03811660608701529250606095909501356080850152601f01601f191690920190920192915050565b60008282101561113657611136610f65565b500390565b60006020828403121561114d57600080fd5b8151801515811461101157600080fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220e285dbc29171628d35e3b64e848d23e02fa6c180cf400d15487a67a7bede0a6264736f6c634300080f0033" +var AssetHolderERC20BinRuntime = "6080604052600436106100705760003560e01c8063ae9ee18c1161004e578063ae9ee18c146100e7578063d945af1d14610122578063fc0c546a14610162578063fca0f7781461019657600080fd5b80631de26e1614610075578063295482ce1461008a57806353c2ed8e146100aa575b600080fd5b610088610083366004610dcc565b6101b6565b005b34801561009657600080fd5b506100886100a5366004610e33565b610231565b3480156100b657600080fd5b506002546100ca906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100f357600080fd5b50610114610102366004610ead565b60006020819052908152604090205481565b6040519081526020016100de565b34801561012e57600080fd5b5061015261013d366004610ead565b60016020526000908152604090205460ff1681565b60405190151581526020016100de565b34801561016e57600080fd5b506100ca7f000000000000000000000000000000000000000000000000000000000000000081565b3480156101a257600080fd5b506100886101b1366004610ec6565b610543565b6101c0828261075a565b6000828152602081905260409020546101da908290610f7b565b6000838152602081905260409020556101f382826107be565b817fcd2fe07293de5928c5df9505b65a8d6506f8668dfe81af09090920687edc48a98260405161022591815260200190565b60405180910390a25050565b6002546001600160a01b0316331461029e5760405162461bcd60e51b815260206004820152602560248201527f63616e206f6e6c792062652063616c6c6564206279207468652061646a75646960448201526431b0ba37b960d91b60648201526084015b60405180910390fd5b8281146102ff5760405162461bcd60e51b815260206004820152602960248201527f7061727469636970616e7473206c656e6774682073686f756c6420657175616c6044820152682062616c616e63657360b81b6064820152608401610295565b60008581526001602052604090205460ff161561036c5760405162461bcd60e51b815260206004820152602560248201527f747279696e6720746f2073657420616c726561647920736574746c6564206368604482015264185b9b995b60da1b6064820152608401610295565b600085815260208190526040812080549082905590808567ffffffffffffffff81111561039b5761039b610f93565b6040519080825280602002602001820160405280156103c4578160200160208202803683370190505b50905060005b8681101561048857600061040f8a8a8a858181106103ea576103ea610fa9565b90506020028101906103fc9190610fbf565b61040a906020810190610ff4565b610897565b90508083838151811061042457610424610fa9565b602002602001018181525050600080828152602001908152602001600020548561044e9190610f7b565b945086868381811061046257610462610fa9565b90506020020135846104749190610f7b565b9350508061048190611018565b90506103ca565b508183106104f65760005b868110156104f4578585828181106104ad576104ad610fa9565b905060200201356000808484815181106104c9576104c9610fa9565b6020026020010151815260200190815260200160002081905550806104ed90611018565b9050610493565b505b6000888152600160208190526040808320805460ff19169092179091555189917fef898d6cd3395b6dfe67a3c1923e5c726c1b154e979fb0a25a9c41d0093168b891a25050505050505050565b823560009081526001602052604090205460ff166105995760405162461bcd60e51b815260206004820152601360248201527218da185b9b995b081b9bdd081cd95d1d1b1959606a1b6044820152606401610295565b61060c836040516020016105ad9190611041565b60408051601f198184030181526020601f8601819004810284018101909252848352919085908590819084018382808284376000920191909152506105f9925050506020870187610fbf565b610607906020810190610ff4565b6108dc565b6106585760405162461bcd60e51b815260206004820152601d60248201527f7369676e617475726520766572696669636174696f6e206661696c65640000006044820152606401610295565b600061066c84356103fc6020870187610fbf565b600081815260208190526040902054909150606085013511156106c65760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610295565b6000818152602081905260409020546106e490606086013590611124565b6000828152602081905260409020556106fe84848461096a565b807fd0b6e7d0170f56c62f87de6a8a47a0ccf41c86ffb5084d399d8eb62e823f2a81606086018035906107349060408901610ff4565b604080519283526001600160a01b0390911660208301520160405180910390a250505050565b34156107ba5760405162461bcd60e51b815260206004820152602960248201527f6d6573736167652076616c7565206d757374206265203020666f7220746f6b656044820152681b8819195c1bdcda5d60ba1b6064820152608401610295565b5050565b6040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610831573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610855919061113b565b6107ba5760405162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b6044820152606401610295565b600082826040516020016108be9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b60008061093d85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050600061094b8286610a5b565b6001600160a01b0390811690851614925050509392505050565b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb6109a96060860160408701610ff4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152606086013560248201526044016020604051808303816000875af11580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d919061113b565b6109655760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606401610295565b6000806000610a6a8585610a7f565b91509150610a7781610aed565b509392505050565b6000808251604103610ab55760208301516040840151606085015160001a610aa987828585610ca6565b94509450505050610ae6565b8251604003610ade5760208301516040840151610ad3868383610d93565b935093505050610ae6565b506000905060025b9250929050565b6000816004811115610b0157610b0161115d565b03610b095750565b6001816004811115610b1d57610b1d61115d565b03610b6a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610295565b6002816004811115610b7e57610b7e61115d565b03610bcb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610295565b6003816004811115610bdf57610bdf61115d565b03610c375760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610295565b6004816004811115610c4b57610c4b61115d565b03610ca35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610295565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610cdd5750600090506003610d8a565b8460ff16601b14158015610cf557508460ff16601c14155b15610d065750600090506004610d8a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610d5a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610d8357600060019250925050610d8a565b9150600090505b94509492505050565b6000806001600160ff1b03831681610db060ff86901c601b610f7b565b9050610dbe87828885610ca6565b935093505050935093915050565b60008060408385031215610ddf57600080fd5b50508035926020909101359150565b60008083601f840112610e0057600080fd5b50813567ffffffffffffffff811115610e1857600080fd5b6020830191508360208260051b8501011115610ae657600080fd5b600080600080600060608688031215610e4b57600080fd5b85359450602086013567ffffffffffffffff80821115610e6a57600080fd5b610e7689838a01610dee565b90965094506040880135915080821115610e8f57600080fd5b50610e9c88828901610dee565b969995985093965092949392505050565b600060208284031215610ebf57600080fd5b5035919050565b600080600060408486031215610edb57600080fd5b833567ffffffffffffffff80821115610ef357600080fd5b9085019060808288031215610f0757600080fd5b90935060208501359080821115610f1d57600080fd5b818601915086601f830112610f3157600080fd5b813581811115610f4057600080fd5b876020828501011115610f5257600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052601160045260246000fd5b60008219821115610f8e57610f8e610f65565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610fd557600080fd5b9190910192915050565b6001600160a01b0381168114610ca357600080fd5b60006020828403121561100657600080fd5b813561101181610fdf565b9392505050565b60006001820161102a5761102a610f65565b5060010190565b803561103c81610fdf565b919050565b602081528135602082015260006020830135603e1984360301811261106557600080fd5b608060408401528301803561107981610fdf565b6001600160a01b031660a0840152602081013536829003601e1901811261109f57600080fd5b0160208101903567ffffffffffffffff8111156110bb57600080fd5b8036038213156110ca57600080fd5b604060c08501528060e085015261010081838287013760008183870101526110f460408701611031565b6001600160a01b03811660608701529250606095909501356080850152601f01601f191690920190920192915050565b60008282101561113657611136610f65565b500390565b60006020828403121561114d57600080fd5b8151801515811461101157600080fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220e982057addc7d123f123bb6f07e4b9c1a6240a33d7f1e279adcbe8e90a45546764736f6c634300080f0033" diff --git a/bindings/assetholdereth/AssetHolderETH.go b/bindings/assetholdereth/AssetHolderETH.go index d3be064..30ba9be 100644 --- a/bindings/assetholdereth/AssetHolderETH.go +++ b/bindings/assetholdereth/AssetHolderETH.go @@ -46,7 +46,7 @@ type ChannelParticipant struct { // AssetholderethMetaData contains all meta data concerning the Assetholdereth contract. var AssetholderethMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_adjudicator\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"fundingID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"}],\"name\":\"OutcomeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"fundingID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"adjudicator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"fundingID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"holdings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"parts\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"newBals\",\"type\":\"uint256[]\"}],\"name\":\"setOutcome\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"settled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant\",\"name\":\"participant\",\"type\":\"tuple\"},{\"internalType\":\"addresspayable\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structAssetHolder.WithdrawalAuth\",\"name\":\"authorization\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b5060405161103338038061103383398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610fa0806100936000396000f3fe6080604052600436106100555760003560e01c80631de26e161461005a578063295482ce1461006f57806353c2ed8e1461008f578063ae9ee18c146100cc578063d945af1d14610107578063fca0f77814610147575b600080fd5b61006d610068366004610be5565b610167565b005b34801561007b57600080fd5b5061006d61008a366004610c4c565b6101d8565b34801561009b57600080fd5b506002546100af906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100d857600080fd5b506100f96100e7366004610cc6565b60006020819052908152604090205481565b6040519081526020016100c3565b34801561011357600080fd5b50610137610122366004610cc6565b60016020526000908152604090205460ff1681565b60405190151581526020016100c3565b34801561015357600080fd5b5061006d610162366004610cdf565b6104ea565b6101718282610701565b60008281526020819052604090205461018b908290610d94565b600083815260208190526040902055817fcd2fe07293de5928c5df9505b65a8d6506f8668dfe81af09090920687edc48a9826040516101cc91815260200190565b60405180910390a25050565b6002546001600160a01b031633146102455760405162461bcd60e51b815260206004820152602560248201527f63616e206f6e6c792062652063616c6c6564206279207468652061646a75646960448201526431b0ba37b960d91b60648201526084015b60405180910390fd5b8281146102a65760405162461bcd60e51b815260206004820152602960248201527f7061727469636970616e7473206c656e6774682073686f756c6420657175616c6044820152682062616c616e63657360b81b606482015260840161023c565b60008581526001602052604090205460ff16156103135760405162461bcd60e51b815260206004820152602560248201527f747279696e6720746f2073657420616c726561647920736574746c6564206368604482015264185b9b995b60da1b606482015260840161023c565b600085815260208190526040812080549082905590808567ffffffffffffffff81111561034257610342610dac565b60405190808252806020026020018201604052801561036b578160200160208202803683370190505b50905060005b8681101561042f5760006103b68a8a8a8581811061039157610391610dc2565b90506020028101906103a39190610dd8565b6103b1906020810190610e0d565b610754565b9050808383815181106103cb576103cb610dc2565b60200260200101818152505060008082815260200190815260200160002054856103f59190610d94565b945086868381811061040957610409610dc2565b905060200201358461041b9190610d94565b9350508061042890610e31565b9050610371565b5081831061049d5760005b8681101561049b5785858281811061045457610454610dc2565b9050602002013560008084848151811061047057610470610dc2565b60200260200101518152602001908152602001600020819055508061049490610e31565b905061043a565b505b6000888152600160208190526040808320805460ff19169092179091555189917fef898d6cd3395b6dfe67a3c1923e5c726c1b154e979fb0a25a9c41d0093168b891a25050505050505050565b823560009081526001602052604090205460ff166105405760405162461bcd60e51b815260206004820152601360248201527218da185b9b995b081b9bdd081cd95d1d1b1959606a1b604482015260640161023c565b6105b3836040516020016105549190610e5a565b60408051601f198184030181526020601f8601819004810284018101909252848352919085908590819084018382808284376000920191909152506105a0925050506020870187610dd8565b6105ae906020810190610e0d565b610799565b6105ff5760405162461bcd60e51b815260206004820152601d60248201527f7369676e617475726520766572696669636174696f6e206661696c6564000000604482015260640161023c565b600061061384356103a36020870187610dd8565b6000818152602081905260409020549091506060850135111561066d5760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b604482015260640161023c565b60008181526020819052604090205461068b90606086013590610f3d565b6000828152602081905260409020556106a5848484610822565b807fd0b6e7d0170f56c62f87de6a8a47a0ccf41c86ffb5084d399d8eb62e823f2a81606086018035906106db9060408901610e0d565b604080519283526001600160a01b0390911660208301520160405180910390a250505050565b8034146107505760405162461bcd60e51b815260206004820152601f60248201527f77726f6e6720616d6f756e74206f662045544820666f72206465706f73697400604482015260640161023c565b5050565b6000828260405160200161077b9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b6000806107fa85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b905060006108088286610874565b6001600160a01b0390811690851614925050509392505050565b6108326060840160408501610e0d565b6001600160a01b03166108fc84606001359081150290604051600060405180830381858888f1935050505015801561086e573d6000803e3d6000fd5b50505050565b60008060006108838585610898565b9150915061089081610906565b509392505050565b60008082516041036108ce5760208301516040840151606085015160001a6108c287828585610abf565b945094505050506108ff565b82516040036108f757602083015160408401516108ec868383610bac565b9350935050506108ff565b506000905060025b9250929050565b600081600481111561091a5761091a610f54565b036109225750565b600181600481111561093657610936610f54565b036109835760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161023c565b600281600481111561099757610997610f54565b036109e45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161023c565b60038160048111156109f8576109f8610f54565b03610a505760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161023c565b6004816004811115610a6457610a64610f54565b03610abc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161023c565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610af65750600090506003610ba3565b8460ff16601b14158015610b0e57508460ff16601c14155b15610b1f5750600090506004610ba3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610b73573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610b9c57600060019250925050610ba3565b9150600090505b94509492505050565b6000806001600160ff1b03831681610bc960ff86901c601b610d94565b9050610bd787828885610abf565b935093505050935093915050565b60008060408385031215610bf857600080fd5b50508035926020909101359150565b60008083601f840112610c1957600080fd5b50813567ffffffffffffffff811115610c3157600080fd5b6020830191508360208260051b85010111156108ff57600080fd5b600080600080600060608688031215610c6457600080fd5b85359450602086013567ffffffffffffffff80821115610c8357600080fd5b610c8f89838a01610c07565b90965094506040880135915080821115610ca857600080fd5b50610cb588828901610c07565b969995985093965092949392505050565b600060208284031215610cd857600080fd5b5035919050565b600080600060408486031215610cf457600080fd5b833567ffffffffffffffff80821115610d0c57600080fd5b9085019060808288031215610d2057600080fd5b90935060208501359080821115610d3657600080fd5b818601915086601f830112610d4a57600080fd5b813581811115610d5957600080fd5b876020828501011115610d6b57600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052601160045260246000fd5b60008219821115610da757610da7610d7e565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610dee57600080fd5b9190910192915050565b6001600160a01b0381168114610abc57600080fd5b600060208284031215610e1f57600080fd5b8135610e2a81610df8565b9392505050565b600060018201610e4357610e43610d7e565b5060010190565b8035610e5581610df8565b919050565b602081528135602082015260006020830135603e19843603018112610e7e57600080fd5b6080604084015283018035610e9281610df8565b6001600160a01b031660a0840152602081013536829003601e19018112610eb857600080fd5b0160208101903567ffffffffffffffff811115610ed457600080fd5b803603821315610ee357600080fd5b604060c08501528060e08501526101008183828701376000818387010152610f0d60408701610e4a565b6001600160a01b03811660608701529250606095909501356080850152601f01601f191690920190920192915050565b600082821015610f4f57610f4f610d7e565b500390565b634e487b7160e01b600052602160045260246000fdfea264697066735822122038dc947cb2ebf2fee90e000b19334221d8c9a23e7c6769f3907ca15a4537512c64736f6c634300080f0033", + Bin: "0x608060405234801561001057600080fd5b5060405161103338038061103383398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610fa0806100936000396000f3fe6080604052600436106100555760003560e01c80631de26e161461005a578063295482ce1461006f57806353c2ed8e1461008f578063ae9ee18c146100cc578063d945af1d14610107578063fca0f77814610147575b600080fd5b61006d610068366004610be5565b610167565b005b34801561007b57600080fd5b5061006d61008a366004610c4c565b6101d8565b34801561009b57600080fd5b506002546100af906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100d857600080fd5b506100f96100e7366004610cc6565b60006020819052908152604090205481565b6040519081526020016100c3565b34801561011357600080fd5b50610137610122366004610cc6565b60016020526000908152604090205460ff1681565b60405190151581526020016100c3565b34801561015357600080fd5b5061006d610162366004610cdf565b6104ea565b6101718282610701565b60008281526020819052604090205461018b908290610d94565b600083815260208190526040902055817fcd2fe07293de5928c5df9505b65a8d6506f8668dfe81af09090920687edc48a9826040516101cc91815260200190565b60405180910390a25050565b6002546001600160a01b031633146102455760405162461bcd60e51b815260206004820152602560248201527f63616e206f6e6c792062652063616c6c6564206279207468652061646a75646960448201526431b0ba37b960d91b60648201526084015b60405180910390fd5b8281146102a65760405162461bcd60e51b815260206004820152602960248201527f7061727469636970616e7473206c656e6774682073686f756c6420657175616c6044820152682062616c616e63657360b81b606482015260840161023c565b60008581526001602052604090205460ff16156103135760405162461bcd60e51b815260206004820152602560248201527f747279696e6720746f2073657420616c726561647920736574746c6564206368604482015264185b9b995b60da1b606482015260840161023c565b600085815260208190526040812080549082905590808567ffffffffffffffff81111561034257610342610dac565b60405190808252806020026020018201604052801561036b578160200160208202803683370190505b50905060005b8681101561042f5760006103b68a8a8a8581811061039157610391610dc2565b90506020028101906103a39190610dd8565b6103b1906020810190610e0d565b610754565b9050808383815181106103cb576103cb610dc2565b60200260200101818152505060008082815260200190815260200160002054856103f59190610d94565b945086868381811061040957610409610dc2565b905060200201358461041b9190610d94565b9350508061042890610e31565b9050610371565b5081831061049d5760005b8681101561049b5785858281811061045457610454610dc2565b9050602002013560008084848151811061047057610470610dc2565b60200260200101518152602001908152602001600020819055508061049490610e31565b905061043a565b505b6000888152600160208190526040808320805460ff19169092179091555189917fef898d6cd3395b6dfe67a3c1923e5c726c1b154e979fb0a25a9c41d0093168b891a25050505050505050565b823560009081526001602052604090205460ff166105405760405162461bcd60e51b815260206004820152601360248201527218da185b9b995b081b9bdd081cd95d1d1b1959606a1b604482015260640161023c565b6105b3836040516020016105549190610e5a565b60408051601f198184030181526020601f8601819004810284018101909252848352919085908590819084018382808284376000920191909152506105a0925050506020870187610dd8565b6105ae906020810190610e0d565b610799565b6105ff5760405162461bcd60e51b815260206004820152601d60248201527f7369676e617475726520766572696669636174696f6e206661696c6564000000604482015260640161023c565b600061061384356103a36020870187610dd8565b6000818152602081905260409020549091506060850135111561066d5760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b604482015260640161023c565b60008181526020819052604090205461068b90606086013590610f3d565b6000828152602081905260409020556106a5848484610822565b807fd0b6e7d0170f56c62f87de6a8a47a0ccf41c86ffb5084d399d8eb62e823f2a81606086018035906106db9060408901610e0d565b604080519283526001600160a01b0390911660208301520160405180910390a250505050565b8034146107505760405162461bcd60e51b815260206004820152601f60248201527f77726f6e6720616d6f756e74206f662045544820666f72206465706f73697400604482015260640161023c565b5050565b6000828260405160200161077b9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b6000806107fa85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b905060006108088286610874565b6001600160a01b0390811690851614925050509392505050565b6108326060840160408501610e0d565b6001600160a01b03166108fc84606001359081150290604051600060405180830381858888f1935050505015801561086e573d6000803e3d6000fd5b50505050565b60008060006108838585610898565b9150915061089081610906565b509392505050565b60008082516041036108ce5760208301516040840151606085015160001a6108c287828585610abf565b945094505050506108ff565b82516040036108f757602083015160408401516108ec868383610bac565b9350935050506108ff565b506000905060025b9250929050565b600081600481111561091a5761091a610f54565b036109225750565b600181600481111561093657610936610f54565b036109835760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161023c565b600281600481111561099757610997610f54565b036109e45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161023c565b60038160048111156109f8576109f8610f54565b03610a505760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161023c565b6004816004811115610a6457610a64610f54565b03610abc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161023c565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610af65750600090506003610ba3565b8460ff16601b14158015610b0e57508460ff16601c14155b15610b1f5750600090506004610ba3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610b73573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610b9c57600060019250925050610ba3565b9150600090505b94509492505050565b6000806001600160ff1b03831681610bc960ff86901c601b610d94565b9050610bd787828885610abf565b935093505050935093915050565b60008060408385031215610bf857600080fd5b50508035926020909101359150565b60008083601f840112610c1957600080fd5b50813567ffffffffffffffff811115610c3157600080fd5b6020830191508360208260051b85010111156108ff57600080fd5b600080600080600060608688031215610c6457600080fd5b85359450602086013567ffffffffffffffff80821115610c8357600080fd5b610c8f89838a01610c07565b90965094506040880135915080821115610ca857600080fd5b50610cb588828901610c07565b969995985093965092949392505050565b600060208284031215610cd857600080fd5b5035919050565b600080600060408486031215610cf457600080fd5b833567ffffffffffffffff80821115610d0c57600080fd5b9085019060808288031215610d2057600080fd5b90935060208501359080821115610d3657600080fd5b818601915086601f830112610d4a57600080fd5b813581811115610d5957600080fd5b876020828501011115610d6b57600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052601160045260246000fd5b60008219821115610da757610da7610d7e565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610dee57600080fd5b9190910192915050565b6001600160a01b0381168114610abc57600080fd5b600060208284031215610e1f57600080fd5b8135610e2a81610df8565b9392505050565b600060018201610e4357610e43610d7e565b5060010190565b8035610e5581610df8565b919050565b602081528135602082015260006020830135603e19843603018112610e7e57600080fd5b6080604084015283018035610e9281610df8565b6001600160a01b031660a0840152602081013536829003601e19018112610eb857600080fd5b0160208101903567ffffffffffffffff811115610ed457600080fd5b803603821315610ee357600080fd5b604060c08501528060e08501526101008183828701376000818387010152610f0d60408701610e4a565b6001600160a01b03811660608701529250606095909501356080850152601f01601f191690920190920192915050565b600082821015610f4f57610f4f610d7e565b500390565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220a815871e3c81c414a168ada656c20370f3f45ba3a643e6ce1b652648a3bbe99264736f6c634300080f0033", } // AssetholderethABI is the input ABI used to generate the binding from. diff --git a/bindings/assetholdereth/AssetHolderETHBinRuntime.go b/bindings/assetholdereth/AssetHolderETHBinRuntime.go index d6c18f1..59f9ec3 100644 --- a/bindings/assetholdereth/AssetHolderETHBinRuntime.go +++ b/bindings/assetholdereth/AssetHolderETHBinRuntime.go @@ -1,4 +1,4 @@ package assetholdereth // import "github.com/perun-network/perun-eth-backend/bindings/assetholdereth" // AssetHolderETHBinRuntime is the runtime part of the compiled bytecode used for deploying new contracts. -var AssetHolderETHBinRuntime = "6080604052600436106100555760003560e01c80631de26e161461005a578063295482ce1461006f57806353c2ed8e1461008f578063ae9ee18c146100cc578063d945af1d14610107578063fca0f77814610147575b600080fd5b61006d610068366004610be5565b610167565b005b34801561007b57600080fd5b5061006d61008a366004610c4c565b6101d8565b34801561009b57600080fd5b506002546100af906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100d857600080fd5b506100f96100e7366004610cc6565b60006020819052908152604090205481565b6040519081526020016100c3565b34801561011357600080fd5b50610137610122366004610cc6565b60016020526000908152604090205460ff1681565b60405190151581526020016100c3565b34801561015357600080fd5b5061006d610162366004610cdf565b6104ea565b6101718282610701565b60008281526020819052604090205461018b908290610d94565b600083815260208190526040902055817fcd2fe07293de5928c5df9505b65a8d6506f8668dfe81af09090920687edc48a9826040516101cc91815260200190565b60405180910390a25050565b6002546001600160a01b031633146102455760405162461bcd60e51b815260206004820152602560248201527f63616e206f6e6c792062652063616c6c6564206279207468652061646a75646960448201526431b0ba37b960d91b60648201526084015b60405180910390fd5b8281146102a65760405162461bcd60e51b815260206004820152602960248201527f7061727469636970616e7473206c656e6774682073686f756c6420657175616c6044820152682062616c616e63657360b81b606482015260840161023c565b60008581526001602052604090205460ff16156103135760405162461bcd60e51b815260206004820152602560248201527f747279696e6720746f2073657420616c726561647920736574746c6564206368604482015264185b9b995b60da1b606482015260840161023c565b600085815260208190526040812080549082905590808567ffffffffffffffff81111561034257610342610dac565b60405190808252806020026020018201604052801561036b578160200160208202803683370190505b50905060005b8681101561042f5760006103b68a8a8a8581811061039157610391610dc2565b90506020028101906103a39190610dd8565b6103b1906020810190610e0d565b610754565b9050808383815181106103cb576103cb610dc2565b60200260200101818152505060008082815260200190815260200160002054856103f59190610d94565b945086868381811061040957610409610dc2565b905060200201358461041b9190610d94565b9350508061042890610e31565b9050610371565b5081831061049d5760005b8681101561049b5785858281811061045457610454610dc2565b9050602002013560008084848151811061047057610470610dc2565b60200260200101518152602001908152602001600020819055508061049490610e31565b905061043a565b505b6000888152600160208190526040808320805460ff19169092179091555189917fef898d6cd3395b6dfe67a3c1923e5c726c1b154e979fb0a25a9c41d0093168b891a25050505050505050565b823560009081526001602052604090205460ff166105405760405162461bcd60e51b815260206004820152601360248201527218da185b9b995b081b9bdd081cd95d1d1b1959606a1b604482015260640161023c565b6105b3836040516020016105549190610e5a565b60408051601f198184030181526020601f8601819004810284018101909252848352919085908590819084018382808284376000920191909152506105a0925050506020870187610dd8565b6105ae906020810190610e0d565b610799565b6105ff5760405162461bcd60e51b815260206004820152601d60248201527f7369676e617475726520766572696669636174696f6e206661696c6564000000604482015260640161023c565b600061061384356103a36020870187610dd8565b6000818152602081905260409020549091506060850135111561066d5760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b604482015260640161023c565b60008181526020819052604090205461068b90606086013590610f3d565b6000828152602081905260409020556106a5848484610822565b807fd0b6e7d0170f56c62f87de6a8a47a0ccf41c86ffb5084d399d8eb62e823f2a81606086018035906106db9060408901610e0d565b604080519283526001600160a01b0390911660208301520160405180910390a250505050565b8034146107505760405162461bcd60e51b815260206004820152601f60248201527f77726f6e6720616d6f756e74206f662045544820666f72206465706f73697400604482015260640161023c565b5050565b6000828260405160200161077b9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b6000806107fa85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b905060006108088286610874565b6001600160a01b0390811690851614925050509392505050565b6108326060840160408501610e0d565b6001600160a01b03166108fc84606001359081150290604051600060405180830381858888f1935050505015801561086e573d6000803e3d6000fd5b50505050565b60008060006108838585610898565b9150915061089081610906565b509392505050565b60008082516041036108ce5760208301516040840151606085015160001a6108c287828585610abf565b945094505050506108ff565b82516040036108f757602083015160408401516108ec868383610bac565b9350935050506108ff565b506000905060025b9250929050565b600081600481111561091a5761091a610f54565b036109225750565b600181600481111561093657610936610f54565b036109835760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161023c565b600281600481111561099757610997610f54565b036109e45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161023c565b60038160048111156109f8576109f8610f54565b03610a505760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161023c565b6004816004811115610a6457610a64610f54565b03610abc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161023c565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610af65750600090506003610ba3565b8460ff16601b14158015610b0e57508460ff16601c14155b15610b1f5750600090506004610ba3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610b73573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610b9c57600060019250925050610ba3565b9150600090505b94509492505050565b6000806001600160ff1b03831681610bc960ff86901c601b610d94565b9050610bd787828885610abf565b935093505050935093915050565b60008060408385031215610bf857600080fd5b50508035926020909101359150565b60008083601f840112610c1957600080fd5b50813567ffffffffffffffff811115610c3157600080fd5b6020830191508360208260051b85010111156108ff57600080fd5b600080600080600060608688031215610c6457600080fd5b85359450602086013567ffffffffffffffff80821115610c8357600080fd5b610c8f89838a01610c07565b90965094506040880135915080821115610ca857600080fd5b50610cb588828901610c07565b969995985093965092949392505050565b600060208284031215610cd857600080fd5b5035919050565b600080600060408486031215610cf457600080fd5b833567ffffffffffffffff80821115610d0c57600080fd5b9085019060808288031215610d2057600080fd5b90935060208501359080821115610d3657600080fd5b818601915086601f830112610d4a57600080fd5b813581811115610d5957600080fd5b876020828501011115610d6b57600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052601160045260246000fd5b60008219821115610da757610da7610d7e565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610dee57600080fd5b9190910192915050565b6001600160a01b0381168114610abc57600080fd5b600060208284031215610e1f57600080fd5b8135610e2a81610df8565b9392505050565b600060018201610e4357610e43610d7e565b5060010190565b8035610e5581610df8565b919050565b602081528135602082015260006020830135603e19843603018112610e7e57600080fd5b6080604084015283018035610e9281610df8565b6001600160a01b031660a0840152602081013536829003601e19018112610eb857600080fd5b0160208101903567ffffffffffffffff811115610ed457600080fd5b803603821315610ee357600080fd5b604060c08501528060e08501526101008183828701376000818387010152610f0d60408701610e4a565b6001600160a01b03811660608701529250606095909501356080850152601f01601f191690920190920192915050565b600082821015610f4f57610f4f610d7e565b500390565b634e487b7160e01b600052602160045260246000fdfea264697066735822122038dc947cb2ebf2fee90e000b19334221d8c9a23e7c6769f3907ca15a4537512c64736f6c634300080f0033" +var AssetHolderETHBinRuntime = "6080604052600436106100555760003560e01c80631de26e161461005a578063295482ce1461006f57806353c2ed8e1461008f578063ae9ee18c146100cc578063d945af1d14610107578063fca0f77814610147575b600080fd5b61006d610068366004610be5565b610167565b005b34801561007b57600080fd5b5061006d61008a366004610c4c565b6101d8565b34801561009b57600080fd5b506002546100af906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100d857600080fd5b506100f96100e7366004610cc6565b60006020819052908152604090205481565b6040519081526020016100c3565b34801561011357600080fd5b50610137610122366004610cc6565b60016020526000908152604090205460ff1681565b60405190151581526020016100c3565b34801561015357600080fd5b5061006d610162366004610cdf565b6104ea565b6101718282610701565b60008281526020819052604090205461018b908290610d94565b600083815260208190526040902055817fcd2fe07293de5928c5df9505b65a8d6506f8668dfe81af09090920687edc48a9826040516101cc91815260200190565b60405180910390a25050565b6002546001600160a01b031633146102455760405162461bcd60e51b815260206004820152602560248201527f63616e206f6e6c792062652063616c6c6564206279207468652061646a75646960448201526431b0ba37b960d91b60648201526084015b60405180910390fd5b8281146102a65760405162461bcd60e51b815260206004820152602960248201527f7061727469636970616e7473206c656e6774682073686f756c6420657175616c6044820152682062616c616e63657360b81b606482015260840161023c565b60008581526001602052604090205460ff16156103135760405162461bcd60e51b815260206004820152602560248201527f747279696e6720746f2073657420616c726561647920736574746c6564206368604482015264185b9b995b60da1b606482015260840161023c565b600085815260208190526040812080549082905590808567ffffffffffffffff81111561034257610342610dac565b60405190808252806020026020018201604052801561036b578160200160208202803683370190505b50905060005b8681101561042f5760006103b68a8a8a8581811061039157610391610dc2565b90506020028101906103a39190610dd8565b6103b1906020810190610e0d565b610754565b9050808383815181106103cb576103cb610dc2565b60200260200101818152505060008082815260200190815260200160002054856103f59190610d94565b945086868381811061040957610409610dc2565b905060200201358461041b9190610d94565b9350508061042890610e31565b9050610371565b5081831061049d5760005b8681101561049b5785858281811061045457610454610dc2565b9050602002013560008084848151811061047057610470610dc2565b60200260200101518152602001908152602001600020819055508061049490610e31565b905061043a565b505b6000888152600160208190526040808320805460ff19169092179091555189917fef898d6cd3395b6dfe67a3c1923e5c726c1b154e979fb0a25a9c41d0093168b891a25050505050505050565b823560009081526001602052604090205460ff166105405760405162461bcd60e51b815260206004820152601360248201527218da185b9b995b081b9bdd081cd95d1d1b1959606a1b604482015260640161023c565b6105b3836040516020016105549190610e5a565b60408051601f198184030181526020601f8601819004810284018101909252848352919085908590819084018382808284376000920191909152506105a0925050506020870187610dd8565b6105ae906020810190610e0d565b610799565b6105ff5760405162461bcd60e51b815260206004820152601d60248201527f7369676e617475726520766572696669636174696f6e206661696c6564000000604482015260640161023c565b600061061384356103a36020870187610dd8565b6000818152602081905260409020549091506060850135111561066d5760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b604482015260640161023c565b60008181526020819052604090205461068b90606086013590610f3d565b6000828152602081905260409020556106a5848484610822565b807fd0b6e7d0170f56c62f87de6a8a47a0ccf41c86ffb5084d399d8eb62e823f2a81606086018035906106db9060408901610e0d565b604080519283526001600160a01b0390911660208301520160405180910390a250505050565b8034146107505760405162461bcd60e51b815260206004820152601f60248201527f77726f6e6720616d6f756e74206f662045544820666f72206465706f73697400604482015260640161023c565b5050565b6000828260405160200161077b9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b6000806107fa85805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b905060006108088286610874565b6001600160a01b0390811690851614925050509392505050565b6108326060840160408501610e0d565b6001600160a01b03166108fc84606001359081150290604051600060405180830381858888f1935050505015801561086e573d6000803e3d6000fd5b50505050565b60008060006108838585610898565b9150915061089081610906565b509392505050565b60008082516041036108ce5760208301516040840151606085015160001a6108c287828585610abf565b945094505050506108ff565b82516040036108f757602083015160408401516108ec868383610bac565b9350935050506108ff565b506000905060025b9250929050565b600081600481111561091a5761091a610f54565b036109225750565b600181600481111561093657610936610f54565b036109835760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161023c565b600281600481111561099757610997610f54565b036109e45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161023c565b60038160048111156109f8576109f8610f54565b03610a505760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161023c565b6004816004811115610a6457610a64610f54565b03610abc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161023c565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610af65750600090506003610ba3565b8460ff16601b14158015610b0e57508460ff16601c14155b15610b1f5750600090506004610ba3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610b73573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610b9c57600060019250925050610ba3565b9150600090505b94509492505050565b6000806001600160ff1b03831681610bc960ff86901c601b610d94565b9050610bd787828885610abf565b935093505050935093915050565b60008060408385031215610bf857600080fd5b50508035926020909101359150565b60008083601f840112610c1957600080fd5b50813567ffffffffffffffff811115610c3157600080fd5b6020830191508360208260051b85010111156108ff57600080fd5b600080600080600060608688031215610c6457600080fd5b85359450602086013567ffffffffffffffff80821115610c8357600080fd5b610c8f89838a01610c07565b90965094506040880135915080821115610ca857600080fd5b50610cb588828901610c07565b969995985093965092949392505050565b600060208284031215610cd857600080fd5b5035919050565b600080600060408486031215610cf457600080fd5b833567ffffffffffffffff80821115610d0c57600080fd5b9085019060808288031215610d2057600080fd5b90935060208501359080821115610d3657600080fd5b818601915086601f830112610d4a57600080fd5b813581811115610d5957600080fd5b876020828501011115610d6b57600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052601160045260246000fd5b60008219821115610da757610da7610d7e565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610dee57600080fd5b9190910192915050565b6001600160a01b0381168114610abc57600080fd5b600060208284031215610e1f57600080fd5b8135610e2a81610df8565b9392505050565b600060018201610e4357610e43610d7e565b5060010190565b8035610e5581610df8565b919050565b602081528135602082015260006020830135603e19843603018112610e7e57600080fd5b6080604084015283018035610e9281610df8565b6001600160a01b031660a0840152602081013536829003601e19018112610eb857600080fd5b0160208101903567ffffffffffffffff811115610ed457600080fd5b803603821315610ee357600080fd5b604060c08501528060e08501526101008183828701376000818387010152610f0d60408701610e4a565b6001600160a01b03811660608701529250606095909501356080850152601f01601f191690920190920192915050565b600082821015610f4f57610f4f610d7e565b500390565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220a815871e3c81c414a168ada656c20370f3f45ba3a643e6ce1b652648a3bbe99264736f6c634300080f0033" diff --git a/bindings/trivialapp/TrivialApp.go b/bindings/trivialapp/TrivialApp.go index 9672d03..5345aec 100644 --- a/bindings/trivialapp/TrivialApp.go +++ b/bindings/trivialapp/TrivialApp.go @@ -62,7 +62,7 @@ type ChannelParticipant struct { // ChannelState is an auto generated low-level Go binding around an user-defined struct. type ChannelState struct { - ChannelID [][32]byte + ChannelID [32]byte Version uint64 Outcome ChannelAllocation AppData []byte @@ -71,15 +71,15 @@ type ChannelState struct { // ChannelSubAlloc is an auto generated low-level Go binding around an user-defined struct. type ChannelSubAlloc struct { - ID [][32]byte + ID [32]byte Balances []*big.Int IndexMap []uint16 } // TrivialappMetaData contains all meta data concerning the Trivialapp contract. var TrivialappMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"channelID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"ID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"from\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"channelID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"ID\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"to\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"actorIdx\",\"type\":\"uint256\"}],\"name\":\"validTransition\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806318dc6c0014602d575b600080fd5b603e60383660046057565b50505050565b005b600060a08284031215605157600080fd5b50919050565b60008060008060808587031215606c57600080fd5b843567ffffffffffffffff80821115608357600080fd5b9086019060c08289031215609657600080fd5b9094506020860135908082111560ab57600080fd5b60b5888389016040565b9450604087013591508082111560ca57600080fd5b5060d5878288016040565b94979396509394606001359350505056fea26469706673582212205081e797202cb035c07d4df0f6988f47b842ec24f720e8dc1336efef5813300764736f6c634300080f0033", + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"ethAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccAddress\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Participant[]\",\"name\":\"participants\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ledgerChannel\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"virtualChannel\",\"type\":\"bool\"}],\"internalType\":\"structChannel.Params\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"from\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"channelID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"ethHolder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ccHolder\",\"type\":\"bytes\"}],\"internalType\":\"structChannel.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"backends\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint16[]\",\"name\":\"indexMap\",\"type\":\"uint16[]\"}],\"internalType\":\"structChannel.SubAlloc[]\",\"name\":\"locked\",\"type\":\"tuple[]\"}],\"internalType\":\"structChannel.Allocation\",\"name\":\"outcome\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structChannel.State\",\"name\":\"to\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"actorIdx\",\"type\":\"uint256\"}],\"name\":\"validTransition\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f7530b4114602d575b600080fd5b603e60383660046057565b50505050565b005b600060a08284031215605157600080fd5b50919050565b60008060008060808587031215606c57600080fd5b843567ffffffffffffffff80821115608357600080fd5b9086019060c08289031215609657600080fd5b9094506020860135908082111560ab57600080fd5b60b5888389016040565b9450604087013591508082111560ca57600080fd5b5060d5878288016040565b94979396509394606001359350505056fea26469706673582212202c476f6a190b843966fe8a555305f8b86806d95b0f98acb69ff55ebc59aa68cb64736f6c634300080f0033", } // TrivialappABI is the input ABI used to generate the binding from. @@ -249,9 +249,9 @@ func (_Trivialapp *TrivialappTransactorRaw) Transact(opts *bind.TransactOpts, me return _Trivialapp.Contract.contract.Transact(opts, method, params...) } -// ValidTransition is a free data retrieval call binding the contract method 0x18dc6c00. +// ValidTransition is a free data retrieval call binding the contract method 0xf7530b41. // -// Solidity: function validTransition((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) from, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) to, uint256 actorIdx) pure returns() +// Solidity: function validTransition((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) from, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) to, uint256 actorIdx) pure returns() func (_Trivialapp *TrivialappCaller) ValidTransition(opts *bind.CallOpts, params ChannelParams, from ChannelState, to ChannelState, actorIdx *big.Int) error { var out []interface{} err := _Trivialapp.contract.Call(opts, &out, "validTransition", params, from, to, actorIdx) @@ -264,16 +264,16 @@ func (_Trivialapp *TrivialappCaller) ValidTransition(opts *bind.CallOpts, params } -// ValidTransition is a free data retrieval call binding the contract method 0x18dc6c00. +// ValidTransition is a free data retrieval call binding the contract method 0xf7530b41. // -// Solidity: function validTransition((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) from, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) to, uint256 actorIdx) pure returns() +// Solidity: function validTransition((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) from, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) to, uint256 actorIdx) pure returns() func (_Trivialapp *TrivialappSession) ValidTransition(params ChannelParams, from ChannelState, to ChannelState, actorIdx *big.Int) error { return _Trivialapp.Contract.ValidTransition(&_Trivialapp.CallOpts, params, from, to, actorIdx) } -// ValidTransition is a free data retrieval call binding the contract method 0x18dc6c00. +// ValidTransition is a free data retrieval call binding the contract method 0xf7530b41. // -// Solidity: function validTransition((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) from, (bytes32[],uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32[],uint256[],uint16[])[]),bytes,bool) to, uint256 actorIdx) pure returns() +// Solidity: function validTransition((uint256,uint256,(address,bytes)[],address,bool,bool) params, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) from, (bytes32,uint64,((uint256,address,bytes)[],uint256[],uint256[][],(bytes32,uint256[],uint16[])[]),bytes,bool) to, uint256 actorIdx) pure returns() func (_Trivialapp *TrivialappCallerSession) ValidTransition(params ChannelParams, from ChannelState, to ChannelState, actorIdx *big.Int) error { return _Trivialapp.Contract.ValidTransition(&_Trivialapp.CallOpts, params, from, to, actorIdx) } diff --git a/bindings/trivialapp/TrivialAppBinRuntime.go b/bindings/trivialapp/TrivialAppBinRuntime.go index 5ddbf66..929be9e 100644 --- a/bindings/trivialapp/TrivialAppBinRuntime.go +++ b/bindings/trivialapp/TrivialAppBinRuntime.go @@ -1,4 +1,4 @@ package trivialapp // import "github.com/perun-network/perun-eth-backend/bindings/trivialapp" // TrivialAppBinRuntime is the runtime part of the compiled bytecode used for deploying new contracts. -var TrivialAppBinRuntime = "6080604052348015600f57600080fd5b506004361060285760003560e01c806318dc6c0014602d575b600080fd5b603e60383660046057565b50505050565b005b600060a08284031215605157600080fd5b50919050565b60008060008060808587031215606c57600080fd5b843567ffffffffffffffff80821115608357600080fd5b9086019060c08289031215609657600080fd5b9094506020860135908082111560ab57600080fd5b60b5888389016040565b9450604087013591508082111560ca57600080fd5b5060d5878288016040565b94979396509394606001359350505056fea26469706673582212205081e797202cb035c07d4df0f6988f47b842ec24f720e8dc1336efef5813300764736f6c634300080f0033" +var TrivialAppBinRuntime = "6080604052348015600f57600080fd5b506004361060285760003560e01c8063f7530b4114602d575b600080fd5b603e60383660046057565b50505050565b005b600060a08284031215605157600080fd5b50919050565b60008060008060808587031215606c57600080fd5b843567ffffffffffffffff80821115608357600080fd5b9086019060c08289031215609657600080fd5b9094506020860135908082111560ab57600080fd5b60b5888389016040565b9450604087013591508082111560ca57600080fd5b5060d5878288016040565b94979396509394606001359350505056fea26469706673582212202c476f6a190b843966fe8a555305f8b86806d95b0f98acb69ff55ebc59aa68cb64736f6c634300080f0033" diff --git a/channel/adjudicator.go b/channel/adjudicator.go index 9e8d772..fbac46f 100644 --- a/channel/adjudicator.go +++ b/channel/adjudicator.go @@ -189,7 +189,7 @@ func ValidateAdjudicator(ctx context.Context, backend bind.ContractCaller, adjud // toEthSubStates generates a channel tree in depth-first order. func toEthSubStates(state *channel.State, subStates channel.StateMap) (ethSubStates []adjudicator.ChannelState) { for _, subAlloc := range state.Locked { - subState, ok := subStates[channel.IDKey(subAlloc.ID)] + subState, ok := subStates[subAlloc.ID] if !ok { log.Panic("sub-state not found") } diff --git a/channel/adjudicator_internal_test.go b/channel/adjudicator_internal_test.go index 881604c..0b30b66 100644 --- a/channel/adjudicator_internal_test.go +++ b/channel/adjudicator_internal_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,6 +18,8 @@ import ( "math/rand" "testing" + "github.com/perun-network/perun-eth-backend/wallet" + "github.com/perun-network/perun-eth-backend/bindings/adjudicator" "github.com/stretchr/testify/assert" "perun.network/go-perun/channel" @@ -38,13 +40,13 @@ func Test_toEthSubStates(t *testing.T) { { title: "nil map gives nil slice", setup: func() (state *channel.State, subStates channel.StateMap, expected []adjudicator.ChannelState) { - return channeltest.NewRandomState(rng, channeltest.WithBackend(1)), nil, nil + return channeltest.NewRandomState(rng, channeltest.WithBackend(wallet.BackendID)), nil, nil }, }, { title: "fresh map gives nil slice", setup: func() (state *channel.State, subStates channel.StateMap, expected []adjudicator.ChannelState) { - return channeltest.NewRandomState(rng, channeltest.WithBackend(1)), nil, nil + return channeltest.NewRandomState(rng, channeltest.WithBackend(wallet.BackendID)), nil, nil }, }, { @@ -84,7 +86,7 @@ func Test_toEthSubStates(t *testing.T) { func genStates(rng *rand.Rand, n int) (states []*channel.State) { states = make([]*channel.State, n) for i := range states { - states[i] = channeltest.NewRandomState(rng, channeltest.WithBackend(1)) + states[i] = channeltest.NewRandomState(rng, channeltest.WithBackend(wallet.BackendID)) } return } diff --git a/channel/adjudicator_test.go b/channel/adjudicator_test.go index 15e3b8b..b03fa07 100644 --- a/channel/adjudicator_test.go +++ b/channel/adjudicator_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -47,7 +47,7 @@ func testSignState(t *testing.T, accounts []*keystore.Account, state *channel.St func signState(accounts []*keystore.Account, state *channel.State) (channel.Transaction, error) { sigs := make([][]byte, len(accounts)) for i := range accounts { - sig, err := channel.Sign(accounts[i], state, 1) + sig, err := channel.Sign(accounts[i], state, ethwallettest.BackendID) if err != nil { return channel.Transaction{}, errors.WithMessagef(err, "signing with account %d", i) } @@ -68,7 +68,7 @@ func TestSubscribeRegistered(t *testing.T) { rng, channeltest.WithChallengeDuration(uint64(100*time.Second)), channeltest.WithParts(s.Parts), - channeltest.WithBackend(1), + channeltest.WithBackend(ethwallettest.BackendID), channeltest.WithAssets(s.Asset), channeltest.WithIsFinal(false), channeltest.WithLedgerChannel(true), @@ -94,7 +94,7 @@ func TestSubscribeRegistered(t *testing.T) { tx := testSignState(t, s.Accs, state) req := channel.AdjudicatorReq{ Params: params, - Acc: map[wallet.BackendID]wallet.Account{1: s.Accs[0]}, + Acc: map[wallet.BackendID]wallet.Account{ethwallettest.BackendID: s.Accs[0]}, Idx: channel.Index(0), Tx: tx, } diff --git a/channel/asset.go b/channel/asset.go index a49b302..aa55a26 100644 --- a/channel/asset.go +++ b/channel/asset.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -49,12 +49,12 @@ func MakeChainID(id *big.Int) ChainID { return ChainID{id} } -// MakeAssetID makes a AssetID for the given id. -func MakeAssetID(id *big.Int) multi.AssetID { +// MakeLedgerBackendID makes a AssetID for the given id. +func MakeLedgerBackendID(id *big.Int) multi.LedgerBackendID { if id.Sign() < 0 { panic("must not be smaller than zero") } - return AssetID{backendID: 1, ledgerID: MakeChainID(id)} + return AssetID{backendID: wallet.BackendID, ledgerID: MakeChainID(id)} } // UnmarshalBinary unmarshals the chainID from its binary representation. @@ -66,7 +66,7 @@ func (id *ChainID) UnmarshalBinary(data []byte) error { // MarshalBinary marshals the chainID into its binary representation. func (id ChainID) MarshalBinary() (data []byte, err error) { if id.Sign() == -1 { - return nil, errors.New("cannot marshal negative AssetID") + return nil, errors.New("cannot marshal negative LedgerBackendID") } return id.Bytes(), nil } @@ -108,8 +108,8 @@ func (id AssetID) LedgerID() multi.LedgerID { return &id.ledgerID } -// AssetID returns the asset ID of the asset. -func (a Asset) AssetID() multi.AssetID { +// LedgerBackendID returns the asset ID of the asset. +func (a Asset) LedgerBackendID() multi.LedgerBackendID { return a.assetID } @@ -141,12 +141,12 @@ func (a *Asset) UnmarshalBinary(data []byte) error { // LedgerID returns the ledger ID the asset lives on. func (a Asset) LedgerID() multi.LedgerID { - return a.AssetID().LedgerID() + return a.LedgerBackendID().LedgerID() } // NewAsset creates a new asset from an chainID and the AssetHolder address. func NewAsset(chainID *big.Int, assetHolder common.Address) *Asset { - id := MakeAssetID(chainID).(AssetID) //nolint: forcetypeassert // AssetID implements multi.AssetID + id := MakeLedgerBackendID(chainID).(AssetID) //nolint: forcetypeassert // LedgerBackendID implements multi.LedgerBackendID return &Asset{assetID: id, AssetHolder: *wallet.AsWalletAddr(assetHolder)} } diff --git a/channel/asset_test.go b/channel/asset_test.go index 76b4f39..6b4181e 100644 --- a/channel/asset_test.go +++ b/channel/asset_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/channel/backend.go b/channel/backend.go index 31a11da..cae5f53 100644 --- a/channel/backend.go +++ b/channel/backend.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -177,17 +177,11 @@ func ToEthParams(p *channel.Params) adjudicator.ChannelParams { // ToEthState converts a channel.State to a ChannelState struct. func ToEthState(s *channel.State) adjudicator.ChannelState { backends := make([]*big.Int, len(s.Allocation.Assets)) - channelIDs := make([]channel.ID, len(s.Allocation.Assets)) for i := range s.Allocation.Assets { // we assume that for each asset there is an element in backends corresponding to the backendID the asset belongs to. backends[i] = big.NewInt(int64(s.Allocation.Backends[i])) - channelIDs[i] = s.ID[s.Allocation.Backends[i]] } locked := make([]adjudicator.ChannelSubAlloc, len(s.Locked)) for i, sub := range s.Locked { - subIDs := make([]channel.ID, len(backends)) - for j := range subIDs { - subIDs[j] = sub.ID[s.Allocation.Backends[j]] - } // Create index map. indexMap := make([]uint16, s.NumParts()) if len(sub.IndexMap) == 0 { @@ -200,7 +194,7 @@ func ToEthState(s *channel.State) adjudicator.ChannelState { } } - locked[i] = adjudicator.ChannelSubAlloc{ID: subIDs, Balances: sub.Bals, IndexMap: indexMap} + locked[i] = adjudicator.ChannelSubAlloc{ID: sub.ID, Balances: sub.Bals, IndexMap: indexMap} } outcome := adjudicator.ChannelAllocation{ Assets: assetsToEthAssets(s.Allocation.Assets, s.Allocation.Backends), @@ -217,7 +211,7 @@ func ToEthState(s *channel.State) adjudicator.ChannelState { log.Panicf("error encoding app data: %v", err) } return adjudicator.ChannelState{ - ChannelID: channelIDs, + ChannelID: s.ID, Version: s.Version, Outcome: outcome, AppData: appData, @@ -264,20 +258,14 @@ func pwToCommonAddresses(addr []map[wallet.BackendID]wallet.Address) []adjudicat // FromEthState converts a ChannelState to a channel.State struct. func FromEthState(app channel.App, s *adjudicator.ChannelState) channel.State { - channelIDs := make(map[wallet.BackendID]channel.ID) backends := make([]wallet.BackendID, len(s.Outcome.Backends)) for i, b := range s.Outcome.Backends { backends[i] = wallet.BackendID(b.Int64()) - channelIDs[backends[i]] = s.ChannelID[i] } locked := make([]channel.SubAlloc, len(s.Outcome.Locked)) for i, sub := range s.Outcome.Locked { - subIDs := make(map[wallet.BackendID]channel.ID) - for j := range s.Outcome.Backends { - subIDs[backends[j]] = sub.ID[j] - } indexMap := makeIndexMap(sub.IndexMap) - locked[i] = *channel.NewSubAlloc(subIDs, sub.Balances, indexMap) + locked[i] = *channel.NewSubAlloc(sub.ID, sub.Balances, indexMap) } alloc := channel.Allocation{ Assets: fromEthAssets(s.Outcome.Assets, backends), @@ -296,7 +284,7 @@ func FromEthState(app channel.App, s *adjudicator.ChannelState) channel.State { } return channel.State{ - ID: channelIDs, + ID: s.ChannelID, Version: s.Version, Allocation: alloc, App: app, diff --git a/channel/backend_test.go b/channel/backend_test.go index 5f8ae21..eac20a9 100644 --- a/channel/backend_test.go +++ b/channel/backend_test.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,6 +20,8 @@ import ( "testing" "time" + "github.com/perun-network/perun-eth-backend/wallet" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -42,7 +44,7 @@ func TestState_ToAndFromEth(t *testing.T) { rng := pkgtest.Prng(t) for i := 0; i < 100; i++ { - state := test.NewRandomState(rng, test.WithBackend(1)) + state := test.NewRandomState(rng, test.WithBackend(wallet.BackendID)) testToAndFromEthState(t, state) } }) @@ -51,7 +53,7 @@ func TestState_ToAndFromEth(t *testing.T) { rng := pkgtest.Prng(t) for i := 0; i < 100; i++ { - state := test.NewRandomState(rng, test.WithBackend(1), test.WithNumLocked(int(rng.Int31n(10)))) + state := test.NewRandomState(rng, test.WithBackend(wallet.BackendID), test.WithNumLocked(int(rng.Int31n(10)))) testToAndFromEthState(t, state) } }) @@ -88,7 +90,7 @@ func TestAdjudicator_PureFunctions(t *testing.T) { func testCalcID(t *testing.T, rng *rand.Rand, contr *adjudicator.Adjudicator, opts *bind.CallOpts) { t.Helper() for i := 0; i < 100; i++ { - opt := test.WithBackend(1) + opt := test.WithBackend(wallet.BackendID) params := test.NewRandomParams(rng, opt) ethParams := channel.ToEthParams(params) ethID, err := contr.ChannelID(opts, ethParams) @@ -108,7 +110,7 @@ func testCalcID(t *testing.T, rng *rand.Rand, contr *adjudicator.Adjudicator, op func testHashState(t *testing.T, rng *rand.Rand, contr *adjudicator.Adjudicator, opts *bind.CallOpts) { t.Helper() for i := 0; i < 100; i++ { - state := test.NewRandomState(rng, test.WithBackend(1)) + state := test.NewRandomState(rng, test.WithBackend(wallet.BackendID)) ethState := channel.ToEthState(state) ethHash, err := contr.HashState(opts, ethState) require.NoError(t, err) @@ -130,11 +132,11 @@ func TestGenericTests(t *testing.T) { } func newChannelSetup(rng *rand.Rand) *test.Setup { - params, state := test.NewRandomParamsAndState(rng, test.WithNumLocked(int(rng.Int31n(4)+1)), test.WithBackend(1)) - params2, state2 := test.NewRandomParamsAndState(rng, test.WithIsFinal(!state.IsFinal), test.WithNumLocked(int(rng.Int31n(4)+1)), test.WithBackend(1)) + params, state := test.NewRandomParamsAndState(rng, test.WithNumLocked(int(rng.Int31n(4)+1)), test.WithBackend(wallet.BackendID)) + params2, state2 := test.NewRandomParamsAndState(rng, test.WithIsFinal(!state.IsFinal), test.WithNumLocked(int(rng.Int31n(4)+1)), test.WithBackend(wallet.BackendID)) createAddr := func() map[perunwallet.BackendID]perunwallet.Address { - return map[perunwallet.BackendID]perunwallet.Address{1: wallettest.NewRandomAddress(rng, 1)} + return map[perunwallet.BackendID]perunwallet.Address{wallet.BackendID: wallettest.NewRandomAddress(rng, wallet.BackendID)} } return &test.Setup{ @@ -142,7 +144,7 @@ func newChannelSetup(rng *rand.Rand) *test.Setup { Params2: params2, State: state, State2: state2, - Account: wallettest.NewRandomAccount(rng, 1), + Account: wallettest.NewRandomAccount(rng, wallet.BackendID), RandomAddress: createAddr, } } diff --git a/channel/conclude.go b/channel/conclude.go index 78d57d4..23dd514 100644 --- a/channel/conclude.go +++ b/channel/conclude.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,8 +18,6 @@ import ( "context" "fmt" - "perun.network/go-perun/wallet" - "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/core/types" "github.com/pkg/errors" @@ -49,11 +47,7 @@ func MakeStateMap() StateMap { // Add adds the given states to the state map. func (m StateMap) Add(states ...*channel.State) { for _, s := range states { - for key, id := range s.ID { - if key == 1 { - m[id] = s - } - } + m[s.ID] = s } } @@ -94,7 +88,7 @@ func (a *Adjudicator) ensureConcluded(ctx context.Context, req channel.Adjudicat } // Wait for concluded event. - sub, events, subErr, err := a.createEventSub(ctx, req.Tx.ID[1], false) + sub, events, subErr, err := a.createEventSub(ctx, req.Tx.ID, false) if err != nil { return errors.WithMessage(err, "subscribing") } @@ -188,7 +182,7 @@ func (a *Adjudicator) waitConcludedSecondary(ctx context.Context, req channel.Ad // `secondaryWaitBlocks + TxFinalityDepth` many blocks. if req.Tx.IsFinal && req.Secondary { // Create subscription. - sub, events, subErr, err := a.createEventSub(ctx, req.Tx.ID[1], false) + sub, events, subErr, err := a.createEventSub(ctx, req.Tx.ID, false) if err != nil { return false, errors.WithMessage(err, "subscribing") } @@ -203,7 +197,7 @@ func (a *Adjudicator) waitConcludedSecondary(ctx context.Context, req channel.Ad func (a *Adjudicator) conclude(ctx context.Context, req channel.AdjudicatorReq, subStates channel.StateMap) error { // If the on-chain state resulted from forced execution, we do not have a fully-signed state and cannot call concludeFinal. - forceExecuted, err := a.isForceExecuted(ctx, req.Params.ID()[1]) + forceExecuted, err := a.isForceExecuted(ctx, req.Params.ID()) if err != nil { return errors.WithMessage(err, "checking force execution") } @@ -221,8 +215,8 @@ func (a *Adjudicator) conclude(ctx context.Context, req channel.AdjudicatorReq, } // isConcluded returns whether a channel is already concluded. -func (a *Adjudicator) isConcluded(ctx context.Context, ch map[wallet.BackendID]channel.ID) (bool, error) { - sub, events, subErr, err := a.createEventSub(ctx, ch[1], true) +func (a *Adjudicator) isConcluded(ctx context.Context, ch channel.ID) (bool, error) { + sub, events, subErr, err := a.createEventSub(ctx, ch, true) if err != nil { return false, errors.WithMessage(err, "subscribing") } @@ -283,7 +277,7 @@ func (a *Adjudicator) waitConcludable(ctx context.Context, req channel.Adjudicat return nil } - sub, events, subErr, err := a.createEventSub(ctx, req.Tx.ID[1], true) + sub, events, subErr, err := a.createEventSub(ctx, req.Tx.ID, true) if err != nil { return errors.WithMessage(err, "subscribing") } diff --git a/channel/conclude_test.go b/channel/conclude_test.go index afed400..20c754e 100644 --- a/channel/conclude_test.go +++ b/channel/conclude_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -19,6 +19,8 @@ import ( "math/rand" "testing" + test2 "github.com/perun-network/perun-eth-backend/wallet/test" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -50,7 +52,7 @@ func testConcludeFinal(t *testing.T, numParts int) { rng, channeltest.WithParts(s.Parts), channeltest.WithAssets(s.Asset), - channeltest.WithBackend(1), + channeltest.WithBackend(test2.BackendID), channeltest.WithIsFinal(true), channeltest.WithLedgerChannel(true), ) @@ -78,7 +80,7 @@ func testConcludeFinal(t *testing.T, numParts int) { go ct.StageN("register", numParts, func(t pkgtest.ConcT) { req := channel.AdjudicatorReq{ Params: params, - Acc: map[wallet.BackendID]wallet.Account{1: s.Accs[i]}, + Acc: map[wallet.BackendID]wallet.Account{test2.BackendID: s.Accs[i]}, Idx: channel.Index(i), Tx: tx, Secondary: (i != initiator), @@ -175,7 +177,7 @@ func TestAdjudicator_ConcludeWithSubChannels(t *testing.T) { func toSubChannelsRecursive(ch paramsAndState, m channelMap) (states []paramsAndState) { for _, x := range ch.state.Locked { - ch, ok := m[x.ID[1]] + ch, ok := m[x.ID] if !ok { panic("sub-state not found") } @@ -190,7 +192,7 @@ type channelMap map[channel.ID]paramsAndState func (m channelMap) Add(states ...paramsAndState) { for _, s := range states { - m[s.state.ID[1]] = s + m[s.state.ID] = s } } @@ -204,7 +206,7 @@ func makeRandomChannel(rng *rand.Rand, participants []map[wallet.BackendID]walle rng, channeltest.WithParts(participants), channeltest.WithAssets(asset), - channeltest.WithBackend(1), + channeltest.WithBackend(test2.BackendID), channeltest.WithIsFinal(false), channeltest.WithNumLocked(0), channeltest.WithoutApp(), @@ -257,7 +259,7 @@ func register(ctx context.Context, adj *test.SimAdjudicator, accounts []*keystor req := channel.AdjudicatorReq{ Params: ch.params, - Acc: map[wallet.BackendID]wallet.Account{1: accounts[0]}, + Acc: map[wallet.BackendID]wallet.Account{test2.BackendID: accounts[0]}, Idx: 0, Tx: tx, Secondary: false, @@ -280,7 +282,7 @@ func withdraw(ctx context.Context, adj *test.SimAdjudicator, accounts []*keystor for i, a := range accounts { req := channel.AdjudicatorReq{ Params: c.params, - Acc: map[wallet.BackendID]wallet.Account{1: a}, + Acc: map[wallet.BackendID]wallet.Account{test2.BackendID: a}, Idx: channel.Index(i), Tx: tx, Secondary: i != 0, diff --git a/channel/contractbackend.go b/channel/contractbackend.go index 463f26e..4c76996 100644 --- a/channel/contractbackend.go +++ b/channel/contractbackend.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/channel/contractbackend_test.go b/channel/contractbackend_test.go index 36e7933..6ebc887 100644 --- a/channel/contractbackend_test.go +++ b/channel/contractbackend_test.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,6 +20,8 @@ import ( "testing" "time" + test2 "github.com/perun-network/perun-eth-backend/wallet/test" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" @@ -42,35 +44,35 @@ func Test_calcFundingIDs(t *testing.T) { tests := []struct { name string participants []map[wallet.BackendID]wallet.Address - channelID map[wallet.BackendID][32]byte + channelID [32]byte want [][32]byte }{ - {"Test nil array, empty channelID", nil, map[wallet.BackendID][32]byte{}, make([][32]byte, 0)}, - {"Test nil array, non-empty channelID", nil, map[wallet.BackendID][32]byte{1: {1}}, make([][32]byte, 0)}, - {"Test empty array, non-empty channelID", []map[wallet.BackendID]wallet.Address{}, map[wallet.BackendID][32]byte{1: {1}}, make([][32]byte, 0)}, + {"Test nil array, empty channelID", nil, [32]byte{}, make([][32]byte, 0)}, + {"Test nil array, non-empty channelID", nil, [32]byte{1}, make([][32]byte, 0)}, + {"Test empty array, non-empty channelID", []map[wallet.BackendID]wallet.Address{}, [32]byte{1}, make([][32]byte, 0)}, // Tests based on actual data from contracts. { name: "Test non-empty array, empty channelID", - participants: []map[wallet.BackendID]wallet.Address{{1: ðwallet.Address{}}}, + participants: []map[wallet.BackendID]wallet.Address{{test2.BackendID: ðwallet.Address{}}}, want: [][32]byte{{173, 50, 40, 182, 118, 247, 211, 205, 66, 132, 165, 68, 63, 23, 241, 150, 43, 54, 228, 145, 179, 10, 64, 178, 64, 88, 73, 229, 151, 186, 95, 181}}, }, { "Test non-empty array, non-empty channelID", - []map[wallet.BackendID]wallet.Address{{1: ðwallet.Address{}}}, - map[wallet.BackendID][32]byte{1: {1}}, + []map[wallet.BackendID]wallet.Address{{test2.BackendID: ðwallet.Address{}}}, + [32]byte{1}, [][32]byte{{130, 172, 39, 157, 178, 106, 32, 109, 155, 165, 169, 76, 7, 255, 148, 10, 234, 75, 59, 253, 232, 130, 14, 201, 95, 78, 250, 10, 207, 208, 213, 188}}, }, { "Test non-empty array, non-empty channelID", - []map[wallet.BackendID]wallet.Address{{1: fromEthAddr(common.BytesToAddress([]byte{}))}}, - map[wallet.BackendID][32]byte{1: {1}}, + []map[wallet.BackendID]wallet.Address{{test2.BackendID: fromEthAddr(common.BytesToAddress([]byte{}))}}, + [32]byte{1}, [][32]byte{{130, 172, 39, 157, 178, 106, 32, 109, 155, 165, 169, 76, 7, 255, 148, 10, 234, 75, 59, 253, 232, 130, 14, 201, 95, 78, 250, 10, 207, 208, 213, 188}}, }, } for _, _tt := range tests { tt := _tt t.Run(tt.name, func(t *testing.T) { - got := ethchannel.FundingIDs(tt.channelID[1], tt.participants...) + got := ethchannel.FundingIDs(tt.channelID, tt.participants...) assert.Equal(t, got, tt.want, "FundingIDs not as expected") }) } diff --git a/channel/erc20_depositor.go b/channel/erc20_depositor.go index 0a0d7f0..2e72e7e 100644 --- a/channel/erc20_depositor.go +++ b/channel/erc20_depositor.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/channel/eth_depositor.go b/channel/eth_depositor.go index cbb11ca..94702ce 100644 --- a/channel/eth_depositor.go +++ b/channel/eth_depositor.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/channel/funder.go b/channel/funder.go index 9869356..9bae68e 100644 --- a/channel/funder.go +++ b/channel/funder.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -168,7 +168,7 @@ func (f *Funder) Fund(ctx context.Context, request channel.FundingReq) error { } // Fund each asset, saving the TX in `txs` and the errors in `errg`. - txs, errg := f.fundAssets(ctx, ethAssets, channelID[1], request) + txs, errg := f.fundAssets(ctx, ethAssets, channelID, request) // Wait for the TXs to be mined. for a, asset := range ethAssets { diff --git a/channel/funder_test.go b/channel/funder_test.go index ef92362..cb6444a 100644 --- a/channel/funder_test.go +++ b/channel/funder_test.go @@ -80,7 +80,7 @@ func newFunderSetup(rng *rand.Rand) ( ) { n := 2 simBackend := test.NewSimulatedBackend() - ksWallet := wallettest.RandomWallet(1).(*keystore.Wallet) + ksWallet := wallettest.RandomWallet(ethwallet.BackendID).(*keystore.Wallet) cb := ethchannel.NewContractBackend( simBackend, ethchannel.MakeChainID(simBackend.ChainID()), @@ -94,12 +94,12 @@ func newFunderSetup(rng *rand.Rand) ( for i := 0; i < n; i++ { assets[i] = *test.NewRandomAsset(rng) - accs[i] = accounts.Account{Address: ethwallet.AsEthAddr(wallettest.NewRandomAddress(rng, 1))} + accs[i] = accounts.Account{Address: ethwallet.AsEthAddr(wallettest.NewRandomAddress(rng, ethwallet.BackendID))} } // Use an ETH depositor with random addresses at index 0. depositors[0] = ethchannel.NewETHDepositor(txETHGasLimit) // Use an ERC20 depositor with random addresses at index 1. - token := wallettest.NewRandomAddress(rng, 1) + token := wallettest.NewRandomAddress(rng, ethwallet.BackendID) depositors[1] = ethchannel.NewERC20Depositor(ethwallet.AsEthAddr(token), txERC20GasLimit) return funder, assets, depositors, accs } @@ -444,7 +444,7 @@ func newNFunders( // Start the auto-mining of blocks. simBackend.StartMining(blockInterval) t.Cleanup(simBackend.StopMining) - ksWallet := wallettest.RandomWallet(1).(*keystore.Wallet) + ksWallet := wallettest.RandomWallet(ethwallet.BackendID).(*keystore.Wallet) deployAccount := &ksWallet.NewRandomAccount(rng).(*keystore.Account).Account simBackend.FundAddress(ctx, deployAccount.Address) @@ -475,7 +475,7 @@ func newNFunders( funders = make([]*ethchannel.Funder, n) for i := range parts { acc := ksWallet.NewRandomAccount(rng).(*keystore.Account).Account - parts[i] = map[wallet.BackendID]wallet.Address{1: ethwallet.AsWalletAddr(acc.Address)} + parts[i] = map[wallet.BackendID]wallet.Address{ethwallet.BackendID: ethwallet.AsWalletAddr(acc.Address)} simBackend.FundAddress(ctx, ethwallet.AsEthAddr(parts[i][1])) err = fundERC20(ctx, cb, *tokenAcc, ethwallet.AsEthAddr(parts[i][1]), token, *asset2) @@ -493,12 +493,12 @@ func newNFunders( rng, channeltest.WithParts(parts), channeltest.WithChallengeDuration(uint64(n)*40000), - channeltest.WithBackend(1), + channeltest.WithBackend(ethwallet.BackendID), ) allocation = channeltest.NewRandomAllocation( rng, channeltest.WithNumParts(n), - channeltest.WithBackend(1), + channeltest.WithBackend(ethwallet.BackendID), channeltest.WithAssets( ethchannel.NewAsset(chainID, assetAddr1), ethchannel.NewAsset(chainID, assetAddr2), @@ -544,7 +544,7 @@ func compareOnChainAlloc(ctx context.Context, params *channel.Params, balances c } func onChainAllocation(ctx context.Context, cb *ethchannel.ContractBackend, params *channel.Params, _assets []channel.Asset) (channel.Balances, error) { - partIDs := ethchannel.FundingIDs(params.ID()[1], params.Parts...) + partIDs := ethchannel.FundingIDs(params.ID(), params.Parts...) alloc := make(channel.Balances, len(_assets)) for k, asset := range _assets { diff --git a/channel/init.go b/channel/init.go index 9830d59..9725ab2 100644 --- a/channel/init.go +++ b/channel/init.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,9 +15,10 @@ package channel import ( + "github.com/perun-network/perun-eth-backend/wallet" "perun.network/go-perun/channel" ) func init() { - channel.SetBackend(new(Backend), 1) + channel.SetBackend(new(Backend), wallet.BackendID) } diff --git a/channel/init_test.go b/channel/init_test.go index 0ac2460..f6e6371 100644 --- a/channel/init_test.go +++ b/channel/init_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/channel/register.go b/channel/register.go index a0cd632..72920af 100644 --- a/channel/register.go +++ b/channel/register.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/channel/register_test.go b/channel/register_test.go index c3372e2..e46c9b2 100644 --- a/channel/register_test.go +++ b/channel/register_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,6 +21,8 @@ import ( "testing" "time" + test2 "github.com/perun-network/perun-eth-backend/wallet/test" + "perun.network/go-perun/wallet" "github.com/stretchr/testify/assert" @@ -56,7 +58,7 @@ func registerMultiple(t *testing.T, numParts int, parallel bool) { params, state := channeltest.NewRandomParamsAndState( rng, channeltest.WithChallengeDuration(uint64(100*time.Second)), - channeltest.WithBackend(1), + channeltest.WithBackend(test2.BackendID), channeltest.WithParts(s.Parts), channeltest.WithAssets(s.Asset), channeltest.WithIsFinal(false), @@ -153,7 +155,7 @@ func TestRegister_FinalState(t *testing.T) { params, state := channeltest.NewRandomParamsAndState( rng, channeltest.WithChallengeDuration(uint64(100*time.Second)), - channeltest.WithBackend(1), + channeltest.WithBackend(test2.BackendID), channeltest.WithParts(s.Parts), channeltest.WithAssets(s.Asset), channeltest.WithIsFinal(true), @@ -177,7 +179,7 @@ func TestRegister_FinalState(t *testing.T) { tx := testSignState(t, s.Accs, state) req := channel.AdjudicatorReq{ Params: params, - Acc: map[wallet.BackendID]wallet.Account{1: s.Accs[0]}, + Acc: map[wallet.BackendID]wallet.Account{test2.BackendID: s.Accs[0]}, Idx: channel.Index(0), Tx: tx, } @@ -196,7 +198,7 @@ func TestRegister_CancelledContext(t *testing.T) { params, state := channeltest.NewRandomParamsAndState( rng, channeltest.WithChallengeDuration(uint64(100*time.Second)), - channeltest.WithBackend(1), + channeltest.WithBackend(test2.BackendID), channeltest.WithParts(s.Parts), channeltest.WithAssets(s.Asset), channeltest.WithIsFinal(false), @@ -221,7 +223,7 @@ func TestRegister_CancelledContext(t *testing.T) { tx := testSignState(t, s.Accs, state) req := channel.AdjudicatorReq{ Params: params, - Acc: map[wallet.BackendID]wallet.Account{1: s.Accs[0]}, + Acc: map[wallet.BackendID]wallet.Account{test2.BackendID: s.Accs[0]}, Idx: channel.Index(0), Tx: tx, } diff --git a/channel/reorg_test.go b/channel/reorg_test.go index 2cb84db..e5f5ea5 100644 --- a/channel/reorg_test.go +++ b/channel/reorg_test.go @@ -1,4 +1,4 @@ -// Copyright 2021 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/channel/subscription.go b/channel/subscription.go index 3b210fe..480624d 100644 --- a/channel/subscription.go +++ b/channel/subscription.go @@ -19,8 +19,6 @@ import ( "log" "math/big" - perunwallet "perun.network/go-perun/wallet" - "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" @@ -35,14 +33,14 @@ import ( ) // Subscribe returns a new AdjudicatorSubscription to adjudicator events. -func (a *Adjudicator) Subscribe(ctx context.Context, chID map[perunwallet.BackendID]channel.ID) (channel.AdjudicatorSubscription, error) { +func (a *Adjudicator) Subscribe(ctx context.Context, chID channel.ID) (channel.AdjudicatorSubscription, error) { subErr := make(chan error, 1) events := make(chan *subscription.Event, adjEventBuffSize) eFact := func() *subscription.Event { return &subscription.Event{ Name: bindings.Events.AdjChannelUpdate, Data: new(adjudicator.AdjudicatorChannelUpdate), - Filter: [][]interface{}{{chID[1]}}, + Filter: [][]interface{}{{chID}}, } } sub, err := subscription.Subscribe(ctx, a.ContractBackend, a.bound, eFact, startBlockOffset, a.txFinalityDepth) @@ -253,18 +251,11 @@ type registerCallData struct { func (args *registerCallData) signedState(id channel.ID) (*adjudicator.AdjudicatorSignedState, bool) { ch := &args.Channel - var idx int - // check which channelID we want to compare - for i, b := range ch.State.Outcome.Backends { - if b.Cmp(big.NewInt(1)) == 0 { - idx = i - } - } - if ch.State.ChannelID[idx] == id { + if ch.State.ChannelID == id { return ch, true } for _, ch := range args.SubChannels { - if ch.State.ChannelID[idx] == id { + if ch.State.ChannelID == id { return &ch, true } } diff --git a/channel/test/adjudicator.go b/channel/test/adjudicator.go index 7921a48..b3ea431 100644 --- a/channel/test/adjudicator.go +++ b/channel/test/adjudicator.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,8 +20,6 @@ import ( "log" "time" - "perun.network/go-perun/wallet" - "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/common" ethchannel "github.com/perun-network/perun-eth-backend/channel" @@ -57,7 +55,7 @@ func NewSimAdjudicator(backend ethchannel.ContractBackend, contract common.Addre // Subscribe returns a RegisteredEvent subscription on the simulated // blockchain backend. -func (a *SimAdjudicator) Subscribe(ctx context.Context, chID map[wallet.BackendID]channel.ID) (channel.AdjudicatorSubscription, error) { +func (a *SimAdjudicator) Subscribe(ctx context.Context, chID channel.ID) (channel.AdjudicatorSubscription, error) { sub, err := a.Adjudicator.Subscribe(ctx, chID) if err != nil { return nil, err diff --git a/channel/test/init.go b/channel/test/init.go index 92d54b0..9b9a988 100644 --- a/channel/test/init.go +++ b/channel/test/init.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/channel/test/randomizer.go b/channel/test/randomizer.go index 923d934..d7ad0f7 100644 --- a/channel/test/randomizer.go +++ b/channel/test/randomizer.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -38,9 +38,9 @@ func NewRandomAsset(rng *rand.Rand) *ethchannel.Asset { return ethchannel.NewAsset(chainID.ChainID(), common.Address(asset)) } -// NewRandomChainID returns a new random AssetID. +// NewRandomChainID returns a new random LedgerBackendID. func NewRandomChainID(rng *rand.Rand) ethchannel.AssetID { r := rng.Uint64() id := new(big.Int).SetUint64(r) - return ethchannel.MakeAssetID(id).(ethchannel.AssetID) + return ethchannel.MakeLedgerBackendID(id).(ethchannel.AssetID) } diff --git a/channel/test/setup.go b/channel/test/setup.go index 61d198c..34d0cd9 100644 --- a/channel/test/setup.go +++ b/channel/test/setup.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -64,7 +64,7 @@ type ( func NewSimSetup(t *testing.T, rng *rand.Rand, txFinalityDepth uint64, blockInterval time.Duration, opts ...SimBackendOpt) *SimSetup { t.Helper() simBackend := NewSimulatedBackend(opts...) - ksWallet := wallettest.RandomWallet(1).(*keystore.Wallet) + ksWallet := wallettest.RandomWallet(ethwallet.BackendID).(*keystore.Wallet) txAccount := ksWallet.NewRandomAccount(rng).(*keystore.Account) ctx, cancel := context.WithTimeout(context.Background(), defaultSetupTimeout) defer cancel() @@ -115,12 +115,12 @@ func NewSetup(t *testing.T, rng *rand.Rand, n int, blockInterval time.Duration, require.NoError(t, err) s.Asset = ethchannel.NewAsset(s.SimBackend.ChainID(), assetHolder) - ksWallet := wallettest.RandomWallet(1).(*keystore.Wallet) + ksWallet := wallettest.RandomWallet(ethwallet.BackendID).(*keystore.Wallet) for i := 0; i < n; i++ { s.Accs[i] = ksWallet.NewRandomAccount(rng).(*keystore.Account) - s.Parts[i] = map[wallet.BackendID]wallet.Address{1: s.Accs[i].Address()} + s.Parts[i] = map[wallet.BackendID]wallet.Address{ethwallet.BackendID: s.Accs[i].Address()} s.SimBackend.FundAddress(ctx, s.Accs[i].Account.Address) - s.Recvs[i] = map[wallet.BackendID]*ethwallet.Address{1: ksWallet.NewRandomAccount(rng).Address().(*ethwallet.Address)} + s.Recvs[i] = map[wallet.BackendID]*ethwallet.Address{ethwallet.BackendID: ksWallet.NewRandomAccount(rng).Address().(*ethwallet.Address)} cb := ethchannel.NewContractBackend( s.SimBackend, ethchannel.MakeChainID(s.SimBackend.ChainID()), diff --git a/channel/test/tokensetup.go b/channel/test/tokensetup.go index aa9d7ca..51cd46e 100644 --- a/channel/test/tokensetup.go +++ b/channel/test/tokensetup.go @@ -1,4 +1,4 @@ -// Copyright 2021 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/channel/withdraw.go b/channel/withdraw.go index 65c4c7a..9b331a3 100644 --- a/channel/withdraw.go +++ b/channel/withdraw.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -67,7 +67,7 @@ func (a *Adjudicator) ensureWithdrawn(ctx context.Context, req channel.Adjudicat g.Go(func() error { // Create subscription contract := bindAssetHolder(a.ContractBackend, asset, index) - fundingID := FundingIDs(req.Params.ID()[1], req.Params.Parts[req.Idx])[0] + fundingID := FundingIDs(req.Params.ID(), req.Params.Parts[req.Idx])[0] events := make(chan *subscription.Event, adjEventBuffSize) subErr := make(chan error, 1) sub, err := subscription.Subscribe(ctx, a.ContractBackend, contract.contract, withdrawnEventType(fundingID), startBlockOffset, a.txFinalityDepth) @@ -165,14 +165,14 @@ func (a *Adjudicator) callAssetWithdraw(ctx context.Context, request channel.Adj } func (a *Adjudicator) newWithdrawalAuth(request channel.AdjudicatorReq, asset assetHolder) (assetholder.AssetHolderWithdrawalAuth, []byte, error) { - fid := FundingID(request.Tx.ID[1], request.Params.Parts[request.Idx][1]) + fid := FundingID(request.Tx.ID, request.Params.Parts[request.Idx][1]) bal, err := asset.Assetholder.Holdings(nil, fid) if err != nil { return assetholder.AssetHolderWithdrawalAuth{}, nil, fmt.Errorf("getting balance: %w", err) } auth := assetholder.AssetHolderWithdrawalAuth{ - ChannelID: request.Params.ID()[1], + ChannelID: request.Params.ID(), Participant: wallet.AsChannelParticipant(wallet.AddressMapfromAccountMap(request.Acc)), Receiver: a.Receiver, Amount: bal, diff --git a/channel/withdraw_test.go b/channel/withdraw_test.go index dd25cea..cb9bb5d 100644 --- a/channel/withdraw_test.go +++ b/channel/withdraw_test.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -58,7 +58,7 @@ func withdrawMultipleConcurrentFinal(t *testing.T, numParts int, parallel bool) rng, channeltest.WithParts(s.Parts), channeltest.WithAssets(s.Asset), - channeltest.WithBackend(1), + channeltest.WithBackend(ethwallet.BackendID), channeltest.WithIsFinal(false), channeltest.WithLedgerChannel(true), ) @@ -96,7 +96,7 @@ func withdrawMultipleConcurrentFinal(t *testing.T, numParts int, parallel bool) time.Sleep(sleepDuration) req := channel.AdjudicatorReq{ Params: params, - Acc: map[wallet.BackendID]wallet.Account{1: s.Accs[i]}, + Acc: map[wallet.BackendID]wallet.Account{ethwallet.BackendID: s.Accs[i]}, Idx: channel.Index(i), Tx: tx, } @@ -110,7 +110,7 @@ func withdrawMultipleConcurrentFinal(t *testing.T, numParts int, parallel bool) for i := 0; i < numParts; i++ { req := channel.AdjudicatorReq{ Params: params, - Acc: map[wallet.BackendID]wallet.Account{1: s.Accs[i]}, + Acc: map[wallet.BackendID]wallet.Account{ethwallet.BackendID: s.Accs[i]}, Idx: channel.Index(i), Tx: tx, } @@ -136,7 +136,7 @@ func testWithdrawZeroBalance(t *testing.T, n int) { // create valid state and params params, state := channeltest.NewRandomParamsAndState( rng, - channeltest.WithBackend(1), + channeltest.WithBackend(ethwallet.BackendID), channeltest.WithParts(s.Parts), channeltest.WithAssets(s.Asset), channeltest.WithIsFinal(true), @@ -166,7 +166,7 @@ func testWithdrawZeroBalance(t *testing.T, n int) { // register req := channel.AdjudicatorReq{ Params: params, - Acc: map[wallet.BackendID]wallet.Account{1: s.Accs[0]}, + Acc: map[wallet.BackendID]wallet.Account{ethwallet.BackendID: s.Accs[0]}, Tx: testSignState(t, s.Accs, state), Idx: 0, } @@ -176,7 +176,7 @@ func testWithdrawZeroBalance(t *testing.T, n int) { // withdraw for i, _adj := range s.Adjs { adj := _adj - req.Acc = map[wallet.BackendID]wallet.Account{1: s.Accs[i]} + req.Acc = map[wallet.BackendID]wallet.Account{ethwallet.BackendID: s.Accs[i]} req.Idx = channel.Index(i) // check that the nonce stays the same for zero balance withdrawals diff, err := test.NonceDiff(s.Accs[i].Address(), adj, func() error { @@ -199,7 +199,7 @@ func TestWithdraw(t *testing.T) { // create valid state and params params, state := channeltest.NewRandomParamsAndState( rng, - channeltest.WithBackend(1), + channeltest.WithBackend(ethwallet.BackendID), channeltest.WithParts(s.Parts), channeltest.WithAssets(s.Asset), channeltest.WithIsFinal(false), @@ -213,7 +213,7 @@ func TestWithdraw(t *testing.T) { require.NoError(t, s.Funders[0].Fund(fundingCtx, *fundingReq), "funding should succeed") req := channel.AdjudicatorReq{ Params: params, - Acc: map[wallet.BackendID]wallet.Account{1: s.Accs[0]}, + Acc: map[wallet.BackendID]wallet.Account{ethwallet.BackendID: s.Accs[0]}, Idx: channel.Index(0), } @@ -264,7 +264,7 @@ func TestWithdrawNonFinal(t *testing.T) { params, state := channeltest.NewRandomParamsAndState( rng, channeltest.WithChallengeDuration(60), - channeltest.WithBackend(1), + channeltest.WithBackend(ethwallet.BackendID), channeltest.WithParts(s.Parts), channeltest.WithAssets(s.Asset), channeltest.WithIsFinal(false), @@ -286,7 +286,7 @@ func TestWithdrawNonFinal(t *testing.T) { // register req := channel.AdjudicatorReq{ Params: params, - Acc: map[wallet.BackendID]wallet.Account{1: s.Accs[0]}, + Acc: map[wallet.BackendID]wallet.Account{ethwallet.BackendID: s.Accs[0]}, Idx: 0, Tx: testSignState(t, s.Accs, state), } diff --git a/client/app_test.go b/client/app_test.go index 422c5ed..97d0391 100644 --- a/client/app_test.go +++ b/client/app_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -54,7 +54,7 @@ func TestProgression(t *testing.T) { BaseExecConfig: clienttest.MakeBaseExecConfig( clientAddresses(roleSetups), backendSetup.Asset, - 1, + ethwallet.BackendID, [2]*big.Int{big.NewInt(99), big.NewInt(1)}, client.WithApp(app, channel.NewMockOp(channel.OpValid)), ), diff --git a/client/payment_test.go b/client/payment_test.go index ce62927..708870b 100644 --- a/client/payment_test.go +++ b/client/payment_test.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -67,9 +67,9 @@ func TestPaymentHappy(t *testing.T) { BaseExecConfig: clienttest.MakeBaseExecConfig( [2]map[perunwallet.BackendID]wire.Address{wire.AddressMapfromAccountMap(setup[A].Identity), wire.AddressMapfromAccountMap(setup[B].Identity)}, s.Asset, - 1, + wallet.BackendID, [2]*big.Int{big.NewInt(100), big.NewInt(100)}, - client.WithApp(chtest.NewRandomAppAndData(rng, chtest.WithBackend(1))), + client.WithApp(chtest.NewRandomAppAndData(rng, chtest.WithBackend(wallet.BackendID))), ), NumPayments: [2]int{2, 2}, TxAmounts: [2]*big.Int{big.NewInt(5), big.NewInt(3)}, @@ -127,7 +127,7 @@ func TestPaymentDispute(t *testing.T) { BaseExecConfig: clienttest.MakeBaseExecConfig( [2]map[perunwallet.BackendID]wire.Address{wire.AddressMapfromAccountMap(setup[A].Identity), wire.AddressMapfromAccountMap(setup[B].Identity)}, s.Asset, - 1, + wallet.BackendID, [2]*big.Int{big.NewInt(100), big.NewInt(1)}, client.WithoutApp(), ), diff --git a/client/subchannel_test.go b/client/subchannel_test.go index e539880..65d2c36 100644 --- a/client/subchannel_test.go +++ b/client/subchannel_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/client/test/multiledger.go b/client/test/multiledger.go index 408357a..0364fed 100644 --- a/client/test/multiledger.go +++ b/client/test/multiledger.go @@ -1,4 +1,4 @@ -// Copyright 2022 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -101,8 +101,8 @@ type testLedger struct { } // AssetID returns the asset ID of the ledger. -func (l testLedger) AssetID() multi.AssetID { - return ethchannel.MakeAssetID(ethchannel.MakeChainID(l.simSetup.SimBackend.ChainID()).Int) +func (l testLedger) AssetID() multi.LedgerBackendID { + return ethchannel.MakeLedgerBackendID(ethchannel.MakeChainID(l.simSetup.SimBackend.ChainID()).Int) } func setupLedger(ctx context.Context, t *testing.T, rng *rand.Rand, chainID *big.Int) testLedger { @@ -133,7 +133,7 @@ func setupClient(t *testing.T, rng *rand.Rand, l1, l2 testLedger, bus wire.Bus) require := require.New(t) // Setup wallet and account. - w := map[wallet.BackendID]wtest.Wallet{1: wtest.RandomWallet(1).(*keystore.Wallet)} + w := map[wallet.BackendID]wtest.Wallet{ethwallet.BackendID: wtest.RandomWallet(ethwallet.BackendID).(*keystore.Wallet)} acc := w[1].NewRandomAccount(rng).(*keystore.Account) // Setup contract backends. @@ -180,9 +180,9 @@ func setupClient(t *testing.T, rng *rand.Rand, l1, l2 testLedger, bus wire.Bus) walletAddr := acc.Address().(*ethwallet.Address) wireAddr := ðwire.Address{Address: walletAddr} - perunWallet := map[wallet.BackendID]wallet.Wallet{1: w[1]} + perunWallet := map[wallet.BackendID]wallet.Wallet{ethwallet.BackendID: w[ethwallet.BackendID]} c, err := client.New( - map[wallet.BackendID]wire.Address{1: wireAddr}, + map[wallet.BackendID]wire.Address{ethwallet.BackendID: wireAddr}, bus, multiFunder, multiAdj, @@ -195,8 +195,8 @@ func setupClient(t *testing.T, rng *rand.Rand, l1, l2 testLedger, bus wire.Bus) Client: c, Adjudicator1: adjL1, Adjudicator2: adjL2, - WireAddress: map[wallet.BackendID]wire.Address{1: wireAddr}, - WalletAddress: map[wallet.BackendID]wallet.Address{1: walletAddr}, + WireAddress: map[wallet.BackendID]wire.Address{ethwallet.BackendID: wireAddr}, + WalletAddress: map[wallet.BackendID]wallet.Address{ethwallet.BackendID: walletAddr}, Events: make(chan channel.AdjudicatorEvent), BalanceReader1: l1.simSetup.SimBackend.NewBalanceReader(acc.Address()), BalanceReader2: l2.simSetup.SimBackend.NewBalanceReader(acc.Address()), diff --git a/client/test/setup.go b/client/test/setup.go index 612b5df..e66e64d 100644 --- a/client/test/setup.go +++ b/client/test/setup.go @@ -1,4 +1,4 @@ -// Copyright 2021 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -50,12 +50,12 @@ func MakeRoleSetups(rng *rand.Rand, s *ethctest.Setup, names []string) []clientt } setups[i] = clienttest.RoleSetup{ Name: names[i], - Identity: wiretest.NewRandomAccountMap(rng, 1), + Identity: wiretest.NewRandomAccountMap(rng, ethwtest.BackendID), Bus: bus, Funder: s.Funders[i], Adjudicator: s.Adjs[i], Watcher: watcher, - Wallet: map[wallet.BackendID]wtest.Wallet{1: ethwtest.NewTmpWallet()}, + Wallet: map[wallet.BackendID]wtest.Wallet{ethwtest.BackendID: ethwtest.NewTmpWallet()}, Timeout: DefaultTimeout, // Scaled due to simbackend automining progressing faster than real time. ChallengeDuration: challengeDurationBlocks * uint64(time.Second/BlockInterval), diff --git a/go.mod b/go.mod index a7a2bda..124ccf0 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/sirupsen/logrus v1.8.1 github.com/stretchr/testify v1.7.0 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - perun.network/go-perun v0.12.1-0.20241223112511-d463e822db12 + perun.network/go-perun v0.12.1-0.20250128081648-21d0af4e234b polycry.pt/poly-go v0.0.0-20220301085937-fb9d71b45a37 ) diff --git a/go.sum b/go.sum index 6c1dacd..947b32a 100644 --- a/go.sum +++ b/go.sum @@ -646,8 +646,8 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -perun.network/go-perun v0.12.1-0.20241223112511-d463e822db12 h1:wLiF8lSX+rrnO4W359gxbW8FH2HilEb3LGzeqGLnj68= -perun.network/go-perun v0.12.1-0.20241223112511-d463e822db12/go.mod h1:uH8iwi75alXDizxxDzH0A+6uqXPbagCpKfl8ECMv/cA= +perun.network/go-perun v0.12.1-0.20250128081648-21d0af4e234b h1:6FeodthJZB10aWGk/DgtV2VicacyUnLaUoT8OUcwSms= +perun.network/go-perun v0.12.1-0.20250128081648-21d0af4e234b/go.mod h1:uH8iwi75alXDizxxDzH0A+6uqXPbagCpKfl8ECMv/cA= polycry.pt/poly-go v0.0.0-20220301085937-fb9d71b45a37 h1:iA5GzEa/hHfVlQpimEjPV09NATwHXxSjWNB0VVodtew= polycry.pt/poly-go v0.0.0-20220301085937-fb9d71b45a37/go.mod h1:XUBrNtqgEhN3EEOP/5gh7IBd3xVHKidCjXDZfl9+kMU= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/subscription/eventsub_test.go b/subscription/eventsub_test.go index d87767f..6ec75a2 100644 --- a/subscription/eventsub_test.go +++ b/subscription/eventsub_test.go @@ -1,4 +1,4 @@ -// Copyright 2021 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -178,14 +178,14 @@ func TestEventSub_Filter(t *testing.T) { opts, err := cb.NewTransactor(ctx, txGasLimit, *account) require.NoError(t, err) opts.Value = big.NewInt(1) - tx, err := ah.Deposit(opts, fundingID[1], big.NewInt(1)) + tx, err := ah.Deposit(opts, fundingID, big.NewInt(1)) require.NoError(t, err) // Wait for the TX to be mined. _, err = cb.ConfirmTransaction(ctx, tx, *account) require.NoError(t, err) // Create the filter. - Filter := []interface{}{fundingID[1]} + Filter := []interface{}{fundingID} // Setup the event sub. sink := make(chan *subscription.Event, 1) eFact := func() *subscription.Event { @@ -207,7 +207,7 @@ func TestEventSub_Filter(t *testing.T) { e := <-sink require.NotNil(t, e) want := &assetholder.AssetholderDeposited{ - FundingID: fundingID[1], + FundingID: fundingID, Amount: big.NewInt(int64(1)), } log.Debug("TX0 Hash: ", e.Log.TxHash) diff --git a/wallet/address.go b/wallet/address.go index daa551e..bc3253d 100644 --- a/wallet/address.go +++ b/wallet/address.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/wallet/hd/wallet.go b/wallet/hd/wallet.go index d9d1747..9d60d83 100644 --- a/wallet/hd/wallet.go +++ b/wallet/hd/wallet.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/wallet/init.go b/wallet/init.go index a351794..1df576f 100644 --- a/wallet/init.go +++ b/wallet/init.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,6 +18,9 @@ import ( "perun.network/go-perun/wallet" ) +// BackendID is the ID of the Ethereum backend. +const BackendID = 1 + func init() { - wallet.SetBackend(new(Backend), 1) + wallet.SetBackend(new(Backend), BackendID) } diff --git a/wallet/keystore/transactor_test.go b/wallet/keystore/transactor_test.go index f313d37..488e2d4 100644 --- a/wallet/keystore/transactor_test.go +++ b/wallet/keystore/transactor_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/wallet/keystore/wallet_test.go b/wallet/keystore/wallet_test.go index 8c7ca3c..36ede51 100644 --- a/wallet/keystore/wallet_test.go +++ b/wallet/keystore/wallet_test.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/wallet/simple/wallet.go b/wallet/simple/wallet.go index adc19d7..8df7a69 100644 --- a/wallet/simple/wallet.go +++ b/wallet/simple/wallet.go @@ -1,4 +1,4 @@ -// Copyright 2021 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/wallet/test/init.go b/wallet/test/init.go index b34d479..7ef79f4 100644 --- a/wallet/test/init.go +++ b/wallet/test/init.go @@ -1,4 +1,4 @@ -// Copyright 2019 - See NOTICE file for copyright holders. +// Copyright 2024 - See NOTICE file for copyright holders. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -19,12 +19,15 @@ import ( "perun.network/go-perun/wallet/test" ) +// BackendID is the ID of the Ethereum backend. +const BackendID = 1 + var ks *keystore.KeyStore func init() { rnd := newRandomizer() ks = rnd.wallet.Ks - test.SetRandomizer(rnd, 1) + test.SetRandomizer(rnd, BackendID) } // Keystore returns the currently set keystore for tests.