Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Renaming structures to more suitable names #194

Open
vveiln opened this issue Jul 28, 2023 · 1 comment
Open

Renaming structures to more suitable names #194

vveiln opened this issue Jul 28, 2023 · 1 comment
Labels
documentation Improvements or additions to documentation

Comments

@vveiln
Copy link
Member

vveiln commented Jul 28, 2023

This is an issue for discussing what various structures should be renamed to and why. Later in time we will have a meeting, discuss all of the terms and points, and rename the structures. This issue doesn't include renaming caused by higher-level specs naming mismatch, an issue for that already exists

Starting with:

  • action circuit
  • validity predicate
@vveiln vveiln self-assigned this Jul 28, 2023
@vveiln vveiln added the documentation Improvements or additions to documentation label Jul 28, 2023
@vveiln vveiln removed their assignment Jul 28, 2023
@vveiln
Copy link
Member Author

vveiln commented Jul 28, 2023

A couple of thoughts I have:

Validity predicates
Thinking about it for a while and writing down a lot of ideas I came to a conclusion that the name validity predicate might be the optimal, but the definition of it would be "any predicate that is required to evaluate to true for the transaction to be valid" (but phrase it in a more clear way). Here is why:

  • the word "validity" hints to the fact that all predicates affect validity of a transaction
  • to specify the type we can add specifiers, e.g. "application validity predicate" refers to the VP expressing the application logic, "dynamic VP" refers to the VP that allows to add additional constraints to a concrete transaction, etc

Action circuit
The name Action circuit comes from the Orchard protocol that influenced taiga architecture a lot. People familiar with Orchard might find this name helpful, but maybe it makes sense to have a name that refers to the function of the circuit. Action circuit in Orchard checks relations in actions - pairs of 1 input and 1 output note. We also have actions implicitly but don't refer to them, this notion is not present and the circuit name is rather confusing.

In essence Action circuit is the circuit that checks that the taiga rules are being preserved, so the most obvious option would be Taiga circuit. Taiga rules - taiga circuit. However, it might feel somewhat redundant and maybe we should have a more functional specifier, for example, Regulation Circuit or Taiga Policy Circuit. I don't particularly like any of these options, but Taiga circuit feels like a good compromise.

Predicate vs circuit
Another thing about the difference between circuits and predicates. I think it is nice to differentiate between them, in particular refer to predicates as higher-level language structures that can be compiled down to circuits (shielded) or wasm (public).

Action circuit is global and public, it is written once for all users of Taiga. Predicates are written many times, we are even developing a whole toolchain for that. Having action circuit not called a predicate emphasizes this difference as well, but maybe we should come up with a name referring to this fact explicitly. It doesn't matter that much that the action circuit is implemented as a circuit, so we can use other word that refers to the rule checking activity. Often such structures are stable enough, so this will hint to the static nature of the Action circuit. For example, we could call it TransitionPolicyChecker or TaigaPolicyChecker. A TransitionPolicyChecker/TaigaPolicyChecker takes the state transition expressed as input and output notes and checks that it is valid. The output would be a TransitionPolicyProof/TaigaPolicyProof

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant