For a given STARK, the way the trace, auxiliary and quotient polynomials are stored is obscure. In particular, the order of auxiliary polynomials in the auxiliary Merkle tree leaves is:
- Lookup columns
- Lookup 0
- Challenge 0
- Challenge 1
- ...
- Lookup 1
- ...
- CTL columns
- CTL helper columns
- CTL 0
- Challenge 0
- Challenge 1
- ...
- CTL 1
- ...
- CTL Z columns
- CTL 0
- Challenge 0
- Challenge 1
- ...
- CTL 1
- ...
This order is only implied by the relevant helper methods, and it makes it messy to e.g. access only the CTL Z columns. We should at least have this order clearly mentioned somewhere, or an even cleaner way would be to maintain a struct per STARK with the relevant ranges, and implement proper getters out of them.
For a given STARK, the way the trace, auxiliary and quotient polynomials are stored is obscure. In particular, the order of auxiliary polynomials in the auxiliary Merkle tree leaves is:
This order is only implied by the relevant helper methods, and it makes it messy to e.g. access only the CTL Z columns. We should at least have this order clearly mentioned somewhere, or an even cleaner way would be to maintain a struct per STARK with the relevant ranges, and implement proper getters out of them.