Proposal: Towards QTT Semantics of RM

It is true that amount information would not necessarily need to be stored in value with this proposal, it could be stored elsewhere, but if it affects fungibility (i.e. included in the delta preimage in the linearity check), then a developer must implement a separate linearity check as I have described – and my understanding of this proposal is that everything in a resource affects fungibility, so that would entail this requirement.

Homomorphic commitment addition simply allows a third party to add (or subtract) commitments without knowing their preimages, such that only a + b would be a valid opening of commit(a) + commit(b). This can be used for privacy in compositional solving, such as in the example I described.

Yes, good point.

Thanks, I understand your example now.

Aye, I would not describe “implementing a form of QTT” as the goal – QTT (per e.g. the introduction in the paper) is primarily designed to facilitate tracking the computational use of data at the type level in order to enable generation of more efficient code, avoidance of expensive garbage collection algorithms, etc. – and this is not our goal. To me, our goal is more along the lines of “provide a flexible, efficient linear logic for updating atomic pieces of state [resources] in atomic transactions as a base level on top of which higher level abstractions can be built”.

To this end, @mariari’s concerns are certainly relevant, but similarity to QTT or lack thereof is not a good reason to make a particular decision here, I think. Perhaps it would be worthwhile to try to formalize a wee bit more the logic which we do have, compare alternative versions (e.g. the current version, your proposal, and perhaps some of the alternatives discussed here), formulate more clearly some of the layers which we would like to build on top (e.g. Anoma-level), and only then attempt a more final decision. Given that it’s possible to build the behavior which @mariari wants on top of the RM as it exists right now, I hesitate to change that design (especially in large ways) until we have a very clear idea of exactly what we want instead and why.

2 Likes