Size: a a a

2021 January 10

MD

Mikhail Dobrokhvalov in Ethereum Russia
Можно еще посмотреть в сторону GSN и их код. Они решали подобную задачу - https://docs.openzeppelin.com/learn/sending-gasless-transactions#gas-station-network
источник

DG

Denis Glotov in Ethereum Russia
Mikhail Dobrokhvalov
msg.sender == tx.origin ?
оу, и правда ведь
источник

DG

Denis Glotov in Ethereum Russia
Mikhail Dobrokhvalov
msg.sender == tx.origin ?
Это для конструируемого контракта ведь тоже работает? вроде вполне должно.
источник

DG

Denis Glotov in Ethereum Russia
Mikhail Dobrokhvalov
msg.sender == tx.origin ?
Кажется это единственное легитимное использование tx.origin осталось, вот я его и подзабыл незаслуженно, спасибо!
источник

DG

Denis Glotov in Ethereum Russia
Mikhail Dobrokhvalov
msg.sender == tx.origin ?
Интересно, почему этот вариант тут заминусован без комментариев? https://stackoverflow.com/questions/37644395/how-to-find-out-if-an-ethereum-address-is-a-contract
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
“However, preventing a contract is an anti-pattern with security and interoperability considerations.” - https://github.com/ethereum/solidity/issues/683
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
но мне кажется в данном конкретном случае этот вариант подходит
источник

AK

Artem K in Ethereum Russia
в целом для любого автоматического мейнтенанса советую keep3r network, контракту достаточно реализовать две функции, workable() и work(), остальное боты подхватят. платить им можно в любом токене или в эфире.
источник

AV

Anton Vityazev in Ethereum Russia
привет всем!
пожскажите, пожалуйста, не сталкивался ли кто-то с необходимостью автоматизации приобретения эфира со средств на киви кошельке?
источник

P

Poma in Ethereum Russia
Alexey F.
это можно кэшировать
Только последний тоже нельзя хранить, потому что реорг может быть. Это усложняет структуру данных
источник

DG

Denis Glotov in Ethereum Russia
Mikhail Dobrokhvalov
Ну вот кажется, что разница gasleft() на входе и выходе должна быть строго меньше 100% газа всей транзакции

это не совсем верно:

function attack() { 
  callFunctionWithRefund() // вызвать функцию которая возмещает затраты
  chi.free(10) // сжечь chi токены и получить рефанд  
}

таким образом отправителю можно затратить меньше газа, чем будет учитываться в вашей функции
Кстати тут должно быть все в порядке - ведь измерения gasleft() мы проводим внутри callFunctionWithRefund() и значит внешние действия с газовыми токенами не должны нарушить логику.
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
аттакер может задрэйнить эфир с контракта, который делает рефанд, т.к вызов функции будет дешевле чем рефанд
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
можно заминтить gasToken по 50 gwei, и вызвать вашу функцию по 1000 gwei и сжечь токенов и сэкономить до 40% стоимости вызова транзакции, чего фунция рефанда учесть не может
источник

DG

Denis Glotov in Ethereum Russia
так он сжег свои газтокены, получил свой рефанд, мы тут непричем. Мы ему честно возместили убытки на наш вызов (1000 gwei * gas(callFunctionWithRefund)).
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
Denis Glotov
так он сжег свои газтокены, получил свой рефанд, мы тут непричем. Мы ему честно возместили убытки на наш вызов (1000 gwei * gas(callFunctionWithRefund)).
вы возместите больше, чем атакер потратит. Это значит, что он может бесконечно вызывать функцию и забирать ваш эфир пока он у вас не закончится
источник

DG

Denis Glotov in Ethereum Russia
но он тратит свой газтокен, бесконечно он его не сможет тратить
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
он его может бесконечно минтить)
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
по 50 gwei, а вызывать вашу функцию по 500 (к примеру)
источник

DG

Denis Glotov in Ethereum Russia
хм
источник
2021 January 11

AV

Artem Vorotnikov in Ethereum Russia
One misconception about turbo-geth is that it is "a project to speed up geth". A natural confusion stemming from the name, as it was a fork to test out certain novel ideas once.

Now turbo-geth is a fully functional Ethereum client on its own. Its codebase has long diverged from geth with entirely new database layer, EVM execution and (in future) devp2p. Use it - it's extremely performant and is there to stay.
источник