Another private data problem!

I would like to store some data in a Smart Contract, encrypted so nobody can see it upon some specific condition (time, or whatever).

For instance, after one year, this data could be decrypted and revelead, by the contract. One way to do it is to use an Oracle (I have a functioning version using Oraclize.it) where the data is encrypted using Oraclize.it public key, and decrypted by the contract by a call to the Oracle. The partial security is that only the smart contract call call the Oracle with this data, but the weakness is now Oraclize.it, the service....

There is one discussion here: Is there a strategy for keeping data "private" and then releasing it programmatically but as I said, the issue is that Oraclize.it might not be secure enough (it's a single point of failure)

What are alternative to achieve the same goal? Is there a way to store encrypted data somewhere that can be only decrypted by a smart contract? It seems that IPFS can not restrict the access of file to a single smart contract

2 Answers 2


You could use a decentralized oracle service such as ChainLink to ensure you're not relying on a single node (and thus a single point of failure) but instead have many different oracles (as much as you want to pay for).


Encrypting the encrypted data may be a solution. This means to have another (or several other) oracles such that they will need to collude to have access to the data.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.