diff --git a/node/engine/chainservice/adjudicator/NitroAdjudicator.go b/node/engine/chainservice/adjudicator/NitroAdjudicator.go index 4e20b066d..61a9c3bc3 100644 --- a/node/engine/chainservice/adjudicator/NitroAdjudicator.go +++ b/node/engine/chainservice/adjudicator/NitroAdjudicator.go @@ -93,8 +93,8 @@ type INitroTypesVariablePart struct { // NitroAdjudicatorMetaData contains all meta data concerning the NitroAdjudicator contract. var NitroAdjudicatorMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialHoldings\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalHoldings\",\"type\":\"uint256\"}],\"name\":\"AllocationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newTurnNumRecord\",\"type\":\"uint48\"}],\"name\":\"ChallengeCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"ChallengeRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"}],\"name\":\"Concluded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationHoldings\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"}],\"name\":\"Reclaimed\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature\",\"name\":\"challengerSig\",\"type\":\"tuple\"}],\"name\":\"challenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"sourceAllocations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"targetAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"indexOfTargetInSource\",\"type\":\"uint256\"}],\"name\":\"compute_reclaim_effects\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialHoldings\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"compute_transfer_effects_and_interactions\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"newAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"allocatesOnlyZeros\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"exitAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalPayouts\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"conclude\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"concludeAndTransferAllAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expectedHeld\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"holdings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChannelId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sourceStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"sourceOutcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceAssetIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOfTargetInSource\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"targetStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"targetOutcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"targetAssetIndex\",\"type\":\"uint256\"}],\"internalType\":\"structIMultiAssetHolder.ReclaimArgs\",\"name\":\"reclaimArgs\",\"type\":\"tuple\"}],\"name\":\"reclaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"stateIsSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"statusOf\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"fromChannelId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"outcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"transferAllAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"}],\"name\":\"unpackStatus\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"turnNumRecord\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"},{\"internalType\":\"uint160\",\"name\":\"fingerprint\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6080806040523461001657613d2b908161001c8239f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816311e9f178146118f8578163166e56cd146118a35781632fb1d2701461158d5781633033730e1461132857816331afa0b414611049578163552cfa5014610fc2578163566d54c614610f575781635685b7dc14610cc05781636d2a9c9214610bc45781638286a0601461080d578163c7df14e2146107e3578163d3c4e738146104e2578163ec346235146100d7575063ee049b50146100b957600080fd5b346100d2576100d06100ca36612103565b90612419565b005b600080fd5b346100d2576100f1906100e936612103565b809391612419565b915151906100fe836138a1565b61010782613cd8565b6101448460005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b939150506040519260209384810193600085526040820152604081526101698161198a565b73ffffffffffffffffffffffffffffffffffffffff809481925190201691160361049f5750600191835191601f196101b96101a385611a68565b946101b16040519687611a45565b808652611a68565b018260005b828110610460575050506101d28551613985565b6101dc8651613985565b9060005b87518110156102c4576101f3818961261c565b518860408201519161025487610209868561261c565b515116938460005260018a528d6040600020906000528a52604060002054610231878961261c565b5261023c868861261c565b51906040519161024b83611a29565b60008352612f57565b909491156102bb575b91604061027e8880989796948e966102786102b69c8f61261c565b5261261c565b5101520151604051926102908461198a565b83528883015260408201526102a5828961261c565b526102b0818861261c565b506125a3565b6101e0565b60009c5061025d565b50919095879460005b825181101561038e5780877fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a8b610315848961030c610389988b61261c565b5151169261261c565b518160005260018b526040600020846000528b526103396040600020918254612f4a565b9055610345848a61261c565b519060005260018a526040600020836000528a526040600020549061038160405192839287846040919493926060820195825260208201520152565b0390a26125a3565b6102cd565b5085858389156103d45750600091825252600060408120555b60005b81518110156100d057806103ca6103c46103cf938561261c565b51613649565b6125a3565b6103aa565b906104516103e3600093613cd8565b6104208560005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b50919060405192610430846119d5565b65ffffffffffff809216845216848301528460408301526060820152613a1d565b928252526040600020556103a7565b60405161046c8161198a565b6000815260405161047c816119f1565b6000815260609081858201528483015260408201528282880101520183906101be565b606490836040519162461bcd60e51b8352820152601560248201527f696e636f72726563742066696e6765727072696e7400000000000000000000006044820152fd5b346100d25760206003199080823601126100d25782359167ffffffffffffffff938484116100d257610100809285360301126100d257604051918201828110868211176107b557604052838101358252828201906024850135825260448501358681116100d25761055890823691880101611aaa565b906040840191825260608401956064810135875260808501906084810135825260a086019860a48201358a5260c48201359081116100d2576105a160e491853691850101611aaa565b918260c089015201359860e08701938a85526105dc885196516105d78c51986105c9816138a1565b8a518351848f0120906137f1565b612c3e565b80966105e785612c3e565b9c73ffffffffffffffffffffffffffffffffffffffff91600260ff604061062b816106208689610617828d61261c565b5151169a61261c565b5101518c519061261c565b5101511603610772578e969594939291610658604061064d610660948e61261c565b5101518a519061261c565b51519761261c565b5151160361072f57506106d08a9b60406106c57f4d3754632451ebba9812a9305e7bca17b67a17186a5cff93d2e9ae1b01e3d27b9d6106be888f6106db9b996107239f9e9d9b996106b1889b6138a1565b51918151910120906137f1565b518961261c565b51015194519061261c565b510151905191613310565b9184519260406106ec8a518561261c565b510152519060405161071a8161070c898201948a865260408301906131e1565b03601f198101835282611a45565b51902091613900565b519251604051908152a2005b6064908a6040519162461bcd60e51b8352820152601d60248201527f746172676574417373657420213d2067756172616e74656541737365740000006044820152fd5b6064858e6040519162461bcd60e51b8352820152601a60248201527f6e6f7420612067756172616e74656520616c6c6f636174696f6e0000000000006044820152fd5b6041827f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b346100d25760206003193601126100d2573560005260006020526020604060002054604051908152f35b346100d25760c06003193601126100d25767ffffffffffffffff9080358281116100d25761083e9036908301611e6c565b906024358381116100d25761085690369083016120e5565b926044359081116100d25761086e9036908301611f34565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126100d2576040516108a48161198a565b60643560ff811681036100d2578152608435602082015260a43560408201526108cc84613baf565b9365ffffffffffff60408451015116936108e5866139b6565b6108ee81612147565b610b935765ffffffffffff6109368760005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b5050168510610b4f575b61095461094e858985612783565b90612180565b6109c1610962855184613c61565b936109bc8451916040516020810190888252604080820152600960608201527f666f7263654d6f766500000000000000000000000000000000000000000000006080820152608081526109b481611a0d565b519020613ad1565b612630565b15610b0b57506109e565ffffffffffff60608301511665ffffffffffff42166121b0565b956040519665ffffffffffff60608901911688526060602089015281518091526080880190602060808260051b8b01019301916000905b828210610ac25750505050610a8165ffffffffffff60608194897f0aa12461ee6c137332989aa12cec79f4772ab2c1a8732a382aada7e9f3ec9d348c80610a73610aae9e9f99610a899a810360408401528d6123a9565b0390a20151168342166121b0565b935151613cd8565b9260405194610a97866119d5565b855216602084015260408301526060820152613a1d565b906000526000602052604060002055600080f35b90919293602080610afd837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f6001960301865288516123a9565b960192019201909291610a1c565b60649060206040519162461bcd60e51b8352820152601f60248201527f4368616c6c656e676572206973206e6f742061207061727469636970616e74006044820152fd5b60649060206040519162461bcd60e51b8352820152601860248201527f7475726e4e756d5265636f7264206465637265617365642e00000000000000006044820152fd5b6001610b9e876139b6565b610ba781612147565b03610bbb57610bb68587612a7d565b610940565b610bb686612b14565b346100d25760606003193601126100d25767ffffffffffffffff81358181116100d257610bf49036908401611e6c565b916024358281116100d257610c0c90369083016120e5565b926044359283116100d257610c7e61094e610c4d6020947f07da0a0674fb921e484018c8b81d80e292745e5d8ed134b580c8b9c631c5e9e096369101611f34565b610c5684613baf565b9665ffffffffffff6040835101511694610c6f89612b14565b610c79868a612a7d565b612783565b610ca9604051610c8d816119d5565b8281526000848201526000604082015260006060820152613a1d565b8460005260008352604060002055604051908152a2005b346100d2576003196060813601126100d25781359067ffffffffffffffff928383116100d257828101833603946080848701126100d257602435948186116100d257366023870112156100d25785840135958287116100d2573660248860051b830101116100d257604435928084116100d25760408785360301126100d257604483019081359873ffffffffffffffffffffffffffffffffffffffff93848b16809b036100d257610dab91610d87610d8d92610d7c368c611e6c565b926024369201612075565b906128e8565b95610da5610d9b368a611e6c565b9136908b01611f34565b90612962565b966040519a7f9936d812000000000000000000000000000000000000000000000000000000008c526060828d01527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60e48d01983591018112156100d25785016024810197910135908282116100d2578160051b360388136100d257608060648d01528190528a9897966101048a0196959493929160005b818110610f235750505094610eb89465ffffffffffff610e946064878d9b9760009f9d99610ea9988e6084819f610e7f6024610e889601611e44565b16910152611d0f565b1660a48c015201611e59565b1660c48801528487830301602488015261272e565b9184830301604485015261270e565b03915afa908115610f1757600090600092610ef1575b50610eed60405192839215158352604060208401526040830190611c42565b0390f35b9050610f1091503d806000833e610f088183611a45565b8101906126c8565b9082610ece565b6040513d6000823e3d90fd5b9198999a5091929394959660019086610f3b8b611d0f565b168152602080910199019101918c9a9998979695949392610e43565b346100d25760606003193601126100d25767ffffffffffffffff9080358281116100d257610f889036908301611af1565b6024359283116100d257610fa5610fae92610eed94369101611af1565b60443591613310565b604051918291602083526020830190611c67565b346100d25760206003193601126100d25773ffffffffffffffffffffffffffffffffffffffff6110286060923560005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b9092916040519365ffffffffffff8092168552166020840152166040820152f35b346100d2576060806003193601126100d25760243567ffffffffffffffff81116100d25761107a9036908401611d30565b9061108583356138a1565b61109c61109183613cd8565b8435906044356137f1565b600191805191601f196110b16101a385611a68565b019060005b8281106112e9575050506110ca8151613985565b6110d48251613985565b9160005b81518110156111b6576110eb818361261c565b5160408101519061114973ffffffffffffffffffffffffffffffffffffffff611114858761261c565b5151169283600052600160205260406000208b3560005260205260406000205461113e868961261c565b5261023c858861261c565b90939291156111ad575b91602091869594936111686111a8988c61261c565b526040611175878a61261c565b5101520151604051926111878461198a565b83526020830152604082015261119d828861261c565b526102b0818761261c565b6110d8565b60009a50611153565b5090919260005b825181101561128f578073ffffffffffffffffffffffffffffffffffffffff6111e961128a938661261c565b5151166111f6828861261c565b51816000526020906001825260406000208b35600052825261121e6040600020918254612f4a565b905561122a838861261c565b5191600052600181526040600020908a35600052527fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a6103816040600020546040519182918d359587846040919493926060820195825260208201520152565b6111bd565b50858286156112cc5750356000526000602052600060408120555b60005b81518110156100d057806103ca6103c46112c7938561261c565b6112ad565b906112d96112e492613cd8565b906044359035613900565b6112aa565b6020906040516112f88161198a565b60008152604051611308816119f1565b6000815283908582820152818301528460408301528288010152016110b6565b346100d25760a06003193601126100d25767ffffffffffffffff9080359060446024803582358681116100d2576113629036908601611aaa565b946064968735906084359081116100d2576113809036908801611bc1565b9260005b60018101808211611560578551811015611403576113ad6113a5838861261c565b51918761261c565b5111156113c2576113bd906125a3565b611384565b89887f496e6469636573206d75737420626520736f72746564000000000000000000008960168a60206040519562461bcd60e51b8752860152840152820152fd5b50508761153b6100d09594611417846138a1565b836114308451946105d76020978897888401208a6137f1565b907fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a73ffffffffffffffffffffffffffffffffffffffff9889611473868661261c565b515116806000526001885260406000208460005288526115096114ab6040600020549360406114a28a8a61261c565b51015185612f57565b909d9291508460005260018c526040600020886000528c526114d36040600020918254612f4a565b905560406114e18a8a61261c565b5101526040518a8101908b82526114ff8161070c604082018c6131e1565b5190209086613900565b6000908152600188526040808220858352895290819020548151878152602081019390935290820152606090a261261c565b519384511693015190604051936115518561198a565b84528301526040820152613649565b8660118a7f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b60806003193601126100d2576115a1611cec565b6024918235916064918235948460a01c156118615773ffffffffffffffffffffffffffffffffffffffff8316938460005260209260018452604060002087600052845260406000205492604435840361182257866116bf57883403611680575050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b949561162f91612b73565b926000526001815260406000209085600052528160406000205561167b604051928392836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2005b601f90856040519362461bcd60e51b85528401528201527f496e636f7272656374206d73672e76616c756520666f72206465706f736974006044820152fd5b6117576040939293516000808883017f23b872dd00000000000000000000000000000000000000000000000000000000815233868501523060448501528d8785015286845261170d84611a0d565b6040519361171a856119f1565b8a85527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648b8601525190828d5af1611750612b80565b908a612bb0565b8051868115918215611803575b505090501561179c575050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b949561162f91612b73565b60849291602a7f6f7420737563636565640000000000000000000000000000000000000000000092876040519562461bcd60e51b87528601528401527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044840152820152fd5b83809293500103126100d2578561181a9101612684565b80868c611764565b601490856040519362461bcd60e51b85528401528201527f68656c6420213d20657870656374656448656c640000000000000000000000006044820152fd5b601f91925060206040519362461bcd60e51b85528401528201527f4465706f73697420746f2065787465726e616c2064657374696e6174696f6e006044820152fd5b346100d25760406003193601126100d25773ffffffffffffffffffffffffffffffffffffffff6118d1611cec565b16600052600160205260406000206024356000526020526020604060002054604051908152f35b346100d25760606003193601126100d25767ffffffffffffffff6024358181116100d2576119299036908401611af1565b906044359081116100d25761196b926119809261194c6119539336908401611bc1565b9135612f57565b92939190604051958695608087526080870190611c67565b91151560208601528482036040860152611c67565b9060608301520390f35b6060810190811067ffffffffffffffff8211176119a657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6080810190811067ffffffffffffffff8211176119a657604052565b6040810190811067ffffffffffffffff8211176119a657604052565b60a0810190811067ffffffffffffffff8211176119a657604052565b6020810190811067ffffffffffffffff8211176119a657604052565b90601f601f19910116810190811067ffffffffffffffff8211176119a657604052565b67ffffffffffffffff81116119a65760051b60200190565b359060ff821682036100d257565b67ffffffffffffffff81116119a657601f01601f191660200190565b81601f820112156100d257803590611ac182611a8e565b92611acf6040519485611a45565b828452602083830101116100d257816000926020809301838601378301015290565b9080601f830112156100d2578135611b0881611a68565b92604091611b1883519586611a45565b808552602093848087019260051b840101938185116100d257858401925b858410611b47575050505050505090565b67ffffffffffffffff84358181116100d257860191608080601f1985880301126100d257845190611b77826119d5565b8a8501358252858501358b830152606090611b93828701611a80565b878401528501359384116100d257611bb2878c80979681970101611aaa565b90820152815201930192611b36565b81601f820112156100d257803591611bd883611a68565b92611be66040519485611a45565b808452602092838086019260051b8201019283116100d2578301905b828210611c10575050505090565b81358152908301908301611c02565b60005b838110611c325750506000910152565b8181015183820152602001611c22565b90601f19601f602093611c6081518092818752878088019101611c1f565b0116010190565b908082519081815260208091019281808460051b8301019501936000915b848310611c955750505050505090565b9091929394958480611cdc83601f1986600196030187528a51805182528381015184830152604060ff81830151169083015260608091015191608080928201520190611c42565b9801930193019194939290611c85565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100d257565b359073ffffffffffffffffffffffffffffffffffffffff821682036100d257565b9080601f830112156100d2578135611d4781611a68565b92604091611d5783519586611a45565b808552602093848087019260051b840101938185116100d257858401925b858410611d86575050505050505090565b67ffffffffffffffff84358181116100d2578601916060601f1990808286890301126100d257855191611db88361198a565b611dc38c8701611d0f565b8352868601358581116100d2578790870191828a0301126100d257865190611dea826119f1565b8c81013560048110156100d2578252878101358681116100d2578d8a91611e12930101611aaa565b8c8201528b8301528401359283116100d257611e35868b80969581960101611af1565b85820152815201930192611d75565b359067ffffffffffffffff821682036100d257565b359065ffffffffffff821682036100d257565b9190916080818403126100d25760405190611e86826119d5565b8193813567ffffffffffffffff81116100d25782019080601f830112156100d257813590611eb382611a68565b91611ec16040519384611a45565b808352602093848085019260051b8201019283116100d2578401905b828210611f1d57505050606092611f189284928652611efd818301611e44565b90860152611f0d60408201611d0f565b604086015201611e59565b910152565b848091611f2984611d0f565b815201910190611edd565b919060409283818303126100d25783518481019167ffffffffffffffff95828410878511176119a657838152829682358181116100d2578301926080848803126100d257611f81866119d5565b83358281116100d25787611f96918601611d30565b8652602095868501358381116100d25788611fb2918701611aaa565b606095869182890152611fc6868201611e59565b6080890152013580151581036100d25760a08701528552858101359182116100d257019085601f830112156100d25781359061200182611a68565b9661200e82519889611a45565b8288528685818a019402850101938185116100d2578701925b848410612038575050505050500152565b85848303126100d257878691845161204f8161198a565b61205887611a80565b815282870135838201528587013586820152815201930192612027565b9291909261208284611a68565b916120906040519384611a45565b829480845260208094019060051b8301928284116100d25780915b8483106120ba57505050505050565b823567ffffffffffffffff81116100d25786916120da8684938601611f34565b8152019201916120ab565b9080601f830112156100d25781602061210093359101612075565b90565b9060406003198301126100d25767ffffffffffffffff6004358181116100d2578361213091600401611e6c565b926024359182116100d25761210091600401611f34565b6003111561215157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b156121885750565b6121ac9060405191829162461bcd60e51b8352602060048401526024830190611c42565b0390fd5b91909165ffffffffffff808094169116019182116121ca57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906080810182519060808352815180915260a0830190602060a08260051b8601019301916000905b82821061226257505050506060612245819260208601518582036020870152611c42565b9365ffffffffffff60408201511660408501520151151591015290565b909192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60868203018252845173ffffffffffffffffffffffffffffffffffffffff8151168252602081015160606020840152805160048082101561237b575060206040926122e2926060870152015182608086015260a0850190611c42565b910151916040818303910152815180825260208201906020808260051b85010194019260005b828110612328575050505050602080600192960192019201909291612221565b909192939460208061236e83601f198760019603018952608060608b5180518452858101518685015260ff60408201511660408501520151918160608201520190611c42565b9701950193929101612308565b6021907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b8051906123be604092838552838501906121f9565b9060208091015193818184039101528080855193848152019401926000905b8382106123ec57505050505090565b8451805160ff168752808401518785015281015186820152606090950194938201936001909101906123dd565b919061242483613baf565b9261242e84612b14565b6060825101511561255f5760206124458383612962565b015190816000925b61251c575060ff9051519116036124d8577f4f465027a3d06ea73dd12be0f5c5fc0a34e21f19d6eaed4834a7a944edabc901602084926124c161249a65ffffffffffff4216925151613cd8565b604051906124a7826119d5565b600082528385830152600060408301526060820152613a1d565b8460005260008352604060002055604051908152a2565b606460405162461bcd60e51b815260206004820152600a60248201527f21756e616e696d6f7573000000000000000000000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908082116121ca57169160ff8091169081146121ca57600101918061244d565b606460405162461bcd60e51b815260206004820152601360248201527f5374617465206d7573742062652066696e616c000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146121ca5760010190565b8051156125dd5760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051600110156125dd5760400190565b80518210156125dd5760209160051b010190565b60005b825181101561267c5773ffffffffffffffffffffffffffffffffffffffff8061265c838661261c565b5116908316146126745761266f906125a3565b612633565b505050600190565b505050600090565b519081151582036100d257565b9092919261269e81611a8e565b916126ac6040519384611a45565b8294828452828201116100d25760206126c6930190611c1f565b565b91906040838203126100d2576126dd83612684565b9260208101519067ffffffffffffffff82116100d257019080601f830112156100d257815161210092602001612691565b9060208061272584516040855260408501906121f9565b93015191015290565b90815180825260208092019182818360051b82019501936000915b8483106127595750505050505090565b909192939495848061277383856001950387528a5161270e565b9801930193019194939290612749565b9291604084019173ffffffffffffffffffffffffffffffffffffffff916127b86127b18486511693886128e8565b9187612962565b6040519687947f9936d8120000000000000000000000000000000000000000000000000000000086526060600487015260e4860196825160806064890152805180995261010488019860208092019060005b8181106128955750505060009865ffffffffffff6060868b99968a999667ffffffffffffffff610ea9976128629b01511660848c0152511660a48a015201511660c4870152600319938487830301602488015261272e565b03915afa918215610f1757600090819361287b57509190565b906128919293503d8091833e610f088183611a45565b9091565b825186168c529a83019a8d9a509183019160010161280a565b604051906128bb826119f1565b60006020836040516128cc816119d5565b6060815260608382015283604082015283606082015281520152565b815191601f196128fa6101a385611a68565b0160005b81811061294b57505060005b8151811015612945578061292b612924612940938561261c565b5185612962565b612935828761261c565b526102b0818661261c565b61290a565b50505090565b6020906129566128ae565b828288010152016128fe565b919061296c6128ae565b508051906040519161297d836119f1565b82526020928383019260009283855283955b808201805151881015612a71576129bf906129b8896129b1869896518d613c61565b925161261c565b5190613ad1565b92859473ffffffffffffffffffffffffffffffffffffffff809516955b8a518051821015612a61576129f282889261261c565b51168714612a0857612a03906125a3565b6129dc565b929891955093509060ff8111612a3457906001612a2a921b87511787526125a3565b959291909261298f565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b50509350935095612a2a906125a3565b50505093509350505090565b612aba9060005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b505065ffffffffffff80911691161115612ad057565b606460405162461bcd60e51b815260206004820152601c60248201527f7475726e4e756d5265636f7264206e6f7420696e637265617365642e000000006044820152fd5b612b1f6002916139b6565b612b2881612147565b14612b2f57565b606460405162461bcd60e51b815260206004820152601260248201527f4368616e6e656c2066696e616c697a65642e00000000000000000000000000006044820152fd5b919082018092116121ca57565b3d15612bab573d90612b9182611a8e565b91612b9f6040519384611a45565b82523d6000602084013e565b606090565b91929015612c115750815115612bc4575090565b3b15612bcd5790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156121885750805190602001fd5b9080601f830112156100d257815161210092602001612691565b805181016020828203126100d257602082015167ffffffffffffffff81116100d25760208201603f8285010112156100d2576020818401015190612c8182611a68565b93612c8f6040519586611a45565b82855260208501916020850160408560051b8385010101116100d257604081830101925b60408560051b83850101018410612ccd5750505050505090565b835167ffffffffffffffff81116100d25782840101601f1990606082828a0301126100d25760405191612cff8361198a565b604082015173ffffffffffffffffffffffffffffffffffffffff811681036100d2578352606082015167ffffffffffffffff81116100d257604090830191828b0301126100d25760405190612d53826119f1565b604081015160048110156100d257825260608101519067ffffffffffffffff82116100d2576040612d8a9260208d01920101612c24565b60208201526020830152608081015167ffffffffffffffff81116100d25760208901605f8284010112156100d2576040818301015190612dc982611a68565b92612dd76040519485611a45565b828452602084019060208c0160608560051b8584010101116100d257606083820101915b60608560051b85840101018310612e245750505050506040820152815260209384019301612cb3565b825167ffffffffffffffff81116100d257608083860182018f037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001126100d25760405191612e72836119d5565b8386018201606081015184526080810151602085015260a0015160ff811681036100d257604084015260c0828786010101519267ffffffffffffffff84116100d2578f602094936060869586612ecf9401928b8a01010101612c24565b6060820152815201920191612dfb565b90612ee982611a68565b604090612ef882519182611a45565b838152601f19612f088295611a68565b0191600091825b848110612f1d575050505050565b6020908351612f2b816119d5565b8581528286818301528686830152606080830152828501015201612f0f565b919082039182116121ca57565b91929083518015156000146131d657612f6f90612edf565b91600091612f7d8151612edf565b95600190818097938960009586935b612f9a575b50505050505050565b9091929394959783518510156131cd57612fb4858561261c565b5151612fc0868561261c565b515260409060ff8083612fd3898961261c565b5101511683612fe2898861261c565b510152606080612ff2898961261c565b510151816130008a8961261c565b510152602093846130118a8a61261c565b510151868111156131c7575085965b8d8b51908b821592831561319d575b50505060001461316c5750600283828f613049908c61261c565b5101511614613129578f96959493868f918f6130e6906130ec946130f8988f988f908f916130f29a898f946130c18f86928861309c83613096888461308e848e61261c565b510151612f4a565b9361261c565b5101526130a9818761261c565b515198856130b7838961261c565b510151169561261c565b510151948251966130d1886119d5565b8752860152840152820152610278838361261c565b50612b73565b9c6125a3565b9561261c565b510151613120575b6131139161310d91612f4a565b936125a3565b91909493928a9085612f8c565b60009a50613100565b84606491519062461bcd60e51b82526004820152601b60248201527f63616e6e6f74207472616e7366657220612067756172616e74656500000000006044820152fd5b90506130f892508891508461318783959e989796958a61261c565b51015184613195848461261c565b51015261261c565b8210925090826131b2575b50508e8b3861302f565b6131be9192508d61261c565b51148a8f6131a8565b96613020565b97829150612f91565b50612f6f8151612edf565b90815180825260208092019182818360051b82019501936000915b84831061320c5750505050505090565b9091929394958181038352865173ffffffffffffffffffffffffffffffffffffffff815116825285810151906060918288850152805160048082101561237b575091886132729285948796839801520151604092839182608088015260a0870190611c42565b91015193828183039101528351908181528581019286808460051b8401019601946000915b8483106132ba5750505050505050908060019298019301930191949392906131fc565b91939597806132fc89601f1987600196989a9c03018b526080878d5180518452858101518685015260ff89820151168985015201519181898201520190611c42565b99019701930190918b979695939492613297565b80517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116121ca5761334590612edf565b91613350848361261c565b51606081015192604094855191613366836119f1565b600095868452866020809501528781805181010312613645578780519161338c836119f1565b85810151835201519084810191825287998890899c8a988b5b87518d101561350e578f848e146134ff578c8f8f90613412858f8f908f6133cc878261261c565b515195826133da898461261c565b51015160606133f08a60ff856130b7838961261c565b510151938251986134008a6119d5565b8952880152860152606085015261261c565b5261341d848d61261c565b50871590816134e9575b506134af575b50158061349a575b61344c575b6130ec613446916125a3565b9b6133a5565b9e509861348f908f61347a8b6134708f613466839161260c565b510151938d61261c565b5101918251612b73565b9052896134868d61260c565b51015190612b73565b60019e90999061343a565b506134a58d8961261c565b5151875114613435565b829c919650613486818c6134d88f6134706134df98826134cf81996125d0565b5101519461261c565b90526125d0565b996001948c61342d565b6134f491508b61261c565b51518851148f613427565b509b9d5061344660019e6125a3565b509899509c969a9950509399925050501561360257156135bf571561357c578301510361353a57505090565b60649250519062461bcd60e51b825280600483015260248201527f746f74616c5265636c61696d6564213d67756172616e7465652e616d6f756e746044820152fd5b60648484519062461bcd60e51b82526004820152601460248201527f636f756c64206e6f742066696e642072696768740000000000000000000000006044820152fd5b60648585519062461bcd60e51b82526004820152601360248201527f636f756c64206e6f742066696e64206c656674000000000000000000000000006044820152fd5b60648686519062461bcd60e51b82526004820152601560248201527f636f756c64206e6f742066696e642074617267657400000000000000000000006044820152fd5b8680fd5b73ffffffffffffffffffffffffffffffffffffffff90818151169160005b6040808401908151918251841015612f91578461368585809561261c565b51519161369660209586925161261c565b510151918060a01c156000146137c657168761371657600080809381935af16136bd612b80565b50156136d35750506136ce906125a3565b613667565b60649250519062461bcd60e51b82526004820152601660248201527f436f756c64206e6f74207472616e7366657220455448000000000000000000006044820152fd5b82517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810191909152929190818460448160008b5af19081156137bc5750613786575b506136ce91506125a3565b82813d83116137b5575b61379a8183611a45565b810103126100d2576137ae6136ce92612684565b503861377b565b503d613790565b513d6000823e3d90fd5b600089815260018652848120918152945250912080546136ce93926137ea91612b73565b90556125a3565b9161382f9060005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b9391505061385373ffffffffffffffffffffffffffffffffffffffff928392613a97565b1691160361385d57565b606460405162461bcd60e51b815260206004820152601560248201527f696e636f72726563742066696e6765727072696e7400000000000000000000006044820152fd5b6138ac6002916139b6565b6138b581612147565b036138bc57565b606460405162461bcd60e51b815260206004820152601660248201527f4368616e6e656c206e6f742066696e616c697a65642e000000000000000000006044820152fd5b9190613974916139438460005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b50929060405193613953856119d5565b65ffffffffffff809216855216602084015260408301526060820152613a1d565b906000526000602052604060002055565b9061398f82611a68565b61399c6040519182611a45565b828152601f196139ac8294611a68565b0190602036910137565b6139fa65ffffffffffff9160005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b509050168015600014613a0d5750600090565b4210613a1857600290565b600190565b73ffffffffffffffffffffffffffffffffffffffff613a927fffffffffffff0000000000000000000000000000000000000000000000000000835160d01b1679ffffffffffff0000000000000000000000000000000000000000602085015160a01b1617926060604082015191015190613a97565b161790565b73ffffffffffffffffffffffffffffffffffffffff916040519060208201928352604082015260408152613aca8161198a565b5190201690565b90600060806020926040948551858101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c8152613b178161198a565b5190209060ff8151169086868201519101519187519384528684015286830152606082015282805260015afa156137bc576000519073ffffffffffffffffffffffffffffffffffffffff821615613b6c575090565b6064905162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e61747572650000000000000000000000000000006044820152fd5b80519060209167ffffffffffffffff838301511673ffffffffffffffffffffffffffffffffffffffff9165ffffffffffff606084604087015116950151166040519485938785019760a086019060808a5285518092528060c088019601976000905b838210613c445750505050613c3e955060408501526060840152608083015203601f198101835282611a45565b51902090565b895181168852988201988a98509682019660019190910190613c11565b613c3e613c70613cae92613baf565b926020810151815191606065ffffffffffff6040830151169101511515613cc160405196879460208601998a5260a0604087015260c0860190611c42565b601f1995868683030160608701526131e1565b91608084015260a083015203908101835282611a45565b604051613c3e8161070c60208201946020865260408301906131e156fea26469706673582212207ae4752964890e1d0780b54f6661b45ca27de26920bc6463cccfdf0726c77c2f64736f6c63430008110033", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialHoldings\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalHoldings\",\"type\":\"uint256\"}],\"name\":\"AllocationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newTurnNumRecord\",\"type\":\"uint48\"}],\"name\":\"ChallengeCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"ChallengeRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newTurnNumRecord\",\"type\":\"uint48\"}],\"name\":\"Checkpointed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"}],\"name\":\"Concluded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationHoldings\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"}],\"name\":\"Reclaimed\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature\",\"name\":\"challengerSig\",\"type\":\"tuple\"}],\"name\":\"challenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"sourceAllocations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"targetAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"indexOfTargetInSource\",\"type\":\"uint256\"}],\"name\":\"compute_reclaim_effects\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialHoldings\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"compute_transfer_effects_and_interactions\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"newAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"allocatesOnlyZeros\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"exitAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalPayouts\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"conclude\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"concludeAndTransferAllAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expectedHeld\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"holdings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChannelId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sourceStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"sourceOutcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceAssetIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOfTargetInSource\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"targetStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"targetOutcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"targetAssetIndex\",\"type\":\"uint256\"}],\"internalType\":\"structIMultiAssetHolder.ReclaimArgs\",\"name\":\"reclaimArgs\",\"type\":\"tuple\"}],\"name\":\"reclaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"stateIsSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"statusOf\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"fromChannelId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"outcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"transferAllAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"}],\"name\":\"unpackStatus\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"turnNumRecord\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"},{\"internalType\":\"uint160\",\"name\":\"fingerprint\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x6080806040523461001657613d71908161001c8239f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816311e9f1781461193e578163166e56cd146118e95781632fb1d270146115d35781633033730e1461136e57816331afa0b41461108f578163552cfa5014611008578163566d54c614610f9d5781635685b7dc14610d065781636d2a9c9214610bc45781638286a0601461080d578163c7df14e2146107e3578163d3c4e738146104e2578163ec346235146100d7575063ee049b50146100b957600080fd5b346100d2576100d06100ca36612149565b9061245f565b005b600080fd5b346100d2576100f1906100e936612149565b80939161245f565b915151906100fe836138e7565b61010782613d1e565b6101448460005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b93915050604051926020938481019360008552604082015260408152610169816119d0565b73ffffffffffffffffffffffffffffffffffffffff809481925190201691160361049f5750600191835191601f196101b96101a385611aae565b946101b16040519687611a8b565b808652611aae565b018260005b828110610460575050506101d285516139cb565b6101dc86516139cb565b9060005b87518110156102c4576101f38189612662565b5188604082015191610254876102098685612662565b515116938460005260018a528d6040600020906000528a526040600020546102318789612662565b5261023c8688612662565b51906040519161024b83611a6f565b60008352612f9d565b909491156102bb575b91604061027e8880989796948e966102786102b69c8f612662565b52612662565b510152015160405192610290846119d0565b83528883015260408201526102a58289612662565b526102b08188612662565b506125e9565b6101e0565b60009c5061025d565b50919095879460005b825181101561038e5780877fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a8b610315848961030c610389988b612662565b51511692612662565b518160005260018b526040600020846000528b526103396040600020918254612f90565b9055610345848a612662565b519060005260018a526040600020836000528a526040600020549061038160405192839287846040919493926060820195825260208201520152565b0390a26125e9565b6102cd565b5085858389156103d45750600091825252600060408120555b60005b81518110156100d057806103ca6103c46103cf9385612662565b5161368f565b6125e9565b6103aa565b906104516103e3600093613d1e565b6104208560005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b5091906040519261043084611a1b565b65ffffffffffff809216845216848301528460408301526060820152613a63565b928252526040600020556103a7565b60405161046c816119d0565b6000815260405161047c81611a37565b6000815260609081858201528483015260408201528282880101520183906101be565b606490836040519162461bcd60e51b8352820152601560248201527f696e636f72726563742066696e6765727072696e7400000000000000000000006044820152fd5b346100d25760206003199080823601126100d25782359167ffffffffffffffff938484116100d257610100809285360301126100d257604051918201828110868211176107b557604052838101358252828201906024850135825260448501358681116100d25761055890823691880101611af0565b906040840191825260608401956064810135875260808501906084810135825260a086019860a48201358a5260c48201359081116100d2576105a160e491853691850101611af0565b918260c089015201359860e08701938a85526105dc885196516105d78c51986105c9816138e7565b8a518351848f012090613837565b612c84565b80966105e785612c84565b9c73ffffffffffffffffffffffffffffffffffffffff91600260ff604061062b816106208689610617828d612662565b5151169a612662565b5101518c5190612662565b5101511603610772578e969594939291610658604061064d610660948e612662565b5101518a5190612662565b515197612662565b5151160361072f57506106d08a9b60406106c57f4d3754632451ebba9812a9305e7bca17b67a17186a5cff93d2e9ae1b01e3d27b9d6106be888f6106db9b996107239f9e9d9b996106b1889b6138e7565b5191815191012090613837565b5189612662565b510151945190612662565b510151905191613356565b9184519260406106ec8a5185612662565b510152519060405161071a8161070c898201948a86526040830190613227565b03601f198101835282611a8b565b51902091613946565b519251604051908152a2005b6064908a6040519162461bcd60e51b8352820152601d60248201527f746172676574417373657420213d2067756172616e74656541737365740000006044820152fd5b6064858e6040519162461bcd60e51b8352820152601a60248201527f6e6f7420612067756172616e74656520616c6c6f636174696f6e0000000000006044820152fd5b6041827f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b346100d25760206003193601126100d2573560005260006020526020604060002054604051908152f35b346100d25760c06003193601126100d25767ffffffffffffffff9080358281116100d25761083e9036908301611eb2565b906024358381116100d257610856903690830161212b565b926044359081116100d25761086e9036908301611f7a565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126100d2576040516108a4816119d0565b60643560ff811681036100d2578152608435602082015260a43560408201526108cc84613bf5565b9365ffffffffffff60408451015116936108e5866139fc565b6108ee8161218d565b610b935765ffffffffffff6109368760005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b5050168510610b4f575b61095461094e8589856127c9565b906121c6565b6109c1610962855184613ca7565b936109bc8451916040516020810190888252604080820152600960608201527f666f7263654d6f766500000000000000000000000000000000000000000000006080820152608081526109b481611a53565b519020613b17565b612676565b15610b0b57506109e565ffffffffffff60608301511665ffffffffffff42166121f6565b956040519665ffffffffffff60608901911688526060602089015281518091526080880190602060808260051b8b01019301916000905b828210610ac25750505050610a8165ffffffffffff60608194897f0aa12461ee6c137332989aa12cec79f4772ab2c1a8732a382aada7e9f3ec9d348c80610a73610aae9e9f99610a899a810360408401528d6123ef565b0390a20151168342166121f6565b935151613d1e565b9260405194610a9786611a1b565b855216602084015260408301526060820152613a63565b906000526000602052604060002055600080f35b90919293602080610afd837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f6001960301865288516123ef565b960192019201909291610a1c565b60649060206040519162461bcd60e51b8352820152601f60248201527f4368616c6c656e676572206973206e6f742061207061727469636970616e74006044820152fd5b60649060206040519162461bcd60e51b8352820152601860248201527f7475726e4e756d5265636f7264206465637265617365642e00000000000000006044820152fd5b6001610b9e876139fc565b610ba78161218d565b03610bbb57610bb68587612ac3565b610940565b610bb686612b5a565b346100d25760606003193601126100d25767ffffffffffffffff81358181116100d257610bf49036908401611eb2565b906024358181116100d257610c0c903690850161212b565b926044359182116100d257610c2a61094e91610c5b93369101611f7a565b610c3384613bf5565b9465ffffffffffff6040835101511694610c4c87612b5a565b610c568688612ac3565b6127c9565b610c64826139fc565b610c90604051610c7381611a1b565b838152600060208201526000604082015260006060820152613a63565b836000526000602052604060002055610ca88161218d565b610cd95760207ff3f2d5574c50e581f1a2371fac7dee87f7c6d599a496765fbfa2547ce7fd5f1a91604051908152a2005b60207f07da0a0674fb921e484018c8b81d80e292745e5d8ed134b580c8b9c631c5e9e091604051908152a2005b346100d2576003196060813601126100d25781359067ffffffffffffffff928383116100d257828101833603946080848701126100d257602435948186116100d257366023870112156100d25785840135958287116100d2573660248860051b830101116100d257604435928084116100d25760408785360301126100d257604483019081359873ffffffffffffffffffffffffffffffffffffffff93848b16809b036100d257610df191610dcd610dd392610dc2368c611eb2565b9260243692016120bb565b9061292e565b95610deb610de1368a611eb2565b9136908b01611f7a565b906129a8565b966040519a7f9936d812000000000000000000000000000000000000000000000000000000008c526060828d01527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60e48d01983591018112156100d25785016024810197910135908282116100d2578160051b360388136100d257608060648d01528190528a9897966101048a0196959493929160005b818110610f695750505094610efe9465ffffffffffff610eda6064878d9b9760009f9d99610eef988e6084819f610ec56024610ece9601611e8a565b16910152611d55565b1660a48c015201611e9f565b1660c488015284878303016024880152612774565b91848303016044850152612754565b03915afa908115610f5d57600090600092610f37575b50610f3360405192839215158352604060208401526040830190611c88565b0390f35b9050610f5691503d806000833e610f4e8183611a8b565b81019061270e565b9082610f14565b6040513d6000823e3d90fd5b9198999a5091929394959660019086610f818b611d55565b168152602080910199019101918c9a9998979695949392610e89565b346100d25760606003193601126100d25767ffffffffffffffff9080358281116100d257610fce9036908301611b37565b6024359283116100d257610feb610ff492610f3394369101611b37565b60443591613356565b604051918291602083526020830190611cad565b346100d25760206003193601126100d25773ffffffffffffffffffffffffffffffffffffffff61106e6060923560005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b9092916040519365ffffffffffff8092168552166020840152166040820152f35b346100d2576060806003193601126100d25760243567ffffffffffffffff81116100d2576110c09036908401611d76565b906110cb83356138e7565b6110e26110d783613d1e565b843590604435613837565b600191805191601f196110f76101a385611aae565b019060005b82811061132f5750505061111081516139cb565b61111a82516139cb565b9160005b81518110156111fc576111318183612662565b5160408101519061118f73ffffffffffffffffffffffffffffffffffffffff61115a8587612662565b5151169283600052600160205260406000208b356000526020526040600020546111848689612662565b5261023c8588612662565b90939291156111f3575b91602091869594936111ae6111ee988c612662565b5260406111bb878a612662565b5101520151604051926111cd846119d0565b8352602083015260408201526111e38288612662565b526102b08187612662565b61111e565b60009a50611199565b5090919260005b82518110156112d5578073ffffffffffffffffffffffffffffffffffffffff61122f6112d09386612662565b51511661123c8288612662565b51816000526020906001825260406000208b3560005282526112646040600020918254612f90565b90556112708388612662565b5191600052600181526040600020908a35600052527fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a6103816040600020546040519182918d359587846040919493926060820195825260208201520152565b611203565b50858286156113125750356000526000602052600060408120555b60005b81518110156100d057806103ca6103c461130d9385612662565b6112f3565b9061131f61132a92613d1e565b906044359035613946565b6112f0565b60209060405161133e816119d0565b6000815260405161134e81611a37565b6000815283908582820152818301528460408301528288010152016110fc565b346100d25760a06003193601126100d25767ffffffffffffffff9080359060446024803582358681116100d2576113a89036908601611af0565b946064968735906084359081116100d2576113c69036908801611c07565b9260005b600181018082116115a6578551811015611449576113f36113eb8388612662565b519187612662565b51111561140857611403906125e9565b6113ca565b89887f496e6469636573206d75737420626520736f72746564000000000000000000008960168a60206040519562461bcd60e51b8752860152840152820152fd5b5050876115816100d0959461145d846138e7565b836114768451946105d76020978897888401208a613837565b907fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a73ffffffffffffffffffffffffffffffffffffffff98896114b98686612662565b5151168060005260018852604060002084600052885261154f6114f16040600020549360406114e88a8a612662565b51015185612f9d565b909d9291508460005260018c526040600020886000528c526115196040600020918254612f90565b905560406115278a8a612662565b5101526040518a8101908b82526115458161070c604082018c613227565b5190209086613946565b6000908152600188526040808220858352895290819020548151878152602081019390935290820152606090a2612662565b51938451169301519060405193611597856119d0565b8452830152604082015261368f565b8660118a7f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b60806003193601126100d2576115e7611d32565b6024918235916064918235948460a01c156118a75773ffffffffffffffffffffffffffffffffffffffff831693846000526020926001845260406000208760005284526040600020549260443584036118685786611705578834036116c6575050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b949561167591612bb9565b92600052600181526040600020908560005252816040600020556116c1604051928392836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2005b601f90856040519362461bcd60e51b85528401528201527f496e636f7272656374206d73672e76616c756520666f72206465706f736974006044820152fd5b61179d6040939293516000808883017f23b872dd00000000000000000000000000000000000000000000000000000000815233868501523060448501528d8785015286845261175384611a53565b6040519361176085611a37565b8a85527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648b8601525190828d5af1611796612bc6565b908a612bf6565b8051868115918215611849575b50509050156117e2575050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b949561167591612bb9565b60849291602a7f6f7420737563636565640000000000000000000000000000000000000000000092876040519562461bcd60e51b87528601528401527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044840152820152fd5b83809293500103126100d2578561186091016126ca565b80868c6117aa565b601490856040519362461bcd60e51b85528401528201527f68656c6420213d20657870656374656448656c640000000000000000000000006044820152fd5b601f91925060206040519362461bcd60e51b85528401528201527f4465706f73697420746f2065787465726e616c2064657374696e6174696f6e006044820152fd5b346100d25760406003193601126100d25773ffffffffffffffffffffffffffffffffffffffff611917611d32565b16600052600160205260406000206024356000526020526020604060002054604051908152f35b346100d25760606003193601126100d25767ffffffffffffffff6024358181116100d25761196f9036908401611b37565b906044359081116100d2576119b1926119c6926119926119999336908401611c07565b9135612f9d565b92939190604051958695608087526080870190611cad565b91151560208601528482036040860152611cad565b9060608301520390f35b6060810190811067ffffffffffffffff8211176119ec57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6080810190811067ffffffffffffffff8211176119ec57604052565b6040810190811067ffffffffffffffff8211176119ec57604052565b60a0810190811067ffffffffffffffff8211176119ec57604052565b6020810190811067ffffffffffffffff8211176119ec57604052565b90601f601f19910116810190811067ffffffffffffffff8211176119ec57604052565b67ffffffffffffffff81116119ec5760051b60200190565b359060ff821682036100d257565b67ffffffffffffffff81116119ec57601f01601f191660200190565b81601f820112156100d257803590611b0782611ad4565b92611b156040519485611a8b565b828452602083830101116100d257816000926020809301838601378301015290565b9080601f830112156100d2578135611b4e81611aae565b92604091611b5e83519586611a8b565b808552602093848087019260051b840101938185116100d257858401925b858410611b8d575050505050505090565b67ffffffffffffffff84358181116100d257860191608080601f1985880301126100d257845190611bbd82611a1b565b8a8501358252858501358b830152606090611bd9828701611ac6565b878401528501359384116100d257611bf8878c80979681970101611af0565b90820152815201930192611b7c565b81601f820112156100d257803591611c1e83611aae565b92611c2c6040519485611a8b565b808452602092838086019260051b8201019283116100d2578301905b828210611c56575050505090565b81358152908301908301611c48565b60005b838110611c785750506000910152565b8181015183820152602001611c68565b90601f19601f602093611ca681518092818752878088019101611c65565b0116010190565b908082519081815260208091019281808460051b8301019501936000915b848310611cdb5750505050505090565b9091929394958480611d2283601f1986600196030187528a51805182528381015184830152604060ff81830151169083015260608091015191608080928201520190611c88565b9801930193019194939290611ccb565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100d257565b359073ffffffffffffffffffffffffffffffffffffffff821682036100d257565b9080601f830112156100d2578135611d8d81611aae565b92604091611d9d83519586611a8b565b808552602093848087019260051b840101938185116100d257858401925b858410611dcc575050505050505090565b67ffffffffffffffff84358181116100d2578601916060601f1990808286890301126100d257855191611dfe836119d0565b611e098c8701611d55565b8352868601358581116100d2578790870191828a0301126100d257865190611e3082611a37565b8c81013560048110156100d2578252878101358681116100d2578d8a91611e58930101611af0565b8c8201528b8301528401359283116100d257611e7b868b80969581960101611b37565b85820152815201930192611dbb565b359067ffffffffffffffff821682036100d257565b359065ffffffffffff821682036100d257565b9190916080818403126100d25760405190611ecc82611a1b565b8193813567ffffffffffffffff81116100d25782019080601f830112156100d257813590611ef982611aae565b91611f076040519384611a8b565b808352602093848085019260051b8201019283116100d2578401905b828210611f6357505050606092611f5e9284928652611f43818301611e8a565b90860152611f5360408201611d55565b604086015201611e9f565b910152565b848091611f6f84611d55565b815201910190611f23565b919060409283818303126100d25783518481019167ffffffffffffffff95828410878511176119ec57838152829682358181116100d2578301926080848803126100d257611fc786611a1b565b83358281116100d25787611fdc918601611d76565b8652602095868501358381116100d25788611ff8918701611af0565b60609586918289015261200c868201611e9f565b6080890152013580151581036100d25760a08701528552858101359182116100d257019085601f830112156100d25781359061204782611aae565b9661205482519889611a8b565b8288528685818a019402850101938185116100d2578701925b84841061207e575050505050500152565b85848303126100d2578786918451612095816119d0565b61209e87611ac6565b81528287013583820152858701358682015281520193019261206d565b929190926120c884611aae565b916120d66040519384611a8b565b829480845260208094019060051b8301928284116100d25780915b84831061210057505050505050565b823567ffffffffffffffff81116100d25786916121208684938601611f7a565b8152019201916120f1565b9080601f830112156100d257816020612146933591016120bb565b90565b9060406003198301126100d25767ffffffffffffffff6004358181116100d2578361217691600401611eb2565b926024359182116100d25761214691600401611f7a565b6003111561219757565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b156121ce5750565b6121f29060405191829162461bcd60e51b8352602060048401526024830190611c88565b0390fd5b91909165ffffffffffff8080941691160191821161221057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906080810182519060808352815180915260a0830190602060a08260051b8601019301916000905b8282106122a85750505050606061228b819260208601518582036020870152611c88565b9365ffffffffffff60408201511660408501520151151591015290565b909192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60868203018252845173ffffffffffffffffffffffffffffffffffffffff815116825260208101516060602084015280516004808210156123c157506020604092612328926060870152015182608086015260a0850190611c88565b910151916040818303910152815180825260208201906020808260051b85010194019260005b82811061236e575050505050602080600192960192019201909291612267565b90919293946020806123b483601f198760019603018952608060608b5180518452858101518685015260ff60408201511660408501520151918160608201520190611c88565b970195019392910161234e565b6021907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b8051906124046040928385528385019061223f565b9060208091015193818184039101528080855193848152019401926000905b83821061243257505050505090565b8451805160ff16875280840151878501528101518682015260609095019493820193600190910190612423565b919061246a83613bf5565b9261247484612b5a565b606082510151156125a557602061248b83836129a8565b015190816000925b612562575060ff90515191160361251e577f4f465027a3d06ea73dd12be0f5c5fc0a34e21f19d6eaed4834a7a944edabc901602084926125076124e065ffffffffffff4216925151613d1e565b604051906124ed82611a1b565b600082528385830152600060408301526060820152613a63565b8460005260008352604060002055604051908152a2565b606460405162461bcd60e51b815260206004820152600a60248201527f21756e616e696d6f7573000000000000000000000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019080821161221057169160ff809116908114612210576001019180612493565b606460405162461bcd60e51b815260206004820152601360248201527f5374617465206d7573742062652066696e616c000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146122105760010190565b8051156126235760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051600110156126235760400190565b80518210156126235760209160051b010190565b60005b82518110156126c25773ffffffffffffffffffffffffffffffffffffffff806126a28386612662565b5116908316146126ba576126b5906125e9565b612679565b505050600190565b505050600090565b519081151582036100d257565b909291926126e481611ad4565b916126f26040519384611a8b565b8294828452828201116100d257602061270c930190611c65565b565b91906040838203126100d257612723836126ca565b9260208101519067ffffffffffffffff82116100d257019080601f830112156100d2578151612146926020016126d7565b9060208061276b845160408552604085019061223f565b93015191015290565b90815180825260208092019182818360051b82019501936000915b84831061279f5750505050505090565b90919293949584806127b983856001950387528a51612754565b980193019301919493929061278f565b9291604084019173ffffffffffffffffffffffffffffffffffffffff916127fe6127f784865116938861292e565b91876129a8565b6040519687947f9936d8120000000000000000000000000000000000000000000000000000000086526060600487015260e4860196825160806064890152805180995261010488019860208092019060005b8181106128db5750505060009865ffffffffffff6060868b99968a999667ffffffffffffffff610eef976128a89b01511660848c0152511660a48a015201511660c48701526003199384878303016024880152612774565b03915afa918215610f5d5760009081936128c157509190565b906128d79293503d8091833e610f4e8183611a8b565b9091565b825186168c529a83019a8d9a5091830191600101612850565b6040519061290182611a37565b600060208360405161291281611a1b565b6060815260608382015283604082015283606082015281520152565b815191601f196129406101a385611aae565b0160005b81811061299157505060005b815181101561298b578061297161296a6129869385612662565b51856129a8565b61297b8287612662565b526102b08186612662565b612950565b50505090565b60209061299c6128f4565b82828801015201612944565b91906129b26128f4565b50805190604051916129c383611a37565b82526020928383019260009283855283955b808201805151881015612ab757612a05906129fe896129f7869896518d613ca7565b9251612662565b5190613b17565b92859473ffffffffffffffffffffffffffffffffffffffff809516955b8a518051821015612aa757612a38828892612662565b51168714612a4e57612a49906125e9565b612a22565b929891955093509060ff8111612a7a57906001612a70921b87511787526125e9565b95929190926129d5565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b50509350935095612a70906125e9565b50505093509350505090565b612b009060005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b505065ffffffffffff80911691161115612b1657565b606460405162461bcd60e51b815260206004820152601c60248201527f7475726e4e756d5265636f7264206e6f7420696e637265617365642e000000006044820152fd5b612b656002916139fc565b612b6e8161218d565b14612b7557565b606460405162461bcd60e51b815260206004820152601260248201527f4368616e6e656c2066696e616c697a65642e00000000000000000000000000006044820152fd5b9190820180921161221057565b3d15612bf1573d90612bd782611ad4565b91612be56040519384611a8b565b82523d6000602084013e565b606090565b91929015612c575750815115612c0a575090565b3b15612c135790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156121ce5750805190602001fd5b9080601f830112156100d2578151612146926020016126d7565b805181016020828203126100d257602082015167ffffffffffffffff81116100d25760208201603f8285010112156100d2576020818401015190612cc782611aae565b93612cd56040519586611a8b565b82855260208501916020850160408560051b8385010101116100d257604081830101925b60408560051b83850101018410612d135750505050505090565b835167ffffffffffffffff81116100d25782840101601f1990606082828a0301126100d25760405191612d45836119d0565b604082015173ffffffffffffffffffffffffffffffffffffffff811681036100d2578352606082015167ffffffffffffffff81116100d257604090830191828b0301126100d25760405190612d9982611a37565b604081015160048110156100d257825260608101519067ffffffffffffffff82116100d2576040612dd09260208d01920101612c6a565b60208201526020830152608081015167ffffffffffffffff81116100d25760208901605f8284010112156100d2576040818301015190612e0f82611aae565b92612e1d6040519485611a8b565b828452602084019060208c0160608560051b8584010101116100d257606083820101915b60608560051b85840101018310612e6a5750505050506040820152815260209384019301612cf9565b825167ffffffffffffffff81116100d257608083860182018f037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001126100d25760405191612eb883611a1b565b8386018201606081015184526080810151602085015260a0015160ff811681036100d257604084015260c0828786010101519267ffffffffffffffff84116100d2578f602094936060869586612f159401928b8a01010101612c6a565b6060820152815201920191612e41565b90612f2f82611aae565b604090612f3e82519182611a8b565b838152601f19612f4e8295611aae565b0191600091825b848110612f63575050505050565b6020908351612f7181611a1b565b8581528286818301528686830152606080830152828501015201612f55565b9190820391821161221057565b919290835180151560001461321c57612fb590612f25565b91600091612fc38151612f25565b95600190818097938960009586935b612fe0575b50505050505050565b90919293949597835185101561321357612ffa8585612662565b51516130068685612662565b515260409060ff80836130198989612662565b51015116836130288988612662565b5101526060806130388989612662565b510151816130468a89612662565b510152602093846130578a8a612662565b5101518681111561320d575085965b8d8b51908b82159283156131e3575b5050506000146131b25750600283828f61308f908c612662565b510151161461316f578f96959493868f918f61312c906131329461313e988f988f908f916131389a898f946131078f8692886130e2836130dc88846130d4848e612662565b510151612f90565b93612662565b5101526130ef8187612662565b515198856130fd8389612662565b5101511695612662565b5101519482519661311788611a1b565b87528601528401528201526102788383612662565b50612bb9565b9c6125e9565b95612662565b510151613166575b6131599161315391612f90565b936125e9565b91909493928a9085612fd2565b60009a50613146565b84606491519062461bcd60e51b82526004820152601b60248201527f63616e6e6f74207472616e7366657220612067756172616e74656500000000006044820152fd5b905061313e9250889150846131cd83959e989796958a612662565b510151846131db8484612662565b510152612662565b8210925090826131f8575b50508e8b38613075565b6132049192508d612662565b51148a8f6131ee565b96613066565b97829150612fd7565b50612fb58151612f25565b90815180825260208092019182818360051b82019501936000915b8483106132525750505050505090565b9091929394958181038352865173ffffffffffffffffffffffffffffffffffffffff81511682528581015190606091828885015280516004808210156123c1575091886132b89285948796839801520151604092839182608088015260a0870190611c88565b91015193828183039101528351908181528581019286808460051b8401019601946000915b848310613300575050505050505090806001929801930193019194939290613242565b919395978061334289601f1987600196989a9c03018b526080878d5180518452858101518685015260ff89820151168985015201519181898201520190611c88565b99019701930190918b9796959394926132dd565b80517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116122105761338b90612f25565b916133968483612662565b516060810151926040948551916133ac83611a37565b60009586845286602080950152878180518101031261368b57878051916133d283611a37565b85810151835201519084810191825287998890899c8a988b5b87518d1015613554578f848e14613545578c8f8f90613458858f8f908f6134128782612662565b515195826134208984612662565b51015160606134368a60ff856130fd8389612662565b510151938251986134468a611a1b565b89528801528601526060850152612662565b52613463848d612662565b508715908161352f575b506134f5575b5015806134e0575b613492575b61313261348c916125e9565b9b6133eb565b9e50986134d5908f6134c08b6134b68f6134ac8391612652565b510151938d612662565b5101918251612bb9565b9052896134cc8d612652565b51015190612bb9565b60019e909990613480565b506134eb8d89612662565b515187511461347b565b829c9196506134cc818c61351e8f6134b661352598826135158199612616565b51015194612662565b9052612616565b996001948c613473565b61353a91508b612662565b51518851148f61346d565b509b9d5061348c60019e6125e9565b509899509c969a99505093999250505015613648571561360557156135c2578301510361358057505090565b60649250519062461bcd60e51b825280600483015260248201527f746f74616c5265636c61696d6564213d67756172616e7465652e616d6f756e746044820152fd5b60648484519062461bcd60e51b82526004820152601460248201527f636f756c64206e6f742066696e642072696768740000000000000000000000006044820152fd5b60648585519062461bcd60e51b82526004820152601360248201527f636f756c64206e6f742066696e64206c656674000000000000000000000000006044820152fd5b60648686519062461bcd60e51b82526004820152601560248201527f636f756c64206e6f742066696e642074617267657400000000000000000000006044820152fd5b8680fd5b73ffffffffffffffffffffffffffffffffffffffff90818151169160005b6040808401908151918251841015612fd757846136cb858095612662565b5151916136dc602095869251612662565b510151918060a01c1560001461380c57168761375c57600080809381935af1613703612bc6565b5015613719575050613714906125e9565b6136ad565b60649250519062461bcd60e51b82526004820152601660248201527f436f756c64206e6f74207472616e7366657220455448000000000000000000006044820152fd5b82517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810191909152929190818460448160008b5af190811561380257506137cc575b5061371491506125e9565b82813d83116137fb575b6137e08183611a8b565b810103126100d2576137f4613714926126ca565b50386137c1565b503d6137d6565b513d6000823e3d90fd5b60008981526001865284812091815294525091208054613714939261383091612bb9565b90556125e9565b916138759060005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b9391505061389973ffffffffffffffffffffffffffffffffffffffff928392613add565b169116036138a357565b606460405162461bcd60e51b815260206004820152601560248201527f696e636f72726563742066696e6765727072696e7400000000000000000000006044820152fd5b6138f26002916139fc565b6138fb8161218d565b0361390257565b606460405162461bcd60e51b815260206004820152601660248201527f4368616e6e656c206e6f742066696e616c697a65642e000000000000000000006044820152fd5b91906139ba916139898460005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b5092906040519361399985611a1b565b65ffffffffffff809216855216602084015260408301526060820152613a63565b906000526000602052604060002055565b906139d582611aae565b6139e26040519182611a8b565b828152601f196139f28294611aae565b0190602036910137565b613a4065ffffffffffff9160005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b509050168015600014613a535750600090565b4210613a5e57600290565b600190565b73ffffffffffffffffffffffffffffffffffffffff613ad87fffffffffffff0000000000000000000000000000000000000000000000000000835160d01b1679ffffffffffff0000000000000000000000000000000000000000602085015160a01b1617926060604082015191015190613add565b161790565b73ffffffffffffffffffffffffffffffffffffffff916040519060208201928352604082015260408152613b10816119d0565b5190201690565b90600060806020926040948551858101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c8152613b5d816119d0565b5190209060ff8151169086868201519101519187519384528684015286830152606082015282805260015afa15613802576000519073ffffffffffffffffffffffffffffffffffffffff821615613bb2575090565b6064905162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e61747572650000000000000000000000000000006044820152fd5b80519060209167ffffffffffffffff838301511673ffffffffffffffffffffffffffffffffffffffff9165ffffffffffff606084604087015116950151166040519485938785019760a086019060808a5285518092528060c088019601976000905b838210613c8a5750505050613c84955060408501526060840152608083015203601f198101835282611a8b565b51902090565b895181168852988201988a98509682019660019190910190613c57565b613c84613cb6613cf492613bf5565b926020810151815191606065ffffffffffff6040830151169101511515613d0760405196879460208601998a5260a0604087015260c0860190611c88565b601f199586868303016060870152613227565b91608084015260a083015203908101835282611a8b565b604051613c848161070c602082019460208652604083019061322756fea2646970667358221220771be8aedbd92521a6f4a164b61df06b32136008010d87eda57d4b1b9b4ea55764736f6c63430008110033", } // NitroAdjudicatorABI is the input ABI used to generate the binding from. @@ -1101,6 +1101,151 @@ func (_NitroAdjudicator *NitroAdjudicatorFilterer) ParseChallengeRegistered(log return event, nil } +// NitroAdjudicatorCheckpointedIterator is returned from FilterCheckpointed and is used to iterate over the raw logs and unpacked data for Checkpointed events raised by the NitroAdjudicator contract. +type NitroAdjudicatorCheckpointedIterator struct { + Event *NitroAdjudicatorCheckpointed // 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 *NitroAdjudicatorCheckpointedIterator) 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(NitroAdjudicatorCheckpointed) + 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(NitroAdjudicatorCheckpointed) + 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 *NitroAdjudicatorCheckpointedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NitroAdjudicatorCheckpointedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NitroAdjudicatorCheckpointed represents a Checkpointed event raised by the NitroAdjudicator contract. +type NitroAdjudicatorCheckpointed struct { + ChannelId [32]byte + NewTurnNumRecord *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCheckpointed is a free log retrieval operation binding the contract event 0xf3f2d5574c50e581f1a2371fac7dee87f7c6d599a496765fbfa2547ce7fd5f1a. +// +// Solidity: event Checkpointed(bytes32 indexed channelId, uint48 newTurnNumRecord) +func (_NitroAdjudicator *NitroAdjudicatorFilterer) FilterCheckpointed(opts *bind.FilterOpts, channelId [][32]byte) (*NitroAdjudicatorCheckpointedIterator, error) { + + var channelIdRule []interface{} + for _, channelIdItem := range channelId { + channelIdRule = append(channelIdRule, channelIdItem) + } + + logs, sub, err := _NitroAdjudicator.contract.FilterLogs(opts, "Checkpointed", channelIdRule) + if err != nil { + return nil, err + } + return &NitroAdjudicatorCheckpointedIterator{contract: _NitroAdjudicator.contract, event: "Checkpointed", logs: logs, sub: sub}, nil +} + +// WatchCheckpointed is a free log subscription operation binding the contract event 0xf3f2d5574c50e581f1a2371fac7dee87f7c6d599a496765fbfa2547ce7fd5f1a. +// +// Solidity: event Checkpointed(bytes32 indexed channelId, uint48 newTurnNumRecord) +func (_NitroAdjudicator *NitroAdjudicatorFilterer) WatchCheckpointed(opts *bind.WatchOpts, sink chan<- *NitroAdjudicatorCheckpointed, channelId [][32]byte) (event.Subscription, error) { + + var channelIdRule []interface{} + for _, channelIdItem := range channelId { + channelIdRule = append(channelIdRule, channelIdItem) + } + + logs, sub, err := _NitroAdjudicator.contract.WatchLogs(opts, "Checkpointed", channelIdRule) + 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(NitroAdjudicatorCheckpointed) + if err := _NitroAdjudicator.contract.UnpackLog(event, "Checkpointed", 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 +} + +// ParseCheckpointed is a log parse operation binding the contract event 0xf3f2d5574c50e581f1a2371fac7dee87f7c6d599a496765fbfa2547ce7fd5f1a. +// +// Solidity: event Checkpointed(bytes32 indexed channelId, uint48 newTurnNumRecord) +func (_NitroAdjudicator *NitroAdjudicatorFilterer) ParseCheckpointed(log types.Log) (*NitroAdjudicatorCheckpointed, error) { + event := new(NitroAdjudicatorCheckpointed) + if err := _NitroAdjudicator.contract.UnpackLog(event, "Checkpointed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // NitroAdjudicatorConcludedIterator is returned from FilterConcluded and is used to iterate over the raw logs and unpacked data for Concluded events raised by the NitroAdjudicator contract. type NitroAdjudicatorConcludedIterator struct { Event *NitroAdjudicatorConcluded // Event containing the contract specifics and raw log diff --git a/packages/nitro-protocol/contracts/ForceMove.sol b/packages/nitro-protocol/contracts/ForceMove.sol index 299dabf8b..adf94d377 100644 --- a/packages/nitro-protocol/contracts/ForceMove.sol +++ b/packages/nitro-protocol/contracts/ForceMove.sol @@ -20,7 +20,7 @@ contract ForceMove is IForceMove, StatusManager { * @param channelId Unique identifier for a state channel. * @return turnNumRecord A turnNum that (the adjudicator knows) is supported by a signature from each participant. * @return finalizesAt The unix timestamp when `channelId` will finalize. - * @return fingerprint The last 160 bits of kecca256(stateHash, outcomeHash) + * @return fingerprint The last 160 bits of keccak256(stateHash, outcomeHash) */ function unpackStatus( bytes32 channelId @@ -103,8 +103,19 @@ contract ForceMove is IForceMove, StatusManager { (supported, reason) = _stateIsSupported(fixedPart, proof, candidate); require(supported, reason); + ChannelMode currMode = _mode(channelId); + // effects - _clearChallenge(channelId, candidateTurnNum); + statusOf[channelId] = _generateStatus( + ChannelData(candidateTurnNum, 0, bytes32(0), bytes32(0)) + ); + + if (currMode == ChannelMode.Open) { + emit Checkpointed(channelId, candidateTurnNum); + } else { + // `Finalized` was ruled out by the require above + emit ChallengeCleared(channelId, candidateTurnNum); + } } /** @@ -272,19 +283,6 @@ contract ForceMove is IForceMove, StatusManager { return rvp; } - /** - * @notice Clears a challenge by updating the turnNumRecord and resetting the remaining channel storage fields, and emits a ChallengeCleared event. - * @dev Clears a challenge by updating the turnNumRecord and resetting the remaining channel storage fields, and emits a ChallengeCleared event. - * @param channelId Unique identifier for a channel. - * @param newTurnNumRecord New turnNumRecord to overwrite existing value - */ - function _clearChallenge(bytes32 channelId, uint48 newTurnNumRecord) internal { - statusOf[channelId] = _generateStatus( - ChannelData(newTurnNumRecord, 0, bytes32(0), bytes32(0)) - ); - emit ChallengeCleared(channelId, newTurnNumRecord); - } - /** * @notice Checks that the submitted turnNumRecord is strictly greater than the turnNumRecord stored on chain. * @dev Checks that the submitted turnNumRecord is strictly greater than the turnNumRecord stored on chain. diff --git a/packages/nitro-protocol/contracts/interfaces/IForceMove.sol b/packages/nitro-protocol/contracts/interfaces/IForceMove.sol index a03fecd22..a5d153a2a 100644 --- a/packages/nitro-protocol/contracts/interfaces/IForceMove.sol +++ b/packages/nitro-protocol/contracts/interfaces/IForceMove.sol @@ -66,6 +66,13 @@ interface IForceMove is INitroTypes { */ event ChallengeCleared(bytes32 indexed channelId, uint48 newTurnNumRecord); + /** + * @dev Indicates that an on-chain channel data was successfully updated and now has `newTurnNumRecord` as the latest turn number. + * @param channelId Unique identifier for a state channel. + * @param newTurnNumRecord A latest turnNum that (the adjudicator knows) is supported by adhering to channel application rules. + */ + event Checkpointed(bytes32 indexed channelId, uint48 newTurnNumRecord); + /** * @dev Indicates that a challenge has been registered against `channelId`. * @param channelId Unique identifier for a state channel. diff --git a/packages/nitro-protocol/gas-benchmarks/gasResults.json b/packages/nitro-protocol/gas-benchmarks/gasResults.json index e0d8e5e37..48d9bc80a 100644 --- a/packages/nitro-protocol/gas-benchmarks/gasResults.json +++ b/packages/nitro-protocol/gas-benchmarks/gasResults.json @@ -1,7 +1,7 @@ { "deployInfrastructureContracts": { "satp": { - "NitroAdjudicator": 3428703 + "NitroAdjudicator": 3443915 } }, "directlyFundAChannelWithETHFirst": { @@ -95,9 +95,9 @@ }, "ETHClearChallenge": { "satp": { - "checkpointX": 73562, + "checkpointX": 73936, "challengeResponseX": 96482, - "checkpointL": 69558, + "checkpointL": 69932, "challengeResponseL": 89655, "challengeResponseV": 0 } diff --git a/packages/nitro-protocol/test/contracts/ForceMove/checkpoint.test.ts b/packages/nitro-protocol/test/contracts/ForceMove/checkpoint.test.ts index 26f010662..c4a8ea27e 100644 --- a/packages/nitro-protocol/test/contracts/ForceMove/checkpoint.test.ts +++ b/packages/nitro-protocol/test/contracts/ForceMove/checkpoint.test.ts @@ -93,8 +93,8 @@ describe('checkpoint', () => { it.each` description | largestTurnNum | support | finalizesAt | reason ${accepts1} | ${turnNumRecord + 1} | ${valid} | ${undefined} | ${undefined} - ${accepts2} | ${turnNumRecord + 1} | ${valid} | ${never} | ${undefined} - ${accepts3} | ${turnNumRecord + 1 + participantsNum} | ${valid} | ${future} | ${undefined} + ${accepts2} | ${turnNumRecord + 1} | ${valid} | ${future} | ${undefined} + ${accepts3} | ${turnNumRecord + 1 + participantsNum} | ${valid} | ${never} | ${undefined} ${reverts1} | ${turnNumRecord} | ${valid} | ${never} | ${TURN_NUM_RECORD_NOT_INCREASED} ${reverts2} | ${turnNumRecord + 1} | ${invalidTransition} | ${never} | ${COUNTING_APP_INVALID_TRANSITION} ${reverts3} | ${turnNumRecord + 1} | ${unsupported} | ${never} | ${INVALID_SIGNED_BY} @@ -127,12 +127,11 @@ describe('checkpoint', () => { bindSignatures(variableParts, signatures, whoSignedWhat) ); - const isOpen = !!finalizesAt; - const outcome = isOpen ? [] : defaultOutcome; + const isChallenged = finalizesAt && finalizesAt > Math.floor(new Date().getTime() / 1000); + const outcome = isChallenged ? defaultOutcome : []; - const challengeState: State | undefined = isOpen - ? undefined - : { + const challengeState: State | undefined = isChallenged + ? { turnNum: turnNumRecord, isFinal: false, channelNonce, @@ -141,7 +140,8 @@ describe('checkpoint', () => { appData: defaultAbiCoder.encode(['uint256'], [appDatas[0]]), appDefinition, challengeDuration, - }; + } + : undefined; const fingerprint = finalizesAt ? channelDataToStatus({ @@ -162,6 +162,8 @@ describe('checkpoint', () => { } else { const receipt = await (await tx).wait(); const event = receipt.events.pop(); + + expect(event.event).toEqual(isChallenged ? 'ChallengeCleared' : 'Checkpointed'); expect(event.args).toMatchObject({ channelId, newTurnNumRecord: largestTurnNum,