diff --git a/chain/channel-eth-go/balancelimit/balancelimit.go b/chain/channel-eth-go/balancelimit/balancelimit.go index 03a65f2..0669c07 100644 --- a/chain/channel-eth-go/balancelimit/balancelimit.go +++ b/chain/channel-eth-go/balancelimit/balancelimit.go @@ -33,7 +33,7 @@ var ( // LedgerBalanceLimitMetaData contains all meta data concerning the LedgerBalanceLimit contract. var LedgerBalanceLimitMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x610381610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610060575f3560e01c80635930e0e1146100645780636ad1dc2d1461008d5780636ae97472146100b7578063bdca79a7146100e4578063c88c62651461011e575b5f5ffd5b81801561006f575f5ffd5b5061008b61007e3660046101fa565b600501805460ff19169055565b005b818015610098575f5ffd5b5061008b6100a73660046101fa565b600501805460ff19166001179055565b6100cf6100c53660046101fa565b6005015460ff1690565b60405190151581526020015b60405180910390f35b6101106100f236600461022c565b6001600160a01b03165f908152600491909101602052604090205490565b6040519081526020016100db565b818015610129575f5ffd5b5061008b61013836600461029e565b8281146101825760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640160405180910390fd5b5f5b838110156101f25782828281811061019e5761019e610317565b90506020020135866004015f8787858181106101bc576101bc610317565b90506020020160208101906101d1919061032b565b6001600160a01b0316815260208101919091526040015f2055600101610184565b505050505050565b5f6020828403121561020a575f5ffd5b5035919050565b80356001600160a01b0381168114610227575f5ffd5b919050565b5f5f6040838503121561023d575f5ffd5b8235915061024d60208401610211565b90509250929050565b5f5f83601f840112610266575f5ffd5b50813567ffffffffffffffff81111561027d575f5ffd5b6020830191508360208260051b8501011115610297575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b2575f5ffd5b85359450602086013567ffffffffffffffff8111156102cf575f5ffd5b6102db88828901610256565b909550935050604086013567ffffffffffffffff8111156102fa575f5ffd5b61030688828901610256565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561033b575f5ffd5b61034482610211565b939250505056fea2646970667358221220ebeb8102bdf78c597c9a848deacca0076fbc714273f68a87877c8ff05660dffe64736f6c634300081e0033", + Bin: "0x610381610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610060575f3560e01c80635930e0e1146100645780636ad1dc2d1461008d5780636ae97472146100b7578063bdca79a7146100e4578063c88c62651461011e575b5f5ffd5b81801561006f575f5ffd5b5061008b61007e3660046101fa565b600501805460ff19169055565b005b818015610098575f5ffd5b5061008b6100a73660046101fa565b600501805460ff19166001179055565b6100cf6100c53660046101fa565b6005015460ff1690565b60405190151581526020015b60405180910390f35b6101106100f236600461022c565b6001600160a01b03165f908152600491909101602052604090205490565b6040519081526020016100db565b818015610129575f5ffd5b5061008b61013836600461029e565b8281146101825760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640160405180910390fd5b5f5b838110156101f25782828281811061019e5761019e610317565b90506020020135866004015f8787858181106101bc576101bc610317565b90506020020160208101906101d1919061032b565b6001600160a01b0316815260208101919091526040015f2055600101610184565b505050505050565b5f6020828403121561020a575f5ffd5b5035919050565b80356001600160a01b0381168114610227575f5ffd5b919050565b5f5f6040838503121561023d575f5ffd5b8235915061024d60208401610211565b90509250929050565b5f5f83601f840112610266575f5ffd5b50813567ffffffffffffffff81111561027d575f5ffd5b6020830191508360208260051b8501011115610297575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b2575f5ffd5b85359450602086013567ffffffffffffffff8111156102cf575f5ffd5b6102db88828901610256565b909550935050604086013567ffffffffffffffff8111156102fa575f5ffd5b61030688828901610256565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561033b575f5ffd5b61034482610211565b939250505056fea2646970667358221220df6d825b781b6c9ff6ce3f1d7113d7445e158afbbe665b49cda19dad3e7719f864736f6c634300081e0033", } // LedgerBalanceLimitABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/channel/channel.go b/chain/channel-eth-go/channel/channel.go index e91a3f3..2c07544 100644 --- a/chain/channel-eth-go/channel/channel.go +++ b/chain/channel-eth-go/channel/channel.go @@ -33,7 +33,7 @@ var ( // LedgerChannelMetaData contains all meta data concerning the LedgerChannel contract. var LedgerChannelMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x610eaa610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610111575f3560e01c8063b80ddf7e116100a9578063c46dd9dd11610079578063c46dd9dd146102be578063c814d28e14610339578063c8ed149e1461034c578063d6b89e3a1461036e578063d7db65ce14610381575f5ffd5b8063b80ddf7e14610241578063bcdf4ebb14610256578063c2c3f21f14610269578063c2f8816b1461027c575f5ffd5b806360f8e398116100e457806360f8e398146101c357806377ffc623146101e45780638970f8a5146101f9578063b32531271461021c575f5ffd5b806312bb8c81146101155780631fd4a9c214610143578063418ec1011461017e578063565aebdb1461019e575b5f5ffd5b61012d610123366004610c8e565b6002015460ff1690565b60405161013a9190610cb9565b60405180910390f35b610166610151366004610c8e565b6002015461010090046001600160a01b031690565b6040516001600160a01b03909116815260200161013a565b61019061018c366004610c8e565b5490565b60405190815260200161013a565b6101b66101ac366004610c8e565b6003015460ff1690565b60405161013a9190610cd3565b6101d66101d1366004610c8e565b6103a2565b60405161013a929190610d3a565b6101906101f2366004610c8e565b6014015490565b610166610207366004610c8e565b6003015461010090046001600160a01b031690565b61022f61022a366004610c8e565b6104cf565b60405161013a96959493929190610d55565b61019061024f366004610c8e565b6001015490565b6101d6610264366004610c8e565b610692565b6101d6610277366004610c8e565b6107c5565b61028f61028a366004610c8e565b6108f2565b60405161013a949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61030f6102cc366004610c8e565b6040805160808101825260158301546001600160a01b03168082526016840154602083018190526017850154938301849052601890940154606090920182905293565b604080516001600160a01b039095168552602085019390935291830152606082015260800161013a565b6101d6610347366004610c8e565b610942565b61035f61035a366004610c8e565b610a6b565b60405161013a93929190610db2565b61019061037c366004610c8e565b610b02565b61039461038f366004610c8e565b610b43565b60405161013a929190610de2565b6103aa610c70565b6103b2610c70565b604080518082019091525f9060048501600283835b8282101561045757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016103c7565b5050505090506040518060400160405280825f6002811061047a5761047a610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201909152935160609081015181015185529151820151909101519083015294909350915050565b6104d7610c70565b6104df610c70565b6104e7610c70565b6104ef610c70565b6104f7610c70565b6104ff610c70565b604080518082019091525f9060048901600283835b828210156105a457604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610514565b5050505090506040518060400160405280825f600281106105c7576105c7610e20565b60209081029190910151516001600160a01b03908116835284820180515190911692820192909252604080518082018252855183015181528351830151818401528151808301835286518301518152845183015181850152825180840184528751606090810151518252865181015151828701528451808601865289518201518701518152875182015187015181880152855180870190965298518101516080908101518652965101519095015193830193909352939c939b50909950909750919550909350915050565b61069a610c70565b6106a2610c70565b604080518082019091525f9060048501600283835b8282101561074757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016106b7565b5050505090506040518060400160405280825f6002811061076a5761076a610e20565b60209081029190910151516001600160a01b0390811683528482015151169181019190915260408051808201909152835160600151608001518152908101836001602002015160600151608001518152509250925050915091565b6107cd610c70565b6107d5610c70565b604080518082019091525f9060048501600283835b8282101561087a57604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016107ea565b5050505090506040518060400160405280825f6002811061089d5761089d610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201909152935160609081015182015185529151909101518101519083015294909350915050565b60018101546002808301545f928392839283929160ff9091169081111561091b5761091b610ca5565b60028701546014909701549197909661010090046001600160a01b03169550909350915050565b61094a610c70565b610952610c70565b604080518082019091525f9060048501600283835b828210156109f757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610967565b5050505090506040518060400160405280825f60028110610a1a57610a1a610e20565b60209081029190910151516001600160a01b03908116835284820180515190911692820192909252604080518082019091529351606090810151518552915190910151519083015294909350915050565b610a73610c70565b610a7b610c70565b610a83610c70565b5f6040518060400160405280866004015f60028110610aa457610aa4610e20565b60080201546001600160a01b039081168252600c8801541660209182015260408051808201825260058901548152600d89015481840152815180830190925260068901548252600e9098015491810191909152909690945092505050565b600e8101546006820154600d83015460058401545f93849390929091610b289190610e48565b610b329190610e61565b610b3c9190610e61565b9392505050565b610b4b610c70565b610b53610c70565b604080518082019091525f9060048501600283835b82821015610bf857604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610b68565b5050505090506040518060400160405280825f60028110610c1b57610c1b610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201825294516060908101518201518652925190920151909101519083015294909350915050565b60405180604001604052806002906020820280368337509192915050565b5f60208284031215610c9e575f5ffd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b6020810160038310610ccd57610ccd610ca5565b91905290565b6020810160058310610ccd57610ccd610ca5565b805f5b6002811015610d125781516001600160a01b0316845260209384019390910190600101610cea565b50505050565b805f5b6002811015610d12578151845260209384019390910190600101610d1b565b60808101610d488285610ce7565b610b3c6040830184610d18565b6101808101610d648289610ce7565b610d716040830188610d18565b610d7e6080830187610d18565b610d8b60c0830186610d18565b610d99610100830185610d18565b610da7610140830184610d18565b979650505050505050565b60c08101610dc08286610ce7565b610dcd6040830185610d18565b610dda6080830184610d18565b949350505050565b60808101610df08285610ce7565b60408201835f5b6002811015610e16578151835260209283019290910190600101610df7565b5050509392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e5b57610e5b610e34565b92915050565b81810381811115610e5b57610e5b610e3456fea2646970667358221220e64f8239de4648948579ec8c75d6da9be8e61f311316059019eb3344e9549b8164736f6c634300081e0033", + Bin: "0x610eaa610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610111575f3560e01c8063b80ddf7e116100a9578063c46dd9dd11610079578063c46dd9dd146102be578063c814d28e14610339578063c8ed149e1461034c578063d6b89e3a1461036e578063d7db65ce14610381575f5ffd5b8063b80ddf7e14610241578063bcdf4ebb14610256578063c2c3f21f14610269578063c2f8816b1461027c575f5ffd5b806360f8e398116100e457806360f8e398146101c357806377ffc623146101e45780638970f8a5146101f9578063b32531271461021c575f5ffd5b806312bb8c81146101155780631fd4a9c214610143578063418ec1011461017e578063565aebdb1461019e575b5f5ffd5b61012d610123366004610c8e565b6002015460ff1690565b60405161013a9190610cb9565b60405180910390f35b610166610151366004610c8e565b6002015461010090046001600160a01b031690565b6040516001600160a01b03909116815260200161013a565b61019061018c366004610c8e565b5490565b60405190815260200161013a565b6101b66101ac366004610c8e565b6003015460ff1690565b60405161013a9190610cd3565b6101d66101d1366004610c8e565b6103a2565b60405161013a929190610d3a565b6101906101f2366004610c8e565b6014015490565b610166610207366004610c8e565b6003015461010090046001600160a01b031690565b61022f61022a366004610c8e565b6104cf565b60405161013a96959493929190610d55565b61019061024f366004610c8e565b6001015490565b6101d6610264366004610c8e565b610692565b6101d6610277366004610c8e565b6107c5565b61028f61028a366004610c8e565b6108f2565b60405161013a949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61030f6102cc366004610c8e565b6040805160808101825260158301546001600160a01b03168082526016840154602083018190526017850154938301849052601890940154606090920182905293565b604080516001600160a01b039095168552602085019390935291830152606082015260800161013a565b6101d6610347366004610c8e565b610942565b61035f61035a366004610c8e565b610a6b565b60405161013a93929190610db2565b61019061037c366004610c8e565b610b02565b61039461038f366004610c8e565b610b43565b60405161013a929190610de2565b6103aa610c70565b6103b2610c70565b604080518082019091525f9060048501600283835b8282101561045757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016103c7565b5050505090506040518060400160405280825f6002811061047a5761047a610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201909152935160609081015181015185529151820151909101519083015294909350915050565b6104d7610c70565b6104df610c70565b6104e7610c70565b6104ef610c70565b6104f7610c70565b6104ff610c70565b604080518082019091525f9060048901600283835b828210156105a457604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610514565b5050505090506040518060400160405280825f600281106105c7576105c7610e20565b60209081029190910151516001600160a01b03908116835284820180515190911692820192909252604080518082018252855183015181528351830151818401528151808301835286518301518152845183015181850152825180840184528751606090810151518252865181015151828701528451808601865289518201518701518152875182015187015181880152855180870190965298518101516080908101518652965101519095015193830193909352939c939b50909950909750919550909350915050565b61069a610c70565b6106a2610c70565b604080518082019091525f9060048501600283835b8282101561074757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016106b7565b5050505090506040518060400160405280825f6002811061076a5761076a610e20565b60209081029190910151516001600160a01b0390811683528482015151169181019190915260408051808201909152835160600151608001518152908101836001602002015160600151608001518152509250925050915091565b6107cd610c70565b6107d5610c70565b604080518082019091525f9060048501600283835b8282101561087a57604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016107ea565b5050505090506040518060400160405280825f6002811061089d5761089d610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201909152935160609081015182015185529151909101518101519083015294909350915050565b60018101546002808301545f928392839283929160ff9091169081111561091b5761091b610ca5565b60028701546014909701549197909661010090046001600160a01b03169550909350915050565b61094a610c70565b610952610c70565b604080518082019091525f9060048501600283835b828210156109f757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610967565b5050505090506040518060400160405280825f60028110610a1a57610a1a610e20565b60209081029190910151516001600160a01b03908116835284820180515190911692820192909252604080518082019091529351606090810151518552915190910151519083015294909350915050565b610a73610c70565b610a7b610c70565b610a83610c70565b5f6040518060400160405280866004015f60028110610aa457610aa4610e20565b60080201546001600160a01b039081168252600c8801541660209182015260408051808201825260058901548152600d89015481840152815180830190925260068901548252600e9098015491810191909152909690945092505050565b600e8101546006820154600d83015460058401545f93849390929091610b289190610e48565b610b329190610e61565b610b3c9190610e61565b9392505050565b610b4b610c70565b610b53610c70565b604080518082019091525f9060048501600283835b82821015610bf857604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610b68565b5050505090506040518060400160405280825f60028110610c1b57610c1b610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201825294516060908101518201518652925190920151909101519083015294909350915050565b60405180604001604052806002906020820280368337509192915050565b5f60208284031215610c9e575f5ffd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b6020810160038310610ccd57610ccd610ca5565b91905290565b6020810160058310610ccd57610ccd610ca5565b805f5b6002811015610d125781516001600160a01b0316845260209384019390910190600101610cea565b50505050565b805f5b6002811015610d12578151845260209384019390910190600101610d1b565b60808101610d488285610ce7565b610b3c6040830184610d18565b6101808101610d648289610ce7565b610d716040830188610d18565b610d7e6080830187610d18565b610d8b60c0830186610d18565b610d99610100830185610d18565b610da7610140830184610d18565b979650505050505050565b60c08101610dc08286610ce7565b610dcd6040830185610d18565b610dda6080830184610d18565b949350505050565b60808101610df08285610ce7565b60408201835f5b6002811015610e16578151835260209283019290910190600101610df7565b5050509392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e5b57610e5b610e34565b92915050565b81810381811115610e5b57610e5b610e3456fea26469706673582212201302c5f277a965e99f1bbbc455b68962cda5023a1a451c8dc52f79a564b30df864736f6c634300081e0033", } // LedgerChannelABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/ledger/ledger.go b/chain/channel-eth-go/ledger/ledger.go index 1f712cb..5ab7de1 100644 --- a/chain/channel-eth-go/ledger/ledger.go +++ b/chain/channel-eth-go/ledger/ledger.go @@ -32,8 +32,8 @@ var ( // CelerLedgerMetaData contains all meta data concerning the CelerLedger contract. var CelerLedgerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_nativeWrap\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_payRegistry\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_celerWallet\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"clearPays\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_peerFrom\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_payIdList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"confirmSettle\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"confirmWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cooperativeSettle\",\"inputs\":[{\"name\":\"_settleRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cooperativeWithdraw\",\"inputs\":[{\"name\":\"_cooperativeWithdrawRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_transferFromAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositInBatch\",\"inputs\":[{\"name\":\"_channelIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_receivers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_transferFromAmounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableBalanceLimits\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableBalanceLimits\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBalanceLimit\",\"inputs\":[{\"name\":\"_tokenAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBalanceLimitsEnabled\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBalanceMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCelerWallet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelMigrationArgs\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelStatus\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLedgerStruct.ChannelStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelStatusNum\",\"inputs\":[{\"name\":\"_channelStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCooperativeWithdrawSeqNum\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDisputeTimeout\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMigratedTo\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNativeWrap\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNextPayIdListHashMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"bytes32[2]\",\"internalType\":\"bytes32[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayClearDeadlineMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPeersMigrationInfo\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingPayOutMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSettleFinalizedTime\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateSeqNumMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTokenContract\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTokenType\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumPbEntity.TokenType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalBalance\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransferOutMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawIntent\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"intendSettle\",\"inputs\":[{\"name\":\"_signedSimplexStateArray\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"intendWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_recipientChannelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"migrateChannelFrom\",\"inputs\":[{\"name\":\"_fromLedgerAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_migrationRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"migrateChannelTo\",\"inputs\":[{\"name\":\"_migrationRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"openChannel\",\"inputs\":[{\"name\":\"_openRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setBalanceLimits\",\"inputs\":[{\"name\":\"_tokenAddrs\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_limits\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"snapshotStates\",\"inputs\":[{\"name\":\"_signedSimplexStateArray\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"vetoWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ClearOnePay\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerFrom\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettleFail\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"seqNum\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelFrom\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"oldLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelTo\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OpenChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenType\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"initialDeposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SnapshotStates\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"VetoWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561000f575f5ffd5b506040516124e33803806124e383398101604081905261002e916101c6565b338061005457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61005d8161015c565b506001600160a01b0383166100b45760405162461bcd60e51b815260206004820152601b60248201527f6e61746976655772617020616464726573732072657175697265640000000000604482015260640161004b565b5f836001600160a01b03163b1161010d5760405162461bcd60e51b815260206004820152601860248201527f6e61746976655772617020636f64652072657175697265640000000000000000604482015260640161004b565b600280546001600160a01b039485166001600160a01b0319918216179091556003805493851693821693909317909255600480549190931691161790556006805460ff19166001179055610206565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146101c1575f5ffd5b919050565b5f5f5f606084860312156101d8575f5ffd5b6101e1846101ab565b92506101ef602085016101ab565b91506101fd604085016101ab565b90509250925092565b6122d0806102135f395ff3fe608060405260043610610257575f3560e01c80638da5cb5b1161013f578063d757abd2116100b3578063e5780db211610078578063e5780db2146107b5578063e6322df7146107d4578063ec7c637d146107f3578063f0c73d7014610812578063f2fde38b14610831578063fd0a1a6114610850575f5ffd5b8063d757abd214610731578063d927bfc414610750578063d954863c1461076f578063e063913c14610782578063e0a515b714610796575f5ffd5b8063bd480cb711610104578063bd480cb71461064d578063c06d5ff51461067b578063c38a325d1461069a578063c7ff8625146106b9578063cc0b94b7146106d8578063cd3a1be614610704575f5ffd5b80638da5cb5b146105bf57806393b7b3ce146105db578063979a9b5e146105ee578063a099a39f1461061a578063a8580cab1461062e575f5ffd5b8063312ea2c6116101d6578063715018a61161019b578063715018a6146104df57806376bff117146104f35780637e9a7a3e1461053c57806383c8f8b81461055b57806388f414651461056f5780638942ecb2146105a0575f5ffd5b8063312ea2c61461045a5780634102b9a81461046e57806361fb19a01461048d578063666a6d65146104a157806369d5dd67146104c0575f5ffd5b80632b559ecc1161021c5780632b559ecc146103735780632e2a5a02146103975780632e3c517a146103ce5780632f0ac304146103ed578063307d6f961461043b575f5ffd5b80630165cef8146102b357806309683c03146102e957806309b65d8614610308578063130d33fe14610335578063255aab5914610354575f5ffd5b366102af576002546001600160a01b031633146102ad5760405162461bcd60e51b815260206004820152600f60248201526e04f6e6c79206e61746976655772617608c1b60448201526064015b60405180910390fd5b005b5f5ffd5b3480156102be575f5ffd5b506102d26102cd366004611993565b61086f565b6040516102e09291906119f7565b60405180910390f35b3480156102f4575f5ffd5b506102ad610303366004611a57565b61090a565b348015610313575f5ffd5b50610327610322366004611993565b610976565b6040519081526020016102e0565b348015610340575f5ffd5b506102ad61034f366004611a57565b6109fd565b34801561035f575f5ffd5b506102ad61036e366004611993565b610a39565b34801561037e575f5ffd5b50610387610aa3565b60405190151581526020016102e0565b3480156103a2575f5ffd5b506103b66103b1366004611993565b610b1c565b6040516001600160a01b0390911681526020016102e0565b3480156103d9575f5ffd5b506102ad6103e8366004611aaa565b610b9c565b3480156103f8575f5ffd5b5061040c610407366004611993565b610c0b565b6040516102e0949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b348015610446575f5ffd5b50610327610455366004611993565b610ca1565b348015610465575f5ffd5b506103b6610d23565b348015610479575f5ffd5b506102ad610488366004611a57565b610d98565b348015610498575f5ffd5b506103b6610dd4565b3480156104ac575f5ffd5b506102d26104bb366004611993565b610e0e565b3480156104cb575f5ffd5b506103276104da366004611993565b610e64565b3480156104ea575f5ffd5b506102ad610ea9565b3480156104fe575f5ffd5b5061051261050d366004611993565b610ebc565b604080516001600160a01b03909516855260208501939093529183015260608201526080016102e0565b348015610547575f5ffd5b506102ad610556366004611993565b610f42565b348015610566575f5ffd5b506102ad610f81565b34801561057a575f5ffd5b5061058e610589366004611993565b610feb565b6040516102e096959493929190611afb565b3480156105ab575f5ffd5b506102ad6105ba366004611b58565b6110b1565b3480156105ca575f5ffd5b505f546001600160a01b03166103b6565b6102ad6105e9366004611a57565b6110fe565b3480156105f9575f5ffd5b5061060d610608366004611993565b61113a565b6040516102e09190611b95565b348015610625575f5ffd5b506103b66111b9565b348015610639575f5ffd5b506102ad610648366004611bf0565b6111f3565b348015610658575f5ffd5b5061066c610667366004611993565b61126d565b6040516102e093929190611c5c565b348015610686575f5ffd5b506102d2610695366004611993565b611313565b3480156106a5575f5ffd5b506103b66106b4366004611993565b611369565b3480156106c4575f5ffd5b506102ad6106d3366004611993565b6113ae565b3480156106e3575f5ffd5b506106f76106f2366004611993565b6113ed565b6040516102e09190611c8c565b34801561070f575f5ffd5b5061072361071e366004611993565b61146c565b6040516102e0929190611ca0565b34801561073c575f5ffd5b506102ad61074b366004611a57565b6114fc565b34801561075b575f5ffd5b506102d261076a366004611993565b611538565b6102ad61077d366004611cde565b61158e565b34801561078d575f5ffd5b506102ad6115e3565b3480156107a1575f5ffd5b506103276107b0366004611a57565b611623565b3480156107c0575f5ffd5b506102ad6107cf366004611d13565b611661565b3480156107df575f5ffd5b506103276107ee366004611993565b6117a7565b3480156107fe575f5ffd5b5061032761080d366004611db2565b6117ec565b34801561081d575f5ffd5b5061032761082c366004611993565b611835565b34801561083c575f5ffd5b506102ad61084b366004611db2565b61187a565b34801561085b575f5ffd5b506102ad61086a366004611dcd565b6118b7565b610877611975565b61087f611975565b5f8381526007602052604090819020905163bcdf4ebb60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063bcdf4ebb906024015b608060405180830381865af41580156108dc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109009190611ef2565b9250925050915091565b6040516379e9008760e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__906379e90087906109469060019086908690600401611f4d565b5f6040518083038186803b15801561095c575f5ffd5b505af415801561096e573d5f5f3e3d5ffd5b505050505050565b5f81815260076020526040808220905163418ec10160e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063418ec101906024015b602060405180830381865af41580156109d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f69190611f6f565b9392505050565b604051630bdc541160e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__90630bdc5411906109469060019086908690600401611f4d565b60405163eb4de33760e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063eb4de337906044015b5f6040518083038186803b158015610a8a575f5ffd5b505af4158015610a9c573d5f5f3e3d5ffd5b5050505050565b604051633574ba3960e11b8152600160048201525f9073__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__90636ae9747290602401602060405180830381865af4158015610af3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b179190611f86565b905090565b5f818152600760205260408082209051630fea54e160e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__90631fd4a9c2906024015b602060405180830381865af4158015610b78573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f69190611fa5565b60405163415a19c560e11b815273__$2da4c1bc7831bce59d8f8d9cf5a8504e33$__906382b4338a90610bda90600190879087908790600401611fc0565b5f6040518083038186803b158015610bf0575f5ffd5b505af4158015610c02573d5f5f3e3d5ffd5b50505050505050565b5f81815260076020526040808220905163c2f8816b60e01b8152600481018290528291829182919073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c2f8816b90602401608060405180830381865af4158015610c6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c919190611ff4565b9450945094509450509193509193565b6040516360297df360e01b815260016004820152602481018290525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__906360297df3906044015b602060405180830381865af4158015610cf9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1d9190611f6f565b92915050565b6040516344e58d5160e01b8152600160048201525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__906344e58d51906024015b602060405180830381865af4158015610d74573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b179190611fa5565b6040516372cf9b4360e11b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063e59f3686906109469060019086908690600401611f4d565b60405163871e7eeb60e01b8152600160048201525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__9063871e7eeb90602401610d59565b610e16611975565b610e1e611975565b5f8381526007602052604090819020905163640a694760e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c814d28e906024016108c1565b5f818152600760205260408082209051636b5c4f1d60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a906024016109b7565b610eb16118fa565b610eba5f611926565b565b5f81815260076020526040808220905163c46dd9dd60e01b8152600481018290528291829182919073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c46dd9dd90602401608060405180830381865af4158015610f1e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c919190612031565b6040516383e0fef560e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__906383e0fef590604401610a74565b610f896118fa565b604051636ad1dc2d60e01b81526001600482015273__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__90636ad1dc2d906024015b5f6040518083038186803b158015610fd3575f5ffd5b505af4158015610fe5573d5f5f3e3d5ffd5b50505050565b610ff3611975565b610ffb611975565b611003611975565b61100b611975565b611013611975565b61101b611975565b5f8781526007602052604090819020905163b325312760e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063b32531279060240161018060405180830381865af4158015611078573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109c919061206d565b949d939c50919a509850965090945092505050565b604051637a2654ed60e01b81526001600482015260248101849052604481018390526064810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__90637a2654ed90608401610bda565b60405163594db6e360e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063594db6e3906109469060019086908690600401611f4d565b5f8181526007602052604080822090516312bb8c8160e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906312bb8c8190602401602060405180830381865af4158015611195573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f691906120e6565b60405163bd199ca560e01b8152600160048201525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__9063bd199ca590602401610d59565b6111fb6118fa565b60405163c88c626560e01b815273__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__9063c88c62659061123b906001908890889088908890600401612104565b5f6040518083038186803b158015611251575f5ffd5b505af4158015611263573d5f5f3e3d5ffd5b5050505050505050565b611275611975565b61127d611975565b611285611975565b5f848152600760205260409081902090516364768a4f60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af41580156112e1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113059190612188565b935093509350509193909250565b61131b611975565b611323611975565b5f83815260076020526040908190209051630c1f1c7360e31b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906360f8e398906024016108c1565b5f818152600760205260408082209051638970f8a560e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__90638970f8a590602401610b5d565b60405163bb3d0f2b60e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063bb3d0f2b90604401610a74565b5f81815260076020526040808220905163565aebdb60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063565aebdb90602401602060405180830381865af4158015611448573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f691906121cb565b611474611975565b61147c611975565b5f83815260076020526040908190209051636bedb2e760e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d7db65ce90602401608060405180830381865af41580156114d8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090091906121e9565b60405163742fb50760e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063742fb507906109469060019086908690600401611f4d565b611540611975565b611548611975565b5f8381526007602052604090819020905163c2c3f21f60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c2c3f21f906024016108c1565b60405163bd9d315760e01b815260016004820152602481018490526001600160a01b03831660448201526064810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063bd9d315790608401610bda565b6115eb6118fa565b604051635930e0e160e01b81526001600482015273__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__90635930e0e190602401610fbd565b604051631e28763960e11b81525f9073__$2da4c1bc7831bce59d8f8d9cf5a8504e33$__90633c50ec72906109b79060019087908790600401611f4d565b848314801561166f57508281145b6116b25760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016102a4565b5f5b85811015610c025773__$c617d6f30a3108b63ce4034547dfec5d71$__63bd9d315760018989858181106116ea576116ea612259565b9050602002013588888681811061170357611703612259565b90506020020160208101906117189190611db2565b87878781811061172a5761172a612259565b905060200201356040518563ffffffff1660e01b815260040161176f949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b5f6040518083038186803b158015611785575f5ffd5b505af4158015611797573d5f5f3e3d5ffd5b5050600190920191506116b49050565b5f818152600760205260408082209051635c06efbf60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063b80ddf7e906024016109b7565b60405163bdca79a760e01b8152600160048201526001600160a01b03821660248201525f9073__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__9063bdca79a790604401610cde565b5f8181526007602052604080822090516377ffc62360e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906377ffc623906024016109b7565b6118826118fa565b6001600160a01b0381166118ab57604051631e4fbdf760e01b81525f60048201526024016102a4565b6118b481611926565b50565b604051600162804bef60e01b0319815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063ff7fb4119061123b90600190889088908890889060040161226d565b5f546001600160a01b03163314610eba5760405163118cdaa760e01b81523360048201526024016102a4565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405180604001604052806002906020820280368337509192915050565b5f602082840312156119a3575f5ffd5b5035919050565b805f5b6002811015610fe55781516001600160a01b03168452602093840193909101906001016119ad565b805f5b6002811015610fe55781518452602093840193909101906001016119d8565b60808101611a0582856119aa565b6109f660408301846119d5565b5f5f83601f840112611a22575f5ffd5b50813567ffffffffffffffff811115611a39575f5ffd5b602083019150836020828501011115611a50575f5ffd5b9250929050565b5f5f60208385031215611a68575f5ffd5b823567ffffffffffffffff811115611a7e575f5ffd5b611a8a85828601611a12565b90969095509350505050565b6001600160a01b03811681146118b4575f5ffd5b5f5f5f60408486031215611abc575f5ffd5b8335611ac781611a96565b9250602084013567ffffffffffffffff811115611ae2575f5ffd5b611aee86828701611a12565b9497909650939450505050565b6101808101611b0a82896119aa565b611b1760408301886119d5565b611b2460808301876119d5565b611b3160c08301866119d5565b611b3f6101008301856119d5565b611b4d6101408301846119d5565b979650505050505050565b5f5f5f60608486031215611b6a575f5ffd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52602160045260245ffd5b6020810160038310611ba957611ba9611b81565b91905290565b5f5f83601f840112611bbf575f5ffd5b50813567ffffffffffffffff811115611bd6575f5ffd5b6020830191508360208260051b8501011115611a50575f5ffd5b5f5f5f5f60408587031215611c03575f5ffd5b843567ffffffffffffffff811115611c19575f5ffd5b611c2587828801611baf565b909550935050602085013567ffffffffffffffff811115611c44575f5ffd5b611c5087828801611baf565b95989497509550505050565b60c08101611c6a82866119aa565b611c7760408301856119d5565b611c8460808301846119d5565b949350505050565b6020810160058310611ba957611ba9611b81565b60808101611cae82856119aa565b60408201835f5b6002811015611cd4578151835260209283019290910190600101611cb5565b5050509392505050565b5f5f5f60608486031215611cf0575f5ffd5b833592506020840135611d0281611a96565b929592945050506040919091013590565b5f5f5f5f5f5f60608789031215611d28575f5ffd5b863567ffffffffffffffff811115611d3e575f5ffd5b611d4a89828a01611baf565b909750955050602087013567ffffffffffffffff811115611d69575f5ffd5b611d7589828a01611baf565b909550935050604087013567ffffffffffffffff811115611d94575f5ffd5b611da089828a01611baf565b979a9699509497509295939492505050565b5f60208284031215611dc2575f5ffd5b81356109f681611a96565b5f5f5f5f60608587031215611de0575f5ffd5b843593506020850135611df281611a96565b9250604085013567ffffffffffffffff811115611e0d575f5ffd5b611c5087828801611a12565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e4e57634e487b7160e01b5f52604160045260245ffd5b604052919050565b5f82601f830112611e65575f5ffd5b611e6f6040611e19565b806040840185811115611e80575f5ffd5b845b81811015611ea3578051611e9581611a96565b845260209384019301611e82565b509095945050505050565b5f82601f830112611ebd575f5ffd5b611ec76040611e19565b806040840185811115611ed8575f5ffd5b845b81811015611ea3578051845260209384019301611eda565b5f5f60808385031215611f03575f5ffd5b611f0d8484611e56565b9150611f1c8460408501611eae565b90509250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b838152604060208201525f611f66604083018486611f25565b95945050505050565b5f60208284031215611f7f575f5ffd5b5051919050565b5f60208284031215611f96575f5ffd5b815180151581146109f6575f5ffd5b5f60208284031215611fb5575f5ffd5b81516109f681611a96565b8481526001600160a01b03841660208201526060604082018190525f90611fea9083018486611f25565b9695505050505050565b5f5f5f5f60808587031215612007575f5ffd5b845160208601516040870151919550935061202181611a96565b6060959095015193969295505050565b5f5f5f5f60808587031215612044575f5ffd5b845161204f81611a96565b60208601516040870151606090970151919890975090945092505050565b5f5f5f5f5f5f6101808789031215612083575f5ffd5b61208d8888611e56565b955061209c8860408901611eae565b94506120ab8860808901611eae565b93506120ba8860c08901611eae565b92506120ca886101008901611eae565b91506120da886101408901611eae565b90509295509295509295565b5f602082840312156120f6575f5ffd5b8151600381106109f6575f5ffd5b85815260606020820181905281018490525f8560808301825b8781101561214d57823561213081611a96565b6001600160a01b031682526020928301929091019060010161211d565b5083810360408501528481526001600160fb1b0385111561216c575f5ffd5b8460051b91508186602083013701602001979650505050505050565b5f5f5f60c0848603121561219a575f5ffd5b6121a48585611e56565b92506121b38560408601611eae565b91506121c28560808601611eae565b90509250925092565b5f602082840312156121db575f5ffd5b8151600581106109f6575f5ffd5b5f5f608083850312156121fa575f5ffd5b6122048484611e56565b915083605f840112612214575f5ffd5b61221e6040611e19565b80608085018681111561222f575f5ffd5b604086015b8181101561224c578051845260209384019301612234565b5093969095509350505050565b634e487b7160e01b5f52603260045260245ffd5b85815284602082015260018060a01b0384166040820152608060608201525f611b4d608083018486611f2556fea26469706673582212202c48188bbf0511aeaa78ba5a4d2af4467ee265147fb00d83158688742a6c437e64736f6c634300081e0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_nativeWrap\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_payRegistry\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_celerWallet\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"clearPays\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_peerFrom\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_payIdList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"confirmSettle\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"confirmWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cooperativeSettle\",\"inputs\":[{\"name\":\"_settleRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cooperativeWithdraw\",\"inputs\":[{\"name\":\"_cooperativeWithdrawRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_transferFromAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositInBatch\",\"inputs\":[{\"name\":\"_channelIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_receivers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_transferFromAmounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableBalanceLimits\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableBalanceLimits\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBalanceLimit\",\"inputs\":[{\"name\":\"_tokenAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBalanceLimitsEnabled\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBalanceMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCelerWallet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelMigrationArgs\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelStatus\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLedgerStruct.ChannelStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelStatusNum\",\"inputs\":[{\"name\":\"_channelStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCooperativeWithdrawSeqNum\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDisputeTimeout\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMigratedTo\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNativeWrap\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNextPayIdListHashMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"bytes32[2]\",\"internalType\":\"bytes32[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayClearDeadlineMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPeersMigrationInfo\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingPayOutMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSettleFinalizedTime\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateSeqNumMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTokenContract\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTokenType\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumPbEntity.TokenType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalBalance\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransferOutMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawIntent\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"intendSettle\",\"inputs\":[{\"name\":\"_signedSimplexStateArray\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"intendWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_recipientChannelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"migrateChannelFrom\",\"inputs\":[{\"name\":\"_fromLedgerAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_migrationRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"migrateChannelTo\",\"inputs\":[{\"name\":\"_migrationRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"openChannel\",\"inputs\":[{\"name\":\"_openRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setBalanceLimits\",\"inputs\":[{\"name\":\"_tokenAddrs\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_limits\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"snapshotStates\",\"inputs\":[{\"name\":\"_signedSimplexStateArray\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"vetoWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ClearOnePay\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerFrom\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettleFail\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"seqNum\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelFrom\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"oldLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelTo\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OpenChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenType\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"initialDeposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SnapshotStates\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"VetoWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerNotNativeWrap\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LengthMismatch\",\"inputs\":[{\"name\":\"a\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"b\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"NativeWrapNotContract\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x608060405234801561000f575f5ffd5b5060405161223338038061223383398101604081905261002e91610167565b338061005357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61005c816100fd565b506001600160a01b0383166100845760405163d92e233d60e01b815260040160405180910390fd5b5f836001600160a01b03163b116100ae576040516337bf1fcf60e21b815260040160405180910390fd5b600280546001600160a01b039485166001600160a01b0319918216179091556003805493851693821693909317909255600480549190931691161790556006805460ff191660011790556101a7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114610162575f5ffd5b919050565b5f5f5f60608486031215610179575f5ffd5b6101828461014c565b92506101906020850161014c565b915061019e6040850161014c565b90509250925092565b61207f806101b45f395ff3fe608060405260043610610257575f3560e01c80638da5cb5b1161013f578063d757abd2116100b3578063e5780db211610078578063e5780db2146107a8578063e6322df7146107c7578063ec7c637d146107e6578063f0c73d701461081a578063f2fde38b14610839578063fd0a1a6114610858575f5ffd5b8063d757abd214610724578063d927bfc414610743578063d954863c14610762578063e063913c14610775578063e0a515b714610789575f5ffd5b8063bd480cb711610104578063bd480cb714610640578063c06d5ff51461066e578063c38a325d1461068d578063c7ff8625146106ac578063cc0b94b7146106cb578063cd3a1be6146106f7575f5ffd5b80638da5cb5b146105a957806393b7b3ce146105c5578063979a9b5e146105d8578063a099a39f14610604578063a8580cab14610621575f5ffd5b8063312ea2c6116101d6578063715018a61161019b578063715018a6146104c957806376bff117146104dd5780637e9a7a3e1461052657806383c8f8b81461054557806388f41465146105595780638942ecb21461058a575f5ffd5b8063312ea2c6146104325780634102b9a81461044f57806361fb19a01461046e578063666a6d651461048b57806369d5dd67146104aa575f5ffd5b80632b559ecc1161021c5780632b559ecc1461034d5780632e2a5a021461036f5780632e3c517a146103a65780632f0ac304146103c5578063307d6f9614610413575f5ffd5b80630165cef81461028d57806309683c03146102c357806309b65d86146102e2578063130d33fe1461030f578063255aab591461032e575f5ffd5b36610289576002546001600160a01b031633146102875760405163e1b71f7760e01b815260040160405180910390fd5b005b5f5ffd5b348015610298575f5ffd5b506102ac6102a73660046117df565b610877565b6040516102ba929190611849565b60405180910390f35b3480156102ce575f5ffd5b506102876102dd3660046118a9565b610912565b3480156102ed575f5ffd5b506103016102fc3660046117df565b61097e565b6040519081526020016102ba565b34801561031a575f5ffd5b506102876103293660046118a9565b610a05565b348015610339575f5ffd5b506102876103483660046117df565b610a41565b348015610358575f5ffd5b5060065460ff1660405190151581526020016102ba565b34801561037a575f5ffd5b5061038e6103893660046117df565b610aab565b6040516001600160a01b0390911681526020016102ba565b3480156103b1575f5ffd5b506102876103c03660046118fc565b610b2b565b3480156103d0575f5ffd5b506103e46103df3660046117df565b610b9a565b6040516102ba949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b34801561041e575f5ffd5b5061030161042d3660046117df565b610c30565b34801561043d575f5ffd5b506003546001600160a01b031661038e565b34801561045a575f5ffd5b506102876104693660046118a9565b610cb1565b348015610479575f5ffd5b506002546001600160a01b031661038e565b348015610496575f5ffd5b506102ac6104a53660046117df565b610ced565b3480156104b5575f5ffd5b506103016104c43660046117df565b610d43565b3480156104d4575f5ffd5b50610287610d88565b3480156104e8575f5ffd5b506104fc6104f73660046117df565b610d9b565b604080516001600160a01b03909516855260208501939093529183015260608201526080016102ba565b348015610531575f5ffd5b506102876105403660046117df565b610e21565b348015610550575f5ffd5b50610287610e60565b348015610564575f5ffd5b506105786105733660046117df565b610e77565b6040516102ba9695949392919061194d565b348015610595575f5ffd5b506102876105a43660046119aa565b610f3d565b3480156105b4575f5ffd5b505f546001600160a01b031661038e565b6102876105d33660046118a9565b610f8a565b3480156105e3575f5ffd5b506105f76105f23660046117df565b610fc6565b6040516102ba91906119e7565b34801561060f575f5ffd5b506004546001600160a01b031661038e565b34801561062c575f5ffd5b5061028761063b366004611a42565b611045565b34801561064b575f5ffd5b5061065f61065a3660046117df565b6110f1565b6040516102ba93929190611aae565b348015610679575f5ffd5b506102ac6106883660046117df565b611197565b348015610698575f5ffd5b5061038e6106a73660046117df565b6111ed565b3480156106b7575f5ffd5b506102876106c63660046117df565b611232565b3480156106d6575f5ffd5b506106ea6106e53660046117df565b611271565b6040516102ba9190611ade565b348015610702575f5ffd5b506107166107113660046117df565b6112f0565b6040516102ba929190611af2565b34801561072f575f5ffd5b5061028761073e3660046118a9565b611380565b34801561074e575f5ffd5b506102ac61075d3660046117df565b6113bc565b610287610770366004611b30565b611412565b348015610780575f5ffd5b50610287611467565b348015610794575f5ffd5b506103016107a33660046118a9565b61147b565b3480156107b3575f5ffd5b506102876107c2366004611b65565b6114b9565b3480156107d2575f5ffd5b506103016107e13660046117df565b61160a565b3480156107f1575f5ffd5b50610301610800366004611c04565b6001600160a01b03165f9081526005602052604090205490565b348015610825575f5ffd5b506103016108343660046117df565b61164f565b348015610844575f5ffd5b50610287610853366004611c04565b611694565b348015610863575f5ffd5b50610287610872366004611c1f565b6116d1565b61087f6117c1565b6108876117c1565b5f8381526007602052604090819020905163bcdf4ebb60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063bcdf4ebb906024015b608060405180830381865af41580156108e4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109089190611d44565b9250925050915091565b6040516379e9008760e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__906379e900879061094e9060019086908690600401611d9f565b5f6040518083038186803b158015610964575f5ffd5b505af4158015610976573d5f5f3e3d5ffd5b505050505050565b5f81815260076020526040808220905163418ec10160e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063418ec101906024015b602060405180830381865af41580156109da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109fe9190611dc1565b9392505050565b604051630bdc541160e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__90630bdc54119061094e9060019086908690600401611d9f565b60405163eb4de33760e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063eb4de337906044015b5f6040518083038186803b158015610a92575f5ffd5b505af4158015610aa4573d5f5f3e3d5ffd5b5050505050565b5f818152600760205260408082209051630fea54e160e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__90631fd4a9c2906024015b602060405180830381865af4158015610b07573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109fe9190611dd8565b60405163415a19c560e11b815273__$2da4c1bc7831bce59d8f8d9cf5a8504e33$__906382b4338a90610b6990600190879087908790600401611df3565b5f6040518083038186803b158015610b7f575f5ffd5b505af4158015610b91573d5f5f3e3d5ffd5b50505050505050565b5f81815260076020526040808220905163c2f8816b60e01b8152600481018290528291829182919073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c2f8816b90602401608060405180830381865af4158015610bfc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c209190611e27565b9450945094509450509193509193565b6040516360297df360e01b815260016004820152602481018290525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__906360297df390604401602060405180830381865af4158015610c87573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cab9190611dc1565b92915050565b6040516372cf9b4360e11b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063e59f36869061094e9060019086908690600401611d9f565b610cf56117c1565b610cfd6117c1565b5f8381526007602052604090819020905163640a694760e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c814d28e906024016108c9565b5f818152600760205260408082209051636b5c4f1d60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a906024016109bf565b610d90611746565b610d995f611772565b565b5f81815260076020526040808220905163c46dd9dd60e01b8152600481018290528291829182919073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c46dd9dd90602401608060405180830381865af4158015610dfd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c209190611e64565b6040516383e0fef560e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__906383e0fef590604401610a7c565b610e68611746565b6006805460ff19166001179055565b610e7f6117c1565b610e876117c1565b610e8f6117c1565b610e976117c1565b610e9f6117c1565b610ea76117c1565b5f8781526007602052604090819020905163b325312760e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063b32531279060240161018060405180830381865af4158015610f04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f289190611ea0565b949d939c50919a509850965090945092505050565b604051637a2654ed60e01b81526001600482015260248101849052604481018390526064810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__90637a2654ed90608401610b69565b60405163594db6e360e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063594db6e39061094e9060019086908690600401611d9f565b5f8181526007602052604080822090516312bb8c8160e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906312bb8c8190602401602060405180830381865af4158015611021573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109fe9190611f19565b61104d611746565b828181811461107d576040516355c5b3e360e11b8152600481019290925260248201526044015b60405180910390fd5b505f90505b83811015610aa45782828281811061109c5761109c611f37565b9050602002013560016004015f8787858181106110bb576110bb611f37565b90506020020160208101906110d09190611c04565b6001600160a01b0316815260208101919091526040015f2055600101611082565b6110f96117c1565b6111016117c1565b6111096117c1565b5f848152600760205260409081902090516364768a4f60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af4158015611165573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111899190611f4b565b935093509350509193909250565b61119f6117c1565b6111a76117c1565b5f83815260076020526040908190209051630c1f1c7360e31b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906360f8e398906024016108c9565b5f818152600760205260408082209051638970f8a560e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__90638970f8a590602401610aec565b60405163bb3d0f2b60e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063bb3d0f2b90604401610a7c565b5f81815260076020526040808220905163565aebdb60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063565aebdb90602401602060405180830381865af41580156112cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109fe9190611f8e565b6112f86117c1565b6113006117c1565b5f83815260076020526040908190209051636bedb2e760e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d7db65ce90602401608060405180830381865af415801561135c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109089190611fac565b60405163742fb50760e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063742fb5079061094e9060019086908690600401611d9f565b6113c46117c1565b6113cc6117c1565b5f8381526007602052604090819020905163c2c3f21f60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c2c3f21f906024016108c9565b60405163bd9d315760e01b815260016004820152602481018490526001600160a01b03831660448201526064810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063bd9d315790608401610b69565b61146f611746565b6006805460ff19169055565b604051631e28763960e11b81525f9073__$2da4c1bc7831bce59d8f8d9cf5a8504e33$__90633c50ec72906109bf9060019087908790600401611d9f565b84838181146114e4576040516355c5b3e360e11b815260048101929092526024820152604401611074565b5083905081818114611512576040516355c5b3e360e11b815260048101929092526024820152604401611074565b505f90505b85811015610b915773__$c617d6f30a3108b63ce4034547dfec5d71$__63bd9d3157600189898581811061154d5761154d611f37565b9050602002013588888681811061156657611566611f37565b905060200201602081019061157b9190611c04565b87878781811061158d5761158d611f37565b905060200201356040518563ffffffff1660e01b81526004016115d2949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b5f6040518083038186803b1580156115e8575f5ffd5b505af41580156115fa573d5f5f3e3d5ffd5b5050600190920191506115179050565b5f818152600760205260408082209051635c06efbf60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063b80ddf7e906024016109bf565b5f8181526007602052604080822090516377ffc62360e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906377ffc623906024016109bf565b61169c611746565b6001600160a01b0381166116c557604051631e4fbdf760e01b81525f6004820152602401611074565b6116ce81611772565b50565b604051600162804bef60e01b0319815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063ff7fb4119061171490600190889088908890889060040161201c565b5f6040518083038186803b15801561172a575f5ffd5b505af415801561173c573d5f5f3e3d5ffd5b5050505050505050565b5f546001600160a01b03163314610d995760405163118cdaa760e01b8152336004820152602401611074565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405180604001604052806002906020820280368337509192915050565b5f602082840312156117ef575f5ffd5b5035919050565b805f5b60028110156118215781516001600160a01b03168452602093840193909101906001016117f9565b50505050565b805f5b600281101561182157815184526020938401939091019060010161182a565b6080810161185782856117f6565b6109fe6040830184611827565b5f5f83601f840112611874575f5ffd5b50813567ffffffffffffffff81111561188b575f5ffd5b6020830191508360208285010111156118a2575f5ffd5b9250929050565b5f5f602083850312156118ba575f5ffd5b823567ffffffffffffffff8111156118d0575f5ffd5b6118dc85828601611864565b90969095509350505050565b6001600160a01b03811681146116ce575f5ffd5b5f5f5f6040848603121561190e575f5ffd5b8335611919816118e8565b9250602084013567ffffffffffffffff811115611934575f5ffd5b61194086828701611864565b9497909650939450505050565b610180810161195c82896117f6565b6119696040830188611827565b6119766080830187611827565b61198360c0830186611827565b611991610100830185611827565b61199f610140830184611827565b979650505050505050565b5f5f5f606084860312156119bc575f5ffd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52602160045260245ffd5b60208101600383106119fb576119fb6119d3565b91905290565b5f5f83601f840112611a11575f5ffd5b50813567ffffffffffffffff811115611a28575f5ffd5b6020830191508360208260051b85010111156118a2575f5ffd5b5f5f5f5f60408587031215611a55575f5ffd5b843567ffffffffffffffff811115611a6b575f5ffd5b611a7787828801611a01565b909550935050602085013567ffffffffffffffff811115611a96575f5ffd5b611aa287828801611a01565b95989497509550505050565b60c08101611abc82866117f6565b611ac96040830185611827565b611ad66080830184611827565b949350505050565b60208101600583106119fb576119fb6119d3565b60808101611b0082856117f6565b60408201835f5b6002811015611b26578151835260209283019290910190600101611b07565b5050509392505050565b5f5f5f60608486031215611b42575f5ffd5b833592506020840135611b54816118e8565b929592945050506040919091013590565b5f5f5f5f5f5f60608789031215611b7a575f5ffd5b863567ffffffffffffffff811115611b90575f5ffd5b611b9c89828a01611a01565b909750955050602087013567ffffffffffffffff811115611bbb575f5ffd5b611bc789828a01611a01565b909550935050604087013567ffffffffffffffff811115611be6575f5ffd5b611bf289828a01611a01565b979a9699509497509295939492505050565b5f60208284031215611c14575f5ffd5b81356109fe816118e8565b5f5f5f5f60608587031215611c32575f5ffd5b843593506020850135611c44816118e8565b9250604085013567ffffffffffffffff811115611c5f575f5ffd5b611aa287828801611864565b604051601f8201601f1916810167ffffffffffffffff81118282101715611ca057634e487b7160e01b5f52604160045260245ffd5b604052919050565b5f82601f830112611cb7575f5ffd5b611cc16040611c6b565b806040840185811115611cd2575f5ffd5b845b81811015611cf5578051611ce7816118e8565b845260209384019301611cd4565b509095945050505050565b5f82601f830112611d0f575f5ffd5b611d196040611c6b565b806040840185811115611d2a575f5ffd5b845b81811015611cf5578051845260209384019301611d2c565b5f5f60808385031215611d55575f5ffd5b611d5f8484611ca8565b9150611d6e8460408501611d00565b90509250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b838152604060208201525f611db8604083018486611d77565b95945050505050565b5f60208284031215611dd1575f5ffd5b5051919050565b5f60208284031215611de8575f5ffd5b81516109fe816118e8565b8481526001600160a01b03841660208201526060604082018190525f90611e1d9083018486611d77565b9695505050505050565b5f5f5f5f60808587031215611e3a575f5ffd5b8451602086015160408701519195509350611e54816118e8565b6060959095015193969295505050565b5f5f5f5f60808587031215611e77575f5ffd5b8451611e82816118e8565b60208601516040870151606090970151919890975090945092505050565b5f5f5f5f5f5f6101808789031215611eb6575f5ffd5b611ec08888611ca8565b9550611ecf8860408901611d00565b9450611ede8860808901611d00565b9350611eed8860c08901611d00565b9250611efd886101008901611d00565b9150611f0d886101408901611d00565b90509295509295509295565b5f60208284031215611f29575f5ffd5b8151600381106109fe575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f5f5f60c08486031215611f5d575f5ffd5b611f678585611ca8565b9250611f768560408601611d00565b9150611f858560808601611d00565b90509250925092565b5f60208284031215611f9e575f5ffd5b8151600581106109fe575f5ffd5b5f5f60808385031215611fbd575f5ffd5b611fc78484611ca8565b915083605f840112611fd7575f5ffd5b611fe16040611c6b565b806080850186811115611ff2575f5ffd5b604086015b8181101561200f578051845260209384019301611ff7565b5093969095509350505050565b85815284602082015260018060a01b0384166040820152608060608201525f61199f608083018486611d7756fea264697066735822122075305fd887422e28ac96fe0aeb44bacb2850242b47467200acfd1b496f86f56764736f6c634300081e0033", } // CelerLedgerABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/ledgerstruct/ledgerstruct.go b/chain/channel-eth-go/ledgerstruct/ledgerstruct.go index 718ae9a..2ad46cd 100644 --- a/chain/channel-eth-go/ledgerstruct/ledgerstruct.go +++ b/chain/channel-eth-go/ledgerstruct/ledgerstruct.go @@ -33,7 +33,7 @@ var ( // LedgerStructMetaData contains all meta data concerning the LedgerStruct contract. var LedgerStructMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220db6d3454a71180592c46d5afe53ad9100a932315688b847687e882c70081231964736f6c634300081e0033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220de4f8764c7c8c26e1293f122c85a4f010675f1d4a0f5f806119a3d061356b54464736f6c634300081e0033", } // LedgerStructABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/migrate/migrate.go b/chain/channel-eth-go/migrate/migrate.go index 6bfb58c..cea425e 100644 --- a/chain/channel-eth-go/migrate/migrate.go +++ b/chain/channel-eth-go/migrate/migrate.go @@ -32,8 +32,8 @@ var ( // LedgerMigrateMetaData contains all meta data concerning the LedgerMigrate contract. var LedgerMigrateMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"MigrateChannelFrom\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"oldLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelTo\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\",\"inputs\":[{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]", - Bin: "0x611450610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c80633c50ec721461004357806382b4338a14610074575b5f5ffd5b81801561004e575f5ffd5b5061006261005d3660046110e8565b610095565b60405190815260200160405180910390f35b81801561007f575f5ffd5b5061009361008e366004611147565b61038f565b005b5f5f6100d584848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506105a692505050565b90505f6100e4825f01516106bb565b80515f818152600689016020526040908190209083015192935090916001600383015460ff16600481111561011b5761011b61119f565b148061013f57506002600383015460ff16600481111561013d5761013d61119f565b145b610147575f5ffd5b845180516020918201209086015161016290849083906107b1565b6101aa5760405162461bcd60e51b815260206004820152601460248201527310da1958dac818dbcb5cda59dcc819985a5b195960621b60448201526064015b60405180910390fd5b60208501516001600160a01b031630146102065760405162461bcd60e51b815260206004820152601f60248201527f46726f6d206c65646765722061646472657373206973206e6f7420746869730060448201526064016101a1565b6001600160a01b038216331461026a5760405162461bcd60e51b815260206004820152602360248201527f546f206c65646765722061646472657373206973206e6f74206d73672e73656e6044820152623232b960e91b60648201526084016101a1565b84606001514211156102be5760405162461bcd60e51b815260206004820152601960248201527f506173736564206d6967726174696f6e20646561646c696e650000000000000060448201526064016101a1565b6102ca8a846004610876565b600383018054610100600160a81b0319166101006001600160a01b0385169081029190911790915560405185907fdefb8a94bbfc44ef5297b035407a7dd1314f369e39c3301f5b90f8810fb9fe4f905f90a360038a015460405163283226a360e21b8152600481018690526001600160a01b0384811660248301529091169063a0c89a8c906044015f604051808303815f87803b158015610369575f5ffd5b505af115801561037b573d5f5f3e3d5ffd5b5095985050505050505050505b9392505050565b60405163e0a515b760e01b815283905f906001600160a01b0383169063e0a515b7906103c190879087906004016111b3565b6020604051808303815f875af11580156103dd573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040191906111e1565b5f8181526006880160205260408120919250600382015460ff16600481111561042c5761042c61119f565b146104835760405162461bcd60e51b815260206004820152602160248201527f496d6d69677261746564206368616e6e656c20616c72656164792065786973746044820152607360f81b60648201526084016101a1565b6003870154604051632a5a97e560e21b81526004810184905230916001600160a01b03169063a96a5f9490602401602060405180830381865afa1580156104cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f091906111f8565b6001600160a01b0316146105465760405162461bcd60e51b815260206004820152601c60248201527f4f70657261746f7273686970206e6f74207472616e736665727265640000000060448201526064016101a1565b61055287826001610876565b61055d8184846109ad565b610568818484610a8f565b6040516001600160a01b0387169083907f141a72a1d915a7c4205104b6e564cc991aa827c5f2c672a5d6a1da8bef99d6eb905f90a350505050505050565b60408051808201909152606080825260208201525f6105d783604080518082019091525f8152602081019190915290565b90505f600284516105e89190611227565b67ffffffffffffffff81111561060057610600611246565b604051908082528060200260200182016040528015610629578160200160208202803683370190505b5090505f805b602084015151845110156106ad5761064684610c0e565b905080600a036106605761065984610c7d565b855261062f565b80601203610689575f61067285610c7d565b600584901b8501602001525060019091019061062f565b6106a88160071660058111156106a1576106a161119f565b8590610d20565b61062f565b508152602083015250919050565b604080516080810182525f808252602080830182905282840182905260608301829052835180850190945281845283018490529091905b602082015151825110156107aa5761070982610c0e565b905080600a036107235761071c82610e00565b83526106f2565b806012036107475761073482610e5d565b6001600160a01b031660208401526106f2565b80601a0361076b5761075882610e5d565b6001600160a01b031660408401526106f2565b806020036107865761077c82610c0e565b60608401526106f2565b6107a581600716600581111561079e5761079e61119f565b8390610d20565b6106f2565b5050919050565b5f81516002146107c257505f610388565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c849052603c812090805b6002811015610869576108288582815181106108115761081161125a565b602002602001015184610eb090919063ffffffff16565b915086600401816002811061083f5761083f61125a565b60080201546001600160a01b03838116911614610861575f9350505050610388565b6001016107f3565b5060019695505050505050565b8060048111156108885761088861119f565b600383015460ff1660048111156108a1576108a161119f565b036108ab57505050565b5f600383015460ff1660048111156108c5576108c561119f565b1461093057600382015460019084905f9060ff1660048111156108ea576108ea61119f565b81526020019081526020015f2054610902919061126e565b600383015484905f9060ff16600481111561091f5761091f61119f565b815260208101919091526040015f20555b825f8260048111156109445761094461119f565b81526020019081526020015f2054600161095e9190611281565b835f8360048111156109725761097261119f565b815260208101919091526040015f205560038201805482919060ff191660018360048111156109a3576109a361119f565b0217905550505050565b604051630bc2b0c160e21b8152600481018290525f906001600160a01b03841690632f0ac30490602401608060405180830381865afa1580156109f2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a169190611294565b6014880155600280880180546001600160a01b0390931661010002610100600160a81b031990931692909217909155600187019290925591508190811115610a6057610a6061119f565b60028086018054909160ff19909116906001908490811115610a8457610a8461119f565b021790555050505050565b5f5f5f5f5f5f876001600160a01b03166388f41465886040518263ffffffff1660e01b8152600401610ac391815260200190565b61018060405180830381865afa158015610adf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b03919061135d565b9550955095509550955095505f5f90505b6002811015610c02575f8a6004018260028110610b3357610b3361125a565b600802019050878260028110610b4b57610b4b61125a565b602002015181546001600160a01b0319166001600160a01b03909116178155868260028110610b7c57610b7c61125a565b60200201516001820155858260028110610b9857610b9861125a565b60200201518160020181905550848260028110610bb757610bb761125a565b60200201516003820155838260028110610bd357610bd361125a565b60200201516004820155828260028110610bef57610bef61125a565b6020020151600790910155600101610b14565b50505050505050505050565b602080820151825181515f938301845b600a81101561003f57828410610c32575f5ffd5b838201515f1a607f8116600783021b96909617956001909401936080811015610c745781600903610c695760028110610c69575f5ffd5b505050935250919050565b50600101610c1e565b60605f610c8983610c0e565b90505f81845f0151610c9b9190611281565b9050836020015151811115610cae575f5ffd5b8167ffffffffffffffff811115610cc757610cc7611246565b6040519080825280601f01601f191660200182016040528015610cf1576020820181803683370190505b5060208086015186519295509181860191908301015f5b85811015610c69578181015183820152602001610d08565b5f816005811115610d3357610d3361119f565b03610d4657610d4182610c0e565b505050565b6002816005811115610d5a57610d5a61119f565b03610d91575f610d6983610c0e565b905080835f01818151610d7c9190611281565b90525060208301515183511115610d41575f5ffd5b6001816005811115610da557610da561119f565b03610dd5576008825f01818151610dbc9190611281565b90525060208201515182511115610dd1575f5ffd5b5050565b6005816005811115610de957610de961119f565b0361003f576004825f01818151610dbc9190611281565b5f5f610e0b83610c0e565b905080602014610e19575f5ffd5b82516020808501515190610e2e908390611281565b1115610e38575f5ffd5b602080850151828101820151945090610e52908390611281565b909452509092915050565b5f5f610e6883610c0e565b905080601414610e76575f5ffd5b8251602084015151610e89826014611281565b1115610e93575f5ffd5b6020808501518281019091015160601c9350610e52826014611281565b5f5f5f5f610ebe8686610eda565b925092509250610ece8282610f23565b50909150505b92915050565b5f5f5f8351604103610f11576020840151604085015160608601515f1a610f0388828585610fdb565b955095509550505050610f1c565b505081515f91506002905b9250925092565b5f826003811115610f3657610f3661119f565b03610f3f575050565b6001826003811115610f5357610f5361119f565b03610f715760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610f8557610f8561119f565b03610fa65760405163fce698f760e01b8152600481018290526024016101a1565b6003826003811115610fba57610fba61119f565b03610dd1576040516335e2f38360e21b8152600481018290526024016101a1565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561101457505f91506003905082611099565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611065573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661109057505f925060019150829050611099565b92505f91508190505b9450945094915050565b5f5f83601f8401126110b3575f5ffd5b50813567ffffffffffffffff8111156110ca575f5ffd5b6020830191508360208285010111156110e1575f5ffd5b9250929050565b5f5f5f604084860312156110fa575f5ffd5b83359250602084013567ffffffffffffffff811115611117575f5ffd5b611123868287016110a3565b9497909650939450505050565b6001600160a01b0381168114611144575f5ffd5b50565b5f5f5f5f6060858703121561115a575f5ffd5b84359350602085013561116c81611130565b9250604085013567ffffffffffffffff811115611187575f5ffd5b611193878288016110a3565b95989497509550505050565b634e487b7160e01b5f52602160045260245ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f602082840312156111f1575f5ffd5b5051919050565b5f60208284031215611208575f5ffd5b815161038881611130565b634e487b7160e01b5f52601160045260245ffd5b5f8261124157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b81810381811115610ed457610ed4611213565b80820180821115610ed457610ed4611213565b5f5f5f5f608085870312156112a7575f5ffd5b84516020860151604087015191955093506112c181611130565b6060959095015193969295505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561130657634e487b7160e01b5f52604160045260245ffd5b604052919050565b5f82601f83011261131d575f5ffd5b61132760406112d1565b806040840185811115611338575f5ffd5b845b8181101561135257805184526020938401930161133a565b509095945050505050565b5f5f5f5f5f5f6101808789031215611373575f5ffd5b87601f880112611381575f5ffd5b61138b60406112d1565b80604089018a81111561139c575f5ffd5b895b818110156113bf5780516113b181611130565b84526020938401930161139e565b508198506113cd8b8261130e565b97505050506113df886080890161130e565b93506113ee8860c0890161130e565b92506113fe88610100890161130e565b915061140e88610140890161130e565b9050929550929550929556fea2646970667358221220ba4d6529f010af5f2262a14b411f35a97c0fde0967941ed871cb1decaa2c50eb64736f6c634300081e0033", + ABI: "[{\"type\":\"event\",\"name\":\"MigrateChannelFrom\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"oldLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelTo\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ChannelAlreadyMigrated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChannelNotOperableOrSettling\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DeadlinePassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\",\"inputs\":[{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FromLedgerAddressMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCoSignatures\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorshipNotTransferred\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ToLedgerAddressMismatch\",\"inputs\":[]}]", + Bin: "0x61133e610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c80633c50ec721461004357806382b4338a14610074575b5f5ffd5b81801561004e575f5ffd5b5061006261005d366004610fd6565b610095565b60405190815260200160405180910390f35b81801561007f575f5ffd5b5061009361008e366004611035565b6102e0565b005b5f5f6100d584848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061048f92505050565b90505f6100e4825f01516105a4565b80515f818152600689016020526040908190209083015192935090916001600383015460ff16600481111561011b5761011b61108d565b148061013f57506002600383015460ff16600481111561013d5761013d61108d565b145b61015c576040516334b8cc2360e11b815260040160405180910390fd5b8451805160209182012090860151610177908490839061069a565b6101945760405163b089d34760e01b815260040160405180910390fd5b60208501516001600160a01b031630146101c15760405163712974f160e11b815260040160405180910390fd5b6001600160a01b03821633146101ea57604051632a78050b60e11b815260040160405180910390fd5b846060015142111561020f5760405163387b2e5560e11b815260040160405180910390fd5b61021b8a84600461075f565b600383018054610100600160a81b0319166101006001600160a01b0385169081029190911790915560405185907fdefb8a94bbfc44ef5297b035407a7dd1314f369e39c3301f5b90f8810fb9fe4f905f90a360038a015460405163283226a360e21b8152600481018690526001600160a01b0384811660248301529091169063a0c89a8c906044015f604051808303815f87803b1580156102ba575f5ffd5b505af11580156102cc573d5f5f3e3d5ffd5b5095985050505050505050505b9392505050565b60405163e0a515b760e01b815283905f906001600160a01b0383169063e0a515b79061031290879087906004016110a1565b6020604051808303815f875af115801561032e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035291906110cf565b5f8181526006880160205260408120919250600382015460ff16600481111561037d5761037d61108d565b1461039b5760405163099a70bf60e21b815260040160405180910390fd5b600387015460405163aee2e98960e01b81526004810184905230916001600160a01b03169063aee2e98990602401602060405180830381865afa1580156103e4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040891906110e6565b6001600160a01b03161461042f5760405163ec86390b60e01b815260040160405180910390fd5b61043b8782600161075f565b610446818484610896565b610451818484610978565b6040516001600160a01b0387169083907f141a72a1d915a7c4205104b6e564cc991aa827c5f2c672a5d6a1da8bef99d6eb905f90a350505050505050565b60408051808201909152606080825260208201525f6104c083604080518082019091525f8152602081019190915290565b90505f600284516104d19190611115565b67ffffffffffffffff8111156104e9576104e9611134565b604051908082528060200260200182016040528015610512578160200160208202803683370190505b5090505f805b602084015151845110156105965761052f84610af7565b905080600a036105495761054284610b66565b8552610518565b80601203610572575f61055b85610b66565b600584901b85016020015250600190910190610518565b61059181600716600581111561058a5761058a61108d565b8590610c09565b610518565b508152602083015250919050565b604080516080810182525f808252602080830182905282840182905260608301829052835180850190945281845283018490529091905b60208201515182511015610693576105f282610af7565b905080600a0361060c5761060582610ce9565b83526105db565b806012036106305761061d82610d46565b6001600160a01b031660208401526105db565b80601a036106545761064182610d46565b6001600160a01b031660408401526105db565b8060200361066f5761066582610af7565b60608401526105db565b61068e8160071660058111156106875761068761108d565b8390610c09565b6105db565b5050919050565b5f81516002146106ab57505f6102d9565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c849052603c812090805b6002811015610752576107118582815181106106fa576106fa611148565b602002602001015184610d9990919063ffffffff16565b915086600401816002811061072857610728611148565b60080201546001600160a01b0383811691161461074a575f93505050506102d9565b6001016106dc565b5060019695505050505050565b8060048111156107715761077161108d565b600383015460ff16600481111561078a5761078a61108d565b0361079457505050565b5f600383015460ff1660048111156107ae576107ae61108d565b1461081957600382015460019084905f9060ff1660048111156107d3576107d361108d565b81526020019081526020015f20546107eb919061115c565b600383015484905f9060ff1660048111156108085761080861108d565b815260208101919091526040015f20555b825f82600481111561082d5761082d61108d565b81526020019081526020015f20546001610847919061116f565b835f83600481111561085b5761085b61108d565b815260208101919091526040015f205560038201805482919060ff1916600183600481111561088c5761088c61108d565b0217905550505050565b604051630bc2b0c160e21b8152600481018290525f906001600160a01b03841690632f0ac30490602401608060405180830381865afa1580156108db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ff9190611182565b6014880155600280880180546001600160a01b0390931661010002610100600160a81b0319909316929092179091556001870192909255915081908111156109495761094961108d565b60028086018054909160ff1990911690600190849081111561096d5761096d61108d565b021790555050505050565b5f5f5f5f5f5f876001600160a01b03166388f41465886040518263ffffffff1660e01b81526004016109ac91815260200190565b61018060405180830381865afa1580156109c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ec919061124b565b9550955095509550955095505f5f90505b6002811015610aeb575f8a6004018260028110610a1c57610a1c611148565b600802019050878260028110610a3457610a34611148565b602002015181546001600160a01b0319166001600160a01b03909116178155868260028110610a6557610a65611148565b60200201516001820155858260028110610a8157610a81611148565b60200201518160020181905550848260028110610aa057610aa0611148565b60200201516003820155838260028110610abc57610abc611148565b60200201516004820155828260028110610ad857610ad8611148565b60200201516007909101556001016109fd565b50505050505050505050565b602080820151825181515f938301845b600a81101561003f57828410610b1b575f5ffd5b838201515f1a607f8116600783021b96909617956001909401936080811015610b5d5781600903610b525760028110610b52575f5ffd5b505050935250919050565b50600101610b07565b60605f610b7283610af7565b90505f81845f0151610b84919061116f565b9050836020015151811115610b97575f5ffd5b8167ffffffffffffffff811115610bb057610bb0611134565b6040519080825280601f01601f191660200182016040528015610bda576020820181803683370190505b5060208086015186519295509181860191908301015f5b85811015610b52578181015183820152602001610bf1565b5f816005811115610c1c57610c1c61108d565b03610c2f57610c2a82610af7565b505050565b6002816005811115610c4357610c4361108d565b03610c7a575f610c5283610af7565b905080835f01818151610c65919061116f565b90525060208301515183511115610c2a575f5ffd5b6001816005811115610c8e57610c8e61108d565b03610cbe576008825f01818151610ca5919061116f565b90525060208201515182511115610cba575f5ffd5b5050565b6005816005811115610cd257610cd261108d565b0361003f576004825f01818151610ca5919061116f565b5f5f610cf483610af7565b905080602014610d02575f5ffd5b82516020808501515190610d1790839061116f565b1115610d21575f5ffd5b602080850151828101820151945090610d3b90839061116f565b909452509092915050565b5f5f610d5183610af7565b905080601414610d5f575f5ffd5b8251602084015151610d7282601461116f565b1115610d7c575f5ffd5b6020808501518281019091015160601c9350610d3b82601461116f565b5f5f5f5f610da78686610dc3565b925092509250610db78282610e0c565b50909150505b92915050565b5f5f5f8351604103610dfa576020840151604085015160608601515f1a610dec88828585610ec9565b955095509550505050610e05565b505081515f91506002905b9250925092565b5f826003811115610e1f57610e1f61108d565b03610e28575050565b6001826003811115610e3c57610e3c61108d565b03610e5a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e6e57610e6e61108d565b03610e945760405163fce698f760e01b8152600481018290526024015b60405180910390fd5b6003826003811115610ea857610ea861108d565b03610cba576040516335e2f38360e21b815260048101829052602401610e8b565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610f0257505f91506003905082610f87565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610f53573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610f7e57505f925060019150829050610f87565b92505f91508190505b9450945094915050565b5f5f83601f840112610fa1575f5ffd5b50813567ffffffffffffffff811115610fb8575f5ffd5b602083019150836020828501011115610fcf575f5ffd5b9250929050565b5f5f5f60408486031215610fe8575f5ffd5b83359250602084013567ffffffffffffffff811115611005575f5ffd5b61101186828701610f91565b9497909650939450505050565b6001600160a01b0381168114611032575f5ffd5b50565b5f5f5f5f60608587031215611048575f5ffd5b84359350602085013561105a8161101e565b9250604085013567ffffffffffffffff811115611075575f5ffd5b61108187828801610f91565b95989497509550505050565b634e487b7160e01b5f52602160045260245ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f602082840312156110df575f5ffd5b5051919050565b5f602082840312156110f6575f5ffd5b81516102d98161101e565b634e487b7160e01b5f52601160045260245ffd5b5f8261112f57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b81810381811115610dbd57610dbd611101565b80820180821115610dbd57610dbd611101565b5f5f5f5f60808587031215611195575f5ffd5b84516020860151604087015191955093506111af8161101e565b6060959095015193969295505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156111f457634e487b7160e01b5f52604160045260245ffd5b604052919050565b5f82601f83011261120b575f5ffd5b61121560406111bf565b806040840185811115611226575f5ffd5b845b81811015611240578051845260209384019301611228565b509095945050505050565b5f5f5f5f5f5f6101808789031215611261575f5ffd5b87601f88011261126f575f5ffd5b61127960406111bf565b80604089018a81111561128a575f5ffd5b895b818110156112ad57805161129f8161101e565b84526020938401930161128c565b508198506112bb8b826111fc565b97505050506112cd88608089016111fc565b93506112dc8860c089016111fc565b92506112ec8861010089016111fc565b91506112fc8861014089016111fc565b9050929550929550929556fea26469706673582212208d0ddabee6b965d186d9c075cff0b9aada9a433035366e29327e63a71096fc7964736f6c634300081e0033", } // LedgerMigrateABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/nativewrap/nativewrap.go b/chain/channel-eth-go/nativewrap/nativewrap.go index 0b988b0..a9eef28 100644 --- a/chain/channel-eth-go/nativewrap/nativewrap.go +++ b/chain/channel-eth-go/nativewrap/nativewrap.go @@ -33,7 +33,7 @@ var ( // NativeWrapMetaData contains all meta data concerning the NativeWrap contract. var NativeWrapMetaData = &bind.MetaData{ ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6080604052348015600e575f5ffd5b5061077e8061001c5f395ff3fe60806040526004361061009d575f3560e01c8063313ce56711610062578063313ce567146101d857806370a08231146101fe57806395d89b4114610232578063a9059cbb14610262578063d0e30db014610281578063dd62ed3e14610289575f5ffd5b806306fdde03146100ef578063095ea7b31461014d57806318160ddd1461017c57806323b872dd146101985780632e1a7d4d146101b7575f5ffd5b366100eb57335f90815260208190526040812080543492906100c09084906105e8565b909155505060405134815233905f905f5160206107295f395f51905f529060200160405180910390a3005b5f5ffd5b3480156100fa575f5ffd5b506101376040518060400160405280601a81526020017f57726170706564204e6174697665202874657374206d6f636b2900000000000081525081565b60405161014491906105fb565b60405180910390f35b348015610158575f5ffd5b5061016c61016736600461064b565b6102cd565b6040519015158152602001610144565b348015610187575f5ffd5b50475b604051908152602001610144565b3480156101a3575f5ffd5b5061016c6101b2366004610673565b610339565b3480156101c2575f5ffd5b506101d66101d13660046106ad565b610420565b005b3480156101e3575f5ffd5b506101ec601281565b60405160ff9091168152602001610144565b348015610209575f5ffd5b5061018a6102183660046106c4565b6001600160a01b03165f9081526020819052604090205490565b34801561023d575f5ffd5b5061013760405180604001604052806005815260200164574d4f434b60d81b81525081565b34801561026d575f5ffd5b5061016c61027c36600461064b565b610510565b6101d661058b565b348015610294575f5ffd5b5061018a6102a33660046106e4565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b335f8181526001602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103279086815260200190565b60405180910390a35060015b92915050565b5f336001600160a01b03851614610382576001600160a01b0384165f9081526001602090815260408083203384529091528120805484929061037c908490610715565b90915550505b6001600160a01b0384165f90815260208190526040812080548492906103a9908490610715565b90915550506001600160a01b0383165f90815260208190526040812080548492906103d59084906105e8565b92505081905550826001600160a01b0316846001600160a01b03165f5160206107295f395f51905f528460405161040e91815260200190565b60405180910390a35060019392505050565b335f908152602081905260408120805483929061043e908490610715565b90915550506040518181525f9033905f5160206107295f395f51905f529060200160405180910390a36040515f90339083908381818185875af1925050503d805f81146104a6576040519150601f19603f3d011682016040523d82523d5f602084013e6104ab565b606091505b505090508061050c5760405162461bcd60e51b8152602060048201526024808201527f4e6174697665577261704d6f636b3a2077697468647261772073656e642066616044820152631a5b195960e21b606482015260840160405180910390fd5b5050565b335f90815260208190526040812080548391908390610530908490610715565b90915550506001600160a01b0383165f908152602081905260408120805484929061055c9084906105e8565b90915550506040518281526001600160a01b0384169033905f5160206107295f395f51905f5290602001610327565b335f90815260208190526040812080543492906105a99084906105e8565b909155505060405134815233905f905f5160206107295f395f51905f529060200160405180910390a3565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610333576103336105d4565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610646575f5ffd5b919050565b5f5f6040838503121561065c575f5ffd5b61066583610630565b946020939093013593505050565b5f5f5f60608486031215610685575f5ffd5b61068e84610630565b925061069c60208501610630565b929592945050506040919091013590565b5f602082840312156106bd575f5ffd5b5035919050565b5f602082840312156106d4575f5ffd5b6106dd82610630565b9392505050565b5f5f604083850312156106f5575f5ffd5b6106fe83610630565b915061070c60208401610630565b90509250929050565b81810381811115610333576103336105d456feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a2907983600fcfb3e737f4aae62d5dcb3efaf390955514d8cfe0430b9e047f3264736f6c634300081e0033", + Bin: "0x6080604052348015600e575f5ffd5b5061077e8061001c5f395ff3fe60806040526004361061009d575f3560e01c8063313ce56711610062578063313ce567146101d857806370a08231146101fe57806395d89b4114610232578063a9059cbb14610262578063d0e30db014610281578063dd62ed3e14610289575f5ffd5b806306fdde03146100ef578063095ea7b31461014d57806318160ddd1461017c57806323b872dd146101985780632e1a7d4d146101b7575f5ffd5b366100eb57335f90815260208190526040812080543492906100c09084906105e8565b909155505060405134815233905f905f5160206107295f395f51905f529060200160405180910390a3005b5f5ffd5b3480156100fa575f5ffd5b506101376040518060400160405280601a81526020017f57726170706564204e6174697665202874657374206d6f636b2900000000000081525081565b60405161014491906105fb565b60405180910390f35b348015610158575f5ffd5b5061016c61016736600461064b565b6102cd565b6040519015158152602001610144565b348015610187575f5ffd5b50475b604051908152602001610144565b3480156101a3575f5ffd5b5061016c6101b2366004610673565b610339565b3480156101c2575f5ffd5b506101d66101d13660046106ad565b610420565b005b3480156101e3575f5ffd5b506101ec601281565b60405160ff9091168152602001610144565b348015610209575f5ffd5b5061018a6102183660046106c4565b6001600160a01b03165f9081526020819052604090205490565b34801561023d575f5ffd5b5061013760405180604001604052806005815260200164574d4f434b60d81b81525081565b34801561026d575f5ffd5b5061016c61027c36600461064b565b610510565b6101d661058b565b348015610294575f5ffd5b5061018a6102a33660046106e4565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b335f8181526001602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103279086815260200190565b60405180910390a35060015b92915050565b5f336001600160a01b03851614610382576001600160a01b0384165f9081526001602090815260408083203384529091528120805484929061037c908490610715565b90915550505b6001600160a01b0384165f90815260208190526040812080548492906103a9908490610715565b90915550506001600160a01b0383165f90815260208190526040812080548492906103d59084906105e8565b92505081905550826001600160a01b0316846001600160a01b03165f5160206107295f395f51905f528460405161040e91815260200190565b60405180910390a35060019392505050565b335f908152602081905260408120805483929061043e908490610715565b90915550506040518181525f9033905f5160206107295f395f51905f529060200160405180910390a36040515f90339083908381818185875af1925050503d805f81146104a6576040519150601f19603f3d011682016040523d82523d5f602084013e6104ab565b606091505b505090508061050c5760405162461bcd60e51b8152602060048201526024808201527f4e6174697665577261704d6f636b3a2077697468647261772073656e642066616044820152631a5b195960e21b606482015260840160405180910390fd5b5050565b335f90815260208190526040812080548391908390610530908490610715565b90915550506001600160a01b0383165f908152602081905260408120805484929061055c9084906105e8565b90915550506040518281526001600160a01b0384169033905f5160206107295f395f51905f5290602001610327565b335f90815260208190526040812080543492906105a99084906105e8565b909155505060405134815233905f905f5160206107295f395f51905f529060200160405180910390a3565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610333576103336105d4565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610646575f5ffd5b919050565b5f5f6040838503121561065c575f5ffd5b61066583610630565b946020939093013593505050565b5f5f5f60608486031215610685575f5ffd5b61068e84610630565b925061069c60208501610630565b929592945050506040919091013590565b5f602082840312156106bd575f5ffd5b5035919050565b5f602082840312156106d4575f5ffd5b6106dd82610630565b9392505050565b5f5f604083850312156106f5575f5ffd5b6106fe83610630565b915061070c60208401610630565b90509250929050565b81810381811115610333576103336105d456feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122040a27026703ffec277312dc7e6203627a3306b9cf085370f7d11f4e0a5be402364736f6c634300081e0033", } // NativeWrapABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/operation/operation.go b/chain/channel-eth-go/operation/operation.go index b3b7b83..3f3915d 100644 --- a/chain/channel-eth-go/operation/operation.go +++ b/chain/channel-eth-go/operation/operation.go @@ -32,8 +32,8 @@ var ( // LedgerOperationMetaData contains all meta data concerning the LedgerOperation contract. var LedgerOperationMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"ClearOnePay\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerFrom\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettleFail\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"seqNum\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OpenChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenType\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"initialDeposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SnapshotStates\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"VetoWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\",\"inputs\":[{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x61510f610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100fb575f3560e01c806383e0fef51161009e578063bd9d31571161006e578063bd9d315714610272578063e59f368614610291578063eb4de337146102b0578063ff7fb411146102cf575f5ffd5b806383e0fef5146101f8578063871e7eeb14610217578063bb3d0f2b14610235578063bd199ca514610254575f5ffd5b806360297df3116100d957806360297df31461017a578063742fb5071461019b57806379e90087146101ba5780637a2654ed146101d9575f5ffd5b80630bdc5411146100ff57806344e58d5114610120578063594db6e31461015b575b5f5ffd5b81801561010a575f5ffd5b5061011e610119366004614aac565b6102ee565b005b61013e61012e366004614af3565b600201546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b818015610166575f5ffd5b5061011e610175366004614aac565b610841565b61018d610188366004614b0a565b610d39565b604051908152602001610152565b8180156101a6575f5ffd5b5061011e6101b5366004614aac565b610d4e565b8180156101c5575f5ffd5b5061011e6101d4366004614aac565b610fb2565b8180156101e4575f5ffd5b5061011e6101f3366004614b2a565b6113d1565b818015610203575f5ffd5b5061011e610212366004614b0a565b6114f4565b61013e610225366004614af3565b600101546001600160a01b031690565b818015610240575f5ffd5b5061011e61024f366004614b0a565b611820565b61013e610262366004614af3565b600301546001600160a01b031690565b81801561027d575f5ffd5b5061011e61028c366004614b70565b611a0f565b81801561029c575f5ffd5b5061011e6102ab366004614aac565b611c73565b8180156102bb575f5ffd5b5061011e6102ca366004614b0a565b611f41565b8180156102da575f5ffd5b5061011e6102e9366004614bac565b612086565b5f61032d83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506121b392505050565b805180519192505f9061035890828461034857610348614c10565b60200260200101515f01516122a4565b90505f5b828110156108385781515f818152600689016020526040902061037f81336123d9565b15610419576001600382015460ff16600481111561039f5761039f614c24565b14806103c357506002600382015460ff1660048111156103c1576103c1614c24565b145b6104145760405162461bcd60e51b815260206004820152601960248201527f50656572206368616e6e656c20737461747573206572726f720000000000000060448201526064015b60405180910390fd5b610481565b6002600382015460ff16600481111561043457610434614c24565b146104815760405162461bcd60e51b815260206004820152601c60248201527f4e6f6e70656572206368616e6e656c20737461747573206572726f7200000000604482015260640161040b565b8054158061048f5750805442105b6104db5760405162461bcd60e51b815260206004820152601c60248201527f536574746c652068617320616c72656164792066696e616c697a656400000000604482015260640161040b565b5f865f015184815181106104f1576104f1614c10565b60200260200101515f01518051906020012090505f875f0151858151811061051b5761051b614c10565b60200260200101516020015190505f866040015111156106955761054083838361240f565b61055c5760405162461bcd60e51b815260040161040b90614c38565b5f6105748760200151856124d490919063ffffffff16565b90505f84600401826002811061058c5761058c614c10565b600802016003019050600160048111156105a8576105a8614c24565b600386015460ff1660048111156105c1576105c1614c24565b036105f0578054604089015110156105eb5760405162461bcd60e51b815260040161040b90614c66565b61063c565b6002600386015460ff16600481111561060b5761060b614c24565b036106345780546040890151116105eb5760405162461bcd60e51b815260040161040b90614c66565b61063c614c8c565b6040880151815560608801516020908101518101516001830155608089015101516002820181905560a089015160038301551561067e5760c088015160048201555b61068e8d87848b6080015161254d565b505061076b565b85604001515f03610763578254156106e55760405162461bcd60e51b8152602060048201526013602482015272696e74656e64536574746c65206265666f726560681b604482015260640161040b565b8051600114801561071f575061071f82825f8151811061070757610707614c10565b60200260200101518561279c9092919063ffffffff16565b61075e5760405162461bcd60e51b815260206004820152601060248201526f10da1958dac81cda59c819985a5b195960821b604482015260640161040b565b61076b565b61076b614c8c565b610776600188614cb4565b850361078b576107868b856127eb565b610828565b610796600188614cb4565b8510156108205787516107be906107ae876001614cc7565b8151811061034857610348614c10565b805190965084111561080d5760405162461bcd60e51b81526020600482015260186024820152774e6f6e2d617363656e64696e67206368616e6e656c49647360401b604482015260640161040b565b8551841015610786576107868b856127eb565b610828614c8c565b50506001909201915061035c9050565b50505050505050565b5f61088083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061285c92505050565b90505f61088f825f0151612969565b805160200151519091506002146108d75760405162461bcd60e51b815260206004820152600c60248201526b0aee4dedcce40d8cadccee8d60a31b604482015260640161040b565b80602001514211156109225760405162461bcd60e51b815260206004820152601460248201527313dc195b88191958591b1a5b99481c185cdcd95960621b604482015260640161040b565b468160800151146109755760405162461bcd60e51b815260206004820152601760248201527f57726f6e6720636861696e20696420666f72206f70656e000000000000000000604482015260640161040b565b60a08101516001600160a01b031630146109c95760405162461bcd60e51b81526020600482015260156024820152742bb937b733903632b233b2b9103337b91037b832b760591b604482015260640161040b565b8051516040805180820190915282516020015180515f9291829184906109f1576109f1614c10565b6020026020010151602001518152602001845f015160200151600181518110610a1c57610a1c614c10565b60200260200101516020015181525090505f6040518060400160405280855f0151602001515f81518110610a5257610a52614c10565b60200260200101515f01516001600160a01b03166001600160a01b03168152602001855f015160200151600181518110610a8e57610a8e614c10565b602090810291909101810151516001600160a01b0390811690925282015182519293508116911610610b025760405162461bcd60e51b815260206004820152601c60248201527f5065657220616464727320617265206e6f7420617363656e64696e6700000000604482015260640161040b565b8451805160209091012060038901545f908190610b2b908c906001600160a01b03168686612ac3565b9150915086604001518160010181905550610b488b826001612c69565b610b5186612da0565b805160028084018054909291839160ff1916906001908490811115610b7857610b78614c24565b02179055506020918201518154610100600160a81b0319166101006001600160a01b03928316021790915585516004840180549183166001600160a01b03199283161790558751600585015586830151600c85018054909216921691909117905585810151600d830155880151610bf2908290859061240f565b610c0e5760405162461bcd60e51b815260040161040b90614c38565b85602001516001600160a01b0316827f9d9f66221370175606b4085f28a419b201c9b6dafd9e0c4520e5bf69ea3e166d885f01516002811115610c5357610c53614c24565b8789604051610c6493929190614d27565b60405180910390a3602085015185515f91610c7e91614cc7565b9050805f03610cb3573415610ca55760405162461bcd60e51b815260040161040b90614d50565b505050505050505050505050565b60058c015460ff1615610d26576020808801516001600160a01b03165f90815260048e019091526040902054811115610d265760405162461bcd60e51b815260206004820152601560248201527410985b185b98d948195e18d959591cc81b1a5b5a5d605a1b604482015260640161040b565b610ca58c848789858c8e60600151612e39565b5f818152602083905260409020545b92915050565b5f610d8d83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061314092505050565b90505f610d9c825f015161323f565b805160808201515f828152600689016020526040902092935090916001600382015460ff166004811115610dd257610dd2614c24565b14610def5760405162461bcd60e51b815260040161040b90614d7c565b8451805160209182012090860151610e0a908390839061240f565b610e265760405162461bcd60e51b815260040161040b90614c38565b81601401548560200151610e3a9190614cb4565b600114610e595760405162461bcd60e51b815260040161040b90614c66565b8460600151421115610ead5760405162461bcd60e51b815260206004820152601860248201527f576974686472617720646561646c696e65207061737365640000000000000000604482015260640161040b565b60408501518051602080880151601486015590910151610ece84838361331f565b6040516364768a4f60e11b8152600481018590525f90819073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af4158015610f20573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f449190614e3d565b925092505086846001600160a01b0316897f1b87d077d9b706e42883b454b67730633fd6b4b29f9a9cf5f57c278c54f51c8f8686868f60200151604051610f8e9493929190614ec4565b60405180910390a4610fa38d8986868b61337a565b50505050505050505050505050565b5f610ff183838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061357092505050565b90505f611000825f015161366f565b80515f8181526006880160205260409020919250906001600382015460ff16600481111561103057611030614c24565b148061105457506002600382015460ff16600481111561105257611052614c24565b145b6110705760405162461bcd60e51b815260040161040b90614d7c565b835180516020918201209085015161108b908390839061240f565b6110a75760405162461bcd60e51b815260040161040b90614c38565b5f6040518060400160405280846004015f600281106110c8576110c8614c10565b60080201546001600160a01b039081168252600c860154166020918201526007850154908701519192501080156111065750600f8301546020860151115b6111225760405162461bcd60e51b815260040161040b90614c66565b428560600151101561116f5760405162461bcd60e51b815260206004820152601660248201527514d95d1d1b1948191958591b1a5b99481c185cdcd95960521b604482015260640161040b565b805f60200201516001600160a01b031685604001515f8151811061119557611195614c10565b60200260200101515f01516001600160a01b03161480156111ef575080600160200201516001600160a01b031685604001516001815181106111d9576111d9614c10565b60200260200101515f01516001600160a01b0316145b61123b5760405162461bcd60e51b815260206004820152601860248201527f536574746c65206163636f756e7473206d69736d617463680000000000000000604482015260640161040b565b5f604051806040016040528087604001515f8151811061125d5761125d614c10565b6020026020010151602001518152602001876040015160018151811061128557611285614c10565b60209081029190910181015101519052604051636b5c4f1d60e11b81526004810186905290915073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a90602401602060405180830381865af41580156112e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130a9190614ef4565b6020820151825161131b9190614cc7565b1461135f5760405162461bcd60e51b8152602060048201526014602482015273084c2d8c2dcc6ca40e6eada40dad2e6dac2e8c6d60631b604482015260640161040b565b61136b8a856003612c69565b847f6c666557dc97fd52cd2d9d6dd6d109e501ffdb831abeecf13aafeeaf762ee1fd8260405161139b9190614f0b565b60405180910390a260028401546113c5908b90879061010090046001600160a01b031685856137be565b50505050505050505050565b5f838152600685016020526040902060158101336001600384015460ff16600481111561140057611400614c24565b1461141d5760405162461bcd60e51b815260040161040b90614d7c565b81546001600160a01b0316156114755760405162461bcd60e51b815260206004820152601e60248201527f50656e64696e6720776974686472617720696e74656e74206578697374730000604482015260640161040b565b61147f83826123d9565b611487575f5ffd5b81546001600160a01b0319166001600160a01b0382169081178355600183018690554260028401556003830185905560405186815287907f97883669625c4ff7f5432b4ca33fe75fb5fee985deb196a967e5758f846170fe9060200160405180910390a350505050505050565b5f81815260068301602052604090206001600382015460ff16600481111561151e5761151e614c24565b1461153b5760405162461bcd60e51b815260040161040b90614d7c565b60158101546001600160a01b03166115955760405162461bcd60e51b815260206004820152601a60248201527f4e6f2070656e64696e6720776974686472617720696e74656e74000000000000604482015260640161040b565b600181015460178201546115a99190614cc7565b4210156115ee5760405162461bcd60e51b8152602060048201526013602482015272111a5cdc1d5d19481b9bdd081d1a5b595bdd5d606a1b604482015260640161040b565b6015810180546016830180546018850180546001600160a01b031985169095555f92839055601786018390558290556001600160a01b03909216929061163485856124d4565b90505f611642826001614cb4565b9050600486015f81846002811061165b5761165b614c10565b600802016003016004015482856002811061167857611678614c10565b600802016003016001015483866002811061169557611695614c10565b60080201600201548486600281106116af576116af614c10565b60080201600301600101548588600281106116cc576116cc614c10565b60080201600101546116de9190614cc7565b6116e89190614cb4565b6116f29190614cb4565b6116fc9190614cb4565b9050808611156117465760405162461bcd60e51b8152602060048201526015602482015274115e18d95959081dda5d1a191c985dc81b1a5b5a5d605a1b604482015260640161040b565b61175188888861331f565b6040516364768a4f60e11b8152600481018990525f90819073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af41580156117a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c79190614e3d565b925092505086896001600160a01b03168c7fe8110b4ee08638c48f6a4d5f726927df4e541893efa9d2c2c47a6b889041826e8b868660405161180b93929190614f19565b60405180910390a4610ca58c8c8b8b8b61337a565b5f818152600683016020526040902060048101426002600384015460ff16600481111561184f5761184f614c24565b1461186c5760405162461bcd60e51b815260040161040b90614d7c565b82548110156118bd5760405162461bcd60e51b815260206004820152601760248201527f536574746c65206973206e6f742066696e616c697a6564000000000000000000604482015260640161040b565b600582015415806118d15750600682015481115b80156118ec5750600d82015415806118ec5750600e82015481115b6119385760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e747320617265206e6f742066696e616c697a6564000000000000604482015260640161040b565b5f5f61194385613899565b9150915081611989576119568786613aa7565b60405186907fa6549eb18490d42e7ec93f42115d1ee11b706d04077be9597034dd73ec8bcb36905f90a250505050505050565b61199587866003612c69565b857f728ddd8c5acda5947c34db8d759c66ae70884f526ff9b93637d351b012ef3206826040516119c59190614f0b565b60405180910390a260028501546040805180820190915285546001600160a01b039081168252600887015481166020830152610838928a928a9261010090920490911690856137be565b34611a25858585611a208587614cc7565b613b26565b5f8481526006860160205260409020600160028083015460ff1690811115611a4f57611a4f614c24565b03611b98578115611ab95760038601546040516342ef5fbb60e01b8152600481018790526001600160a01b03909116906342ef5fbb9084906024015f604051808303818588803b158015611aa1575f5ffd5b505af1158015611ab3573d5f5f3e3d5ffd5b50505050505b8215611b93576001860154611ad9906001600160a01b0316333086613d80565b6001860154604051632e1a7d4d60e01b8152600481018590526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b158015611b1e575f5ffd5b505af1158015611b30573d5f5f3e3d5ffd5b5050505060038601546040516342ef5fbb60e01b8152600481018790526001600160a01b03909116906342ef5fbb9085906024015f604051808303818588803b158015611b7b575f5ffd5b505af1158015611b8d573d5f5f3e3d5ffd5b50505050505b611c6b565b60028181015460ff1681811115611bb157611bb1614c24565b03611c63578115611bd45760405162461bcd60e51b815260040161040b90614d50565b600281015461010090046001600160a01b0316611bf381333087613d80565b6003870154611c0f906001600160a01b03838116911686613ded565b600387015460405163030422ed60e61b8152600481018890526001600160a01b038381166024830152604482018790529091169063c108bb40906064015f604051808303815f87803b158015611b7b575f5ffd5b611c6b614c8c565b505050505050565b5f611cb283838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506121b392505050565b805180519192505f90611ccd90828461034857610348614c10565b90505f5b828110156108385781515f81815260068901602052604090206001600382015460ff166004811115611d0557611d05614c24565b14611d225760405162461bcd60e51b815260040161040b90614d7c565b5f865f01518481518110611d3857611d38614c10565b60200260200101515f01518051906020012090505f875f01518581518110611d6257611d62614c10565b6020026020010151602001519050611d8582828561240f9092919063ffffffff16565b611da15760405162461bcd60e51b815260040161040b90614c38565b5f611db98760200151856124d490919063ffffffff16565b90505f846004018260028110611dd157611dd1614c10565b600802016003019050805f0154886040015111611e005760405162461bcd60e51b815260040161040b90614c66565b604088015181556060880151602090810151015160018083019190915560c08901516004830155611e31908a614cb4565b8703611e7c57857fd0793cc4198bf052a6d91a9a1273c4af39f02a91b0e19029477511c278c5b271611e6287613e7c565b604051611e6f9190614f0b565b60405180910390a2611f2f565b611e8760018a614cb4565b871015611f27578951611e9f906107ae896001614cc7565b8051909850861115611eee5760405162461bcd60e51b81526020600482015260186024820152774e6f6e2d617363656e64696e67206368616e6e656c49647360401b604482015260640161040b565b8751861015611f2257857fd0793cc4198bf052a6d91a9a1273c4af39f02a91b0e19029477511c278c5b271611e6287613e7c565b611f2f565b611f2f614c8c565b505060019094019350611cd192505050565b5f81815260068301602052604090206001600382015460ff166004811115611f6b57611f6b614c24565b14611f885760405162461bcd60e51b815260040161040b90614d7c565b60158101546001600160a01b0316611fe25760405162461bcd60e51b815260206004820152601a60248201527f4e6f2070656e64696e6720776974686472617720696e74656e74000000000000604482015260640161040b565b611fec81336123d9565b6120315760405162461bcd60e51b815260206004820152601660248201527536b9b39739b2b73232b91034b9903737ba103832b2b960511b604482015260640161040b565b6015810180546001600160a01b03191690555f60168201819055601782018190556018820181905560405183917f9a8a5493b616f074b3f754b5fd66049c8e7980f01547289e5e31808485c6002c91a2505050565b5f84815260068601602052604090206002600382015460ff1660048111156120b0576120b0614c24565b146120cd5760405162461bcd60e51b815260040161040b90614d7c565b5f6120d882866124d4565b90505f84846040516120eb929190614f2d565b604051809103902090505f83600401836002811061210b5761210b614c10565b6008020160030190508181600201541461215c5760405162461bcd60e51b8152602060048201526012602482015271098d2e6e840d0c2e6d040dad2e6dac2e8c6d60731b604482015260640161040b565b5f61219b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250613ea492505050565b6020810151600284015590506113c58a8a868461254d565b60408051602080820183526060825282518084019093525f80845290830184905283519192916121e590600290614f3c565b6001600160401b038111156121fc576121fc614daa565b604051908082528060200260200182016040528015612225578160200160208202803683370190505b5090505f805b602084015151845110156122995761224284613fab565b905080600a03612275575f61225e6122598661401a565b6140bc565b600584901b8501602001525060019091019061222b565b61229481600716600581111561228d5761228d614c24565b85906141bb565b61222b565b508152825250919050565b6122ac61497c565b604080518082019091525f808252602082018490525b602082015151825110156123d2576122d982613fab565b905080600a036122f3576122ec8261429b565b83526122c2565b8060120361231757612304826142f8565b6001600160a01b031660208401526122c2565b806018036123325761232882613fab565b60408401526122c2565b806022036123555761234b6123468361401a565b61434b565b60608401526122c2565b80602a036123785761236e6123698361401a565b613ea4565b60808401526122c2565b806030036123935761238982613fab565b60a08401526122c2565b80603a036123ae576123a482614406565b60c08401526122c2565b6123cd8160071660058111156123c6576123c6614c24565b83906141bb565b6122c2565b5050919050565b60048201545f906001600160a01b03838116911614806124085750600c8301546001600160a01b038381169116145b9392505050565b5f815160021461242057505f612408565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c849052603c812090805b60028110156124c75761248685828151811061246f5761246f614c10565b60200260200101518461445c90919063ffffffff16565b915086600401816002811061249d5761249d614c10565b60080201546001600160a01b038381169116146124bf575f9350505050612408565b600101612451565b5060019695505050505050565b60048201545f906001600160a01b03908116908316036124f557505f610d48565b600c8301546001600160a01b039081169083160361251557506001610d48565b60405162461bcd60e51b815260206004820152600d60248201526c2737b732bc34b9ba103832b2b960991b604482015260640161040b565b5f838152600685016020526040812060028087015484519293926001600160a01b0390911691637cac39cf919060048601908890811061258f5761258f614c10565b60080201600301600301546040518363ffffffff1660e01b81526004016125b7929190614f5b565b5f60405180830381865afa1580156125d1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526125f89190810190614fa7565b90505f805b82518110156126ca5782818151811061261857612618614c10565b60200260200101518261262b9190614cc7565b915083600401866002811061264257612642614c10565b6008020154855180516001600160a01b03909216918390811061266757612667614c10565b6020026020010151887f33252d4bc5cee2ad248475e8c39239a79dc64b2691c9ca1a63ff9af0c75b87768685815181106126a3576126a3614c10565b60200260200101516040516126ba91815260200190565b60405180910390a46001016125fd565b50808360040186600281106126e1576126e1614c10565b60080201600301600101546126f69190614cc7565b83600401866002811061270b5761270b614c10565b60080201600401556020840151612745575f83600401866002811061273257612732614c10565b6008020160030160040181905550610838565b8083600401866002811061275b5761275b614c10565b60080201600301600401546127709190614cb4565b83600401866002811061278557612785614c10565b600802016003016004018190555050505050505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c839052603c812081906127d6908461445c565b90506127e285826123d9565b95945050505050565b5f818152600683016020526040902060018101546128099042614cc7565b815561281783826002612c69565b817f296143e7e25aa055fbb871702776a67da540876e2be721d5c38ba23c97c90d6461284283613e7c565b60405161284f9190614f0b565b60405180910390a2505050565b60408051808201909152606080825260208201525f61288d83604080518082019091525f8152602081019190915290565b90505f6002845161289e9190614f3c565b6001600160401b038111156128b5576128b5614daa565b6040519080825280602002602001820160405280156128de578160200160208202803683370190505b5090505f805b6020840151518451101561295b576128fb84613fab565b905080600a036129155761290e8461401a565b85526128e4565b8060120361293e575f6129278561401a565b600584901b850160200152506001909101906128e4565b61295681600716600581111561228d5761228d614c24565b6128e4565b508152602083015250919050565b6129c76040805161014081019091525f610100820181815261012083019190915260c08201908152606060e0830152819081526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681525090565b604080518082019091525f808252602082018490525b602082015151825110156123d2576129f482613fab565b905080600a03612a1657612a0f612a0a8361401a565b614484565b83526129dd565b80601003612a3157612a2782613fab565b60208401526129dd565b80601803612a4c57612a4282613fab565b60408401526129dd565b80602003612a6757612a5d82613fab565b60608401526129dd565b80602803612a8257612a7882613fab565b60808401526129dd565b80603203612aa657612a93826142f8565b6001600160a01b031660a08401526129dd565b612abe8160071660058111156123c6576123c6614c24565b6129dd565b6040805160028082526060820183525f92839283929091602083019080368337505086518251929350918391505f90612afe57612afe614c10565b6001600160a01b0392909216602092830291909101820152850151815182906001908110612b2e57612b2e614c10565b6001600160a01b039283166020918202929092010152604051630d63a1fd60e01b81525f91881690630d63a1fd90612b6e90859030908a90600401615051565b6020604051808303815f875af1158015612b8a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bae9190614ef4565b905080612bf05760405162461bcd60e51b815260206004820152601060248201526f06368616e6e656c4964206765747320360841b604482015260640161040b565b5f818152600689016020526040812090600382015460ff166004811115612c1957612c19614c24565b14612c5b5760405162461bcd60e51b815260206004820152601260248201527113d8d8dd5c1a59590818da185b9b995b125960721b604482015260640161040b565b909890975095505050505050565b806004811115612c7b57612c7b614c24565b600383015460ff166004811115612c9457612c94614c24565b03612c9e57505050565b5f600383015460ff166004811115612cb857612cb8614c24565b14612d2357600382015460019084905f9060ff166004811115612cdd57612cdd614c24565b81526020019081526020015f2054612cf59190614cb4565b600383015484905f9060ff166004811115612d1257612d12614c24565b815260208101919091526040015f20555b825f826004811115612d3757612d37614c24565b81526020019081526020015f20546001612d519190614cc7565b835f836004811115612d6557612d65614c24565b815260208101919091526040015f205560038201805482919060ff19166001836004811115612d9657612d96614c24565b0217905550505050565b604080518082019091525f8082526020820152600182516002811115612dc857612dc8614c24565b03612de85760208201516001600160a01b031615612de4575f5ffd5b5090565b600282516002811115612dfd57612dfd614c24565b03612e315760208201516001600160a01b0316612e18575f5ffd5b5f82602001516001600160a01b03163b11612de4575f5ffd5b612de4614c8c565b600182516002811115612e4e57612e4e614c24565b03612ffb57838160028110612e6557612e65614c10565b60200201513414612ead5760405162461bcd60e51b81526020600482015260126024820152710dae6ce5cecc2d8eaca40dad2e6dac2e8c6d60731b604482015260640161040b565b5f612eb9826001614cb4565b90505f858260028110612ece57612ece614c10565b60200201511115612f9757612f21868260028110612eee57612eee614c10565b602002015130878460028110612f0657612f06614c10565b602002015160018c01546001600160a01b0316929190613d80565b60018801546001600160a01b0316632e1a7d4d868360028110612f4657612f46614c10565b60200201516040518263ffffffff1660e01b8152600401612f6991815260200190565b5f604051808303815f87803b158015612f80575f5ffd5b505af1158015612f92573d5f5f3e3d5ffd5b505050505b60038801546040516342ef5fbb60e01b8152600481018990526001600160a01b03909116906342ef5fbb9086906024015f604051808303818588803b158015612fde575f5ffd5b505af1158015612ff0573d5f5f3e3d5ffd5b505050505050610838565b60028251600281111561301057613010614c24565b036131385734156130335760405162461bcd60e51b815260040161040b90614d50565b60208201515f5b60028110156130ab5785816002811061305557613055614c10565b6020020151156130a3576130a387826002811061307457613074614c10565b60200201513088846002811061308c5761308c614c10565b60200201516001600160a01b038616929190613d80565b60010161303a565b5060038801546130c8906001600160a01b03838116911686613ded565b600388015460405163030422ed60e61b8152600481018990526001600160a01b038381166024830152604482018790529091169063c108bb40906064015f604051808303815f87803b15801561311c575f5ffd5b505af115801561312e573d5f5f3e3d5ffd5b5050505050610838565b610838614c8c565b60408051808201909152606080825260208201525f61317183604080518082019091525f8152602081019190915290565b90505f600284516131829190614f3c565b6001600160401b0381111561319957613199614daa565b6040519080825280602002602001820160405280156131c2578160200160208202803683370190505b5090505f805b6020840151518451101561295b576131df84613fab565b905080600a036131f9576131f28461401a565b85526131c8565b80601203613222575f61320b8561401a565b600584901b850160200152506001909101906131c8565b61323a81600716600581111561228d5761228d614c24565b6131c8565b613247614a0f565b604080518082019091525f808252602082018490525b602082015151825110156123d25761327482613fab565b905080600a0361328e576132878261429b565b835261325d565b806010036132a95761329f82613fab565b602084015261325d565b80601a036132cc576132c26132bd8361401a565b61458e565b604084015261325d565b806020036132e7576132dd82613fab565b606084015261325d565b80602a03613302576132f88261429b565b608084015261325d565b61331a8160071660058111156123c6576123c6614c24565b61325d565b5f61332a84846124d4565b90508184600401826002811061334257613342614c10565b60080201600201546133549190614cc7565b84600401826002811061336957613369614c10565b600802016002018190555050505050565b8115613569575f848152600686016020526040902081613414576003860154600282015460405163470660bb60e11b8152600481018890526001600160a01b0361010090920482166024820152868216604482015260648101869052911690638e0cc176906084015f604051808303815f87803b1580156133f9575f5ffd5b505af115801561340b573d5f5f3e3d5ffd5b50505050611c6b565b5f828152600687016020526040902060028082015460ff169081111561343c5761343c614c24565b60028084015460ff169081111561345557613455614c24565b148015613480575060028181015490830154610100918290046001600160a01b039081169290910416145b6134d85760405162461bcd60e51b815260206004820152602360248201527f546f6b656e206d69736d61746368206f6620726563697069656e74206368616e6044820152621b995b60ea1b606482015260840161040b565b6134e487848787613b26565b6003870154600283015460405163405d4a9760e11b815260048101899052602481018690526001600160a01b03610100909204821660448201528782166064820152608481018790529116906380ba952e9060a4015f604051808303815f87803b158015613550575f5ffd5b505af1158015613562573d5f5f3e3d5ffd5b5050505050505b5050505050565b60408051808201909152606080825260208201525f6135a183604080518082019091525f8152602081019190915290565b90505f600284516135b29190614f3c565b6001600160401b038111156135c9576135c9614daa565b6040519080825280602002602001820160405280156135f2578160200160208202803683370190505b5090505f805b6020840151518451101561295b5761360f84613fab565b905080600a03613629576136228461401a565b85526135f8565b80601203613652575f61363b8561401a565b600584901b850160200152506001909101906135f8565b61366a81600716600581111561228d5761228d614c24565b6135f8565b61369760405180608001604052805f81526020015f8152602001606081526020015f81525090565b604080518082019091525f8082526020820184905283516136ba90600290614f3c565b6001600160401b038111156136d1576136d1614daa565b6040519080825280602002602001820160405280156136fa578160200160208202803683370190505b5090505f805b602084015151845110156137b05761371784613fab565b905080600a036137315761372a8461429b565b8552613700565b8060100361374c5761374284613fab565b6020860152613700565b80601a03613778575f6137616132bd8661401a565b600584901b85016020015250600190910190613700565b806020036137935761378984613fab565b6060860152613700565b6137ab81600716600581111561228d5761228d614c24565b613700565b508152604083015250919050565b5f5b6002811015611c6b578181600281106137db576137db614c10565b6020020151156138915760038601546001600160a01b0316638e0cc176868686856002811061380c5761380c614c10565b602002015186866002811061382357613823614c10565b60200201516040516001600160e01b031960e087901b16815260048101949094526001600160a01b0392831660248501529116604483015260648201526084015f604051808303815f87803b15801561387a575f5ffd5b505af115801561388c573d5f5f3e3d5ffd5b505050505b6001016137c0565b5f6138a2614a4a565b604080518082019091525f9060048501600283835b8282101561394757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016138b7565b5050505090505f60405180604001604052808360016002811061396c5761396c614c10565b60200201516060015160200151845f6002811061398b5761398b614c10565b60200201516020015161399e9190614cc7565b81528351606001516020908101518186015182015191909201916139c191614cc7565b905290505f5b6002811015613a9a575f8382600281106139e3576139e3614c10565b6020020151604001518483600281106139fe576139fe614c10565b60200201516060015160200151613a159190614cc7565b905080838360028110613a2a57613a2a614c10565b60200201511015613a58575f60405180604001604052805f81526020015f8152509550955050505050915091565b80838360028110613a6b57613a6b614c10565b6020020151613a7a9190614cb4565b838360028110613a8c57613a8c614c10565b6020020152506001016139c7565b5060019590945092505050565b5f8155613ab682826001612c69565b5f600782018190556008820181905560098201819055600a8201819055600b8201819055600f8201819055601082018190556011820181905560128201819055601382018190556015820180546001600160a01b0319169055601682018190556017820181905560189091015550565b5f83815260068501602052604090206001600382015460ff166004811115613b5057613b50614c24565b14613b6d5760405162461bcd60e51b815260040161040b90614d7c565b5f613b7882856124d4565b600587015490915060ff1615613c6e57600282015461010090046001600160a01b03165f9081526004878101602052604091829020549151636b5c4f1d60e11b815290810184905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a90602401602060405180830381865af4158015613bfa573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c1e9190614ef4565b613c289085614cc7565b1115613c6e5760405162461bcd60e51b815260206004820152601560248201527410985b185b98d948195e18d959591cc81b1a5b5a5d605a1b604482015260640161040b565b82826004018260028110613c8457613c84614c10565b6008020160010154613c969190614cc7565b826004018260028110613cab57613cab614c10565b60080201600101819055505f5f5f8473__$13d4168a6482a4756bee5acfadcccc5f1f$__63c8ed149e90916040518263ffffffff1660e01b8152600401613cf491815260200190565b60c060405180830381865af4158015613d0f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d339190614e3d565b925092509250877fb63f5dc096f516663ffb5ef2b611f0e2acca8617a868c2a3653cba5e3ed0e92c848484604051613d6d939291906150b1565b60405180910390a2505050505050505050565b6040516001600160a01b038481166024830152838116604483015260648201839052613de79186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614629565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613e3e8482614695565b613de7576040516001600160a01b0384811660248301525f6044830152613e7291869182169063095ea7b390606401613db5565b613de78482614629565b613e84614a4a565b506040805180820190915260078201548152600f90910154602082015290565b604080518082018252606081525f6020808301829052835180850190945281845283018490528351919291613edb90602290614f3c565b6001600160401b03811115613ef257613ef2614daa565b604051908082528060200260200182016040528015613f1b578160200160208202803683370190505b5090505f805b6020840151518451101561229957613f3884613fab565b905080600a03613f7357613f4b8461429b565b838381518110613f5d57613f5d614c10565b6020908102919091010152600190910190613f21565b80601203613f8e57613f848461429b565b6020860152613f21565b613fa681600716600581111561228d5761228d614c24565b613f21565b602080820151825181515f938301845b600a8110156100fb57828410613fcf575f5ffd5b838201515f1a607f8116600783021b9690961795600190940193608081101561401157816009036140065760028110614006575f5ffd5b505050935250919050565b50600101613fbb565b60605f61402683613fab565b90505f81845f01516140389190614cc7565b905083602001515181111561404b575f5ffd5b816001600160401b0381111561406357614063614daa565b6040519080825280601f01601f19166020018201604052801561408d576020820181803683370190505b5060208086015186519295509181860191908301015f5b858110156140065781810151838201526020016140a4565b60408051808201909152606080825260208201525f6140ed83604080518082019091525f8152602081019190915290565b90505f600284516140fe9190614f3c565b6001600160401b0381111561411557614115614daa565b60405190808252806020026020018201604052801561413e578160200160208202803683370190505b5090505f805b6020840151518451101561295b5761415b84613fab565b905080600a036141755761416e8461401a565b8552614144565b8060120361419e575f6141878561401a565b600584901b85016020015250600190910190614144565b6141b681600716600581111561228d5761228d614c24565b614144565b5f8160058111156141ce576141ce614c24565b036141e1576141dc82613fab565b505050565b60028160058111156141f5576141f5614c24565b0361422c575f61420483613fab565b905080835f018181516142179190614cc7565b905250602083015151835111156141dc575f5ffd5b600181600581111561424057614240614c24565b03614270576008825f018181516142579190614cc7565b9052506020820151518251111561426c575f5ffd5b5050565b600581600581111561428457614284614c24565b036100fb576004825f018181516142579190614cc7565b5f5f6142a683613fab565b9050806020146142b4575f5ffd5b825160208085015151906142c9908390614cc7565b11156142d3575f5ffd5b6020808501518281018201519450906142ed908390614cc7565b909452509092915050565b5f5f61430383613fab565b905080601414614311575f5ffd5b8251602084015151614324826014614cc7565b111561432e575f5ffd5b6020808501518281019091015160601c93506142ed826014614cc7565b604080516080810182525f81830181815260608301829052825282518084018452818152602080820183905280840191909152835180850190945281845283018490529091905b602082015151825110156123d2576143a982613fab565b905080600a036143cb576143c46143bf8361401a565b6146de565b8352614392565b806012036143e9576143df6132bd8361401a565b6020840152614392565b6144018160071660058111156123c6576123c6614c24565b614392565b5f5f61441183613fab565b90506020811115614420575f5ffd5b82515f61442d8383614cc7565b9050846020015151811115614440575f5ffd5b602080860151929092018201519452036008029190911c919050565b5f5f5f5f61446a86866147b3565b92509250925061447a82826147fc565b5090949350505050565b604080516080810182525f91810182815260608083019390935281526020810191909152604080518082019091525f8082526020820184905283516144cb90600290614f3c565b6001600160401b038111156144e2576144e2614daa565b60405190808252806020026020018201604052801561450b578160200160208202803683370190505b5090505f805b6020840151518451101561295b5761452884613fab565b905080600a036145455761453e6143bf8561401a565b8552614511565b80601203614571575f61455a6132bd8661401a565b600584901b85016020015250600190910190614511565b61458981600716600581111561228d5761228d614c24565b614511565b6040805180820182525f8082526020808301829052835180850190945281845283018490529091905b602082015151825110156123d2576145ce82613fab565b905080600a036145f1576145e1826142f8565b6001600160a01b031683526145b7565b8060120361460c5761460282614406565b60208401526145b7565b6146248160071660058111156123c6576123c6614c24565b6145b7565b5f5f60205f8451602086015f885af180614648576040513d5f823e3d81fd5b50505f513d9150811561465f57806001141561466c565b6001600160a01b0384163b155b15613de757604051635274afe760e01b81526001600160a01b038516600482015260240161040b565b5f5f5f5f60205f8651602088015f8a5af192503d91505f5190508280156146d4575081156146c657806001146146d4565b5f866001600160a01b03163b115b9695505050505050565b604080518082019091525f8082526020820152604080518082019091525f80825260208201849052505f5b602082015151825110156123d25761472082613fab565b9050806008036147725761473382613fab565b600281111561474457614744614c24565b8390600281111561475757614757614c24565b9081600281111561476a5761476a614c24565b905250614709565b8060120361479657614783826142f8565b6001600160a01b03166020840152614709565b6147ae8160071660058111156123c6576123c6614c24565b614709565b5f5f5f83516041036147ea576020840151604085015160608601515f1a6147dc888285856148b4565b9550955095505050506147f5565b505081515f91506002905b9250925092565b5f82600381111561480f5761480f614c24565b03614818575050565b600182600381111561482c5761482c614c24565b0361484a5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561485e5761485e614c24565b0361487f5760405163fce698f760e01b81526004810182905260240161040b565b600382600381111561489357614893614c24565b0361426c576040516335e2f38360e21b81526004810182905260240161040b565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156148ed57505f91506003905082614972565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561493e573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661496957505f925060019150829050614972565b92505f91508190505b9450945094915050565b6040518060e001604052805f81526020015f6001600160a01b031681526020015f81526020016149dc604080516080810182525f818301818152606083018290528252825180840190935280835260208381019190915290919082015290565b81526020016149fd6040518060400160405280606081526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052805f81526020015f81526020016149fd60405180604001604052805f6001600160a01b031681526020015f81525090565b60405180604001604052806002906020820280368337509192915050565b5f5f83601f840112614a78575f5ffd5b5081356001600160401b03811115614a8e575f5ffd5b602083019150836020828501011115614aa5575f5ffd5b9250929050565b5f5f5f60408486031215614abe575f5ffd5b8335925060208401356001600160401b03811115614ada575f5ffd5b614ae686828701614a68565b9497909650939450505050565b5f60208284031215614b03575f5ffd5b5035919050565b5f5f60408385031215614b1b575f5ffd5b50508035926020909101359150565b5f5f5f5f60808587031215614b3d575f5ffd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0381168114614b6d575f5ffd5b50565b5f5f5f5f60808587031215614b83575f5ffd5b84359350602085013592506040850135614b9c81614b59565b9396929550929360600135925050565b5f5f5f5f5f60808688031215614bc0575f5ffd5b85359450602086013593506040860135614bd981614b59565b925060608601356001600160401b03811115614bf3575f5ffd5b614bff88828901614a68565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b60208082526014908201527310da1958dac818dbcb5cda59dcc819985a5b195960621b604082015260600190565b6020808252600c908201526b39b2b8a73ab69032b93937b960a11b604082015260600190565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d4857610d48614ca0565b80820180821115610d4857610d48614ca0565b805f5b6002811015613de75781516001600160a01b0316845260209384019390910190600101614cdd565b805f5b6002811015613de7578151845260209384019390910190600101614d08565b83815260a08101614d3b6020830185614cda565b614d486060830184614d05565b949350505050565b60208082526012908201527106d73672e76616c7565206973206e6f7420360741b604082015260600190565b60208082526014908201527321b430b73732b61039ba30ba3ab99032b93937b960611b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715614de657614de6614daa565b604052919050565b5f82601f830112614dfd575f5ffd5b614e076040614dbe565b806040840185811115614e18575f5ffd5b845b81811015614e32578051845260209384019301614e1a565b509095945050505050565b5f5f5f60c08486031215614e4f575f5ffd5b84601f850112614e5d575f5ffd5b614e676040614dbe565b806040860187811115614e78575f5ffd5b865b81811015614e9b578051614e8d81614b59565b845260209384019301614e7a565b50819550614ea98882614dee565b9450505050614ebb8560808601614dee565b90509250925092565b84815260c08101614ed86020830186614d05565b614ee56060830185614d05565b8260a083015295945050505050565b5f60208284031215614f04575f5ffd5b5051919050565b60408101610d488284614d05565b83815260a08101614d3b6020830185614d05565b818382375f9101908152919050565b5f82614f5657634e487b7160e01b5f52601260045260245ffd5b500490565b604080825283519082018190525f9060208501906060840190835b81811015614f94578351835260209384019390920191600101614f76565b5050602093909301939093525092915050565b5f60208284031215614fb7575f5ffd5b81516001600160401b03811115614fcc575f5ffd5b8201601f81018413614fdc575f5ffd5b80516001600160401b03811115614ff557614ff5614daa565b8060051b61500560208201614dbe565b91825260208184018101929081019087841115615020575f5ffd5b6020850194505b8385101561504657845180835260209586019590935090910190615027565b979650505050505050565b606080825284519082018190525f9060208601906080840190835b818110156150935783516001600160a01b031683526020938401939092019160010161506c565b50506001600160a01b03959095166020840152505060400152919050565b60c081016150bf8286614cda565b6150cc6040830185614d05565b614d486080830184614d0556fea26469706673582212205148089183887df1f28fdce35d48ef7407797d31b6d7f782e0df997c70ee97be64736f6c634300081e0033", + ABI: "[{\"type\":\"event\",\"name\":\"ClearOnePay\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerFrom\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettleFail\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"seqNum\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OpenChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenType\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"initialDeposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SnapshotStates\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"VetoWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BalanceLimitExceeded\",\"inputs\":[{\"name\":\"attempted\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ChainIdMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ChannelIdOccupied\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChannelNotOperable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChannelNotOperableOrSettling\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChannelNotSettling\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ConfirmSettleTooEarly\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DeadlinePassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DisputeNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\",\"inputs\":[{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"IntendSettleWindowClosed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCoSignatures\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTokenAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LedgerAddressMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MsgValueMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"MsgValueMustBeZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoWithdrawIntent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NonAscendingChannelIds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotPeer\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayListHashMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PaymentNotFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PeersNotAscending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RecipientChannelTokenMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"SeqNumOutOfOrder\",\"inputs\":[{\"name\":\"onchain\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proposed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"SettleBalanceSumMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SettlePeersMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SettlementAlreadyActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TokenNotContract\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawIntentExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawLimitExceeded\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"WrongPeerCount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroChannelId\",\"inputs\":[]}]", + Bin: "0x614c5c610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100bc575f3560e01c806383e0fef51161007957806383e0fef514610182578063bb3d0f2b146101a1578063bd9d3157146101c0578063e59f3686146101df578063eb4de337146101fe578063ff7fb4111461021d575f5ffd5b80630bdc5411146100c0578063594db6e3146100e157806360297df314610100578063742fb5071461012557806379e90087146101445780637a2654ed14610163575b5f5ffd5b8180156100cb575f5ffd5b506100df6100da3660046146be565b61023c565b005b8180156100ec575f5ffd5b506100df6100fb3660046146be565b6106ab565b61011361010e366004614705565b610b07565b60405190815260200160405180910390f35b818015610130575f5ffd5b506100df61013f3660046146be565b610b1c565b81801561014f575f5ffd5b506100df61015e3660046146be565b610d6b565b81801561016e575f5ffd5b506100df61017d366004614725565b61112d565b81801561018d575f5ffd5b506100df61019c366004614705565b611237565b8180156101ac575f5ffd5b506100df6101bb366004614705565b6114f7565b8180156101cb575f5ffd5b506100df6101da36600461476b565b611689565b8180156101ea575f5ffd5b506100df6101f93660046146be565b6118ee565b818015610209575f5ffd5b506100df610218366004614705565b611ba1565b818015610228575f5ffd5b506100df6102373660046147a7565b611c90565b5f61027b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611d9a92505050565b805180519192505f906102a69082846102965761029661480b565b60200260200101515f0151611e8b565b90505f5b828110156106a25781515f81815260068901602052604090206102cd8133611fc0565b15610333576001600382015460ff1660048111156102ed576102ed61481f565b148061031157506002600382015460ff16600481111561030f5761030f61481f565b145b61032e576040516334b8cc2360e11b815260040160405180910390fd5b61036c565b6002600382015460ff16600481111561034e5761034e61481f565b1461036c5760405163326c5a6d60e01b815260040160405180910390fd5b8054158061037a5750805442105b610397576040516310344f3160e21b815260040160405180910390fd5b5f865f015184815181106103ad576103ad61480b565b60200260200101515f01518051906020012090505f875f015185815181106103d7576103d761480b565b60200260200101516020015190505f86604001511115610571576103fc838383611ff6565b6104195760405163b089d34760e01b815260040160405180910390fd5b5f6104318760200151856120bb90919063ffffffff16565b90505f8460040182600281106104495761044961480b565b600802016003019050600160048111156104655761046561481f565b600386015460ff16600481111561047e5761047e61481f565b036104c05780546040890151818110156104b9576040516331c0b51760e11b8152600481019290925260248201526044015b60405180910390fd5b5050610518565b6002600386015460ff1660048111156104db576104db61481f565b0361051057805460408901518181116104b9576040516331c0b51760e11b8152600481019290925260248201526044016104b0565b610518614833565b6040880151815560608801516020908101518101516001830155608089015101516002820181905560a089015160038301551561055a5760c088015160048201555b61056a8d87848b60800151612115565b5050610600565b85604001515f036105f85782541561059c576040516360620ccd60e11b815260040160405180910390fd5b805160011480156105d657506105d682825f815181106105be576105be61480b565b6020026020010151856123649092919063ffffffff16565b6105f357604051638baa579f60e01b815260040160405180910390fd5b610600565b610600614833565b61060b60018861485b565b85036106205761061b8b856123b3565b610692565b61062b60018861485b565b85101561068a5787516106539061064387600161486e565b815181106102965761029661480b565b805190965084111561067757604051626ffafb60e21b815260040160405180910390fd5b855184101561061b5761061b8b856123b3565b610692614833565b5050600190920191506102aa9050565b50505050505050565b5f6106ea83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061242492505050565b90505f6106f9825f0151612531565b80516020015151909150600214610723576040516301e57b6b60e71b815260040160405180910390fd5b80602001514211156107485760405163387b2e5560e11b815260040160405180910390fd5b6080810151469080821461077857604051630432cec160e31b8152600481019290925260248201526044016104b0565b505060a08101516001600160a01b031630146107a75760405163668dbc2f60e11b815260040160405180910390fd5b8051516040805180820190915282516020015180515f9291829184906107cf576107cf61480b565b6020026020010151602001518152602001845f0151602001516001815181106107fa576107fa61480b565b60200260200101516020015181525090505f6040518060400160405280855f0151602001515f815181106108305761083061480b565b60200260200101515f01516001600160a01b03166001600160a01b03168152602001855f01516020015160018151811061086c5761086c61480b565b602090810291909101810151516001600160a01b03908116909252820151825192935081169116106108b157604051632ba0bb9d60e01b815260040160405180910390fd5b8451805160209091012060038901545f9081906108da908c906001600160a01b0316868661268b565b91509150866040015181600101819055506108f78b8260016127eb565b61090086612922565b805160028084018054909291839160ff19169060019084908111156109275761092761481f565b02179055506020918201518154610100600160a81b0319166101006001600160a01b03928316021790915585516004840180549183166001600160a01b03199283161790558751600585015586830151600c85018054909216921691909117905585810151600d8301558801516109a19082908590611ff6565b6109be5760405163b089d34760e01b815260040160405180910390fd5b85602001516001600160a01b0316827f9d9f66221370175606b4085f28a419b201c9b6dafd9e0c4520e5bf69ea3e166d885f01516002811115610a0357610a0361481f565b8789604051610a14939291906148ce565b60405180910390a3602085015185515f91610a2e9161486e565b9050805f03610a64573415610a565760405163429465b160e01b815260040160405180910390fd5b505050505050505050505050565b60058c015460ff1615610af4578b6004015f88602001516001600160a01b03166001600160a01b031681526020019081526020015f2054811115818d6004015f8a602001516001600160a01b03166001600160a01b031681526020019081526020015f20549091610af157604051631c71225560e31b8152600481019290925260248201526044016104b0565b50505b610a568c848789858c8e606001516129fa565b5f818152602083905260409020545b92915050565b5f610b5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612d0492505050565b90505f610b6a825f0151612e03565b805160808201515f828152600689016020526040902092935090916001600382015460ff166004811115610ba057610ba061481f565b14610bbe5760405163407a5cc360e11b815260040160405180910390fd5b8451805160209182012090860151610bd99083908390611ff6565b610bf65760405163b089d34760e01b815260040160405180910390fd5b81601401548560200151610c0a919061485b565b600114826014015486602001519091610c3f576040516331c0b51760e11b8152600481019290925260248201526044016104b0565b50508460600151421115610c665760405163387b2e5560e11b815260040160405180910390fd5b60408501518051602080880151601486015590910151610c87848383612ee3565b6040516364768a4f60e11b8152600481018590525f90819073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af4158015610cd9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfd919061498a565b925092505086846001600160a01b0316897f1b87d077d9b706e42883b454b67730633fd6b4b29f9a9cf5f57c278c54f51c8f8686868f60200151604051610d479493929190614a11565b60405180910390a4610d5c8d8986868b612f3e565b50505050505050505050505050565b5f610daa83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506130f992505050565b90505f610db9825f01516131f8565b80515f8181526006880160205260409020919250906001600382015460ff166004811115610de957610de961481f565b1480610e0d57506002600382015460ff166004811115610e0b57610e0b61481f565b145b610e2a576040516334b8cc2360e11b815260040160405180910390fd5b8351805160209182012090850151610e459083908390611ff6565b610e625760405163b089d34760e01b815260040160405180910390fd5b5f6040518060400160405280846004015f60028110610e8357610e8361480b565b60080201546001600160a01b039081168252600c86015416602090910152600f84015460078501549192505f9111610ebf57600f840154610ec5565b60078401545b60208701519091508190818111610ef8576040516331c0b51760e11b8152600481019290925260248201526044016104b0565b5050504285606001511015610f205760405163387b2e5560e11b815260040160405180910390fd5b805f60200201516001600160a01b031685604001515f81518110610f4657610f4661480b565b60200260200101515f01516001600160a01b0316148015610fa0575080600160200201516001600160a01b03168560400151600181518110610f8a57610f8a61480b565b60200260200101515f01516001600160a01b0316145b610fbd57604051630ef95a6960e11b815260040160405180910390fd5b5f604051806040016040528087604001515f81518110610fdf57610fdf61480b565b602002602001015160200151815260200187604001516001815181106110075761100761480b565b60209081029190910181015101519052604051636b5c4f1d60e11b81526004810186905290915073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a90602401602060405180830381865af4158015611068573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108c9190614a41565b6020820151825161109d919061486e565b146110bb576040516373bdb53b60e11b815260040160405180910390fd5b6110c78a8560036127eb565b847f6c666557dc97fd52cd2d9d6dd6d109e501ffdb831abeecf13aafeeaf762ee1fd826040516110f79190614a58565b60405180910390a26002840154611121908b90879061010090046001600160a01b03168585613347565b50505050505050505050565b5f838152600685016020526040902060158101336001600384015460ff16600481111561115c5761115c61481f565b1461117a5760405163407a5cc360e11b815260040160405180910390fd5b81546001600160a01b0316156111a3576040516381cef9d560e01b815260040160405180910390fd5b6111ad8382611fc0565b6111ca5760405163082290dd60e31b815260040160405180910390fd5b81546001600160a01b0319166001600160a01b0382169081178355600183018690554260028401556003830185905560405186815287907f97883669625c4ff7f5432b4ca33fe75fb5fee985deb196a967e5758f846170fe9060200160405180910390a350505050505050565b5f81815260068301602052604090206001600382015460ff1660048111156112615761126161481f565b1461127f5760405163407a5cc360e11b815260040160405180910390fd5b60158101546001600160a01b03166112aa57604051631358276360e11b815260040160405180910390fd5b600181015460178201546112be919061486e565b4210156112de57604051636f5e8c5960e11b815260040160405180910390fd5b6015810180546016830180546018850180546001600160a01b031985169095555f92839055601786018390558290556001600160a01b03909216929061132485856120bb565b90505f61133282600161485b565b9050600486015f81846002811061134b5761134b61480b565b60080201600301600401548285600281106113685761136861480b565b60080201600301600101548386600281106113855761138561480b565b600802016002015484866002811061139f5761139f61480b565b60080201600301600101548588600281106113bc576113bc61480b565b60080201600101546113ce919061486e565b6113d8919061485b565b6113e2919061485b565b6113ec919061485b565b905085818082111561141a5760405163016d0ef160e01b8152600481019290925260248201526044016104b0565b506114289050888888612ee3565b6040516364768a4f60e11b8152600481018990525f90819073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af415801561147a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149e919061498a565b925092505086896001600160a01b03168c7fe8110b4ee08638c48f6a4d5f726927df4e541893efa9d2c2c47a6b889041826e8b86866040516114e293929190614a66565b60405180910390a4610a568c8c8b8b8b612f3e565b5f818152600683016020526040902060048101426002600384015460ff1660048111156115265761152661481f565b146115445760405163326c5a6d60e01b815260040160405180910390fd5b82548110156115665760405163206f4f1160e11b815260040160405180910390fd5b6005820154158061157a5750600682015481115b80156115955750600d82015415806115955750600e82015481115b6115b257604051630d23801760e31b815260040160405180910390fd5b5f5f6115bd85613422565b9150915081611603576115d08786613630565b60405186907fa6549eb18490d42e7ec93f42115d1ee11b706d04077be9597034dd73ec8bcb36905f90a250505050505050565b61160f878660036127eb565b857f728ddd8c5acda5947c34db8d759c66ae70884f526ff9b93637d351b012ef32068260405161163f9190614a58565b60405180910390a260028501546040805180820190915285546001600160a01b0390811682526008870154811660208301526106a2928a928a926101009092049091169085613347565b3461169f85858561169a858761486e565b6136af565b5f8481526006860160205260409020600160028083015460ff16908111156116c9576116c961481f565b036118125781156117335760038601546040516342ef5fbb60e01b8152600481018790526001600160a01b03909116906342ef5fbb9084906024015f604051808303818588803b15801561171b575f5ffd5b505af115801561172d573d5f5f3e3d5ffd5b50505050505b821561180d576001860154611753906001600160a01b0316333086613992565b6001860154604051632e1a7d4d60e01b8152600481018590526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b158015611798575f5ffd5b505af11580156117aa573d5f5f3e3d5ffd5b5050505060038601546040516342ef5fbb60e01b8152600481018790526001600160a01b03909116906342ef5fbb9085906024015f604051808303818588803b1580156117f5575f5ffd5b505af1158015611807573d5f5f3e3d5ffd5b50505050505b6118e6565b60028181015460ff168181111561182b5761182b61481f565b036118de57811561184f5760405163429465b160e01b815260040160405180910390fd5b600281015461010090046001600160a01b031661186e81333087613992565b600387015461188a906001600160a01b038381169116866139ff565b600387015460405163030422ed60e61b8152600481018890526001600160a01b038381166024830152604482018790529091169063c108bb40906064015f604051808303815f87803b1580156117f5575f5ffd5b6118e6614833565b505050505050565b5f61192d83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611d9a92505050565b805180519192505f906119489082846102965761029661480b565b90505f5b828110156106a25781515f81815260068901602052604090206001600382015460ff1660048111156119805761198061481f565b1461199e5760405163407a5cc360e11b815260040160405180910390fd5b5f865f015184815181106119b4576119b461480b565b60200260200101515f01518051906020012090505f875f015185815181106119de576119de61480b565b6020026020010151602001519050611a01828285611ff69092919063ffffffff16565b611a1e5760405163b089d34760e01b815260040160405180910390fd5b5f611a368760200151856120bb90919063ffffffff16565b90505f846004018260028110611a4e57611a4e61480b565b60080201600301805460408a015191925090818111611a89576040516331c0b51760e11b8152600481019290925260248201526044016104b0565b5050604088015181556060880151602090810151015160018083019190915560c08901516004830155611abc908a61485b565b8703611b0757857fd0793cc4198bf052a6d91a9a1273c4af39f02a91b0e19029477511c278c5b271611aed87613a8e565b604051611afa9190614a58565b60405180910390a2611b8f565b611b1260018a61485b565b871015611b87578951611b2a9061064389600161486e565b8051909850861115611b4e57604051626ffafb60e21b815260040160405180910390fd5b8751861015611b8257857fd0793cc4198bf052a6d91a9a1273c4af39f02a91b0e19029477511c278c5b271611aed87613a8e565b611b8f565b611b8f614833565b50506001909401935061194c92505050565b5f81815260068301602052604090206001600382015460ff166004811115611bcb57611bcb61481f565b14611be95760405163407a5cc360e11b815260040160405180910390fd5b60158101546001600160a01b0316611c1457604051631358276360e11b815260040160405180910390fd5b611c1e8133611fc0565b611c3b5760405163082290dd60e31b815260040160405180910390fd5b6015810180546001600160a01b03191690555f60168201819055601782018190556018820181905560405183917f9a8a5493b616f074b3f754b5fd66049c8e7980f01547289e5e31808485c6002c91a2505050565b5f84815260068601602052604090206002600382015460ff166004811115611cba57611cba61481f565b14611cd85760405163326c5a6d60e01b815260040160405180910390fd5b5f611ce382866120bb565b90505f8484604051611cf6929190614a7a565b604051809103902090505f836004018360028110611d1657611d1661480b565b60080201600301905081816002015414611d43576040516327ff237960e21b815260040160405180910390fd5b5f611d8287878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250613ab692505050565b6020810151600284015590506111218a8a8684612115565b60408051602080820183526060825282518084019093525f8084529083018490528351919291611dcc90600290614a89565b6001600160401b03811115611de357611de36148f7565b604051908082528060200260200182016040528015611e0c578160200160208202803683370190505b5090505f805b60208401515184511015611e8057611e2984613bbd565b905080600a03611e5c575f611e45611e4086613c2c565b613cce565b600584901b85016020015250600190910190611e12565b611e7b816007166005811115611e7457611e7461481f565b8590613dcd565b611e12565b508152825250919050565b611e9361458e565b604080518082019091525f808252602082018490525b60208201515182511015611fb957611ec082613bbd565b905080600a03611eda57611ed382613ead565b8352611ea9565b80601203611efe57611eeb82613f0a565b6001600160a01b03166020840152611ea9565b80601803611f1957611f0f82613bbd565b6040840152611ea9565b80602203611f3c57611f32611f2d83613c2c565b613f5d565b6060840152611ea9565b80602a03611f5f57611f55611f5083613c2c565b613ab6565b6080840152611ea9565b80603003611f7a57611f7082613bbd565b60a0840152611ea9565b80603a03611f9557611f8b82614018565b60c0840152611ea9565b611fb4816007166005811115611fad57611fad61481f565b8390613dcd565b611ea9565b5050919050565b60048201545f906001600160a01b0383811691161480611fef5750600c8301546001600160a01b038381169116145b9392505050565b5f815160021461200757505f611fef565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c849052603c812090805b60028110156120ae5761206d8582815181106120565761205661480b565b60200260200101518461406e90919063ffffffff16565b91508660040181600281106120845761208461480b565b60080201546001600160a01b038381169116146120a6575f9350505050611fef565b600101612038565b5060019695505050505050565b60048201545f906001600160a01b03908116908316036120dc57505f610b16565b600c8301546001600160a01b03908116908316036120fc57506001610b16565b60405163082290dd60e31b815260040160405180910390fd5b5f838152600685016020526040812060028087015484519293926001600160a01b0390911691637cac39cf91906004860190889081106121575761215761480b565b60080201600301600301546040518363ffffffff1660e01b815260040161217f929190614aa8565b5f60405180830381865afa158015612199573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121c09190810190614af4565b90505f805b8251811015612292578281815181106121e0576121e061480b565b6020026020010151826121f3919061486e565b915083600401866002811061220a5761220a61480b565b6008020154855180516001600160a01b03909216918390811061222f5761222f61480b565b6020026020010151887f33252d4bc5cee2ad248475e8c39239a79dc64b2691c9ca1a63ff9af0c75b877686858151811061226b5761226b61480b565b602002602001015160405161228291815260200190565b60405180910390a46001016121c5565b50808360040186600281106122a9576122a961480b565b60080201600301600101546122be919061486e565b8360040186600281106122d3576122d361480b565b6008020160040155602084015161230d575f8360040186600281106122fa576122fa61480b565b60080201600301600401819055506106a2565b808360040186600281106123235761232361480b565b6008020160030160040154612338919061485b565b83600401866002811061234d5761234d61480b565b600802016003016004018190555050505050505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c839052603c8120819061239e908461406e565b90506123aa8582611fc0565b95945050505050565b5f818152600683016020526040902060018101546123d1904261486e565b81556123df838260026127eb565b817f296143e7e25aa055fbb871702776a67da540876e2be721d5c38ba23c97c90d6461240a83613a8e565b6040516124179190614a58565b60405180910390a2505050565b60408051808201909152606080825260208201525f61245583604080518082019091525f8152602081019190915290565b90505f600284516124669190614a89565b6001600160401b0381111561247d5761247d6148f7565b6040519080825280602002602001820160405280156124a6578160200160208202803683370190505b5090505f805b60208401515184511015612523576124c384613bbd565b905080600a036124dd576124d684613c2c565b85526124ac565b80601203612506575f6124ef85613c2c565b600584901b850160200152506001909101906124ac565b61251e816007166005811115611e7457611e7461481f565b6124ac565b508152602083015250919050565b61258f6040805161014081019091525f610100820181815261012083019190915260c08201908152606060e0830152819081526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681525090565b604080518082019091525f808252602082018490525b60208201515182511015611fb9576125bc82613bbd565b905080600a036125de576125d76125d283613c2c565b614096565b83526125a5565b806010036125f9576125ef82613bbd565b60208401526125a5565b806018036126145761260a82613bbd565b60408401526125a5565b8060200361262f5761262582613bbd565b60608401526125a5565b8060280361264a5761264082613bbd565b60808401526125a5565b8060320361266e5761265b82613f0a565b6001600160a01b031660a08401526125a5565b612686816007166005811115611fad57611fad61481f565b6125a5565b6040805160028082526060820183525f92839283929091602083019080368337505086518251929350918391505f906126c6576126c661480b565b6001600160a01b03929092166020928302919091018201528501518151829060019081106126f6576126f661480b565b6001600160a01b039283166020918202929092010152604051630d63a1fd60e01b81525f91881690630d63a1fd9061273690859030908a90600401614b9e565b6020604051808303815f875af1158015612752573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127769190614a41565b90508061279657604051637a48b66360e11b815260040160405180910390fd5b5f818152600689016020526040812090600382015460ff1660048111156127bf576127bf61481f565b146127dd576040516306fb701f60e21b815260040160405180910390fd5b909890975095505050505050565b8060048111156127fd576127fd61481f565b600383015460ff1660048111156128165761281661481f565b0361282057505050565b5f600383015460ff16600481111561283a5761283a61481f565b146128a557600382015460019084905f9060ff16600481111561285f5761285f61481f565b81526020019081526020015f2054612877919061485b565b600383015484905f9060ff1660048111156128945761289461481f565b815260208101919091526040015f20555b825f8260048111156128b9576128b961481f565b81526020019081526020015f205460016128d3919061486e565b835f8360048111156128e7576128e761481f565b815260208101919091526040015f205560038201805482919060ff191660018360048111156129185761291861481f565b0217905550505050565b604080518082019091525f808252602082015260018251600281111561294a5761294a61481f565b0361297f5760208201516001600160a01b03161561297b57604051630f58058360e11b815260040160405180910390fd5b5090565b6002825160028111156129945761299461481f565b036129f25760208201516001600160a01b03166129c457604051630f58058360e11b815260040160405180910390fd5b5f82602001516001600160a01b03163b1161297b57604051630fea47fd60e31b815260040160405180910390fd5b61297b614833565b600182516002811115612a0f57612a0f61481f565b03612bbe57838160028110612a2657612a2661480b565b60200201513414848260028110612a3f57612a3f61480b565b6020020151349091612a6d57604051634a09443160e01b8152600481019290925260248201526044016104b0565b505f9050612a7c82600161485b565b90505f858260028110612a9157612a9161480b565b60200201511115612b5a57612ae4868260028110612ab157612ab161480b565b602002015130878460028110612ac957612ac961480b565b602002015160018c01546001600160a01b0316929190613992565b60018801546001600160a01b0316632e1a7d4d868360028110612b0957612b0961480b565b60200201516040518263ffffffff1660e01b8152600401612b2c91815260200190565b5f604051808303815f87803b158015612b43575f5ffd5b505af1158015612b55573d5f5f3e3d5ffd5b505050505b60038801546040516342ef5fbb60e01b8152600481018990526001600160a01b03909116906342ef5fbb9086906024015f604051808303818588803b158015612ba1575f5ffd5b505af1158015612bb3573d5f5f3e3d5ffd5b5050505050506106a2565b600282516002811115612bd357612bd361481f565b03612cfc573415612bf75760405163429465b160e01b815260040160405180910390fd5b60208201515f5b6002811015612c6f57858160028110612c1957612c1961480b565b602002015115612c6757612c67878260028110612c3857612c3861480b565b602002015130888460028110612c5057612c5061480b565b60200201516001600160a01b038616929190613992565b600101612bfe565b506003880154612c8c906001600160a01b038381169116866139ff565b600388015460405163030422ed60e61b8152600481018990526001600160a01b038381166024830152604482018790529091169063c108bb40906064015f604051808303815f87803b158015612ce0575f5ffd5b505af1158015612cf2573d5f5f3e3d5ffd5b50505050506106a2565b6106a2614833565b60408051808201909152606080825260208201525f612d3583604080518082019091525f8152602081019190915290565b90505f60028451612d469190614a89565b6001600160401b03811115612d5d57612d5d6148f7565b604051908082528060200260200182016040528015612d86578160200160208202803683370190505b5090505f805b6020840151518451101561252357612da384613bbd565b905080600a03612dbd57612db684613c2c565b8552612d8c565b80601203612de6575f612dcf85613c2c565b600584901b85016020015250600190910190612d8c565b612dfe816007166005811115611e7457611e7461481f565b612d8c565b612e0b614621565b604080518082019091525f808252602082018490525b60208201515182511015611fb957612e3882613bbd565b905080600a03612e5257612e4b82613ead565b8352612e21565b80601003612e6d57612e6382613bbd565b6020840152612e21565b80601a03612e9057612e86612e8183613c2c565b6141a0565b6040840152612e21565b80602003612eab57612ea182613bbd565b6060840152612e21565b80602a03612ec657612ebc82613ead565b6080840152612e21565b612ede816007166005811115611fad57611fad61481f565b612e21565b5f612eee84846120bb565b905081846004018260028110612f0657612f0661480b565b6008020160020154612f18919061486e565b846004018260028110612f2d57612f2d61480b565b600802016002018190555050505050565b81156130f2575f848152600686016020526040902081612fd8576003860154600282015460405163470660bb60e11b8152600481018890526001600160a01b0361010090920482166024820152868216604482015260648101869052911690638e0cc176906084015f604051808303815f87803b158015612fbd575f5ffd5b505af1158015612fcf573d5f5f3e3d5ffd5b505050506118e6565b5f828152600687016020526040902060028082015460ff16908111156130005761300061481f565b60028084015460ff16908111156130195761301961481f565b148015613044575060028181015490830154610100918290046001600160a01b039081169290910416145b6130615760405163f176be9160e01b815260040160405180910390fd5b61306d878487876136af565b6003870154600283015460405163691c2b7b60e11b815260048101899052602481018690526001600160a01b036101009092048216604482015287821660648201526084810187905291169063d23856f69060a4015f604051808303815f87803b1580156130d9575f5ffd5b505af11580156130eb573d5f5f3e3d5ffd5b5050505050505b5050505050565b60408051808201909152606080825260208201525f61312a83604080518082019091525f8152602081019190915290565b90505f6002845161313b9190614a89565b6001600160401b03811115613152576131526148f7565b60405190808252806020026020018201604052801561317b578160200160208202803683370190505b5090505f805b602084015151845110156125235761319884613bbd565b905080600a036131b2576131ab84613c2c565b8552613181565b806012036131db575f6131c485613c2c565b600584901b85016020015250600190910190613181565b6131f3816007166005811115611e7457611e7461481f565b613181565b61322060405180608001604052805f81526020015f8152602001606081526020015f81525090565b604080518082019091525f80825260208201849052835161324390600290614a89565b6001600160401b0381111561325a5761325a6148f7565b604051908082528060200260200182016040528015613283578160200160208202803683370190505b5090505f805b60208401515184511015613339576132a084613bbd565b905080600a036132ba576132b384613ead565b8552613289565b806010036132d5576132cb84613bbd565b6020860152613289565b80601a03613301575f6132ea612e8186613c2c565b600584901b85016020015250600190910190613289565b8060200361331c5761331284613bbd565b6060860152613289565b613334816007166005811115611e7457611e7461481f565b613289565b508152604083015250919050565b5f5b60028110156118e6578181600281106133645761336461480b565b60200201511561341a5760038601546001600160a01b0316638e0cc17686868685600281106133955761339561480b565b60200201518686600281106133ac576133ac61480b565b60200201516040516001600160e01b031960e087901b16815260048101949094526001600160a01b0392831660248501529116604483015260648201526084015f604051808303815f87803b158015613403575f5ffd5b505af1158015613415573d5f5f3e3d5ffd5b505050505b600101613349565b5f61342b61465c565b604080518082019091525f9060048501600283835b828210156134d057604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101613440565b5050505090505f6040518060400160405280836001600281106134f5576134f561480b565b60200201516060015160200151845f600281106135145761351461480b565b602002015160200151613527919061486e565b815283516060015160209081015181860151820151919092019161354a9161486e565b905290505f5b6002811015613623575f83826002811061356c5761356c61480b565b6020020151604001518483600281106135875761358761480b565b6020020151606001516020015161359e919061486e565b9050808383600281106135b3576135b361480b565b602002015110156135e1575f60405180604001604052805f81526020015f8152509550955050505050915091565b808383600281106135f4576135f461480b565b6020020151613603919061485b565b8383600281106136155761361561480b565b602002015250600101613550565b5060019590945092505050565b5f815561363f828260016127eb565b5f600782018190556008820181905560098201819055600a8201819055600b8201819055600f8201819055601082018190556011820181905560128201819055601382018190556015820180546001600160a01b0319169055601682018190556017820181905560189091015550565b5f83815260068501602052604090206001600382015460ff1660048111156136d9576136d961481f565b146136f75760405163407a5cc360e11b815260040160405180910390fd5b5f61370282856120bb565b600587015490915060ff161561388057600282015461010090046001600160a01b03165f9081526004878101602052604091829020549151636b5c4f1d60e11b815290810184905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a90602401602060405180830381865af4158015613784573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137a89190614a41565b6137b2908561486e565b604051636b5c4f1d60e11b8152600481018590529110159073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a90602401602060405180830381865af4158015613804573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138289190614a41565b613832908561486e565b600284015461010090046001600160a01b03165f908152600489016020526040902054909161387d57604051631c71225560e31b8152600481019290925260248201526044016104b0565b50505b828260040182600281106138965761389661480b565b60080201600101546138a8919061486e565b8260040182600281106138bd576138bd61480b565b60080201600101819055505f5f5f8473__$13d4168a6482a4756bee5acfadcccc5f1f$__63c8ed149e90916040518263ffffffff1660e01b815260040161390691815260200190565b60c060405180830381865af4158015613921573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613945919061498a565b925092509250877fb63f5dc096f516663ffb5ef2b611f0e2acca8617a868c2a3653cba5e3ed0e92c84848460405161397f93929190614bfe565b60405180910390a2505050505050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526139f99186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061423b565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613a5084826142a7565b6139f9576040516001600160a01b0384811660248301525f6044830152613a8491869182169063095ea7b3906064016139c7565b6139f9848261423b565b613a9661465c565b506040805180820190915260078201548152600f90910154602082015290565b604080518082018252606081525f6020808301829052835180850190945281845283018490528351919291613aed90602290614a89565b6001600160401b03811115613b0457613b046148f7565b604051908082528060200260200182016040528015613b2d578160200160208202803683370190505b5090505f805b60208401515184511015611e8057613b4a84613bbd565b905080600a03613b8557613b5d84613ead565b838381518110613b6f57613b6f61480b565b6020908102919091010152600190910190613b33565b80601203613ba057613b9684613ead565b6020860152613b33565b613bb8816007166005811115611e7457611e7461481f565b613b33565b602080820151825181515f938301845b600a8110156100bc57828410613be1575f5ffd5b838201515f1a607f8116600783021b96909617956001909401936080811015613c235781600903613c185760028110613c18575f5ffd5b505050935250919050565b50600101613bcd565b60605f613c3883613bbd565b90505f81845f0151613c4a919061486e565b9050836020015151811115613c5d575f5ffd5b816001600160401b03811115613c7557613c756148f7565b6040519080825280601f01601f191660200182016040528015613c9f576020820181803683370190505b5060208086015186519295509181860191908301015f5b85811015613c18578181015183820152602001613cb6565b60408051808201909152606080825260208201525f613cff83604080518082019091525f8152602081019190915290565b90505f60028451613d109190614a89565b6001600160401b03811115613d2757613d276148f7565b604051908082528060200260200182016040528015613d50578160200160208202803683370190505b5090505f805b6020840151518451101561252357613d6d84613bbd565b905080600a03613d8757613d8084613c2c565b8552613d56565b80601203613db0575f613d9985613c2c565b600584901b85016020015250600190910190613d56565b613dc8816007166005811115611e7457611e7461481f565b613d56565b5f816005811115613de057613de061481f565b03613df357613dee82613bbd565b505050565b6002816005811115613e0757613e0761481f565b03613e3e575f613e1683613bbd565b905080835f01818151613e29919061486e565b90525060208301515183511115613dee575f5ffd5b6001816005811115613e5257613e5261481f565b03613e82576008825f01818151613e69919061486e565b90525060208201515182511115613e7e575f5ffd5b5050565b6005816005811115613e9657613e9661481f565b036100bc576004825f01818151613e69919061486e565b5f5f613eb883613bbd565b905080602014613ec6575f5ffd5b82516020808501515190613edb90839061486e565b1115613ee5575f5ffd5b602080850151828101820151945090613eff90839061486e565b909452509092915050565b5f5f613f1583613bbd565b905080601414613f23575f5ffd5b8251602084015151613f3682601461486e565b1115613f40575f5ffd5b6020808501518281019091015160601c9350613eff82601461486e565b604080516080810182525f81830181815260608301829052825282518084018452818152602080820183905280840191909152835180850190945281845283018490529091905b60208201515182511015611fb957613fbb82613bbd565b905080600a03613fdd57613fd6613fd183613c2c565b6142f0565b8352613fa4565b80601203613ffb57613ff1612e8183613c2c565b6020840152613fa4565b614013816007166005811115611fad57611fad61481f565b613fa4565b5f5f61402383613bbd565b90506020811115614032575f5ffd5b82515f61403f838361486e565b9050846020015151811115614052575f5ffd5b602080860151929092018201519452036008029190911c919050565b5f5f5f5f61407c86866143c5565b92509250925061408c828261440e565b5090949350505050565b604080516080810182525f91810182815260608083019390935281526020810191909152604080518082019091525f8082526020820184905283516140dd90600290614a89565b6001600160401b038111156140f4576140f46148f7565b60405190808252806020026020018201604052801561411d578160200160208202803683370190505b5090505f805b602084015151845110156125235761413a84613bbd565b905080600a0361415757614150613fd185613c2c565b8552614123565b80601203614183575f61416c612e8186613c2c565b600584901b85016020015250600190910190614123565b61419b816007166005811115611e7457611e7461481f565b614123565b6040805180820182525f8082526020808301829052835180850190945281845283018490529091905b60208201515182511015611fb9576141e082613bbd565b905080600a03614203576141f382613f0a565b6001600160a01b031683526141c9565b8060120361421e5761421482614018565b60208401526141c9565b614236816007166005811115611fad57611fad61481f565b6141c9565b5f5f60205f8451602086015f885af18061425a576040513d5f823e3d81fd5b50505f513d9150811561427157806001141561427e565b6001600160a01b0384163b155b156139f957604051635274afe760e01b81526001600160a01b03851660048201526024016104b0565b5f5f5f5f60205f8651602088015f8a5af192503d91505f5190508280156142e6575081156142d857806001146142e6565b5f866001600160a01b03163b115b9695505050505050565b604080518082019091525f8082526020820152604080518082019091525f80825260208201849052505f5b60208201515182511015611fb95761433282613bbd565b9050806008036143845761434582613bbd565b60028111156143565761435661481f565b839060028111156143695761436961481f565b9081600281111561437c5761437c61481f565b90525061431b565b806012036143a85761439582613f0a565b6001600160a01b0316602084015261431b565b6143c0816007166005811115611fad57611fad61481f565b61431b565b5f5f5f83516041036143fc576020840151604085015160608601515f1a6143ee888285856144c6565b955095509550505050614407565b505081515f91506002905b9250925092565b5f8260038111156144215761442161481f565b0361442a575050565b600182600381111561443e5761443e61481f565b0361445c5760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156144705761447061481f565b036144915760405163fce698f760e01b8152600481018290526024016104b0565b60038260038111156144a5576144a561481f565b03613e7e576040516335e2f38360e21b8152600481018290526024016104b0565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156144ff57505f91506003905082614584565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614550573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661457b57505f925060019150829050614584565b92505f91508190505b9450945094915050565b6040518060e001604052805f81526020015f6001600160a01b031681526020015f81526020016145ee604080516080810182525f818301818152606083018290528252825180840190935280835260208381019190915290919082015290565b815260200161460f6040518060400160405280606081526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052805f81526020015f815260200161460f60405180604001604052805f6001600160a01b031681526020015f81525090565b60405180604001604052806002906020820280368337509192915050565b5f5f83601f84011261468a575f5ffd5b5081356001600160401b038111156146a0575f5ffd5b6020830191508360208285010111156146b7575f5ffd5b9250929050565b5f5f5f604084860312156146d0575f5ffd5b8335925060208401356001600160401b038111156146ec575f5ffd5b6146f88682870161467a565b9497909650939450505050565b5f5f60408385031215614716575f5ffd5b50508035926020909101359150565b5f5f5f5f60808587031215614738575f5ffd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0381168114614768575f5ffd5b50565b5f5f5f5f6080858703121561477e575f5ffd5b8435935060208501359250604085013561479781614754565b9396929550929360600135925050565b5f5f5f5f5f608086880312156147bb575f5ffd5b853594506020860135935060408601356147d481614754565b925060608601356001600160401b038111156147ee575f5ffd5b6147fa8882890161467a565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b1657610b16614847565b80820180821115610b1657610b16614847565b805f5b60028110156139f95781516001600160a01b0316845260209384019390910190600101614884565b805f5b60028110156139f95781518452602093840193909101906001016148af565b83815260a081016148e26020830185614881565b6148ef60608301846148ac565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715614933576149336148f7565b604052919050565b5f82601f83011261494a575f5ffd5b614954604061490b565b806040840185811115614965575f5ffd5b845b8181101561497f578051845260209384019301614967565b509095945050505050565b5f5f5f60c0848603121561499c575f5ffd5b84601f8501126149aa575f5ffd5b6149b4604061490b565b8060408601878111156149c5575f5ffd5b865b818110156149e85780516149da81614754565b8452602093840193016149c7565b508195506149f6888261493b565b9450505050614a08856080860161493b565b90509250925092565b84815260c08101614a2560208301866148ac565b614a3260608301856148ac565b8260a083015295945050505050565b5f60208284031215614a51575f5ffd5b5051919050565b60408101610b1682846148ac565b83815260a081016148e260208301856148ac565b818382375f9101908152919050565b5f82614aa357634e487b7160e01b5f52601260045260245ffd5b500490565b604080825283519082018190525f9060208501906060840190835b81811015614ae1578351835260209384019390920191600101614ac3565b5050602093909301939093525092915050565b5f60208284031215614b04575f5ffd5b81516001600160401b03811115614b19575f5ffd5b8201601f81018413614b29575f5ffd5b80516001600160401b03811115614b4257614b426148f7565b8060051b614b526020820161490b565b91825260208184018101929081019087841115614b6d575f5ffd5b6020850194505b83851015614b9357845180835260209586019590935090910190614b74565b979650505050505050565b606080825284519082018190525f9060208601906080840190835b81811015614be05783516001600160a01b0316835260209384019390920191600101614bb9565b50506001600160a01b03959095166020840152505060400152919050565b60c08101614c0c8286614881565b614c1960408301856148ac565b6148ef60808301846148ac56fea2646970667358221220d38372bc3bffbff8b0424412dd03de9c55f365d52477174f549c5dc0e389af0464736f6c634300081e0033", } // LedgerOperationABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/payregistry/payregistry.go b/chain/channel-eth-go/payregistry/payregistry.go index 053a96b..eede76d 100644 --- a/chain/channel-eth-go/payregistry/payregistry.go +++ b/chain/channel-eth-go/payregistry/payregistry.go @@ -32,8 +32,8 @@ var ( // PayRegistryMetaData contains all meta data concerning the PayRegistry contract. var PayRegistryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"calculatePayId\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_setter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getPayAmounts\",\"inputs\":[{\"name\":\"_payIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_maxResolveDeadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayInfo\",\"inputs\":[{\"name\":\"_payId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"payInfoMap\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setPayAmount\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amt\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayAmounts\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_amts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayDeadline\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayDeadlines\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_deadlines\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayInfo\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amt\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayInfos\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_amts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"_deadlines\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"PayInfoUpdate\",\"inputs\":[{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6080604052348015600e575f5ffd5b50610a668061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80638f13b2f5116100635780638f13b2f51461013b57806396efe57314610161578063cdfa146b14610182578063e1e3549014610195578063f8fb012f146101a8575f5ffd5b80630daddd341461009f578063204a95ee146100b457806327b0e058146100c7578063414f7e0e146101085780637cac39cf1461011b575b5f5ffd5b6100b26100ad36600461078c565b6101bb565b005b6100b26100c236600461078c565b61029e565b6100ee6100d53660046107f8565b5f90815260208190526040902080546001909101549091565b604080519283526020830191909152015b60405180910390f35b6100b261011636600461080f565b610360565b61012e6101293660046108ae565b61046c565b6040516100ff91906108f6565b6100ee6101493660046107f8565b5f602081905290815260409020805460019091015482565b61017461016f366004610938565b61060d565b6040519081526020016100ff565b6100b2610190366004610971565b61065a565b6100b26101a3366004610991565b6106ac565b6100b26101b6366004610971565b6106ff565b8281146101e35760405162461bcd60e51b81526004016101da906109ba565b60405180910390fd5b5f33815b8581101561029557610211878783818110610204576102046109e8565b905060200201358361060d565b5f818152602081905260409020909350858583818110610233576102336109e8565b6020029190910135600183015550805484905f516020610a115f395f51905f5290888886818110610266576102666109e8565b90506020020135604051610284929190918252602082015260400190565b60405180910390a2506001016101e7565b50505050505050565b8281146102bd5760405162461bcd60e51b81526004016101da906109ba565b5f33815b85811015610295576102de878783818110610204576102046109e8565b5f818152602081905260409020909350858583818110610300576103006109e8565b6020029190910135825550835f516020610a115f395f51905f5287878581811061032c5761032c6109e8565b90506020020135836001015460405161034f929190918252602082015260400190565b60405180910390a2506001016102c1565b848314801561036e57508481145b61038a5760405162461bcd60e51b81526004016101da906109ba565b5f33815b87811015610461576103ab898983818110610204576102046109e8565b5f8181526020819052604090209093508787838181106103cd576103cd6109e8565b60200291909101358255508585838181106103ea576103ea6109e8565b6020029190910135600183015550835f516020610a115f395f51905f52898985818110610419576104196109e8565b90506020020135888886818110610432576104326109e8565b90506020020135604051610450929190918252602082015260400190565b60405180910390a25060010161038e565b505050505050505050565b60605f8367ffffffffffffffff811115610488576104886109fc565b6040519080825280602002602001820160405280156104b1578160200160208202803683370190505b5090505f5b84811015610604575f5f8787848181106104d2576104d26109e8565b9050602002013581526020019081526020015f20600101545f0361053f5783421161053a5760405162461bcd60e51b815260206004820152601860248201527714185e5b595b9d081a5cc81b9bdd08199a5b985b1a5e995960421b60448201526064016101da565b6105b4565b5f5f878784818110610553576105536109e8565b9050602002013581526020019081526020015f206001015442116105b45760405162461bcd60e51b815260206004820152601860248201527714185e5b595b9d081a5cc81b9bdd08199a5b985b1a5e995960421b60448201526064016101da565b5f5f8787848181106105c8576105c86109e8565b9050602002013581526020019081526020015f205f01548282815181106105f1576105f16109e8565b60209081029190910101526001016104b6565b50949350505050565b5f828260405160200161063c92919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b5f610665833361060d565b5f8181526020818152604091829020600181018690558054835190815291820186905292935083915f516020610a115f395f51905f5291015b60405180910390a250505050565b5f6106b7843361060d565b5f818152602081815260409182902086815560018101869055825187815291820186905292935083915f516020610a115f395f51905f52910160405180910390a25050505050565b5f61070a833361060d565b5f8181526020818152604091829020858155600181015483518781529283015292935083915f516020610a115f395f51905f52910161069e565b5f5f83601f840112610754575f5ffd5b50813567ffffffffffffffff81111561076b575f5ffd5b6020830191508360208260051b8501011115610785575f5ffd5b9250929050565b5f5f5f5f6040858703121561079f575f5ffd5b843567ffffffffffffffff8111156107b5575f5ffd5b6107c187828801610744565b909550935050602085013567ffffffffffffffff8111156107e0575f5ffd5b6107ec87828801610744565b95989497509550505050565b5f60208284031215610808575f5ffd5b5035919050565b5f5f5f5f5f5f60608789031215610824575f5ffd5b863567ffffffffffffffff81111561083a575f5ffd5b61084689828a01610744565b909750955050602087013567ffffffffffffffff811115610865575f5ffd5b61087189828a01610744565b909550935050604087013567ffffffffffffffff811115610890575f5ffd5b61089c89828a01610744565b979a9699509497509295939492505050565b5f5f5f604084860312156108c0575f5ffd5b833567ffffffffffffffff8111156108d6575f5ffd5b6108e286828701610744565b909790965060209590950135949350505050565b602080825282518282018190525f918401906040840190835b8181101561092d57835183526020938401939092019160010161090f565b509095945050505050565b5f5f60408385031215610949575f5ffd5b8235915060208301356001600160a01b0381168114610966575f5ffd5b809150509250929050565b5f5f60408385031215610982575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156109a3575f5ffd5b505081359360208301359350604090920135919050565b602080825260149082015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffdfe9e9acc6d43d5d7bd6fa143ef0ee1d224cfe2bb010b7e3acf44878d6314ebc607a26469706673582212203cced7f1fffcb4a8fe2727e6f4a979b27be0afe943872776cb9b733f3702dc0864736f6c634300081e0033", + ABI: "[{\"type\":\"function\",\"name\":\"calculatePayId\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_setter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getPayAmounts\",\"inputs\":[{\"name\":\"_payIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_maxResolveDeadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayInfo\",\"inputs\":[{\"name\":\"_payId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"payInfoMap\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setPayAmount\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amt\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayAmounts\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_amts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayDeadline\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayDeadlines\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_deadlines\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayInfo\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amt\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayInfos\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_amts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"_deadlines\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"PayInfoUpdate\",\"inputs\":[{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"LengthMismatch\",\"inputs\":[{\"name\":\"a\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"b\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"PaymentNotFinalized\",\"inputs\":[]}]", + Bin: "0x6080604052348015600e575f5ffd5b50610a308061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80638f13b2f5116100635780638f13b2f51461013b57806396efe57314610161578063cdfa146b14610182578063e1e3549014610195578063f8fb012f146101a8575f5ffd5b80630daddd341461009f578063204a95ee146100b457806327b0e058146100c7578063414f7e0e146101085780637cac39cf1461011b575b5f5ffd5b6100b26100ad366004610784565b6101bb565b005b6100b26100c2366004610784565b6102a9565b6100ee6100d53660046107f0565b5f90815260208190526040902080546001909101549091565b604080519283526020830191909152015b60405180910390f35b6100b2610116366004610807565b61037a565b61012e6101293660046108a6565b6104b8565b6040516100ff91906108ee565b6100ee6101493660046107f0565b5f602081905290815260409020805460019091015482565b61017461016f366004610930565b610605565b6040519081526020016100ff565b6100b2610190366004610969565b610652565b6100b26101a3366004610989565b6106a4565b6100b26101b6366004610969565b6106f7565b82818181146101eb576040516355c5b3e360e11b8152600481019290925260248201526044015b60405180910390fd5b505f905033815b858110156102a05761021c87878381811061020f5761020f6109b2565b9050602002013583610605565b5f81815260208190526040902090935085858381811061023e5761023e6109b2565b6020029190910135600183015550805484905f5160206109db5f395f51905f5290888886818110610271576102716109b2565b9050602002013560405161028f929190918252602082015260400190565b60405180910390a2506001016101f2565b50505050505050565b82818181146102d4576040516355c5b3e360e11b8152600481019290925260248201526044016101e2565b505f905033815b858110156102a0576102f887878381811061020f5761020f6109b2565b5f81815260208190526040902090935085858381811061031a5761031a6109b2565b6020029190910135825550835f5160206109db5f395f51905f52878785818110610346576103466109b2565b905060200201358360010154604051610369929190918252602082015260400190565b60405180910390a2506001016102db565b84838181146103a5576040516355c5b3e360e11b8152600481019290925260248201526044016101e2565b50859050818181146103d3576040516355c5b3e360e11b8152600481019290925260248201526044016101e2565b505f905033815b878110156104ad576103f789898381811061020f5761020f6109b2565b5f818152602081905260409020909350878783818110610419576104196109b2565b6020029190910135825550858583818110610436576104366109b2565b6020029190910135600183015550835f5160206109db5f395f51905f52898985818110610465576104656109b2565b9050602002013588888681811061047e5761047e6109b2565b9050602002013560405161049c929190918252602082015260400190565b60405180910390a2506001016103da565b505050505050505050565b60605f8367ffffffffffffffff8111156104d4576104d46109c6565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b5090505f5b848110156105fc575f5f87878481811061051e5761051e6109b2565b9050602002013581526020019081526020015f20600101545f036105615783421161055c57604051630d23801760e31b815260040160405180910390fd5b6105ac565b5f5f878784818110610575576105756109b2565b9050602002013581526020019081526020015f206001015442116105ac57604051630d23801760e31b815260040160405180910390fd5b5f5f8787848181106105c0576105c06109b2565b9050602002013581526020019081526020015f205f01548282815181106105e9576105e96109b2565b6020908102919091010152600101610502565b50949350505050565b5f828260405160200161063492919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b5f61065d8333610605565b5f8181526020818152604091829020600181018690558054835190815291820186905292935083915f5160206109db5f395f51905f5291015b60405180910390a250505050565b5f6106af8433610605565b5f818152602081815260409182902086815560018101869055825187815291820186905292935083915f5160206109db5f395f51905f52910160405180910390a25050505050565b5f6107028333610605565b5f8181526020818152604091829020858155600181015483518781529283015292935083915f5160206109db5f395f51905f529101610696565b5f5f83601f84011261074c575f5ffd5b50813567ffffffffffffffff811115610763575f5ffd5b6020830191508360208260051b850101111561077d575f5ffd5b9250929050565b5f5f5f5f60408587031215610797575f5ffd5b843567ffffffffffffffff8111156107ad575f5ffd5b6107b98782880161073c565b909550935050602085013567ffffffffffffffff8111156107d8575f5ffd5b6107e48782880161073c565b95989497509550505050565b5f60208284031215610800575f5ffd5b5035919050565b5f5f5f5f5f5f6060878903121561081c575f5ffd5b863567ffffffffffffffff811115610832575f5ffd5b61083e89828a0161073c565b909750955050602087013567ffffffffffffffff81111561085d575f5ffd5b61086989828a0161073c565b909550935050604087013567ffffffffffffffff811115610888575f5ffd5b61089489828a0161073c565b979a9699509497509295939492505050565b5f5f5f604084860312156108b8575f5ffd5b833567ffffffffffffffff8111156108ce575f5ffd5b6108da8682870161073c565b909790965060209590950135949350505050565b602080825282518282018190525f918401906040840190835b81811015610925578351835260209384019390920191600101610907565b509095945050505050565b5f5f60408385031215610941575f5ffd5b8235915060208301356001600160a01b038116811461095e575f5ffd5b809150509250929050565b5f5f6040838503121561097a575f5ffd5b50508035926020909101359150565b5f5f5f6060848603121561099b575f5ffd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffdfe9e9acc6d43d5d7bd6fa143ef0ee1d224cfe2bb010b7e3acf44878d6314ebc607a2646970667358221220ddbbf8cc3e251541eebf0ecef5b6c4447bf6c2220085805aac99626737eb82a464736f6c634300081e0033", } // PayRegistryABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/payresolver/payresolver.go b/chain/channel-eth-go/payresolver/payresolver.go index d64b605..d8db021 100644 --- a/chain/channel-eth-go/payresolver/payresolver.go +++ b/chain/channel-eth-go/payresolver/payresolver.go @@ -32,8 +32,8 @@ var ( // PayResolverMetaData contains all meta data concerning the PayResolver contract. var PayResolverMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_virtResolverAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"payRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPayRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolvePaymentByConditions\",\"inputs\":[{\"name\":\"_resolvePayRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolvePaymentByVouchedResult\",\"inputs\":[{\"name\":\"_vouchedPayResult\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"virtResolver\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIVirtContractResolver\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"ResolvePayment\",\"inputs\":[{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\",\"inputs\":[{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]", - Bin: "0x6080604052348015600e575f5ffd5b50604051612456380380612456833981016040819052602b916074565b5f80546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617905560a0565b80516001600160a01b0381168114606f575f5ffd5b919050565b5f5f604083850312156084575f5ffd5b608b83605a565b9150609760208401605a565b90509250929050565b6123a9806100ad5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634367e45e1461004e57806353fc513f146100635780635fff88c814610091578063ead54c1b146100a4575b5f5ffd5b61006161005c366004612145565b6100b7565b005b5f54610075906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61006161009f366004612145565b6101a7565b600154610075906001600160a01b031681565b5f6100f683838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061037392505050565b90505f610105825f0151610488565b6080810151519091505f9081816005811115610123576101236121b3565b0361013d57610136838560200151610668565b9150610189565b6001816005811115610151576101516121b3565b03610164576101368385602001516108a9565b61016d81610af9565b156101815761013683856020015183610b4c565b6101896121c7565b8351805160209091012061019e848285610fb5565b50505050505050565b5f6101e683838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061148692505050565b90505f6101f5825f0151611552565b90505f610204825f0151610488565b905080608001516020015160200151602001518260200151111561026f5760405162461bcd60e51b815260206004820152601a60248201527f457863656564206d6178207472616e7366657220616d6f756e7400000000000060448201526064015b60405180910390fd5b825180516020918201207f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c8120918501516102b79083906115e5565b90505f6102d18660400151846115e590919063ffffffff16565b905083602001516001600160a01b0316826001600160a01b031614801561030d575083604001516001600160a01b0316816001600160a01b0316145b61034d5760405162461bcd60e51b815260206004820152601160248201527010da1958dac81cda59dcc819985a5b1959607a1b6044820152606401610266565b84518051602091820120908601516103689086908390610fb5565b505050505050505050565b60408051808201909152606080825260208201525f6103a483604080518082019091525f8152602081019190915290565b90505f600284516103b591906121ef565b67ffffffffffffffff8111156103cd576103cd61220e565b6040519080825280602002602001820160405280156103f6578160200160208202803683370190505b5090505f805b6020840151518451101561047a576104138461160d565b905080600a0361042d576104268461167c565b85526103fc565b80601203610456575f61043f8561167c565b600584901b850160200152506001909101906103fc565b61047581600716600581111561046e5761046e6121b3565b859061171f565b6103fc565b508152602083015250919050565b61049061208f565b604080518082019091525f8082526020820184905283516104b3906002906121ef565b67ffffffffffffffff8111156104cb576104cb61220e565b6040519080825280602002602001820160405280156104f4578160200160208202803683370190505b5090505f805b6020840151518451101561065a576105118461160d565b90508060080361052b576105248461160d565b85526104fa565b8060120361054f5761053c846117ff565b6001600160a01b031660208601526104fa565b80601a0361057357610560846117ff565b6001600160a01b031660408601526104fa565b806022036105a4575f61058d6105888661167c565b61185d565b600584901b850160200152506001909101906104fa565b80602a036105c7576105bd6105b88561167c565b6119c8565b60808601526104fa565b806030036105e2576105d88461160d565b60a08601526104fa565b806038036105fd576105f38461160d565b60c08601526104fa565b806042036106215761060e846117ff565b6001600160a01b031660e08601526104fa565b8060480361063d576106328461160d565b6101008601526104fa565b61065581600716600581111561046e5761046e6121b3565b6104fa565b508152606083015250919050565b5f8080805b85606001515181101561087c575f8660600151828151811061069157610691612222565b602002602001015190505f60028111156106ad576106ad6121b3565b815160028111156106c0576106c06121b3565b0361071a5780602001518685815181106106dc576106dc612222565b602002602001015180519060200120146107085760405162461bcd60e51b815260040161026690612236565b836107128161225e565b945050610873565b60018151600281111561072f5761072f6121b3565b148061074d575060028151600281111561074b5761074b6121b3565b145b1561086b575f61075c82611a8f565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda94916107919190600401612276565b602060405180830381865afa1580156107ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d091906122ab565b6107ec5760405162461bcd60e51b8152600401610266906122ca565b60a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb9161081c9190600401612276565b602060405180830381865afa158015610837573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085b91906122ab565b61086457600194505b5050610873565b6108736121c7565b5060010161066d565b50801561088d575f925050506108a3565b8460800151602001516020015160200151925050505b92915050565b5f808080805b866060015151811015610ac3575f876060015182815181106108d3576108d3612222565b602002602001015190505f60028111156108ef576108ef6121b3565b81516002811115610902576109026121b3565b0361095c57806020015187868151811061091e5761091e612222565b6020026020010151805190602001201461094a5760405162461bcd60e51b815260040161026690612236565b846109548161225e565b955050610aba565b600181516002811115610971576109716121b3565b148061098f575060028151600281111561098d5761098d6121b3565b145b15610ab2575f61099e82611a8f565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda94916109d39190600401612276565b602060405180830381865afa1580156109ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1291906122ab565b610a2e5760405162461bcd60e51b8152600401610266906122ca565b60a083015160405163ea4ba8eb60e01b8152600197506001600160a01b0383169163ea4ba8eb91610a629190600401612276565b602060405180830381865afa158015610a7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa191906122ab565b15610aab57600194505b5050610aba565b610aba6121c7565b506001016108af565b50811580610ace5750805b15610aee57856080015160200151602001516020015193505050506108a3565b5f93505050506108a3565b5f6003826005811115610b0e57610b0e6121b3565b1480610b2b57506004826005811115610b2957610b296121b3565b145b806108a357506005826005811115610b4557610b456121b3565b1492915050565b5f808080805b876060015151811015610f25575f88606001518281518110610b7657610b76612222565b602002602001015190505f6002811115610b9257610b926121b3565b81516002811115610ba557610ba56121b3565b03610bff578060200151888581518110610bc157610bc1612222565b60200260200101518051906020012014610bed5760405162461bcd60e51b815260040161026690612236565b83610bf78161225e565b945050610f1c565b600181516002811115610c1457610c146121b3565b1480610c325750600281516002811115610c3057610c306121b3565b145b15610f14575f610c4182611a8f565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda9491610c769190600401612276565b602060405180830381865afa158015610c91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb591906122ab565b610cd15760405162461bcd60e51b8152600401610266906122ca565b6003896005811115610ce557610ce56121b3565b03610d6a5760a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb91610d1a9190600401612276565b602060405180830381865afa158015610d35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d599190612301565b610d639088612318565b9650610f09565b6004896005811115610d7e57610d7e6121b3565b03610dfb57610d6387826001600160a01b031663ea4ba8eb8660a001516040518263ffffffff1660e01b8152600401610db79190612276565b602060405180830381865afa158015610dd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df69190612301565b611b83565b6005896005811115610e0f57610e0f6121b3565b03610f01578415610e9257610d6387826001600160a01b031663ea4ba8eb8660a001516040518263ffffffff1660e01b8152600401610e4e9190612276565b602060405180830381865afa158015610e69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8d9190612301565b611b92565b60a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb91610ec29190600401612276565b602060405180830381865afa158015610edd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d639190612301565b610f096121c7565b600194505050610f1c565b610f1c6121c7565b50600101610b52565b508015610f97578660800151602001516020015160200151831115610f8c5760405162461bcd60e51b815260206004820152601a60248201527f457863656564206d6178207472616e7366657220616d6f756e740000000000006044820152606401610266565b829350505050610fae565b866080015160200151602001516020015193505050505b9392505050565b46836101000151146110025760405162461bcd60e51b815260206004820152601660248201527557726f6e6720636861696e20696420666f722070617960501b6044820152606401610266565b60e08301516001600160a01b031630146110575760405162461bcd60e51b815260206004820152601660248201527557726f6e67207265736f6c76657220666f722070617960501b6044820152606401610266565b60a083015142908111156110c05760405162461bcd60e51b815260206004820152602a60248201527f50617373656420706179207265736f6c766520646561646c696e6520696e20636044820152696f6e64506179206d736760b01b6064820152608401610266565b5f6110cb8430611ba1565b5f80546040516304f61c0b60e31b815260048101849052929350909182916001600160a01b0316906327b0e058906024016040805180830381865afa158015611116573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113a919061232b565b91509150805f148061114c5750808411155b6111a45760405162461bcd60e51b815260206004820152602360248201527f506173736564206f6e636861696e207265736f6c76652070617920646561646c604482015262696e6560e81b6064820152608401610266565b801561134e578185116111f95760405162461bcd60e51b815260206004820152601860248201527f4e657720616d6f756e74206973206e6f74206c617267657200000000000000006044820152606401610266565b866080015160200151602001516020015185036112b7575f54604051630e1e354960e41b81526004810188905260248101879052604481018690526001600160a01b039091169063e1e35490906064015f604051808303815f87803b158015611260575f5ffd5b505af1158015611272573d5f5f3e3d5ffd5b505060408051888152602081018890528693507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb179250015b60405180910390a261019e565b5f5460405163f8fb012f60e01b815260048101889052602481018790526001600160a01b039091169063f8fb012f906044015f604051808303815f87803b158015611300575f5ffd5b505af1158015611312573d5f5f3e3d5ffd5b505060408051888152602081018590528693507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb179250016112aa565b5f8760800151602001516020015160200151860361136d5750836113db565b61138a8860c00151866113809190612318565b8960a00151611b92565b90505f81116113db5760405162461bcd60e51b815260206004820152601960248201527f4e6577207265736f6c766520646561646c696e652069732030000000000000006044820152606401610266565b5f54604051630e1e354960e41b81526004810189905260248101889052604481018390526001600160a01b039091169063e1e35490906064015f604051808303815f87803b15801561142b575f5ffd5b505af115801561143d573d5f5f3e3d5ffd5b505060408051898152602081018590528793507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb1792500160405180910390a25050505050505050565b6114aa60405180606001604052806060815260200160608152602001606081525090565b604080518082019091525f808252602082018490525b6020820151518251101561154b576114d78261160d565b905080600a036114f1576114ea8261167c565b83526114c0565b8060120361150c576115028261167c565b60208401526114c0565b80601a036115275761151d8261167c565b60408401526114c0565b61154681600716600581111561153f5761153f6121b3565b839061171f565b6114c0565b5050919050565b604080518082018252606081525f6020808301829052835180850190945281845283018490529091905b6020820151518251101561154b576115938261160d565b905080600a036115ad576115a68261167c565b835261157c565b806012036115c8576115be82611bee565b602084015261157c565b6115e081600716600581111561153f5761153f6121b3565b61157c565b5f5f5f5f6115f38686611c44565b9250925092506116038282611c8d565b5090949350505050565b602080820151825181515f938301845b600a81101561004a57828410611631575f5ffd5b838201515f1a607f8116600783021b9690961795600190940193608081101561167357816009036116685760028110611668575f5ffd5b505050935250919050565b5060010161161d565b60605f6116888361160d565b90505f81845f015161169a9190612318565b90508360200151518111156116ad575f5ffd5b8167ffffffffffffffff8111156116c6576116c661220e565b6040519080825280601f01601f1916602001820160405280156116f0576020820181803683370190505b5060208086015186519295509181860191908301015f5b85811015611668578181015183820152602001611707565b5f816005811115611732576117326121b3565b03611745576117408261160d565b505050565b6002816005811115611759576117596121b3565b03611790575f6117688361160d565b905080835f0181815161177b9190612318565b90525060208301515183511115611740575f5ffd5b60018160058111156117a4576117a46121b3565b036117d4576008825f018181516117bb9190612318565b905250602082015151825111156117d0575f5ffd5b5050565b60058160058111156117e8576117e86121b3565b0361004a576004825f018181516117bb9190612318565b5f5f61180a8361160d565b905080601414611818575f5ffd5b825160208401515161182b826014612318565b1115611835575f5ffd5b6020808501518281019091015160601c9350611852826014612318565b909452509092915050565b61189c6040805160c08101909152805f81526020015f81526020015f6001600160a01b031681526020015f815260200160608152602001606081525090565b604080518082019091525f808252602082018490525b6020820151518251101561154b576118c98261160d565b90508060080361191b576118dc8261160d565b60028111156118ed576118ed6121b3565b83906002811115611900576119006121b3565b90816002811115611913576119136121b3565b9052506118b2565b806012036119365761192c82611d45565b60208401526118b2565b80601a0361195a57611947826117ff565b6001600160a01b031660408401526118b2565b806022036119755761196b82611d45565b60608401526118b2565b80602a03611990576119868261167c565b60808401526118b2565b806032036119ab576119a18261167c565b60a08401526118b2565b6119c381600716600581111561153f5761153f6121b3565b6118b2565b6119d06120f5565b604080518082019091525f808252602082018490525b6020820151518251101561154b576119fd8261160d565b905080600803611a4f57611a108261160d565b6005811115611a2157611a216121b3565b83906005811115611a3457611a346121b3565b90816005811115611a4757611a476121b3565b9052506119e6565b80601203611a7257611a68611a638361167c565b611d97565b60208401526119e6565b611a8a81600716600581111561153f5761153f6121b3565b6119e6565b5f600182516002811115611aa557611aa56121b3565b03611ab257506040015190565b600282516002811115611ac757611ac76121b3565b03611b42576001546060830151604051635c23bdf560e01b81526001600160a01b0390921691635c23bdf591611b039160040190815260200190565b602060405180830381865afa158015611b1e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a3919061234d565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c696420636f6e646974696f6e207479706560501b6044820152606401610266565b5f828218828411028218610fae565b5f828218828410028218610fae565b5f8282604051602001611bd092919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b5f5f611bf98361160d565b90506020811115611c08575f5ffd5b82515f611c158383612318565b9050846020015151811115611c28575f5ffd5b602080860151929092018201519452036008029190911c919050565b5f5f5f8351604103611c7b576020840151604085015160608601515f1a611c6d88828585611e57565b955095509550505050611c86565b505081515f91506002905b9250925092565b5f826003811115611ca057611ca06121b3565b03611ca9575050565b6001826003811115611cbd57611cbd6121b3565b03611cdb5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611cef57611cef6121b3565b03611d105760405163fce698f760e01b815260048101829052602401610266565b6003826003811115611d2457611d246121b3565b036117d0576040516335e2f38360e21b815260048101829052602401610266565b5f5f611d508361160d565b905080602014611d5e575f5ffd5b82516020808501515190611d73908390612318565b1115611d7d575f5ffd5b602080850151828101820151945090611852908390612318565b604080516080810182525f81830181815260608301829052825282518084018452818152602080820183905280840191909152835180850190945281845283018490529091905b6020820151518251101561154b57611df58261160d565b905080600a03611e1757611e10611e0b8361167c565b611f1f565b8352611dde565b80601203611e3a57611e30611e2b8361167c565b611ff4565b6020840152611dde565b611e5281600716600581111561153f5761153f6121b3565b611dde565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611e9057505f91506003905082611f15565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611ee1573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611f0c57505f925060019150829050611f15565b92505f91508190505b9450945094915050565b604080518082019091525f8082526020820152604080518082019091525f80825260208201849052505f5b6020820151518251101561154b57611f618261160d565b905080600803611fb357611f748261160d565b6002811115611f8557611f856121b3565b83906002811115611f9857611f986121b3565b90816002811115611fab57611fab6121b3565b905250611f4a565b80601203611fd757611fc4826117ff565b6001600160a01b03166020840152611f4a565b611fef81600716600581111561153f5761153f6121b3565b611f4a565b6040805180820182525f8082526020808301829052835180850190945281845283018490529091905b6020820151518251101561154b576120348261160d565b905080600a0361205757612047826117ff565b6001600160a01b0316835261201d565b806012036120725761206882611bee565b602084015261201d565b61208a81600716600581111561153f5761153f6121b3565b61201d565b6040518061012001604052805f81526020015f6001600160a01b031681526020015f6001600160a01b03168152602001606081526020016120ce6120f5565b81526020015f81526020015f81526020015f6001600160a01b031681526020015f81525090565b60408051808201909152805f8152602001612140604080516080810182525f818301818152606083018290528252825180840190935280835260208381019190915290919082015290565b905290565b5f5f60208385031215612156575f5ffd5b823567ffffffffffffffff81111561216c575f5ffd5b8301601f8101851361217c575f5ffd5b803567ffffffffffffffff811115612192575f5ffd5b8560208284010111156121a3575f5ffd5b6020919091019590945092505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261220957634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6020808252600e908201526d57726f6e6720707265696d61676560901b604082015260600190565b5f6001820161226f5761226f6121db565b5060010190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156122bb575f5ffd5b81518015158114610fae575f5ffd5b6020808252601a908201527f436f6e646974696f6e206973206e6f742066696e616c697a6564000000000000604082015260600190565b5f60208284031215612311575f5ffd5b5051919050565b808201808211156108a3576108a36121db565b5f5f6040838503121561233c575f5ffd5b505080516020909101519092909150565b5f6020828403121561235d575f5ffd5b81516001600160a01b0381168114610fae575f5ffdfea26469706673582212203f070bf1d575403cd87811f8ad219c23082bf0cf76c25ede8ec8f7d4f8ec140164736f6c634300081e0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_virtResolverAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"payRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPayRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolvePaymentByConditions\",\"inputs\":[{\"name\":\"_resolvePayRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolvePaymentByVouchedResult\",\"inputs\":[{\"name\":\"_vouchedPayResult\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"virtResolver\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIVirtContractResolver\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"ResolvePayment\",\"inputs\":[{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AmountNotGreater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIdMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ConditionNotFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DeadlinePassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\",\"inputs\":[{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidCoSignatures\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConditionType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxTransferExceeded\",\"inputs\":[{\"name\":\"attempted\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"max\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"PreimageMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ResolveUpdateWindowClosed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ResolverAddressMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroDeadline\",\"inputs\":[]}]", + Bin: "0x6080604052348015600e575f5ffd5b50604051612250380380612250833981016040819052602b916074565b5f80546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617905560a0565b80516001600160a01b0381168114606f575f5ffd5b919050565b5f5f604083850312156084575f5ffd5b608b83605a565b9150609760208401605a565b90509250929050565b6121a3806100ad5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634367e45e1461004e57806353fc513f146100635780635fff88c814610091578063ead54c1b146100a4575b5f5ffd5b61006161005c366004611f9e565b6100b7565b005b5f54610075906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61006161009f366004611f9e565b6101a7565b600154610075906001600160a01b031681565b5f6100f683838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061032e92505050565b90505f610105825f0151610443565b6080810151519091505f90818160058111156101235761012361200c565b0361013d57610136838560200151610623565b9150610189565b60018160058111156101515761015161200c565b0361016457610136838560200151610866565b61016d81610ab8565b156101815761013683856020015183610b0b565b610189612020565b8351805160209091012061019e848285610f54565b50505050505050565b5f6101e683838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061130792505050565b90505f6101f5825f01516113d3565b90505f610204825f0151610443565b6080810151602090810151810151810151908401519192508082111561024b5760405163098420c960e11b8152600481019290925260248201526044015b60405180910390fd5b5050825180516020918201207f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c812091850151610295908390611466565b90505f6102af86604001518461146690919063ffffffff16565b905083602001516001600160a01b0316826001600160a01b03161480156102eb575083604001516001600160a01b0316816001600160a01b0316145b6103085760405163b089d34760e01b815260040160405180910390fd5b84518051602091820120908601516103239086908390610f54565b505050505050505050565b60408051808201909152606080825260208201525f61035f83604080518082019091525f8152602081019190915290565b90505f600284516103709190612048565b67ffffffffffffffff81111561038857610388612067565b6040519080825280602002602001820160405280156103b1578160200160208202803683370190505b5090505f805b60208401515184511015610435576103ce8461148e565b905080600a036103e8576103e1846114fd565b85526103b7565b80601203610411575f6103fa856114fd565b600584901b850160200152506001909101906103b7565b6104308160071660058111156104295761042961200c565b85906115a0565b6103b7565b508152602083015250919050565b61044b611ee8565b604080518082019091525f80825260208201849052835161046e90600290612048565b67ffffffffffffffff81111561048657610486612067565b6040519080825280602002602001820160405280156104af578160200160208202803683370190505b5090505f805b60208401515184511015610615576104cc8461148e565b9050806008036104e6576104df8461148e565b85526104b5565b8060120361050a576104f784611680565b6001600160a01b031660208601526104b5565b80601a0361052e5761051b84611680565b6001600160a01b031660408601526104b5565b8060220361055f575f610548610543866114fd565b6116de565b600584901b850160200152506001909101906104b5565b80602a0361058257610578610573856114fd565b611849565b60808601526104b5565b8060300361059d576105938461148e565b60a08601526104b5565b806038036105b8576105ae8461148e565b60c08601526104b5565b806042036105dc576105c984611680565b6001600160a01b031660e08601526104b5565b806048036105f8576105ed8461148e565b6101008601526104b5565b6106108160071660058111156104295761042961200c565b6104b5565b508152606083015250919050565b5f8080805b856060015151811015610839575f8660600151828151811061064c5761064c61207b565b602002602001015190505f60028111156106685761066861200c565b8151600281111561067b5761067b61200c565b036106d65780602001518685815181106106975761069761207b565b602002602001015180519060200120146106c457604051636f43bb6360e01b815260040160405180910390fd5b836106ce8161208f565b945050610830565b6001815160028111156106eb576106eb61200c565b148061070957506002815160028111156107075761070761200c565b145b15610828575f61071882611910565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda949161074d91906004016120a7565b602060405180830381865afa158015610768573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078c91906120dc565b6107a9576040516340a4167b60e01b815260040160405180910390fd5b60a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb916107d991906004016120a7565b602060405180830381865afa1580156107f4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081891906120dc565b61082157600194505b5050610830565b610830612020565b50600101610628565b50801561084a575f92505050610860565b8460800151602001516020015160200151925050505b92915050565b5f808080805b866060015151811015610a82575f876060015182815181106108905761089061207b565b602002602001015190505f60028111156108ac576108ac61200c565b815160028111156108bf576108bf61200c565b0361091a5780602001518786815181106108db576108db61207b565b6020026020010151805190602001201461090857604051636f43bb6360e01b815260040160405180910390fd5b846109128161208f565b955050610a79565b60018151600281111561092f5761092f61200c565b148061094d575060028151600281111561094b5761094b61200c565b145b15610a71575f61095c82611910565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda949161099191906004016120a7565b602060405180830381865afa1580156109ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d091906120dc565b6109ed576040516340a4167b60e01b815260040160405180910390fd5b60a083015160405163ea4ba8eb60e01b8152600197506001600160a01b0383169163ea4ba8eb91610a2191906004016120a7565b602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6091906120dc565b15610a6a57600194505b5050610a79565b610a79612020565b5060010161086c565b50811580610a8d5750805b15610aad5785608001516020015160200151602001519350505050610860565b5f9350505050610860565b5f6003826005811115610acd57610acd61200c565b1480610aea57506004826005811115610ae857610ae861200c565b145b8061086057506005826005811115610b0457610b0461200c565b1492915050565b5f808080805b876060015151811015610ee6575f88606001518281518110610b3557610b3561207b565b602002602001015190505f6002811115610b5157610b5161200c565b81516002811115610b6457610b6461200c565b03610bbf578060200151888581518110610b8057610b8061207b565b60200260200101518051906020012014610bad57604051636f43bb6360e01b815260040160405180910390fd5b83610bb78161208f565b945050610edd565b600181516002811115610bd457610bd461200c565b1480610bf25750600281516002811115610bf057610bf061200c565b145b15610ed5575f610c0182611910565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda9491610c3691906004016120a7565b602060405180830381865afa158015610c51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7591906120dc565b610c92576040516340a4167b60e01b815260040160405180910390fd5b6003896005811115610ca657610ca661200c565b03610d2b5760a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb91610cdb91906004016120a7565b602060405180830381865afa158015610cf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1a91906120fb565b610d249088612112565b9650610eca565b6004896005811115610d3f57610d3f61200c565b03610dbc57610d2487826001600160a01b031663ea4ba8eb8660a001516040518263ffffffff1660e01b8152600401610d7891906120a7565b602060405180830381865afa158015610d93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db791906120fb565b6119dc565b6005896005811115610dd057610dd061200c565b03610ec2578415610e5357610d2487826001600160a01b031663ea4ba8eb8660a001516040518263ffffffff1660e01b8152600401610e0f91906120a7565b602060405180830381865afa158015610e2a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4e91906120fb565b6119eb565b60a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb91610e8391906004016120a7565b602060405180830381865afa158015610e9e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2491906120fb565b610eca612020565b600194505050610edd565b610edd612020565b50600101610b11565b508015610f365760808701516020908101518101510151839080821115610f295760405163098420c960e11b815260048101929092526024820152604401610242565b5050829350505050610f4d565b866080015160200151602001516020015193505050505b9392505050565b6101008301514690808214610f8557604051630432cec160e31b815260048101929092526024820152604401610242565b505060e08301516001600160a01b03163014610fb4576040516307f12de960e31b815260040160405180910390fd5b60a08301514290811115610fdb5760405163387b2e5560e11b815260040160405180910390fd5b5f610fe684306119fa565b5f80546040516304f61c0b60e31b815260048101849052929350909182916001600160a01b0316906327b0e058906024016040805180830381865afa158015611031573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110559190612125565b91509150805f14806110675750808411155b6110845760405163b03f424d60e01b815260040160405180910390fd5b80156111fe578185116110a9576040516252aa6160e51b815260040160405180910390fd5b86608001516020015160200151602001518503611167575f54604051630e1e354960e41b81526004810188905260248101879052604481018690526001600160a01b039091169063e1e35490906064015f604051808303815f87803b158015611110575f5ffd5b505af1158015611122573d5f5f3e3d5ffd5b505060408051888152602081018890528693507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb179250015b60405180910390a261019e565b5f5460405163f8fb012f60e01b815260048101889052602481018790526001600160a01b039091169063f8fb012f906044015f604051808303815f87803b1580156111b0575f5ffd5b505af11580156111c2573d5f5f3e3d5ffd5b505060408051888152602081018590528693507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb1792500161115a565b5f8760800151602001516020015160200151860361121d57508361125c565b61123a8860c00151866112309190612112565b8960a001516119eb565b90505f811161125c5760405163f728a30560e01b815260040160405180910390fd5b5f54604051630e1e354960e41b81526004810189905260248101889052604481018390526001600160a01b039091169063e1e35490906064015f604051808303815f87803b1580156112ac575f5ffd5b505af11580156112be573d5f5f3e3d5ffd5b505060408051898152602081018590528793507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb1792500160405180910390a25050505050505050565b61132b60405180606001604052806060815260200160608152602001606081525090565b604080518082019091525f808252602082018490525b602082015151825110156113cc576113588261148e565b905080600a036113725761136b826114fd565b8352611341565b8060120361138d57611383826114fd565b6020840152611341565b80601a036113a85761139e826114fd565b6040840152611341565b6113c78160071660058111156113c0576113c061200c565b83906115a0565b611341565b5050919050565b604080518082018252606081525f6020808301829052835180850190945281845283018490529091905b602082015151825110156113cc576114148261148e565b905080600a0361142e57611427826114fd565b83526113fd565b806012036114495761143f82611a47565b60208401526113fd565b6114618160071660058111156113c0576113c061200c565b6113fd565b5f5f5f5f6114748686611a9d565b9250925092506114848282611ae6565b5090949350505050565b602080820151825181515f938301845b600a81101561004a578284106114b2575f5ffd5b838201515f1a607f8116600783021b969096179560019094019360808110156114f457816009036114e957600281106114e9575f5ffd5b505050935250919050565b5060010161149e565b60605f6115098361148e565b90505f81845f015161151b9190612112565b905083602001515181111561152e575f5ffd5b8167ffffffffffffffff81111561154757611547612067565b6040519080825280601f01601f191660200182016040528015611571576020820181803683370190505b5060208086015186519295509181860191908301015f5b858110156114e9578181015183820152602001611588565b5f8160058111156115b3576115b361200c565b036115c6576115c18261148e565b505050565b60028160058111156115da576115da61200c565b03611611575f6115e98361148e565b905080835f018181516115fc9190612112565b905250602083015151835111156115c1575f5ffd5b60018160058111156116255761162561200c565b03611655576008825f0181815161163c9190612112565b90525060208201515182511115611651575f5ffd5b5050565b60058160058111156116695761166961200c565b0361004a576004825f0181815161163c9190612112565b5f5f61168b8361148e565b905080601414611699575f5ffd5b82516020840151516116ac826014612112565b11156116b6575f5ffd5b6020808501518281019091015160601c93506116d3826014612112565b909452509092915050565b61171d6040805160c08101909152805f81526020015f81526020015f6001600160a01b031681526020015f815260200160608152602001606081525090565b604080518082019091525f808252602082018490525b602082015151825110156113cc5761174a8261148e565b90508060080361179c5761175d8261148e565b600281111561176e5761176e61200c565b839060028111156117815761178161200c565b908160028111156117945761179461200c565b905250611733565b806012036117b7576117ad82611b9e565b6020840152611733565b80601a036117db576117c882611680565b6001600160a01b03166040840152611733565b806022036117f6576117ec82611b9e565b6060840152611733565b80602a0361181157611807826114fd565b6080840152611733565b8060320361182c57611822826114fd565b60a0840152611733565b6118448160071660058111156113c0576113c061200c565b611733565b611851611f4e565b604080518082019091525f808252602082018490525b602082015151825110156113cc5761187e8261148e565b9050806008036118d0576118918261148e565b60058111156118a2576118a261200c565b839060058111156118b5576118b561200c565b908160058111156118c8576118c861200c565b905250611867565b806012036118f3576118e96118e4836114fd565b611bf0565b6020840152611867565b61190b8160071660058111156113c0576113c061200c565b611867565b5f6001825160028111156119265761192661200c565b0361193357506040015190565b6002825160028111156119485761194861200c565b036119c3576001546060830151604051635c23bdf560e01b81526001600160a01b0390921691635c23bdf5916119849160040190815260200190565b602060405180830381865afa15801561199f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108609190612147565b604051631491062960e31b815260040160405180910390fd5b5f828218828411028218610f4d565b5f828218828410028218610f4d565b5f8282604051602001611a2992919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b5f5f611a528361148e565b90506020811115611a61575f5ffd5b82515f611a6e8383612112565b9050846020015151811115611a81575f5ffd5b602080860151929092018201519452036008029190911c919050565b5f5f5f8351604103611ad4576020840151604085015160608601515f1a611ac688828585611cb0565b955095509550505050611adf565b505081515f91506002905b9250925092565b5f826003811115611af957611af961200c565b03611b02575050565b6001826003811115611b1657611b1661200c565b03611b345760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611b4857611b4861200c565b03611b695760405163fce698f760e01b815260048101829052602401610242565b6003826003811115611b7d57611b7d61200c565b03611651576040516335e2f38360e21b815260048101829052602401610242565b5f5f611ba98361148e565b905080602014611bb7575f5ffd5b82516020808501515190611bcc908390612112565b1115611bd6575f5ffd5b6020808501518281018201519450906116d3908390612112565b604080516080810182525f81830181815260608301829052825282518084018452818152602080820183905280840191909152835180850190945281845283018490529091905b602082015151825110156113cc57611c4e8261148e565b905080600a03611c7057611c69611c64836114fd565b611d78565b8352611c37565b80601203611c9357611c89611c84836114fd565b611e4d565b6020840152611c37565b611cab8160071660058111156113c0576113c061200c565b611c37565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611ce957505f91506003905082611d6e565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611d3a573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611d6557505f925060019150829050611d6e565b92505f91508190505b9450945094915050565b604080518082019091525f8082526020820152604080518082019091525f80825260208201849052505f5b602082015151825110156113cc57611dba8261148e565b905080600803611e0c57611dcd8261148e565b6002811115611dde57611dde61200c565b83906002811115611df157611df161200c565b90816002811115611e0457611e0461200c565b905250611da3565b80601203611e3057611e1d82611680565b6001600160a01b03166020840152611da3565b611e488160071660058111156113c0576113c061200c565b611da3565b6040805180820182525f8082526020808301829052835180850190945281845283018490529091905b602082015151825110156113cc57611e8d8261148e565b905080600a03611eb057611ea082611680565b6001600160a01b03168352611e76565b80601203611ecb57611ec182611a47565b6020840152611e76565b611ee38160071660058111156113c0576113c061200c565b611e76565b6040518061012001604052805f81526020015f6001600160a01b031681526020015f6001600160a01b0316815260200160608152602001611f27611f4e565b81526020015f81526020015f81526020015f6001600160a01b031681526020015f81525090565b60408051808201909152805f8152602001611f99604080516080810182525f818301818152606083018290528252825180840190935280835260208381019190915290919082015290565b905290565b5f5f60208385031215611faf575f5ffd5b823567ffffffffffffffff811115611fc5575f5ffd5b8301601f81018513611fd5575f5ffd5b803567ffffffffffffffff811115611feb575f5ffd5b856020828401011115611ffc575f5ffd5b6020919091019590945092505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261206257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f600182016120a0576120a0612034565b5060010190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156120ec575f5ffd5b81518015158114610f4d575f5ffd5b5f6020828403121561210b575f5ffd5b5051919050565b8082018082111561086057610860612034565b5f5f60408385031215612136575f5ffd5b505080516020909101519092909150565b5f60208284031215612157575f5ffd5b81516001600160a01b0381168114610f4d575f5ffdfea26469706673582212203ea6cf12ec9199c5a11647455c72f5c96f5a672dc3d935e6c558b8c9f4d6c10664736f6c634300081e0033", } // PayResolverABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/routerregistry/routerregistry.go b/chain/channel-eth-go/routerregistry/routerregistry.go index 5835e0b..206545c 100644 --- a/chain/channel-eth-go/routerregistry/routerregistry.go +++ b/chain/channel-eth-go/routerregistry/routerregistry.go @@ -32,8 +32,8 @@ var ( // RouterRegistryMetaData contains all meta data concerning the RouterRegistry contract. var RouterRegistryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"deregisterRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"refreshRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"routerInfo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"RouterUpdated\",\"inputs\":[{\"name\":\"op\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumIRouterRegistry.RouterOperation\"},{\"name\":\"routerAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", - Bin: "0x6080604052348015600e575f5ffd5b506102818061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806324f277d21461004e5780632ff0282b146100585780637880945614610060578063d1cf70d114610091575b5f5ffd5b610056610099565b005b610056610136565b61007f61006e36600461021e565b5f6020819052908152604090205481565b60405190815260200160405180910390f35b6100566101ab565b335f90815260208190526040902054156100fa5760405162461bcd60e51b815260206004820152601d60248201527f526f75746572206164647265737320616c72656164792065786973747300000060448201526064015b60405180910390fd5b335f8181526020819052604081204290555b6040517fed739f5df64012854c2039ba144af8e3af26211fc7f10a959c6a592ae58c4491905f90a3565b335f9081526020819052604081205490036101935760405162461bcd60e51b815260206004820152601d60248201527f526f75746572206164647265737320646f6573206e6f7420657869737400000060448201526064016100f1565b335f818152602081905260409020429055600261010c565b335f9081526020819052604081205490036102085760405162461bcd60e51b815260206004820152601d60248201527f526f75746572206164647265737320646f6573206e6f7420657869737400000060448201526064016100f1565b335f81815260208190526040812055600161010c565b5f6020828403121561022e575f5ffd5b81356001600160a01b0381168114610244575f5ffd5b939250505056fea264697066735822122022d5647e3ba34f507ce9aa3328e73a0e10522cc666f87eb783f4629fb6e1fbdc64736f6c634300081e0033", + ABI: "[{\"type\":\"function\",\"name\":\"deregisterRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"refreshRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"routerInfo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"RouterUpdated\",\"inputs\":[{\"name\":\"op\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumIRouterRegistry.RouterOperation\"},{\"name\":\"routerAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"RouterAlreadyRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RouterNotRegistered\",\"inputs\":[]}]", + Bin: "0x6080604052348015600e575f5ffd5b506101ef8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806324f277d21461004e5780632ff0282b146100585780637880945614610060578063d1cf70d114610091575b5f5ffd5b610056610099565b005b610056610102565b61007f61006e36600461018c565b5f6020819052908152604090205481565b60405190815260200160405180910390f35b610056610148565b335f90815260208190526040902054156100c657604051633ba24ff960e11b815260040160405180910390fd5b335f8181526020819052604081204290555b6040517fed739f5df64012854c2039ba144af8e3af26211fc7f10a959c6a592ae58c4491905f90a3565b335f908152602081905260408120549003610130576040516315812c6160e11b815260040160405180910390fd5b335f81815260208190526040902042905560026100d8565b335f908152602081905260408120549003610176576040516315812c6160e11b815260040160405180910390fd5b335f8181526020819052604081205560016100d8565b5f6020828403121561019c575f5ffd5b81356001600160a01b03811681146101b2575f5ffd5b939250505056fea2646970667358221220c1173d557352a367c9a8f980f16d1e8ff288a407c589f0293ef5f4c317aab39164736f6c634300081e0033", } // RouterRegistryABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/virtresolver/virtresolver.go b/chain/channel-eth-go/virtresolver/virtresolver.go index fc2ff70..4fc90fa 100644 --- a/chain/channel-eth-go/virtresolver/virtresolver.go +++ b/chain/channel-eth-go/virtresolver/virtresolver.go @@ -32,8 +32,8 @@ var ( // VirtContractResolverMetaData contains all meta data concerning the VirtContractResolver contract. var VirtContractResolverMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"deploy\",\"inputs\":[{\"name\":\"_code\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_virtAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Deploy\",\"inputs\":[{\"name\":\"virtAddr\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false}]", - Bin: "0x6080604052348015600e575f5ffd5b506103648061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80635c23bdf5146100385780639c4ae2d014610068575b5f5ffd5b61004b610046366004610293565b61008b565b6040516001600160a01b0390911681526020015b60405180910390f35b61007b6100763660046102aa565b61010e565b604051901515815260200161005f565b5f818152602081905260408120546001600160a01b03166100f35760405162461bcd60e51b815260206004820152601b60248201527f4e6f6e6578697374656e74207669727475616c2061646472657373000000000060448201526064015b60405180910390fd5b505f908152602081905260409020546001600160a01b031690565b5f5f8484846040516020016101259392919061031c565b6040516020818303038152906040528051906020012090505f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250868152602081905260409020549394505050506001600160a01b0316156101d85760405162461bcd60e51b815260206004820152601d60248201527f43757272656e74207265616c2061646472657373206973206e6f74203000000060448201526064016100ea565b5f8151602083015ff090506001600160a01b0381166102395760405162461bcd60e51b815260206004820152601760248201527f43726561746520636f6e7472616374206661696c65642e00000000000000000060448201526064016100ea565b5f8381526020819052604080822080546001600160a01b0319166001600160a01b0385161790555184917f149208daa30a9306858cc9c171c3510e0e50ab5d59ed2027a37a728430dd02e491a25060019695505050505050565b5f602082840312156102a3575f5ffd5b5035919050565b5f5f5f604084860312156102bc575f5ffd5b833567ffffffffffffffff8111156102d2575f5ffd5b8401601f810186136102e2575f5ffd5b803567ffffffffffffffff8111156102f8575f5ffd5b866020828401011115610309575f5ffd5b6020918201979096509401359392505050565b8284823790910190815260200191905056fea26469706673582212201a345ef0281e1b23f511658aaf7664c8efc6b9a786cc0b36076021a932afe3e664736f6c634300081e0033", + ABI: "[{\"type\":\"function\",\"name\":\"deploy\",\"inputs\":[{\"name\":\"_code\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_virtAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Deploy\",\"inputs\":[{\"name\":\"virtAddr\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CreateContractFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VirtAddressOccupied\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VirtAddressUnresolved\",\"inputs\":[]}]", + Bin: "0x6080604052348015600e575f5ffd5b506102d28061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80635c23bdf5146100385780639c4ae2d014610068575b5f5ffd5b61004b610046366004610201565b61008b565b6040516001600160a01b0390911681526020015b60405180910390f35b61007b610076366004610218565b6100da565b604051901515815260200161005f565b5f818152602081905260408120546001600160a01b03166100bf5760405163c405fe3f60e01b815260040160405180910390fd5b505f908152602081905260409020546001600160a01b031690565b5f5f8484846040516020016100f19392919061028a565b6040516020818303038152906040528051906020012090505f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250868152602081905260409020549394505050506001600160a01b0316156101755760405163f57a482960e01b815260040160405180910390fd5b5f8151602083015ff090506001600160a01b0381166101a757604051635158948b60e01b815260040160405180910390fd5b5f8381526020819052604080822080546001600160a01b0319166001600160a01b0385161790555184917f149208daa30a9306858cc9c171c3510e0e50ab5d59ed2027a37a728430dd02e491a25060019695505050505050565b5f60208284031215610211575f5ffd5b5035919050565b5f5f5f6040848603121561022a575f5ffd5b833567ffffffffffffffff811115610240575f5ffd5b8401601f81018613610250575f5ffd5b803567ffffffffffffffff811115610266575f5ffd5b866020828401011115610277575f5ffd5b6020918201979096509401359392505050565b8284823790910190815260200191905056fea2646970667358221220ea66b3524774a14ad414aac6c9f17aa645e496844a4a3e425077631349919ca764736f6c634300081e0033", } // VirtContractResolverABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/wallet/wallet.go b/chain/channel-eth-go/wallet/wallet.go index 2ec338a..8a232a8 100644 --- a/chain/channel-eth-go/wallet/wallet.go +++ b/chain/channel-eth-go/wallet/wallet.go @@ -32,8 +32,8 @@ var ( // CelerWalletMetaData contains all meta data concerning the CelerWallet contract. var CelerWalletMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"create\",\"inputs\":[{\"name\":\"_owners\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_nonce\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositERC20\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositNative\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"drainToken\",\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBalance\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperator\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getProposalVote\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getProposedNewOperator\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWalletOwners\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeNewOperator\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_newOperator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOperatorship\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_newOperator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferToWallet\",\"inputs\":[{\"name\":\"_fromWalletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toWalletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"walletNum\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ChangeOperator\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"oldOperator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOperator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CreateWallet\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owners\",\"type\":\"address[]\",\"indexed\":true,\"internalType\":\"address[]\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DepositToWallet\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DrainToken\",\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProposeNewOperator\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newOperator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"proposer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransferToWallet\",\"inputs\":[{\"name\":\"fromWalletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"toWalletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawFromWallet\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x6080604052348015600e575f5ffd5b503380603357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b603a81603f565b506097565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b61154e806100a45f395ff3fe60806040526004361061011b575f3560e01c806380ba952e1161009d578063a96a5f9411610062578063a96a5f9414610310578063bfa2c1d214610347578063c108bb4014610366578063cafd460014610385578063f2fde38b146103a4575f5ffd5b806380ba952e1461027e5780638456cb591461029d5780638da5cb5b146102b15780638e0cc176146102d2578063a0c89a8c146102f1575f5ffd5b80633f4ba83a116100e35780633f4ba83a1461020257806342ef5fbb14610216578063530e931c146102295780635c975abb14610248578063715018a61461026a575f5ffd5b80630d63a1fd1461011f57806314da2906146101515780631687cc60146101a0578063323c4480146101cc57806336cc9e8d146101ed575b5f5ffd5b34801561012a575f5ffd5b5061013e610139366004611135565b6103c3565b6040519081526020015b60405180910390f35b34801561015c575f5ffd5b5061018861016b36600461121b565b5f908152600260205260409020600301546001600160a01b031690565b6040516001600160a01b039091168152602001610148565b3480156101ab575f5ffd5b506101bf6101ba36600461121b565b61053f565b6040516101489190611232565b3480156101d7575f5ffd5b506101eb6101e636600461127d565b6105a8565b005b3480156101f8575f5ffd5b5061013e60015481565b34801561020d575f5ffd5b506101eb6106b7565b6101eb61022436600461121b565b6106c9565b348015610234575f5ffd5b5061013e61024336600461127d565b610719565b348015610253575f5ffd5b505f5460ff165b6040519015158152602001610148565b348015610275575f5ffd5b506101eb610744565b348015610289575f5ffd5b506101eb6102983660046112a7565b610755565b3480156102a8575f5ffd5b506101eb610856565b3480156102bc575f5ffd5b505f5461010090046001600160a01b0316610188565b3480156102dd575f5ffd5b506101eb6102ec3660046112f1565b610866565b3480156102fc575f5ffd5b506101eb61030b36600461127d565b61093f565b34801561031b575f5ffd5b5061018861032a36600461121b565b5f908152600260205260409020600101546001600160a01b031690565b348015610352575f5ffd5b506101eb610361366004611332565b610990565b348015610371575f5ffd5b506101eb61038036600461135b565b6109f8565b348015610390575f5ffd5b5061025a61039f36600461127d565b610a65565b3480156103af575f5ffd5b506101eb6103be36600461137d565b610abf565b5f6103cc610afc565b6001600160a01b0383166103fb5760405162461bcd60e51b81526004016103f29061139d565b60405180910390fd5b60408051466020808301919091526bffffffffffffffffffffffff1930606090811b82168486015233901b166054830152606880830186905283518084039091018152608890920183528151918101919091205f818152600290925291902060018101546001600160a01b0316156104aa5760405162461bcd60e51b815260206004820152601260248201527113d8d8dd5c1a5959081dd85b1b195d081a5960721b60448201526064016103f2565b85516104bc908290602089019061108f565b50600181810180546001600160a01b0319166001600160a01b0388161790558054905f6104e8836113e8565b9190505550846001600160a01b0316866040516105059190611400565b6040519081900381209084907fe778e91533ef049a5fc99752bc4efb2b50ca4c967dfc0d4bb4782fb128070c34905f90a450949350505050565b5f8181526002602090815260409182902080548351818402810184019094528084526060939283018282801561059c57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161057e575b50505050509050919050565b81336105b48282610b1f565b6105d05760405162461bcd60e51b81526004016103f29061143e565b6001600160a01b0383166105f65760405162461bcd60e51b81526004016103f29061139d565b5f84815260026020526040902060038101546001600160a01b038581169116146106415761062381610b86565b6003810180546001600160a01b0319166001600160a01b0386161790555b335f818152600483016020526040808220805460ff19166001179055516001600160a01b0387169188917f71f9e7796b33cb192d1670169ee7f4af7c5364f8f01bab4b95466787593745c39190a461069881610bea565b156106b0576106a78585610c57565b6106b081610b86565b5050505050565b6106bf610ce3565b6106c7610d15565b565b6106d1610afc565b346106de825f8381610d66565b6040518181525f9083907fbc8e388b96ba8b9f627cb6d72d3513182f763c33c6107ecd31191de1f71abc1a9060200160405180910390a35050565b5f8281526002602081815260408084206001600160a01b038616855290920190529020545b92915050565b61074c610ce3565b6106c75f610e15565b61075d610afc565b5f8581526002602052604090206001015485906001600160a01b031633146107975760405162461bcd60e51b81526004016103f29061147f565b85836107a38282610b1f565b6107bf5760405162461bcd60e51b81526004016103f29061143e565b86856107cb8282610b1f565b6107e75760405162461bcd60e51b81526004016103f29061143e565b6107f48a89886001610d66565b6108008989885f610d66565b604080516001600160a01b038981168252602082018990528a16918b918d917f1b56f805e5edb1e61b0d3f46feffdcbab5e591aa0e70e978ada9fc22093601c8910160405180910390a450505050505050505050565b61085e610ce3565b6106c7610e6d565b61086e610afc565b5f8481526002602052604090206001015484906001600160a01b031633146108a85760405162461bcd60e51b81526004016103f29061147f565b84836108b48282610b1f565b6108d05760405162461bcd60e51b81526004016103f29061143e565b6108dd8787866001610d66565b846001600160a01b0316866001600160a01b0316887fd897e862036b62a0f770979fbd2227f3210565bba2eb4d9acd1dc8ccc00c928b8760405161092391815260200190565b60405180910390a4610936868686610ea9565b50505050505050565b610947610afc565b5f8281526002602052604090206001015482906001600160a01b031633146109815760405162461bcd60e51b81526004016103f29061147f565b61098b8383610c57565b505050565b610998610f69565b6109a0610ce3565b816001600160a01b0316836001600160a01b03167f896ecb17b26927fb33933fc5f413873193bced3c59fe736c42968a9778bf6b58836040516109e591815260200190565b60405180910390a361098b838383610ea9565b610a00610afc565b610a0c8383835f610d66565b816001600160a01b0316837fbc8e388b96ba8b9f627cb6d72d3513182f763c33c6107ecd31191de1f71abc1a83604051610a4891815260200190565b60405180910390a361098b6001600160a01b038316333084610f8b565b5f8282610a728282610b1f565b610a8e5760405162461bcd60e51b81526004016103f29061143e565b5050505f9182526002602090815260408084206001600160a01b039390931684526004909201905290205460ff1690565b610ac7610ce3565b6001600160a01b038116610af057604051631e4fbdf760e01b81525f60048201526024016103f2565b610af981610e15565b50565b5f5460ff16156106c75760405163d93c066560e01b815260040160405180910390fd5b5f828152600260205260408120815b8154811015610b7c57815f018181548110610b4b57610b4b6114b6565b5f918252602090912001546001600160a01b0390811690851603610b745760019250505061073e565b600101610b2e565b505f949350505050565b5f5b8154811015610be6575f826004015f845f018481548110610bab57610bab6114b6565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610b88565b5050565b5f805b8254811015610c4e57826004015f845f018381548110610c0f57610c0f6114b6565b5f9182526020808320909101546001600160a01b0316835282019290925260400181205460ff1615159003610c4657505f92915050565b600101610bed565b50600192915050565b6001600160a01b038116610c7d5760405162461bcd60e51b81526004016103f29061139d565b5f828152600260205260408082206001810180546001600160a01b038681166001600160a01b031983168117909355935192949316929091839187917f118c3f8030bc3c8254e737a0bd0584403c33646afbcbee8321c3bd5b26543cda9190a450505050565b5f546001600160a01b036101009091041633146106c75760405163118cdaa760e01b81523360048201526024016103f2565b610d1d610f69565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f84815260026020526040812090826001811115610d8657610d866114ca565b03610dcf576001600160a01b0384165f908152600282016020526040902054610db09084906114de565b6001600160a01b0385165f9081526002830160205260409020556106b0565b6001826001811115610de357610de36114ca565b03610e0d576001600160a01b0384165f908152600282016020526040902054610db09084906114f1565b6106b0611504565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b610e75610afc565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d493390565b6001600160a01b038316610f55575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610f00576040519150601f19603f3d011682016040523d82523d5f602084013e610f05565b606091505b5050905080610f4f5760405162461bcd60e51b815260206004820152601660248201527513985d1a5d99481d1c985b9cd9995c8819985a5b195960521b60448201526064016103f2565b50505050565b61098b6001600160a01b0384168383610ff2565b5f5460ff166106c757604051638dfc202b60e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610f4f9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611023565b6040516001600160a01b0383811660248301526044820183905261098b91859182169063a9059cbb90606401610fc0565b5f5f60205f8451602086015f885af180611042576040513d5f823e3d81fd5b50505f513d91508115611059578060011415611066565b6001600160a01b0384163b155b15610f4f57604051635274afe760e01b81526001600160a01b03851660048201526024016103f2565b828054828255905f5260205f209081019282156110e2579160200282015b828111156110e257825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906110ad565b506110ee9291506110f2565b5090565b5b808211156110ee575f81556001016110f3565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b0381168114611130575f5ffd5b919050565b5f5f5f60608486031215611147575f5ffd5b833567ffffffffffffffff81111561115d575f5ffd5b8401601f8101861361116d575f5ffd5b803567ffffffffffffffff81111561118757611187611106565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156111b4576111b4611106565b6040529182526020818401810192908101898411156111d1575f5ffd5b6020850194505b838510156111f7576111e98561111a565b8152602094850194016111d8565b50955061120a925050506020850161111a565b929592945050506040919091013590565b5f6020828403121561122b575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b818110156112725783516001600160a01b031683526020938401939092019160010161124b565b509095945050505050565b5f5f6040838503121561128e575f5ffd5b8235915061129e6020840161111a565b90509250929050565b5f5f5f5f5f60a086880312156112bb575f5ffd5b85359450602086013593506112d26040870161111a565b92506112e06060870161111a565b949793965091946080013592915050565b5f5f5f5f60808587031215611304575f5ffd5b843593506113146020860161111a565b92506113226040860161111a565b9396929550929360600135925050565b5f5f5f60608486031215611344575f5ffd5b61134d8461111a565b925061120a6020850161111a565b5f5f5f6060848603121561136d575f5ffd5b8335925061120a6020850161111a565b5f6020828403121561138d575f5ffd5b6113968261111a565b9392505050565b6020808252601a908201527f4e6577206f70657261746f722069732061646472657373283029000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f600182016113f9576113f96113d4565b5060010190565b81515f90829060208501835b828110156114335781516001600160a01b031684526020938401939091019060010161140c565b509195945050505050565b60208082526021908201527f476976656e2061646472657373206973206e6f742077616c6c6574206f776e656040820152603960f91b606082015260800190565b6020808252601a908201527f6d73672e73656e646572206973206e6f74206f70657261746f72000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b8082018082111561073e5761073e6113d4565b8181038181111561073e5761073e6113d4565b634e487b7160e01b5f52600160045260245ffdfea26469706673582212202bf51f79e7d77c2efee8700f807f6694bbd3ec0a9d8a32f8a3d6c45bc5dce95264736f6c634300081e0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"MAX_OWNERS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"create\",\"inputs\":[{\"name\":\"_owners\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_nonce\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositERC20\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositNative\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"drainToken\",\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasVoted\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOperator\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferBetweenWallets\",\"inputs\":[{\"name\":\"_fromWalletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toWalletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOperatorship\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_newOperator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"voteForOperator\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_candidate\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"walletCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"walletOperator\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"walletOwners\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Deposited\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorChanged\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"oldOperator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOperator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorVoted\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"voter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenDrained\",\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransferredBetweenWallets\",\"inputs\":[{\"name\":\"fromWalletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"toWalletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WalletCreated\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owners\",\"type\":\"address[]\",\"indexed\":true,\"internalType\":\"address[]\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NativeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWalletOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"TooManyOwners\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WalletIdOccupied\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052348015600e575f5ffd5b503380603357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b603a81603f565b506097565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b61137d806100a45f395ff3fe608060405260043610610126575f3560e01c80638e0cc176116100a8578063bfa2c1d21161006d578063bfa2c1d214610324578063c108bb4014610343578063c203823614610362578063d23856f6146103a6578063e89a62ee146103c5578063f2fde38b146103e4575f5ffd5b80638e0cc176146102595780639dfaff8f14610278578063a0c89a8c146102af578063aadc3b72146102ce578063aee2e989146102ed575f5ffd5b80635c975abb116100ee5780635c975abb146101ae578063628c40eb146101d0578063715018a6146101fc5780638456cb59146102105780638da5cb5b14610224575f5ffd5b80630b8bb1461461012a5780630d63a1fd1461015157806329b57c69146101705780633f4ba83a1461018557806342ef5fbb1461019b575b5f5ffd5b348015610135575f5ffd5b5061013e600a81565b6040519081526020015b60405180910390f35b34801561015c575f5ffd5b5061013e61016b366004611093565b610403565b34801561017b575f5ffd5b5061013e60015481565b348015610190575f5ffd5b50610199610571565b005b6101996101a936600461111a565b610583565b3480156101b9575f5ffd5b505f5460ff165b6040519015158152602001610148565b3480156101db575f5ffd5b506101ef6101ea36600461111a565b6105f7565b6040516101489190611131565b348015610207575f5ffd5b50610199610660565b34801561021b575f5ffd5b50610199610671565b34801561022f575f5ffd5b505f5461010090046001600160a01b03165b6040516001600160a01b039091168152602001610148565b348015610264575f5ffd5b5061019961027336600461117c565b610681565b348015610283575f5ffd5b5061024161029236600461111a565b5f908152600260205260409020600301546001600160a01b031690565b3480156102ba575f5ffd5b506101996102c93660046111bd565b61073b565b3480156102d9575f5ffd5b506101c06102e83660046111bd565b61075c565b3480156102f8575f5ffd5b5061024161030736600461111a565b5f908152600260205260409020600101546001600160a01b031690565b34801561032f575f5ffd5b5061019961033e3660046111e7565b61078b565b34801561034e575f5ffd5b5061019961035d366004611221565b6107f3565b34801561036d575f5ffd5b5061013e61037c3660046111bd565b5f8281526002602081815260408084206001600160a01b0386168552909201905290205492915050565b3480156103b1575f5ffd5b506101996103c0366004611243565b610888565b3480156103d0575f5ffd5b506101996103df3660046111bd565b610978565b3480156103ef575f5ffd5b506101996103fe36600461128d565b610a63565b5f61040c610aa5565b6001600160a01b0383166104335760405163d92e233d60e01b815260040160405180910390fd5b600a84111561045557604051631785167360e21b815260040160405180910390fd5b60408051466020808301919091526bffffffffffffffffffffffff1930606090811b82168486015233901b166054830152606880830186905283518084039091018152608890920183528151918101919091205f818152600290925291902060018101546001600160a01b0316156104e057604051633ce274d560e21b815260040160405180910390fd5b6104eb818888611003565b50600181810180546001600160a01b0319166001600160a01b0388161790558054905f610517836112c1565b9190505550846001600160a01b031687876040516105369291906112d9565b6040519081900381209084907f8c665d417fd8d3d60d702a3d19dc8184b038e82487203ff32011555beb6cad90905f90a45095945050505050565b610579610ac8565b610581610afa565b565b61058b610aa5565b5f81815260026020818152604080842084805290920190528120805434928392916105b790849061130d565b90915550506040518181525f9083907f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b9060200160405180910390a35050565b5f8181526002602090815260409182902080548351818402810184019094528084526060939283018282801561065457602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610636575b50505050509050919050565b610668610ac8565b6105815f610b4b565b610679610ac8565b610581610ba3565b610689610aa5565b8361069381610bdf565b848361069f8282610c18565b5f8781526002602081815260408084206001600160a01b038b1685529092019052812080548692906106d2908490611320565b92505081905550846001600160a01b0316866001600160a01b0316887fa6786aab7dbbc48b4b0387488b407bd81448030ab207b50bea7dbb5fbc1cd9eb8760405161071f91815260200190565b60405180910390a4610732868686610c43565b50505050505050565b610743610aa5565b8161074d81610bdf565b6107578383610cdb565b505050565b5f8281526002602090815260408083206001600160a01b038516845260040190915290205460ff165b92915050565b610793610da1565b61079b610ac8565b816001600160a01b0316836001600160a01b03167fb9f4fab3dc87425962ebb52a84543eb50c90a808609ee6967a38308d6119c4bc836040516107e091815260200190565b60405180910390a3610757838383610c43565b6107fb610aa5565b5f8381526002602081815260408084206001600160a01b038716855290920190528120805483929061082e90849061130d565b90915550506040518181526001600160a01b0383169084907f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b9060200160405180910390a36107576001600160a01b038316333084610dc3565b610890610aa5565b8461089a81610bdf565b85836108a68282610c18565b86856108b28282610c18565b5f8a81526002602081815260408084206001600160a01b038d1685529092019052812080548892906108e5908490611320565b90915550505f8981526002602081815260408084206001600160a01b038d16855290920190528120805488929061091d90849061130d565b9091555050604080516001600160a01b038981168252602082018990528a16918b918d917f181fa219f874a081d83f85e8c9afdc32ede9e7cc757b9537f9cd04f3417a6130910160405180910390a450505050505050505050565b81336109848282610c18565b6001600160a01b0383166109ab5760405163d92e233d60e01b815260040160405180910390fd5b5f84815260026020526040902060038101546001600160a01b038581169116146109f6576109d881610e2a565b6003810180546001600160a01b0319166001600160a01b0386161790555b335f818152600483016020526040808220805460ff19166001179055516001600160a01b0387169188917f9797c1a8248e0833cb5344fa29eb39f2de9bd4824b8ffa5d85faaed75d24e9ef9190a4610a4d81610e8b565b15610a5c57610a5c8585610cdb565b5050505050565b610a6b610ac8565b6001600160a01b038116610a9957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610aa281610b4b565b50565b5f5460ff16156105815760405163d93c066560e01b815260040160405180910390fd5b5f546001600160a01b036101009091041633146105815760405163118cdaa760e01b8152336004820152602401610a90565b610b02610da1565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b610bab610aa5565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b2e3390565b5f818152600260205260409020600101546001600160a01b03163314610aa257604051631f0853c160e21b815260040160405180910390fd5b610c228282610efc565b610c3f57604051633101cebf60e21b815260040160405180910390fd5b5050565b6001600160a01b038316610cc7575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610c9a576040519150601f19603f3d011682016040523d82523d5f602084013e610c9f565b606091505b5050905080610cc157604051633d2cec6f60e21b815260040160405180910390fd5b50505050565b6107576001600160a01b0384168383610f66565b6001600160a01b038116610d025760405163d92e233d60e01b815260040160405180910390fd5b5f8281526002602052604090206001810180546001600160a01b038481166001600160a01b03198316179092556003830154908216911615610d5a57610d4782610e2a565b6003820180546001600160a01b03191690555b826001600160a01b0316816001600160a01b0316857fca740bd5cca56b72a44eb89e8a703e2e1269576576b5b5ce52a1ba317d20d78d60405160405180910390a450505050565b5f5460ff1661058157604051638dfc202b60e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610cc19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610f97565b80545f5b81811015610757575f836004015f855f018481548110610e5057610e50611333565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610e2e565b80545f90815b81811015610ef257836004015f855f018381548110610eb257610eb2611333565b5f9182526020808320909101546001600160a01b0316835282019290925260400181205460ff1615159003610eea57505f9392505050565b600101610e91565b5060019392505050565b5f8281526002602052604081208054825b81811015610f5b57825f018181548110610f2957610f29611333565b5f918252602090912001546001600160a01b0390811690861603610f535760019350505050610785565b600101610f0d565b505f95945050505050565b6040516001600160a01b0383811660248301526044820183905261075791859182169063a9059cbb90606401610df8565b5f5f60205f8451602086015f885af180610fb6576040513d5f823e3d81fd5b50505f513d91508115610fcd578060011415610fda565b6001600160a01b0384163b155b15610cc157604051635274afe760e01b81526001600160a01b0385166004820152602401610a90565b828054828255905f5260205f20908101928215611054579160200282015b828111156110545781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190611021565b50611060929150611064565b5090565b5b80821115611060575f8155600101611065565b80356001600160a01b038116811461108e575f5ffd5b919050565b5f5f5f5f606085870312156110a6575f5ffd5b843567ffffffffffffffff8111156110bc575f5ffd5b8501601f810187136110cc575f5ffd5b803567ffffffffffffffff8111156110e2575f5ffd5b8760208260051b84010111156110f6575f5ffd5b60209182019550935061110a908601611078565b9396929550929360400135925050565b5f6020828403121561112a575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b818110156111715783516001600160a01b031683526020938401939092019160010161114a565b509095945050505050565b5f5f5f5f6080858703121561118f575f5ffd5b8435935061119f60208601611078565b92506111ad60408601611078565b9396929550929360600135925050565b5f5f604083850312156111ce575f5ffd5b823591506111de60208401611078565b90509250929050565b5f5f5f606084860312156111f9575f5ffd5b61120284611078565b925061121060208501611078565b929592945050506040919091013590565b5f5f5f60608486031215611233575f5ffd5b8335925061121060208501611078565b5f5f5f5f5f60a08688031215611257575f5ffd5b853594506020860135935061126e60408701611078565b925061127c60608701611078565b949793965091946080013592915050565b5f6020828403121561129d575f5ffd5b6112a682611078565b9392505050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016112d2576112d26112ad565b5060010190565b5f8184825b85811015611171576001600160a01b036112f783611078565b16835260209283019291909101906001016112de565b80820180821115610785576107856112ad565b81810381811115610785576107856112ad565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220f158f0d308786b8493ebf4e58e90818aa0f3dc99af4c42bd0f995acd49590a5464736f6c634300081e0033", } // CelerWalletABI is the input ABI used to generate the binding from. @@ -203,12 +203,12 @@ func (_CelerWallet *CelerWalletTransactorRaw) Transact(opts *bind.TransactOpts, return _CelerWallet.Contract.contract.Transact(opts, method, params...) } -// GetBalance is a free data retrieval call binding the contract method 0x530e931c. +// MAXOWNERS is a free data retrieval call binding the contract method 0x0b8bb146. // -// Solidity: function getBalance(bytes32 _walletId, address _tokenAddress) view returns(uint256) -func (_CelerWallet *CelerWalletCaller) GetBalance(opts *bind.CallOpts, _walletId [32]byte, _tokenAddress common.Address) (*big.Int, error) { +// Solidity: function MAX_OWNERS() view returns(uint256) +func (_CelerWallet *CelerWalletCaller) MAXOWNERS(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _CelerWallet.contract.Call(opts, &out, "getBalance", _walletId, _tokenAddress) + err := _CelerWallet.contract.Call(opts, &out, "MAX_OWNERS") if err != nil { return *new(*big.Int), err @@ -220,57 +220,57 @@ func (_CelerWallet *CelerWalletCaller) GetBalance(opts *bind.CallOpts, _walletId } -// GetBalance is a free data retrieval call binding the contract method 0x530e931c. +// MAXOWNERS is a free data retrieval call binding the contract method 0x0b8bb146. // -// Solidity: function getBalance(bytes32 _walletId, address _tokenAddress) view returns(uint256) -func (_CelerWallet *CelerWalletSession) GetBalance(_walletId [32]byte, _tokenAddress common.Address) (*big.Int, error) { - return _CelerWallet.Contract.GetBalance(&_CelerWallet.CallOpts, _walletId, _tokenAddress) +// Solidity: function MAX_OWNERS() view returns(uint256) +func (_CelerWallet *CelerWalletSession) MAXOWNERS() (*big.Int, error) { + return _CelerWallet.Contract.MAXOWNERS(&_CelerWallet.CallOpts) } -// GetBalance is a free data retrieval call binding the contract method 0x530e931c. +// MAXOWNERS is a free data retrieval call binding the contract method 0x0b8bb146. // -// Solidity: function getBalance(bytes32 _walletId, address _tokenAddress) view returns(uint256) -func (_CelerWallet *CelerWalletCallerSession) GetBalance(_walletId [32]byte, _tokenAddress common.Address) (*big.Int, error) { - return _CelerWallet.Contract.GetBalance(&_CelerWallet.CallOpts, _walletId, _tokenAddress) +// Solidity: function MAX_OWNERS() view returns(uint256) +func (_CelerWallet *CelerWalletCallerSession) MAXOWNERS() (*big.Int, error) { + return _CelerWallet.Contract.MAXOWNERS(&_CelerWallet.CallOpts) } -// GetOperator is a free data retrieval call binding the contract method 0xa96a5f94. +// BalanceOf is a free data retrieval call binding the contract method 0xc2038236. // -// Solidity: function getOperator(bytes32 _walletId) view returns(address) -func (_CelerWallet *CelerWalletCaller) GetOperator(opts *bind.CallOpts, _walletId [32]byte) (common.Address, error) { +// Solidity: function balanceOf(bytes32 _walletId, address _tokenAddress) view returns(uint256) +func (_CelerWallet *CelerWalletCaller) BalanceOf(opts *bind.CallOpts, _walletId [32]byte, _tokenAddress common.Address) (*big.Int, error) { var out []interface{} - err := _CelerWallet.contract.Call(opts, &out, "getOperator", _walletId) + err := _CelerWallet.contract.Call(opts, &out, "balanceOf", _walletId, _tokenAddress) if err != nil { - return *new(common.Address), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// GetOperator is a free data retrieval call binding the contract method 0xa96a5f94. +// BalanceOf is a free data retrieval call binding the contract method 0xc2038236. // -// Solidity: function getOperator(bytes32 _walletId) view returns(address) -func (_CelerWallet *CelerWalletSession) GetOperator(_walletId [32]byte) (common.Address, error) { - return _CelerWallet.Contract.GetOperator(&_CelerWallet.CallOpts, _walletId) +// Solidity: function balanceOf(bytes32 _walletId, address _tokenAddress) view returns(uint256) +func (_CelerWallet *CelerWalletSession) BalanceOf(_walletId [32]byte, _tokenAddress common.Address) (*big.Int, error) { + return _CelerWallet.Contract.BalanceOf(&_CelerWallet.CallOpts, _walletId, _tokenAddress) } -// GetOperator is a free data retrieval call binding the contract method 0xa96a5f94. +// BalanceOf is a free data retrieval call binding the contract method 0xc2038236. // -// Solidity: function getOperator(bytes32 _walletId) view returns(address) -func (_CelerWallet *CelerWalletCallerSession) GetOperator(_walletId [32]byte) (common.Address, error) { - return _CelerWallet.Contract.GetOperator(&_CelerWallet.CallOpts, _walletId) +// Solidity: function balanceOf(bytes32 _walletId, address _tokenAddress) view returns(uint256) +func (_CelerWallet *CelerWalletCallerSession) BalanceOf(_walletId [32]byte, _tokenAddress common.Address) (*big.Int, error) { + return _CelerWallet.Contract.BalanceOf(&_CelerWallet.CallOpts, _walletId, _tokenAddress) } -// GetProposalVote is a free data retrieval call binding the contract method 0xcafd4600. +// HasVoted is a free data retrieval call binding the contract method 0xaadc3b72. // -// Solidity: function getProposalVote(bytes32 _walletId, address _owner) view returns(bool) -func (_CelerWallet *CelerWalletCaller) GetProposalVote(opts *bind.CallOpts, _walletId [32]byte, _owner common.Address) (bool, error) { +// Solidity: function hasVoted(bytes32 _walletId, address _owner) view returns(bool) +func (_CelerWallet *CelerWalletCaller) HasVoted(opts *bind.CallOpts, _walletId [32]byte, _owner common.Address) (bool, error) { var out []interface{} - err := _CelerWallet.contract.Call(opts, &out, "getProposalVote", _walletId, _owner) + err := _CelerWallet.contract.Call(opts, &out, "hasVoted", _walletId, _owner) if err != nil { return *new(bool), err @@ -282,26 +282,26 @@ func (_CelerWallet *CelerWalletCaller) GetProposalVote(opts *bind.CallOpts, _wal } -// GetProposalVote is a free data retrieval call binding the contract method 0xcafd4600. +// HasVoted is a free data retrieval call binding the contract method 0xaadc3b72. // -// Solidity: function getProposalVote(bytes32 _walletId, address _owner) view returns(bool) -func (_CelerWallet *CelerWalletSession) GetProposalVote(_walletId [32]byte, _owner common.Address) (bool, error) { - return _CelerWallet.Contract.GetProposalVote(&_CelerWallet.CallOpts, _walletId, _owner) +// Solidity: function hasVoted(bytes32 _walletId, address _owner) view returns(bool) +func (_CelerWallet *CelerWalletSession) HasVoted(_walletId [32]byte, _owner common.Address) (bool, error) { + return _CelerWallet.Contract.HasVoted(&_CelerWallet.CallOpts, _walletId, _owner) } -// GetProposalVote is a free data retrieval call binding the contract method 0xcafd4600. +// HasVoted is a free data retrieval call binding the contract method 0xaadc3b72. // -// Solidity: function getProposalVote(bytes32 _walletId, address _owner) view returns(bool) -func (_CelerWallet *CelerWalletCallerSession) GetProposalVote(_walletId [32]byte, _owner common.Address) (bool, error) { - return _CelerWallet.Contract.GetProposalVote(&_CelerWallet.CallOpts, _walletId, _owner) +// Solidity: function hasVoted(bytes32 _walletId, address _owner) view returns(bool) +func (_CelerWallet *CelerWalletCallerSession) HasVoted(_walletId [32]byte, _owner common.Address) (bool, error) { + return _CelerWallet.Contract.HasVoted(&_CelerWallet.CallOpts, _walletId, _owner) } -// GetProposedNewOperator is a free data retrieval call binding the contract method 0x14da2906. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function getProposedNewOperator(bytes32 _walletId) view returns(address) -func (_CelerWallet *CelerWalletCaller) GetProposedNewOperator(opts *bind.CallOpts, _walletId [32]byte) (common.Address, error) { +// Solidity: function owner() view returns(address) +func (_CelerWallet *CelerWalletCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _CelerWallet.contract.Call(opts, &out, "getProposedNewOperator", _walletId) + err := _CelerWallet.contract.Call(opts, &out, "owner") if err != nil { return *new(common.Address), err @@ -313,57 +313,57 @@ func (_CelerWallet *CelerWalletCaller) GetProposedNewOperator(opts *bind.CallOpt } -// GetProposedNewOperator is a free data retrieval call binding the contract method 0x14da2906. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function getProposedNewOperator(bytes32 _walletId) view returns(address) -func (_CelerWallet *CelerWalletSession) GetProposedNewOperator(_walletId [32]byte) (common.Address, error) { - return _CelerWallet.Contract.GetProposedNewOperator(&_CelerWallet.CallOpts, _walletId) +// Solidity: function owner() view returns(address) +func (_CelerWallet *CelerWalletSession) Owner() (common.Address, error) { + return _CelerWallet.Contract.Owner(&_CelerWallet.CallOpts) } -// GetProposedNewOperator is a free data retrieval call binding the contract method 0x14da2906. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function getProposedNewOperator(bytes32 _walletId) view returns(address) -func (_CelerWallet *CelerWalletCallerSession) GetProposedNewOperator(_walletId [32]byte) (common.Address, error) { - return _CelerWallet.Contract.GetProposedNewOperator(&_CelerWallet.CallOpts, _walletId) +// Solidity: function owner() view returns(address) +func (_CelerWallet *CelerWalletCallerSession) Owner() (common.Address, error) { + return _CelerWallet.Contract.Owner(&_CelerWallet.CallOpts) } -// GetWalletOwners is a free data retrieval call binding the contract method 0x1687cc60. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function getWalletOwners(bytes32 _walletId) view returns(address[]) -func (_CelerWallet *CelerWalletCaller) GetWalletOwners(opts *bind.CallOpts, _walletId [32]byte) ([]common.Address, error) { +// Solidity: function paused() view returns(bool) +func (_CelerWallet *CelerWalletCaller) Paused(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _CelerWallet.contract.Call(opts, &out, "getWalletOwners", _walletId) + err := _CelerWallet.contract.Call(opts, &out, "paused") if err != nil { - return *new([]common.Address), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// GetWalletOwners is a free data retrieval call binding the contract method 0x1687cc60. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function getWalletOwners(bytes32 _walletId) view returns(address[]) -func (_CelerWallet *CelerWalletSession) GetWalletOwners(_walletId [32]byte) ([]common.Address, error) { - return _CelerWallet.Contract.GetWalletOwners(&_CelerWallet.CallOpts, _walletId) +// Solidity: function paused() view returns(bool) +func (_CelerWallet *CelerWalletSession) Paused() (bool, error) { + return _CelerWallet.Contract.Paused(&_CelerWallet.CallOpts) } -// GetWalletOwners is a free data retrieval call binding the contract method 0x1687cc60. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function getWalletOwners(bytes32 _walletId) view returns(address[]) -func (_CelerWallet *CelerWalletCallerSession) GetWalletOwners(_walletId [32]byte) ([]common.Address, error) { - return _CelerWallet.Contract.GetWalletOwners(&_CelerWallet.CallOpts, _walletId) +// Solidity: function paused() view returns(bool) +func (_CelerWallet *CelerWalletCallerSession) Paused() (bool, error) { + return _CelerWallet.Contract.Paused(&_CelerWallet.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// PendingOperator is a free data retrieval call binding the contract method 0x9dfaff8f. // -// Solidity: function owner() view returns(address) -func (_CelerWallet *CelerWalletCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function pendingOperator(bytes32 _walletId) view returns(address) +func (_CelerWallet *CelerWalletCaller) PendingOperator(opts *bind.CallOpts, _walletId [32]byte) (common.Address, error) { var out []interface{} - err := _CelerWallet.contract.Call(opts, &out, "owner") + err := _CelerWallet.contract.Call(opts, &out, "pendingOperator", _walletId) if err != nil { return *new(common.Address), err @@ -375,80 +375,111 @@ func (_CelerWallet *CelerWalletCaller) Owner(opts *bind.CallOpts) (common.Addres } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// PendingOperator is a free data retrieval call binding the contract method 0x9dfaff8f. // -// Solidity: function owner() view returns(address) -func (_CelerWallet *CelerWalletSession) Owner() (common.Address, error) { - return _CelerWallet.Contract.Owner(&_CelerWallet.CallOpts) +// Solidity: function pendingOperator(bytes32 _walletId) view returns(address) +func (_CelerWallet *CelerWalletSession) PendingOperator(_walletId [32]byte) (common.Address, error) { + return _CelerWallet.Contract.PendingOperator(&_CelerWallet.CallOpts, _walletId) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// PendingOperator is a free data retrieval call binding the contract method 0x9dfaff8f. // -// Solidity: function owner() view returns(address) -func (_CelerWallet *CelerWalletCallerSession) Owner() (common.Address, error) { - return _CelerWallet.Contract.Owner(&_CelerWallet.CallOpts) +// Solidity: function pendingOperator(bytes32 _walletId) view returns(address) +func (_CelerWallet *CelerWalletCallerSession) PendingOperator(_walletId [32]byte) (common.Address, error) { + return _CelerWallet.Contract.PendingOperator(&_CelerWallet.CallOpts, _walletId) } -// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// WalletCount is a free data retrieval call binding the contract method 0x29b57c69. // -// Solidity: function paused() view returns(bool) -func (_CelerWallet *CelerWalletCaller) Paused(opts *bind.CallOpts) (bool, error) { +// Solidity: function walletCount() view returns(uint256) +func (_CelerWallet *CelerWalletCaller) WalletCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _CelerWallet.contract.Call(opts, &out, "paused") + err := _CelerWallet.contract.Call(opts, &out, "walletCount") if err != nil { - return *new(bool), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// WalletCount is a free data retrieval call binding the contract method 0x29b57c69. // -// Solidity: function paused() view returns(bool) -func (_CelerWallet *CelerWalletSession) Paused() (bool, error) { - return _CelerWallet.Contract.Paused(&_CelerWallet.CallOpts) +// Solidity: function walletCount() view returns(uint256) +func (_CelerWallet *CelerWalletSession) WalletCount() (*big.Int, error) { + return _CelerWallet.Contract.WalletCount(&_CelerWallet.CallOpts) } -// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// WalletCount is a free data retrieval call binding the contract method 0x29b57c69. // -// Solidity: function paused() view returns(bool) -func (_CelerWallet *CelerWalletCallerSession) Paused() (bool, error) { - return _CelerWallet.Contract.Paused(&_CelerWallet.CallOpts) +// Solidity: function walletCount() view returns(uint256) +func (_CelerWallet *CelerWalletCallerSession) WalletCount() (*big.Int, error) { + return _CelerWallet.Contract.WalletCount(&_CelerWallet.CallOpts) } -// WalletNum is a free data retrieval call binding the contract method 0x36cc9e8d. +// WalletOperator is a free data retrieval call binding the contract method 0xaee2e989. // -// Solidity: function walletNum() view returns(uint256) -func (_CelerWallet *CelerWalletCaller) WalletNum(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function walletOperator(bytes32 _walletId) view returns(address) +func (_CelerWallet *CelerWalletCaller) WalletOperator(opts *bind.CallOpts, _walletId [32]byte) (common.Address, error) { var out []interface{} - err := _CelerWallet.contract.Call(opts, &out, "walletNum") + err := _CelerWallet.contract.Call(opts, &out, "walletOperator", _walletId) if err != nil { - return *new(*big.Int), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err } -// WalletNum is a free data retrieval call binding the contract method 0x36cc9e8d. +// WalletOperator is a free data retrieval call binding the contract method 0xaee2e989. +// +// Solidity: function walletOperator(bytes32 _walletId) view returns(address) +func (_CelerWallet *CelerWalletSession) WalletOperator(_walletId [32]byte) (common.Address, error) { + return _CelerWallet.Contract.WalletOperator(&_CelerWallet.CallOpts, _walletId) +} + +// WalletOperator is a free data retrieval call binding the contract method 0xaee2e989. // -// Solidity: function walletNum() view returns(uint256) -func (_CelerWallet *CelerWalletSession) WalletNum() (*big.Int, error) { - return _CelerWallet.Contract.WalletNum(&_CelerWallet.CallOpts) +// Solidity: function walletOperator(bytes32 _walletId) view returns(address) +func (_CelerWallet *CelerWalletCallerSession) WalletOperator(_walletId [32]byte) (common.Address, error) { + return _CelerWallet.Contract.WalletOperator(&_CelerWallet.CallOpts, _walletId) } -// WalletNum is a free data retrieval call binding the contract method 0x36cc9e8d. +// WalletOwners is a free data retrieval call binding the contract method 0x628c40eb. // -// Solidity: function walletNum() view returns(uint256) -func (_CelerWallet *CelerWalletCallerSession) WalletNum() (*big.Int, error) { - return _CelerWallet.Contract.WalletNum(&_CelerWallet.CallOpts) +// Solidity: function walletOwners(bytes32 _walletId) view returns(address[]) +func (_CelerWallet *CelerWalletCaller) WalletOwners(opts *bind.CallOpts, _walletId [32]byte) ([]common.Address, error) { + var out []interface{} + err := _CelerWallet.contract.Call(opts, &out, "walletOwners", _walletId) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// WalletOwners is a free data retrieval call binding the contract method 0x628c40eb. +// +// Solidity: function walletOwners(bytes32 _walletId) view returns(address[]) +func (_CelerWallet *CelerWalletSession) WalletOwners(_walletId [32]byte) ([]common.Address, error) { + return _CelerWallet.Contract.WalletOwners(&_CelerWallet.CallOpts, _walletId) +} + +// WalletOwners is a free data retrieval call binding the contract method 0x628c40eb. +// +// Solidity: function walletOwners(bytes32 _walletId) view returns(address[]) +func (_CelerWallet *CelerWalletCallerSession) WalletOwners(_walletId [32]byte) ([]common.Address, error) { + return _CelerWallet.Contract.WalletOwners(&_CelerWallet.CallOpts, _walletId) } // Create is a paid mutator transaction binding the contract method 0x0d63a1fd. @@ -556,27 +587,6 @@ func (_CelerWallet *CelerWalletTransactorSession) Pause() (*types.Transaction, e return _CelerWallet.Contract.Pause(&_CelerWallet.TransactOpts) } -// ProposeNewOperator is a paid mutator transaction binding the contract method 0x323c4480. -// -// Solidity: function proposeNewOperator(bytes32 _walletId, address _newOperator) returns() -func (_CelerWallet *CelerWalletTransactor) ProposeNewOperator(opts *bind.TransactOpts, _walletId [32]byte, _newOperator common.Address) (*types.Transaction, error) { - return _CelerWallet.contract.Transact(opts, "proposeNewOperator", _walletId, _newOperator) -} - -// ProposeNewOperator is a paid mutator transaction binding the contract method 0x323c4480. -// -// Solidity: function proposeNewOperator(bytes32 _walletId, address _newOperator) returns() -func (_CelerWallet *CelerWalletSession) ProposeNewOperator(_walletId [32]byte, _newOperator common.Address) (*types.Transaction, error) { - return _CelerWallet.Contract.ProposeNewOperator(&_CelerWallet.TransactOpts, _walletId, _newOperator) -} - -// ProposeNewOperator is a paid mutator transaction binding the contract method 0x323c4480. -// -// Solidity: function proposeNewOperator(bytes32 _walletId, address _newOperator) returns() -func (_CelerWallet *CelerWalletTransactorSession) ProposeNewOperator(_walletId [32]byte, _newOperator common.Address) (*types.Transaction, error) { - return _CelerWallet.Contract.ProposeNewOperator(&_CelerWallet.TransactOpts, _walletId, _newOperator) -} - // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() @@ -598,6 +608,27 @@ func (_CelerWallet *CelerWalletTransactorSession) RenounceOwnership() (*types.Tr return _CelerWallet.Contract.RenounceOwnership(&_CelerWallet.TransactOpts) } +// TransferBetweenWallets is a paid mutator transaction binding the contract method 0xd23856f6. +// +// Solidity: function transferBetweenWallets(bytes32 _fromWalletId, bytes32 _toWalletId, address _tokenAddress, address _receiver, uint256 _amount) returns() +func (_CelerWallet *CelerWalletTransactor) TransferBetweenWallets(opts *bind.TransactOpts, _fromWalletId [32]byte, _toWalletId [32]byte, _tokenAddress common.Address, _receiver common.Address, _amount *big.Int) (*types.Transaction, error) { + return _CelerWallet.contract.Transact(opts, "transferBetweenWallets", _fromWalletId, _toWalletId, _tokenAddress, _receiver, _amount) +} + +// TransferBetweenWallets is a paid mutator transaction binding the contract method 0xd23856f6. +// +// Solidity: function transferBetweenWallets(bytes32 _fromWalletId, bytes32 _toWalletId, address _tokenAddress, address _receiver, uint256 _amount) returns() +func (_CelerWallet *CelerWalletSession) TransferBetweenWallets(_fromWalletId [32]byte, _toWalletId [32]byte, _tokenAddress common.Address, _receiver common.Address, _amount *big.Int) (*types.Transaction, error) { + return _CelerWallet.Contract.TransferBetweenWallets(&_CelerWallet.TransactOpts, _fromWalletId, _toWalletId, _tokenAddress, _receiver, _amount) +} + +// TransferBetweenWallets is a paid mutator transaction binding the contract method 0xd23856f6. +// +// Solidity: function transferBetweenWallets(bytes32 _fromWalletId, bytes32 _toWalletId, address _tokenAddress, address _receiver, uint256 _amount) returns() +func (_CelerWallet *CelerWalletTransactorSession) TransferBetweenWallets(_fromWalletId [32]byte, _toWalletId [32]byte, _tokenAddress common.Address, _receiver common.Address, _amount *big.Int) (*types.Transaction, error) { + return _CelerWallet.Contract.TransferBetweenWallets(&_CelerWallet.TransactOpts, _fromWalletId, _toWalletId, _tokenAddress, _receiver, _amount) +} + // TransferOperatorship is a paid mutator transaction binding the contract method 0xa0c89a8c. // // Solidity: function transferOperatorship(bytes32 _walletId, address _newOperator) returns() @@ -640,27 +671,6 @@ func (_CelerWallet *CelerWalletTransactorSession) TransferOwnership(newOwner com return _CelerWallet.Contract.TransferOwnership(&_CelerWallet.TransactOpts, newOwner) } -// TransferToWallet is a paid mutator transaction binding the contract method 0x80ba952e. -// -// Solidity: function transferToWallet(bytes32 _fromWalletId, bytes32 _toWalletId, address _tokenAddress, address _receiver, uint256 _amount) returns() -func (_CelerWallet *CelerWalletTransactor) TransferToWallet(opts *bind.TransactOpts, _fromWalletId [32]byte, _toWalletId [32]byte, _tokenAddress common.Address, _receiver common.Address, _amount *big.Int) (*types.Transaction, error) { - return _CelerWallet.contract.Transact(opts, "transferToWallet", _fromWalletId, _toWalletId, _tokenAddress, _receiver, _amount) -} - -// TransferToWallet is a paid mutator transaction binding the contract method 0x80ba952e. -// -// Solidity: function transferToWallet(bytes32 _fromWalletId, bytes32 _toWalletId, address _tokenAddress, address _receiver, uint256 _amount) returns() -func (_CelerWallet *CelerWalletSession) TransferToWallet(_fromWalletId [32]byte, _toWalletId [32]byte, _tokenAddress common.Address, _receiver common.Address, _amount *big.Int) (*types.Transaction, error) { - return _CelerWallet.Contract.TransferToWallet(&_CelerWallet.TransactOpts, _fromWalletId, _toWalletId, _tokenAddress, _receiver, _amount) -} - -// TransferToWallet is a paid mutator transaction binding the contract method 0x80ba952e. -// -// Solidity: function transferToWallet(bytes32 _fromWalletId, bytes32 _toWalletId, address _tokenAddress, address _receiver, uint256 _amount) returns() -func (_CelerWallet *CelerWalletTransactorSession) TransferToWallet(_fromWalletId [32]byte, _toWalletId [32]byte, _tokenAddress common.Address, _receiver common.Address, _amount *big.Int) (*types.Transaction, error) { - return _CelerWallet.Contract.TransferToWallet(&_CelerWallet.TransactOpts, _fromWalletId, _toWalletId, _tokenAddress, _receiver, _amount) -} - // Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. // // Solidity: function unpause() returns() @@ -682,6 +692,27 @@ func (_CelerWallet *CelerWalletTransactorSession) Unpause() (*types.Transaction, return _CelerWallet.Contract.Unpause(&_CelerWallet.TransactOpts) } +// VoteForOperator is a paid mutator transaction binding the contract method 0xe89a62ee. +// +// Solidity: function voteForOperator(bytes32 _walletId, address _candidate) returns() +func (_CelerWallet *CelerWalletTransactor) VoteForOperator(opts *bind.TransactOpts, _walletId [32]byte, _candidate common.Address) (*types.Transaction, error) { + return _CelerWallet.contract.Transact(opts, "voteForOperator", _walletId, _candidate) +} + +// VoteForOperator is a paid mutator transaction binding the contract method 0xe89a62ee. +// +// Solidity: function voteForOperator(bytes32 _walletId, address _candidate) returns() +func (_CelerWallet *CelerWalletSession) VoteForOperator(_walletId [32]byte, _candidate common.Address) (*types.Transaction, error) { + return _CelerWallet.Contract.VoteForOperator(&_CelerWallet.TransactOpts, _walletId, _candidate) +} + +// VoteForOperator is a paid mutator transaction binding the contract method 0xe89a62ee. +// +// Solidity: function voteForOperator(bytes32 _walletId, address _candidate) returns() +func (_CelerWallet *CelerWalletTransactorSession) VoteForOperator(_walletId [32]byte, _candidate common.Address) (*types.Transaction, error) { + return _CelerWallet.Contract.VoteForOperator(&_CelerWallet.TransactOpts, _walletId, _candidate) +} + // Withdraw is a paid mutator transaction binding the contract method 0x8e0cc176. // // Solidity: function withdraw(bytes32 _walletId, address _tokenAddress, address _receiver, uint256 _amount) returns() @@ -703,9 +734,9 @@ func (_CelerWallet *CelerWalletTransactorSession) Withdraw(_walletId [32]byte, _ return _CelerWallet.Contract.Withdraw(&_CelerWallet.TransactOpts, _walletId, _tokenAddress, _receiver, _amount) } -// CelerWalletChangeOperatorIterator is returned from FilterChangeOperator and is used to iterate over the raw logs and unpacked data for ChangeOperator events raised by the CelerWallet contract. -type CelerWalletChangeOperatorIterator struct { - Event *CelerWalletChangeOperator // Event containing the contract specifics and raw log +// CelerWalletDepositedIterator is returned from FilterDeposited and is used to iterate over the raw logs and unpacked data for Deposited events raised by the CelerWallet contract. +type CelerWalletDepositedIterator struct { + Event *CelerWalletDeposited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -719,7 +750,7 @@ type CelerWalletChangeOperatorIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *CelerWalletChangeOperatorIterator) Next() bool { +func (it *CelerWalletDepositedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -728,7 +759,7 @@ func (it *CelerWalletChangeOperatorIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(CelerWalletChangeOperator) + it.Event = new(CelerWalletDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -743,7 +774,7 @@ func (it *CelerWalletChangeOperatorIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(CelerWalletChangeOperator) + it.Event = new(CelerWalletDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -759,69 +790,61 @@ func (it *CelerWalletChangeOperatorIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *CelerWalletChangeOperatorIterator) Error() error { +func (it *CelerWalletDepositedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *CelerWalletChangeOperatorIterator) Close() error { +func (it *CelerWalletDepositedIterator) Close() error { it.sub.Unsubscribe() return nil } -// CelerWalletChangeOperator represents a ChangeOperator event raised by the CelerWallet contract. -type CelerWalletChangeOperator struct { - WalletId [32]byte - OldOperator common.Address - NewOperator common.Address - Raw types.Log // Blockchain specific contextual infos +// CelerWalletDeposited represents a Deposited event raised by the CelerWallet contract. +type CelerWalletDeposited struct { + WalletId [32]byte + TokenAddress common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterChangeOperator is a free log retrieval operation binding the contract event 0x118c3f8030bc3c8254e737a0bd0584403c33646afbcbee8321c3bd5b26543cda. +// FilterDeposited is a free log retrieval operation binding the contract event 0x87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b. // -// Solidity: event ChangeOperator(bytes32 indexed walletId, address indexed oldOperator, address indexed newOperator) -func (_CelerWallet *CelerWalletFilterer) FilterChangeOperator(opts *bind.FilterOpts, walletId [][32]byte, oldOperator []common.Address, newOperator []common.Address) (*CelerWalletChangeOperatorIterator, error) { +// Solidity: event Deposited(bytes32 indexed walletId, address indexed tokenAddress, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) FilterDeposited(opts *bind.FilterOpts, walletId [][32]byte, tokenAddress []common.Address) (*CelerWalletDepositedIterator, error) { var walletIdRule []interface{} for _, walletIdItem := range walletId { walletIdRule = append(walletIdRule, walletIdItem) } - var oldOperatorRule []interface{} - for _, oldOperatorItem := range oldOperator { - oldOperatorRule = append(oldOperatorRule, oldOperatorItem) - } - var newOperatorRule []interface{} - for _, newOperatorItem := range newOperator { - newOperatorRule = append(newOperatorRule, newOperatorItem) + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "ChangeOperator", walletIdRule, oldOperatorRule, newOperatorRule) + logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "Deposited", walletIdRule, tokenAddressRule) if err != nil { return nil, err } - return &CelerWalletChangeOperatorIterator{contract: _CelerWallet.contract, event: "ChangeOperator", logs: logs, sub: sub}, nil + return &CelerWalletDepositedIterator{contract: _CelerWallet.contract, event: "Deposited", logs: logs, sub: sub}, nil } -// WatchChangeOperator is a free log subscription operation binding the contract event 0x118c3f8030bc3c8254e737a0bd0584403c33646afbcbee8321c3bd5b26543cda. +// WatchDeposited is a free log subscription operation binding the contract event 0x87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b. // -// Solidity: event ChangeOperator(bytes32 indexed walletId, address indexed oldOperator, address indexed newOperator) -func (_CelerWallet *CelerWalletFilterer) WatchChangeOperator(opts *bind.WatchOpts, sink chan<- *CelerWalletChangeOperator, walletId [][32]byte, oldOperator []common.Address, newOperator []common.Address) (event.Subscription, error) { +// Solidity: event Deposited(bytes32 indexed walletId, address indexed tokenAddress, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) WatchDeposited(opts *bind.WatchOpts, sink chan<- *CelerWalletDeposited, walletId [][32]byte, tokenAddress []common.Address) (event.Subscription, error) { var walletIdRule []interface{} for _, walletIdItem := range walletId { walletIdRule = append(walletIdRule, walletIdItem) } - var oldOperatorRule []interface{} - for _, oldOperatorItem := range oldOperator { - oldOperatorRule = append(oldOperatorRule, oldOperatorItem) - } - var newOperatorRule []interface{} - for _, newOperatorItem := range newOperator { - newOperatorRule = append(newOperatorRule, newOperatorItem) + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "ChangeOperator", walletIdRule, oldOperatorRule, newOperatorRule) + logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "Deposited", walletIdRule, tokenAddressRule) if err != nil { return nil, err } @@ -831,8 +854,8 @@ func (_CelerWallet *CelerWalletFilterer) WatchChangeOperator(opts *bind.WatchOpt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(CelerWalletChangeOperator) - if err := _CelerWallet.contract.UnpackLog(event, "ChangeOperator", log); err != nil { + event := new(CelerWalletDeposited) + if err := _CelerWallet.contract.UnpackLog(event, "Deposited", log); err != nil { return err } event.Raw = log @@ -853,21 +876,21 @@ func (_CelerWallet *CelerWalletFilterer) WatchChangeOperator(opts *bind.WatchOpt }), nil } -// ParseChangeOperator is a log parse operation binding the contract event 0x118c3f8030bc3c8254e737a0bd0584403c33646afbcbee8321c3bd5b26543cda. +// ParseDeposited is a log parse operation binding the contract event 0x87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b. // -// Solidity: event ChangeOperator(bytes32 indexed walletId, address indexed oldOperator, address indexed newOperator) -func (_CelerWallet *CelerWalletFilterer) ParseChangeOperator(log types.Log) (*CelerWalletChangeOperator, error) { - event := new(CelerWalletChangeOperator) - if err := _CelerWallet.contract.UnpackLog(event, "ChangeOperator", log); err != nil { +// Solidity: event Deposited(bytes32 indexed walletId, address indexed tokenAddress, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) ParseDeposited(log types.Log) (*CelerWalletDeposited, error) { + event := new(CelerWalletDeposited) + if err := _CelerWallet.contract.UnpackLog(event, "Deposited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// CelerWalletCreateWalletIterator is returned from FilterCreateWallet and is used to iterate over the raw logs and unpacked data for CreateWallet events raised by the CelerWallet contract. -type CelerWalletCreateWalletIterator struct { - Event *CelerWalletCreateWallet // Event containing the contract specifics and raw log +// CelerWalletOperatorChangedIterator is returned from FilterOperatorChanged and is used to iterate over the raw logs and unpacked data for OperatorChanged events raised by the CelerWallet contract. +type CelerWalletOperatorChangedIterator struct { + Event *CelerWalletOperatorChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -881,7 +904,7 @@ type CelerWalletCreateWalletIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *CelerWalletCreateWalletIterator) Next() bool { +func (it *CelerWalletOperatorChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -890,7 +913,7 @@ func (it *CelerWalletCreateWalletIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(CelerWalletCreateWallet) + it.Event = new(CelerWalletOperatorChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -905,7 +928,7 @@ func (it *CelerWalletCreateWalletIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(CelerWalletCreateWallet) + it.Event = new(CelerWalletOperatorChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -921,69 +944,69 @@ func (it *CelerWalletCreateWalletIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *CelerWalletCreateWalletIterator) Error() error { +func (it *CelerWalletOperatorChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *CelerWalletCreateWalletIterator) Close() error { +func (it *CelerWalletOperatorChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// CelerWalletCreateWallet represents a CreateWallet event raised by the CelerWallet contract. -type CelerWalletCreateWallet struct { - WalletId [32]byte - Owners []common.Address - Operator common.Address - Raw types.Log // Blockchain specific contextual infos +// CelerWalletOperatorChanged represents a OperatorChanged event raised by the CelerWallet contract. +type CelerWalletOperatorChanged struct { + WalletId [32]byte + OldOperator common.Address + NewOperator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterCreateWallet is a free log retrieval operation binding the contract event 0xe778e91533ef049a5fc99752bc4efb2b50ca4c967dfc0d4bb4782fb128070c34. +// FilterOperatorChanged is a free log retrieval operation binding the contract event 0xca740bd5cca56b72a44eb89e8a703e2e1269576576b5b5ce52a1ba317d20d78d. // -// Solidity: event CreateWallet(bytes32 indexed walletId, address[] indexed owners, address indexed operator) -func (_CelerWallet *CelerWalletFilterer) FilterCreateWallet(opts *bind.FilterOpts, walletId [][32]byte, owners [][]common.Address, operator []common.Address) (*CelerWalletCreateWalletIterator, error) { +// Solidity: event OperatorChanged(bytes32 indexed walletId, address indexed oldOperator, address indexed newOperator) +func (_CelerWallet *CelerWalletFilterer) FilterOperatorChanged(opts *bind.FilterOpts, walletId [][32]byte, oldOperator []common.Address, newOperator []common.Address) (*CelerWalletOperatorChangedIterator, error) { var walletIdRule []interface{} for _, walletIdItem := range walletId { walletIdRule = append(walletIdRule, walletIdItem) } - var ownersRule []interface{} - for _, ownersItem := range owners { - ownersRule = append(ownersRule, ownersItem) + var oldOperatorRule []interface{} + for _, oldOperatorItem := range oldOperator { + oldOperatorRule = append(oldOperatorRule, oldOperatorItem) } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) + var newOperatorRule []interface{} + for _, newOperatorItem := range newOperator { + newOperatorRule = append(newOperatorRule, newOperatorItem) } - logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "CreateWallet", walletIdRule, ownersRule, operatorRule) + logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "OperatorChanged", walletIdRule, oldOperatorRule, newOperatorRule) if err != nil { return nil, err } - return &CelerWalletCreateWalletIterator{contract: _CelerWallet.contract, event: "CreateWallet", logs: logs, sub: sub}, nil + return &CelerWalletOperatorChangedIterator{contract: _CelerWallet.contract, event: "OperatorChanged", logs: logs, sub: sub}, nil } -// WatchCreateWallet is a free log subscription operation binding the contract event 0xe778e91533ef049a5fc99752bc4efb2b50ca4c967dfc0d4bb4782fb128070c34. +// WatchOperatorChanged is a free log subscription operation binding the contract event 0xca740bd5cca56b72a44eb89e8a703e2e1269576576b5b5ce52a1ba317d20d78d. // -// Solidity: event CreateWallet(bytes32 indexed walletId, address[] indexed owners, address indexed operator) -func (_CelerWallet *CelerWalletFilterer) WatchCreateWallet(opts *bind.WatchOpts, sink chan<- *CelerWalletCreateWallet, walletId [][32]byte, owners [][]common.Address, operator []common.Address) (event.Subscription, error) { +// Solidity: event OperatorChanged(bytes32 indexed walletId, address indexed oldOperator, address indexed newOperator) +func (_CelerWallet *CelerWalletFilterer) WatchOperatorChanged(opts *bind.WatchOpts, sink chan<- *CelerWalletOperatorChanged, walletId [][32]byte, oldOperator []common.Address, newOperator []common.Address) (event.Subscription, error) { var walletIdRule []interface{} for _, walletIdItem := range walletId { walletIdRule = append(walletIdRule, walletIdItem) } - var ownersRule []interface{} - for _, ownersItem := range owners { - ownersRule = append(ownersRule, ownersItem) + var oldOperatorRule []interface{} + for _, oldOperatorItem := range oldOperator { + oldOperatorRule = append(oldOperatorRule, oldOperatorItem) } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) + var newOperatorRule []interface{} + for _, newOperatorItem := range newOperator { + newOperatorRule = append(newOperatorRule, newOperatorItem) } - logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "CreateWallet", walletIdRule, ownersRule, operatorRule) + logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "OperatorChanged", walletIdRule, oldOperatorRule, newOperatorRule) if err != nil { return nil, err } @@ -993,8 +1016,8 @@ func (_CelerWallet *CelerWalletFilterer) WatchCreateWallet(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(CelerWalletCreateWallet) - if err := _CelerWallet.contract.UnpackLog(event, "CreateWallet", log); err != nil { + event := new(CelerWalletOperatorChanged) + if err := _CelerWallet.contract.UnpackLog(event, "OperatorChanged", log); err != nil { return err } event.Raw = log @@ -1015,21 +1038,21 @@ func (_CelerWallet *CelerWalletFilterer) WatchCreateWallet(opts *bind.WatchOpts, }), nil } -// ParseCreateWallet is a log parse operation binding the contract event 0xe778e91533ef049a5fc99752bc4efb2b50ca4c967dfc0d4bb4782fb128070c34. +// ParseOperatorChanged is a log parse operation binding the contract event 0xca740bd5cca56b72a44eb89e8a703e2e1269576576b5b5ce52a1ba317d20d78d. // -// Solidity: event CreateWallet(bytes32 indexed walletId, address[] indexed owners, address indexed operator) -func (_CelerWallet *CelerWalletFilterer) ParseCreateWallet(log types.Log) (*CelerWalletCreateWallet, error) { - event := new(CelerWalletCreateWallet) - if err := _CelerWallet.contract.UnpackLog(event, "CreateWallet", log); err != nil { +// Solidity: event OperatorChanged(bytes32 indexed walletId, address indexed oldOperator, address indexed newOperator) +func (_CelerWallet *CelerWalletFilterer) ParseOperatorChanged(log types.Log) (*CelerWalletOperatorChanged, error) { + event := new(CelerWalletOperatorChanged) + if err := _CelerWallet.contract.UnpackLog(event, "OperatorChanged", log); err != nil { return nil, err } event.Raw = log return event, nil } -// CelerWalletDepositToWalletIterator is returned from FilterDepositToWallet and is used to iterate over the raw logs and unpacked data for DepositToWallet events raised by the CelerWallet contract. -type CelerWalletDepositToWalletIterator struct { - Event *CelerWalletDepositToWallet // Event containing the contract specifics and raw log +// CelerWalletOperatorVotedIterator is returned from FilterOperatorVoted and is used to iterate over the raw logs and unpacked data for OperatorVoted events raised by the CelerWallet contract. +type CelerWalletOperatorVotedIterator struct { + Event *CelerWalletOperatorVoted // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1043,7 +1066,7 @@ type CelerWalletDepositToWalletIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *CelerWalletDepositToWalletIterator) Next() bool { +func (it *CelerWalletOperatorVotedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1052,7 +1075,7 @@ func (it *CelerWalletDepositToWalletIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(CelerWalletDepositToWallet) + it.Event = new(CelerWalletOperatorVoted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1067,7 +1090,7 @@ func (it *CelerWalletDepositToWalletIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(CelerWalletDepositToWallet) + it.Event = new(CelerWalletOperatorVoted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1083,215 +1106,69 @@ func (it *CelerWalletDepositToWalletIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *CelerWalletDepositToWalletIterator) Error() error { +func (it *CelerWalletOperatorVotedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *CelerWalletDepositToWalletIterator) Close() error { +func (it *CelerWalletOperatorVotedIterator) Close() error { it.sub.Unsubscribe() return nil } -// CelerWalletDepositToWallet represents a DepositToWallet event raised by the CelerWallet contract. -type CelerWalletDepositToWallet struct { - WalletId [32]byte - TokenAddress common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos +// CelerWalletOperatorVoted represents a OperatorVoted event raised by the CelerWallet contract. +type CelerWalletOperatorVoted struct { + WalletId [32]byte + Candidate common.Address + Voter common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterDepositToWallet is a free log retrieval operation binding the contract event 0xbc8e388b96ba8b9f627cb6d72d3513182f763c33c6107ecd31191de1f71abc1a. +// FilterOperatorVoted is a free log retrieval operation binding the contract event 0x9797c1a8248e0833cb5344fa29eb39f2de9bd4824b8ffa5d85faaed75d24e9ef. // -// Solidity: event DepositToWallet(bytes32 indexed walletId, address indexed tokenAddress, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) FilterDepositToWallet(opts *bind.FilterOpts, walletId [][32]byte, tokenAddress []common.Address) (*CelerWalletDepositToWalletIterator, error) { +// Solidity: event OperatorVoted(bytes32 indexed walletId, address indexed candidate, address indexed voter) +func (_CelerWallet *CelerWalletFilterer) FilterOperatorVoted(opts *bind.FilterOpts, walletId [][32]byte, candidate []common.Address, voter []common.Address) (*CelerWalletOperatorVotedIterator, error) { var walletIdRule []interface{} for _, walletIdItem := range walletId { walletIdRule = append(walletIdRule, walletIdItem) } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + var voterRule []interface{} + for _, voterItem := range voter { + voterRule = append(voterRule, voterItem) } - logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "DepositToWallet", walletIdRule, tokenAddressRule) + logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "OperatorVoted", walletIdRule, candidateRule, voterRule) if err != nil { return nil, err } - return &CelerWalletDepositToWalletIterator{contract: _CelerWallet.contract, event: "DepositToWallet", logs: logs, sub: sub}, nil + return &CelerWalletOperatorVotedIterator{contract: _CelerWallet.contract, event: "OperatorVoted", logs: logs, sub: sub}, nil } -// WatchDepositToWallet is a free log subscription operation binding the contract event 0xbc8e388b96ba8b9f627cb6d72d3513182f763c33c6107ecd31191de1f71abc1a. +// WatchOperatorVoted is a free log subscription operation binding the contract event 0x9797c1a8248e0833cb5344fa29eb39f2de9bd4824b8ffa5d85faaed75d24e9ef. // -// Solidity: event DepositToWallet(bytes32 indexed walletId, address indexed tokenAddress, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) WatchDepositToWallet(opts *bind.WatchOpts, sink chan<- *CelerWalletDepositToWallet, walletId [][32]byte, tokenAddress []common.Address) (event.Subscription, error) { +// Solidity: event OperatorVoted(bytes32 indexed walletId, address indexed candidate, address indexed voter) +func (_CelerWallet *CelerWalletFilterer) WatchOperatorVoted(opts *bind.WatchOpts, sink chan<- *CelerWalletOperatorVoted, walletId [][32]byte, candidate []common.Address, voter []common.Address) (event.Subscription, error) { var walletIdRule []interface{} for _, walletIdItem := range walletId { walletIdRule = append(walletIdRule, walletIdItem) } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } - - logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "DepositToWallet", walletIdRule, tokenAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CelerWalletDepositToWallet) - if err := _CelerWallet.contract.UnpackLog(event, "DepositToWallet", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDepositToWallet is a log parse operation binding the contract event 0xbc8e388b96ba8b9f627cb6d72d3513182f763c33c6107ecd31191de1f71abc1a. -// -// Solidity: event DepositToWallet(bytes32 indexed walletId, address indexed tokenAddress, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) ParseDepositToWallet(log types.Log) (*CelerWalletDepositToWallet, error) { - event := new(CelerWalletDepositToWallet) - if err := _CelerWallet.contract.UnpackLog(event, "DepositToWallet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CelerWalletDrainTokenIterator is returned from FilterDrainToken and is used to iterate over the raw logs and unpacked data for DrainToken events raised by the CelerWallet contract. -type CelerWalletDrainTokenIterator struct { - Event *CelerWalletDrainToken // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CelerWalletDrainTokenIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CelerWalletDrainToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CelerWalletDrainToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CelerWalletDrainTokenIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CelerWalletDrainTokenIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CelerWalletDrainToken represents a DrainToken event raised by the CelerWallet contract. -type CelerWalletDrainToken struct { - TokenAddress common.Address - Receiver common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDrainToken is a free log retrieval operation binding the contract event 0x896ecb17b26927fb33933fc5f413873193bced3c59fe736c42968a9778bf6b58. -// -// Solidity: event DrainToken(address indexed tokenAddress, address indexed receiver, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) FilterDrainToken(opts *bind.FilterOpts, tokenAddress []common.Address, receiver []common.Address) (*CelerWalletDrainTokenIterator, error) { - - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "DrainToken", tokenAddressRule, receiverRule) - if err != nil { - return nil, err - } - return &CelerWalletDrainTokenIterator{contract: _CelerWallet.contract, event: "DrainToken", logs: logs, sub: sub}, nil -} - -// WatchDrainToken is a free log subscription operation binding the contract event 0x896ecb17b26927fb33933fc5f413873193bced3c59fe736c42968a9778bf6b58. -// -// Solidity: event DrainToken(address indexed tokenAddress, address indexed receiver, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) WatchDrainToken(opts *bind.WatchOpts, sink chan<- *CelerWalletDrainToken, tokenAddress []common.Address, receiver []common.Address) (event.Subscription, error) { - - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) + var voterRule []interface{} + for _, voterItem := range voter { + voterRule = append(voterRule, voterItem) } - logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "DrainToken", tokenAddressRule, receiverRule) + logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "OperatorVoted", walletIdRule, candidateRule, voterRule) if err != nil { return nil, err } @@ -1301,8 +1178,8 @@ func (_CelerWallet *CelerWalletFilterer) WatchDrainToken(opts *bind.WatchOpts, s select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(CelerWalletDrainToken) - if err := _CelerWallet.contract.UnpackLog(event, "DrainToken", log); err != nil { + event := new(CelerWalletOperatorVoted) + if err := _CelerWallet.contract.UnpackLog(event, "OperatorVoted", log); err != nil { return err } event.Raw = log @@ -1323,12 +1200,12 @@ func (_CelerWallet *CelerWalletFilterer) WatchDrainToken(opts *bind.WatchOpts, s }), nil } -// ParseDrainToken is a log parse operation binding the contract event 0x896ecb17b26927fb33933fc5f413873193bced3c59fe736c42968a9778bf6b58. +// ParseOperatorVoted is a log parse operation binding the contract event 0x9797c1a8248e0833cb5344fa29eb39f2de9bd4824b8ffa5d85faaed75d24e9ef. // -// Solidity: event DrainToken(address indexed tokenAddress, address indexed receiver, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) ParseDrainToken(log types.Log) (*CelerWalletDrainToken, error) { - event := new(CelerWalletDrainToken) - if err := _CelerWallet.contract.UnpackLog(event, "DrainToken", log); err != nil { +// Solidity: event OperatorVoted(bytes32 indexed walletId, address indexed candidate, address indexed voter) +func (_CelerWallet *CelerWalletFilterer) ParseOperatorVoted(log types.Log) (*CelerWalletOperatorVoted, error) { + event := new(CelerWalletOperatorVoted) + if err := _CelerWallet.contract.UnpackLog(event, "OperatorVoted", log); err != nil { return nil, err } event.Raw = log @@ -1622,9 +1499,9 @@ func (_CelerWallet *CelerWalletFilterer) ParsePaused(log types.Log) (*CelerWalle return event, nil } -// CelerWalletProposeNewOperatorIterator is returned from FilterProposeNewOperator and is used to iterate over the raw logs and unpacked data for ProposeNewOperator events raised by the CelerWallet contract. -type CelerWalletProposeNewOperatorIterator struct { - Event *CelerWalletProposeNewOperator // Event containing the contract specifics and raw log +// CelerWalletTokenDrainedIterator is returned from FilterTokenDrained and is used to iterate over the raw logs and unpacked data for TokenDrained events raised by the CelerWallet contract. +type CelerWalletTokenDrainedIterator struct { + Event *CelerWalletTokenDrained // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1638,7 +1515,7 @@ type CelerWalletProposeNewOperatorIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *CelerWalletProposeNewOperatorIterator) Next() bool { +func (it *CelerWalletTokenDrainedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1647,7 +1524,7 @@ func (it *CelerWalletProposeNewOperatorIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(CelerWalletProposeNewOperator) + it.Event = new(CelerWalletTokenDrained) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1662,7 +1539,7 @@ func (it *CelerWalletProposeNewOperatorIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(CelerWalletProposeNewOperator) + it.Event = new(CelerWalletTokenDrained) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1678,69 +1555,61 @@ func (it *CelerWalletProposeNewOperatorIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *CelerWalletProposeNewOperatorIterator) Error() error { +func (it *CelerWalletTokenDrainedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *CelerWalletProposeNewOperatorIterator) Close() error { +func (it *CelerWalletTokenDrainedIterator) Close() error { it.sub.Unsubscribe() return nil } -// CelerWalletProposeNewOperator represents a ProposeNewOperator event raised by the CelerWallet contract. -type CelerWalletProposeNewOperator struct { - WalletId [32]byte - NewOperator common.Address - Proposer common.Address - Raw types.Log // Blockchain specific contextual infos +// CelerWalletTokenDrained represents a TokenDrained event raised by the CelerWallet contract. +type CelerWalletTokenDrained struct { + TokenAddress common.Address + Receiver common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterProposeNewOperator is a free log retrieval operation binding the contract event 0x71f9e7796b33cb192d1670169ee7f4af7c5364f8f01bab4b95466787593745c3. +// FilterTokenDrained is a free log retrieval operation binding the contract event 0xb9f4fab3dc87425962ebb52a84543eb50c90a808609ee6967a38308d6119c4bc. // -// Solidity: event ProposeNewOperator(bytes32 indexed walletId, address indexed newOperator, address indexed proposer) -func (_CelerWallet *CelerWalletFilterer) FilterProposeNewOperator(opts *bind.FilterOpts, walletId [][32]byte, newOperator []common.Address, proposer []common.Address) (*CelerWalletProposeNewOperatorIterator, error) { +// Solidity: event TokenDrained(address indexed tokenAddress, address indexed receiver, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) FilterTokenDrained(opts *bind.FilterOpts, tokenAddress []common.Address, receiver []common.Address) (*CelerWalletTokenDrainedIterator, error) { - var walletIdRule []interface{} - for _, walletIdItem := range walletId { - walletIdRule = append(walletIdRule, walletIdItem) - } - var newOperatorRule []interface{} - for _, newOperatorItem := range newOperator { - newOperatorRule = append(newOperatorRule, newOperatorItem) + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - var proposerRule []interface{} - for _, proposerItem := range proposer { - proposerRule = append(proposerRule, proposerItem) + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) } - logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "ProposeNewOperator", walletIdRule, newOperatorRule, proposerRule) + logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "TokenDrained", tokenAddressRule, receiverRule) if err != nil { return nil, err } - return &CelerWalletProposeNewOperatorIterator{contract: _CelerWallet.contract, event: "ProposeNewOperator", logs: logs, sub: sub}, nil + return &CelerWalletTokenDrainedIterator{contract: _CelerWallet.contract, event: "TokenDrained", logs: logs, sub: sub}, nil } -// WatchProposeNewOperator is a free log subscription operation binding the contract event 0x71f9e7796b33cb192d1670169ee7f4af7c5364f8f01bab4b95466787593745c3. +// WatchTokenDrained is a free log subscription operation binding the contract event 0xb9f4fab3dc87425962ebb52a84543eb50c90a808609ee6967a38308d6119c4bc. // -// Solidity: event ProposeNewOperator(bytes32 indexed walletId, address indexed newOperator, address indexed proposer) -func (_CelerWallet *CelerWalletFilterer) WatchProposeNewOperator(opts *bind.WatchOpts, sink chan<- *CelerWalletProposeNewOperator, walletId [][32]byte, newOperator []common.Address, proposer []common.Address) (event.Subscription, error) { +// Solidity: event TokenDrained(address indexed tokenAddress, address indexed receiver, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) WatchTokenDrained(opts *bind.WatchOpts, sink chan<- *CelerWalletTokenDrained, tokenAddress []common.Address, receiver []common.Address) (event.Subscription, error) { - var walletIdRule []interface{} - for _, walletIdItem := range walletId { - walletIdRule = append(walletIdRule, walletIdItem) - } - var newOperatorRule []interface{} - for _, newOperatorItem := range newOperator { - newOperatorRule = append(newOperatorRule, newOperatorItem) + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - var proposerRule []interface{} - for _, proposerItem := range proposer { - proposerRule = append(proposerRule, proposerItem) + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) } - logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "ProposeNewOperator", walletIdRule, newOperatorRule, proposerRule) + logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "TokenDrained", tokenAddressRule, receiverRule) if err != nil { return nil, err } @@ -1750,8 +1619,8 @@ func (_CelerWallet *CelerWalletFilterer) WatchProposeNewOperator(opts *bind.Watc select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(CelerWalletProposeNewOperator) - if err := _CelerWallet.contract.UnpackLog(event, "ProposeNewOperator", log); err != nil { + event := new(CelerWalletTokenDrained) + if err := _CelerWallet.contract.UnpackLog(event, "TokenDrained", log); err != nil { return err } event.Raw = log @@ -1772,21 +1641,21 @@ func (_CelerWallet *CelerWalletFilterer) WatchProposeNewOperator(opts *bind.Watc }), nil } -// ParseProposeNewOperator is a log parse operation binding the contract event 0x71f9e7796b33cb192d1670169ee7f4af7c5364f8f01bab4b95466787593745c3. +// ParseTokenDrained is a log parse operation binding the contract event 0xb9f4fab3dc87425962ebb52a84543eb50c90a808609ee6967a38308d6119c4bc. // -// Solidity: event ProposeNewOperator(bytes32 indexed walletId, address indexed newOperator, address indexed proposer) -func (_CelerWallet *CelerWalletFilterer) ParseProposeNewOperator(log types.Log) (*CelerWalletProposeNewOperator, error) { - event := new(CelerWalletProposeNewOperator) - if err := _CelerWallet.contract.UnpackLog(event, "ProposeNewOperator", log); err != nil { +// Solidity: event TokenDrained(address indexed tokenAddress, address indexed receiver, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) ParseTokenDrained(log types.Log) (*CelerWalletTokenDrained, error) { + event := new(CelerWalletTokenDrained) + if err := _CelerWallet.contract.UnpackLog(event, "TokenDrained", log); err != nil { return nil, err } event.Raw = log return event, nil } -// CelerWalletTransferToWalletIterator is returned from FilterTransferToWallet and is used to iterate over the raw logs and unpacked data for TransferToWallet events raised by the CelerWallet contract. -type CelerWalletTransferToWalletIterator struct { - Event *CelerWalletTransferToWallet // Event containing the contract specifics and raw log +// CelerWalletTransferredBetweenWalletsIterator is returned from FilterTransferredBetweenWallets and is used to iterate over the raw logs and unpacked data for TransferredBetweenWallets events raised by the CelerWallet contract. +type CelerWalletTransferredBetweenWalletsIterator struct { + Event *CelerWalletTransferredBetweenWallets // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1800,7 +1669,7 @@ type CelerWalletTransferToWalletIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *CelerWalletTransferToWalletIterator) Next() bool { +func (it *CelerWalletTransferredBetweenWalletsIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1809,7 +1678,7 @@ func (it *CelerWalletTransferToWalletIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(CelerWalletTransferToWallet) + it.Event = new(CelerWalletTransferredBetweenWallets) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1824,7 +1693,7 @@ func (it *CelerWalletTransferToWalletIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(CelerWalletTransferToWallet) + it.Event = new(CelerWalletTransferredBetweenWallets) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1840,19 +1709,19 @@ func (it *CelerWalletTransferToWalletIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *CelerWalletTransferToWalletIterator) Error() error { +func (it *CelerWalletTransferredBetweenWalletsIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *CelerWalletTransferToWalletIterator) Close() error { +func (it *CelerWalletTransferredBetweenWalletsIterator) Close() error { it.sub.Unsubscribe() return nil } -// CelerWalletTransferToWallet represents a TransferToWallet event raised by the CelerWallet contract. -type CelerWalletTransferToWallet struct { +// CelerWalletTransferredBetweenWallets represents a TransferredBetweenWallets event raised by the CelerWallet contract. +type CelerWalletTransferredBetweenWallets struct { FromWalletId [32]byte ToWalletId [32]byte TokenAddress common.Address @@ -1861,10 +1730,10 @@ type CelerWalletTransferToWallet struct { Raw types.Log // Blockchain specific contextual infos } -// FilterTransferToWallet is a free log retrieval operation binding the contract event 0x1b56f805e5edb1e61b0d3f46feffdcbab5e591aa0e70e978ada9fc22093601c8. +// FilterTransferredBetweenWallets is a free log retrieval operation binding the contract event 0x181fa219f874a081d83f85e8c9afdc32ede9e7cc757b9537f9cd04f3417a6130. // -// Solidity: event TransferToWallet(bytes32 indexed fromWalletId, bytes32 indexed toWalletId, address indexed tokenAddress, address receiver, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) FilterTransferToWallet(opts *bind.FilterOpts, fromWalletId [][32]byte, toWalletId [][32]byte, tokenAddress []common.Address) (*CelerWalletTransferToWalletIterator, error) { +// Solidity: event TransferredBetweenWallets(bytes32 indexed fromWalletId, bytes32 indexed toWalletId, address indexed tokenAddress, address receiver, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) FilterTransferredBetweenWallets(opts *bind.FilterOpts, fromWalletId [][32]byte, toWalletId [][32]byte, tokenAddress []common.Address) (*CelerWalletTransferredBetweenWalletsIterator, error) { var fromWalletIdRule []interface{} for _, fromWalletIdItem := range fromWalletId { @@ -1879,17 +1748,17 @@ func (_CelerWallet *CelerWalletFilterer) FilterTransferToWallet(opts *bind.Filte tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "TransferToWallet", fromWalletIdRule, toWalletIdRule, tokenAddressRule) + logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "TransferredBetweenWallets", fromWalletIdRule, toWalletIdRule, tokenAddressRule) if err != nil { return nil, err } - return &CelerWalletTransferToWalletIterator{contract: _CelerWallet.contract, event: "TransferToWallet", logs: logs, sub: sub}, nil + return &CelerWalletTransferredBetweenWalletsIterator{contract: _CelerWallet.contract, event: "TransferredBetweenWallets", logs: logs, sub: sub}, nil } -// WatchTransferToWallet is a free log subscription operation binding the contract event 0x1b56f805e5edb1e61b0d3f46feffdcbab5e591aa0e70e978ada9fc22093601c8. +// WatchTransferredBetweenWallets is a free log subscription operation binding the contract event 0x181fa219f874a081d83f85e8c9afdc32ede9e7cc757b9537f9cd04f3417a6130. // -// Solidity: event TransferToWallet(bytes32 indexed fromWalletId, bytes32 indexed toWalletId, address indexed tokenAddress, address receiver, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) WatchTransferToWallet(opts *bind.WatchOpts, sink chan<- *CelerWalletTransferToWallet, fromWalletId [][32]byte, toWalletId [][32]byte, tokenAddress []common.Address) (event.Subscription, error) { +// Solidity: event TransferredBetweenWallets(bytes32 indexed fromWalletId, bytes32 indexed toWalletId, address indexed tokenAddress, address receiver, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) WatchTransferredBetweenWallets(opts *bind.WatchOpts, sink chan<- *CelerWalletTransferredBetweenWallets, fromWalletId [][32]byte, toWalletId [][32]byte, tokenAddress []common.Address) (event.Subscription, error) { var fromWalletIdRule []interface{} for _, fromWalletIdItem := range fromWalletId { @@ -1904,7 +1773,7 @@ func (_CelerWallet *CelerWalletFilterer) WatchTransferToWallet(opts *bind.WatchO tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "TransferToWallet", fromWalletIdRule, toWalletIdRule, tokenAddressRule) + logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "TransferredBetweenWallets", fromWalletIdRule, toWalletIdRule, tokenAddressRule) if err != nil { return nil, err } @@ -1914,8 +1783,8 @@ func (_CelerWallet *CelerWalletFilterer) WatchTransferToWallet(opts *bind.WatchO select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(CelerWalletTransferToWallet) - if err := _CelerWallet.contract.UnpackLog(event, "TransferToWallet", log); err != nil { + event := new(CelerWalletTransferredBetweenWallets) + if err := _CelerWallet.contract.UnpackLog(event, "TransferredBetweenWallets", log); err != nil { return err } event.Raw = log @@ -1936,12 +1805,12 @@ func (_CelerWallet *CelerWalletFilterer) WatchTransferToWallet(opts *bind.WatchO }), nil } -// ParseTransferToWallet is a log parse operation binding the contract event 0x1b56f805e5edb1e61b0d3f46feffdcbab5e591aa0e70e978ada9fc22093601c8. +// ParseTransferredBetweenWallets is a log parse operation binding the contract event 0x181fa219f874a081d83f85e8c9afdc32ede9e7cc757b9537f9cd04f3417a6130. // -// Solidity: event TransferToWallet(bytes32 indexed fromWalletId, bytes32 indexed toWalletId, address indexed tokenAddress, address receiver, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) ParseTransferToWallet(log types.Log) (*CelerWalletTransferToWallet, error) { - event := new(CelerWalletTransferToWallet) - if err := _CelerWallet.contract.UnpackLog(event, "TransferToWallet", log); err != nil { +// Solidity: event TransferredBetweenWallets(bytes32 indexed fromWalletId, bytes32 indexed toWalletId, address indexed tokenAddress, address receiver, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) ParseTransferredBetweenWallets(log types.Log) (*CelerWalletTransferredBetweenWallets, error) { + event := new(CelerWalletTransferredBetweenWallets) + if err := _CelerWallet.contract.UnpackLog(event, "TransferredBetweenWallets", log); err != nil { return nil, err } event.Raw = log @@ -2082,9 +1951,171 @@ func (_CelerWallet *CelerWalletFilterer) ParseUnpaused(log types.Log) (*CelerWal return event, nil } -// CelerWalletWithdrawFromWalletIterator is returned from FilterWithdrawFromWallet and is used to iterate over the raw logs and unpacked data for WithdrawFromWallet events raised by the CelerWallet contract. -type CelerWalletWithdrawFromWalletIterator struct { - Event *CelerWalletWithdrawFromWallet // Event containing the contract specifics and raw log +// CelerWalletWalletCreatedIterator is returned from FilterWalletCreated and is used to iterate over the raw logs and unpacked data for WalletCreated events raised by the CelerWallet contract. +type CelerWalletWalletCreatedIterator struct { + Event *CelerWalletWalletCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CelerWalletWalletCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CelerWalletWalletCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CelerWalletWalletCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CelerWalletWalletCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CelerWalletWalletCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CelerWalletWalletCreated represents a WalletCreated event raised by the CelerWallet contract. +type CelerWalletWalletCreated struct { + WalletId [32]byte + Owners []common.Address + Operator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWalletCreated is a free log retrieval operation binding the contract event 0x8c665d417fd8d3d60d702a3d19dc8184b038e82487203ff32011555beb6cad90. +// +// Solidity: event WalletCreated(bytes32 indexed walletId, address[] indexed owners, address indexed operator) +func (_CelerWallet *CelerWalletFilterer) FilterWalletCreated(opts *bind.FilterOpts, walletId [][32]byte, owners [][]common.Address, operator []common.Address) (*CelerWalletWalletCreatedIterator, error) { + + var walletIdRule []interface{} + for _, walletIdItem := range walletId { + walletIdRule = append(walletIdRule, walletIdItem) + } + var ownersRule []interface{} + for _, ownersItem := range owners { + ownersRule = append(ownersRule, ownersItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "WalletCreated", walletIdRule, ownersRule, operatorRule) + if err != nil { + return nil, err + } + return &CelerWalletWalletCreatedIterator{contract: _CelerWallet.contract, event: "WalletCreated", logs: logs, sub: sub}, nil +} + +// WatchWalletCreated is a free log subscription operation binding the contract event 0x8c665d417fd8d3d60d702a3d19dc8184b038e82487203ff32011555beb6cad90. +// +// Solidity: event WalletCreated(bytes32 indexed walletId, address[] indexed owners, address indexed operator) +func (_CelerWallet *CelerWalletFilterer) WatchWalletCreated(opts *bind.WatchOpts, sink chan<- *CelerWalletWalletCreated, walletId [][32]byte, owners [][]common.Address, operator []common.Address) (event.Subscription, error) { + + var walletIdRule []interface{} + for _, walletIdItem := range walletId { + walletIdRule = append(walletIdRule, walletIdItem) + } + var ownersRule []interface{} + for _, ownersItem := range owners { + ownersRule = append(ownersRule, ownersItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "WalletCreated", walletIdRule, ownersRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CelerWalletWalletCreated) + if err := _CelerWallet.contract.UnpackLog(event, "WalletCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWalletCreated is a log parse operation binding the contract event 0x8c665d417fd8d3d60d702a3d19dc8184b038e82487203ff32011555beb6cad90. +// +// Solidity: event WalletCreated(bytes32 indexed walletId, address[] indexed owners, address indexed operator) +func (_CelerWallet *CelerWalletFilterer) ParseWalletCreated(log types.Log) (*CelerWalletWalletCreated, error) { + event := new(CelerWalletWalletCreated) + if err := _CelerWallet.contract.UnpackLog(event, "WalletCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CelerWalletWithdrawnIterator is returned from FilterWithdrawn and is used to iterate over the raw logs and unpacked data for Withdrawn events raised by the CelerWallet contract. +type CelerWalletWithdrawnIterator struct { + Event *CelerWalletWithdrawn // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2098,7 +2129,7 @@ type CelerWalletWithdrawFromWalletIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *CelerWalletWithdrawFromWalletIterator) Next() bool { +func (it *CelerWalletWithdrawnIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2107,7 +2138,7 @@ func (it *CelerWalletWithdrawFromWalletIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(CelerWalletWithdrawFromWallet) + it.Event = new(CelerWalletWithdrawn) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2122,7 +2153,7 @@ func (it *CelerWalletWithdrawFromWalletIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(CelerWalletWithdrawFromWallet) + it.Event = new(CelerWalletWithdrawn) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2138,19 +2169,19 @@ func (it *CelerWalletWithdrawFromWalletIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *CelerWalletWithdrawFromWalletIterator) Error() error { +func (it *CelerWalletWithdrawnIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *CelerWalletWithdrawFromWalletIterator) Close() error { +func (it *CelerWalletWithdrawnIterator) Close() error { it.sub.Unsubscribe() return nil } -// CelerWalletWithdrawFromWallet represents a WithdrawFromWallet event raised by the CelerWallet contract. -type CelerWalletWithdrawFromWallet struct { +// CelerWalletWithdrawn represents a Withdrawn event raised by the CelerWallet contract. +type CelerWalletWithdrawn struct { WalletId [32]byte TokenAddress common.Address Receiver common.Address @@ -2158,10 +2189,10 @@ type CelerWalletWithdrawFromWallet struct { Raw types.Log // Blockchain specific contextual infos } -// FilterWithdrawFromWallet is a free log retrieval operation binding the contract event 0xd897e862036b62a0f770979fbd2227f3210565bba2eb4d9acd1dc8ccc00c928b. +// FilterWithdrawn is a free log retrieval operation binding the contract event 0xa6786aab7dbbc48b4b0387488b407bd81448030ab207b50bea7dbb5fbc1cd9eb. // -// Solidity: event WithdrawFromWallet(bytes32 indexed walletId, address indexed tokenAddress, address indexed receiver, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) FilterWithdrawFromWallet(opts *bind.FilterOpts, walletId [][32]byte, tokenAddress []common.Address, receiver []common.Address) (*CelerWalletWithdrawFromWalletIterator, error) { +// Solidity: event Withdrawn(bytes32 indexed walletId, address indexed tokenAddress, address indexed receiver, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) FilterWithdrawn(opts *bind.FilterOpts, walletId [][32]byte, tokenAddress []common.Address, receiver []common.Address) (*CelerWalletWithdrawnIterator, error) { var walletIdRule []interface{} for _, walletIdItem := range walletId { @@ -2176,17 +2207,17 @@ func (_CelerWallet *CelerWalletFilterer) FilterWithdrawFromWallet(opts *bind.Fil receiverRule = append(receiverRule, receiverItem) } - logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "WithdrawFromWallet", walletIdRule, tokenAddressRule, receiverRule) + logs, sub, err := _CelerWallet.contract.FilterLogs(opts, "Withdrawn", walletIdRule, tokenAddressRule, receiverRule) if err != nil { return nil, err } - return &CelerWalletWithdrawFromWalletIterator{contract: _CelerWallet.contract, event: "WithdrawFromWallet", logs: logs, sub: sub}, nil + return &CelerWalletWithdrawnIterator{contract: _CelerWallet.contract, event: "Withdrawn", logs: logs, sub: sub}, nil } -// WatchWithdrawFromWallet is a free log subscription operation binding the contract event 0xd897e862036b62a0f770979fbd2227f3210565bba2eb4d9acd1dc8ccc00c928b. +// WatchWithdrawn is a free log subscription operation binding the contract event 0xa6786aab7dbbc48b4b0387488b407bd81448030ab207b50bea7dbb5fbc1cd9eb. // -// Solidity: event WithdrawFromWallet(bytes32 indexed walletId, address indexed tokenAddress, address indexed receiver, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) WatchWithdrawFromWallet(opts *bind.WatchOpts, sink chan<- *CelerWalletWithdrawFromWallet, walletId [][32]byte, tokenAddress []common.Address, receiver []common.Address) (event.Subscription, error) { +// Solidity: event Withdrawn(bytes32 indexed walletId, address indexed tokenAddress, address indexed receiver, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) WatchWithdrawn(opts *bind.WatchOpts, sink chan<- *CelerWalletWithdrawn, walletId [][32]byte, tokenAddress []common.Address, receiver []common.Address) (event.Subscription, error) { var walletIdRule []interface{} for _, walletIdItem := range walletId { @@ -2201,7 +2232,7 @@ func (_CelerWallet *CelerWalletFilterer) WatchWithdrawFromWallet(opts *bind.Watc receiverRule = append(receiverRule, receiverItem) } - logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "WithdrawFromWallet", walletIdRule, tokenAddressRule, receiverRule) + logs, sub, err := _CelerWallet.contract.WatchLogs(opts, "Withdrawn", walletIdRule, tokenAddressRule, receiverRule) if err != nil { return nil, err } @@ -2211,8 +2242,8 @@ func (_CelerWallet *CelerWalletFilterer) WatchWithdrawFromWallet(opts *bind.Watc select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(CelerWalletWithdrawFromWallet) - if err := _CelerWallet.contract.UnpackLog(event, "WithdrawFromWallet", log); err != nil { + event := new(CelerWalletWithdrawn) + if err := _CelerWallet.contract.UnpackLog(event, "Withdrawn", log); err != nil { return err } event.Raw = log @@ -2233,12 +2264,12 @@ func (_CelerWallet *CelerWalletFilterer) WatchWithdrawFromWallet(opts *bind.Watc }), nil } -// ParseWithdrawFromWallet is a log parse operation binding the contract event 0xd897e862036b62a0f770979fbd2227f3210565bba2eb4d9acd1dc8ccc00c928b. +// ParseWithdrawn is a log parse operation binding the contract event 0xa6786aab7dbbc48b4b0387488b407bd81448030ab207b50bea7dbb5fbc1cd9eb. // -// Solidity: event WithdrawFromWallet(bytes32 indexed walletId, address indexed tokenAddress, address indexed receiver, uint256 amount) -func (_CelerWallet *CelerWalletFilterer) ParseWithdrawFromWallet(log types.Log) (*CelerWalletWithdrawFromWallet, error) { - event := new(CelerWalletWithdrawFromWallet) - if err := _CelerWallet.contract.UnpackLog(event, "WithdrawFromWallet", log); err != nil { +// Solidity: event Withdrawn(bytes32 indexed walletId, address indexed tokenAddress, address indexed receiver, uint256 amount) +func (_CelerWallet *CelerWalletFilterer) ParseWithdrawn(log types.Log) (*CelerWalletWithdrawn, error) { + event := new(CelerWalletWithdrawn) + if err := _CelerWallet.contract.UnpackLog(event, "Withdrawn", log); err != nil { return nil, err } event.Raw = log diff --git a/chain/erc20.go b/chain/erc20.go index 781223b..749fa7e 100644 --- a/chain/erc20.go +++ b/chain/erc20.go @@ -33,7 +33,7 @@ var ( // ERC20MetaData contains all meta data concerning the ERC20 contract. var ERC20MetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DECIMALS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INITIAL_SUPPLY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidApprover\",\"inputs\":[{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSender\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSpender\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561000f575f5ffd5b506040518060400160405280601181526020017022a921991822bc30b6b83632aa37b5b2b760791b81525060405180604001604052806005815260200164045455432360dc1b81525081600390816100679190610293565b5060046100748282610293565b505050610093336b204fce5e3e2502611000000061009860201b60201c565b610372565b6001600160a01b0382166100c65760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100d15f83836100d5565b5050565b6001600160a01b0383166100ff578060025f8282546100f4919061034d565b9091555061016f9050565b6001600160a01b0383165f90815260208190526040902054818110156101515760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100bd565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661018b576002805482900390556101a9565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101ee91815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061022357607f821691505b60208210810361024157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028e57805f5260205f20601f840160051c8101602085101561026c5750805b601f840160051c820191505b8181101561028b575f8155600101610278565b50505b505050565b81516001600160401b038111156102ac576102ac6101fb565b6102c0816102ba845461020f565b84610247565b6020601f8211600181146102f2575f83156102db5750848201515b5f19600385901b1c1916600184901b17845561028b565b5f84815260208120601f198516915b828110156103215787850151825560209485019460019092019101610301565b508482101561033e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561036c57634e487b7160e01b5f52601160045260245ffd5b92915050565b61071f8061037f5f395ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80632ff2e9dc1161006e5780632ff2e9dc1461012a578063313ce5671461013d57806370a082311461014457806395d89b411461016c578063a9059cbb14610174578063dd62ed3e14610187575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd5780632e0f262514610110575b5f5ffd5b6100b26101bf565b6040516100bf919061058f565b60405180910390f35b6100db6100d63660046105df565b61024f565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610607565b610268565b610118601281565b60405160ff90911681526020016100bf565b6100ef6b204fce5e3e2502611000000081565b6012610118565b6100ef610152366004610641565b6001600160a01b03165f9081526020819052604090205490565b6100b261028b565b6100db6101823660046105df565b61029a565b6100ef610195366004610661565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101ce90610692565b80601f01602080910402602001604051908101604052809291908181526020018280546101fa90610692565b80156102455780601f1061021c57610100808354040283529160200191610245565b820191905f5260205f20905b81548152906001019060200180831161022857829003601f168201915b5050505050905090565b5f3361025c8185856102a7565b60019150505b92915050565b5f336102758582856102b9565b61028085858561033a565b506001949350505050565b6060600480546101ce90610692565b5f3361025c81858561033a565b6102b48383836001610397565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610334578181101561032657604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61033484848484035f610397565b50505050565b6001600160a01b03831661036357604051634b637e8f60e11b81525f600482015260240161031d565b6001600160a01b03821661038c5760405163ec442f0560e01b81525f600482015260240161031d565b6102b4838383610469565b6001600160a01b0384166103c05760405163e602df0560e01b81525f600482015260240161031d565b6001600160a01b0383166103e957604051634a1406b160e11b81525f600482015260240161031d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561033457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161045b91815260200190565b60405180910390a350505050565b6001600160a01b038316610493578060025f82825461048891906106ca565b909155506105039050565b6001600160a01b0383165f90815260208190526040902054818110156104e55760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161031d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661051f5760028054829003905561053d565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161058291815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146105da575f5ffd5b919050565b5f5f604083850312156105f0575f5ffd5b6105f9836105c4565b946020939093013593505050565b5f5f5f60608486031215610619575f5ffd5b610622846105c4565b9250610630602085016105c4565b929592945050506040919091013590565b5f60208284031215610651575f5ffd5b61065a826105c4565b9392505050565b5f5f60408385031215610672575f5ffd5b61067b836105c4565b9150610689602084016105c4565b90509250929050565b600181811c908216806106a657607f821691505b6020821081036106c457634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561026257634e487b7160e01b5f52601160045260245ffdfea26469706673582212206a6cc07e76149b82a796c875f3f4a170d0243e12d896731fcdcb78cab4ad7b1a64736f6c634300081e0033", + Bin: "0x608060405234801561000f575f5ffd5b506040518060400160405280601181526020017022a921991822bc30b6b83632aa37b5b2b760791b81525060405180604001604052806005815260200164045455432360dc1b81525081600390816100679190610293565b5060046100748282610293565b505050610093336b204fce5e3e2502611000000061009860201b60201c565b610372565b6001600160a01b0382166100c65760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100d15f83836100d5565b5050565b6001600160a01b0383166100ff578060025f8282546100f4919061034d565b9091555061016f9050565b6001600160a01b0383165f90815260208190526040902054818110156101515760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100bd565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661018b576002805482900390556101a9565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101ee91815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061022357607f821691505b60208210810361024157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028e57805f5260205f20601f840160051c8101602085101561026c5750805b601f840160051c820191505b8181101561028b575f8155600101610278565b50505b505050565b81516001600160401b038111156102ac576102ac6101fb565b6102c0816102ba845461020f565b84610247565b6020601f8211600181146102f2575f83156102db5750848201515b5f19600385901b1c1916600184901b17845561028b565b5f84815260208120601f198516915b828110156103215787850151825560209485019460019092019101610301565b508482101561033e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561036c57634e487b7160e01b5f52601160045260245ffd5b92915050565b61071f8061037f5f395ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80632ff2e9dc1161006e5780632ff2e9dc1461012a578063313ce5671461013d57806370a082311461014457806395d89b411461016c578063a9059cbb14610174578063dd62ed3e14610187575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd5780632e0f262514610110575b5f5ffd5b6100b26101bf565b6040516100bf919061058f565b60405180910390f35b6100db6100d63660046105df565b61024f565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610607565b610268565b610118601281565b60405160ff90911681526020016100bf565b6100ef6b204fce5e3e2502611000000081565b6012610118565b6100ef610152366004610641565b6001600160a01b03165f9081526020819052604090205490565b6100b261028b565b6100db6101823660046105df565b61029a565b6100ef610195366004610661565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101ce90610692565b80601f01602080910402602001604051908101604052809291908181526020018280546101fa90610692565b80156102455780601f1061021c57610100808354040283529160200191610245565b820191905f5260205f20905b81548152906001019060200180831161022857829003601f168201915b5050505050905090565b5f3361025c8185856102a7565b60019150505b92915050565b5f336102758582856102b9565b61028085858561033a565b506001949350505050565b6060600480546101ce90610692565b5f3361025c81858561033a565b6102b48383836001610397565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610334578181101561032657604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61033484848484035f610397565b50505050565b6001600160a01b03831661036357604051634b637e8f60e11b81525f600482015260240161031d565b6001600160a01b03821661038c5760405163ec442f0560e01b81525f600482015260240161031d565b6102b4838383610469565b6001600160a01b0384166103c05760405163e602df0560e01b81525f600482015260240161031d565b6001600160a01b0383166103e957604051634a1406b160e11b81525f600482015260240161031d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561033457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161045b91815260200190565b60405180910390a350505050565b6001600160a01b038316610493578060025f82825461048891906106ca565b909155506105039050565b6001600160a01b0383165f90815260208190526040902054818110156104e55760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161031d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661051f5760028054829003905561053d565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161058291815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146105da575f5ffd5b919050565b5f5f604083850312156105f0575f5ffd5b6105f9836105c4565b946020939093013593505050565b5f5f5f60608486031215610619575f5ffd5b610622846105c4565b9250610630602085016105c4565b929592945050506040919091013590565b5f60208284031215610651575f5ffd5b61065a826105c4565b9392505050565b5f5f60408385031215610672575f5ffd5b61067b836105c4565b9150610689602084016105c4565b90509250929050565b600181811c908216806106a657607f821691505b6020821081036106c457634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561026257634e487b7160e01b5f52601160045260245ffdfea2646970667358221220b66ff1335969fa88994db59732210752c1d5e29322ed74d08c5da55377bfd14364736f6c634300081e0033", } // ERC20ABI is the input ABI used to generate the binding from. diff --git a/chain/reverterror.go b/chain/reverterror.go new file mode 100644 index 0000000..d55bc5e --- /dev/null +++ b/chain/reverterror.go @@ -0,0 +1,121 @@ +// Copyright 2018-2026 Celer Network + +package chain + +import ( + "encoding/hex" + "errors" + "fmt" + "strings" + + ethrpc "github.com/ethereum/go-ethereum/rpc" + "golang.org/x/crypto/sha3" +) + +// Solidity custom errors revert with a 4-byte selector + ABI-encoded args. +// Geth's eth_estimateGas / eth_call propagate the revert payload via the +// JSON-RPC error's `data` field, which go-ethereum exposes through the +// `rpc.DataError` interface. The legacy require-string path put the reason +// in the error message; custom errors do not — the message is just +// "execution reverted", and the precise reason lives in the data field. +// +// Helpers below extract the selector from an arbitrary error chain and +// embed it in error messages crossing layers (gRPC, OSP-to-client) so the +// custom-error name is preserved as a hex selector that the receiver can +// match against `ErrorSelector(sig)`. +// +// The hex format used in error messages is: `revert selector: 0xXXXXXXXX`. + +// errorSelectorPrefix is the substring marker we use when embedding a +// selector into a wrapping error message. Receivers grep for this prefix +// when they want to recover the selector across a transport boundary that +// flattens error to string (e.g. gRPC). +const errorSelectorPrefix = "revert selector: 0x" + +// ErrorSelector returns the 4-byte selector for a Solidity custom-error +// signature, e.g. "ConditionNotFinalized()" or "InvalidSeqNum(uint256)". +// The selector is the first 4 bytes of keccak256(sig). +func ErrorSelector(sig string) [4]byte { + h := sha3.NewLegacyKeccak256() + h.Write([]byte(sig)) + var sel [4]byte + copy(sel[:], h.Sum(nil)[:4]) + return sel +} + +// ErrorSelectorHex is ErrorSelector formatted as `0x` + 8 hex chars. +func ErrorSelectorHex(sig string) string { + sel := ErrorSelector(sig) + return "0x" + hex.EncodeToString(sel[:]) +} + +// ParseRevertSelector walks the error chain looking for an `rpc.DataError`, +// pulls its `ErrorData()` (the hex-encoded revert payload), and returns the +// leading 4-byte selector. Falls back to scanning the error message for an +// embedded `revert selector: 0x...` token left by `WrapWithRevertSelector` +// — used when the error has crossed a transport (e.g. gRPC) that flattened +// the original `rpc.DataError`. +func ParseRevertSelector(err error) (selector [4]byte, ok bool) { + if err == nil { + return selector, false + } + // Try the direct rpc.DataError path first (in-process call chain). + var dataErr ethrpc.DataError + if errors.As(err, &dataErr) { + data := dataErr.ErrorData() + if hexStr, isStr := data.(string); isStr { + if sel, sok := decodeSelectorHex(hexStr); sok { + return sel, true + } + } + } + // Fall back to the embedded-token path (post-transport). + return parseEmbeddedSelector(err.Error()) +} + +// WrapWithRevertSelector wraps `err` with a "revert selector: 0xXXXXXXXX" +// suffix when the error chain carries a custom-error revert payload. Use +// this on the side that holds the original `rpc.DataError` (typically the +// OSP) before returning across a transport boundary that flattens the +// error to a string. If no selector is present in `err`, or if the +// message already carries the selector token (i.e. an upstream layer +// already wrapped), the original error is returned unchanged. +func WrapWithRevertSelector(err error) error { + if err == nil { + return nil + } + // Idempotent: if an upstream layer already embedded the token, don't + // duplicate it. This guards against double-wrap noise when the same + // error walks through several wrap-aware layers (e.g. helper at the + // transactor + helper at the dispute path) before crossing transport. + if strings.Contains(err.Error(), errorSelectorPrefix) { + return err + } + sel, ok := ParseRevertSelector(err) + if !ok { + return err + } + return fmt.Errorf("%w (%s%s)", err, errorSelectorPrefix, hex.EncodeToString(sel[:])) +} + +func decodeSelectorHex(hexStr string) ([4]byte, bool) { + var sel [4]byte + hexStr = strings.TrimPrefix(hexStr, "0x") + if len(hexStr) < 8 { + return sel, false + } + raw, err := hex.DecodeString(hexStr[:8]) + if err != nil { + return sel, false + } + copy(sel[:], raw) + return sel, true +} + +func parseEmbeddedSelector(msg string) ([4]byte, bool) { + idx := strings.Index(msg, errorSelectorPrefix) + if idx < 0 { + return [4]byte{}, false + } + return decodeSelectorHex(msg[idx+len(errorSelectorPrefix):]) +} diff --git a/chain/reverterror_test.go b/chain/reverterror_test.go new file mode 100644 index 0000000..2a8bd11 --- /dev/null +++ b/chain/reverterror_test.go @@ -0,0 +1,152 @@ +// Copyright 2018-2026 Celer Network + +package chain + +import ( + "encoding/hex" + "errors" + "fmt" + "testing" + + "github.com/ethereum/go-ethereum/crypto" +) + +// dataErrStub mimics the DataError interface that go-ethereum's RPC client +// returns from eth_estimateGas / eth_call when the contract reverts with a +// custom error. The hex string encoding ("0x" + selector + abi-encoded +// args) is what geth puts in the JSON-RPC `data` field; we mirror that. +type dataErrStub struct { + msg string + data string +} + +func (e *dataErrStub) Error() string { return e.msg } +func (e *dataErrStub) ErrorCode() int { return 3 } +func (e *dataErrStub) ErrorData() interface{} { return e.data } + +func TestErrorSelector_MatchesEthereumKeccak(t *testing.T) { + // Cross-validate the helper against go-ethereum's canonical Keccak256 + // implementation. Solidity's custom-error selector is the first 4 + // bytes of keccak256(signature) — pinning the hashing primitive + // guarantees the selectors we compute match what the contract emits + // on revert. (If the helper ever drifted from the EVM's keccak, this + // test would catch it before the dispute e2e does.) + sigs := []string{ + "ConditionNotFinalized()", + "NotOperator()", + "NotWalletOwner()", + "ZeroAddress()", + "BalanceLimitExceeded(uint256,uint256)", + "SeqNumOutOfOrder(uint256,uint256)", + } + for _, sig := range sigs { + want := "0x" + hex.EncodeToString(crypto.Keccak256([]byte(sig))[:4]) + got := ErrorSelectorHex(sig) + if got != want { + t.Errorf("ErrorSelectorHex(%q) = %q, want %q", sig, got, want) + } + } +} + +func TestParseRevertSelector_FromDataError(t *testing.T) { + want := ErrorSelector("ConditionNotFinalized()") + stub := &dataErrStub{msg: "execution reverted", data: ErrorSelectorHex("ConditionNotFinalized()")} + + got, ok := ParseRevertSelector(stub) + if !ok { + t.Fatalf("ParseRevertSelector returned ok=false on a DataError") + } + if got != want { + t.Errorf("got selector %x, want %x", got, want) + } +} + +func TestParseRevertSelector_FromDataErrorWithArgs(t *testing.T) { + // Solidity custom errors with arguments encode as + // "0x<4-byte-selector>". The parser must take only + // the leading 4 bytes regardless of any args that follow. + sigSel := ErrorSelector("BalanceLimitExceeded(uint256,uint256)") + dataHex := ErrorSelectorHex("BalanceLimitExceeded(uint256,uint256)") + + "0000000000000000000000000000000000000000000000000000000000000064" + + "0000000000000000000000000000000000000000000000000000000000000032" + stub := &dataErrStub{msg: "execution reverted", data: dataHex} + + got, ok := ParseRevertSelector(stub) + if !ok || got != sigSel { + t.Errorf("got (%x, %v), want (%x, true)", got, ok, sigSel) + } +} + +func TestWrapWithRevertSelector_RoundTripsAcrossStringFlatten(t *testing.T) { + // Simulates the full cross-boundary path: + // contract revert → rpc.DataError surfaces at OSP → + // chain.WrapWithRevertSelector embeds the hex selector in the + // error message → gRPC layer flattens to a string error → + // test side calls ParseRevertSelector on the flat string and + // recovers the same selector. + want := ErrorSelector("ConditionNotFinalized()") + stub := &dataErrStub{msg: "execution reverted", data: ErrorSelectorHex("ConditionNotFinalized()")} + wrapped := WrapWithRevertSelector(stub) + if wrapped == nil { + t.Fatal("WrapWithRevertSelector returned nil on non-nil input") + } + + // Flatten through string — what gRPC's status.Error(...) does to the + // underlying typed error. + flat := errors.New(wrapped.Error()) + got, ok := ParseRevertSelector(flat) + if !ok { + t.Fatalf("ParseRevertSelector failed to recover selector from flattened err: %v", flat) + } + if got != want { + t.Errorf("got selector %x, want %x (flat err: %s)", got, want, flat) + } +} + +func TestWrapWithRevertSelector_NoOpOnPlainError(t *testing.T) { + // Errors that don't carry a custom-error revert payload must round-trip + // unchanged so callers can't false-positive on incidental hex bytes. + plain := errors.New("dial tcp: connection refused") + got := WrapWithRevertSelector(plain) + if got != plain { + t.Errorf("expected plain error to round-trip unchanged; got %v", got) + } + if _, ok := ParseRevertSelector(plain); ok { + t.Errorf("ParseRevertSelector unexpectedly succeeded on a plain error") + } +} + +func TestWrapWithRevertSelector_Idempotent(t *testing.T) { + // Wrapping an already-wrapped error must not append a second selector + // token. Multiple wrap-aware layers (e.g. centralized helper at the + // transactor + a defensive wrap at the caller) shouldn't compound noise. + stub := &dataErrStub{msg: "execution reverted", data: ErrorSelectorHex("ConditionNotFinalized()")} + once := WrapWithRevertSelector(stub) + twice := WrapWithRevertSelector(once) + if once.Error() != twice.Error() { + t.Errorf("double-wrap produced different message:\nonce: %q\ntwice: %q", once.Error(), twice.Error()) + } +} + +func TestWrapWithRevertSelector_NilSafe(t *testing.T) { + if got := WrapWithRevertSelector(nil); got != nil { + t.Errorf("WrapWithRevertSelector(nil) = %v, want nil", got) + } + if _, ok := ParseRevertSelector(nil); ok { + t.Errorf("ParseRevertSelector(nil) returned ok=true") + } +} + +func TestParseRevertSelector_WrappedWithFmtErrorf(t *testing.T) { + // goutils transactor wraps errors with `fmt.Errorf("tx dry-run err: %w, ...", err)`. + // errors.As must still find the DataError through that chain. + stub := &dataErrStub{msg: "execution reverted", data: ErrorSelectorHex("NotOperator()")} + wrapped := fmt.Errorf("tx dry-run err: %w, calldata: 0xabcd", stub) + got, ok := ParseRevertSelector(wrapped) + if !ok { + t.Fatalf("ParseRevertSelector failed through fmt.Errorf wrap") + } + if got != ErrorSelector("NotOperator()") { + t.Errorf("got %x, want %x", got, ErrorSelector("NotOperator()")) + } +} diff --git a/chain/transactor.go b/chain/transactor.go new file mode 100644 index 0000000..bc03346 --- /dev/null +++ b/chain/transactor.go @@ -0,0 +1,42 @@ +// Copyright 2018-2026 Celer Network + +package chain + +import ( + "github.com/celer-network/goutils/eth" + "github.com/ethereum/go-ethereum/core/types" +) + +// SubmitWaitMined wraps `eth.TransactorPool.SubmitWaitMined` so any returned +// error carries the contract's custom-error selector via +// `WrapWithRevertSelector`. Use this from any site whose error may cross a +// transport boundary that flattens `rpc.DataError` to a string (e.g. gRPC +// to a remote client / SDK), so the receiver can still match against the +// canonical 4-byte selector. +// +// Direct `eth.TransactorPool.SubmitWaitMined` calls should stay only at +// internal call sites whose error stays in-process — they don't need the +// extra wrap. New cross-boundary call sites should default to this helper. +func SubmitWaitMined( + pool *eth.TransactorPool, + description string, + method eth.TxMethod, + opts ...eth.TxOption, +) (*types.Receipt, error) { + receipt, err := pool.SubmitWaitMined(description, method, opts...) + return receipt, WrapWithRevertSelector(err) +} + +// TransactWaitMined wraps `eth.Transactor.TransactWaitMined` with the same +// selector preservation as `SubmitWaitMined`. Use it from cross-boundary +// call sites that operate on a single transactor (admin paths, OSP-only +// flows that still surface errors to clients). +func TransactWaitMined( + transactor *eth.Transactor, + description string, + method eth.TxMethod, + opts ...eth.TxOption, +) (*types.Receipt, error) { + receipt, err := transactor.TransactWaitMined(description, method, opts...) + return receipt, WrapWithRevertSelector(err) +} diff --git a/dispute/dispute_channel.go b/dispute/dispute_channel.go index 353692c..4113fed 100644 --- a/dispute/dispute_channel.go +++ b/dispute/dispute_channel.go @@ -98,7 +98,8 @@ func (p *Processor) IntendSettlePaymentChannel(cid ctype.CidType, waitMined bool } func (p *Processor) intendSettleAndWaitMined(cid ctype.CidType, stateArrayBytes []byte, logCtx settleLogContext) error { - receipt, err := p.transactorPool.SubmitWaitMined( + receipt, err := chain.SubmitWaitMined( + p.transactorPool, fmt.Sprintf("intend settle payment channel %x", cid), p.intendSettleTxMethod(cid, stateArrayBytes), config.TransactOptions(eth.WithAddGasEstimateRatio(settleTxGasEstimateRatio))...) @@ -197,7 +198,8 @@ func (p *Processor) ConfirmSettlePaymentChannel(cid ctype.CidType, waitMined boo } func (p *Processor) confirmSettleAndWaitMined(cid ctype.CidType) error { - receipt, err := p.transactorPool.SubmitWaitMined( + receipt, err := chain.SubmitWaitMined( + p.transactorPool, fmt.Sprintf("confirm settle payment channel %x", cid), p.confirmSettleTxMethod(cid), config.TransactOptions(eth.WithAddGasEstimateRatio(settleTxGasEstimateRatio))...) diff --git a/dispute/dispute_payment.go b/dispute/dispute_payment.go index 10a7c4d..f98a5a0 100644 --- a/dispute/dispute_payment.go +++ b/dispute/dispute_payment.go @@ -82,8 +82,12 @@ func (p *Processor) resolvePaymentByConditions(payID ctype.PayIDType) error { } } serializedRequest, err := proto.Marshal(request) + if err != nil { + return fmt.Errorf("marshal ResolvePayByConditionsRequest: %w", err) + } - receipt, err := p.transactorPool.SubmitWaitMined( + receipt, err := chain.SubmitWaitMined( + p.transactorPool, fmt.Sprintf("resolve payment %x by conditions", payID), func(transactor bind.ContractTransactor, opts *bind.TransactOpts) (*types.Transaction, error) { contract, err2 := diff --git a/dispute/dispute_withdraw.go b/dispute/dispute_withdraw.go index 89cf1d7..1e2aabf 100644 --- a/dispute/dispute_withdraw.go +++ b/dispute/dispute_withdraw.go @@ -52,7 +52,8 @@ func (p *Processor) IntendWithdraw(cidFrom ctype.CidType, amount *big.Int, cidTo return fmt.Errorf("insufficient balance: %s", balance.MyFree) } - receipt, err := p.transactor.TransactWaitMined( + receipt, err := chain.TransactWaitMined( + p.transactor, fmt.Sprintf("IntendWithdraw from channel %x", cidFrom), func(transactor bind.ContractTransactor, opts *bind.TransactOpts) (*types.Transaction, error) { chanLedger := p.nodeConfig.GetLedgerContractOf(cidFrom) @@ -101,7 +102,8 @@ func (p *Processor) ConfirmWithdraw(cid ctype.CidType) error { return err2 } - receipt, err := p.transactor.TransactWaitMined( + receipt, err := chain.TransactWaitMined( + p.transactor, fmt.Sprintf("ConfirmWithdraw from channel %x", cid), func(transactor bind.ContractTransactor, opts *bind.TransactOpts) (*types.Transaction, error) { chanLedger := p.nodeConfig.GetLedgerContractOf(cid) @@ -133,7 +135,8 @@ func (p *Processor) ConfirmWithdraw(cid ctype.CidType) error { func (p *Processor) VetoWithdraw(cid ctype.CidType) error { log.Infoln("Veto withdraw", cid.Hex()) - receipt, err := p.transactor.TransactWaitMined( + receipt, err := chain.TransactWaitMined( + p.transactor, fmt.Sprintf("VetoWithdraw from channel %x", cid), func(transactor bind.ContractTransactor, opts *bind.TransactOpts) (*types.Transaction, error) { chanLedger := p.nodeConfig.GetLedgerContractOf(cid) diff --git a/route/routerregistry/routerregistry.go b/route/routerregistry/routerregistry.go index 5835e0b..206545c 100644 --- a/route/routerregistry/routerregistry.go +++ b/route/routerregistry/routerregistry.go @@ -32,8 +32,8 @@ var ( // RouterRegistryMetaData contains all meta data concerning the RouterRegistry contract. var RouterRegistryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"deregisterRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"refreshRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"routerInfo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"RouterUpdated\",\"inputs\":[{\"name\":\"op\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumIRouterRegistry.RouterOperation\"},{\"name\":\"routerAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", - Bin: "0x6080604052348015600e575f5ffd5b506102818061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806324f277d21461004e5780632ff0282b146100585780637880945614610060578063d1cf70d114610091575b5f5ffd5b610056610099565b005b610056610136565b61007f61006e36600461021e565b5f6020819052908152604090205481565b60405190815260200160405180910390f35b6100566101ab565b335f90815260208190526040902054156100fa5760405162461bcd60e51b815260206004820152601d60248201527f526f75746572206164647265737320616c72656164792065786973747300000060448201526064015b60405180910390fd5b335f8181526020819052604081204290555b6040517fed739f5df64012854c2039ba144af8e3af26211fc7f10a959c6a592ae58c4491905f90a3565b335f9081526020819052604081205490036101935760405162461bcd60e51b815260206004820152601d60248201527f526f75746572206164647265737320646f6573206e6f7420657869737400000060448201526064016100f1565b335f818152602081905260409020429055600261010c565b335f9081526020819052604081205490036102085760405162461bcd60e51b815260206004820152601d60248201527f526f75746572206164647265737320646f6573206e6f7420657869737400000060448201526064016100f1565b335f81815260208190526040812055600161010c565b5f6020828403121561022e575f5ffd5b81356001600160a01b0381168114610244575f5ffd5b939250505056fea264697066735822122022d5647e3ba34f507ce9aa3328e73a0e10522cc666f87eb783f4629fb6e1fbdc64736f6c634300081e0033", + ABI: "[{\"type\":\"function\",\"name\":\"deregisterRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"refreshRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerRouter\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"routerInfo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"RouterUpdated\",\"inputs\":[{\"name\":\"op\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumIRouterRegistry.RouterOperation\"},{\"name\":\"routerAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"RouterAlreadyRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RouterNotRegistered\",\"inputs\":[]}]", + Bin: "0x6080604052348015600e575f5ffd5b506101ef8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806324f277d21461004e5780632ff0282b146100585780637880945614610060578063d1cf70d114610091575b5f5ffd5b610056610099565b005b610056610102565b61007f61006e36600461018c565b5f6020819052908152604090205481565b60405190815260200160405180910390f35b610056610148565b335f90815260208190526040902054156100c657604051633ba24ff960e11b815260040160405180910390fd5b335f8181526020819052604081204290555b6040517fed739f5df64012854c2039ba144af8e3af26211fc7f10a959c6a592ae58c4491905f90a3565b335f908152602081905260408120549003610130576040516315812c6160e11b815260040160405180910390fd5b335f81815260208190526040902042905560026100d8565b335f908152602081905260408120549003610176576040516315812c6160e11b815260040160405180910390fd5b335f8181526020819052604081205560016100d8565b5f6020828403121561019c575f5ffd5b81356001600160a01b03811681146101b2575f5ffd5b939250505056fea2646970667358221220c1173d557352a367c9a8f980f16d1e8ff288a407c589f0293ef5f4c317aab39164736f6c634300081e0033", } // RouterRegistryABI is the input ABI used to generate the binding from. diff --git a/test/e2e/e2e_chanmigration_test.go b/test/e2e/e2e_chanmigration_test.go index fe1cc99..cf39717 100644 --- a/test/e2e/e2e_chanmigration_test.go +++ b/test/e2e/e2e_chanmigration_test.go @@ -205,7 +205,7 @@ func TestE2EChannelMigrationTool(t *testing.T) { t.Error(err) return } - ledger, err := walletContract.GetOperator(&bind.CallOpts{}, cid1) + ledger, err := walletContract.WalletOperator(&bind.CallOpts{}, cid1) if err != nil { t.Error(err) return @@ -215,7 +215,7 @@ func TestE2EChannelMigrationTool(t *testing.T) { return } - ledger, err = walletContract.GetOperator(&bind.CallOpts{}, cid2) + ledger, err = walletContract.WalletOperator(&bind.CallOpts{}, cid2) if err != nil { t.Error(err) return diff --git a/test/e2e/pay_dispute.go b/test/e2e/pay_dispute.go index 9fdecd7..bbad253 100644 --- a/test/e2e/pay_dispute.go +++ b/test/e2e/pay_dispute.go @@ -61,6 +61,7 @@ import ( "testing" "github.com/celer-network/agent-pay/app" + "github.com/celer-network/agent-pay/chain" "github.com/celer-network/agent-pay/chain/channel-eth-go/virtresolver" "github.com/celer-network/agent-pay/ctype" "github.com/celer-network/agent-pay/entity" @@ -300,8 +301,18 @@ func runDisputeAndAssert( if err == nil { return fmt.Errorf("SettleConditionalPayOnChain unexpectedly succeeded for not-finalized condition (amount=%s)", amount) } - if !strings.Contains(err.Error(), "Condition is not finalized") { - return fmt.Errorf("SettleConditionalPayOnChain error = %v, want substring %q", err, "Condition is not finalized") + // Contracts use custom errors (the require-string path is gone). + // Geth's dry-run JSON-RPC error carries the 4-byte selector in + // its `data` field; the `chain.SubmitWaitMined` transactor helper + // (used by dispute_payment.go for the on-chain resolve) embeds + // the selector in the returned error message before it crosses + // gRPC, so it survives the transport boundary that otherwise + // flattens `rpc.DataError` to a plain string. Match against the + // canonical selector here so the assertion stays as precise as + // the previous string match. + want := chain.ErrorSelectorHex("ConditionNotFinalized()") + if !strings.Contains(err.Error(), want) { + return fmt.Errorf("SettleConditionalPayOnChain error = %v, want revert selector %s (ConditionNotFinalized)", err, want) } return nil } diff --git a/testing/testapp/booleancondmock.go b/testing/testapp/booleancondmock.go index 264f83c..ed1d5f0 100644 --- a/testing/testapp/booleancondmock.go +++ b/testing/testapp/booleancondmock.go @@ -33,7 +33,7 @@ var ( // BooleanCondMockMetaData contains all meta data concerning the BooleanCondMock contract. var BooleanCondMockMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"getOutcome\",\"inputs\":[{\"name\":\"_query\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"isFinalized\",\"inputs\":[{\"name\":\"_query\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"}]", - Bin: "0x6080604052348015600e575f5ffd5b506102228061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063bcdbda9414610038578063ea4ba8eb1461005f575b5f5ffd5b61004b610046366004610140565b610072565b604051901515815260200160405180910390f35b61004b61006d366004610140565b6100c9565b5f818103610082575060016100c3565b6100c083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061010892505050565b90505b92915050565b5f6100c083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061010892505050565b5f81515f0361011857505f919050565b6020828101518351909161012c91906101c2565b6101379060086101d5565b1c151592915050565b5f5f60208385031215610151575f5ffd5b823567ffffffffffffffff811115610167575f5ffd5b8301601f81018513610177575f5ffd5b803567ffffffffffffffff81111561018d575f5ffd5b85602082840101111561019e575f5ffd5b6020919091019590945092505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156100c3576100c36101ae565b80820281158282048414176100c3576100c36101ae56fea2646970667358221220c12eebfbdbfdf6caab643570ac750da3584d021123904390dd66e5245cb3823f64736f6c634300081e0033", + Bin: "0x6080604052348015600e575f5ffd5b506102228061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063bcdbda9414610038578063ea4ba8eb1461005f575b5f5ffd5b61004b610046366004610140565b610072565b604051901515815260200160405180910390f35b61004b61006d366004610140565b6100c9565b5f818103610082575060016100c3565b6100c083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061010892505050565b90505b92915050565b5f6100c083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061010892505050565b5f81515f0361011857505f919050565b6020828101518351909161012c91906101c2565b6101379060086101d5565b1c151592915050565b5f5f60208385031215610151575f5ffd5b823567ffffffffffffffff811115610167575f5ffd5b8301601f81018513610177575f5ffd5b803567ffffffffffffffff81111561018d575f5ffd5b85602082840101111561019e575f5ffd5b6020919091019590945092505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156100c3576100c36101ae565b80820281158282048414176100c3576100c36101ae56fea264697066735822122083565c7aad2ee0cbe07c1936319a1ebab9231ab7680876c91411b6c0de7b7f1864736f6c634300081e0033", } // BooleanCondMockABI is the input ABI used to generate the binding from. diff --git a/testing/testframework.go b/testing/testframework.go index 592c703..f401571 100644 --- a/testing/testframework.go +++ b/testing/testframework.go @@ -283,7 +283,13 @@ func RegisterRouters(ksfiles []string) error { } tx, err2 := rrContract.RegisterRouter(auth) if err2 != nil { - if strings.Contains(err2.Error(), "Router address already exists") { + // RouterRegistry uses a custom error (`RouterAlreadyRegistered()`) + // for the already-registered case. ParseRevertSelector recovers + // the 4-byte selector either from an in-process rpc.DataError or + // from a `revert selector: 0x...` token left by an upstream wrap + // helper after the error has crossed a transport that flattened + // the typed error to a string. + if sel, ok := chain.ParseRevertSelector(err2); ok && sel == chain.ErrorSelector("RouterAlreadyRegistered()") { log.Warnln("router already registered, skipping", ksfile) continue }