Например, мы хотим, чтобы умный контракт не позволял воровать деньги из умной системы. Но это абстрактное понятие. Мы можем математически доказать корректность того, чтобы, положив в систему $100, человек получал актив за $100. Но в реальной жизни, пока контракт будет исполняться, стоимость актива может повыситься. Значит, это надо учесть в контракте.
Есть еще атака — послать $100 одному пользователю и тут же другому, пока система не успела провести первую операцию. Формально у отправителя еще есть эти средства, но надо учесть в контракте, чтобы он не мог потратить их дважды. Потом найдется четвертая, пятая особенность. В итоге описание того, что контракт должен делать будет таким же длинным, как код, в нем надо будет учесть слишком много нюансов.
Есть проблема alignment problem — сходимость целей. Представьте себе, что человек создал искусственный интеллект умнее себя. Он может выполнить любую нашу задачу. И мы поставим ему цель — вылечить рак. Ожидаемый путь — создание лекарства, которое вылечит всех больных раком. Однако робот может решить, что проще распылить в воздухе вещество, которое убьет всех людей. Формально проблему с раком он решит. Можно подумать, что достаточно добавить условие «не убивать людей». ОК, он положит их в холодильник — все условия выполнены.
Это как найти не все решения в математической задаче?
ВБ: Похоже. Главное в том, что люди интуитивно знают, что они хотят. Но у нас не всегда хватает способностей до конца высказать, что мы хотим, в корректной математической форме.
Из-за этого сложно сделать умный контракт и убедиться, что он правильный. Потому что только в своем сознании мы знаем, что он правильный. Можем только доказывать конкретные теоремы: если это умный контракт, то человек не потеряет деньги, если кошелек, то все участники кошелька смогут вернуть свои деньги. Проблема в том, что нам все равно надо понять, какие теоремы можно доказать.
Концепция с умными контрактами такая сложна, что понимание, как сделать их безопаснее, приходит только с опытом. Я бы сказал, что после случаев с DAO и Parity контракты уже стали безопаснее (Оба сервиса были взломаны, и из них выведена криптовалюта на десятки миллионов долларов. — Forbes.)
Нам остается только ждать и позволять людям делать проекты, которые иногда взрываются. Тогда, как машины и самолеты со временем становились все безопаснее, так и мы с опытом поймем, как делать умные контракты с допустимым уровнем риска.
А проблемы с прохождением платежей, в частности, возникшие при ICO Status, будете решать?
ВБ: Это вопрос количества транзакций и как именно сделано ICO. Но мы будем работать над повышением масштабирования системы. Сейчас мы работаем над технологией Plasma, которая улучшит пропускную способность системы. Планируется не все транзакции записывать в блокчейн, а для двухсторонних сообщений ввести прямую передачу с подтверждением ценности (в отдельном блокчейне).
Для Ethereum Foundation важна независимость от решений конкретных людей? Мы помним случай с DAO, когда ваша организация решила форкнуть (откатить на предыдущее состояние) систему.
ВБ: Независимость очень важна. Ситуация была очень важна, поскольку показала нам, до каких границ можно дойти. Был вор, он украл деньги. Грабителей никто не любит, и все равно сделать этот хардфорк было суперсложно: 80% были согласны, а 20% были не согласны. Последние не считали нужным остановить вора, ценя, прежде всего, соблюдение первоначальных правил системы. В результате Ethereum разделился на две части, и теперь у нас есть Ethereum classic.
Даже в таком безобидном случае, где все, что мы делаем, — это решаем проблему с воровством, провести хардфорк было так сложно, вызвало такое сопротивление, что мы понимаем, что в будущем это может просто не получиться.
Даже если какое-то правительство скажет: «Мы не любим группу ABC, их контракт надо закрыть». Весь мир на примере ситуации с DAO видел, что наши возможности ограничены. Я бы сказал, что форк нужно делать только в экстремальных ситуациях, когда это необходимо. Но это все равно сложно.
В случае с Parity вы уже не решились навязывать свое мнение всему сообществу?
ВБ: Да. В случае с Parity мы даже не думали об этом. Хотя нашлись активисты, которые предлагали откатить систему, но были ключевые различия. А именно: в долларах сумма примерно та же, но эфир подорожал, и в случае с Parity потери составляли доли процента капитализации системы. Кроме этого, в случае с DAO преступник не мог забрать свои средства в течение некоторого периода, а в случае с Parity они сразу были выведены. Мы могли заблокировать кошельки злоумышленника, но он бы создал другие.
Если представить, что кто-то сейчас украдет 30% всего эфира, мы, может, захотим сделать хардфорк. Но в 99% человек, который взломал, просто перейдет на другой кошелек. Если мы постараемся закрыть аккаунт, пользователь перейдет на другие. Это как игра в кошки-мышки, где кошка движется со скоростью черепахи. Все действия злоумышленника трудно предусмотреть.
Анонимность нужна?
ВБ: Важна конфиденциальность. На самом деле уровень анонимности блокчейна — средний. В деньгах просто больше публичной информации, чем в каких либо данных. Если мы пересылаем друг другу сообщение, то о нем знают только два человека. Когда передаем деньги, то они должны откуда-то изначально взяться, потом где-то проявятся, например будут потрачены на «Ламборгини». Проанализировав информацию, можно найти концы. Чем больше денег, тем сложнее: с чем смешивать, как прятать? Если пользователь хочет потратить $50 и купить порнографию, то он может рассчитывать на высокий уровень конфиденциальности, его будет очень трудно найти. Но на примере кражи $50 млн из MtGox мы в прошлом месяце увидели прогресс — часть денег была найдена на BTC-e.