Переписать solidity sqrt на solidity assembly для снижения газа
Цена договорная
Приветствую, необходимо реализовать функцию 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;
}
Реализация от 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;
}
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.