Пример кода контракта на Ethereum, написанный на высокоуровневом языке:
if tx.value < 100 * block.basefee:
stop
if contract.memory[1000]:
from = tx.sender
to = tx.data[0]
value = tx.data[1]
if to <= 1000:
stop
if contract.memory[from] < value:
stop
contract.memory[from] = contract.memory[from] – value
contract.memory[to] = contract.memory[to] + value
else: contract.memory[mycreator] = 10000000000000000 contract.memory[1000] = 1
Но контрактами на разницу цен возможности не ограничиваются: вайтпейпер Ethereum описывает и другие виды транзакций, реализуемые с помощью его скриптов. Вот несколько из них.
░ ЭСКРОУ С МУЛЬТИПОДПИСЬЮ, по духу напоминающий арбитражный сервис биткойна Bitrated, но с усложненными правилами. Например, подписавшимся не придется вручную обрабатывать частично подписанные транзакции: через блокчейн люди смогут асинхронно санкционировать вывод средств, и когда транзакцию подтвердит достаточное число участников, она совершится автоматически.
░ Еще одна интересная функция – СБЕРЕГАТЕЛЬНЫЕ СЧЕТА. Предположим, Алиса хочет отложить крупную сумму, но не хочет рисковать всем, если ее приватный ключ потеряется или попадет в чужие руки. Она заключает контракт с Бобом, которому не готова довериться до конца, на следующих условиях: во-первых, Алиса может снять до 1 % в день; во-вторых, она может снять любую сумму с одобрения Боба; в-третьих, сам Боб может снять до 0,05 % в день. Алиса не собирается снимать крупные суммы за один раз, а если захочет, то сможет сделать это через Боба, подтвердив ему свою личность. Если кто-то украдет приватный ключ Алисы, она поспешит обратиться к Бобу и переместить средства на другой контракт, пока вор не успел украсть больше 1 %. Если Алиса потеряет свой приватный ключ, Боб сможет восстановить ее средства, пусть это и займет какое-то время. А если сам Боб окажется злоумышленником, Алиса сможет вывести свои средства в 20 раз быстрее, чем он. Короче говоря, система защиты напоминает традиционный банкинг, но отличается от него тем, что основана не на одном лишь доверии к банку.
░ P2P-ИГРЫ. Любой вид протокола p2p-игр можно внедрить на базе Ethereum. Простейший из таких протоколов – контракт на разницу цен на основе случайных данных вроде хеша блока.
░ СОЗДАНИЕ СОБСТВЕННОЙ ВАЛЮТЫ. На базе внутренней памяти Ethereum вы можете создать внутри него совершенно новую валюту. Возможности создания валют позволяют сделать так, чтобы они взаимодействовали друг с другом, обеспечивали децентрализованный обмен и поддерживали множество других передовых функций.
В этом и есть главное преимущество кода Ethereum: его скриптовый язык создавался так, чтобы не иметь ограничений кроме системы комиссий, и поэтому на его основе можно закодировать любой вид правил. На блокчейне можно даже управлять сбережениями целых компаний: создать, к примеру, контракт, по которому перемещение средств возможно только с разрешения 60 % акционеров (а 30 %, например, могут распоряжаться суммой максимум в 1 % в день). Возможны и другие структуры, менее традиционные для капиталистической реальности: например, демократические организации, членом которых можно стать только с согласия двух третей ее состава.
НЕ ТОЛЬКО ФИНАНСЫ
Но финансовые приложения – лишь малая доля того, на что способны Ethereum и созданные на нем протоколы. Хотя именно финансовые приложения Ethereum в первую очередь привлекают криптосообщество, не менее интересно предположить, какой результат может дать взаимодействие с нефинансовыми p2p-протоколами. Одна из главных проблем таких протоколов – отсутствие стимулов: они, в отличие от централизованных коммерческих платформ, не предлагают участникам финансовых выгод. Конечно, иногда участие в проекте – само по себе награда. Именно поэтому люди продолжают создавать софт с открытым исходным кодом, писать статьи для «Википедии», вести блоги и оставлять развернутые комментарии на форумах. Но вот в контексте p2p-протоколов увлеченность проходит очень быстро: процесс поглощает безмерное количество ресурсов, демон[10] может без остановки работать в фоновом режиме, из-за чего процессор перегружается и расходует очень много электроэнергии.
Например, уже давно существуют протоколы данных вроде Freenet, готовые предоставить каждому нецензурируемый хостинг статического контента. По факту же Freenet работает очень медленно, и мало кто выделяет на него ресурсы. Все файлообменные протоколы преследует одна и та же проблема: если нашумевшие блокбастеры распространяют на них с завидным альтруизмом, то на что-то менее популярное энтузиазма уже не хватает. Парадоксально, но выходит, что обмен файлами между пользователями порой не просто не препятствует централизации развлекательной и медийной продукции, но даже ее усиливает. Однако все эти проблемы можно решить с помощью стимулов: дать людям возможность создавать в сети не только некоммерческие проекты, но и доходный бизнес.
░ ПООЩРИТЕЛЬНОЕ ХРАНЕНИЕ ДАННЫХ. Проще говоря, децентрализованный Dropbox. Идея такая: если пользователь захочет хранить в сети файл размером в 1 Гб, он создаст структуру данных, известную как дерево Меркла. Затем он заложит корень дерева вместе с 10 ETH в контракт и загрузит файл в другую сеть, за сообщениями которой будут следить узлы, готовые сдать в аренду место на своих жестких дисках. Каждый день контракт будет автоматически выбирать случайную ветку дерева (например, «left – > right – > left – > left – > left – > right – > left»), заканчивая блоком файла, и выдавать 0,01 ETH первому узлу этой ветки. Узлы будут хранить весь файл целиком, чтобы максимально увеличить шанс получить вознаграждение.
░ BITMESSAGE И ТОR. Bitmessage – это протокол электронной почты нового поколения, который одновременно и полностью децентрализован, и зашифрован, благодаря чему можно безопасно отправлять сообщения любому другому пользователю Bitmessage и не полагаться на третью сторону (кроме самой сети). Тем не менее у Bitmessage есть один большой недостаток в удобстве использования: вместо отправки сообщений на простой и понятный адрес вроде «[email protected]» придется иметь дело с корявым 34-значным адресом Bitmessage (например, «BM-BcbRqcFFSQUUmXFKsPJgVQPSiFA3Xash»). Вот какое решение предлагает Ethereum: люди могут регистрировать свои имена при помощи специального контракта Ethereum, а клиенты Bitmessage – запрашивать блокчейн Ethereum предоставить адрес Bitmessage из 34 символов, секретно привязанный к любому имени. Эта схема может пригодиться и в анонимной сети Tor, пользователи которой тоже столкнулись с этой проблемой.
░ СИСТЕМЫ ИДЕНТИФИКАЦИИ И РЕПУТАЦИИ. Раз в блокчейне можно зарегистрировать имя, логика подсказывает следующий очевидный шаг: создать на базе блокчейна систему Web of Trust (WOT, сеть доверия). Web of Trust – ключевой элемент эффективной коммуникативной инфраструктуры p2p: ведь вам нужно не просто знать, что конкретный публичный ключ связан с конкретным человеком, но и понимать, можно ли этому человеку вообще доверять. Решением становится использование соцсетей. Если вы доверяете А, А доверяет Б, а Б доверяет В, тогда есть большая вероятность, что вы хотя бы отчасти можете доверять В. Ethereum может стать слоем хранения данных для полностью децентрализованной системы репутаций, а в перспективе – полностью децентрализованной торговой площадкой.
Многие из вышеупомянутых кейсов – это реальные p2p-протоколы и проекты, которые уже активно разрабатываются. Мы намерены привлечь к сотрудничеству как можно больше подобных проектов и помочь им финансированием в обмен на вклад в экосистему Ethereum. Мы хотим помочь не только криптосообществу, но и p2p-сообществу в целом, включая файлообмен, торренты, хранение данных и ячеистые сети. Мы уверены, что существует множество проектов, потенциально ценных для сообщества, особенно в нефинансовой сфере, которые недополучают финансирование как раз из-за сомнений в их финансовом потенциале. Ethereum может помочь десяткам таких проектов сделать долгожданный шаг вперед.