Привет! Для меня некоторое время было удивительно, почему некоторые проекты стали выбирать ERC-721 протокол для выплаты дивидендов, неужели это дань моде? Но поразмыслив немного, я, кажется, пришел к пониманию в чем преимущества этого подхода. В этой статье не будет деталей о самих протоколах, но все же для контекста, расскажу пару слов о базовых понятиях, которые мы будем использовать. Дивиденды — выплаты процента от дохода совладельцам бизнеса. ERC-20 протокол устанавливает факт владения N единицами чего-то, но единицы эти обезличенные. ERC-721 протокол устанавливает факт владения некоторой идентифицируемой сущностью. Итак, на заре EVM люди участвовали в ICO, и в результате им выдавали ERC-20 токены выбранного ими проекта, условно говоря, мне сказали, у тебя есть 30л воды. Далее, у токена может быть область применения, скажем, оплата транзакций в сети, места под контракт и тому подобное. В результате, я, как счастливый обладатель токенов либо могу пользоваться этими благами сам, либо продать тем, кому они нужны. Но не все токены имеют область применения. Некоторые, созданы исключительно для определения доли участия в проекте, и, как следствие, в распределении наград. Такие токены очень похожи на акции компаний, выплачивающих дивиденды. И даже процесс происходит схоже: в обговоренную дату происходит так называемая дивидендная отсечка, или, простыми словами, снятие снепшота с информацией у кого столько акций. Затем весь объем средств, зарезервированных под дивиденды раздадут в соответствии с пропорциями в этом снепшоте. Таким образом, одинаковые по размеру дивиденды получит и тот, кто держал акцию с прошлой выплаты, и тот, кто купил ее за день до даты отсечки. Это упрощает компаниям процесс отслеживания изменения владения. Просто снимок списка акционеров в определенную дату. В принципе, дивиденды или голосования с использованием ERC-20 токена проводятся примерно так же. В момент отсечки нужно сделать снепшот, примерно вот с такими полями (дата снепшота, адрес владельца кошелька, доля на момент снепшота, размер вознаграждения, было ли получено вознаграждение). У этого подхода несколько сложностей: Процесс создания снепшота должен быть кем-то инициирован. Процесс должен быть атомарен и для больших реестров совладельцев может выйти за рамки допустимого потребления газа. В принципе, вместо снепшота можно сразу рассылать средства на кошельки совладельцев. Стандартный ERC-20 не дает проитерироваться по владельцам, поэтому придется использовать внешнюю логику, что нежелательно. А сделать это еще и атомарно и консистентно - отдельное искусство. Даже любая одна из этих проблем казалась бы очень неприятной. Но их больше! И тут мы подумали про ERC-721. Владение идентифицируемым объектом. В нашем примере предположим, что все объекты у нас равнозначны и дают право на получение 1% от вырученных средств. Но сам факт того, что мы можем где-то записать ID объекта (токена), позволяет создать очень простую схему: при каждом взаимодействии с нашим контрактом пользователь платит какую-то комиссию. Она остается на счете контракта. Так же мы создаем переменные "общая сумма комиссий" и таблицу "идентификатор объекта, уже снято средств". Таким образом, в любой момент времени, не дожидаясь отсечек, совладелец может снять "общая сумма комиссий" * доля ‒ "снято". Никаких снепшотов, никаких сложных дорогих операций над множеством объектов. Так вот я и полюбил ERC-721.