Size: a a a

2018 January 17

MF

Mike Farlenkov in DeСenter Dev
Alexander Kolotov
За газ заплатят все. Но если контракт написан грамотно, то остальные заплатят меньше
В итоге я не понял как это сделать "грамотно", если все транзакции выполнятся одинаково и счастливчик будет определяться порядком в блоке. Можете подсказать пример такого грамотного сценария?
источник

DL

Daniil Lashin in DeСenter Dev
Mike Farlenkov
В итоге я не понял как это сделать "грамотно", если все транзакции выполнятся одинаково и счастливчик будет определяться порядком в блоке. Можете подсказать пример такого грамотного сценария?
Скорее не счастливчик, а тот кто больше заплатил за газ
источник

MF

Mike Farlenkov in DeСenter Dev
т.е. порядок в блоке определяется комиссией? в чем тогдда проявляется грамотность написания контракта?
источник

AK

Alexander Kolotov in DeСenter Dev
Mike Farlenkov
т.е. порядок в блоке определяется комиссией? в чем тогдда проявляется грамотность написания контракта?
нет, это не так
источник

AK

Alexander Kolotov in DeСenter Dev
Mike Farlenkov
В итоге я не понял как это сделать "грамотно", если все транзакции выполнятся одинаково и счастливчик будет определяться порядком в блоке. Можете подсказать пример такого грамотного сценария?
в контракте, безусловно, нужно предусмотреть того, что траназакций может оказаться больше чем одна, следовательно принимать решения, что делать со всеми последующими транзакциями, идущими после нужной.
источник

MF

Mike Farlenkov in DeСenter Dev
а ну это разумеется.
речь то о том, что в некоторых случаях мы можем не знать, что в этот же момент кто-то сделал такую же транзакцию (и он со своей стороны тоже об этом еще не знает)
источник

MF

Mike Farlenkov in DeСenter Dev
но вроде понятно что имелось ввиду под грамотностью
источник

AK

Alexander Kolotov in DeСenter Dev
Mike Farlenkov
а ну это разумеется.
речь то о том, что в некоторых случаях мы можем не знать, что в этот же момент кто-то сделал такую же транзакцию (и он со своей стороны тоже об этом еще не знает)
все верно. иногда можно увидеть вот такой темплейт

function f(bytes data) {
    hash = keccak256(msg.sender, data);

    require(!duplicate[hash]);
    duplicate[hash] = true;

    . . .
}
источник

AK

Alexander Kolotov in DeСenter Dev
это не совсем про этот случай, но аналогия, я думаю, понятна.
источник

MF

Mike Farlenkov in DeСenter Dev
Да это для случаев, когда транзации обрабатываются поочереди и мы можем в начале функции проверить состояние и прервать выполнение, если оно не имеет смысла. Но я правильно понимаю, что если транзакции обрабатываются не по очереди на одной ноде, а параллельно на разных нодах, то они таки обе выполнятся полностью и за газ тоже заплатят одинаково?
источник

DL

Daniil Lashin in DeСenter Dev
Alexander Kolotov
нет, это не так
как правило так
источник

DL

Daniil Lashin in DeСenter Dev
источник

DL

Daniil Lashin in DeСenter Dev
и в geth и в parity транзакции сортируются по стоимости
источник

AK

Alexander Kolotov in DeСenter Dev
Mike Farlenkov
Да это для случаев, когда транзации обрабатываются поочереди и мы можем в начале функции проверить состояние и прервать выполнение, если оно не имеет смысла. Но я правильно понимаю, что если транзакции обрабатываются не по очереди на одной ноде, а параллельно на разных нодах, то они таки обе выполнятся полностью и за газ тоже заплатят одинаково?
условно говоря, можно принять следующее упрощение: транзакция сначала выполняется на узле, выпускающем блок, потом блок доходит до остальных узлов, где транзакции применяются в свою очередь для формирования единого стейта с узлом, выпустившим блок.
источник

AK

Alexander Kolotov in DeСenter Dev
Daniil Lashin
и в geth и в parity транзакции сортируются по стоимости
хм... интересно... спасибо!!! написано, что это true только для geth, поскольку зависит от реализации клиента и не описано в YP. в Parity это конфигурится. Поэтому: https://ethereum.stackexchange.com/a/27399

In the end, keep in mind this is open source software, and there is no rules on how transactions must be ordered. Each miner is free to send transactions in the order he wishes, so there is no way to guarantee the transaction order, but it looks like a high gas price and a reasonable gas limit should secure you a good spot in most cases.
источник

DL

Daniil Lashin in DeСenter Dev
В общем это не часть консенсуса
источник

DL

Daniil Lashin in DeСenter Dev
Но в большинстве случаев больше газпрайс -> первее транзакция
источник

DL

Daniil Lashin in DeСenter Dev
Тут скорее экономический стимул майнеров проявляется
источник

AD

Andrey Degtyaruk in DeСenter Dev
Да, но гарантии нет)
источник

AD

Andrey Degtyaruk in DeСenter Dev
Просто повышается вероятность
источник