Size: a a a

2021 August 02

S

Serge in Ethereum Russia
В смысле W3F? Нет, мы с ними не связаны
источник

IK

Ilya Kmet in Ethereum Russia
Нашёл вот это: https://github.com/ethereum/solidity/blob/develop/libevmasm/Instruction.h

Пока нифига не понятно. Видимо отсюда берут инструкции и заменяют на hex.
источник

S

Serge in Ethereum Russia
...У нас есть early backers которые помогают деньгами, покупают токены в private sale с дискаунтом (дискаунт за риск, потому что пока еще все на уровне прототипа и MVP, но они уже в нас верят)
источник

S

Serge in Ethereum Russia
Потом как обычно надо идти кланяться в ноги к VC (очень надеюсь пропустить этот степ), потом public sale в конце года и mainnet
источник

D

Demiurge in Ethereum Russia
Всем привет. Помогите пожалуйста разобраться с роутером панкейка, есть там такая функция:
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
       require(amountIn > 0, 'PancakeLibrary: INSUFFICIENT_INPUT_AMOUNT');
       require(reserveIn > 0 && reserveOut > 0, 'PancakeLibrary: INSUFFICIENT_LIQUIDITY');
       uint amountInWithFee = amountIn.mul(998);
       uint numerator = amountInWithFee.mul(reserveOut);
       uint denominator = reserveIn.mul(1000).add(amountInWithFee);
       amountOut = numerator / denominator;
   }
у меня на контракте есть такая:

function getReserves(address pool, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
       (address token0,) = sortTokens(tokenA, tokenB);
       (uint reserve0, uint reserve1,) = IUniPair(pool).getReserves();
       (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
   }

   function getAmountOut(uint amountIn, address pool, address fromToken, address toToken) internal view returns (uint amountOut) {
       (uint reserveIn, uint reserveOut) = getReserves(pool, fromToken, toToken);
       uint amountInWithFee = mul(amountIn, 998);
       uint numerator = mul(amountInWithFee, reserveOut);
       uint denominator = add(mul(reserveIn, 1000), amountInWithFee);
       amountOut = numerator / denominator;
   }
я ее переносил из роутера (PancakeLibrary точнее, роутером она вызывается) в свой контракт и заменил вызовы safeMath на функции перенесенные в контракт из safeMath, с целью экономии газа, но получаю при тех же данных разные результаты (amount out). Не могу понять почему
источник

MD

Microwave Dev in Ethereum Russia
насколько разные?
источник

D

Demiurge in Ethereum Russia
router_amount_out: 334207595089022637
counted_amount_out: 334375117692856256
источник

D

Demiurge in Ethereum Russia
это с последнего замера, не самый актуальный, но сколько не вызывал всегда отличается
источник

D

Demiurge in Ethereum Russia
для amount in то же самое, но в другую сторону
источник

MD

Microwave Dev in Ethereum Russia
пиши тест и на нём на каждом этапе вычислений проверяй где начинает сумма отличаться
источник

D

Demiurge in Ethereum Russia
ну проблема в том, что с роутера промежуточные данные не вывести
источник

D

Demiurge in Ethereum Russia
в своем контракте уже делал, но без роутера не то
источник

D

Demiurge in Ethereum Russia
резервы сходятся
источник

MD

Microwave Dev in Ethereum Russia
hardhat и console.log
источник

D

Demiurge in Ethereum Russia
спасибо, прочекаю
источник

IK

Ilya Kmet in Ethereum Russia
Почему тут не юзают llvm?

https://github.com/ethereum/solidity

Не юзают же?
источник

IK

Ilya Kmet in Ethereum Russia
А вот тут песня, сказка: https://github.com/hyperledger-labs/solang/blob/main/src/lib.rs
источник

IK

Ilya Kmet in Ethereum Russia
Все под васм на llvm. Только вот пока в эфире его нет(
источник

MD

Microwave Dev in Ethereum Russia
где не юзают?
источник

IK

Ilya Kmet in Ethereum Russia
В оригинальном компиляторе солидити
источник