Переписать solidity sqrt на solidity assembly для снижения газа

Цена договорная
19 августа 2021, 16:36 • 2 отклика • 20 просмотров
Приветствую, необходимо реализовать функцию sqrt на solidity assembly, чтобы использовать в коде .sol файла.

Реализация от uniswap (код ниже) потребляет 9454 газа для поиска корня числа 0xfffffffffffffffffffffffffffffffffffffff0

Нужно уменьшить газопотребление, думаю assembly будет выходом.


function sqrt(uint256 n) internal pure returns (uint256) {
if (n == 0) return 0;
uint256 x = n / 2 + 1;
uint256 y = (x + n / x) / 2;
while (x > y) {
x = y;
y = (x + n / x) / 2;
}
return x;
}
Отзывы
R50 b8b9fda88f644ff28c62e7ef8f61df9f
A .
Заказчик
Задача выполнена быстро и раньше срока.
3 года назад
R50 a0eda304c7e0b967d000ef8c99dea93d
Фрилансер
 
3 года назад