1/ SIMD-0334,由Stanislav Ladyzhenskiy提出,修正了Solana的alt_bn128_pairing系統調用檢查。它對椭圆曲线配对的输入字节添加了适当的长度检查,防止任何不当使用不正確大小的输入。讓我們來解析一下這意味著什麼 🧵
2/ alt_bn128_pairing 是一個用於在 BN128 橢圓曲線上進行配對的系統調用,該曲線用於零知識證明。它接受一組曲線點作為輸入。每對點佔用 192 字節,因此有效的輸入必須是 192 字節的倍數。
3/ 問題:長度檢查錯誤地使用了 Rust 的 checked_rem。checked_rem 只有在除以零時才會返回 None,因此檢查在 192 時從未失敗。因此,即使輸入不是 192 的倍數,配對系統調用仍會運行。
4/ 修正方法:檢查輸入長度是否為192的倍數,如果不是則報錯。這樣可以立即捕捉到任何剩餘的位元組,而不是靜默忽略它們。代碼更改在solana-sdk中,並隨Agave v3.1.0一起發佈。
1.2K