self.storage[to] = self.storage[to] + value
Это буквально функция изменения состояния «банковской системы», уже описанной выше. Нужно только добавить в начало несколько строк кода с исходным шагом распределения валюты и учесть еще несколько нюансов – в идеале неплохо бы также добавить функцию, позволяющую сторонним контрактам запрашивать информацию о балансе произвольного адреса. Но в целом это всё. Основанные на Ethereum системы токенов, используемые как подвалюты, теоретически обладают другой важной функцией, недоступной для метавалют на основе биткойна: возможностью платить комиссии непосредственно в этой валюте. Реализовать это можно в контракте, поддерживающем баланс эфира, из которого он будет восполнять эфир, использованный для оплаты комиссий отправителю. Он будет пополнять этот баланс, собирая единицы внутренней валюты, забранные в качестве сборов, и перепродавая их на постоянно действующем аукционе. Таким образом, пользователям было бы необходимо «активировать» свои аккаунты с помощью эфира, но этот эфир можно использовать повторно, поскольку каждый раз контракт будет его возвращать.
ФИНАНСОВЫЕ ДЕРИВАТИВЫ И ВАЛЮТЫ СО СТАБИЛЬНОЙ ЦЕННОСТЬЮ
Финансовые деривативы – наиболее распространенное приложение смарт-контрактов и одно из простейших с точки зрения написания кода. Трудность реализации финансовых контрактов в том, что большинство из них предполагают отсылку к курсу валюты из внешних источников. Например, было бы здорово получить смарт-контракт, хеджирующий риски волатильности эфира (или другой криптовалюты) по отношению к доллару США, но для этого контракт должен знать актуальный курс ETH/USD. Простейший способ реализовать это – через контракт на «поток информации» из конкретного источника (например, NASDAQ), разработанный таким образом, чтобы этот источник мог при необходимости обновлять контракт и предоставил бы интерфейс, позволяющий другим контрактам отправлять сообщение этому контракту и получать в ответ значение курса ETH/USD.
При таких условиях хедж-контракт мог бы выглядеть следующим образом.
1. Дождаться, пока А «вложит в контракт» 1000 единиц эфира.
2. Дождаться, пока B «вложит в контракт» 1000 единиц эфира.
3. Записать в хранилище USD на 1000 эфира по курсу, рассчитанному контрактом на поток информации. Пусть это будет $x.
4. Спустя 30 дней разрешить A или B «реактивировать» контракт, чтобы переслать стороне А эфира на $x (по новому курсу, снова рассчитанному контрактом на поток информации) и остальное – стороне B.
Контракт такого типа был бы очень полезен в криптокоммерции. При обсуждении криптовалют часто возникает проблема волатильности; хотя многим пользователям и продавцам нужны безопасность и удобство работы с цифровыми активами, их вряд ли заинтересует перспектива за один день потерять 23 % своих сбережений. До настоящего времени бороться с этой проблемой обычно предлагали обеспечением криптоактивов привычными активами. То есть пользователь создает субвалюту, единицы которой имеет право выпускать и отзывать, и обеспечивает этой валютой любого, кто обеспечит его (офлайн) соответствующим количеством общепринятого актива (золота, доллара), а также даст гарантию в случае необходимости совершить обратный обмен. Этот механизм позволяет перевести любой обычный актив в криптоактив при условии, что эмитенту можно доверять.
Однако в реальности эмитенты не всегда заслуживают доверия, а банковская инфраструктура бывает недостаточно развита или слишком враждебна, чтобы предоставлять такие сервисы. Альтернативным вариантом могут стать финансовые деривативы. Здесь вместо эмитента, предоставляющего свою валюту в обмен на актив, действует децентрализованный рынок спекулянтов, которые делают ставки на повышение цены соответствующего криптоактива (например, ETH). В отличие от эмитентов, спекулянты не могут просто отказаться возвращать актив, поскольку их средства хранятся в хедж-контракте на эскроу-счете. Отметим, что второй подход все же не полностью децентрализован, поскольку нуждается во внешнем, требующем доверия источнике для информации о курсе, хотя даже при этом условии такой подход кажется куда лучше, поскольку требует меньше инфраструктуры (в отличие от денег, эмиссия информации о курсе валюты не требует лицензий и относится скорее к реализации права свободы слова) и уменьшает возможность мошенничества.
СИСТЕМЫ ИДЕНТИФИКАЦИИ И РЕПУТАЦИИ
Самый первый альткойн – неймкойн – был попыткой использовать блокчейн вроде Bitcoin для создания системы регистрации имен, где люди могли бы регистрировать свои имена в публичной базе данных наряду с другими данными. Самый известным кейсом стала система DNS, привязывающая доменные имена вроде «bitcoin.org» (или, в случае неймкойна, «bitcoin.bit») к IP-адресу. Другие возможные применения – email-аутентификация и потенциально более продвинутые системы репутации. Вот пример простого контракта, который осуществляет подобную систему регистрации имен в Ethereum:
def register(name, value):
if!self.storage[name]:
self.storage[name] = value
Контракт крайне прост: это всего лишь информация о том, что базу данных внутри сети Ethereum можно пополнить, но нельзя ее редактировать или что-либо из нее удалять. Каждый может зарегистрировать имя, навсегда присвоив ему некоторое значение. Более сложный контракт регистрации имени будет также содержать «функцию условия», позволяющую другим контрактам обращаться к нему с запросами, а также интерфейс, позволяющий «владельцу» (то есть первому, кто зарегистрировал имя) изменять данные или передавать право на контракт другому лицу. Более того, поверх можно добавить даже функционал репутаций и web-of-trust.
ДЕЦЕНТРАЛИЗОВАННОЕ ХРАНЕНИЕ ФАЙЛОВ
В последние годы появилось немало стартапов, связанных с онлайн-хранением файлов. Самый известный – Dropbox, предлагающий пользователям загружать и хранить резервную копию своего жесткого диска на отдельном сервере, доступ к которому будет открыт за ежемесячную плату. Однако неэффективность рынка хранения данных заметна невооруженным глазом; «зловещая долина» с пространством в 20–200 гигабайт, где нет ни бесплатных аккаунтов, ни скидок для бизнеса, требует за один лишь месяц хранения файлов больше, чем стоит полноценный жесткий диск. Контракты Ethereum могут развить экосистему децентрализованного хранения файлов, позволяя всем желающим зарабатывать небольшие суммы сдачей в аренду собственных жестких дисков, и неиспользуемое дисковое пространство поможет в дальнейшем снижать стоимость хранения файлов.
В основе здесь лежит то, что мы назвали «децентрализованным Dropbox-контрактом», и работает он следующим образом. Сначала информация разбивается на блоки, для конфиденциальности каждый блок шифруется, и для каждого строится дерево Меркла.