     function closeVirtualChannel(bytes32 _lcID, bytes32 _vcID) public {
         require(Channels[_lcID].isOpen, "LC is closed.");
         require(virtualChannels[_vcID].isInSettlementState, "VC is not in settlement state.");
         require(virtualChannels[_vcID].updateVCtimeout < now, "Update vc timeout has not elapsed.");
         require(!virtualChannels[_vcID].isClose, "VC is already closed");
         Channels[_lcID].numOpenVC--;
         virtualChannels[_vcID].isClose = true;
         if(virtualChannels[_vcID].partyA == Channels[_lcID].partyAddresses[0]) {
             Channels[_lcID].ethBalances[0] += virtualChannels[_vcID].ethBalances[0];
             Channels[_lcID].ethBalances[1] += virtualChannels[_vcID].ethBalances[1];
             Channels[_lcID].erc20Balances[0] += virtualChannels[_vcID].erc20Balances[0];
             Channels[_lcID].erc20Balances[1] += virtualChannels[_vcID].erc20Balances[1];
         } else if (virtualChannels[_vcID].partyB == Channels[_lcID].partyAddresses[0]) {
             Channels[_lcID].ethBalances[0] += virtualChannels[_vcID].ethBalances[1];
             Channels[_lcID].ethBalances[1] += virtualChannels[_vcID].ethBalances[0];
             Channels[_lcID].erc20Balances[0] += virtualChannels[_vcID].erc20Balances[1];
             Channels[_lcID].erc20Balances[1] += virtualChannels[_vcID].erc20Balances[0];
         }
         emit DidVCClose(_lcID, _vcID, virtualChannels[_vcID].erc20Balances[0], virtualChannels[_vcID].erc20Balances[1]);
     }