Pull to refresh
74
0
Павел @gul_kiev

User

Send message

Вот сейчас почему-то вспомнил.
Интересно, он в курсе, что предлагавшееся им в книжке решение для расшифровки текста неправильное и не работает? Об этом была "партия переводчика" в русском переводе (который ты держишь на фотке), но я не удивлюсь, если автор об этом не знает.

Непонятно, почему автор проводит разделение между багрепортами с патчем и багрепортами без патча. На патч тоже нужно смотреть и изучать, редко он применяется в оригинальном виде. И патч тоже может быть фичой, нужной пользователю, замаскированной под исправление бага.
Ну и вообще - чтение любых сообщений от некоммерческих пользователей можно убрать, всё в спам, это ведь отнимает время. Хочешь, чтобы твоё сообщение прочитал разработчик - заплати. Разве это не логично?
Да и зачем он писал документацию? Ему самому она не нужна, а время тратится. Исключительно для коммерческих пользователей?
Наверное, только вот мне кажется, что opensource - не про это.
Такая позиция скорее напоминает trial, несмотря на доступность исходников.

В рассказе "Тайна Мари Роже" Эдгар По, напротив, писал:
"Как вы указываете в своих заметках, с самого начала общее мнение касательно этого печального происшествия склонялось к тому, что Мари Роже стала жертвой шайки хулиганов. Ну, а при определенных обстоятельствах общее мнение не следует игнорировать. Когда оно возникает само собой - когда оно появляется строго самопроизвольно, - его следует рассматривать как аналогию той интуиции, которой бывают наделены гениальные люди. И в девяноста девяти случаях из ста я соглашусь с ним. Но необходимо твердо знать, что оно никем и ничем не подсказано. Это мнение должно быть строго мнением самого общества, но такое различие часто бывает довольно трудно уловить и объяснить."
Правда, это писалось до телевиденья и интернета, поэтому оговорка "оно никем и ничем не подсказано" сейчас делает этот тезис бессмысленным. Но тому, что мнение большинства всегда ошибочно, это явно противоречит, и первоисточник приведённой в посте цитаты мне найти не удалось (хотя очень много упоминаний и обсуждений).
Так что это, похоже, фейковая цитата.

не понятно. почему не влияет? раз в блокчейне, значит, наверно, вычисляется сразу в нескольких местах?

Да, одно и то же вычисляется много раз, на каждой ноде. Но на результат это не влияет. Что именно вычисляется, вы не знаете, доступен только бинарный код, как и в случае обычного приложения.

почему бы вам не привести сразу цитату из стандарта? раз стандарт, он наверно строгий и чёткий?

Стантарт ERC-20 определяет, какие функции с какими параметрами должны присутствовать в смартконтракте. Но он не запрещает наличие там любых других функций, не описанных в этом стандарте.

тут не противоречие?

Нет. Вся информация о транзакциях есть в блокчейне, и по этой информации проследить источник проще, чем в биткоине. Её можно получить через (централизованные) блокчейн-эксплореры. Но технически на собственной ноде механизмов получения этой информации нет - это следствие архитектуры этого блокчейна, для доступа к такой информации необходимо много ресурсов. Не очень много (несравнимо меньше, чем для майнинга), но всё-таки дороговато для приватной ноды.

какова его пригодность для цели неудаляемого опубликования?

Опубликования чего? Финансовых транзакций - ну так вот о них и речь. А посторонней информации - ethereum для этого не очень предназначен (как и bitcoin). Это получится и дорого, и технически неудобно, лучше использовать какой-нибудь другой блокчейн. Хотя определённое доверие, конечно, к опубликованной там информации есть - цена отката велика.
Но это возможно: в Ethereum уже был централизованный откат по команде его создателя Бутерина, история с The DAO. Вот такая "децентрализованная" сеть. И потом он спрашивал мнение сообщества, имеют ли смысл такие откаты в случае каких-то крупных неприятностей типа взлома распространённых кошельков. Сообщество высказалось против, но вопрос ведь не столько в том, будет ли он откатывать или нет, сколько в том, что у него есть такая возможность. Захочет ли он ей воспользоваться - вопрос второстепенный.

В большинстве реальных случаев для неудаляемой публикации информации (типа всяких реестров и прочих юридических документов) достаточно распределённого блокчейна с централизованной валидацией. Это и технически проще, чем децентрализованный консенсус, и надёжнее (злоумышленник не откатит, завладев 51% тех ресурсов, которые используются для валидации).

Нет, txindex — это не о том. Он даст возможность получить данные о произвольной транзакции по её хешу, но не список utxo по произвольному адресу. Это немного странно, что нет возможности по какой-то опции построить такой индекс, но вот так. Может, в будущем появится.
Или я пропустил, и в последних версиях добавили таки?
А входящие без тэга в таком случае вполне можно и игнорировать.
Голосовые звонки на телефон (gsm) — это тоже уже атавизм по сути. И дорого, и роуминг, и связь бывает не очень. А для всяких телеграмов добавить к номеру или юзернейму тэг — не проблема.
Но даже и для gsm можно давать что-то типа 1234567890#1234, а включение-отключение — средствами своего телефона, без всяких личных кабинетов.
Возможное техническое решение: оставляя свой контакт, каким-то образом сохранять в нём пометку, кому и когда вы его дали. С email это делать проще, с телефоном сложнее, в соцсетях, надеюсь, такое появится. И тогда это будет не просто «звонок с неизвестного номера», а «звонок от такого-то сайта», и дальше, если это спам — вы знаете, откуда ваши данные утекли, и блокируете именно этот свой помеченный контакт. Возможно, где-то публикуя, что с этого сайта спамят. Любой звонок с неизвестного номера — вы знаете, кто им дал ваш контакт. Соответственно, сливать контакты в такой ситуации оказывается невыгодно, это влияет на репутацию.
Сломанные транзакции включаются в блок, чтобы газ был потрачен. Без этого можно было бы DoS'ить ноды без ограничений, а так необходимо тратить ETH на газ для атаки.

Да, я и не предлагал исключить failed-транзакции из блокчейна. Напротив: если майнер не исполняет смартконтракты, то он не отличит ok от failed.

Но DoS-ить ноды, отправляя кривые транзакции, которые не будут включены в блокчейн (например, из-за слишком низкого gas_limit или gas_price), ничто не мешает и сейчас. От этого защищаются иначе.

Да, я говорю именно об изолированных смартконтрактах, каких большинство. Несколько разных токенов могут быть реализованы в одном смартконтракте. Internal transactions — недоразумение, по крайней мере в той их реализации, которая есть в Ethereum (их невозможно даже посмотреть на обычной ноде).
Если посмотреть количество подобных internal transactions по сравнению с количеством обычных транзакций (перевод эфира и исполнение обычных функций одного смартконтракта), то будет понятно, что это не такое уж большое ограничение. Обращение к одному смартконтракту из другого используют очень редко.

Хуже, что даже обычный multisig в ethereum оказывается internal transaction, со всеми описанными выше недостатками (основное — невозможность их посмотреть на обычной ноде). Кажется, что это слишком большая плата за тьюринг-полноту.
Вот internal transactions в данном случае не получатся, но я считаю, что они создают проблем больше, чем решают. И отказ от них сильно облегчил бы жизнь.

В первую очередь — потому что сейчас нет средств посмотреть internal transactions, кроме как через специальные эксплореры (т.е. централизованно, вынужденно проявляя к ним доверие и надеясь, что они не выдадут ошибочную или недостоверную информацию, в т.ч. целенаправленно одному конкретному IP, чтобы не спалиться). И их нет не просто так, а потому что поддержка этого на обычной ноде потребовала бы очень много дополнительных ресурсов, это, опять же, неэффективное и немасштабируемое решение. А нужны internal transactions не так уж часто.
Да, у меня, видимо, мышление, сформированное биткоином, где монеты могут появиться только в результате транзакции и никак иначе, тратить можно только utxo. Поэтому в моём представлении это нулевое начальное состояние, на которое сразу наложены эти genesis-транзакции. Но можно его считать ненулевым начальным состоянием — суть та же.
Нулевое начальное состояние и видимые genesis-транзакции (coinbase), на мой взгляд, было бы технически чище, именно по причине большей открытости. Но нет.
Ещё раз.
В транзакции создания смартконтракта указывать максимальное количество операций, которое требуется для выполнения его функций. Это ограничивает тьюринг-полноту меньше, чем указание такого ограничения на каждой отдельной транзакции.
Разом для всех не нужно, любой желающий может создать любой контракт, прописав собственное ограничение для него. Майнерам вообще не нужно выполнять какие-либо смартконтракты, поэтому и брать дополнительную комиссию (газ) за их исполнение тоже не нужно. А если нода захочет выполнять смартконтракт, то она может посмотреть на лимит операций, и если он неразумно большой (скажем, десять миллиардов) — дважды подумать, потому что такой смартконтракт рискованый по затрачиваемым ресурсам. Поэтому при создании смартконтракта невыгодно писать там очень завышенный лимит, его могут испугаться.
Я вот тут предложил вариант решения.
То есть, эта проблема тоже не видится серьёзной.
Если смартконтракт не выполнять на каждом майнере и каждой ноде, то и проблему с бесконечными циклами решить проще. Например, можно при создании смартконтракта указывать, какое максимальное количество операций он может выполнять в одной транзакции, это можно указывать с запасом. Если там очень уж большое число, ноде опасно включать поддержку такого смартконтракта (выполнять транзакции по нему), дело добровольное. А комиссия в таком случае не будет зависеть от сложности выполняемых действий, потому что майнерам и прочим нодам не нужно выполнять каждый смартконтракт и хранить его состояние. Им в таком случае всё равно, включать в блок сложную смартконтрактную транзакцию или простой перевод эфира с одного адреса на другой (разве что, отличие в размере данных, включаемых в блок).
uncle-блоки не входят в блокчейн и не влияют на состояние смартконтрактов. Они существуют только потому что за них распределяется часть награды (в чём я, честно говоря, тоже не вижу смысла, но возможно он всё-таки есть).
Майнеры и сейчас пропустят обе транзакции. Но в блокчейне одна из них окажется раньше, а другая позже, даже если они будут в одном блоке. И при исполнении на ноде вторая из этих транзакций будет failed — именно так оно и сейчас получается.
Блоки соседи — что вы имеете ввиду? Из параллельных блоков в основную цепочку входит только один. Параллельный блок может получить какую-то часть награды за выполненную работу, но транзакции оттуда не будут влиять на баланс токенов.

Защита от бесконечного или очень длинного цикла (майнить биткоин смартконтрактом эфира) — другой вопрос, но тоже решаемый.
Так же, как сейчас: нода исполняет смартконтракт, он возвращает результат, и транзакции присваивается статус «ok» или «fail». Разница лишь в том, что сейчас этот статус входит в состояние системы, хеш от этого состояния пишется в блок, поэтому все ноды вынуждены исполнять все смартконтракты. А в этом варианте статус не будет входить в состояние ethereum, поэтому его смогут выполнять только те ноды, которым это интересно (которые работают с токенами). Но сам статус и, соответственно, предотвращение двойной траты токенов от этого никуда не денутся.
В конце концов, bitcoin omni layer прекрасно живёт без проверки валидности траты при включении транзакции в блокчейн. Только это уже доказывает, что эта проверка не является обязательной.
Майнеры и так пропустят, но при включении в блокчейн присвоят транзакции статус «failed» (в смысле, это сам смартконтракт при выполнении кода этой транзакции вернёт «failed»). И вот этому статусу совершенно необязательно быть в блокчейне, он может вычисляться на уровне ноды (причём даже только тех нод, которые работают с этими токенами, а не вообще всеми нодами). Важно, чтобы этот статус был одинаковым на всех нодах, но с чего бы ему быть разным, если всё детерминировано? Его и сейчас в блокчейне нет, есть только контрольная сумма от состояния, но так ли обязательна эта контрольная сумма для смартконтрактов, как она может не совпасть?

Я и есть автор, и мнений о том, что я ничего не понял, что код смартконтрактов всегда открыт, что количество газа всегда можно точно посчитать, что модель с балансами более эффективна, чем модель с utxo и т.д. выслушал уже достаточно. И это только подтверждает моё мнение о том, что Ethereum живёт легендами о том, как он устроен, а реальная информация и критика агрессивно отвергается.

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity