Appendix: Research Summary

IPFS

We looked into IPFS as one possible solution for decentralized storage. Among the projects we looked at, IPFS received the most attention, and the call not to use it was not made lightheartedly. IPFS is fantastic for trustless file retrieval. For trustless file storage, however, it currently has little value to add and is not a good match for our purposes.

There is no way to guarantee that a file is stored by a given IPFS node, or the network et al. This means we can not rely on third parties to increase the capacity of the network just by using IPFS, as we will still have to store the file to guarantee availability. For the same reason, there is currently no way to reliably reward nodes that do host these files. The only immediate benefit of utilizing IPFS would be technologically adept users being able to keep files available in the case that Opacity honors takedown requests, or shuts down entirely.

While these would be nice things to have, with the more important features being no closer to becoming a reality than without IPFS, we decided to pass on this venture for now. The core of a successful file storage platform is stability, scalability and durability, none of which would be positively affected by using IPFS. IPFS is new, still in flux and not battle tested, which directly conflicts with these core values. Any given software project should only have so many loose ends. Given the marginal benefits IPFS would provide on one end, it is not suited to form the core of our offering at this time. The fact remains that it is very promising, and the chances of us having another look at IPFS are much higher than those for a tangle-only solution.

Smart Contracts

Goals

In the Opacity ecosystem there are storage nodes and users, however the ties need to be minimal to keep anonymity. This means that the account system can’t be tied to the storage nodes internal systems. The account data must be maintained separately. Therefore, we need a system which stores information about an account (balance, the files stored by the account, and the account preferences).

Research

Research was divided into two trial areas: the balances, and the account metadata (files stored and account preferences).

For the balances, the goal was to design a system which could delegate the gas cost to the collectors of a payment, resulting in an overall reduction of transactions sent. Ideally, the transaction frequency could be reduced from 2n + c to n + c, cutting the average number of transactions in half. This could be done by using public key cryptography. Specifically, Ethereum uses ECDSA (a Digital Signature Algorithm). By signing specially designed transactions and sending them through means other than posting them to Ethereum, transactions can be delegated.

Account metadata must be handled differently than balances. The data is complex and is most similar to an array. Ethereum has support for arrays, however gas costs for creating and manipulating data is high. Because the data must be maintained, periodic checks must be made to clean the data (for example when files expire).

Results and Conclusions

Account balances are perfectly suited to be maintained by smart contracts, including funds approval. This will be investigated further to test its applicability with a decentralized system. There is a high likelihood that it will be applicable and can be used to maintain account balance information, delegate transactions to those receiving payment, and reduce gas costs throughout the system.

However, this does not apply to the account metadata. The primary, but not only, reason why this won’t apply is the high gas cost. The other concerns are similar issues with maintaining a complex data set on Ethereum. Handling large data sets, there is a chance of running out of gas in a block, therefore transactions would have to be batched, increasing complexity of code and gas spent. This could cost up to $20 for an average user per storage term.

That wraps up this month - we are looking forward to an exciting 1.0 release in the next few months!