Just to amplify and clarify, this is an easily-misunderstood issue.
private does not imply, in any way, any assurance of confidentiality whatsoever.
Some further explanation might help.
As you know, Ethereum nodes process every transaction. In order to do that, they need access to the contract state, including the values of
private variables. If they didn't "see" that, how would they process transactions that use functions that need it?
There are at least two ways the
private information will leak. One way is that an adversary with sufficient knowledge to work at the node/miner software level can rumage around in the blockchain and dig it out. Remember, the data is replicated on everyone's disks, so they have it if they can find it. The other way is to observe inputs, also public, and work out what it must be. So, the word "private" is arguably a bit misleading.
It refers to function "visibility" which is also arguably a bit misleading. In this context, visibility defines what will happen at compile time and what will be in the contract ABI - basically the surface area the contract presents to clients and other contracts.
Would it be possible for anyone to find the current value ...
For emphasis, you can't protect confidential information with
private. There are good reasons to use
private but they relate to other concerns like catching developer errors and structuring code.
private state information is discoverable by adversaries.
Hope it helps.