Пример кода контракта на 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] может без остановки работать в фоновом режиме, из-за чего процессор перегружается и расходует очень много электроэнергии.
10
Демон – программа, работающая в фоновом режиме без прямого взаимодействия с пользователем. –