Ethereum смарт контракты что это

Что такое смарт-контракты на блокчейне Ethereum? Как они работают и где могут быть использованы

Не так давно децентрализованный маркетплейс недвижимости Propy позволил осуществить продажу квартиры в Украине через смарт-контракт и блокчейн Ethereum. Как вообще такое возможно? В данной статье вы узнаете, что такое смарт-контракты, как они работают и какие у них возможности использования в реальном мире.

Что такое смарт-контракты?

В январе 2009 года появился биткоин, который кардинально поменял представление миллиардов людей об электронных платежах. Но не тут-то было. В 2013 году многих людей снова удивили – смарт-контракты, которые по праву могут заменить юристов и способные регулировать коммерческие отношения между людьми.

Концепция «умного контракта» была опубликована в далеком 1994 году программистом Ником Сабо. Он хотел написать компьютерную программу, которая позволит предпринимателям заключать P2P-сделки без привлечения посредников. Тем не менее, эта идея реализовалась спустя 19 лет в блокчейне Ethereum.

Давайте рассмотрим особенности смарт-контрактов. В конечном счете, смарт-контракт – это простая программа, которая содержать предмет и условия договора.

Если пользователь A вносит депозит на сумму 100 ETH, по получает от пользователя B 100 токенов ХХХ.
Если пользователь B вносит депозит на сумму 100 токенов XXX, то получает от пользователя 100 ETH.

Таким образом, пользователи A и B исполняют обязательства перед друг другом. Если по каким-то причинам пользователь A внесет 100 ETH, а пользователь B не выполнит обязательства, смарт-контракт будет недействительным. По факту сделка расторгнута, а пользователь A получит свои 100 ETH обратно.

Главные преимущества смарт-контрактов

  • Моментальное исполнение сделок по модели P2P и без каких-либо посредников;
  • Беспрецедентная безопасность сделок. Все исполненные контракты будут размещаться в распределенном реестре и не принадлежат изменению. Только подписанты могут получить доступ к условиям и предметам смарт-контракта.
  • Сокращение расходов на проведение транзакций. Пользователи могут обмениваться токенами практически мгновенно.

Главные недостатки смарт-контрактов:

  • Сложность написания кода;
  • Малая масштабируемость из-за низкой пропускной способности сети;
  • Отсутствие нормативно-правовой базы для использования таких контрактов;

Если вы допустите пусть небольшую ошибку в программном коде, это может сделать смарт-контракт неработоспособным, что приведет к печальным последствиям. В большинстве случаев – потери денежных средств.

Использование смарт-контрактов Ethereum

На момент написания статьи именно Ethereum предоставляет больше всего возможностей для заключения смарт-контактов. Да, в биткоине также есть такая функция, но к сожалению она настолько ужасно проработана, что ею никто не пользуется. Ethereum стал поистине передовым проектом, располагающий собственной средой выполнения смарт-контрактов – Виртуальной машиной (EVM), с помощью которой любой желающий может написать децентрализованное приложение (dApps) и смарт-контракт.

Вы можете изучить JS-подобный язык программирования Solidity и написать смарт-контракт самому. Если нет желания углубляться в программный код, то можно поручить это задание блокчейн-разработчикам либо воспользоваться компиляторами.

Также стоит учитывать, что в блокчейне Ethereum снимается комиссия за выполнение контрактов в токенах GAS (Газ). Размер комиссии напрямую зависит от заданных условий контракта и определяется сетью автоматически.

Возможности использования смарт-контрактов

Главная цель смарт-контактов – выполнение безопасного обмена токенами между подписантами (агентами). Они активно используются участниками ICO, которые хотят обезопасить свой инвестиционный капитал и учитывают риски в смарт-контракте. Если вдруг ICO-проект оказался провальным, то по условиям контракта внесенные ETH будут возвращены инвесторам в полной мере.

Но многие криптографы и аналитики утверждают, что потенциальные возможности использования смарт-контрактов пока еще не раскрыты. По праву их можно использовать везде – в сфере банкинга, логистики, страховании, голосовании и даже госучреждениями. То есть везде, где люди заключают договор.

Будущее смарт-контрактов

На наш взгляд, смарт-контракты как и сама технология блокчейн – очень перспективна и имеет полное право на реализацию в реальном мире.

В течение последних нескольких лет стали появляться новые, более безопасные платформы для написания смарт-контрактов – Waves, Codius, Counterparty, NEO и др. Тем не менее, лучше чем Ethereum рядовому пользователю или инвестору попросту не найти. Мы считаем, что только Ethereum смог разработать действительно эталонную платформу для смарт-контрактов.

Читайте также:  Сбербанк инвестиции отчет по налогам

Источник

Смарт контракты Ethereum: структурируем токены как акции

Чтобы говорить вообще о каком-либо структурировании токена, прежде всего нужно иметь хоть какую-то базовую реализацию токена. Листинг контракта среднестатистического токена без изысков на языке Solidity приведен ниже:

Как видно из кода контракта, эмиссия всех токенов осуществляется единовременно в момент загрузки контракта в блокчейн, а все выпущенные токены записываются на баланс адреса, осуществившего эту загрузку. Далее реализуются стандартные функции перемещения токенов между держателями – transfer и transferFrom, а текущий баланс хранится в карте balanceOf.

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

С точки зрения классического алгоритмического программирования, задача может показаться элементарной и в виде псевдокода выглядит так:

К сожалению, данный псевдокод нереализуем на языке Solidity, т.к. структура данных mapping не является итерируемой и отсутствует какая-либо возможность пройтись по всем ее элементам. На форумах Ethereum эта задача неоднократно обсуждалась, и основной аргумент, почему сделано так, заключается в том, что это банально дорого. Тут самое время вспомнить, что смартконтракт выполняется на распределенной виртуальной машине EVM, т.е. выполняется на каждой полной ноде, а поскольку мы расходуем чужие вычислительные ресурсы, то за это придется платить, причем чем больше мы делаем операций, тем больше комиссия, которую потребуется заплатить тому, кто будет вызывать эти операции. В нашем случае платить будет тот, кто будет вызывать divideUpReward().

Если продолжить упорствовать и пытаться реализовать данный псевдокод на Solidity, то можно изобрести собственный «велосипед» и сделать итерируемый аналог mapping. Пример такой реализации имеется в открытом доступе (тут), но он не решает проблему высокой стоимости выполнения функции divideUpReward(). Более того, мы еще и берем на себя все расходы по оплате транзакций отправки эфиров holder.key.send(reward) всем держателях токенов.

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

А почему бы не сделать вот так?

Этот код выглядит уже значительно лучше, т.к. не содержит циклов! Мы, как владелец контракта, или любой другой пользователь Ethereum, вызываем публичную функцию divideUpReward(), которая фиксирует дивиденды на момент вызова, создавая копию контейнера с текущим распределением токенов и запоминая текущий баланс контракта, предоставляя его весь на распределение между держателями токенов. При этом мы запоминаем время последнего вызова divideUpReward() и предотвращаем повторный вызов в течение 30 дней, давая тем самым возможность держателям токенов вывести свои дивиденды через публичную функцию reward(). Если какой-то держатель в течение обозначенного времени не вывел свои дивиденды, то они возвращаются в общую корзину и в течение следующего периода будут доступны к распределению между всеми держателями – как говорится, кто не успел, тот опоздал.

Функцию withdrawReward() вызывают уже непосредственно держатели токенов, а следовательно именно они оплачивают все комиссии, связанные с отправкой средств на их адреса. Можно было бы порадоваться найденному решению, если бы оно не содержало одну конструкцию, недопустимую с точки зрения языка Solidity, а именно “balanceOfOld = balanceOf” – создание копии mapping не предусмотрено в Solidity. Но даже если предположить, что оно было бы, то логично ожидать, что стоимость такого копирования была бы в пределе крайне дорогой, т.к. все равно предполагала бы наличие пусть скрытого, но цикла по всем элементам карты.

Попробуем избавиться от операции явного копирования, введением дополнительного контейнера, который будет динамически заполняться в зависимости от действий конкретного держателя токенов, а следовательно, производиться за его счет.

Следует обратить внимание на функцию beforeBalanceChanged(address _who), которая как раз и заменяет нам копирование карты mapping. Вызов этой функции следует добавить в исходные функции transfer и transferFrom нашего контракта прямо перед модификацией баланса для конкретного адреса. Функция проверит, что осуществляется движение токенов после фиксации периода вывода дивидендов и осуществит сохранения баланса конкретного держателя токенов для периода распределения вознаграждения, т.е. мы делаем копию balanceOf поэлементно, только если баланс конкретного держателя меняется.

Читайте также:  Индекс прибыльности демонстрирует абсолютную величину доходности проекта

Если соединить все сказанное воедино, то получится следующий текст смарт контракта, осуществляющего эмиссию токенов, их структурирование как акций с последующим начислением дивидендов:

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

Полезные ссылки по теме разработки смарт контрактов для Ethereum:

Источник

Что такое смарт-контракты в Ethereum: полный обзор технологии

Смарт-контракт эфириума – это условие сделки, записанное при помощи кода, которое требуется исполнить получателю и продавцу каких-либо товаров или валюты. По сути, смарт-контракт выполняет роль посредника между двумя сторонами.

Для примера, разберем небольшую транзакцию с использованием smart contract Ethereum: два пользователя решили совершить обмен криптовалюты при помощи данной технологии. Один из них отправляет свои средства в программу, где они хранятся под надежной защитой. Сейчас к ним никто не может получить доступ. Второй пользователь должен выполнить свои условия: перечислить определенную сумму в эту же программу. Как только это условие выполнено, трейдеры получают средства. Если один из участников не выполнил соглашения, деньги возвращаются обратно их владельцам.

Как только была зафиксирована сделка, все данные о ней сохраняются в blockchain. И никто не может эту информацию удалить или скорректировать – десятки тысяч копий находятся на компьютерах разных пользователей по всему миру.

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

Подобные сделки, кстати, проводятся и в сфере недвижимости: в прошлом году, например, в Киеве один пользователь воспользовался сервисом Propy для покупки квартиры в городе. Правда, по причине того, что официально пользоваться криптовалютами в Украине нельзя, пришлось оформлять дополнительный договор обмена. Также потребовалось обратиться к юристу для переоформления бумаг на имя другого человека: однако оплата производилась с помощью smart contract Ethereum.

Разработка смарт-контракта на Ethereum: как создавалась инновация?

Идея создания программы, которая регулировала бы финансовые сделки автоматически, появилась довольно давно. Ее разработка связана с именем Ника Сабо, который еще в 1994 году разрабатывал подобный инструмент. Однако на то время еще никто не придумал блокчейн и реализовать такие идеи было практически невозможно.

Все изменилось с появлением первой криптовалюты: в 2008 году Сатоши Накамото рассказал миру о своем продукте. В исходном коде биткоина уже тогда были встроены элементы смарт-контрактов для безопасного оформления финансовых сделок. Однако в то время разработчики популярной криптовалюты не задействовали всего потенциала блокчейна.

Но все изменилось, когда собственную цифровую валюту начал разрабатывать Виталик Бутерин со своей командой. Они решили внедрить пойти дальше всех остальных и создали эфириум контракты, которые позволили оформлять безопасные сделки в интернете с использование криптовалют.

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

Смарт-контракты в Ethereum: где их можно использовать?

Сфера применения новой технологии очень широка: вы можете использовать Ethereum контракты практически во всех торговых сферах. Однако самое большое распространение контракт получил, конечно же, в интернет-торговле.

Сегодня потребители очень большую часть товаров покупают напрямую через интернет. И им важно знать, что они точно получать свой товар, если заплатят его онлайн-магазину. Данная инновация нашла свое применение не только в покупке мелких товаров, но также в сфере услуг.

Предположим, вы приехали на отдых в Италию и вам нужно снять квартиру на несколько недель, чтобы спокойно провести время у моря. Отлично, вы можете заранее найти подходящий вариант в интернете. Сейчас оплату можно произвести и не встречаясь с арендодателем: вы можете оформить сделку через смарт-контракт, внести определенную сумму за проживание, а также деньги в качестве залога.

Сам владелец квартиры может установить в жилище некоторые инструменты “умного дома” и, например, поставить блокировку замков при истечении двух недель. Как только время аренды завершается, замки автоматически закрываются, а вы получаете свой залог при помощи smart-contract Ethereum.

Читайте также:  Оценка финансовой эффективности инвестиций методом внутренней нормы доходности

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

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

Нетрудно догадаться о том, что создание смарт-контракта на Ethereum подразумевает за собой интеграцию с внешними источниками информации. Проверять требуемые данные тоже можно в автоматическом режиме. Для этого используются оракулы.

Эфириум-контракты: зачем нужен оракул и как он работает?

Сегодня основные задачи, которые ставят перед собой разработчики смарт-контрактов – это совершенствование путей получения данных, которые говорили бы об исполнении условий того или иного контракта.

Оракулы созданы для того, чтобы перерабатывать полученную из источников информацию и поставлять ее в смарт-контракт Эфириума в пригодном для считывания виде. Это своеобразный посредник, который адаптирует данные.

Как вы понимаете, в сфере получения объективной информации есть некоторые проблемы: сейчас в сети очень много источников и многие из них противоречат друг другу. Поэтому задача программистов сегодня – разработка оракулов, которые смогут добывать достоверную и проверенную информацию. А этого добиться не так уж и просто.

Причем следует добиться того, чтобы оракулы имели доступ в абсолютно все возможные сферы человеческой деятельности: любые колебания цен на биржах, финансовое состояние той или иной компании и другие важные сведения. Это позволит использовать Ethereum-контракты при различных сделках и обеспечивать безопасность транзакций.

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

Сегодня, кстати, многие программисты получают неплохой заработок на написании смарт-контрактов для Ethereum, ведь основная проблема при создании кода – найти путь получений важных фактов. А это трудозатратная работа, которая стоит дорого.

Создание смарт-контракта на Ethereum: основные преимущества

Что же, давайте выделим некоторые плюсы, которые может получить любой пользователь при использовании данной технологии. Почему многие эксперты считают, что данное нововведение может стать неотъемлемой частью торговли в будущем?

  • Сфера применения. Вы можете использовать данные контракты практически при любых операциях. Причем транзакции с использованием смарт-контрактов всегда будут безопасными;
  • Скорость обмена. По причине отсутствия посредников, скорость транзакций в разы увеличится. Давно известно, что чем меньше «цепь» из участников сделки, тем быстрее она завершается. В данном случае обмен происходит напрямую между покупателем и продавцом;
  • Сохранение всех данных. Сведения о транзакциях невозможно будет подделать, удалить или изменить. Этот факт помогает предотвратить незаконные действия мошенников и обезопасить процесс торговли.

Это основные преимущества, которые делают Ethereum смарт-контракты перспективными для развития.

Смарт-контракты в Ethereum: минусы разработки

Но не все так гладко, как хотелось бы разработчикам и пользователям. При использовании данных инноваций есть некоторые недостатки, которые нельзя обойти вниманием. Почему смарт-контракты не так хороши?

  • При работе с данными контрактами всегда используются криптоденьги. А они, в свою очередь, не так популярны. И во многих странах правительства их попросту игнорируют, что создает некоторые несостыковки с законом;
  • Чтобы разобраться, как создать смарт-контракт на Ethereum, нужно потратить довольно много времени. Обычно его разрабатывают программисты. При его создании нельзя допускать никаких ошибок – иначе сделки будут недействительны, либо будут проводиться по неправильным алгоритмам;
  • Также можно выделить ряд проблем с получением достоверных данных в сети. Объективность получаемой оракулами информации по прежнему остается спорной.

Что же, как вы можете видеть, Ethereum смарт-контракты имеют ряд преимуществ и недостатков. И сложно точно сказать о том, смогут ли они в будущем использоваться повсеместно, ведь не так легко внедрить данную технологию в жизнь. Однако частные случаи показывают, что использование подобных контрактов улучшают работу любой системы.

Источник

Оцените статью