     function updateLCstate(
         bytes32 _lcID,
         uint256[6] updateParams,  
         bytes32 _VCroot,
         string _sigA,
         string _sigI
     )
         public
     {
         Channel storage channel = Channels[_lcID];
         require(channel.isOpen);
         require(channel.sequence < updateParams[0]);  
         require(channel.ethBalances[0] + channel.ethBalances[1] >= updateParams[2] + updateParams[3]);
         require(channel.erc20Balances[0] + channel.erc20Balances[1] >= updateParams[4] + updateParams[5]);
         if(channel.isUpdateLCSettling == true) {
             require(channel.updateLCtimeout > now);
         }
         bytes32 _state = keccak256(
             abi.encodePacked(
                 _lcID,
                 false,
                 updateParams[0],
                 updateParams[1],
                 _VCroot,
                 channel.partyAddresses[0],
                 channel.partyAddresses[1],
                 updateParams[2],
                 updateParams[3],
                 updateParams[4],
                 updateParams[5]
             )
         );
         require(channel.partyAddresses[0] == ECTools.recoverSigner(_state, _sigA));
         require(channel.partyAddresses[1] == ECTools.recoverSigner(_state, _sigI));
         channel.sequence = updateParams[0];
         channel.numOpenVC = updateParams[1];
         channel.ethBalances[0] = updateParams[2];
         channel.ethBalances[1] = updateParams[3];
         channel.erc20Balances[0] = updateParams[4];
         channel.erc20Balances[1] = updateParams[5];
         channel.VCrootHash = _VCroot;
         channel.isUpdateLCSettling = true;
         channel.updateLCtimeout = now + channel.confirmTime;
         emit DidLCUpdateState (
             _lcID,
             updateParams[0],
             updateParams[1],
             updateParams[2],
             updateParams[3],
             updateParams[4],
             updateParams[5],
             _VCroot,
             channel.updateLCtimeout
         );
     }