1/ SIMD-0334, автором которого является Станислав Ладыженский, исправляет проверку системного вызова alt_bn128_pairing в Solana. Он добавляет правильную проверку длины входных байтов для парных эллиптических кривых, предотвращая любое неправильное использование с некорректно размерами входами. Давайте разберем, что это значит 🧵
2/ alt_bn128_pairing — это системный вызов для парирования на эллиптической кривой BN128, используемой в нулевых знаниях. Он принимает список точек кривой в качестве входных данных. Каждая пара точек занимает 192 байта, поэтому допустимые входные данные должны быть кратны 192 байтам.
3/ Проблема: проверка длины использовала checked_rem Rust неправильно. checked_rem возвращает None только при делении на ноль, поэтому проверка никогда не проваливалась с 192. В результате системный вызов парирования выполнялся даже если ввод не был кратен 192.
4/ Исправление: проверьте, что длина ввода является кратной 192, и выдайте ошибку, если это не так. Это сразу же ловит любые оставшиеся байты, вместо того чтобы тихо их игнорировать. Изменения в коде находятся в solana-sdk и поставляются с Agave v3.1.0.
1,11K