You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In the Optimised poseidon we can use a small change that reduces unnecessary multiplications. This was noticed by @mickeyasa
Observation: In the last round: notice that after the S box operation, the full MDS matrix is used to generate all the elements in the state of width $t$. After that the round ends and the element with index state[1] is output as the digest.
Observation: There is no need to compute all the state elements in the MDS multiplication, in the last round.
Proposal: after the S box in the last round, only compute the element with index 1 in state'= state^(transpose).MDS
i.e just compute state'[1]
since only the digest is needed, and other elements do not matter for the digest or another sequential hash.
The text was updated successfully, but these errors were encountered:
In the Optimised poseidon we can use a small change that reduces unnecessary multiplications. This was noticed by @mickeyasa
Observation: In the last round: notice that after the S box operation, the full MDS matrix is used to generate all the elements in the state of width$t$ . After that the round ends and the element with index state[1] is output as the digest.
Observation: There is no need to compute all the state elements in the MDS multiplication, in the last round.
Proposal: after the S box in the last round, only compute the element with index 1 in
state'= state^(transpose).MDS
i.e just compute
state'[1]
since only the digest is needed, and other elements do not matter for the digest or another sequential hash.
The text was updated successfully, but these errors were encountered: