
Технологию смарт контрактов (Smart Contract) впервые описал Ник Сабо в 1990-х годах. Ник сформировал смарт-контракты как инструмент, который защищает и формализует компьютерные сети путем объединения протоколов с пользовательским интерфейсом.
В сфере криптовалют Smart Contract — это приложение, работающее на блокчейне.
Он выступает в качестве цифрового договора, которое подкрепляется поставленным набором правил. Эти правила предопределены компьютерным кодом, который реплицируется и производится всеми узлами сети.
Смарт-контракты дают возможность создавать доверительные протоколы. Члены этого процесса могут не беспокоится о верности исполнения обязательств, в случае если условия не будут удовлетворены то контракт уничтожается.
Содержание
Как это работает?
Smart Contract работает как определённая программа. Она осуществляет определённые действия, когда соблюдены заданные условия. Они функционируют на виртуальной машине Ethereum (EVM), которая считается особо важной частью блокчейна Ethereum.
В сети Ethereum смарт-контракты отвечают за исполнение операций между пользователями. Любой адрес, не являющийся смарт-контрактом, называется личным аккаунтом (EOA).
Смарт-контракты Ethereum состоят из кода договора и 2-ух ключей. 1-ый ключ предоставлен создателем контракта. 2-ой ключ представляет собой сам контракт.
Исполнение смарт-контракта проходит при блокчейн-транзакции, и они смогут быть активированы при инициации личным аккаунтом. Но запускается последовательность всегда с личного аккаунта.
Основные характеристики
Smart Contract Ethereum имеет следующие свойства:
- Распределенность. Контракты Ethereum реплицированы и распределены по узлам сети.
- Детерминированность. Смарт-контракты предназначены для выполнения удовлетворённых требований.
- Автономность. Контракты автоматизируются, работая как само исполняемая программа.
- Неизменность. Скорректировать ход работы смарт-контракта невозможно после его разработки и активации, но если разработчики не внесли определённую функцию.
- Настраиваемость. Перед реализацией, смарт-контракты могут разрабатываться различными способами. Поэтому, технология (DApps) подходит для создания многих типов приложений.
- Доверительность. С помощью контрактов могут взаимодействовать множество сторон.
- Прозрачность. Из-за того, что смарт-контракты базируются на публичном блокчейне, их начальный код доступен для каждого.
Можно ли поменять или удалить смарт-контракт?
В смарт-контракт Ethereum нельзя добавлять новые функции после активации. Однако, если разработчик включает в код контракта функцию под названием SELFDESTRUCT, в дальнейшем он сможет удалить его и заменить на новый.
Изменяемые смарт-контракты дают доступ к изменению кода, тем самым предоставляя огромную гибкость по сопоставлению с неизменными контрактами. Это означает, что часть кода (n-ое количество смарт-контрактов) можно удалить и заменить на другой, в то время как остальные функциональные возможности остаются неизменными.
Преимущества и варианты использования
Из-за того, что код является настраиваемым, его можно разрабатывать различными способами.
Смарт-контракты децентрализованной и само реализующейся программы могут гарантировать высокую прозрачность и сбавить рабочие расходы.
Преимущества смарт-контрактов проявляется при переводах или обмене средств между несколькими сторонами.
Смарт-контракты могут быть разработаны для огромного спектра использования. Например: токенизированные активы, акции, способ организации голосования, криптовалютные кошельки, децентрализованных биржи, игры и мобильные приложение.
В свою очередь могут быть выполнены, наравне с другими решениями на блокчейне, которые затрагивают такие области как: здравоохранение, благотворительность, цепочки поставок, государственное управление и децентрализованное финансирование (DeFi).
ERC-20
Токены Ethereum соответствуют стандарту ERC-20. Этот стандарт описывает функции всех токенов на базе Ethereum.
Многие компании и стартапы разрабатывают смарт-контракты для того, чтобы выпустить токены в сети Ethereum. После выпуска, большая часть таких фирм распределяет ERC-20 с помощью первоначального предложения монет (ICO).
Недостатки
Смарт-контракты прописанные людьми считаются причиной многочисленных рисков из-за уязвимости кода. Разработка обязана исполняться опытными программистами.
Некоторые утверждают, что централизованные системы обеспечивают большинство решений и функций, предлагаемых данной технологией. Ключевыми отличиями являются, что смарт-контракты производятся в распределенной одноранговой сети, а не на централизованном сервере.
Еще один недостаток объединен с неопределенным юридическим статусом. Смарт-контракты не соответствует нормативно правовой базе, либо в некоторых странах данная технология находится в серой зоне.
Критика
В контрактах блокчейн-энтузиастов можно заметить заключение, которое может заменить и автоматизировать огромную часть имеющихся коммерческих и бюрократических систем. Смарт-контракты отдаленны от того, чтобы их внедрение в данной сфере стало нормой.
Централизованные сервера легче и дешевле содержать, чем смарт-контракты. Они также обеспечивают более высокую эффективность.
Заключение
Смарт-контракты Ethereum проявили огромное воздействие на мир криптовалют, и безусловно произвели переворот в области блокчейн-технологий. Так как конечные пользователи смогут не взаимодействовать открыто со смарт-контрактами, вероятно в будущем они послужат базой для широкого диапазона приложений, от финансовых услуг до управления цепочками.
Возможно ли самому вызвать тот или иной контракт? Допустим путём написание какого-нибудь запроса на том же python?
Если речь про вызов развёрнутых контрактов, чтобы проверять свои депозиты и урожаи, то да можно. Можно сделать вызов функций через API, либо использовать готовые библиотеки на JS, наподобе Web3.js https://github.com/ChainSafe/web3.js
Спасибо за наводку. Нашел разные вариант для Python. А можно ли как-то не просто смотреть депозиты и урожаи, а и управлять ими? Для примера, вот хочу я добавить какое-то количество монет ReBa в стейкинг на Galaxy Yield Farming, возможно ли это сделать не через сайт, а как-то напрямую, через какое-нибудь API или ещё каким способом?
очень полезная информация спасибо