func: function buyByAtom(uint _atomId) external payable onlyActive onlyOwnerOf(_atomId, false) onlyBuying(_atomId, true) {
    	    address owner = CaDataContract.atomOwner(_atomId);
    	    uint128 isBuy;
          (,,,,,,,,isBuy,) = CaDataContract.atoms(_atomId);
  	    require(isBuy == msg.value);
  	    if(buyFeeRate>0)
  	    {
  	        uint128 fee = uint128(isBuy/100) * buyFeeRate;
              isBuy = isBuy - fee;
  	        CaDataAddress.transfer(fee);
  	    }
  	    owner.transfer(isBuy);
          CaDataContract.setAtomIsBuy(_atomId,0);
          CaDataContract.setAtomIsRent(_atomId,0);
          CaDataContract.setOwnerAtomsCount(tx.origin,CaDataContract.ownerAtomsCount(tx.origin)+1);
          CaDataContract.setOwnerAtomsCount(owner,CaDataContract.ownerAtomsCount(owner)-1);
          CaDataContract.setAtomOwner(_atomId,tx.origin);
          CaCoreContract.createTransferAtom(owner, tx.origin, _atomId);
          NewBuyAtom(tx.origin,_atomId,owner,isBuy);
    	}