DeFi и будущее финансов. Как технология децентрализованных финансов трансформирует банковскую систему — страница 6 из 27

. Любой человек может воспользоваться этими приложениями, и они никем не контролируются. Следует упомянуть еще одну концепцию, которая хоть и существует сама по себе, но все же имеет прямое отношение к теме нашего разговора – децентрализованная автономная организация (ДАО), чьи правила работы, которые определяют, кто может выполнять то или иное действие или обновление, закодированы в смарт-контрактах. Как правило, у ДАО есть токен управления, который дает его владельцу определенный процент голосов при принятии решений. Чуть позже мы поговорим об управлении более детально.

IVПримитивы DeFI

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

Транзакции

Транзакции Ethereum фактически являются атомами, из которых состоят DeFi-сервисы (и сам блокчейн Ethereum). Транзакция – это отправка данных (эфира или других токенов) с одного адреса на другой. Все взаимодействия Ethereum, включая описанные в этом разделе примитивы, начинаются с транзакции. Поэтому от понимания принципа работы транзакций во многом зависит понимание работы DeFi-сервисов в целом и платформы Ethereum в частности.

В блокчейне Ethereum есть два типа адресов: внешняя учетная запись (EOA, externally owned account) и контрактная учетная запись. Транзакции, отправляемые на адрес EOA, могут передавать только ETH[38]. В блокчейне Bitcoin все адреса относятся к типу EOA. В Ethereum данные, отправляемые на адрес контрактной учетной записи, используются для выполнения кода соответствующего контракта. Транзакция может сопровождаться или не сопровождаться переводом эфира для использования в рамках контракта.

Одиночная транзакция начинается с внешней учетной записи конечного пользователя, но до своего завершения может «пообщаться» со множеством децентрализованных приложений (или любым смарт-контрактом Ethereum). Транзакция начинается со взаимодействия с одиночным контрактом, в теле которого перечислены все промежуточные этапы этой транзакции.

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

Как вы помните, при проведении транзакции взимается плата за газ, размер которой зависит от сложности транзакции. Например, когда майнер получает ETH за включение и выполнение транзакции, комиссия будет относительно низкой. Для обработки более длительных или ресурсоемких транзакций газа требуется больше. Если транзакция по какой-либо причине отменяется или попросту заканчивается газ, то отправитель лишается всего газа, потраченного к этому моменту. Это правило защищает майнеров, которые из-за большого объема неудачных транзакций могли бы понести значительные убытки.

Стоимость газа устанавливается рынком и, по сути, порождает аукцион, определяющий транзакции для включения в очередной блок Ethereum. Большие комиссии за газ означают высокий спрос, поэтому такие транзакции зачастую имеют более высокий приоритет на включение в блок.

Перед тем как транзакции попадут в блок, они отправляются в пул памяти, или мемпул. Майнеры отслеживают такие транзакции, добавляют их в собственный мемпул и передают другим майнерам для включения в следующий доступный блок. Если комиссия, предлагаемая за транзакцию, оказывается завышенной по сравнению с предложениями других транзакций в мемпуле, то данная неконкурентоспособная транзакция откладывается до следующего блока.

Просмотреть транзакции в мемпуле может любой участник, достаточно запустить узлы майнинга или связаться с ними. Подобная прозрачность позволяет майнеру заниматься фронтраннингом (торговлей на опережение) и использовать другие методы конкуренции для получения прибыли от торговой деятельности. В отличие от традиционных централизованных рынков фронтраннинг является законной практикой, поскольку вся информация находится в свободном доступе. Если майнеры увидят транзакцию в мемпуле, они могут воспользоваться ей для получения выгоды, либо выполнив эту транзакцию самостоятельно, либо использовав тактику фронтраннинга, и, если им повезет выиграть блок, у них появится стимул делать то же самое и в будущем. Прямое выполнение транзакции называется извлекаемой майнером ценностью (MEV, miner extractable value), существование подобной операции является недостатком модели доказательства выполнения работы. Для защиты от подобных ситуаций было разработано несколько методов снижения MEV, в частности обфускация (запутывание) транзакций, эти стратегии позволяют скрывать от майнеров возможность получения прибыли подобным образом.

Взаимозаменяемые токены

Взаимозаменяемые токены являются краеугольным камнем ценностного предложения Ethereum и DeFi. Любой разработчик Ethereum может создать токен, расщепляемый на определенное количество идентичных и взаимозаменяемых единиц. Примером взаимозаменяемого актива является американский доллар США, поскольку одна 100-долларовая купюра эквивалентна сотне однодолларовых купюр. В главе 3 мы уже говорили о том, что интерфейсом токена блокчейна Ethereum является ERC-20[39]. С точки зрения программиста, интерфейс – это минимально необходимый набор функций. Когда токен реализует интерфейс ERC-20, любое приложение, имеющее соответствующую функциональность, может быстро и легко интегрироваться с этим токеном. При помощи интерфейса ERC-20 и его аналогов разработчики могут добавлять в приложения поддержку еще не существующих токенов.

Интерфейс ERC-20 предусматривает следующие основные функции:


• totalSupply() – подсчитывает количество существующих токенов;

• balanceOf(account) – подсчитывает количество токенов на счету конкретной учетной записи;

• transfer(recipient address, amount) – пересылает некоторое количество токенов (amount) от отправителя транзакции на адрес получателя (recipient address);

• transferFrom(sender address, recipient address, amount) – пересылает некоторое количество токенов (amount) с баланса адреса отправителя (sender address) на адрес получателя (recipient address);

• approve(spender, amount) – позволяет доверенному лицу (spender) потратить некоторое количество токенов (amount) от имени владельца учетной записи;

• allowance(owner address, spender address) – указывает количество токенов, которое доверенное лицо (spender address) может потратить от имени владельца токенов (owner address).


В случаях, если средств на балансе недостаточно или трата средств запрещена, перевод будет отклонен. Смысл существования первых четырех функций – определение предложения и балансов, а также пересылка токенов – интуитивно понятен и ожидаем. В свою очередь последние две функции имеют решающее значение для понимания возможностей интерфейса ERC-20. Без них все пользовательские возможности ограничивались бы простой пересылкой токенов между учетными записями. Благодаря функции утверждения (approve) контракты (или доверенные учетные записи) могут выступать в качестве хранителей токенов пользователя, не держа их на своем балансе. Это расширяет возможности приложений, поскольку пользователи сохраняют полный контроль над своими средствами до выполнения транзакции уполномоченным лицом.

Формально выделяют три основные категории токенов ERC-20, однако на практике один и тот же токен может одновременно относиться к нескольким категориям.

Токены-акции

Токены-акции, которые не следует путать с акциями в традиционном финансовом понимании, удостоверяют право владения базовым активом или пулом активов. Единицы токенов-акций должны быть взаимозаменяемыми, чтобы каждая из них соответствовала идентичной доле пула. Например, предположим, что общее фиксированное предложение токенов TKN составляет 10 000, что соответствует пулу, состоящему из 100 ETH, хранящихся в смарт-контракте. Согласно условиям данного смарт-контракта, за каждую полученную единицу TKN он возвращает пропорциональную сумму ETH, фиксируя коэффициент обмена на уровне 100 TKN/1 ETH. Давайте усложним пример, сделав количество ETH в пуле переменным. Пусть за счет некоего механизма количество ETH в пуле ежегодно увеличивается на 5 %. В этом случае 100 TKN будут соответствовать 1 ETH с постоянным 5-процентным денежным потоком ETH. Эта информация может использоваться рынком для точной оценки стоимости TKN.

В случае реальных токенов-акций пулы активов могут управлять гораздо более сложной механикой, выходящей за рамки ситуации статического пула или фиксированных темпов роста. Возможности использования токенов-акций ограничены только тем, что можно закодировать в смарт-контракте. Немного позже, в главе 6, мы рассмотрим примеры различных контрактов: контракт с переменной процентной ставкой (токены Compound) и контракт, владеющий пулом из нескольких активов со сложной структурой комиссий (Uniswap), а также обсудим протокол Set Protocol, который определяет стандартный интерфейс для создания статических и динамических токенов-акций.

Утилитарные токены

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