# Resource Machine report v3 scope refinement

**URL:** <https://forum.anoma.net/t/resource-machine-report-v3-scope-refinement/664>\
**Category:** RM\
**Created:** [June 26, 2024, 9:41am UTC](https://forum.anoma.net/t/resource-machine-report-v3-scope-refinement/664 "2024-06-26T09:41:22Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![vveiln](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.anoma.net/vveiln/32/60_2.png) [@vveiln](https://forum.anoma.net/u/vveiln)\
**Post date:** [June 26, 2024, 9:41am UTC](https://forum.anoma.net/t/resource-machine-report-v3-scope-refinement/664/1 "2024-06-26T09:41:22Z")

</div>

I tried to collect all the topics we ever wanted to cover in the rm report to agree on the scope for v3.

- The first list contains the things we already decided to cover in v3,
- the second list is an aggregation of the things we wanted to cover at some point,
- and the links are mostly just for me for when i’m writing the report

**v3 list (finalised):**

- Applications:
  - [Add `ReadInterface` and projection functions](https://forum.anoma.net/t/application-read-write-interfaces/661/1), adapt the rest of the application definition
  - Application composition types: how do they relate to each other? Can we define them in a more unified manner?

- Restructure the paper to have clearer separations between motivations, definitions, and the rest
- Storage writes as defined [here](https://forum.anoma.net/t/stored-data-format-resource-machine-storage/411) (Isn’t it already in the report? Verify)
- Extract “optional” transaction fields that aren’t required to verify the state transition but hint at smth (IFC predicate, preference function)
- Extract [actions](https://forum.anoma.net/t/constraint-linearity-in-the-resource-machine/670/34)
  - actions to include the compliance proofs
  - proven/unproven actions

- [Generalised information revelation](https://forum.anoma.net/t/resource-machine-report-v3-scope-refinement/664/2)

Backlog:

- [The list of the topics not yet covered from the rm brainstorming topic](https://forum.anoma.net/t/collective-curation-of-topics-to-go-in-resource-machine-report-v2/382/8)
- [The list of the topics not yet covered from the v2 scope](https://forum.anoma.net/t/proposal-scope-refinement-for-resource-machine-report-v2/455/23)
- Generalise nullifier public key to a commitment with specified properties (binding but not necessarily hiding, etc)
- Standardize and extract the general notation for everything defined in the report (definitions, interfaces, type theory, etc)
- Use commitments to public inputs instead of commitments, nullifiers, etc directly to fix the public input size for variable-size txs: public inputs in a Merkle tree
- [Store private inputs (resource plaintexts) in a Merkle tree](https://forum.anoma.net/t/how-to-check-the-correspondence-of-nullifiers-and-commitments-between-compliance-proofs-and-resource-logic-proofs/726/4)
- [Query interface for transaction functions](https://forum.anoma.net/t/simple-query-interface/747/8)

Links:

- [Applications and service commitments](https://forum.anoma.net/t/applications-and-service-commitments/643)
- [Collective curation of topics to go in resource machine report v2](https://forum.anoma.net/t/collective-curation-of-topics-to-go-in-resource-machine-report-v2/382)
- [Stored data format: resource machine \<\> storage](https://forum.anoma.net/t/stored-data-format-resource-machine-storage/411)
- [[Proposal] Scope refinement for resource machine report v2](https://forum.anoma.net/t/proposal-scope-refinement-for-resource-machine-report-v2/455)
- [Application read & write interfaces](https://forum.anoma.net/t/application-read-write-interfaces/661)

@cwgoes in addition to the things already mentioned in the v3 list, what do we want to cover in v3? I didn’t add the things that were explicitly listed as “v3 topics” [here](https://forum.anoma.net/t/collective-curation-of-topics-to-go-in-resource-machine-report-v2/382/6) because I think we should re-evaluate

---

<div class="post-metadata">

**Author:** ![cwgoes](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.anoma.net/cwgoes/32/22_2.png) [@cwgoes](https://forum.anoma.net/u/cwgoes)\
**Post date:** [June 26, 2024, 10:16am UTC](https://forum.anoma.net/t/resource-machine-report-v3-scope-refinement/664/2 "2024-06-26T10:16:32Z")

</div>

Thanks for the clear writeup. I agree that we should re-evaluate new topics for v3. From my perspective the most important additional point from that original v3 topics list is just:

- Generalized information revelation (proofs to third parties). As far as I can see, these proofs would take the form of (a) a proof that I know a particular resource with particular properties (some arbitrary predicate), and (sometimes) (b) a proof that that resource (or some resource) is not yet spent, i.e. that its nullifier has not yet been revealed. This latter is particularly important to investigate because it may impose requirements on the structure of the nullifier set (namely, the ability to efficiently make and verify proofs of non-inclusion).

Apart from that, I think we could focus v3 on the backlog that you listed, and on clarifying all of the types, notation, and structure. It might be wiser anyways to split out topics like EVM integration and (T)FHE into separate ART reports, unless they require some deep structural integration or change, but I think that they probably don’t.

---

<div class="post-metadata">

**Author:** ![vveiln](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.anoma.net/vveiln/32/60_2.png) [@vveiln](https://forum.anoma.net/u/vveiln)\
**Post date:** [June 26, 2024, 12:39pm UTC](https://forum.anoma.net/t/resource-machine-report-v3-scope-refinement/664/3 "2024-06-26T12:39:48Z")

</div>

Could you give some examples in which cases such proofs would be important?

---

<div class="post-metadata">

**Author:** ![cwgoes](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.anoma.net/cwgoes/32/22_2.png) [@cwgoes](https://forum.anoma.net/u/cwgoes)\
**Post date:** [June 26, 2024, 1:32pm UTC](https://forum.anoma.net/t/resource-machine-report-v3-scope-refinement/664/4 "2024-06-26T13:32:46Z")

</div>

Yes; for example:

- I want to prove to a third party that I have a sufficient balance to pay them, without actually paying them (kudos).
- I want to prove to a third party that I own a particular NFT (say, a passport NFT) with specific properties (say, that my age is greater than 21), without revealing more than the specific properties.

---

<div class="post-metadata">

**Author:** ![cwgoes](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.anoma.net/cwgoes/32/22_2.png) [@cwgoes](https://forum.anoma.net/u/cwgoes)\
**Post date:** [July 12, 2024, 8:54am UTC](https://forum.anoma.net/t/resource-machine-report-v3-scope-refinement/664/5 "2024-07-12T08:54:03Z")

</div>

> [@vveiln](#):
>
> Extract “optional” transaction fields that aren’t required to verify the state transition but hint at smth (IFC predicate, preference function)

In terms of data structures (discussed with @vveiln):

- Transaction should have only the data which is needed to actually execute/verify
- We should create a new structure `TransactionWithMetadata` that includes:
  - A `Transaction`
  - The information flow control predicate
  - The preference function
  - (could include more metadata in the future)

In particular, this metadata needs to be sent around the network and tracked, but does not affect state changes. We should only put data in the `Transaction` structure which we need in order to verify state changes.
