     function settleVC(
         bytes32 _lcID,
         bytes32 _vcID,
         uint256 updateSeq,
         address _partyA,
         address _partyB,
         uint256[4] updateBal,  
         string sigA
     )
         public
     {
         require(Channels[_lcID].isOpen, "LC is closed.");
         require(!virtualChannels[_vcID].isClose, "VC is closed.");
         require(virtualChannels[_vcID].sequence < updateSeq, "VC sequence is higher than update sequence.");
         require(
             virtualChannels[_vcID].ethBalances[1] < updateBal[1] && virtualChannels[_vcID].erc20Balances[1] < updateBal[3],
             "State updates may only increase recipient balance."
         );
         require(
             virtualChannels[_vcID].bond[0] == updateBal[0] + updateBal[1] &&
             virtualChannels[_vcID].bond[1] == updateBal[2] + updateBal[3],
             "Incorrect balances for bonded amount");
         require(Channels[_lcID].updateLCtimeout < now);  
         bytes32 _updateState = keccak256(
             abi.encodePacked(
                 _vcID,
                 updateSeq,
                 _partyA,
                 _partyB,
                 virtualChannels[_vcID].bond[0],
                 virtualChannels[_vcID].bond[1],
                 updateBal[0],
                 updateBal[1],
                 updateBal[2],
                 updateBal[3]
             )
         );
         require(virtualChannels[_vcID].partyA == ECTools.recoverSigner(_updateState, sigA));
         virtualChannels[_vcID].challenger = msg.sender;
         virtualChannels[_vcID].sequence = updateSeq;
         virtualChannels[_vcID].ethBalances[0] = updateBal[0];
         virtualChannels[_vcID].ethBalances[1] = updateBal[1];
         virtualChannels[_vcID].erc20Balances[0] = updateBal[2];
         virtualChannels[_vcID].erc20Balances[1] = updateBal[3];
         virtualChannels[_vcID].updateVCtimeout = now + Channels[_lcID].confirmTime;
         emit DidVCSettle(_lcID, _vcID, updateSeq, updateBal[0], updateBal[1], msg.sender, virtualChannels[_vcID].updateVCtimeout);
     }