How does current applications on the Ethereum blockchain enforce confidentiality of data? I know that the state of a contract is visible to any node on the network. Does this imply that there are no way of storing and enforcing confidential data on the blockchain? Is the only way that applications can store and deliver confidential data to encrypt it under the public key of the receiver?