     function initVCstate(
         bytes32 _lcID,
         bytes32 _vcID,
         bytes _proof,
         address _partyA,
         address _partyB,
         uint256[2] _bond,
         uint256[4] _balances,  
         string sigA
     )
         public
     {
         require(Channels[_lcID].isOpen, "LC is closed.");
         require(!virtualChannels[_vcID].isClose, "VC is closed.");
         require(Channels[_lcID].updateLCtimeout < now, "LC timeout not over.");
         require(virtualChannels[_vcID].updateVCtimeout == 0);
         bytes32 _initState = keccak256(
             abi.encodePacked(_vcID, uint256(0), _partyA, _partyB, _bond[0], _bond[1], _balances[0], _balances[1], _balances[2], _balances[3])
         );
         require(_partyA == ECTools.recoverSigner(_initState, sigA));
         require(_isContained(_initState, _proof, Channels[_lcID].VCrootHash) == true);
         virtualChannels[_vcID].partyA = _partyA;  
         virtualChannels[_vcID].partyB = _partyB;  
         virtualChannels[_vcID].sequence = uint256(0);
         virtualChannels[_vcID].ethBalances[0] = _balances[0];
         virtualChannels[_vcID].ethBalances[1] = _balances[1];
         virtualChannels[_vcID].erc20Balances[0] = _balances[2];
         virtualChannels[_vcID].erc20Balances[1] = _balances[3];
         virtualChannels[_vcID].bond = _bond;
         virtualChannels[_vcID].updateVCtimeout = now + Channels[_lcID].confirmTime;
         virtualChannels[_vcID].isInSettlementState = true;
         emit DidVCInit(_lcID, _vcID, _proof, uint256(0), _partyA, _partyB, _balances[0], _balances[1]);
     }