src/backend/serial/u64/field.rs
中的乘法运算fn mul(self, _rhs: &'b FieldElement51) -> FieldElement51
函数中有如下限制:
// Alias self, _rhs for more readable formulas
let a: &[u64; 5] = &self.0;
let b: &[u64; 5] = &_rhs.0;
// So we require b < 3 to ensure this fits.
debug_assert!(a[0] < (1 << 54)); debug_assert!(b[0] < (1 << 54));
debug_assert!(a[1] < (1 << 54)); debug_assert!(b[1] < (1 << 54));
debug_assert!(a[2] < (1 << 54)); debug_assert!(b[2] < (1 << 54));
debug_assert!(a[3] < (1 << 54)); debug_assert!(b[3] < (1 << 54));
debug_assert!(a[4] < (1 << 54)); debug_assert!(b[4] < (1 << 54));
这个限制,是否在上层调用做了措施来保证满足要求???
外部调用都是通过from_bytes将[u8;32]数组转换为FieldElement51,可保证FieldElement51数组内每个元素的位数不大于54。