Size: a a a

2021 October 17

AB

Anton Bounty in Ethereum Russia
Подскажите плиз, имеет ли смысл ставить Enable optimization больше 200?
Кто-нибудь замечал разницу между допустим 200 и 9999?
Как это вообще работатет? Что можно соптимизировать, что за 200 циклов не оптимизировалось?
источник

EG

Egor Gavrilov in Ethereum Russia
1, 200 и 9999 соответственно

При 9999 результат хуже настолько, что контракт перестает помещаться
источник

EG

Egor Gavrilov in Ethereum Russia
источник

EG

Egor Gavrilov in Ethereum Russia
источник

AB

Anton Bounty in Ethereum Russia
это что за значения?
источник

EG

Egor Gavrilov in Ethereum Russia
размеры скомпилированных контрактов в килобайтах
источник

AB

Anton Bounty in Ethereum Russia
т.е. лучше 1 ставить?
источник

EG

Egor Gavrilov in Ethereum Russia
я пользуюсь всегда 200, потому что это дефолтная настройка
источник

AB

Anton Bounty in Ethereum Russia
Гуд, спасибо!
источник

EG

Egor Gavrilov in Ethereum Russia
вот кстати результат без оптимизатора
источник

AB

Anton Bounty in Ethereum Russia
просто я вижу, что некоторые 9999 ставят, вот задумался, есть ли смысл
хотел разобраться как вообще эта оптимизация работает, но думаю и этого мне будет пока достаточно)
источник

RP

Roman P in Ethereum Russia
Это число - не число циклов оптимизации, а предполагаемое число запусков контракта в будущем.
The number of runs (--optimize-runs) specifies roughly how often each opcode of the deployed code will be executed across the life-time of the contract. 
источник

m

milkiweed in Ethereum Russia
всем привет!  Пытаюсь вызвать в контракте (https://docs.pancakeswap.finance/code/smart-contracts/pancakeswap-exchange/router-v2) метод swapExactTokensForTokens

Вот его сигнатура:
function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)

для amountOutMin выставляю slippage tolerance в 14%, ставил как-то даже 90%
и делаю до 100 попыток вызова в цикле, в случае если есть ошибка связанная с вычислением газа.

Короче в итоге ни одна транзакция не прошла, я не понимаю как это решить) гуглил, везде советы по выставлению как раз таки скольжения и все. Но оно тут мне не помогает

transaction may fail or may require manual gas limit (error={"reason":"cannot estimate gas; transaction may fail or may require manual gas limit","code":"UNPREDICTABLE_GAS_LIMIT","error":{"reason":"processing response error","code":"SERVER_ERROR","body":"{\"jsonrpc\":\"2.0\",\"id\":628,\"error\":{\"code\":3,\"message\":\"execution reverted: TransferHelper: TRANSFER_FROM_FAILED\


Может кто сталкивался с таким и может дать какой-то ценный совет которого я не смог найти в гугле?)
источник

EG

Egor Gavrilov in Ethereum Russia
approve сделан?
источник

m

milkiweed in Ethereum Russia
через код? я там просто вот так вызываю:

const tx = await routerrouter.swapExactTokensForTokens(..)
const receipt = await tx.wait()

Проблема была в том что я не указывал газ, щас добавил options {gasPrice: await providerprovider.getGasPrice(), gasLimit: 1000000}
Работает, но появились новые ошибки)
источник

EG

Egor Gavrilov in Ethereum Russia
ты на этом аккаунте уже раньше делал обмен этого токена на панкейк свопе? через сайт
источник

EG

Egor Gavrilov in Ethereum Russia
я так понимаю у тебя не работает, а просто отправляется транзакция и фейлится при валидации
потому что газ вручную указал
источник

EG

Egor Gavrilov in Ethereum Russia
так как у тебя TRANSFER_FROM_FAILED в ошибке, то причины две – не хватает баланса или allowance

поэтому спросил про аппрув

неважно, через код или сайт, но сделать его надо как ни крути
источник

m

milkiweed in Ethereum Russia
о, да. я подтверждал работу с WBNB

щас вот такие ошибки:

transaction failed (transactionHash="0xaf4983cd04ecbad059ec096c41cf1cff5c94b80bc2eacbf404ae0e3e87eb83ee", transaction={"nonce":25,"gasPrice":{"type":"BigNumber","hex":"0x012a05f200"},"gasLimit":{"type":"BigNumber","hex":"0x0f4240"},"to":"0x10ED43C718714eb63d5aA57B78B54704E256024E","value":{"type":"BigNumber","hex":"0x00"},"data":"0x38ed173900000000000000000000000000000000000000000000000000079a5193d1c000000000000000000000000000000000000000000000099488d3347502873081c000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000002a9bd2f03ec7b0ef1e70828dc3294b620f63c8010000000000000000000000000000000000000000000000000000017c8e4c0b6a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000005229c842de6dbcd0d4f4fdebb274a41e8a89bf12","chainId":56,"v":147,"r":"0xfcd84e2eb8af8cc6444106232d159f43d56d4fb3898203235728e62e27ec2ddf","s":"0x1b9f8c6b2d627e39e83a3f29214599e172849354530b66980d92544352986a69","from":"0x2A9BD2f03EC7b0EF1E70828DC3294B620f63C801","hash":"0xaf4983cd04ecbad059ec096c41cf1cff5c94b80bc2eacbf404ae0e3e87eb83ee","type":null,"confirmations":0}, receipt={"to":"0x10ED43C718714eb63d5aA57B78B54704E256024E","from":"0x2A9BD2f03EC7b0EF1E70828DC3294B620f63C801","contractAddress":null,"transactionIndex":262,"gasUsed":{"type":"BigNumber","hex":"0x7b20"},"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","blockHash":"0x59997780cf8ab71910e3fb84ba8029b641172d6e4f623c59d463d3b0a7ad2b30","transactionHash":"0xaf4983cd04ecbad059ec096c41cf1cff5c94b80bc2eacbf404ae0e3e87eb83ee","logs":[],"blockNumber":11851432,"confirmations":1,"cumulativeGasUsed":{"type":"BigNumber","hex":"0x01bef732"},"status":0,"type":0,"byzantium":true}, code=CALL_EXCEPTION, version=providers/5.4.5)



Т.е в err.message инфы об ошибке вообще нет, только детали запроса. на bscscan посмотреть можно: https://bscscan.com/tx/0x97595df4836f9388c0085ada93f0e405bc2fd9a686bdefd1426eb5cd0a3ece4b

Мб это как раз эти ошибки связанные с аппрувом? Т.е я пытаюсь свопнуть пару токенов X/WBNB
WBNB я аппрувнул, а X нет. Может быть из-за этого ошибка?
источник

EG

Egor Gavrilov in Ethereum Russia
WBNB пропусти вообще
чтобы работать с BNB, используй

swapExactETHForTokens и swapExactTokensForETH

сделай аппрув своего токена Х на сайте (попробуй обменять вручную)

и потом попробуй еще раз запустить свой код

увидишь прогресс
источник